Browse Source

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

wzy 5 months ago
parent
commit
f28cbf719f

+ 1 - 1
mjava-kuaikeli/src/main/java/com/malk/kuaikeli/schedule/ScheduleTask.java

@@ -27,7 +27,7 @@ public class ScheduleTask {
     /**
      * 周一凌晨1点同步 (即周日后生效)
      */
-    @Scheduled(cron = "0 0 1 * * ?")
+    @Scheduled(cron = "0 0 1 * * 1")
     public void syncDingTalkFailedList() {
         log.info("开始同步原材料下周单价到本周");
         try {

+ 84 - 50
mjava-kuaikeli/src/main/java/com/malk/kuaikeli/service/impl/KKLImplService.java

@@ -359,6 +359,7 @@ public class KKLImplService implements KKLService {
      * 物料档案: 价格调整
      */
     @Override
+    @Async
     public void adjustCost(Map data) {
 
         double cost1 = UtilMap.getDouble(data, "costPrice");
@@ -384,13 +385,21 @@ public class KKLImplService implements KKLService {
 
         Map<String,Integer> resultValue=new HashMap(); // 项目编号:下标
         for (int i = 0; i < dataList.size(); i++) {
-            resultValue.put(String.valueOf(dataList.get(i).get("textField_llm1vtjm")),i);
+            resultValue.putIfAbsent(String.valueOf(dataList.get(i).get("textField_llm1vtjm")),i);
         }
+
+        // 中间表不存在数据,新增数据
+        List<Map> goodList = ydService.queryFormData_all(YDParam.builder()
+                .formUuid("FORM-12EB6BCE3C264630824721E7BBABCC03L8U9")
+                .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_llkb7kd2", data.get("itemNumber"))))
+                .build());
+        Map goodMap = goodList.get(0);
+
         List<Map> djdList = ydService.queryFormData_all(YDParam.builder() // 定价单数据
                 .formUuid("FORM-W2A66Z91B4KDWDIAA7SI1BRBRTKM3XL87BKLL0")
                 .searchFieldJson(JSONObject.toJSONString(Arrays.asList(new YDSearch("textField_llzzbai8",supId,"供应商编号", YDSearch.Type.TEXT_FIELD,YDSearch.Operator.EQ))))//精准匹配
                 .build());
-
+        List<String> yclData=new ArrayList<>();
         djdList.forEach(dataItem -> {
             List<Map> mapList = (List<Map>) dataItem.get("tableField_llq74mwk");
             if(mapList.size()==50){
@@ -406,24 +415,23 @@ public class KKLImplService implements KKLService {
                 if(resultValue.containsKey(projectId)){
                     // 中间表存在数据,更新数据
                     Map record=dataList.get(resultValue.get(projectId));
-                    double rate = UtilMap.getDouble(record, "numberField_llkb7kcy");
-                    double rate2 = UtilMap.getDouble(record, "numberField_lpalgz04");
+                    yclData.add(String.valueOf(record.get("formInstanceId")));
+//                    double rate = UtilMap.getDouble(record, "numberField_llkb7kcy");
+//                    double rate2 = UtilMap.getDouble(record, "numberField_lpalgz04");
+                    double rate = UtilMap.getDouble(maps.get(0), "numberField_llq74mwm");  //本周费率
+                    double rate2 = UtilMap.getDouble(maps.get(0), "numberField_lpplr3im"); //下周费率
                     double price1 = UtilNumber.formatPrecisionValue(cost1 * (rate + 100) / 100f);
                     double price2 = UtilNumber.formatPrecisionValue(cost2 * (100 + rate2) / 100f);
                     String state= cost6.equals("已启用") && Long.parseLong(cost3) > UtilDateTime.getLocalDateTimeTimeStamp()?"已启用":"已停用";
-                    Map update = UtilMap.map("numberField_llkknd6h, numberField_lpalgz0a, selectField_llkb7kd5, selectField_llkk6cms", price1, price2, typeOne, typeTwo);
+                    Map update = UtilMap.map("numberField_llkknd6h, numberField_lpalgz0a, selectField_llkb7kd5, selectField_llkk6cms, numberField_llkb7kcy, numberField_lpalgz04", price1, price2, typeOne, typeTwo, rate, rate2);
                     update.putAll(UtilMap.map("numberField_llkknd6g, numberField_lpalgz05, dateField_lm4lxur7, numberField_lnrzzg03, textField_lnrzzg04, textField_lm4lxur8", cost1, cost2, cost3, cost4, cost5,state ));
+                    update.put("textField_llkb7kd3",goodMap.get("textField_llkb7kd3"));  //单位
+                    update.put("textField_llkb7kd4",goodMap.get("textField_llkb7kd4"));  //规格
                     ydClient.operateData(YDParam.builder()
                             .formInstanceId(String.valueOf(record.get("formInstanceId")))
                             .updateFormDataJson(JSON.toJSONString(update))
                             .build(), YDConf.FORM_OPERATION.update);
                 }else{
-                    // 中间表不存在数据,新增数据
-                    List<Map> goodList = ydService.queryFormData_all(YDParam.builder()
-                            .formUuid("FORM-12EB6BCE3C264630824721E7BBABCC03L8U9")
-                            .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_llkb7kd2", data.get("itemNumber"))))
-                            .build());
-                    Map goodMap = goodList.get(0);
                     Map hashMap = new HashMap();
                     hashMap.put("textField_llzzbyj1",supId);   //供应商编号
                     hashMap.put("textField_lmsli3bq",dataItem.get("textField_lmsli3bq")); //供应商名称
@@ -464,17 +472,22 @@ public class KKLImplService implements KKLService {
                 }
             }else{
                 // 不存在
-                if(resultValue.containsKey(projectId)){
-                    // 明细表存在数据,更新为 已停用
-                    Map record=dataList.get(resultValue.get(projectId));
-                    Map update = UtilMap.map("textField_lm4lxur8", "已停用");
-                    ydClient.operateData(YDParam.builder()
-                            .formInstanceId(String.valueOf(record.get("formInstanceId")))
-                            .updateFormDataJson(JSON.toJSONString(update))
-                            .build(), YDConf.FORM_OPERATION.update);
-                }
+//                if(resultValue.containsKey(projectId)){
+//
+//                }
             }
         });
+        for (Map record : dataList) {
+            if(yclData.contains(String.valueOf(record.get("formInstanceId")))){
+                continue;
+            }
+            // 明细表存在数据,更新为 已停用
+            Map update = UtilMap.map("textField_lm4lxur8", "已停用");
+            ydClient.operateData(YDParam.builder()
+                    .formInstanceId(String.valueOf(record.get("formInstanceId")))
+                    .updateFormDataJson(JSON.toJSONString(update))
+                    .build(), YDConf.FORM_OPERATION.update);
+        }
 
 //        for (Map record : dataList) {
 ////            if (cost1 == UtilMap.getDouble(record, "numberField_llkknd6g") && cost2 == UtilMap.getDouble(record, "numberField_lpalgz05")) {
@@ -590,41 +603,62 @@ public class KKLImplService implements KKLService {
     @Override
     @SneakyThrows
     public void syncPrice() {
-
-        // 定价单明细表
-        List<Map> dataList = ydService.queryFormData_all(YDParam.builder()
-                .formUuid("FORM-E6766M811CKD2PIXEAKOM9S2DKBM2PBQU1MLL5")
+        // 项目表
+        List<Map> djdList = ydService.queryFormData_all(YDParam.builder()
+                .formUuid("FORM-MP966K81PGGD51ZUEU29Q6YVKSOE3SDK29KLL9")
                 .build());
-        for (Map record : dataList) {
-
-            double price1 = UtilMap.getDouble(record, "numberField_llkknd6h");
-            double price2 = UtilMap.getDouble(record, "numberField_lpalgz0a");
-            if (price1 == price2) {
-                continue;
+        for (Map djdInfo:djdList){
+            log.info("同步定价单明细表,项目:{}",djdInfo.get("serialNumberField_llk93psu"));
+            // 定价单明细表
+            List<Map> dataList = ydService.queryFormData_all(YDParam.builder()
+                    .formUuid("FORM-E6766M811CKD2PIXEAKOM9S2DKBM2PBQU1MLL5")
+                    .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_llm1vtjm", djdInfo.get("serialNumberField_llk93psu"))))
+                    .build());
+            int i=1;
+            for (Map record : dataList) {
+                log.info("{}项目进度:{}/{}",djdInfo.get("serialNumberField_llk93psu"),i,dataList.size());
+                i++;
+                double price1 = UtilMap.getDouble(record, "numberField_llkknd6h");
+                double price2 = UtilMap.getDouble(record, "numberField_lpalgz0a");
+                if (price1 == price2) {
+                    continue;
+                }
+                log.info("有不同,");
+                // 本质上是对比供货价差异, 下周全覆盖
+                Map update = UtilMap.map("numberField_llkknd6h, numberField_llkb7kcy, numberField_llkknd6g", price2, record.get("numberField_lpalgz04"), record.get("numberField_lpalgz05"));
+                ydClient.operateData(YDParam.builder()
+                        .formInstanceId(String.valueOf(record.get("formInstanceId")))
+                        .updateFormDataJson(JSON.toJSONString(update))
+                        .build(), YDConf.FORM_OPERATION.update);
             }
-            // 本质上是对比供货价差异, 下周全覆盖
-            Map update = UtilMap.map("numberField_llkknd6h, numberField_llkb7kcy, numberField_llkknd6g", price2, record.get("numberField_lpalgz04"), record.get("numberField_lpalgz05"));
-            ydClient.operateData(YDParam.builder()
-                    .formInstanceId(String.valueOf(record.get("formInstanceId")))
-                    .updateFormDataJson(JSON.toJSONString(update))
-                    .build(), YDConf.FORM_OPERATION.update);
         }
-        // 供应商原材料表
-        List<Map> dataList2 = ydService.queryFormData_all(YDParam.builder()
-                .formUuid("FORM-12EB6BCE3C264630824721E7BBABCC03L8U9")
-                .build());
-        for (Map record : dataList2) {
 
-            double cost1 = UtilMap.getDouble(record, "numberField_llkknd6g");
-            double cost2 = UtilMap.getDouble(record, "numberField_lpalgz05");
-            if (cost1 == cost2) {
-                continue;
+        // 供应商表
+        List<Map> supList = ydService.queryFormData_all(YDParam.builder()
+                .formUuid("FORM-L8966281A3LDP5UX77OYM6LBPEUM3TODBOLLL0")
+                .build());
+        for (Map supInfo:supList){
+            log.info("同步供应商原材料表,项目:{}",supInfo.get("serialNumberField_lllodwgz"));
+            // 供应商原材料表
+            List<Map> dataList2 = ydService.queryFormData_all(YDParam.builder()
+                    .formUuid("FORM-12EB6BCE3C264630824721E7BBABCC03L8U9")
+                    .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_llzzbyj1", supInfo.get("serialNumberField_lllodwgz"))))
+                    .build());
+            int i=0;
+            for (Map record : dataList2) {
+                log.info("{}项目进度:{}/{}",supInfo.get("serialNumberField_lllodwgz"),i,dataList2.size());
+                i++;
+                double cost1 = UtilMap.getDouble(record, "numberField_llkknd6g");
+                double cost2 = UtilMap.getDouble(record, "numberField_lpalgz05");
+                if (cost1 == cost2) {
+                    continue;
+                }
+                Map update = UtilMap.map("numberField_llkknd6g", cost2);
+                ydClient.operateData(YDParam.builder()
+                        .formInstanceId(String.valueOf(record.get("formInstanceId")))
+                        .updateFormDataJson(JSON.toJSONString(update))
+                        .build(), YDConf.FORM_OPERATION.update);
             }
-            Map update = UtilMap.map("numberField_llkknd6g", cost2);
-            ydClient.operateData(YDParam.builder()
-                    .formInstanceId(String.valueOf(record.get("formInstanceId")))
-                    .updateFormDataJson(JSON.toJSONString(update))
-                    .build(), YDConf.FORM_OPERATION.update);
         }
     }
 

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

@@ -14,7 +14,7 @@ logging:
   config: classpath:logback-spring.xml
   path: /home/server/kuaikeli/log/
   level:
-    com.malk.*: debug
+    com.malk.*: info
 
 # dingtalk
 dingtalk:

+ 25 - 2
mjava-kuaikeli/src/test/java/com/malk/kuaikeli/DdTest.java

@@ -58,8 +58,9 @@ public class DdTest {
 
     @Test
     public void test(){
-        kklService.validateApprove(JSONObject.parseObject(data));
-        kklService.additionMaterial(JSONObject.parseObject("{\"firstName\":\"水果其他\",\"gysNumber\":\"GYS-20241031-071\",\"state\":\"已启用\",\"goodNumber\":\"XKL02273\"}"));
+        kklService.adjustCost(JSONObject.parseObject("{\"timeLimit\":\"1767024000000\",\"itemNumber\":\"XKL00332\",\"supId\":\"GYS-20241031-071\",\"typeTwo\":\"米面制品\",\"costPrice\":\"3.5\",\"typeOne\":\"粮油类\",\"state\":\"已启用\",\"nextCostPrice\":\"3.5\"}"));
+//        kklService.validateApprove(JSONObject.parseObject(data));
+//        kklService.additionMaterial(JSONObject.parseObject("{\"firstName\":\"水果其他\",\"gysNumber\":\"GYS-20241031-071\",\"state\":\"已启用\",\"goodNumber\":\"XKL02273\"}"));
 
 //        kklService.planApproval(JSONObject.parseObject(data));
 //        List<Map> table=null;
@@ -208,4 +209,26 @@ public class DdTest {
 
 //        ydClient.operateData(YDParam.builder().formInstanceId("69237090-699f-43e6-a5d5-f36d421b1c13").updateFormDataJson(JSONObject.toJSONString(upmap)).build(), YDConf.FORM_OPERATION.update);
     }
+
+    @Test
+    public void ydTest(){
+//        kklService.syncPrice();
+        List<Map> dataList2 = ydService.queryFormData_all(YDParam.builder()
+                .formUuid("FORM-12EB6BCE3C264630824721E7BBABCC03L8U9")
+                .build());
+        int i=0;
+        for (Map record : dataList2) {
+            log.info("项目进度:{}/{}",i,dataList2.size());
+            i++;
+            try {
+                ydClient.operateData(YDParam.builder()
+                        .formInstanceId(String.valueOf(record.get("formInstanceId")))
+                        .updateFormDataJson(JSON.toJSONString(new HashMap<>()))
+                        .useLatestVersion(true)
+                        .build(), YDConf.FORM_OPERATION.update);
+            }catch (Exception e){
+                e.printStackTrace();
+            }
+        }
+    }
 }