ソースを参照

特充oa审批单推送到宜搭 初始化项目key、secret

wzy 11 ヶ月 前
コミット
659e30bd67

+ 1 - 1
mjava-kabeiyi/pom.xml

@@ -38,7 +38,7 @@
         <dependency>
             <groupId>com.malk</groupId>
             <artifactId>base</artifactId>
-            <version>1.0-SNAPSHOT</version>
+            <version>1.1-SNAPSHOT</version>
         </dependency>
 
         <!--<dependency>-->

+ 5 - 2
mjava-kabeiyi/src/main/java/com/malk/kabeiyi/config/StartupRunner.java

@@ -1,5 +1,7 @@
 package com.malk.kabeiyi.config;
 
+import com.malk.kabeiyi.service.McProjectService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.ApplicationArguments;
 import org.springframework.boot.ApplicationRunner;
 import org.springframework.stereotype.Component;
@@ -7,9 +9,10 @@ import org.springframework.stereotype.Component;
 @Component
 public class StartupRunner implements ApplicationRunner {
 
-
+    @Autowired
+    private McProjectService mcProjectService;
     @Override
     public void run(ApplicationArguments args) throws Exception {
-
+        mcProjectService.init();
     }
 }

+ 7 - 1
mjava-kabeiyi/src/main/java/com/malk/kabeiyi/controller/KabeiyiController.java

@@ -61,11 +61,17 @@ public class KabeiyiController {
 
     }
 
-    //审批实例推送到宜搭
+    //审批实例推送到宜搭(卡倍亿)
     @PostMapping("pushProcInstToYD")
     public McR pushProcInstToYD(@RequestBody Map map){
         return kabeiyiService.pushProcInstToYD(map);
     }
 
+    //审批实例推送到宜搭(特充)
+    @PostMapping("pushProcInstToYD2")
+    public McR pushProcInstToYD2(@RequestBody Map map){
+        return kabeiyiService.pushProcInstToYD2(map);
+    }
+
 
 }

+ 7 - 1
mjava-kabeiyi/src/main/java/com/malk/kabeiyi/service/KabeiyiService.java

@@ -15,10 +15,16 @@ public interface KabeiyiService {
     McR addPayment(Map map);
 
     /**
-     * 审批实例推送到宜搭
+     * 审批实例推送到宜搭(卡倍亿)
      * @param map
      * @return
      */
     McR pushProcInstToYD(Map map);
 
+    /**
+     * 审批实例推送到宜搭(特充)
+     * @param map
+     * @return
+     */
+    McR pushProcInstToYD2(Map map);
 }

+ 7 - 0
mjava-kabeiyi/src/main/java/com/malk/kabeiyi/service/McProjectService.java

@@ -0,0 +1,7 @@
+package com.malk.kabeiyi.service;
+
+public interface McProjectService {
+
+    void init();
+
+}

+ 150 - 7
mjava-kabeiyi/src/main/java/com/malk/kabeiyi/service/impl/KabeiyiServiceImpl.java

@@ -7,11 +7,18 @@ import com.malk.kabeiyi.util.U8Util;
 import com.malk.server.aliwork.YDConf;
 import com.malk.server.aliwork.YDParam;
 import com.malk.server.common.McR;
+import com.malk.server.dingtalk.DDConf;
+import com.malk.server.dingtalk.DDR;
 import com.malk.service.aliwork.YDService;
 import com.malk.service.dingtalk.DDClient;
 import com.malk.service.dingtalk.DDClient_Workflow;
 import com.malk.utils.UtilHttp;
