泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。

这篇具有很好参考价值的文章主要介绍了泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


泛微E9二次开发,对接金蝶云星空

泛微E9二次开发,对接金蝶云星空,可以同步采购订单,付款申请单,收料通知单等等:
泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。超详细,需要的jar包文档,可以在我的主页找到资源下载。


一、搭建开发环境,引入相关依赖

可以按照此链接步骤操作:ecology后端开发环境搭建

一、创建项目

1、新建项目:File->New->Project
泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。
2、选择java项目
泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。
3、下一步:Next
泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。
4、继续下一步:Next,并输入项目名字之后点击Finish
泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。

二、配置javaSDK

ecology开发推荐使用idea

1、进入项目设置File-Project Structure
泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。
2、点击SDKs->+,添加jdk1.8(e9依赖的版本)
泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。
3、点击project,分别选择Project SDK为1.8、、Project language level为SDK default 8
泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。

三、配置项目依赖

1、进入项目设置:File->Project Structure
泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。
2、添加依赖库:Libaries->±>java
泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。
3、找到要调试的ecology demo环境,分别引入以下路径的包

ecology/classbean
ecology/web-inf/lib
resin4/lib

注:可以去服务器上找到相关的依赖
泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。
4、添加完之后点击Apply
泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。

四、编写测试代码

1、点击src右键->new->Package
泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。
2、右键点击包名->new->Java,注意包名带有impl层级,才可支持无侵入注解解析
泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。
3、测试代码如下:

package com.api.cs.test20200529.service.impl;
import com.weaverboot.frame.ioc.anno.classAnno.WeaIocReplaceComponent;
import com.weaverboot.frame.ioc.anno.methodAnno.WeaReplaceAfter;
import com.weaverboot.frame.ioc.anno.methodAnno.WeaReplaceBefore;
import com.weaverboot.frame.ioc.handler.replace.weaReplaceParam.impl.WeaAfterReplaceParam;
import com.weaverboot.frame.ioc.handler.replace.weaReplaceParam.impl.WeaBeforeReplaceParam;
import com.weaverboot.tools.logTools.LogTools;
@WeaIocReplaceComponent
public class Test {
    @WeaReplaceBefore(value = "/api/workflow/reqlist/splitPageKey",order = 1,description = "测试拦截前置")
    public void beforeTest(WeaBeforeReplaceParam weaBeforeReplaceParam){
        //一顿操作
        LogTools.info("before:/api/workflow/reqlist/splitPageKey");
    }
    @WeaReplaceAfter(value = "/api/workflow/reqlist/splitPageKey",order = 1,description = "测试拦截后置")
    public String after(WeaAfterReplaceParam weaAfterReplaceParam){
        String data = weaAfterReplaceParam.getData();//这个就是接口执行完的报文
        LogTools.info("after:/api/workflow/reqlist/splitPageKey");
//        LogTools.info(data);
        return data;
    }
}

五、配置编译

1、进入项目设置:File->Project Structure
泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。
2、进入Artifacts->±>JAR->Empty
泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。
3、修改Name,这里要注意的是如果要支持无侵入注解解析,jar包名称必须包含下划线前缀,类似示例的写法
泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。
4、修改jar包输出目录(output directory)到以下目录

ecology/web-inf/lib

泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。
5、添加src输出内容到jar包,点击Apply
泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。
6、选择build->Build Artifacts
泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。
7、点击build,即可完成编译
泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。
8、到系统中查看编译结果
泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。

六、resin远程debug配置

ecology开发推荐使用idea,idea版权归属:JetBrains
特别提示:调试模式禁止使用到生产系统,必须是开发环境

1、进入resin配置文件:resin4/config/resin.properties 修改jvm_args

jvm_args  : -Xdebug -Xrunjdwp:transport=dt_socket,address=9081,server=y,suspend=n -Dcom.sun.management.jmxremote -Xloggc:/var/log/gc.log -Xmx1550m -Xms1550m -XX:ParallelGCThreads=20 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+DisableExplicitGC
jvm_mode  : -server

泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。
2、添加中间件连接
泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。
3、添加±>Resin->Remote远程服务,分别输入ec服务地址URL、远程Resin调试端口Port
泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。
4、选择configure,选择resin home
泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。
5、添加jar包
泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。
6、选择之前定义的Artifacts,点击Apply保存
泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。
7、如果是同一个系统内,选择
泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。
8、切换Startup/Connection,修改Debug->port为resin的远程调试端口
泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。
9、services中启动debug
泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。
10、到指定页面刷新(本示例是待办页面),成功进入断点,debug配置成功
泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。

二、开发部署

1.编写自定义方法, 必须实现 必须实现接口weaver.interfaces.workflow.action方法public String execute(RequestInfo request);

注: 写好的类需要编译为class 文件;

2.将文件上传至服务器D:\WEAVER\ecology\classbean\weaver\interfaces\workflow\action目录;

泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。

3.在后台,新增自定义接口;

3.1 接口动作类文件填写 classbean 下文件路径;
在后台 集成中心-流程流转集成, 注册自定义接口;
泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。

4.在后台 流程引擎-路径管理-路径设置, 找到对应流程,选中流程;

4.1. 在右侧 流转设置-节点信息, 点击对应节点的 节点前后附加操作按钮;
4.2 弹出窗口中, 选择 外部接口tab, 接口来源 选择 自定义创建的接口;
4.3 点击确定 保存;
泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。

5.代码更新操作

5.1 重新编译文件;
5.2 将编译后的class 文件上传至服务器对应路径;

三、代码示例

1.流程自定义接口动作(action)

一、接口说明
该接口主要实现在流程的流转当中,实时通过自定义的动作去操作异构系统的数据或者处理其他一些特定的业务,在流程的节点后、出口和节点前都可以定义这样的自定义动作。

二、实现方法&步骤
实现weaver.interfaces.workflow.action. Action接口即可

//接口定义如下:
import weaver.soa.workflow.request.RequestInfo;

public interface Action {
    public static final String SUCCESS="1";
    
    /**
     * 失败信息,返回此信息,如果是节点前附加操作,将会阻止流程提交
     */
    public static final String FAILURE_AND_CONTINUE = "0";
    
    public String execute(RequestInfo request);
}

2.自定义Action Demo

代码如下(示例):

package test.service.impl;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import kingdee.bos.webapi.client.K3CloudApiClient;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.*;
import weaver.hrm.User;


public class DemoAction implements Action {
    private Log log = LogFactory.getLog(DemoAction.class.getName());
    private String p1; // 自定义参数1
    private String p2; // 自定义参数2

	public String getP1() {
		return p1;
	}

	public void setP1(String p1) {
		this.p1 = p1;
	}

	public String getP2() {
		return p2;
	}

	public void setP2(String p2) {
		this.p2 = p2;
	}

	public Log getLog() {
		return log;
	}

	public void setLog(Log log) {
		this.log = log;
	}

