3 Commits 3909c1babc ... 97a94d634e

Autor SHA1 Mensagem Data
  wzy 97a94d634e Merge branch 'master' of https://mc.cloudpure.cn/mjava/cont 1 semana atrás
  wzy 9071e0abd9 华高看板同步调整 1 semana atrás
  wzy ee99270499 博洋 1 semana atrás

+ 97 - 26
mjava-boyang/src/main/java/com/malk/boyang/service/impl/BoyangServiceImpl.java

@@ -7,9 +7,7 @@ import com.malk.boyang.utils.HTTPHelper;
 import com.malk.server.common.McR;
 import com.malk.server.dingtalk.DDConf;
 import com.malk.server.dingtalk.DDR_New;
-import com.malk.service.dingtalk.DDClient;
-import com.malk.service.dingtalk.DDClient_Storage;
-import com.malk.service.dingtalk.DDClient_Workflow;
+import com.malk.service.dingtalk.*;
 import com.malk.utils.UtilHttp;
 import com.malk.utils.UtilMap;
 import lombok.extern.slf4j.Slf4j;
@@ -20,8 +18,10 @@ import okio.Sink;
 import org.apache.commons.codec.binary.Hex;
 import org.apache.commons.codec.digest.HmacAlgorithms;
 import org.apache.commons.codec.digest.HmacUtils;
+import org.apache.logging.log4j.util.Strings;
 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;
 
 import java.io.*;
