Преглед изворни кода

供应商信息定时同步策略

fyz пре 4 дана
родитељ
комит
6d9d5a9c7b
17 измењених фајлова са 617 додато и 313 уклоњено
  1. 18 3
      mjava-jiuyousimu/src/main/java/com/malk/jiuyousimu/controller/DLController.java
  2. 8 4
      mjava-jiuyousimu/src/main/java/com/malk/jiuyousimu/delegate/DDPersonDelegate.java
  3. 19 0
      mjava-jiuyousimu/src/main/java/com/malk/jiuyousimu/entity/Person.java
  4. 17 0
      mjava-jiuyousimu/src/main/java/com/malk/jiuyousimu/entity/Position.java
  5. 30 0
      mjava-jiuyousimu/src/main/java/com/malk/jiuyousimu/entity/Query.java
  6. 8 6
      mjava-jiuyousimu/src/main/java/com/malk/jiuyousimu/schedule/ScheduleTask.java
  7. 5 3
      mjava-jiuyousimu/src/main/java/com/malk/jiuyousimu/service/DeptService.java
  8. 70 109
      mjava-jiuyousimu/src/main/java/com/malk/jiuyousimu/service/Impl/DeptServiceImpl.java
  9. 44 0
      mjava-jiuyousimu/src/main/java/com/malk/jiuyousimu/service/Impl/KingDeeServiceImpl.java
  10. 65 79
      mjava-jiuyousimu/src/main/java/com/malk/jiuyousimu/service/Impl/PersonServiceImpl.java
  11. 177 0
      mjava-jiuyousimu/src/main/java/com/malk/jiuyousimu/service/Impl/SupplierServiceImpl.java
  12. 10 0
      mjava-jiuyousimu/src/main/java/com/malk/jiuyousimu/service/KingDeeService.java
  13. 5 2
      mjava-jiuyousimu/src/main/java/com/malk/jiuyousimu/service/PersonService.java
  14. 27 0
      mjava-jiuyousimu/src/main/java/com/malk/jiuyousimu/service/SupplierService.java
  15. 72 0
      mjava-jiuyousimu/src/main/resources/application-dev2.yml
  16. 42 0
      mjava-jiuyousimu/src/main/resources/static/json/dataForm.json
  17. 0 107
      mjava-jiuyousimu/src/main/resources/static/json/form.json

+ 18 - 3
mjava-jiuyousimu/src/main/java/com/malk/jiuyousimu/controller/DLController.java

@@ -5,11 +5,14 @@ package com.malk.jiuyousimu.controller;
  */
 
 import com.malk.jiuyousimu.service.DeptService;
+import com.malk.jiuyousimu.service.PersonService;
+import com.malk.jiuyousimu.service.SupplierService;
 import com.malk.server.common.McException;
 import com.malk.server.common.McR;
 import com.malk.server.common.McREnum;
 import com.malk.service.aliwork.YDClient;
 import com.malk.service.aliwork.YDService;
+import com.malk.utils.UtilMap;
 import com.malk.utils.UtilServlet;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