	public String execute(RequestInfo requestinfo) {
		System.out.println("进入Action requestid=" + requestinfo.getRequestid());
		String requestid = requestinfo.getRequestid();// 请求ID
		String requestlevel = requestinfo.getRequestlevel();// 请求紧急程度
		String src = requestinfo.getRequestManager().getSrc(); // 当前操作类型	submit:提交/reject:退回
		String workflowid = requestinfo.getWorkflowid();// 流程路径ID
		String tablename = requestinfo.getRequestManager().getBillTableName();// 表单主表名称
		int billid = requestinfo.getRequestManager().getBillid();// 表单数据ID
		User usr = requestinfo.getRequestManager().getUser();// 获取当前操作用户对象
		String requestname = requestinfo.getRequestManager().getRequestname();// 请求标题
		String remark = requestinfo.getRequestManager().getRemark();// 当前用户提交时的签字意见
		int formid = requestinfo.getRequestManager().getFormid();// 表单ID
		int isbill = requestinfo.getRequestManager().getIsbill();// 是否是自定义表单
		//取主表数据
		Property[] properties = requestinfo.getMainTableInfo().getProperty();// 获取表单主字段信息
		for (int i = 0; i < properties.length; i++) {
			String name = properties[i].getName();// 主字段名称
			String value = Util.null2String(properties[i].getValue());// 主字段对应的值
			System.out.println(name + " " + value);
			log.info(name + " " + value);
		}
		// 取明细数据
		DetailTable[] detailtable = requestinfo.getDetailTableInfo()
				.getDetailTable();// 获取所有明细表
		if (detailtable.length > 0) {
			for (int i = 0; i < detailtable.length; i++) {
				DetailTable dt = detailtable[i];// 指定明细表
				Row[] s = dt.getRow();// 当前明细表的所有数据,按行存储
				for (int j = 0; j < s.length; j++) {
					Row r = s[j];// 指定行
					Cell c[] = r.getCell();// 每行数据再按列存储
					for (int k = 0; k < c.length; k++) {
						Cell c1 = c[k];// 指定列
						String name = c1.getName();// 明细字段名称
						String value = c1.getValue();// 明细字段的值
						System.out.println(name + " " + value);
						log.info(name + " " + value);
					}
				}
			}
		}
		

//    调用ERP接口 单元测试代码
//    public static void main(String[] args) {
//        String res = "";
//        Boolean loginResult = false;
//        K3CloudApiClient client = new K3CloudApiClient("http://119.23.xx.xx/k3cloud/");
//        try {
//            loginResult = client.login("612112883069f0","134xxxx0349","JG2xxxxx10",2xxx);
//            res = client.view("BD_Currency","{\"CreateOrgId\":0,\"Number\":\"PRE001\"}");
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//
//        System.out.println("test202201174_1" + client);
//        System.out.println("test202201174_2" + loginResult);
//        System.out.println(res.getClass().getSimpleName());
//        System.out.println("test202201174_3" + res);
//
//    }

		//控制流程流转,增加以下两行,流程不会向下流转,表单上显示返回的自定义错误信息,这个控制只支持节点后附加操作
		requestinfo.getRequestManager().setMessageid("错误信息编号");//126221
		requestinfo.getRequestManager().setMessagecontent("返回自定义的错误信息");
		System.out.println("Action执行完成 传入参数p1=" + this.getP1() + "  p2="	+ this.getP2());
		log.info("Action执行完成 传入参数p1=" + this.getP1() + "  p2="	+ this.getP2());
		
		return SUCCESS;// return返回固定返回`SUCCESS`
		
//		//如果E8的版本是1604,也可以使用下面的代码进行控制,支持节点后、节点前、出口,注意必须返回 FAILURE_AND_CONTINUE;
//		requestinfo.getRequestManager().setMessagecontent("返回自定义的错误信息");
//		return FAILURE_AND_CONTINUE;
		
	}

}

3.采购申请单的同步

代码如下(示例):

package weaver.interfaces.workflow.action;

import com.google.gson.Gson;
import kingdee.bos.webapi.client.K3CloudApiClient;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.soa.workflow.request.*;

import java.util.*;


/**
 * QDT自定义(资产采购申请单)/(维修改造采购申请单)action接口
 */
public class ActionQDT_ZCCGSQD extends BaseBean implements Action {