@@ -36,9 +36,15 @@ public class BoyangServiceImpl implements BoyangService {
     @Autowired
     private DDClient ddClient;
 
+    @Autowired
+    private DDConf ddConf;
+
     @Autowired
     private DDClient_Workflow ddClient_workflow;
 
+    @Autowired
+    private DDClient_Personnel ddClient_personnel;
+
     @Value("${dingtalk.downloadPath}")
     private String downloadPath;
 
@@ -58,6 +64,7 @@ public class BoyangServiceImpl implements BoyangService {
     final static String projectId = "1000004";// 应用ID
     final static String secret = "96Uh7CR83NkN3TA6";// 应用密钥
     final static String businessTypeCode = "889726e889ab84fea3514748d6df565c";// 钉钉对接测试业务模板
+    final static String organizationCode = "b60a9c18b8cc4ecc80e30f36b4267a68";// 宁波博洋家纺集团有限公司
     final static String host = "http://122.227.225.202:9011/";// 接口调用域名
     final static String intranet_host = "http://11.0.11.62/";// 接口调用域名(内网)
 
@@ -75,6 +82,7 @@ public class BoyangServiceImpl implements BoyangService {
         String remark = "";
         String url = "https://aflow.dingtalk.com/dingtalk/web/query/pchomepage.htm?from=oflow&op=true&corpid=ding76a1e955807327f7f5bf40eda33b7ba0#/plainapproval?procInstId="+processInstanceId;
         List<String> sealTypeCodeList = new ArrayList<>();
+        List<Map> companyList = new ArrayList<>();
 
 
         for (Map formComponentValue : formComponentValues) {
@@ -100,8 +108,8 @@ public class BoyangServiceImpl implements BoyangService {
                     String fileQty = UtilMap.getString(formComponentValue, "value");
                     break;
                 case "DDMultiSelectField_1L3KU3TLX6PS0"://印章所属公司
-                    String companyStr = UtilMap.getString(formComponentValue, "value");
-                    List<Map> companyList = (List<Map>) JSONObject.parse(companyStr);
+                    String companyStr = UtilMap.getString(formComponentValue, "extValue");
+                    companyList = (List<Map>) JSONObject.parse(companyStr);
                     break;
                 case "DDMultiSelectField_1FW3TFDTJ6V40"://印章类型
                     String yzlxStr = UtilMap.getString(formComponentValue, "value");
@@ -150,6 +158,57 @@ public class BoyangServiceImpl implements BoyangService {
             }
         }
 
+        //查询钉钉用户信息
+        String name = "";
+        String mobile = "";
+        String originatorUserId = UtilMap.getString(result, "originatorUserId");
+
+        List<Map> employeeInfos = ddClient_personnel.getEmployeeInfos(ddClient.getAccessToken(), Arrays.asList(originatorUserId), ddConf.getAgentId(), Arrays.asList("sys00-name", "sys00-mobile"));
+        Map employeeInfo = employeeInfos.get(0);
+
+        List<Map> fieldDataList = UtilMap.getList(employeeInfo, "field_data_list");
+
+        for (Map fieldData : fieldDataList) {
+            String fieldCode = UtilMap.getString(fieldData, "field_code");
+            List<Map> fieldValueList = UtilMap.getList(fieldData, "field_value_list");
+
+            switch (fieldCode){
+                case "sys00-name":
+                    name = UtilMap.getString(fieldValueList.get(0),"value");
+                    break;
+                case "sys00-mobile":
+                    mobile = UtilMap.getString(fieldValueList.get(0),"value").replace("+86-","");
+                    break;
+                default:break;
+            }
+        }
+
+        String eqbUserCode = "";
+
+        //查询钉钉用户在e签宝是否存在
+        Map body = new HashMap();
+        body.put("name", name);
+        body.put("mobile", mobile);
+        List<Map> eqbUsers = (List<Map>) eqbPost(host + "manage/v1/innerUsers/detail", body);
+        if (!eqbUsers.isEmpty()){
+            Map eqbUser = eqbUsers.get(0);
+
+            eqbUserCode = UtilMap.getString(eqbUser, "userCode");
+        }else {
+            //新增e签宝用户
+            Map eqbUser = new HashMap();
+            eqbUser.put("name", name);
+            eqbUser.put("mobile", mobile);
+            eqbUser.put("customAccountNo", mobile);
+            eqbUser.put("mainOrganizationCode", organizationCode);//默认组织账号
+
+            Map map1 = (Map) eqbPost(host + "manage/v1/innerUsers/create",Arrays.asList(eqbUser));
+
+            List<Map> successData = UtilMap.getList(map1, "successData");
+
+            eqbUserCode = UtilMap.getString(successData.get(0), "userCode");
+        }
+
         // 创建主Map
         Map<String, Object> requestMap = new HashMap<>();
 
@@ -158,7 +217,7 @@ public class BoyangServiceImpl implements BoyangService {
         requestMap.put("businessNo", processInstanceId);
         requestMap.put("businessTypeCode", businessTypeCode);
         requestMap.put("remark", remark);
-        requestMap.put("redirectUrl", url);
+//        requestMap.put("redirectUrl", url);
 
         // 2. manualConfig 嵌套对象
         Map<String, Object> manualConfig = new HashMap<>();
@@ -174,12 +233,12 @@ public class BoyangServiceImpl implements BoyangService {
 
         // 3. initiatorInfo 嵌套对象
         Map<String, Object> initiatorInfo = new HashMap<>();
-        initiatorInfo.put("userCode", "wozy");
-        initiatorInfo.put("customAccountNo", "");
+        initiatorInfo.put("userCode", eqbUserCode);
+        /*initiatorInfo.put("customAccountNo", "");
         initiatorInfo.put("departmentCode", "");
         initiatorInfo.put("customDepartmentNo", "");
-        initiatorInfo.put("organizationCode", "b60a9c18b8cc4ecc80e30f36b4267a68");
-        initiatorInfo.put("customOrgNo", "");
+        initiatorInfo.put("organizationCode", "");
+        initiatorInfo.put("customOrgNo", "");*/
 
         requestMap.put("initiatorInfo", initiatorInfo);
 
@@ -201,16 +260,19 @@ public class BoyangServiceImpl implements BoyangService {
         // 5. signerInfos 列表
         List<Map<String, Object>> signerInfos = new ArrayList<>();
 
-        Map<String, Object> signer = new HashMap<>();
-        signer.put("userType", "1");
-        signer.put("userCode", "wozy");
-        signer.put("organizationCode", "b60a9c18b8cc4ecc80e30f36b4267a68");
-        signer.put("signNode", 1);
-        signer.put("signMode", "0");
-        signer.put("signOrder", 1);
+        for (int i = 0; i < companyList.size(); i++) {
+            Map<String, Object> signer = new HashMap<>();
+            signer.put("userType", "1");
+            signer.put("userCode", "wangze");
+            signer.put("organizationCode", UtilMap.getString(companyList.get(i),"key"));
+            signer.put("signNode", 1);
+            signer.put("signMode", "0");
+            signer.put("signOrder", i + 1);
 //        signer.put("sealTypeCode", String.join(",",sealTypeCodeList));
 
-        signerInfos.add(signer);
+            signerInfos.add(signer);
+        }
+
         requestMap.put("signerInfos", signerInfos);
 
         // 打印结果(可选)
@@ -228,11 +290,12 @@ public class BoyangServiceImpl implements BoyangService {
 
         String newSigningAreaPageUrl = signingAreaPageUrl.replace(intranet_host,host);
 
-        comment(processInstanceId,"344749020127590108","签署区设置地址:"+newSigningAreaPageUrl,null);
+        comment(processInstanceId,originatorUserId,"签署区设置地址:"+newSigningAreaPageUrl,null);
 
         return McR.success();
     }
 
+    @Async
     @Override
     public void signed(String processInstanceId,String signFlowId) {
         try {
@@ -271,6 +334,10 @@ public class BoyangServiceImpl implements BoyangService {
 
     @Override
     public McR getOrganization(String name) {
+        if (Strings.isBlank(name)){
+            return McR.success(new ArrayList<>());
+        }
+
         Map body = new HashMap();
         body.put("name",name);
         List<Map> data = (List<Map>) eqbPost(host + "manage/v1/innerOrganizations/detail",body);
@@ -278,14 +345,18 @@ public class BoyangServiceImpl implements BoyangService {
         List<Map> options = new ArrayList<>();
 
         for (Map datum : data) {
-            String organizationName = UtilMap.getString(datum, "name");
-            String organizationCode = UtilMap.getString(datum, "organizationCode");
+            String organizationType = UtilMap.getString(datum, "organizationType");
 
-            Map option = new HashMap();
-            option.put("label",organizationName);
-            option.put("value",organizationCode);
+            if ("COMPANY".equals(organizationType)){
+                String organizationName = UtilMap.getString(datum, "name");
+                String organizationCode = UtilMap.getString(datum, "organizationCode");
+
+                Map option = new HashMap();
+                option.put("label",organizationName);
+                option.put("value",organizationCode);
 
-            options.add(option);
+                options.add(option);
+            }
         }
 
         return McR.success(options);
@@ -534,7 +605,7 @@ public class BoyangServiceImpl implements BoyangService {
     }
 
     //e签宝-post请求(application/json)
-    private Object eqbPost(String url,Map body){
+    private Object eqbPost(String url,Object body){
         try {
             // 请求Body体数据
             String reqBodyData = JSONObject.toJSONString(body);

+ 1 - 1
mjava-boyang/src/main/resources/application-dev.yml

@@ -13,7 +13,7 @@ logging:
 
 # dingtalk
 dingtalk:
-  agentId:
+  agentId: 4111300995
   appKey: dingt4kem6twzlqehm58
   appSecret: ZgE_XOfccVlSOcbw3cN0Ad_dJFqBB_PfPPmqJzGTgKXPu5tsh17KibxG7WEB6_hc
   corpId:

+ 46 - 4
mjava-boyang/src/test/java/com/malk/boyang/EqbTest.java

@@ -11,10 +11,7 @@ import java.nio.file.Path;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
 import java.text.MessageFormat;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.UUID;
+import java.util.*;
 
 import com.malk.boyang.service.BoyangService;
 import com.malk.boyang.utils.HTTPHelper;
@@ -543,5 +540,50 @@ public class EqbTest {
         }
     }
 
+    @Test
+    public void test11(){
+        Map eqbUser = new HashMap();
+        eqbUser.put("name", "张三");
+        eqbUser.put("mobile", "15900010001");
+        eqbUser.put("customAccountNo", "15900010001");
+        eqbUser.put("mainOrganizationCode", "b60a9c18b8cc4ecc80e30f36b4267a68");//默认组织账号
+
+        Map map = (Map) eqbPost2(host + "/manage/v1/innerUsers/create", Arrays.asList(eqbUser));
+
+        System.out.println(map);
+    }
+
+
+    //e签宝-post请求(application/json)
+    private Object eqbPost2(String url,Object body){
+        try {
+            // 请求Body体数据
+            String reqBodyData = JSONObject.toJSONString(body);
+
+            // 计算请求签名值
+            String reqSignature = sign(reqBodyData, secret);
+
+            // 构建请求头
+            LinkedHashMap<String, String> header = new LinkedHashMap<>();
+
+            // 构建待签名字符串
+            header.put("X-timevale-project-id", projectId);
+            header.put("X-timevale-signature", reqSignature);
+            header.put("Accept", "*/*");
+            header.put("Content-Type", "application/json; charset=UTF-8");
+
+            String resultStr = HTTPHelper.sendPOST(url, reqBodyData, header, "UTF-8");
+
+            Map result = (Map) JSONObject.parse(resultStr);
+
+
+            Object data = result.get("data");
+
+            return data;
+        }catch (Exception e){
+            throw new RuntimeException(e);
+        }
+    }
+
 
 }

+ 18 - 8
mjava-huagao/src/main/java/com/malk/huagao/service/impl/KdHuaGaoServiceImpl.java

@@ -94,7 +94,7 @@ public class KdHuaGaoServiceImpl implements KdHuaGaoService {
             List<List<String>> formInstanceIdListList = new ArrayList<>();//实例id集合,每100条
 
             DDR_New ddrNew = new DDR_New();
-            int pageSize = 100;
+            int pageSize = 50;
             int pageNumber = 0;
             do {
                 pageNumber++;
@@ -298,7 +298,7 @@ public class KdHuaGaoServiceImpl implements KdHuaGaoService {
             //更新看板更新记录
             ydClient.operateData(YDParam.builder()
                     .formInstId(formInstId)
-                    .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("selectField_mhsjnn2r, dateField_mhsjnn2t", "异常", System.currentTimeMillis())))
+                    .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("selectField_mhsjnn2r, dateField_mhsjnn2t, textareaField_mir0zmpo", "异常", System.currentTimeMillis(),e.getMessage())))
                     .build(), YDConf.FORM_OPERATION.update);
 
             throw new RuntimeException(e);
@@ -332,7 +332,7 @@ public class KdHuaGaoServiceImpl implements KdHuaGaoService {
             List<List<String>> formInstanceIdListList = new ArrayList<>();//实例id集合,每100条
 
             DDR_New ddrNew = new DDR_New();
-            int pageSize = 100;
+            int pageSize = 50;
             int pageNumber = 0;
             do {
                 pageNumber++;
@@ -369,7 +369,7 @@ public class KdHuaGaoServiceImpl implements KdHuaGaoService {
 
             billQuery.setLimit(limit);
             billQuery.setFormId("STK_Inventory");
-            billQuery.setFieldKeys("FMaterialID.FNumber,FMaterialID.FName,FMaterialID.FSpecification,FMaterialID.F_QUXZ_Assistant,FMaterialID.FSTOREURNOM,FMaterialID.FSTOREURNUM,FStockId,FStockId.FName,FLot,FLot.FName,FStockUnitId,FStockUnitId.FName,FBaseQty,FStockStatusId.FName");
+            billQuery.setFieldKeys("FMaterialID.FNumber,FMaterialID.FName,FMaterialID.FSpecification,FMaterialID.F_QUXZ_Assistant,FMaterialID.FSTOREURNOM,FMaterialID.FSTOREURNUM,FMaterialID.FZJ,FStockId,FStockId.FName,FLot,FLot.FName,FStockUnitId,FStockUnitId.FName,FBaseQty,FStockStatusId.FName");
             List<Map> filterString = new ArrayList<>();
             //仓库等于成品仓或组装半成品仓
             filterString.add(UtilMap.map("FieldName, Compare, Value, Left, Right, Logic","FStockName","338","成品仓,组装半成品仓","","","0"));//仓库名称 IN XX
@@ -398,6 +398,7 @@ public class KdHuaGaoServiceImpl implements KdHuaGaoService {
                 String FMaterialName = UtilMap.getString(map,"FMaterialID.FName");//物料名称
                 String FMaterialSpecification = UtilMap.getString(map,"FMaterialID.FSpecification");//物料规格
                 String FQUXZAssistant = Objects.nonNull(map.get("FMaterialID.F_QUXZ_Assistant")) ? UtilMap.getString(map,"FMaterialID.F_QUXZ_Assistant") : "--";//所属系列
+                String Fzj = UtilMap.getString(map,"FMaterialID.FZJ");//组件
                 String FStockName = UtilMap.getString(map,"FStockId.FName");//仓库名称
                 String FLotName = UtilMap.getString(map,"FLot.FName");//批号
                 String FStockUnitName = UtilMap.getString(map,"FStockUnitId.FName");//库存主单位
@@ -407,12 +408,21 @@ public class KdHuaGaoServiceImpl implements KdHuaGaoService {
                 Double FSTOREURNOM = UtilMap.getDouble(map, "FMaterialID.FSTOREURNOM");
                 Double FSTOREURNUM = UtilMap.getDouble(map, "FMaterialID.FSTOREURNUM");
 
+                if ("组装半成品仓".equals(FStockName)){
+                    if (FMaterialName.contains("组件") && !FMaterialName.contains("面板") && !FMaterialName.contains("包装")){
+
+                    }else {
+                        continue;
+                    }
+                }
+
                 Double FQty = FBaseQty * FSTOREURNOM / FSTOREURNUM;//库存量(主单位)
 
                 formData.put("textField_mfarr0ei",FMaterialNumber);
                 formData.put("textField_mfarr0en",FMaterialName);
                 formData.put("textField_mfarr0eo",FMaterialSpecification);
                 formData.put("textField_mflwgj61", FQUXZAssistant);
+                formData.put("textField_mipr1qrc", Fzj);
                 formData.put("textField_mfarr0et",FStockName);
                 formData.put("textField_mfarr0eu",FLotName);
                 formData.put("textField_mfarr0ev",FStockUnitName);
@@ -519,7 +529,7 @@ public class KdHuaGaoServiceImpl implements KdHuaGaoService {
             //更新看板更新记录
             ydClient.operateData(YDParam.builder()
                     .formInstId(formInstId)
-                    .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("selectField_mhsjnn2r, dateField_mhsjnn2t", "异常", System.currentTimeMillis())))
+                    .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("selectField_mhsjnn2r, dateField_mhsjnn2t, textareaField_mir0zmpo", "异常", System.currentTimeMillis(),e.getMessage())))
                     .build(), YDConf.FORM_OPERATION.update);
 
             throw new RuntimeException(e);
@@ -627,7 +637,7 @@ public class KdHuaGaoServiceImpl implements KdHuaGaoService {
             //更新看板更新记录
             ydClient.operateData(YDParam.builder()
                     .formInstId(formInstId)
-                    .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("selectField_mhsjnn2r, dateField_mhsjnn2t", "异常", System.currentTimeMillis())))
+                    .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("selectField_mhsjnn2r, dateField_mhsjnn2t, textareaField_mir0zmpo", "异常", System.currentTimeMillis(),e.getMessage())))
                     .build(), YDConf.FORM_OPERATION.update);
 
             throw new RuntimeException(e);
@@ -775,7 +785,7 @@ public class KdHuaGaoServiceImpl implements KdHuaGaoService {
     public void syncDLVNotice(String userId) {
         MDC.put("MDC_KEY_PID","1002");
 
-        log.info("开始同步生产退料明细");
+        log.info("开始同步发货通知单");
 
         //创建看板更新记录
         if (Strings.isBlank(userId)){
@@ -900,7 +910,7 @@ public class KdHuaGaoServiceImpl implements KdHuaGaoService {
             //更新看板更新记录
             ydClient.operateData(YDParam.builder()
                     .formInstId(formInstId)
-                    .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("selectField_mhsjnn2r, dateField_mhsjnn2t", "异常", System.currentTimeMillis())))
+                    .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("selectField_mhsjnn2r, dateField_mhsjnn2t, textareaField_mir0zmpo", "异常", System.currentTimeMillis(),e.getMessage())))
                     .build(), YDConf.FORM_OPERATION.update);
 
             throw new RuntimeException(e);