Przeglądaj źródła

Merge branch 'master' of https://mc.cloudpure.cn/mjava/cont

hxx 8 miesięcy temu
rodzic
commit
d8352bf6d5

+ 6 - 3
mjava-kabeiyi/src/main/java/com/malk/kabeiyi/controller/KabeiyiController.java

@@ -35,7 +35,10 @@ public class KabeiyiController {
 
 
     //审批实例url前缀
     //审批实例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 PROC_INST_PREFIX_URL = "https://aflow.dingtalk.com/dingtalk/web/query/pchomepage.htm?from=oflow&op=true&corpid=dingc3a744cb591a7346f2c783f7214b6d69#/plainapproval?procInstId=";
-
+    @GetMapping("test")
+    public McR test(){
+        return McR.success();
+    }
 
 
     @GetMapping("getList")
     @GetMapping("getList")
     public McR getList(String pid,String procCode,String nextToken){
     public McR getList(String pid,String procCode,String nextToken){
@@ -109,11 +112,11 @@ public class KabeiyiController {
     private YDClient ydClient;
     private YDClient ydClient;
     @GetMapping("deleteAllData")
     @GetMapping("deleteAllData")
     public McR deleteAllData(){
     public McR deleteAllData(){
-        MDC.put("MDC_KEY_PID","1009");
+        MDC.put("MDC_KEY_PID","1019");
         DDR_New ddrNew;
         DDR_New ddrNew;
         int pageNumber = 1;
         int pageNumber = 1;
         int pageSize = 100;
         int pageSize = 100;
-        String formUuid = "FORM-BE542784AAC04206BD46AF3D9CD1F12DYSKF";
+        String formUuid = "FORM-809458EB6D524CF5AE1A91A3492D8B1BZIMN";
         List<String> errorList = new ArrayList<>();
         List<String> errorList = new ArrayList<>();
         do {
         do {
             ddrNew = ydClient.queryData(YDParam.builder()
             ddrNew = ydClient.queryData(YDParam.builder()

+ 59 - 15
mjava-kabeiyi/src/main/java/com/malk/kabeiyi/service/impl/KabeiyiServiceImpl.java

@@ -603,17 +603,20 @@ public class KabeiyiServiceImpl implements KabeiyiService {
             String factoryName = getString(formData.get("textField_m1fvucmd"));//工厂名称
             String factoryName = getString(formData.get("textField_m1fvucmd"));//工厂名称
             factory.put(dqNumber,factoryName);
             factory.put(dqNumber,factoryName);
         }
         }
+        List<Map> errorList = new ArrayList<>();
 
 
-        for (Integer dsSequence : factory.keySet()) {
-            //同步当月内的数据 upsert
-            DateTime dateTime = DateUtil.offsetDay(new Date(), -1);
-            String yesterday = dateTime.toString("yyyy-MM-dd");
+        //同步当月内的数据 upsert
+        DateTime dateTime = DateUtil.offsetDay(new Date(), -1);
+        String yesterday = dateTime.toString("yyyy-MM-dd");
+
+        DateTime beginOfMonth = DateUtil.beginOfMonth(DateUtil.lastMonth());
+        String beginOfMonthString = beginOfMonth.toString("yyyy-MM-dd");
 
 
-            DateTime beginOfMonth = DateUtil.beginOfMonth(DateUtil.lastMonth());
-            String beginOfMonthString = beginOfMonth.toString("yyyy-MM-dd");
-//            String beginOfMonthString = "2024-10-07";
+/*        String beginOfMonthString = "2024-10-09";
 
 
-//            String yesterday = "2024-10-07";
+        String yesterday = "2024-10-09";*/
+        for (Integer dsSequence : factory.keySet()) {
+            List<String> errorCodes = new ArrayList<>();
 
 
             Map<String,Object> param = new HashMap<>();
             Map<String,Object> param = new HashMap<>();
             param.put("from_account",fromAccount);
             param.put("from_account",fromAccount);
@@ -628,7 +631,7 @@ public class KabeiyiServiceImpl implements KabeiyiService {
 
 
             Map<String, Object> map = get("https://api.yonyouup.com/api/consignmentlist/batch_get", param, null);
             Map<String, Object> map = get("https://api.yonyouup.com/api/consignmentlist/batch_get", param, null);
             if (!getString(map.get("errcode")).equals("0")){
             if (!getString(map.get("errcode")).equals("0")){
-                log.error("获取发货单失败:{}",map.get("errmsg"));
+                log.error("获取发货单列表失败:{}",map.get("errmsg"));
                 continue;
                 continue;
             }
             }
             if (!map.get("page_count").equals("1")){
             if (!map.get("page_count").equals("1")){
@@ -637,6 +640,7 @@ public class KabeiyiServiceImpl implements KabeiyiService {
                 map = get("https://api.yonyouup.com/api/consignmentlist/batch_get", param, null);
                 map = get("https://api.yonyouup.com/api/consignmentlist/batch_get", param, null);
             }
             }
             List<Map> consignmentList = (List<Map>) map.get("consignmentlist");
             List<Map> consignmentList = (List<Map>) map.get("consignmentlist");
+
             for (Map consignment : consignmentList) {
             for (Map consignment : consignmentList) {
                 //查询单个发货单详情
                 //查询单个发货单详情
                 String id = getString(consignment.get("code"));
                 String id = getString(consignment.get("code"));
@@ -669,6 +673,7 @@ public class KabeiyiServiceImpl implements KabeiyiService {
                 }
                 }
                 if (i1 > 5){
                 if (i1 > 5){
                     log.error("获取发货单详情失败");
                     log.error("获取发货单详情失败");
+                    errorCodes.add(id);
                     continue;
                     continue;
                 }
                 }
 
 
@@ -683,6 +688,7 @@ public class KabeiyiServiceImpl implements KabeiyiService {
                 }
                 }
 
 
                 formData.put("textField_m18nvp7y",getString(consignment2.get("cusname")));//客户名称
                 formData.put("textField_m18nvp7y",getString(consignment2.get("cusname")));//客户名称
+                formData.put("textField_m219zpzf",getString(consignment2.get("cusabbname")));//客户码
                 formData.put("textField_m18qfuiz",getString(consignment2.get("operation_type")));//操作类型
                 formData.put("textField_m18qfuiz",getString(consignment2.get("operation_type")));//操作类型
                 formData.put("textField_m18qfuj0",getString(consignment2.get("saletypename")));//销售类型
                 formData.put("textField_m18qfuj0",getString(consignment2.get("saletypename")));//销售类型
                 formData.put("textField_m18nvp87",getString(consignment2.get("code")));//发货单code
                 formData.put("textField_m18nvp87",getString(consignment2.get("code")));//发货单code
@@ -698,7 +704,8 @@ public class KabeiyiServiceImpl implements KabeiyiService {
                     Map detail = new HashMap();
                     Map detail = new HashMap();
                     detail.put("textField_m18nvp8c", getString(item.get("socode")));//销售订单号
                     detail.put("textField_m18nvp8c", getString(item.get("socode")));//销售订单号
                     detail.put("textField_m18nvp8d", getString(item.get("warehouse_name")));//仓库名称
                     detail.put("textField_m18nvp8d", getString(item.get("warehouse_name")));//仓库名称
-                    detail.put("textField_m18nvp8e", getString(item.get("inventory_name")));//库存名称
+                    detail.put("textField_m18nvp8e", getString(item.get("inventory_name")));//存货名称
+                    detail.put("textField_m22mkwzk", getString(item.get("define29")));//客户存货码
                     detail.put("textField_m18nvp8f", getString(item.get("cinvm_unit")));//单位
                     detail.put("textField_m18nvp8f", getString(item.get("cinvm_unit")));//单位
                     detail.put("numberField_m18nvp8h", getString(item.get("quantity")));//发货长度
                     detail.put("numberField_m18nvp8h", getString(item.get("quantity")));//发货长度
                     detail.put("numberField_m18nvp8j", getString(item.get("price")));//未税单价
                     detail.put("numberField_m18nvp8j", getString(item.get("price")));//未税单价
@@ -709,6 +716,9 @@ public class KabeiyiServiceImpl implements KabeiyiService {
                     detail.put("numberField_m18nvp8o", getString(item.get("tax")));//总税价
                     detail.put("numberField_m18nvp8o", getString(item.get("tax")));//总税价
                     detail.put("dateField_m18yzlob", DateUtil.parseDate(getString(consignment.get("date"))).getTime());//发货日期
                     detail.put("dateField_m18yzlob", DateUtil.parseDate(getString(consignment.get("date"))).getTime());//发货日期
                     detail.put("textField_m18z3yn8", getString(consignment2.get("cusname")));//客户名称
                     detail.put("textField_m18z3yn8", getString(consignment2.get("cusname")));//客户名称
+                    detail.put("textField_m219zpzg", getString(item.get("free1")));//客户码
+                    detail.put("textField_m21b1bhg", getString(item.get("free2")));//产品颜色
+
                     detail.put("textField_m1odluob", factory.get(dsSequence));//工厂名称
                     detail.put("textField_m1odluob", factory.get(dsSequence));//工厂名称
 
 
                     return detail;
                     return detail;
@@ -719,15 +729,22 @@ public class KabeiyiServiceImpl implements KabeiyiService {
                 boolean flag = false;
                 boolean flag = false;
                 while (i<=5 && !flag){
                 while (i<=5 && !flag){
                     try{
                     try{
+                        List<Map> jsonString = new ArrayList<>();
+                        jsonString.add(UtilMap.map("key, value, type, operator, componentName", "textField_m18nvp87",getString(consignment2.get("code")),"TEXT","eq","TextField"));
+                        jsonString.add(UtilMap.map("key, value, type, operator, componentName", "numberField_m18wkih7",new int[]{dsSequence,dsSequence},"DOUBLE","between","NumberField"));
+
+                        String searchCondition = JSONObject.toJSONString(jsonString);
+
                         ydClient.operateData(YDParam.builder()
                         ydClient.operateData(YDParam.builder()
                                 .formUuid(PRODUCT_REAL)
                                 .formUuid(PRODUCT_REAL)
-                                .searchCondition(JSON.toJSONString(UtilMap.map("textField_m18nvp87, numberField_m18wkih7",getString(consignment2.get("code")),dsSequence)))
+//                                .searchCondition(JSON.toJSONString(UtilMap.map("textField_m18nvp87, numberField_m18wkih7",getString(consignment2.get("code")),dsSequence)))//模糊查询
+                                .searchCondition(searchCondition)//精准查询
                                 .formDataJson(JSON.toJSONString(formData))
                                 .formDataJson(JSON.toJSONString(formData))
                                 .build(), YDConf.FORM_OPERATION.upsert);
                                 .build(), YDConf.FORM_OPERATION.upsert);
                         flag = true;
                         flag = true;
                     }catch (McException e){
                     }catch (McException e){
                         if (e.getMessage().contains("The request has failed due to a temporary failure of the server.")){
                         if (e.getMessage().contains("The request has failed due to a temporary failure of the server.")){
-                            log.error("请求失败,尝试次数:{}",i);
+                            log.error("upsert失败,尝试次数:{}",i);
                             i++;
                             i++;
                             try {
                             try {
                                 Thread.sleep(3000);
                                 Thread.sleep(3000);
@@ -735,23 +752,50 @@ public class KabeiyiServiceImpl implements KabeiyiService {
                                 throw new RuntimeException(ex);
                                 throw new RuntimeException(ex);
                             }
                             }
                         }else {
                         }else {
-                            log.error("删除失败 失败原因:{}" , e.getMessage());
+                            log.error("upsert,失败原因:{}" , e.getMessage());
+                            errorCodes.add(id);
                             flag = true;
                             flag = true;
                         }
                         }
                     }catch (Exception e){
                     }catch (Exception e){
                         log.error("发货单:{} 同步失败 失败原因:{}",getString(consignment2.get("code")) , e.getMessage());
                         log.error("发货单:{} 同步失败 失败原因:{}",getString(consignment2.get("code")) , e.getMessage());
+                        errorCodes.add(id);
                         flag = true;
                         flag = true;
                     }
                     }
                 }
                 }
                 if (i>5){
                 if (i>5){
+                    errorCodes.add(id);
                     log.error("发货单:{} 同步失败 失败原因:{}",getString(consignment2.get("code")) , "重试次数过多");
                     log.error("发货单:{} 同步失败 失败原因:{}",getString(consignment2.get("code")) , "重试次数过多");
                 }
                 }
+            }
 
 
+            Map error = new HashMap();
+            error.put("ds_sequence",dsSequence);
+            error.put("error_count",errorCodes.size());
+            //errorCodes逗号分隔
+            error.put("error_codes",errorCodes.stream().collect(Collectors.joining(",")));
+            errorList.add(error);
 
 
-            }
         }
         }
         long endTime = System.currentTimeMillis();
         long endTime = System.currentTimeMillis();
-        log.info("同步完成,耗时:{}秒", (endTime - beginTime) / 1000.0);
+        double time = (endTime - beginTime) / 1000.0;
+        log.info("同步完成,耗时:{}秒", time);
+        log.info("同步失败列表: {}", errorList);
+
+        //记录失败日志
+        Map<String,Object> formData = new HashMap<>();
+        formData.put("dateField_m21oifwi",beginTime);
+        formData.put("dateField_m21oifwp",endTime);
+        formData.put("numberField_m21oifwo",time);
+        //换行分隔errorList
+        String errorStr = errorList.stream().map(item -> {
+            String s = "数据源序号:" + item.get("ds_sequence") + ",错误数量:" + item.get("error_count") + ",发货单codes:" + item.get("error_codes");
+            return s;
+        }).collect(Collectors.joining("\n"));
+        formData.put("textareaField_m21oifwj",errorStr);
+        ydClient.operateData(YDParam.builder()
+                .formUuid("FORM-F297D439FFF747ACB26DEA940850CD9B13LM")
+                .formDataJson(JSON.toJSONString(formData))
+                .build(), YDConf.FORM_OPERATION.create);
         return McR.success();
         return McR.success();
     }
     }
 
 

+ 7 - 1
mjava-kuaikeli/src/main/java/com/malk/kuaikeli/service/impl/KKLImplService.java

@@ -368,9 +368,15 @@ public class KKLImplService implements KKLService {
         String cost6 = UtilMap.getString(data,"state");// 原材料状态
         String cost6 = UtilMap.getString(data,"state");// 原材料状态
 
 
         //todo2: 服务执行, 周日凌晨更新价格前, 是否重新匹配数据?
         //todo2: 服务执行, 周日凌晨更新价格前, 是否重新匹配数据?
+        List<Map> jsonString = new ArrayList<>();
+        jsonString.add(UtilMap.map("key, value, type, operator, componentName", "textField_llkb7kd2",data.get("itemNumber"),"TEXT","eq","TextField"));
+
+        String searchCondition = JSONObject.toJSONString(jsonString);
+
         List<Map> dataList = ydService.queryFormData_all(YDParam.builder()
         List<Map> dataList = ydService.queryFormData_all(YDParam.builder()
                 .formUuid("FORM-E6766M811CKD2PIXEAKOM9S2DKBM2PBQU1MLL5")
                 .formUuid("FORM-E6766M811CKD2PIXEAKOM9S2DKBM2PBQU1MLL5")
-                .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_llkb7kd2", data.get("itemNumber"))))
+//                .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_llkb7kd2", data.get("itemNumber"))))//模糊匹配
+                .searchFieldJson(searchCondition)//精准匹配
                 .build());
                 .build());
         log.info("adjustCost, {}", dataList.size());
         log.info("adjustCost, {}", dataList.size());