소스 검색

oa审批单推送到宜搭

wzy 11 달 전
부모
커밋
9de4632f63

+ 23 - 4
mjava-kabeiyi/src/main/java/com/malk/kabeiyi/controller/KabeiyiController.java

@@ -1,5 +1,6 @@
 package com.malk.kabeiyi.controller;
 
+import com.malk.kabeiyi.service.KabeiyiService;
 import com.malk.server.common.McR;
 import com.malk.service.dingtalk.DDClient;
 import com.malk.service.dingtalk.DDClient_Workflow;
@@ -7,9 +8,7 @@ import com.malk.utils.UtilDateTime;
 import com.malk.utils.UtilMap;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.time.LocalDateTime;
 import java.util.*;
@@ -24,6 +23,13 @@ public class KabeiyiController {
     @Autowired
     private DDClient_Workflow ddClient_workflow;
 
+    @Autowired
+    private KabeiyiService kabeiyiService;
+
+    //审批实例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=";
+
+
     @GetMapping("getList")
     public McR getList(String pid,String procCode,String nextToken){
         LocalDateTime now=LocalDateTime.now();
@@ -40,7 +46,7 @@ public class KabeiyiController {
             Map detail=ddClient_workflow.getProcessInstanceId(ddClient.getAccessToken(),id);
             if("agree".equals(String.valueOf(detail.get("result")))){
                 Map dd=new HashMap();
-                dd.put("url","https://aflow.dingtalk.com/dingtalk/web/query/pchomepage.htm?from=oflow&op=true&corpid=dingc3a744cb591a7346f2c783f7214b6d69#/plainapproval?procInstId="+id);
+                dd.put("url",PROC_INST_PREFIX_URL + id);
                 dd.put("title",detail.get("title"));
                 dd.put("businessId",detail.get("businessId"));
                 result.add(dd);
@@ -48,5 +54,18 @@ public class KabeiyiController {
         }
         return McR.success(UtilMap.map("data, nextToken",result,rsp.get("nextToken")));
     }
+    //新增一张付款单
+    @PostMapping("addPayment")
+    public McR addPayment(@RequestBody Map map){
+        return kabeiyiService.addPayment(map);
+
+    }
+
+    //审批实例推送到宜搭
+    @PostMapping("pushProcInstToYD")
+    public McR pushProcInstToYD(@RequestBody Map map){
+        return kabeiyiService.pushProcInstToYD(map);
+    }
+
 
 }

+ 24 - 0
mjava-kabeiyi/src/main/java/com/malk/kabeiyi/service/KabeiyiService.java

@@ -0,0 +1,24 @@
+package com.malk.kabeiyi.service;
+
+import com.malk.server.common.McR;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+
+public interface KabeiyiService {
+    /**
+     * 新增付款单
+     * @param map
+     * @return
+     */
+    McR addPayment(Map map);
+
+    /**
+     * 审批实例推送到宜搭
+     * @param map
+     * @return
+     */
+    McR pushProcInstToYD(Map map);
+
+}

+ 160 - 0
mjava-kabeiyi/src/main/java/com/malk/kabeiyi/service/impl/KabeiyiServiceImpl.java

@@ -0,0 +1,160 @@
+package com.malk.kabeiyi.service.impl;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.malk.kabeiyi.service.KabeiyiService;
+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.service.aliwork.YDService;
+import com.malk.service.dingtalk.DDClient;
+import com.malk.service.dingtalk.DDClient_Workflow;
+import com.malk.utils.UtilHttp;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+@Service
+public class KabeiyiServiceImpl implements KabeiyiService {
+    @Autowired
+    private DDClient_Workflow ddClient_workflow;
+
+    @Autowired
+    private DDClient ddClient;
+
+    @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=";
+
+    //宜搭-关联数据表
+    private static final String RELATION = "FORM-230C40137ED94524B4D4C94F8B23A8D2F8PF";
+
+    private static final Map<String,String> SCHEMA_MAP = new HashMap<>();
+
+
+    static{
+        SCHEMA_MAP.put("工厂用章流程","1.1、工厂用章流程(除采购营销人事)");
+        SCHEMA_MAP.put("中心用章流程","1.2、中心用章流程(除采购营销人事)");
+        SCHEMA_MAP.put("人事专用用章审批流程","1.3、人事专用用章审批流程");
+        SCHEMA_MAP.put("商务部用章申请流程","1.4、商务部用章申请流程");
+        SCHEMA_MAP.put("办公用品采购申请流程","4.3、办公用品采购申请流程");
+
+
+        //需传其他值
+        //对方单位名称 收入或支出 金额 备注
+        SCHEMA_MAP.put("信息化建设用章流程","1.7、信息化建设用章流程");
+        //合同说明 采购物品类型
+        SCHEMA_MAP.put("技术中心请购审批流程","4.10、技术中心请购审批流程");
+        //合同总金额 合同说明
+        SCHEMA_MAP.put("设备备品备件采购合同审批流程","4.1b、设备备品备件采购合同审批流程");
+        SCHEMA_MAP.put("其他物品采购合同流程","4.2b、其他物品采购合同流程");
+        SCHEMA_MAP.put("设备采购合同审批流程","4.5c、设备采购合同审批流程");
+        SCHEMA_MAP.put("原材料采购合同审批流程","4.9b、原材料采购合同审批流程");
+        SCHEMA_MAP.put("墨西哥采购合同审批流程","4.13b、墨西哥采购合同审批流程");
+
+
+    }
+
+    @Override
+    public McR addPayment(Map map) {
+        try {
+            String tradeid = U8Util.getTradeid();
+
+            map.put("tradeid",tradeid);
+
+
+            U8Util.sendPost(map,"https://api.yonyouup.com/api/voucher/add","voucher");
+
+        }catch (Exception e) {
+            return McR.errorUnknown(e.getMessage());
+        }
+
+        return McR.success();
+    }
+
+    @Override
+    public McR pushProcInstToYD(Map map) {
+        //审批实例
+        String procInstId = String.valueOf(map.get("procInstId"));
+        //获取审批实例信息
+        Map processInstance = ddClient_workflow.getProcessInstanceId(ddClient.getAccessToken(), 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_MAP.keySet()) {
+                if (title.contains(key)){
+                    type = SCHEMA_MAP.get(key);
+                    switch (type){
+                        case "1.7、信息化建设用章流程" :
+                            for (Map formComponentValue : formComponentValues) {
+                                String name = String.valueOf(formComponentValue.get("name"));
+                                String value = 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;
+                        case "4.1b、设备备品备件采购合同审批流程" :
+                        case "4.2b、其他物品采购合同流程" :
+                        case "4.5c、设备采购合同审批流程" :
+                        case "4.9b、原材料采购合同审批流程" :
+                        case "4.13b、墨西哥采购合同审批流程" :
+                            for (Map formComponentValue : formComponentValues) {
+                                String name = String.valueOf(formComponentValue.get("name"));
+                                switch (name){
+                                    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 "4.10、技术中心请购审批流程" :
+                            for (Map formComponentValue : formComponentValues) {
+                                String name = String.valueOf(formComponentValue.get("name"));
+                                switch (name){
+                                    case "采购物品类型" : formData.put("textField_lyibvb98",formComponentValue.get("value"));break;
+                                    case "合同说明" :
+                                        if (Objects.nonNull(formComponentValue.get("value"))){
+                                            formData.put("textField_lyf81588",formComponentValue.get("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_URL + procInstId);
+                    //同步到宜搭
+                    ydService.upsertFormData(RELATION,condition,formData,null);
+
+                    break;
+                }
+            }
+            return McR.success();
+        }
+
+        return McR.errorParam("审批实例不存在!");
+    }
+}

+ 3 - 1
mjava-kabeiyi/src/main/java/com/malk/kabeiyi/util/U8Util.java

@@ -3,6 +3,8 @@ package com.malk.kabeiyi.util;
 import cn.hutool.http.HttpUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.malk.server.common.McR;
+import com.malk.server.common.VenR;
+import com.malk.utils.UtilHttp;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.RandomStringUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -87,7 +89,7 @@ public class U8Util {
         data.put("token", APP_TOKEN);
         if(paramMap.containsKey("tradeid")){
             data.put("tradeid", paramMap.get("tradeid"));
-            data.put("sync","1");// 0=异步新增(默认);1=同步新增;
+            data.put("sync",1);// 0=异步新增(默认);1=同步新增;
             paramMap.remove("tradeid");
         }
         Map bodyMap=new HashMap();

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

@@ -46,6 +46,6 @@ teambition:
   OperatorId:    # 公共账号, 需要有操作权限 [牧语]
 # aliwork
 aliwork:
-  appType: APP_MOIYIC856NRIBCMXEXVD
-  systemToken: G9666BC1BUHLKS20E7YQRATFDE4F39EOK5QWL06
+  appType: APP_YNE2466O27IZFF9VVLQ1
+  systemToken: T6666H71IOAMFEZR9I4O08U8TWJL2VAACWWXLJ4
 

+ 19 - 5
mjava-kabeiyi/src/test/java/com/malk/kabeiyi/DdTest.java

@@ -1,5 +1,6 @@
 package com.malk.kabeiyi;
 
+import com.malk.kabeiyi.service.KabeiyiService;
 import com.malk.service.dingtalk.DDClient;
 import com.malk.service.dingtalk.DDClient_Workflow;
 import com.malk.utils.UtilDateTime;
@@ -11,10 +12,7 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
 import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 @Slf4j
 @SpringBootTest
@@ -28,6 +26,9 @@ public class DdTest {
     @Autowired
     private DDClient_Workflow ddClient_workflow;
 
+    @Autowired
+    private KabeiyiService kabeiyiService;
+
 
     @Test
     public void test(){
@@ -35,7 +36,11 @@ public class DdTest {
         Map data=new HashMap();
         data.put("maxResults",10);
         data.put("nextToken",0);
-        Map rsp=ddClient_workflow.getInstanceIds(ddClient.getAccessToken(),"PROC-AD06D122-828A-40A5-8EDC-94BB246B59D2",
+        data.put("statuses", Arrays.asList("COMPLETED"));
+        String processCode = "PROC-34A203FD-7EDC-45ED-B081-820250801B44";//1.1、工厂用章流程(除采购营销人事)
+//        String processCode = "PROC-AD06D122-828A-40A5-8EDC-94BB246B59D2";
+
+        Map rsp=ddClient_workflow.getInstanceIds(ddClient.getAccessToken(),processCode,
                 UtilDateTime.getLocalDateTimeTimeStamp(now.minusDays(120)),UtilDateTime.getLocalDateTimeTimeStamp(now),data);
         List<String> list=(List)rsp.get("list");
         List result=new ArrayList();
@@ -44,4 +49,13 @@ public class DdTest {
         }
         log.info("result:{}",result);
     }
+
+
+    @Test
+    public void test2(){
+        Map map = new HashMap<>();
+        map.put("procInstId","gl7nXvi4TLebPjFW2oqmrA05771720664838");
+        kabeiyiService.pushProcInstToYD(map);
+
+    }
 }