    @Override
    public String execute(RequestInfo requestInfo) {

        ActionQDT_ZCCGSQD actionQDT_zccgsqd = new ActionQDT_ZCCGSQD();

        //设置初始值默认同步成功
        String action = SUCCESS;

        // 获取主表信息
        Property[] properties = requestInfo.getMainTableInfo().getProperty();

        //定义一个hashMap集合 存储主表的数据。 key存E-COS数据库字段名称  Value存E-cos字段值
        HashMap<String, String> mainTable = new HashMap<>();
        for (int i = 0; i < properties.length; i++) {
            String name = Util.null2String(properties[i].getName());// 主字段名称
            String value = Util.null2String(properties[i].getValue());// 主字段对应的值
            mainTable.put(name,value);
        }

        //取到主表的“单据类型”                      //单据类型
        int DocumentType = Integer.parseInt(mainTable.get("djlx"));

        //0:标准资产采购申请单
        //如果单据类型是 “标准资产采购申请单”
        if (DocumentType==0) {
            //定义list集合存储明细表json字符串
            List<String> list_json1 = new ArrayList<String>();

            //定义一个集合存储明细表的数据
            List<Map<String,String>> detailTable1=new ArrayList<>();

            // 获取所有明细表
            DetailTable[] detailtable = requestInfo.getDetailTableInfo().getDetailTable();
            if (detailtable.length > 0) {
                //循环所有的明细表 【此单据只有一个明细表】
                for (int i = 0; i < detailtable.length; i++) {
                    DetailTable dt = detailtable[i];// 指定明细表
                    Row[] s = dt.getRow();// 当前明细表的所有数据,按行存储
                    for (int j = 0; j < s.length; j++) {
                        Row r = s[j];// 指定行
                        Cell c[] = r.getCell();// 每行数据再按列存储
                        Map<String,String> map=new HashMap<>();
                        for (int k = 0; k < c.length; k++) {
                            Cell c1 = c[k];// 指定列
                            String name = c1.getName();// 明细字段名称
                            String value = c1.getValue();// 明细字段的值
                            map.put(name,value);
                        }
                        //把明细表的每一行数据都插入集合中
                        detailTable1.add(map);
                    }
                }
            }

            //循环遍历明细表中的数据,将数据拼接添加到list_json1中
            for (Map<String, String> detailMap : detailTable1) {
               String json_main = "   \n{\n" +
                        "   \"FMaterialId\": {\n" +     //物料编码(固定资产类别)
                        "                \"FNumber\": \"" + detailMap.get("gdzclb") + "\"\n" +
                        "     },\n" +
                        "   \"F_RCZU_NBXMH\": {\n" +     //内部项目号(从主表获取)
                        "                \"FNumber\": \"" + mainTable.get("xmh") + "\"\n" +
                        "     },\n" +
                        "   \"FEntryNote\":\"" + detailMap.get("bz") + "\",\n" +         //备注
                        "   \"FMaterialDesc\":\"" + detailMap.get("zcmc") + "\",\n" +      //物料说明 (资产名称)
                        "   \"FRemarksHWMS\": \"" + detailMap.get("sbxh") + "\",\n" +      //物料描述 (设备型号)
                        "   \"F_RCZU_Text1\": \"" + detailMap.get("syr") + "\",\n" +      //使用人
                        "   \"FArrivalDate\": \"" + detailMap.get("xqrq") + "\",\n" +      //到货日期(需求日期)
                        "   \"F_RCZU_YT\": \"" + detailMap.get("yt") + "\",\n" +        //用途
                        "   \"FReqQty\":" + detailMap.get("sl") + ",\n" +             //申请数量
                        "   \"FTAXPRICE\":\"" + detailMap.get("dj") + "\"\n" +       //含税单价
                        "   }";
                list_json1.add(json_main);
            }

            String json = "{\n" +
                    "  \"IsAutoSubmitAndAudit\": \"true\",\n" +  //是否自动提交审核
                    "  \"NeedUpDateFields\": [],\n" +           //需要更新的字段
                    "  \"NeedReturnFields\": [],\n" +           //需返回结果的字段集合
                    "  \"IsDeleteEntry\": true,\n" +            //是否删除已存在的分录
                    "  \"SubSystemId\": \"\",\n" +              //表单所在的子系统内码
                    "  \"IsVerifyBaseDataField\": false,\n" +   //是否验证所有的基础资料有效性
                    "  \"IsEntryBatchFill\": true,\n" +         //是否批量填充分录
                    "  \"ValidateFlag\": true,\n" +             //是否验证数据合法性标志
                    "  \"NumberSearch\": true,\n" +             //是否用编码搜索基础资料
                    "  \"IsAutoAdjustField\": true,\n" +       //是否自动调整JSON字段顺序
                    "  \"InterationFlags\": \"\",\n" +          //交互标志集合
                    "  \"IgnoreInterationFlag\": \"\",\n" +     //是否允许忽略交互
                    "  \"IsControlPrecision\": false,\n" +      //是否控制精度
                    "  \"ValidateRepeatJson\": false,\n" +      //校验Json数据包是否重复传入
                    "   \"Model\":{\n" +
                    "       \"FApplicationOrgId\":{\n" +                   //申请组织(所属公司)
                    "           \"FNumber\":\"" + mainTable.get("szgs") + "\"\n" +
                    "       },\n" +
                    "        \"FApplicationDeptId\": {\n" +                 //ERP申请部门
                    "            \"FNumber\": \"" + mainTable.get("erpsqbm") + "\"\n" +
                    "        },\n" +
                    "       \"FApplicationDate\":\"" + mainTable.get("zdrq") + "\",\n" +  //申请日期(制单日期)
                    "        \"F_RCZU_Base\": {\n" +                //ERP使用部门
                    "            \"FNUMBER\": \"" + mainTable.get("erpsybm") + "\"\n" +
                    "        },\n" +
                    "        \"F_RCZU_mindep\": {\n" +            //ERP归口管理部门
                    "            \"FNUMBER\": \"" + mainTable.get("erpgkglbm") + "\"\n" +
                    "        },\n" +
                    "       \"F_RCZU_Combo\": \"" + mainTable.get("cslb") + "\",\n" +   //厂商类别(下拉列表)
/*                  "        \"F_RCZU_Assistant2\": {\n" +      //在建项目
                    "            \"FNumber\": \"" + Util.null2String(properties[0].getValue()) + "\"\n" +
                    "        },\n" +*/
                    "       \"F_RCZU_ECOS1\": \"" + mainTable.get("lcbh") + "\",\n" +     //E-COS流程编号
/*                  "        \"F_RCZU_Base1\": {\n" +           //技术负责人
                    "            \"FSTAFFNUMBER\": \"" + Util.null2String(properties[19].getValue()) + "\"\n" +
                    "        },\n" +*/
                    "       \"FBillTypeID\":{\n" +               //单据类型
                    "           \"FNumber\":\"CGSQD03_SYS\"\n" +
                    "       },\n" +
                    "       \"FNote\":\"" + mainTable.get("ytsm") + "\",\n" +        //备注(用途说明)
                    "   \"FEntity\":" + list_json1.toString()+"  \n" +     //单据体
                    "    }\n" +
                    "}";

             action = actionQDT_zccgsqd.login_save(json);

        }
        //1:维修改造采购申请单
        else if (DocumentType==1){
            //定义list集合存储明细表json字符串
            List<String> list_json1 = new ArrayList<String>();

            //定义一个集合存储明细表的数据
            List<Map<String,String>> detailTable1=new ArrayList<>();

            // 获取所有明细表
            DetailTable[] detailtable = requestInfo.getDetailTableInfo().getDetailTable();
            if (detailtable.length > 0) {
                //循环所有的明细表 【此单据只有一个明细表】
                for (int i = 0; i < detailtable.length; i++) {
                    DetailTable dt = detailtable[i];// 指定明细表
                    Row[] s = dt.getRow();// 当前明细表的所有数据,按行存储
                    for (int j = 0; j < s.length; j++) {
                        Row r = s[j];// 指定行
                        Cell c[] = r.getCell();// 每行数据再按列存储
                        Map<String,String> map=new HashMap<>();
                        for (int k = 0; k < c.length; k++) {
                            Cell c1 = c[k];// 指定列
                            String name = c1.getName();// 明细字段名称
                            String value = c1.getValue();// 明细字段的值
                            map.put(name,value);
                        }
                        //把明细表的每一行数据都插入集合中
                        detailTable1.add(map);
                    }
                }
            }

            //循环遍历明细表中的数据,将数据拼接添加到list_json1中
            for (Map<String, String> detailMap : detailTable1) {
                String json_main = "   \n{\n" +
                        "   \"FMaterialId\": {\n" +     //物料编码(物料编码)(维修费/改造费)
                        "                \"FNumber\": \"" + detailMap.get("wlbm") + "\"\n" +
                        "     },\n" +
                        "   \"F_RCZU_NBXMH\": {\n" +     //内部项目号(从主表获取)
                        "                \"FNumber\": \"" + mainTable.get("xmh") + "\"\n" +
                        "     },\n" +
                        "   \"FEntryNote\":\"" + detailMap.get("bz") + "\",\n" +         //备注
/*
                                "   \"FMaterialDesc\":\"" + Util.null2String(c[8].getValue()) + "\",\n" +      //物料说明 (资产名称)
*/
                        "   \"FRemarksHWMS\": \"" + detailMap.get("sbxh") + "\",\n" +      //物料描述 (设备型号)
/*                                "   \"F_RCZU_Text1\": \"" + Util.null2String(c[3].getValue()) + "\",\n" +      //使用人
                                "   \"F_RCZU_YT\": \"" + Util.null2String(c[4].getValue()) + "\",\n" +        //用途*/
                        "   \"F_RCZU_Base2\": {\n" +            //卡片编码(资产编码)
                        "                    \"FNUMBER\": \"" + detailMap.get("zcbm") + "\"\n" +
                        "                },\n"+
                        "   \"FReqQty\":" + detailMap.get("sl") + ",\n" +             //申请数量
                        "   \"FArrivalDate\": \"" + detailMap.get("xqrq") + "\",\n" +      //到货日期(需求日期)
                        "   \"FTAXPRICE\":\"" + detailMap.get("dj") + "\"\n" +       //含税单价(预估单价)
                        "   }";
                list_json1.add(json_main);
            }

            String json = "{\n" +
                    "  \"IsAutoSubmitAndAudit\": \"true\",\n" +  //是否自动提交审核
                    "  \"NeedUpDateFields\": [],\n" +           //需要更新的字段
                    "  \"NeedReturnFields\": [],\n" +           //需返回结果的字段集合
                    "  \"IsDeleteEntry\": true,\n" +            //是否删除已存在的分录
                    "  \"SubSystemId\": \"\",\n" +              //表单所在的子系统内码
                    "  \"IsVerifyBaseDataField\": false,\n" +   //是否验证所有的基础资料有效性
                    "  \"IsEntryBatchFill\": true,\n" +         //是否批量填充分录
                    "  \"ValidateFlag\": true,\n" +             //是否验证数据合法性标志
                    "  \"NumberSearch\": true,\n" +             //是否用编码搜索基础资料
                    "  \"IsAutoAdjustField\": true,\n" +       //是否自动调整JSON字段顺序
                    "  \"InterationFlags\": \"\",\n" +          //交互标志集合
                    "  \"IgnoreInterationFlag\": \"\",\n" +     //是否允许忽略交互
                    "  \"IsControlPrecision\": false,\n" +      //是否控制精度
                    "  \"ValidateRepeatJson\": false,\n" +      //校验Json数据包是否重复传入
                    "   \"Model\":{\n" +
                    "       \"FApplicationOrgId\":{\n" +                   //申请组织(所属公司)
                    "           \"FNumber\":\"" + mainTable.get("szgs") + "\"\n" +
                    "       },\n" +
                    "        \"FApplicationDeptId\": {\n" +                 //ERP申请部门
                    "            \"FNumber\": \"" + mainTable.get("erpsqbm") + "\"\n" +
                    "        },\n" +
                    "       \"FApplicationDate\":\"" + mainTable.get("zdrq") + "\",\n" +  //申请日期(制单日期)
                    "        \"F_RCZU_Base\": {\n" +                //ERP使用部门
                    "            \"FNUMBER\": \"" + mainTable.get("erpsybm") + "\"\n" +
                    "        },\n" +
/*                    "        \"FApplicantId\": {\n" +                //申请人
                    "            \"FNUMBER\": \"" + mainTable.get("") + "\"\n" +
                    "        },\n" +*/
                    "        \"F_RCZU_mindep\": {\n" +            //ERP归口管理部门
                    "            \"FNUMBER\": \"" + mainTable.get("erpgkglbm") + "\"\n" +
                    "        },\n" +
/*                    "       \"F_RCZU_Combo\": \"" + mainTable.get("") + "\",\n" +   //厂商类别(下拉列表)
                    "        \"F_RCZU_Assistant2\": {\n" +      //在建项目
                    "            \"FNumber\": \"" + mainTable.get("") + "\"\n" +
                    "        },\n" +*/
                    "       \"F_RCZU_ECOS1\": \"" + mainTable.get("lcbh") + "\",\n" +     //E-COS流程编号
/*                    "        \"F_RCZU_Base1\": {\n" +           //技术负责人
                    "            \"FSTAFFNUMBER\": \"" + mainTable.get("") + "\"\n" +
                    "        },\n" +*/
                    "       \"FBillTypeID\":{\n" +               //单据类型
                    "           \"FNumber\":\"CGSQD07_SYS\"\n" +
                    "       },\n" +
                    "       \"FNote\":\"" + mainTable.get("ytsm") + "\",\n" +        //备注(用途说明)
                    "   \"FEntity\":\n" +                //单据体
                                    list_json1.toString() +
                    "       \n" +
                    "    }\n" +
                    "}";

                action = actionQDT_zccgsqd.login_save(json);
        }

        return action;

    }