@@ -31,19 +34,31 @@ public class DLController {
 
     @Autowired
     private DeptService deptService;
+    @Autowired
+    private PersonService personService;
+    @Autowired
+    private SupplierService supplierService;
 
     @PostMapping(value = "testToken")
     McR testToken() {
-        deptService.testToken();
         return McR.success();
     }
 
     @PostMapping(value = "testGet")
     McR testGet(@RequestBody Map data) {
-        deptService.deptCreate(data);
+        personService.personCreate(UtilMap.getList(data,"list"));
+        return McR.success();
+    }
+    @PostMapping(value = "testDel")
+    McR testDel(@RequestBody Map data) {
+        personService.personDelete(UtilMap.getList(data,"list"));
+        return McR.success();
+    }
+    @PostMapping(value = "testQuery")
+    McR testQuery(@RequestBody Map data) {
+        supplierService.pushToOA();
         return McR.success();
     }
-
     /**
      * 更新审批实例
      */

+ 8 - 4
mjava-jiuyousimu/src/main/java/com/malk/jiuyousimu/delegate/DDPersonDelegate.java

@@ -2,6 +2,7 @@ package com.malk.jiuyousimu.delegate;
 
 import com.malk.delegate.DDPersonEvent;
 import com.malk.jiuyousimu.service.DeptService;
+import com.malk.jiuyousimu.service.PersonService;
 import com.malk.service.dingtalk.DDClient;
 import com.malk.service.dingtalk.DDClient_Contacts;
 import lombok.extern.slf4j.Slf4j;
@@ -23,7 +24,7 @@ import java.util.List;
 public class DDPersonDelegate implements DDPersonEvent {
 
     @Autowired
-    DeptService deptService;
+    PersonService personService;
     @Autowired
     private DDClient ddClient;
     @Autowired
@@ -31,12 +32,15 @@ public class DDPersonDelegate implements DDPersonEvent {
 
 
     @Override
-    public void executeEvent_Person_Create(List list) {
+    public void executeEvent_Person_Create(List personIds) {
 
+        log.info("executeEvent_Person_Create");
+        personService.personCreate(personIds);
     }
 
     @Override
-    public void executeEvent_person_Remove(List list) {
-
+    public void executeEvent_person_Remove(List personIds) {
+        log.info("executeEvent_person_Remove");
+        personService.personDelete(personIds);
     }
 }

+ 19 - 0
mjava-jiuyousimu/src/main/java/com/malk/jiuyousimu/entity/Person.java

@@ -0,0 +1,19 @@
+package com.malk.jiuyousimu.entity;
+
+import lombok.Data;
+
+@Data
+public class Person {
+
+    //部门
+    private FNumber FCreateOrgId;//创建组织
+    private FNumber FUseOrgId;//使用组织
+    private String FName;//名称
+    private String FEffectDate;//生效日期
+    private String FLapseDate;//失效日期
+    private String FNumber;//编码
+    private String FStaffNumber;//员工编号
+    private String FMobile;//移动电话
+    private String FEmail;//电子邮箱
+
+}

+ 17 - 0
mjava-jiuyousimu/src/main/java/com/malk/jiuyousimu/entity/Position.java

@@ -0,0 +1,17 @@
+package com.malk.jiuyousimu.entity;
+
+import lombok.Data;
+
+@Data
+public class Position {
+
+    //部门
+    private FNumber FCreateOrgId;//创建组织
+    private FNumber FUseOrgId;//使用组织
+    private String FName;//名称
+    private String FEffectDate;//生效日期
+    private String FLapseDate;//失效日期
+    private String FNumber;//部门编码
+    private String FDept;//所属部门
+
+}

+ 30 - 0
mjava-jiuyousimu/src/main/java/com/malk/jiuyousimu/entity/Query.java

@@ -0,0 +1,30 @@
+package com.malk.jiuyousimu.entity;
+
+import lombok.Data;
+import lombok.NonNull;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+@Data
+public class Query {
+    //业务对象表单Id
+    @NotNull
+    private String FormId;
+    //需查询的字段key集合
+    @NotNull
+    private String FieldKeys;
+    //过滤条件,数组类型
+    private List<Object> FilterString;
+    //排序字段
+    private String OrderString;
+    //返回总行数
+    private Integer TopRowCount;
+    //开始行索引
+    private Integer StartRow;
+    //最大行数
+    private Integer Limit;
+    //表单所在的子系统内码
+    private String SubSystemId;
+}

+ 8 - 6
mjava-jiuyousimu/src/main/java/com/malk/jiuyousimu/schedule/ScheduleTask.java

@@ -1,11 +1,13 @@
 package com.malk.jiuyousimu.schedule;
 
 import com.malk.jiuyousimu.service.DeptService;
+import com.malk.jiuyousimu.service.SupplierService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
 
 /**
  * @EnableScheduling 开启定时任务 [配置参考McScheduleTask]
@@ -18,16 +20,16 @@ public class ScheduleTask {
 
 
     @Autowired
-    private DeptService deptService;
+    private SupplierService supplierService;
 
 //    /**
 //     * 每天15,16点尝试下发流程
 //     */
-//    @Scheduled(cron = "0 0 15-16 * * ?")
-//    void updateUseCar(){
-//        log.info("每天15,16点尝试下发流程");
-//        payService.getInvestmentCompany(false);
-//    }
+    @Scheduled(cron = "0 0/30 * * * ?")
+    void updateUseCar(){
+        log.info("每30分钟获取供应商数据");
+        supplierService.pushToOA();
+    }
 
 
 }

+ 5 - 3
mjava-jiuyousimu/src/main/java/com/malk/jiuyousimu/service/DeptService.java

@@ -5,13 +5,15 @@ import com.malk.server.common.McR;
 import java.util.List;
 import java.util.Map;
 
+/**
+ * 部门信息操作金蝶
+ */
 public interface DeptService {
 
-    void testToken();
-
-    McR deptCreate(Map processData);
+    McR deptCreate(Map deptInfo);
 
 
     McR deptDelete(List deptIds);
 
+    McR positionCreate(String deptId);
 }

+ 70 - 109
mjava-jiuyousimu/src/main/java/com/malk/jiuyousimu/service/Impl/DeptServiceImpl.java

@@ -1,18 +1,14 @@
 package com.malk.jiuyousimu.service.Impl;
+import com.malk.jiuyousimu.entity.FNumber;
 
-import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.google.gson.Gson;
-import com.kingdee.bos.webapi.entity.IdentifyInfo;
 import com.kingdee.bos.webapi.entity.RepoRet;
 import com.kingdee.bos.webapi.sdk.K3CloudApi;
-import com.malk.jiuyousimu.config.KDWebApiConf;
 import com.malk.jiuyousimu.entity.*;
-import com.malk.jiuyousimu.service.DingTalkService;
 import com.malk.jiuyousimu.service.DeptService;
+import com.malk.jiuyousimu.service.KingDeeService;
 import com.malk.server.common.McR;
-import com.malk.service.aliwork.YDClient;
-import com.malk.service.aliwork.YDService;
 import com.malk.service.dingtalk.*;
 import com.malk.utils.UtilMap;
 import lombok.extern.slf4j.Slf4j;
@@ -21,10 +17,8 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import java.time.LocalDate;
-import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
-import java.util.concurrent.ConcurrentHashMap;
 import java.util.stream.Collectors;
 
 import static org.aspectj.bridge.MessageUtil.fail;
@@ -51,80 +45,12 @@ public class DeptServiceImpl implements DeptService {
     private Long agentId;
 
     @Autowired
-    DingTalkService dingTalkService;
+    KingDeeService kingDeeService;
     @Autowired
     DDService ddService;
-    @Autowired
-    private YDClient ydClient;
-    @Autowired
-    private YDService ydService;
 
     DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
 
-    private static final String API_TOKEN = "/corpAccessToken/get/V2";
-    private static final String POST_GET_USER = "/user/getByMobile";
-    private static final String POST_DATA_UPDATE = "/crm/custom/v2/data/update";
-    private static final String TABLE_PRODUCT_FIELID = "TableField_BEUZFS0B8R40";
-    private static final String TABLE_CELLLINES_FIELID = "TableField_M04O3XGALA80";
-    private static  String CROPID = "";
-    private ConcurrentHashMap<String, LocalDateTime> formInstanceIdStore = new ConcurrentHashMap<>();
-
-    //所有的人员控件枚举
-    private static final Map<String, String> EMPLOYEE_ENUM = new HashMap<>();
-
-    static {
-        EMPLOYEE_ENUM.put("下属公司","employeeField_mji9tann");
-        EMPLOYEE_ENUM.put("一线部门","employeeField_mji9tany");
-        EMPLOYEE_ENUM.put("室","employeeField_mji9tao9");
-        EMPLOYEE_ENUM.put("班组","employeeField_mjiac7gr");
-    }
-    //运行控制子表枚举
-    private static final Map<String, String> OPERATION_CONTROL = new HashMap<>();
-
-    static {
-        OPERATION_CONTROL.put("投资公司","tableField_mjavj2r6");
-        OPERATION_CONTROL.put("下属公司","tableField_mji9tanq");
-        OPERATION_CONTROL.put("一线部门","tableField_mji9tao1");
-        OPERATION_CONTROL.put("室","tableField_mji9taoc");
-    }
-    //安全生产子表枚举
-    private static final Map<String, String> WORK_SAFETY = new HashMap<>();
-
-    static {
-        WORK_SAFETY.put("投资公司","tableField_mjgiipn0");
-//        WORK_SAFETY.put("下属公司","tableField_mji9tant");
-//        WORK_SAFETY.put("一线部门","tableField_mji9tao4");
-//        WORK_SAFETY.put("室","tableField_mji9taof");
-    }
-    //质量控制子表枚举
-    private static final Map<String, String> QUALITY_CONTROL = new HashMap<>();
-
-    static {
-        QUALITY_CONTROL.put("投资公司","tableField_mjgiipn4");
-//        QUALITY_CONTROL.put("下属公司","tableField_mji9tanw");
-//        QUALITY_CONTROL.put("一线部门","tableField_mji9tao7");
-//        QUALITY_CONTROL.put("室","tableField_mji9taoi");
-    }
-
-    @Override
-    public void testToken() {
-//        approveUpdateCRM(processInstanceId,"DXCPXS","审批拒绝", isAgree);
-    }
-    public String getNumberByUserId(String workingEmployeeIds) {
-//        log.info("根据钉钉人员id获取员工工号:{}",workingEmployeeIds);
-        List<String> filterList = new ArrayList<>();
-        filterList.add("sys00-jobNumber");
-        List<Map> employeeInfos = ddClientPersonnel.getEmployeeInfos(ddClient.getAccessToken(), Arrays.asList(workingEmployeeIds), agentId, filterList);
-        final String[] value = {""};
-        employeeInfos.forEach(e -> {
-            List<Map> mapList = (List<Map>) e.get("field_data_list");
-            mapList.forEach(m -> {
-                List<Map> valueList = (List<Map>) m.get("field_value_list");
-                value[0] = ObjectUtil.isNotNull(valueList.get(0).get("value")) ? valueList.get(0).get("value").toString() : null;
-            });
-        });
-        return value[0];
-    }
     @Override
     public McR deptCreate(Map deptInfo) {
         log.info("开始创建金蝶部门,参数:{}",deptInfo);
@@ -143,7 +69,7 @@ public class DeptServiceImpl implements DeptService {
         save.setModel(dept);
 
         try{
-            K3CloudApi client = new K3CloudApi(initIden());
+            K3CloudApi client = new K3CloudApi(kingDeeService.initIden());
             //业务对象标识
             String formId = "BD_Department";
             //调用接口
@@ -153,7 +79,7 @@ public class DeptServiceImpl implements DeptService {
             //对返回结果进行解析和校验
             RepoRet repoRet = gson.fromJson(resultJson, RepoRet.class);
 
-            if (isTrue(repoRet)){
+            if (kingDeeService.isTrue(repoRet)){
                 String id = repoRet.getResult().getId();
 
                 Submit submit = new Submit();
@@ -161,7 +87,7 @@ public class DeptServiceImpl implements DeptService {
                 //提交
                 String resultJson2 = client.submit(formId, JSONObject.toJSONString(submit));
                 RepoRet repoRet2 = gson.fromJson(resultJson2, RepoRet.class);
-                isTrue(repoRet2);
+                kingDeeService.isTrue(repoRet2);
 
 //                String orderCode = repoRet2.getResult().getResponseStatus().getSuccessEntitys().get(0).getNumber();
 
@@ -170,13 +96,15 @@ public class DeptServiceImpl implements DeptService {
 //                        .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("textField_m6yntxmz",orderCode)))
 //                        .build(), YDConf.FORM_OPERATION.update);
 
-                if (isTrue(repoRet2)){
+                if (kingDeeService.isTrue(repoRet2)){
                     Audit audit = new Audit();
                     audit.setIds(id);
                     //审核
                     String resultJson3 = client.audit(formId,JSONObject.toJSONString(audit));
                     RepoRet repoRet3 = gson.fromJson(resultJson3, RepoRet.class);
-                    isTrue(repoRet3);
+                    if (kingDeeService.isTrue(repoRet3)){
+                        positionCreate(UtilMap.getString(deptInfo,"dept_id"));
+                    }
                 }
             }
         } catch (Exception e) {
@@ -205,14 +133,14 @@ public class DeptServiceImpl implements DeptService {
 
 
         try{
-            K3CloudApi client = new K3CloudApi(initIden());
+            K3CloudApi client = new K3CloudApi(kingDeeService.initIden());
             //业务对象标识
             String formId = "BD_Department";
             //调用接口
             Gson gson = new Gson();
             String resultUnAuditJson = client.unAudit(formId,JSONObject.toJSONString(dept));
             RepoRet repoRetAudit = gson.fromJson(resultUnAuditJson, RepoRet.class);
-            if (isTrue(repoRetAudit)){
+            if (kingDeeService.isTrue(repoRetAudit)){
                 log.info("本次反审核成功部门id:{}",numberIds);
             }else {
                 log.info("本次反审核出错部门id:{}",numberIds);
@@ -222,7 +150,7 @@ public class DeptServiceImpl implements DeptService {
             //对返回结果进行解析和校验
             RepoRet repoRetDelete = gson.fromJson(resultDeleteJson, RepoRet.class);
 
-            if (isTrue(repoRetDelete)){
+            if (kingDeeService.isTrue(repoRetDelete)){
                 log.info("本次删除成功部门id:{}",numberIds);
             }else {
                 log.info("本次删除出错部门id:{}",numberIds);
@@ -234,31 +162,64 @@ public class DeptServiceImpl implements DeptService {
         return McR.success();
     }
 
-    private boolean isTrue(RepoRet repoRet){
-        Gson gson = new Gson();
+    @Override
+    public McR positionCreate(String deptId) {
+        log.info("开始创建金蝶部门下默认岗位信息,参数:{}",deptId);
+        LocalDate today = LocalDate.now();
+        String dateStr = today.format(formatter);
+        Save save = new Save();
+
+        Position position = new Position();
+        position.setFName("默认");
+        position.setFNumber(deptId+"01");
+        position.setFDept(deptId);
+        position.setFCreateOrgId(new FNumber("100"));
+        position.setFUseOrgId(new FNumber("100"));
+        position.setFEffectDate(dateStr);
+        position.setFEffectDate("2226-03-12");
+        save.setModel(position);
+
+        try{
+            K3CloudApi client = new K3CloudApi(kingDeeService.initIden());
+            //业务对象标识
+            String formId = "BD_Department";
+            //调用接口
+            String resultJson = client.save(formId,JSONObject.toJSONString(save));
+            //用于记录结果
+            Gson gson = new Gson();
+            //对返回结果进行解析和校验
+            RepoRet repoRet = gson.fromJson(resultJson, RepoRet.class);
+
+            if (kingDeeService.isTrue(repoRet)){
+                String id = repoRet.getResult().getId();
 
-        if (repoRet.getResult().getResponseStatus().isIsSuccess()) {
-            System.out.printf("接口返回结果: %s%n", gson.toJson(repoRet.getResult()));
-            return true;
-        } else {
-            fail("接口返回结果: " + gson.toJson(repoRet.getResult().getResponseStatus()));
-            return false;
+                Submit submit = new Submit();
+                submit.setIds(id);
+                //提交
+                String resultJson2 = client.submit(formId, JSONObject.toJSONString(submit));
+                RepoRet repoRet2 = gson.fromJson(resultJson2, RepoRet.class);
+                kingDeeService.isTrue(repoRet2);
+
+//                String orderCode = repoRet2.getResult().getResponseStatus().getSuccessEntitys().get(0).getNumber();
+
+//                ydClient.operateData(YDParam.builder()
+////                        .formInstId(formInstId)
+//                        .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("textField_m6yntxmz",orderCode)))
+//                        .build(), YDConf.FORM_OPERATION.update);
+
+                if (kingDeeService.isTrue(repoRet2)){
+                    Audit audit = new Audit();
+                    audit.setIds(id);
+                    //审核
+                    String resultJson3 = client.audit(formId,JSONObject.toJSONString(audit));
+                    RepoRet repoRet3 = gson.fromJson(resultJson3, RepoRet.class);
+                    kingDeeService.isTrue(repoRet3);
+                }
+            }
+        } catch (Exception e) {
+            McR.errorUnknown(e.getMessage());
         }
-    }
-    @Autowired
-    private KDWebApiConf kdWebApiConf;
-
-    private IdentifyInfo initIden(){
-        //注意 1:此处不再使用参数形式传入用户名及密码等敏感信息,改为在登录配置文件中设置。
-        //注意 2:必须先配置第三方系统登录授权信息后,再进行业务操作,详情参考各语言版本SDK介绍中的登录配置文件说明。
-        //读取配置,初始化SDK
-        IdentifyInfo iden = new IdentifyInfo();
-        iden.setUserName(kdWebApiConf.getXKDApiUserName());
-        iden.setAppId(kdWebApiConf.getXKDApiAppID());
-        iden.setdCID(kdWebApiConf.getXKDApiAcctID());
-        iden.setAppSecret(kdWebApiConf.getXKDApiAppSec());
-        iden.setServerUrl(kdWebApiConf.getXKDApiServerUrl());
-
-        return iden;
+
+        return McR.success();
     }
 }

+ 44 - 0
mjava-jiuyousimu/src/main/java/com/malk/jiuyousimu/service/Impl/KingDeeServiceImpl.java

@@ -0,0 +1,44 @@
+package com.malk.jiuyousimu.service.Impl;
+
+import com.google.gson.Gson;
+import com.kingdee.bos.webapi.entity.IdentifyInfo;
+import com.kingdee.bos.webapi.entity.RepoRet;
+import com.malk.jiuyousimu.config.KDWebApiConf;
+import com.malk.jiuyousimu.service.KingDeeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import static org.aspectj.bridge.MessageUtil.fail;
+
+@Service
+public class KingDeeServiceImpl implements KingDeeService {
+
+    @Autowired
+    private KDWebApiConf kdWebApiConf;
+    @Override
+    public IdentifyInfo initIden(){
+        //注意 1:此处不再使用参数形式传入用户名及密码等敏感信息,改为在登录配置文件中设置。
+        //注意 2:必须先配置第三方系统登录授权信息后,再进行业务操作,详情参考各语言版本SDK介绍中的登录配置文件说明。
+        //读取配置,初始化SDK
+        IdentifyInfo iden = new IdentifyInfo();
+        iden.setUserName(kdWebApiConf.getXKDApiUserName());
+        iden.setAppId(kdWebApiConf.getXKDApiAppID());
+        iden.setdCID(kdWebApiConf.getXKDApiAcctID());
+        iden.setAppSecret(kdWebApiConf.getXKDApiAppSec());
+        iden.setServerUrl(kdWebApiConf.getXKDApiServerUrl());
+
+        return iden;
+    }
+    @Override
+    public boolean isTrue(RepoRet repoRet){
+        Gson gson = new Gson();
+
+        if (repoRet.getResult().getResponseStatus().isIsSuccess()) {
+            System.out.printf("接口返回结果: %s%n", gson.toJson(repoRet.getResult()));
+            return true;
+        } else {
+            fail("接口返回结果: " + gson.toJson(repoRet.getResult().getResponseStatus()));
+            return false;
+        }
+    }
+}

+ 65 - 79
mjava-jiuyousimu/src/main/java/com/malk/jiuyousimu/service/Impl/PersonServiceImpl.java

@@ -1,6 +1,5 @@
 package com.malk.jiuyousimu.service.Impl;
 
-import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.google.gson.Gson;
 import com.kingdee.bos.webapi.entity.IdentifyInfo;
@@ -8,8 +7,8 @@ import com.kingdee.bos.webapi.entity.RepoRet;
 import com.kingdee.bos.webapi.sdk.K3CloudApi;
 import com.malk.jiuyousimu.config.KDWebApiConf;
 import com.malk.jiuyousimu.entity.*;
-import com.malk.jiuyousimu.service.DeptService;
 import com.malk.jiuyousimu.service.DingTalkService;
+import com.malk.jiuyousimu.service.KingDeeService;
 import com.malk.jiuyousimu.service.PersonService;
 import com.malk.server.common.McR;
 import com.malk.service.aliwork.YDClient;
@@ -22,10 +21,8 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import java.time.LocalDate;
-import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
-import java.util.concurrent.ConcurrentHashMap;
 import java.util.stream.Collectors;
 
 import static org.aspectj.bridge.MessageUtil.fail;
@@ -52,7 +49,7 @@ public class PersonServiceImpl implements PersonService {
     private Long agentId;
 
     @Autowired
-    DingTalkService dingTalkService;
+    KingDeeService kingDeeService;
     @Autowired
     DDService ddService;
     @Autowired
@@ -66,42 +63,67 @@ public class PersonServiceImpl implements PersonService {
     public void testToken() {
 //        approveUpdateCRM(processInstanceId,"DXCPXS","审批拒绝", isAgree);
     }
-    public String getNumberByUserId(String workingEmployeeIds) {
+    public List<Map<String,Object>> getUserInfosByUserId(List<String> workingEmployeeIds) {
 //        log.info("根据钉钉人员id获取员工工号:{}",workingEmployeeIds);
-        List<String> filterList = new ArrayList<>();
-        filterList.add("sys00-jobNumber");
-        List<Map> employeeInfos = ddClientPersonnel.getEmployeeInfos(ddClient.getAccessToken(), Arrays.asList(workingEmployeeIds), agentId, filterList);
-        final String[] value = {""};
+        List<String> filterList = Arrays.asList("sys00-name", "sys00-email", "sys00-mainDeptId", "sys00-mobile");
+        List<Map> employeeInfos = ddClientPersonnel.getEmployeeInfos(ddClient.getAccessToken(), workingEmployeeIds, agentId, filterList);
+        List<Map<String,Object>> resultInfos = new ArrayList<>();
         employeeInfos.forEach(e -> {
+            Map<String, Object> map = new HashMap<>();
             List<Map> mapList = (List<Map>) e.get("field_data_list");
             mapList.forEach(m -> {
                 List<Map> valueList = (List<Map>) m.get("field_value_list");
-                value[0] = ObjectUtil.isNotNull(valueList.get(0).get("value")) ? valueList.get(0).get("value").toString() : null;
+                map.put(UtilMap.getString(m,"field_code"),UtilMap.getString(valueList.get(0),"value"));
             });
+            resultInfos.add(map);
+        });
+        return resultInfos;
+    }
+    public Map<String,Object> getUserInfoByUserId(String workingEmployeeIds) {
+        log.info("根据钉钉人员id获取员工工号:{}",workingEmployeeIds);
+        List<String> filterList = Arrays.asList("sys00-name", "sys00-email", "sys00-mainDeptId", "sys00-mobile");
+        List<Map> employeeInfos = ddClientPersonnel.getEmployeeInfos(ddClient.getAccessToken(), Arrays.asList(workingEmployeeIds), agentId, filterList);
+        Map<String, Object> map = new HashMap<>();
+        List<Map> mapList = UtilMap.getList(employeeInfos.get(0),"field_data_list");
+        mapList.forEach(m -> {
+            List<Map> valueList = UtilMap.getList(m,"field_value_list");
+            map.put(UtilMap.getString(m,"field_code"),UtilMap.getString(valueList.get(0),"value"));
         });
-        return value[0];
+        return map;
     }
     @Override
-    public McR deptCreate(Map deptInfo) {
-        log.info("开始创建金蝶部门,参数:{}",deptInfo);
-        LocalDate today = LocalDate.now();
-        String dateStr = today.format(formatter);
+    public McR personCreate(List personIds) {
+        log.info("开始创建金蝶员工,参数:{}",personIds);
+
+        personIds.forEach(e->{
+            Map<String, Object> userInfoByUserId = getUserInfoByUserId(e.toString());
+
+            savePerson(e, userInfoByUserId);
+        });
+
+
+        return McR.success();
+    }
+
+    public void savePerson(Object e, Map<String, Object> userInfoByUserId) {
         Save save = new Save();
 
-        Department dept = new Department();
-        dept.setFNumber(UtilMap.getString(deptInfo,"dept_id"));
-        dept.setFName(UtilMap.getString(deptInfo,"name"));
-        dept.setFCreateOrgId(new FNumber("100"));
-        dept.setFUseOrgId(new FNumber("100"));
-        dept.setFEffectDate(dateStr);
-        dept.setFEffectDate("2226-03-12");
+        Person person = new Person();
+        person.setFCreateOrgId(new FNumber("100"));
+        person.setFUseOrgId(new FNumber("100"));
+        person.setFName(UtilMap.getString(userInfoByUserId,"sys00-name"));
+        person.setFNumber(e.toString());
+        person.setFStaffNumber(e.toString());
+        person.setFMobile(UtilMap.getString(userInfoByUserId,"sys00-mobile"));
+        person.setFEmail(UtilMap.getString(userInfoByUserId,"sys00-email"));
+
+        save.setModel(person);
 
-        save.setModel(dept);
 
         try{
-            K3CloudApi client = new K3CloudApi(initIden());
+            K3CloudApi client = new K3CloudApi(kingDeeService.initIden());
             //业务对象标识
-            String formId = "BD_Department";
+            String formId = "BD_Empinfo";
             //调用接口
             String resultJson = client.save(formId,JSONObject.toJSONString(save));
             //用于记录结果
@@ -109,7 +131,7 @@ public class PersonServiceImpl implements PersonService {
             //对返回结果进行解析和校验
             RepoRet repoRet = gson.fromJson(resultJson, RepoRet.class);
 
-            if (isTrue(repoRet)){
+            if (kingDeeService.isTrue(repoRet)){
                 String id = repoRet.getResult().getId();
 
                 Submit submit = new Submit();
@@ -117,37 +139,29 @@ public class PersonServiceImpl implements PersonService {
                 //提交
                 String resultJson2 = client.submit(formId, JSONObject.toJSONString(submit));
                 RepoRet repoRet2 = gson.fromJson(resultJson2, RepoRet.class);
-                isTrue(repoRet2);
-
-//                String orderCode = repoRet2.getResult().getResponseStatus().getSuccessEntitys().get(0).getNumber();
-
-//                ydClient.operateData(YDParam.builder()
-////                        .formInstId(formInstId)
-//                        .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("textField_m6yntxmz",orderCode)))
-//                        .build(), YDConf.FORM_OPERATION.update);
+                kingDeeService.isTrue(repoRet2);
 
-                if (isTrue(repoRet2)){
+                if (kingDeeService.isTrue(repoRet2)){
                     Audit audit = new Audit();
                     audit.setIds(id);
                     //审核
                     String resultJson3 = client.audit(formId,JSONObject.toJSONString(audit));
                     RepoRet repoRet3 = gson.fromJson(resultJson3, RepoRet.class);
-                    isTrue(repoRet3);
+                    kingDeeService.isTrue(repoRet3);
                 }
             }
-        } catch (Exception e) {
-            McR.errorUnknown(e.getMessage());
+        } catch (Exception ex) {
+            McR.errorUnknown(ex.getMessage());
         }
 
-        return McR.success();
     }
 
     @Override
-    public McR deptDelete(List deptIds) {
-        log.info("开始删除金蝶部门,参数:{}",deptIds);
+    public McR personDelete(List personIds) {
+        log.info("开始删除金蝶员工,参数:{}",personIds);
 //        List<String> DelDeptIds = new ArrayList<>();
 //        deptIds.add("1064410173");
-        List<String> numberIds = (List<String>) deptIds.stream().map(num -> String.valueOf(num)).collect(Collectors.toList());
+        List<String> numberIds = (List<String>) personIds.stream().map(num -> String.valueOf(num)).collect(Collectors.toList());
 
 
         Audit audit = new Audit();
@@ -161,27 +175,27 @@ public class PersonServiceImpl implements PersonService {
 
 
         try{
-            K3CloudApi client = new K3CloudApi(initIden());
+            K3CloudApi client = new K3CloudApi(kingDeeService.initIden());
             //业务对象标识
-            String formId = "BD_Department";
+            String formId = "BD_Empinfo";
             //调用接口
             Gson gson = new Gson();
             String resultUnAuditJson = client.unAudit(formId,JSONObject.toJSONString(dept));
             RepoRet repoRetAudit = gson.fromJson(resultUnAuditJson, RepoRet.class);
-            if (isTrue(repoRetAudit)){
-                log.info("本次反审核成功部门id:{}",numberIds);
+            if (kingDeeService.isTrue(repoRetAudit)){
+                log.info("本次反审核成功员工id:{}",numberIds);
             }else {
-                log.info("本次反审核出错部门id:{}",numberIds);
+                log.info("本次反审核出错员工id:{}",numberIds);
             }
             String resultDeleteJson = client.delete(formId,JSONObject.toJSONString(dept));
             //用于记录结果
             //对返回结果进行解析和校验
             RepoRet repoRetDelete = gson.fromJson(resultDeleteJson, RepoRet.class);
 
-            if (isTrue(repoRetDelete)){
-                log.info("本次删除成功部门id:{}",numberIds);
+            if (kingDeeService.isTrue(repoRetDelete)){
+                log.info("本次删除成功员工id:{}",numberIds);
             }else {
-                log.info("本次删除出错部门id:{}",numberIds);
+                log.info("本次删除出错员工id:{}",numberIds);
             }
         } catch (Exception e) {
             McR.errorUnknown(e.getMessage());
@@ -189,32 +203,4 @@ public class PersonServiceImpl implements PersonService {
 
         return McR.success();
     }
-
-    private boolean isTrue(RepoRet repoRet){
-        Gson gson = new Gson();
-
-        if (repoRet.getResult().getResponseStatus().isIsSuccess()) {
-            System.out.printf("接口返回结果: %s%n", gson.toJson(repoRet.getResult()));
-            return true;
-        } else {
-            fail("接口返回结果: " + gson.toJson(repoRet.getResult().getResponseStatus()));
-            return false;
-        }
-    }
-    @Autowired
-    private KDWebApiConf kdWebApiConf;
-
-    private IdentifyInfo initIden(){
-        //注意 1:此处不再使用参数形式传入用户名及密码等敏感信息,改为在登录配置文件中设置。
-        //注意 2:必须先配置第三方系统登录授权信息后,再进行业务操作,详情参考各语言版本SDK介绍中的登录配置文件说明。
-        //读取配置,初始化SDK
-        IdentifyInfo iden = new IdentifyInfo();
-        iden.setUserName(kdWebApiConf.getXKDApiUserName());
-        iden.setAppId(kdWebApiConf.getXKDApiAppID());
-        iden.setdCID(kdWebApiConf.getXKDApiAcctID());
-        iden.setAppSecret(kdWebApiConf.getXKDApiAppSec());
-        iden.setServerUrl(kdWebApiConf.getXKDApiServerUrl());
-
-        return iden;
-    }
 }

+ 177 - 0
mjava-jiuyousimu/src/main/java/com/malk/jiuyousimu/service/Impl/SupplierServiceImpl.java

@@ -0,0 +1,177 @@
+package com.malk.jiuyousimu.service.Impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSON;
+import com.kingdee.bos.webapi.entity.IdentifyInfo;
+import com.kingdee.bos.webapi.sdk.K3CloudApi;
+import com.malk.jiuyousimu.config.KDWebApiConf;
+import com.malk.jiuyousimu.entity.Query;
+import com.malk.jiuyousimu.service.KingDeeService;
+import com.malk.jiuyousimu.service.SupplierService;
+import com.malk.server.common.McR;
+import com.malk.service.dingtalk.DDClient;
+import com.malk.service.dingtalk.DDClient_Workflow;
+import com.malk.utils.UtilFile;
+import com.malk.utils.UtilMap;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+import java.util.stream.Collectors;
+
+import static org.aspectj.bridge.MessageUtil.fail;
+
+@Slf4j
+@Service
+public class SupplierServiceImpl implements SupplierService {
+    @Autowired
+    private KingDeeService kingDeeService;
+    @Autowired
+    private DDClient_Workflow ddClient_workflow;
+    @Autowired
+    private DDClient ddClient;
+    @Override
+    public List<Map<String,Object>>  getAllSupplierInfos() {
+        Map meta = _getMeta();
+        String fieldKeys = meta.get("FieldKeys").toString();
+        K3CloudApi client = new K3CloudApi(kingDeeService.initIden());
+        Query query = new Query();
+        query.setFormId("BD_Supplier");
+        query.setFieldKeys(fieldKeys);
+        try {
+            //调用接口
+            List<List<Object>> billQuery = client.executeBillQuery(JSON.toJSONString(query));
+            String[] split = fieldKeys.split(",");
+            List<Map<String,Object>> suppliers = new ArrayList<>();
+            billQuery.forEach(b->{
+                Map<String, Object> map = new HashMap<>();
+                for (int i = 0; i < split.length; i++) {
+                    String item = split[i];
+                    map.put(item,b.get(i));
+                }
+                suppliers.add(map);
+            });
+            return suppliers;
+
+        } catch (Exception e) {
+            fail(e.getMessage());
+        }
+        return null;
+    }
+    private static boolean hasCreditCode(Map<String, Object> map) {
+        Object code = map.get("FSOCIALCRECODE");
+        return code != null && !code.toString().trim().isEmpty();
+    }
+    @Override
+    public McR pushToOA() {
+        //获取修改时间过滤节点
+        LocalDateTime startTime = LocalDateTime.now()
+                .minusMinutes(30)
+                .withSecond(0)
+                .withNano(0);
+        LocalDateTime endTime = LocalDateTime.now()
+                .minusMinutes(30)
+                .withSecond(0)
+                .withNano(0);
+        // 使用 ISO_LOCAL_DATE_TIME 格式化(格式:yyyy-MM-dd'T'HH:mm:ss)
+//        String isoStartTime = startTime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME);
+//        String isoEndTime = startTime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME);
+        //获取所有供应商数据
+        List<Map<String,Object>> allSupplierInfos = getAllSupplierInfos();
+        //所有供应商数据分组过滤是否含统一信用代码
+        Map<String, List<Map<String, Object>>> grouped = allSupplierInfos.stream().filter(map -> startTime.isBefore(LocalDateTime.parse(UtilMap.getString(map, "FModifyDate"))) &&
+                        endTime.isAfter(LocalDateTime.parse(UtilMap.getString(map, "FModifyDate"))))
+                .collect(Collectors.groupingBy(m -> (String) m.get("FName")));
+        List<Map<String, Object>> result = grouped.values().stream()
+                .flatMap(group -> {
+                    // 找出组内有信用代码的记录
+                    List<Map<String, Object>> hasCode = group.stream()
+                            .filter(m -> hasCreditCode(m))
+                            .collect(Collectors.toList());
+
+                    // 如果组内既有有代码的,又有无代码的,则只保留有代码的
+                    if (!hasCode.isEmpty() && hasCode.size() < group.size()) {
+                        return hasCode.stream();
+                    } else {
+                        // 否则(全有或全无)保留所有
+                        return group.stream();
+                    }
+                })
+                .collect(Collectors.toList());
+
+        Map<String, List<Map<String, String>>> collect = result.stream()
+                .collect(Collectors.groupingBy(
+                        m -> m.get("FName") + "|" + m.get("FNumber") + "|" + m.get("FSOCIALCRECODE"), // 组合键
+                        Collectors.mapping(
+                                map -> {
+                                    // 将每个记录的账号和开户行提取为独立的 Map
+                                    Map<String, String> accountInfo = new HashMap<>();
+                                    accountInfo.put("FBankCode", (String) map.get("FBankCode"));
+                                    accountInfo.put("FOpenBankName", (String) map.get("FOpenBankName"));
+                                    return accountInfo;
+                                },
+                                Collectors.toList()                       // 组内收集为 List
+                        )
+                ));
+        List<Map<String, Object>> output = collect.entrySet().stream()
+                .map(entry -> {
+                    String[] parts = entry.getKey().split("|", -1); // 拆分组合键,保留空值
+                    Map<String, Object> item = new HashMap<>();
+                    // 假设组合键顺序为:FName | FNumber | FSOCIALCRECODE
+                    item.put("FName", parts.length > 0 ? parts[0] : "");
+                    item.put("FNumber", parts.length > 1 ? parts[1] : "");
+                    item.put("FSOCIALCRECODE", parts.length > 2 ? parts[2] : "");
+                    item.put("bankInfos", entry.getValue());
+                    return item;
+                })
+                .collect(Collectors.toList());
+
+        Map meta = _getMeta();
+        Map<String, String> component = (Map) ((Map) meta.get("SUPPLIER")).get("compIds");
+//        for (String key : component.keySet()) {
+        output.forEach(o->{
+            List<Map> formValue = new ArrayList<>();
+            Map formData = UtilMap.empty();
+            o.forEach((k,v)->{
+                if (k.startsWith("bankInfos")) {
+                    List<Map> rows = UtilMap.getList(o,k);
+                    List<List<Map>> lastList = new ArrayList<>();
+//                       Map<String, String> compIds = (Map) component.get(key);
+                    if (rows.size() > 0 ){
+                        for (Map row : rows) {
+                            List<Map> details = new ArrayList<>();
+                            row.forEach((kr,kv)->{
+                                Map detail = UtilMap.empty();
+                                detail.put("value", kv);
+                                detail.put("name", component.get(kr));
+                                details.add(detail);
+                            });
+                            lastList.add(details);
+                        }
+                        formData.put( "value", JSON.toJSONString(lastList));
+                        formData.put( "name", "财务信息");
+                    }
+                } else {
+                    formData.put("value", v);
+                    formData.put("name", component.get(k));
+                }
+            });
+
+            formValue.add(formData);
+            ddClient_workflow.doProcessInstancesNew(ddClient.getAccessToken(), "603864663125953014", "PROC-7760F325-C01C-4C11-B904-92E5B7521D32", formValue, "1064083060");
+        });
+        return null;
+    }
+    private Map MATE;
+
+    private Map _getMeta() {
+        if (ObjectUtil.isNull(MATE)) {
+            MATE = (Map) UtilFile.readJsonObjectFromResource("static/json/form.json"); // 本地匹配宜搭组件ID
+//            MATE = (Map) UtilFile.readJsonObjectFromResource("static/json/formtest.json"); // 本地匹配宜搭组件ID
+        }
+        return MATE;
+    }
+}

+ 10 - 0
mjava-jiuyousimu/src/main/java/com/malk/jiuyousimu/service/KingDeeService.java

@@ -0,0 +1,10 @@
+package com.malk.jiuyousimu.service;
+
+import com.kingdee.bos.webapi.entity.IdentifyInfo;
+import com.kingdee.bos.webapi.entity.RepoRet;
+
+public interface KingDeeService {
+    IdentifyInfo initIden();
+
+    boolean isTrue(RepoRet repoRet);
+}

+ 5 - 2
mjava-jiuyousimu/src/main/java/com/malk/jiuyousimu/service/PersonService.java

@@ -5,13 +5,16 @@ import com.malk.server.common.McR;
 import java.util.List;
 import java.util.Map;
 
+/**
+ * 员工信息操作金蝶
+ */
 public interface PersonService {
 
     void testToken();
 
-    McR deptCreate(Map processData);
+    McR personCreate(List personIds);
 
 
-    McR deptDelete(List deptIds);
+    McR personDelete(List deptIds);
 
 }

+ 27 - 0
mjava-jiuyousimu/src/main/java/com/malk/jiuyousimu/service/SupplierService.java

@@ -0,0 +1,27 @@
+package com.malk.jiuyousimu.service;
+
+import com.malk.server.common.McR;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 供应商信息操作金蝶
+ */
+public interface SupplierService {
+
+
+    /**
+     * 获取金蝶所有供应商信息
+     * @return
+     */
+    List<Map<String,Object>>  getAllSupplierInfos();
+
+
+    /**
+     * 推送供应商信息到钉钉OA底表
+     * @return
+     */
+    McR pushToOA();
+
+}

+ 72 - 0
mjava-jiuyousimu/src/main/resources/application-dev2.yml

@@ -0,0 +1,72 @@
+# 环境配置
+server:
+  port: 8108
+  servlet:
+    context-path: /api/jiuyousimu
+
+# condition
+spel:
+  scheduling: true        # 定时任务是否执行
+  multiSource: false       # 是否多数据源配置
+
+spring:
+  # database
+  datasource:
+    hikari:
+      connection-init-sql: SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci           # SqlServer, Oracle 无需设置类型
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    username: root
+    password: cp-root@2022++
+    url: jdbc:mysql://47.110.74.198:3306/dingtalk?serverTimezone=Asia/Shanghai&useUnicode=yes&characterEncoding=UTF-8&useSSL=true
+  jpa:
+    hibernate:
+      ddl-auto: none      # JPA对表没有任何操作
+    show-sql: true
+    database: MYSQL
+    database-platform: org.hibernate.dialect.MySQL57Dialect
+
+# filepath
+file:
+  path:
+    file: /Users/malk/server/_Tool/var/mjava/tmp/file/
+    image: /Users/malk/server/_Tool/var/mjava/tmp/image/
+    tmp: /Users/malk/server/_Tool/var/mjava/tmp/
+  source:
+    fonts: /Users/malk/server/_Tool/fonts/simsun.ttc
+#logging:
+#  file:
+#    path: /Users/malk/server/_Tool/var/mjava/log
+
+# dingtalk
+dingtalk:
+  agentId: 4326067175
+  appKey: dingc6t2cxxc6k6ulymx
+  appSecret: PtHQ53j6mzjbMMyVh0-0GgAqz2JGVGZt4ktRaSecCuYWB0QXNVfba6mlAf5QHuUJ
+  corpId:
+  aesKey: uLbNXSzj16uYK6nuA0mMuOJVtMSVOGBwfvwhbh2ugOf
+  token: zcJKprGXPkztJ7q3RK
+  operator: ""   # OA管理员账号
+
+#测试环境
+kingdee:
+  # 第三方系统登录授权的账套ID
+  X-KDApi-AcctID: 69b14ada7a2acd
+  # 第三方系统登录授权的用户
+  X-KDApi-UserName: Administrator
+  # 第三方系统登录授权的应用ID
+  X-KDApi-AppID: 403605_RYdBRaCt1rA56XToXd7r2ZVt7tW6WqKp
+  # 第三方系统登录授权的应用密钥
+  X-KDApi-AppSec: 128a573265bd4e5d9fb03f1bb40caae0
+  # 服务Url地址(公有云统一走网关sdk底层已处理,无需传X-KDApi-ServerUrl,下面这行需要注释)
+  X-KDApi-ServerUrl: http://win-dokf98lkhoo.jiuyoufund.com:8085/k3cloud
+  # 账套语系,默认2052
+  # X-KDApi-LCID: 2052
+  # 组织编码,启用多组织时配置对应的组织编码才有效
+  # X-KDApi-OrgNum: 100
+  # 允许的最大连接延时,单位为秒
+  # X-KDApi-ConnectTimeout: 120
+  # 允许的最大读取延时,单位为秒
+  # X-KDApi-RequestTimeout: 120
+
+
+

+ 42 - 0
mjava-jiuyousimu/src/main/resources/static/json/dataForm.json

@@ -0,0 +1,42 @@
+{
+  "SUPPLIER": {
+    "processCode": "PROC-B4D7A962-EEE7-41FB-B749-52FF723E4DAF",
+    "creator": "603864663125953014",
+    "FieldKeys": "FName,FNumber,FModifyDate,FSOCIALCRECODE,FBankCode,FOpenBankName",
+    "attachmentUrl": {
+      "downloadUrl": "downloadUrl",
+      "name": "name"
+    },
+    "compIds": {
+      "FName": "供应商名称",
+      "FNumber": "供应商编号",
+      "FModifyDate": "修改时间",
+      "FSOCIALCRECODE": "统一社会信用代码",
+      "FBankCode": "银行账号",
+      "FOpenBankName": "开户银行"
+    }
+  },
+  "NDKJXS": {
+    "processCode": "PROC-A9F9C430-5947-4B4F-9D8A-2591207E6153",
+    "processCode1": "PROC-452744BC-BDA4-4641-AA5B-B5D68A47242B",
+    "creator": "proposerCode",
+    "attachmentUrl": {
+      "downloadUrl": "downloadUrl",
+      "name": "name"
+    },
+    "compIds": {
+      "crmId": "crmId",
+      "名称": "name",
+      "签署法人实体": "signingLegal",
+      "是否加盖公章": "isSealUsed",
+      "合同描述": "contractContent",
+      "合同编号": "contractCode",
+      "甲方信息": "partyAInfo",
+      "乙方信息": "partyBInfo",
+      "合同签订日期": "contractSignDate",
+      "合同事宜": "contractIssue",
+      "是否涉及法人章": "involveCorporateSeal",
+      "是否涉密": "isConfidential"
+    }
+  }
+}

+ 0 - 107
mjava-jiuyousimu/src/main/resources/static/json/form.json

@@ -1,107 +0,0 @@
-{
-  "DXCPXS": {
-    "processCode": "PROC-3F7AC816-B41B-4A48-8CFD-CE9FF92B05AB",
-    "processCode1": "PROC-BA558102-6DA9-4F02-9E0A-BE4272362C06",
-    "creator": "proposerCode",
-    "attachmentUrl": {
-      "downloadUrl": "downloadUrl",
-      "name": "name"
-    },
-    "compIds": {
-      "crmId": "crmId",
-      "合同描述": "contractContent",
-      "名称": "name",
-      "签署法人实体": "signingLegal",
-      "区域": "region",
-      "合同事宜": "contractIssue",
-      "合同编号": "contractCode",
-      "甲方信息": "partyAInfo",
-      "乙方信息": "partyBInfo",
-      "合同签订日期": "contractSignDate",
-      "是否涉及法人章": "involveCorporateSeal",
-      "是否涉密": "isConfidential",
-      "合同总价是否为固定金额": "isFixed",
-      "原币类型": "currencyType",
-      "原币金额": "currencyAmount",
-      "人民币金额(元)": "RMBAmount",
-      "关联审批单": "RelatedReceipt"
-    }
-  },
-  "NDKJXS": {
-    "processCode": "PROC-A9F9C430-5947-4B4F-9D8A-2591207E6153",
-    "processCode1": "PROC-452744BC-BDA4-4641-AA5B-B5D68A47242B",
-    "creator": "proposerCode",
-    "attachmentUrl": {
-      "downloadUrl": "downloadUrl",
-      "name": "name"
-    },
-    "compIds": {
-      "crmId": "crmId",
-      "名称": "name",
-      "签署法人实体": "signingLegal",
-      "是否加盖公章": "isSealUsed",
-      "合同描述": "contractContent",
-      "合同编号": "contractCode",
-      "甲方信息": "partyAInfo",
-      "乙方信息": "partyBInfo",
-      "合同签订日期": "contractSignDate",
-      "合同事宜": "contractIssue",
-      "是否涉及法人章": "involveCorporateSeal",
-      "是否涉密": "isConfidential"
-    }
-  },
-  "YPSQ": {
-    "processCode": "PROC-B6CCD0BE-E74D-4FCD-8B3A-B68F7827C5AC",
-    "processCode1": "PROC-82FE4028-CA69-47A6-8D9C-16239BC4006F",
-    "creator": "proposerCode",
-    "attachmentUrl": {
-      "downloadUrl": "downloadUrl",
-      "name": "name"
-    },
-    "products" : "样品信息",
-    "cellLines" : "细胞株信息",
-    "compIds": {
-      "crmId": "crmId",
-      "区域": "region",
-      "申请原因": "reason",
-      "申请类型": "type",
-      "客户名称": "customerName",
-      "收货人": "receiverName",
-      "收货地址": "address",
-      "收货人电话": "receiverPhone",
-      "产品数量": "productNum",
-      "实际发出数量": "actualNum",
-      "tableField_products": {
-        "产品名称": "productName",
-        "产品规格": "productSpecs",
-        "有效期": "validityPeriod",
-        "产品批号": "productLot",
-        "包装数量": "quantity"
-      },
-      "tableField_cellLines": {
-        "细胞株名称": "cellLineName",
-        "细胞株类型": "cellLineType",
-        "数量": "quantity",
-        "温度": "temperature",
-        "储存和运输条件": "condition"
-      }
-    }
-  },
-  "KS": {
-    "processCode": "PROC-B5937B5F-7883-4BAD-932A-F54A5113576C",
-    "processCode1": "PROC-89069560-F910-4048-9DC2-8F82DE724F4C",
-    "creator": "proposerCode",
-    "attachmentUrl": {
-      "downloadUrl": "downloadUrl",
-      "name": "name"
-    },
-    "compIds": {
-      "crmId": "crmId",
-      "售后管理": "afterSales",
-      "详情": "issueDescription",
-      "投诉等级": "level",
-      "客户是否要求赔偿": "isNeedCompensation",
-      "赔偿金额(元)": "amount"
-    }
-  }
-}