+import com.malk.utils.UtilToken;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.MDC;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
@@ -20,6 +27,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 
+@Slf4j
 @Service
 public class KabeiyiServiceImpl implements KabeiyiService {
     @Autowired
@@ -31,15 +39,27 @@ public class KabeiyiServiceImpl implements KabeiyiService {
     @Autowired
     private YDService ydService;
 
-    //审批实例url前缀
-    private static final String PROC_INST_PREFIX_URL = "https://aflow.dingtalk.com/dingtalk/web/query/pchomepage.htm?from=oflow&op=true&corpid=dingc3a744cb591a7346f2c783f7214b6d69#/plainapproval?procInstId=";
+    @Autowired
+    private DDConf ddConf;
 
-    //宜搭-关联数据表
-    private static final String RELATION = "FORM-230C40137ED94524B4D4C94F8B23A8D2F8PF";
+    @Value("${tcdingtalk.appKey}")
+    private String appKey;
 
-    private static final Map<String,String> SCHEMA_MAP = new HashMap<>();
+    @Value("${tcdingtalk.appSecret}")
+    private String appSecret;
+
+    //审批实例url前缀(卡倍亿)
+    private static final String PROC_INST_PREFIX_URL = "https://aflow.dingtalk.com/dingtalk/web/query/pchomepage.htm?from=oflow&op=true&corpid=dingc3a744cb591a7346f2c783f7214b6d69#/plainapproval?procInstId=";
+    //宜搭-关联数据(卡倍亿)
+    private static final String RELATION = "FORM-230C40137ED94524B4D4C94F8B23A8D2F8PF";
 
+    //审批实例url前缀(特充)
+    private static final String PROC_INST_PREFIX_URL2 = "https://aflow.dingtalk.com/dingtalk/web/query/pchomepage.htm?from=oflow&op=true&corpid=ding3ea249a3b5b466d0f2c783f7214b6d69#/plainapproval?procInstId=";
+    //宜搭-关联数据(特充)
+    private static final String RELATION2 = "FORM-51E17EFB52C14C9CB9E00168FED2BC18LQ6H";
 
+    //关联表单(卡倍亿)
+    private static final Map<String,String> SCHEMA_MAP = new HashMap<>();
     static{
         SCHEMA_MAP.put("工厂用章流程","1.1、工厂用章流程(除采购营销人事)");
         SCHEMA_MAP.put("中心用章流程","1.2、中心用章流程(除采购营销人事)");
@@ -47,7 +67,6 @@ public class KabeiyiServiceImpl implements KabeiyiService {
         SCHEMA_MAP.put("商务部用章申请流程","1.4、商务部用章申请流程");
         SCHEMA_MAP.put("办公用品采购申请流程","4.3、办公用品采购申请流程");
 
-
         //需传其他值
         //对方单位名称 收入或支出 金额 备注
         SCHEMA_MAP.put("信息化建设用章流程","1.7、信息化建设用章流程");
@@ -59,8 +78,26 @@ public class KabeiyiServiceImpl implements KabeiyiService {
         SCHEMA_MAP.put("设备采购合同审批流程","4.5c、设备采购合同审批流程");
         SCHEMA_MAP.put("原材料采购合同审批流程","4.9b、原材料采购合同审批流程");
         SCHEMA_MAP.put("墨西哥采购合同审批流程","4.13b、墨西哥采购合同审批流程");
+    }
 
+    //关联表单(特充)
+    private static final Map<String,String> SCHEMA_MAP2 = new HashMap<>();
+    static{
+        //需传其他值
+        //对方单位名称 收入或支出 金额 备注
+        SCHEMA_MAP2.put("特充用章流程","1.2、特充用章流程(除采购营销人事)");
+
+        //合同总金额 合同说明
+        SCHEMA_MAP2.put("设备备品备件采购合同审批流程","4.1b、设备备品备件采购合同审批流程");
+        SCHEMA_MAP2.put("其他物品采购合同流程","4.2b、其他物品采购合同流程");
+        SCHEMA_MAP2.put("母排设备采购合同审批流程","4.5c、母排设备采购合同审批流程");
+        SCHEMA_MAP2.put("双铝设备采购合同审批流程","4.6c、双铝设备采购合同审批流程");
 
+        //合同总金额
+        SCHEMA_MAP2.put("原材料采购合同审批流程","4.9b、原材料采购合同审批流程");
+
+        //文件类别 对方单位名称 收入或支出 金额 用印文件名称 文件份数 加盖何种印章 备注
+        SCHEMA_MAP2.put("信息化建设用章流程","1.7、信息化建设用章流程");
     }
 
     @Override
@@ -82,6 +119,8 @@ public class KabeiyiServiceImpl implements KabeiyiService {
 
     @Override
     public McR pushProcInstToYD(Map map) {
+        MDC.put("MDC_KEY_PID","1002");
+
         //审批实例
         String procInstId = String.valueOf(map.get("procInstId"));
         //获取审批实例信息
@@ -98,7 +137,7 @@ public class KabeiyiServiceImpl implements KabeiyiService {
                         case "1.7、信息化建设用章流程" :
                             for (Map formComponentValue : formComponentValues) {
                                 String name = String.valueOf(formComponentValue.get("name"));
-                                String value = String.valueOf(formComponentValue.get("value"));
+                                String value = String.valueOf(formComponentValue.get("value")).equals("null") ? "" : String.valueOf(formComponentValue.get("value"));
                                 switch (name){
                                     case "对方单位名称" : formData.put("textField_lygzlf3j",value);break;
                                     case "收入或支出" : formData.put("textField_lygzlf3k",value);break;
@@ -157,4 +196,108 @@ public class KabeiyiServiceImpl implements KabeiyiService {
 
         return McR.errorParam("审批实例不存在!");
     }
+
+    @Override
+    public McR pushProcInstToYD2(Map map) {
+        MDC.put("MDC_KEY_PID","1003");
+
+        //审批实例
+        String procInstId = String.valueOf(map.get("procInstId"));
+        //获取审批实例信息
+        Map processInstance = ddClient_workflow.getProcessInstanceId(getTcAccessToken(), procInstId);
+        if (Objects.nonNull(processInstance)){
+            Map formData = new HashMap<>();
+            String title = String.valueOf(processInstance.get("title"));
+            String type = "";
+            List<Map> formComponentValues = (List<Map>) processInstance.get("formComponentValues");
+            for (String key : SCHEMA_MAP2.keySet()) {
+                if (title.contains(key)){
+                    type = SCHEMA_MAP2.get(key);
+                    switch (type){
+                        case "1.7、信息化建设用章流程" :
+                            for (Map formComponentValue : formComponentValues) {
+                                String name = String.valueOf(formComponentValue.get("name"));
+                                Object value = formComponentValue.get("value");
+                                switch (name){
+                                    case "文件类别" : formData.put("textField_lymfq9oa",value);break;
+                                    case "对方单位名称" : formData.put("textField_lygzlf3j",value);break;
+                                    case "收入或支出" : formData.put("textField_lygzlf3k",value);break;
+                                    case "金额(元)" : formData.put("textField_lygzlf3l",value);break;
+                                    case "用印文件名称" : formData.put("textField_lymfq9oc",value);break;
+                                    case "文件份数" : formData.put("numberField_lymfq9od",value);break;
+                                    case "加盖何种印章" : formData.put("textField_lymfq9oe",value);break;
+                                    case "备注" : formData.put("textField_lygzlf3m",value);break;
+                                }
+                            }
+                            break;
+
+                        case "4.1b、设备备品备件采购合同审批流程" :
+                        case "4.2b、其他物品采购合同流程" :
+                        case "4.5c、母排设备采购合同审批流程" :
+                        case "4.6c、双铝设备采购合同审批流程" :
+                        case "4.9b、原材料采购合同审批流程" :
+                            for (Map formComponentValue : formComponentValues) {
+                                String name = String.valueOf(formComponentValue.get("name"));
+                                switch (name){
+                                    case "合同总金额(元)":
+                                    case "合同总金额" : formData.put("numberField_lyf81587",formComponentValue.get("value"));break;
+                                    case "合同说明" :
+                                        if (Objects.nonNull(formComponentValue.get("value"))){
+                                            formData.put("textField_lyf81588",formComponentValue.get("value"));
+                                        }
+                                        break;
+                                }
+                            }
+                            break;
+                        case "1.2、特充用章流程(除采购营销人事)" :
+                            for (Map formComponentValue : formComponentValues) {
+                                String name = String.valueOf(formComponentValue.get("name"));
+                                String value = String.valueOf(formComponentValue.get("value")).equals("null") ? "" : String.valueOf(formComponentValue.get("value"));
+                                switch (name){
+                                    case "对方单位名称" : formData.put("textField_lygzlf3j",value);break;
+                                    case "收入或支出" : formData.put("textField_lygzlf3k",value);break;
+                                    case "金额(元)" : formData.put("textField_lygzlf3l",value);break;
+                                    case "备注" : formData.put("textField_lygzlf3m",value);break;
+                                }
+                            }
+                            break;
+                        default:
+                            break;
+                    }
+
+                    formData.put("textField_lyf8157x",title);
+                    formData.put("selectField_lyf81580",type);
+
+                    Map condition = new HashMap<>();
+                    condition.put("textField_lyf81581",PROC_INST_PREFIX_URL2 + procInstId);
+
+
+                    //同步到宜搭
+                    ydService.upsertFormData(RELATION2,condition,formData,null);
+
+                    break;
+                }
+            }
+            return McR.success();
+        }
+
+        return McR.errorParam("审批实例不存在!");
+    }
+
+    public String getTcAccessToken() {
+        String accessToken = UtilToken.get("tc-invalid-token-dingtalk");
+        if (StringUtils.isNotBlank(accessToken)) {
+            return accessToken;
+        } else {
+            Map param = new HashMap();
+            param.put("appkey", appKey);
+            param.put("appsecret", appSecret);
+            DDR r = (DDR)UtilHttp.doGet("https://oapi.dingtalk.com/gettoken", param, DDR.class);
+            log.info("特充响应token, {}", r.getAccessToken());
+            accessToken = r.getAccessToken();
+            UtilToken.put("tc-invalid-token-dingtalk", accessToken, (long)r.getExpiresIn() * 1000L);
+            return accessToken;
+        }
+
+    }
 }

+ 35 - 0
mjava-kabeiyi/src/main/java/com/malk/kabeiyi/service/impl/McProjectServiceImpl.java

@@ -0,0 +1,35 @@
+package com.malk.kabeiyi.service.impl;
+
+import com.malk.core.McProject;
+
+import com.malk.kabeiyi.service.McProjectService;
+import com.malk.server.aliwork.YDConf;
+import com.malk.server.aliwork.YDParam;
+import com.malk.server.dingtalk.DDR_New;
+import com.malk.service.aliwork.YDClient;
+import com.malk.utils.UtilMap;
+import lombok.extern.slf4j.Slf4j;
+import org.slf4j.MDC;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Slf4j
+@Service
+public class McProjectServiceImpl implements McProjectService {
+
+    @Autowired
+    private YDClient ydClient;
+
+    @Override
+    public void init() {
+        MDC.put("MDC_KEY_PID","1002");
+        McProject.addYida("1002",new String[] {"APP_YNE2466O27IZFF9VVLQ1","T6666H71IOAMFEZR9I4O08U8TWJL2VAACWWXLJ4"});
+        McProject.addYida("1003",new String[] {"APP_CRSI2VXGJE74J60OEFPD","C1A66XB1JOAMVXWCE3H28B05EU7T2F3AM4XXLN3"});
+
+        log.info("项目加载完毕:1002,1003");
+    }
+}

+ 12 - 4
mjava-kabeiyi/src/main/resources/application-dev.yml

@@ -29,7 +29,7 @@ mybatis-plus:
 
 
 
-# dingtalk
+# dingtalk 卡倍亿
 dingtalk:
   agentId: 3100597392
   appKey: dingps8yzze1gbztpmhg
@@ -37,6 +37,14 @@ dingtalk:
   corpId:
   aesKey:
   token:
+#特充
+tcdingtalk:
+  agentId: 3163661041
+  appKey: dinghvpbsfg9w61jr1ty
+  appSecret: JuEoHeci_fGtR2Yf_JyRvp3tTbPDFsaW6ZvudCIgYf8naHyoO0DYJyHv8lfn9HGz
+  corpId:
+  aesKey:
+  token:
 
 # teambition
 teambition:
@@ -44,8 +52,8 @@ teambition:
   AppSecret:
   TenantId:
   OperatorId:    # 公共账号, 需要有操作权限 [牧语]
-# aliwork
+# aliwork mc
 aliwork:
-  appType: APP_YNE2466O27IZFF9VVLQ1
-  systemToken: T6666H71IOAMFEZR9I4O08U8TWJL2VAACWWXLJ4
+  appType: APP_HZ5V1PF2YGBIUCIYOSI5
+  systemToken: DIC66I91HJ3MWKL3FAQ5UD46GIR129PR66KXLA
 

+ 19 - 20
mjava-kabeiyi/src/main/resources/application-prod.yml

@@ -23,29 +23,28 @@ mybatis-plus:
     map-underscore-to-camel-case: true
     #开启日志打印
     log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
-  type-aliases-package: com.malk.shantai.entity
+  type-aliases-package: com.malk.kabeiyi.entity
   #扫描mapper文件
   mapper-locations: classpath:mapper/*.xml
 
 
 
-# dingtalk
+# dingtalk 卡倍亿
 dingtalk:
-  agentId: 3088485347
-  appKey: dingryt7ulefpiziveoj
-  appSecret: qBdVqoK1UP9J3yN0ulaKuBmse4nrZPfNbVxjLGjaODGoRqbtws0__f3A5GpD5bLz
-  corpId: ding2c2e3f1dbf2b3ffebc961a6cb783455b
-  aesKey: uCSTfCFVU18QJjECfZTBWyC9mi10qqY1Spuqjl4ghct
-  token: Adib7WsRXHYrLGkOAUNcgl6gLY9nBIIaeprkhfmxGg6ca6atYWWKDkuE
-
-  #poc
-  #agentId: 2995824312
-  #appKey: ding3ap1jk1tg44tz3s2
-  #appSecret: PaWTDG-FiX-RW5fnV9r8CzEmR-9QlJpubC88txhprL_Z_iREO62B-iRW6w7gkA_K
-  #corpId: ding321c72787fffc78b35c2f4657eb6378f
-  #aesKey: LSIc7r5uHAP0dd6v23J3LWRmjECMNzbkIcxAwdx63RE
-  #token: yqXHMHaK4oHYvjyQshU4zFqgrHFq7PcBxVSqGo1BAQk0
-
+  agentId: 3100597392
+  appKey: dingps8yzze1gbztpmhg
+  appSecret: pMSmfhnmqwRSUF35TDTSPg42muARAwy2Qpjfs16N5nFlJlWpSUHQfi3LpNlrzFJu
+  corpId:
+  aesKey:
+  token:
+#特充
+tcdingtalk:
+  agentId: 3163661041
+  appKey: dinghvpbsfg9w61jr1ty
+  appSecret: JuEoHeci_fGtR2Yf_JyRvp3tTbPDFsaW6ZvudCIgYf8naHyoO0DYJyHv8lfn9HGz
+  corpId:
+  aesKey:
+  token:
 
 # teambition
 teambition:
@@ -53,8 +52,8 @@ teambition:
   AppSecret:
   TenantId:
   OperatorId:    # 公共账号, 需要有操作权限 [牧语]
-# aliwork
+# aliwork mc
 aliwork:
-  appType:
-  systemToken:
+  appType: APP_HZ5V1PF2YGBIUCIYOSI5
+  systemToken: DIC66I91HJ3MWKL3FAQ5UD46GIR129PR66KXLA
 

+ 1 - 1
mjava-kabeiyi/src/main/resources/application.yml

@@ -1,6 +1,6 @@
 spring:
   profiles:
-    active: dev
+    active: prod
   servlet:
     multipart:
       max-file-size: 100MB