    public String login_save(String json){
        //设置初始值默认同步成功
        String action;
        // 日志
        Log log = LogFactory.getLog(this.getClass());

        //解析json字符串
        Gson gson = new Gson();

        // 调用ERP接口
        String resultJson = "";
        //初始值登录失败
        Boolean loginResult = false;
        //拆分后生产环境
        K3CloudApiClient client = new K3CloudApiClient("http://xx.xxx.xx.xx:x/k3cloud/");
        try {
            loginResult = client.login("6xxxxxxxd", "账号", "密码", 2052);
            // 判断登录成功就调用ERP相应方法
            if (loginResult) {
                //调用保存的方法  保存 付款申请单
                // 具体参数和调用方法参见  https://openapi.open.kingdee.com/ApiCenterDoc
                resultJson = client.save("PUR_Requisition", json);

                //解析金蝶调用接口后返回的json数据
                HashMap<String,Object> map = gson.fromJson(resultJson, HashMap.class);
                LinkedHashMap<String,Object> sec= gson.fromJson(map.get("Result").toString(),LinkedHashMap.class) ;
                LinkedHashMap<String,Object> thr=gson.fromJson(sec.get("ResponseStatus").toString(),LinkedHashMap.class) ;
                Boolean isSuccess = (Boolean) thr.get("IsSuccess");

                //对返回结果进行解析和校验
                if (isSuccess) {
                    log.info("QDP采购申请单同步结果: 同步成功"+resultJson);
                    action = SUCCESS;
                } else {
                    log.info("QDP采购申请单同步结果: 同步失败"+resultJson);
                    log.info("QDP采购申请单json数据:"+json);
                    action = FAILURE_AND_CONTINUE;
                }

            } else {
                log.info("QDP采购申请单登录失败"+loginResult);
                action = FAILURE_AND_CONTINUE;
            }

        } catch (Exception e) {
            action = FAILURE_AND_CONTINUE;
            log.info("QDP采购申请单同步结果: 同步失败"+resultJson);
            log.info("QDP采购申请单json数据:"+json);
            log.info("错误信息:" + e);
            e.printStackTrace();
        }
        return action;
    }


}



3.ERP对接

云星空文档: 金蝶API文档
或者登录管理员账号,搜索WebAPI;

3.1引入 K3CloudApiClient 包;
3.2实例化 client;
3.3执行登录动作;
3.4判断登录经过为 true , 执行余下动作;

Demo

// 查看
client.View("BD_Account","{"CreateOrgId":0,"Number":"","Id":""}");

// 保存
client.Save("BD_Account","{"NeedUpDateFields":[],"NeedReturnFields")

// 审核 
client.ExcuteOperation("BD_Account","Forbid","{"CreateOrgId":0,"Numbers":[],"Ids":"","PkEntryIds":[],"NetworkCtrl":""}");

// 反审
client.UnAudit("BD_Account","{"CreateOrgId":0,"Numbers":[],"Ids":"","InterationFlags":"","NetworkCtrl":"","IsVerifyProcInst":""}");

... 
更多执行参见 金蝶云星空官方文档  https://openapi.open.kingdee.com/ApiCenterDoc
或者登录管理员账号,搜索WebAPI

总结

以上就是泛微E9对接金蝶云星空的方法,同步表单,注意如果同步多张表单到金蝶ERP中,注意ERP中的表单关联关系。文章来源地址https://www.toymoban.com/news/detail-491151.html

到了这里,关于泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 通过零代码ETLCloud实现金蝶云星空数据自动化同步

    金蝶云星空是一款基于云计算架构打造的全面财务管理软件,旨在为企业提供全方位、一站式的财务解决方案。其功能包括 财务核算、现金管理、应付应收管理、成本核算、固定资产管理、税务管理等,覆盖了财务管理的各个方面,可以帮助企业提高财务管理效率,降低财务

    2024年02月09日
    浏览(58)
  • 金蝶云星空与金蝶云星空对接集成逐个单据查询连通员工新增(3009-销售退货清理卡片)

    金蝶K/3Cloud(金蝶云星空)是移动互联网时代的新型ERP,是基于WEB2.0与云技术的新时代企业管理服务平台。金蝶K/3Cloud围绕着“生态、人人、体验”,旨在帮助企业打造面向新时代的生态互联与协同平台,围绕生态中的每个角色,提供随手可得的云服务,最终实现敏捷协同,智

    2024年02月02日
    浏览(38)
  • 钉钉和金蝶云星空接口打通对接实战

    钉钉是阿里巴巴集团打造的企业级智能移动办公平台,是数字经济时代的企业组织协同办公和应用开发平台。钉钉将IM即时沟通、钉钉文档、钉闪会、钉盘、Teambition、OA审批、智能人事、钉工牌、工作台深度整合,打造简单、高效、安全、智能的数字化未来工作方式,助力企

    2024年02月15日
    浏览(38)
  • 旺店通·企业版和金蝶云星空接口打通对接实战

    慧策(原旺店通)是一家技术驱动型智能零售服务商,基于云计算PaaS、SaaS模式,以一体化智能零售解决方案,帮助零售企业数字化智能化升级,实现企业规模化发展。 金蝶K/3Cloud在总结百万家客户管理最佳实践的基础上,提供了标准的管理模式;通过标准的业务架构:多会

    2024年01月21日
    浏览(54)
  • 钉钉对接打通金蝶云星空获取流程实例列表详情(宜搭)接口与其他应收单接口

    钉钉(DingTalk)是阿里巴巴集团专为中国企业打造的免费沟通和协同的多端平台,提供PC版,Web版和手机版,有考勤打卡、签到、审批、日志、公告、钉盘、钉邮等强大功能。 金蝶K/3Cloud在总结百万家客户管理最佳实践的基础上,提供了标准的管理模式;通过标准的业务架构:

    2024年02月14日
    浏览(38)
  • 成集云 | 飞书审批同步金蝶云星空 | 解决方案

    源系统 成集云 目标系统 飞书员工报销审批通过后,审批单据内容和审批状态实时同步金蝶云星空 飞书是字节跳动于2016年自研的新一代一站式协作平台,将即时沟通、日历、云文档、云盘和工作台深度整合,通过开放兼容的平台,让成员在一处即可实现高效的沟通和流畅的

    2024年02月09日
    浏览(51)
  • 金蝶云星空与领星ERP对接集成分布式调入单查询打通添加/编辑本地产品

    金蝶K/3Cloud结合当今先进管理理论和数十万家国内客户最佳应用实践,面向事业部制、多地点、多工厂等运营协同与管控型企业及集团公司,提供一个通用的ERP服务平台。K/3Cloud支持的协同应用包括但不限于:集中/分散销售、集中/分散采购、B2B电商管理、B2C电商中心、供应商

    2024年04月22日
    浏览(38)
  • 金蝶云星空对接打通管易云分布式调入单查询接口与其他入库单新增完结接口接口

    金蝶K/3Cloud在总结百万家客户管理最佳实践的基础上,提供了标准的管理模式;通过标准的业务架构:多会计准则、多币别、多地点、多组织、多税制应用框架等,有效支持企业的运营管理;K/3Cloud提供了标准的业务建模:35种标准ERP领域模型、1046种模型元素、21243种模型元素

    2024年02月13日
    浏览(34)
  • 伯俊ERP与金蝶云星空对接集成表头表体组合查询连通分布式调出单新增(调拨出库对接分布式调出(KD调拨)6月)

    伯俊科技,依托在企业信息化建设方面的领先技术与实践积累,致力于帮助企业实现全渠道一盘货。伯俊提供数字经营的咨询与系统实施,助力企业信息化升级、加速数字化转型,覆盖零售市场中时尚鞋服、母婴内衣、珠宝饰品、食品酒水等多个行业,为5000+家机构及企业提

    2024年02月09日
    浏览(37)
  • 聚道云连接器助力钉钉与金蝶云星辰无缝对接,实现多维度数据同步

    某企业服务有限公司专注于为企业提供全方位、高质量的企业服务,致力于于企业管理咨询、企业形象策划、市场营销策划、财务管理咨询等方面。该公司拥有一支经验丰富、专业化的团队,他们深入了解企业需求,为客户提供个性化的解决方案。我们已经成功地帮助众多企

    2024年01月25日
    浏览(89)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包