Browse Source

卓高更新

pruple_boy 1 year ago
parent
commit
5b111376f6
100 changed files with 28180 additions and 16722 deletions
  1. 1 1
      .gitignore
  2. 16 1
      mjava-aiwei/src/main/java/com/malk/aiwei/controller/TBxYDController.java
  3. 15 7
      mjava-aiwei/src/main/java/com/malk/aiwei/service/impl/AWImplClient.java
  4. BIN
      mjava-fengkaili/src/main/resources/templates/Template_days.xlsx
  5. 15 0
      mjava-gewu/src/main/java/com/malk/gewu/controller/GWController.java
  6. 5 0
      mjava-gewu/src/main/java/com/malk/gewu/service/GWService.java
  7. 18 0
      mjava-gewu/src/main/java/com/malk/gewu/service/impl/GWImplService.java
  8. 4 4
      mjava-gewu/src/main/resources/application-dev.yml
  9. 13931 8308
      mjava-guyuan/src/main/resources/static/mjs/mjs.js
  10. 1 1
      mjava-guyuan/src/main/resources/static/mjs/mjs.min.js
  11. 2 1
      mjava-hake/src/main/java/com/malk/hake/controller/HKController.java
  12. 26 0
      mjava-hake/src/main/java/com/malk/hake/schedule/HKScheduleTask.java
  13. 1 1
      mjava-hake/src/main/java/com/malk/hake/service/HKClient.java
  14. 80 19
      mjava-hake/src/main/java/com/malk/hake/service/impl/HKImplClient.java
  15. 13 6
      mjava-hake/src/main/resources/static/json/form.json
  16. 1 1
      mjava-lemeng/src/main/java/com/malk/lemeng/schedule/LMScheduleTask.java
  17. 112 55
      mjava-lemeng/src/main/java/com/malk/lemeng/service/impl/LMImplService.java
  18. 8 8
      mjava-lemeng/src/main/resources/application-prod.yml
  19. 13927 8304
      mjava-luyi/src/main/resources/mjs/mjs.js
  20. 1 1
      mjava-luyi/src/main/resources/mjs/mjs.min.js
  21. 1 1
      mjava-mcli/src/main/java/com/malk/mcli/test/JSPTestController.java
  22. 1 1
      mjava-zhuogao/pom.xml
  23. 0 1
      mjava-zhuogao/src/main/resources/static/web/js/npm.ant-design.a5474300736ba6989b23.0.1.0.js
  24. 0 0
      mjava-zhuogao/src/main/resources/static/web2/css/app.1e205474.css
  25. 0 0
      mjava-zhuogao/src/main/resources/static/web2/css/app.1e205474.css.gz
  26. 0 0
      mjava-zhuogao/src/main/resources/static/web2/css/chunk-020bde4f.8cd353de.css
  27. 0 0
      mjava-zhuogao/src/main/resources/static/web2/css/chunk-03803d04.d28c0d77.css
  28. 0 0
      mjava-zhuogao/src/main/resources/static/web2/css/chunk-09d432c5.08e92398.css
  29. 0 0
      mjava-zhuogao/src/main/resources/static/web2/css/chunk-0dc3c267.a04b5e6e.css
  30. 0 0
      mjava-zhuogao/src/main/resources/static/web2/css/chunk-115de532.efcd021e.css
  31. 0 0
      mjava-zhuogao/src/main/resources/static/web2/css/chunk-13e18d6c.29149725.css
  32. 0 0
      mjava-zhuogao/src/main/resources/static/web2/css/chunk-16622649.5f788a64.css
  33. 0 0
      mjava-zhuogao/src/main/resources/static/web2/css/chunk-1ee91c18.2c5e6b95.css
  34. 0 0
      mjava-zhuogao/src/main/resources/static/web2/css/chunk-241c9cfc.2ad4aee4.css
  35. 0 0
      mjava-zhuogao/src/main/resources/static/web2/css/chunk-2b3d1d97.3e61a36e.css
  36. 0 0
      mjava-zhuogao/src/main/resources/static/web2/css/chunk-34786a36.9b156963.css
  37. 0 0
      mjava-zhuogao/src/main/resources/static/web2/css/chunk-35d77297.5dd7accd.css
  38. 0 0
      mjava-zhuogao/src/main/resources/static/web2/css/chunk-35d77297.5dd7accd.css.gz
  39. 0 0
      mjava-zhuogao/src/main/resources/static/web2/css/chunk-3f61e0f1.eef13e95.css
  40. 0 0
      mjava-zhuogao/src/main/resources/static/web2/css/chunk-4e109df4.b671580b.css
  41. 0 0
      mjava-zhuogao/src/main/resources/static/web2/css/chunk-5d241c38.e69d3699.css
  42. 0 0
      mjava-zhuogao/src/main/resources/static/web2/css/chunk-6279ca32.6c624d50.css
  43. 0 0
      mjava-zhuogao/src/main/resources/static/web2/css/chunk-65abd8c2.182cda6f.css
  44. 0 0
      mjava-zhuogao/src/main/resources/static/web2/css/chunk-6b83ef66.f91727df.css
  45. 0 0
      mjava-zhuogao/src/main/resources/static/web2/css/chunk-6d750ba2.b1127071.css
  46. 0 0
      mjava-zhuogao/src/main/resources/static/web2/css/chunk-723eb2cc.5ca1aba6.css
  47. 0 0
      mjava-zhuogao/src/main/resources/static/web2/css/chunk-767b9dea.7228e7cc.css
  48. 0 0
      mjava-zhuogao/src/main/resources/static/web2/css/chunk-87f1c134.0cd21f17.css
  49. 0 0
      mjava-zhuogao/src/main/resources/static/web2/css/chunk-b189ddd8.7a1576f4.css
  50. 0 0
      mjava-zhuogao/src/main/resources/static/web2/css/chunk-d773cad0.b7a55ecf.css
  51. 0 0
      mjava-zhuogao/src/main/resources/static/web2/css/chunk-de510a84.694e0ad8.css
  52. 0 0
      mjava-zhuogao/src/main/resources/static/web2/css/chunk-fd2bf652.2e6b27df.css
  53. 0 0
      mjava-zhuogao/src/main/resources/static/web2/css/npm.ant-design-vue.05a448c8.css
  54. 0 0
      mjava-zhuogao/src/main/resources/static/web2/css/npm.ant-design-vue.05a448c8.css.gz
  55. 0 0
      mjava-zhuogao/src/main/resources/static/web2/css/npm.element-ui.2fe571ab.css
  56. 0 0
      mjava-zhuogao/src/main/resources/static/web2/css/npm.element-ui.2fe571ab.css.gz
  57. 0 0
      mjava-zhuogao/src/main/resources/static/web2/css/npm.quasar.2415b056.css
  58. 0 0
      mjava-zhuogao/src/main/resources/static/web2/css/npm.swiper.23437b54.css
  59. 0 0
      mjava-zhuogao/src/main/resources/static/web2/css/npm.swiper.23437b54.css.gz
  60. 0 0
      mjava-zhuogao/src/main/resources/static/web2/favicon.ico
  61. 0 0
      mjava-zhuogao/src/main/resources/static/web2/fonts/element-icons.535877f5.woff
  62. 0 0
      mjava-zhuogao/src/main/resources/static/web2/fonts/element-icons.732389de.ttf
  63. 0 0
      mjava-zhuogao/src/main/resources/static/web2/fonts/flUhRq6tzZclQEJ-Vdg-IuiaDsNa.29b882f0.woff
  64. 0 0
      mjava-zhuogao/src/main/resources/static/web2/fonts/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.0509ab09.woff2
  65. 0 0
      mjava-zhuogao/src/main/resources/static/web2/img/+pk-select.472d7dee.png
  66. 0 0
      mjava-zhuogao/src/main/resources/static/web2/img/404.0a45bba9.jpg
  67. 0 0
      mjava-zhuogao/src/main/resources/static/web2/img/link.038ba0a1.png
  68. 0 0
      mjava-zhuogao/src/main/resources/static/web2/img/logo.a24f00e9.png
  69. 0 0
      mjava-zhuogao/src/main/resources/static/web2/img/logo.f2cf67e8.png
  70. 0 0
      mjava-zhuogao/src/main/resources/static/web2/img/look.68727e17.png
  71. 0 0
      mjava-zhuogao/src/main/resources/static/web2/img/no-data-pk.fc4bd766.png
  72. 0 0
      mjava-zhuogao/src/main/resources/static/web2/img/no-data-search.26341beb.png
  73. 0 0
      mjava-zhuogao/src/main/resources/static/web2/img/pk-relation.05ad7b4b.png
  74. 0 0
      mjava-zhuogao/src/main/resources/static/web2/img/player.a587f6e2.png
  75. 0 0
      mjava-zhuogao/src/main/resources/static/web2/img/reset.e99a88b6.png
  76. 0 0
      mjava-zhuogao/src/main/resources/static/web2/img/search-to.c3c08449.png
  77. 0 0
      mjava-zhuogao/src/main/resources/static/web2/img/selected.52f9c8b3.png
  78. 0 0
      mjava-zhuogao/src/main/resources/static/web2/index.html
  79. 1 1
      mjava-zhuogao/src/main/resources/static/web/js/app.846c2d9e4d31a40867a1.0.1.0.js
  80. 0 0
      mjava-zhuogao/src/main/resources/static/web2/js/app.846c2d9e4d31a40867a1.0.1.0.js.gz
  81. 0 0
      mjava-zhuogao/src/main/resources/static/web2/js/chunk-020bde4f.bfc01ad1cc29420aedd8.0.1.0.js
  82. 0 0
      mjava-zhuogao/src/main/resources/static/web2/js/chunk-03803d04.c3b16d4a6c0420874d46.0.1.0.js
  83. 0 0
      mjava-zhuogao/src/main/resources/static/web2/js/chunk-09d432c5.aaf5e68687314c59cf37.0.1.0.js
  84. 0 0
      mjava-zhuogao/src/main/resources/static/web2/js/chunk-0dc3c267.8b028092cee40dc46809.0.1.0.js
  85. 0 0
      mjava-zhuogao/src/main/resources/static/web2/js/chunk-0dc3c267.8b028092cee40dc46809.0.1.0.js.gz
  86. 0 0
      mjava-zhuogao/src/main/resources/static/web2/js/chunk-115de532.80e8627a6888fd0e994b.0.1.0.js
  87. 0 0
      mjava-zhuogao/src/main/resources/static/web2/js/chunk-13e18d6c.e25ad72ebef0e4b19e1c.0.1.0.js
  88. 0 0
      mjava-zhuogao/src/main/resources/static/web2/js/chunk-16622649.b7e490fc848c6248754e.0.1.0.js
  89. 0 0
      mjava-zhuogao/src/main/resources/static/web2/js/chunk-1ee91c18.87ca582b35170059e2f6.0.1.0.js
  90. 0 0
      mjava-zhuogao/src/main/resources/static/web2/js/chunk-241c9cfc.036cf7a85f38dd5baf5a.0.1.0.js
  91. 0 0
      mjava-zhuogao/src/main/resources/static/web2/js/chunk-2b3d1d97.35059d0318a37d5d366c.0.1.0.js
  92. 0 0
      mjava-zhuogao/src/main/resources/static/web2/js/chunk-2d0b68f8.f17891813c7697f3d507.0.1.0.js
  93. 0 0
      mjava-zhuogao/src/main/resources/static/web2/js/chunk-2d0c72d6.fc0c8ef08f288eee9cc8.0.1.0.js
  94. 0 0
      mjava-zhuogao/src/main/resources/static/web2/js/chunk-2d0f07e2.3e78412d2d619e11a117.0.1.0.js
  95. 0 0
      mjava-zhuogao/src/main/resources/static/web2/js/chunk-34786a36.a5f6992b4019533b6d0a.0.1.0.js
  96. 0 0
      mjava-zhuogao/src/main/resources/static/web2/js/chunk-34786a36.a5f6992b4019533b6d0a.0.1.0.js.gz
  97. 0 0
      mjava-zhuogao/src/main/resources/static/web2/js/chunk-35d77297.b3d8d5413edc0d855ad6.0.1.0.js
  98. 0 0
      mjava-zhuogao/src/main/resources/static/web2/js/chunk-35d77297.b3d8d5413edc0d855ad6.0.1.0.js.LICENSE.txt
  99. 0 0
      mjava-zhuogao/src/main/resources/static/web2/js/chunk-35d77297.b3d8d5413edc0d855ad6.0.1.0.js.gz
  100. 0 0
      mjava-zhuogao/src/main/resources/static/web/js/chunk-3f61e0f1.77a2e7a9ec04fb37d736.0.1.0.js

+ 1 - 1
.gitignore

@@ -37,6 +37,6 @@ mvnw.cmd
 */tmp
 */target
 
-# web file
+# web2 file
 */src/main/resources/static/web
 */src/main/resources/static/mjs

+ 16 - 1
mjava-aiwei/src/main/java/com/malk/aiwei/controller/TBxYDController.java

@@ -10,6 +10,8 @@ import com.malk.server.common.McException;
 import com.malk.server.common.McR;
 import com.malk.server.dingtalk.DDConf;
 import com.malk.server.teambition.TBConf;
+import com.malk.service.aliwork.YDClient;
+import com.malk.service.aliwork.YDService;
 import com.malk.service.teambition.TBClient;
 import com.malk.utils.UtilMap;
 import com.malk.utils.UtilServlet;
@@ -97,7 +99,7 @@ public class TBxYDController {
         awClint.createProject(UtilMap.getString(data, "projectCode"), UtilMap.getString(data, "templateId"));
         return McR.success();
     }
-    
+
     /**
      * 分配项目角色
      */
@@ -139,6 +141,12 @@ public class TBxYDController {
         return McR.success(tList);
     }
 
+    @Autowired
+    private YDClient ydClient;
+
+    @Autowired
+    private YDService ydService;
+
     @PostMapping("test")
     McR test(HttpServletRequest request) {
 
@@ -147,4 +155,11 @@ public class TBxYDController {
         List<Map> rsp = tbClient.idMapQuery(tbConf.getOperatorId(), "dingTalk-user", ddConf.getCorpId());
         return McR.success(rsp);
     }
+
+    @GetMapping("tmp")
+    McR tmp() {
+        
+
+        return McR.success();
+    }
 }

+ 15 - 7
mjava-aiwei/src/main/java/com/malk/aiwei/service/impl/AWImplClient.java

@@ -8,7 +8,6 @@ import com.malk.server.aliwork.YDConf;
 import com.malk.server.aliwork.YDParam;
 import com.malk.server.common.McException;
 import com.malk.server.dingtalk.DDConf;
-import com.malk.server.dingtalk.DDR_New;
 import com.malk.server.teambition.TBConf;
 import com.malk.service.aliwork.YDClient;
 import com.malk.service.aliwork.YDService;
@@ -52,13 +51,13 @@ public class AWImplClient implements AWClint {
         Map taskData = _getTaskFieldMap(UtilMap.getString(data, "taskId"), AWServer.TASK_CODE, AWServer.TASK_APPROVE_ATTACHMENT);
         String tCode = UtilMap.getString(taskData, AWServer.TASK_CODE);
         // 工作流tb虽然配置了流转逻辑, 冗余稳定性
-        DDR_New ddr_new = ydClient.queryData(YDParam.builder()
+        List<Map> formList = (List<Map>) ydClient.queryData(YDParam.builder()
 //                .formUuid("FORM-FBC1A390B4C348089020C763938A6F54RUNY")
                 .formUuid("FORM-812FD46AF391449A8F206EDB3221B38840UQ")
                 .searchFieldJson(JSON.toJSONString(UtilMap.map("selectField_lqxuswzd, textField_lrncs2fu", tCode, pCode)))
                 .instanceStatus("RUNNING")
-                .build(), YDConf.FORM_QUERY.retrieve_search_process);
-        if (ddr_new.getTotalCount() > 0) {
+                .build(), YDConf.FORM_QUERY.retrieve_search_process).getData();
+        if (formList.size() > 0 && formList.stream().filter(item -> tCode.equals(((Map) item.get("data")).get("selectField_lqxuswzd"))).findAny().isPresent()) {
             return;
         }
 
@@ -70,11 +69,13 @@ public class AWImplClient implements AWClint {
         } else {
 //            tList = ydService.queryDataList_FormData("FORM-AB7263D2A12F4E01A871656F0D995BC96PR1", UtilMap.map("selectField_lrncf4hk, radioField_lrnddfq6", tCode, "启用"));
             tList = ydService.queryDataList_FormData("FORM-A25299893F614A6EAA672514D3A76BB0QDBF", UtilMap.map("selectField_lrncf4hk, radioField_lrnddfq6", tCode, "启用"));
+            tList = tList.stream().filter(item -> tCode.equals(item.get("selectField_lrncf4hk"))).collect(Collectors.toList());
             if (tList.size() == 0) {
                 result = "未配置交付物审批";
             } else {
 //                List<Map> pList = ydService.queryDataList_FormData("FORM-84EF78C7DBA047E58A8C8511106F91D5WNVI", UtilMap.map("textField_lqxtykce", pCode));
                 List<Map> pList = ydService.queryDataList_FormData("FORM-141E21DF183846028E21727CE43CD1C75CLZ", UtilMap.map("textField_lqxtykce", pCode));
+                pList = pList.stream().filter(item -> pCode.equals(item.get("textField_lqxtykce"))).collect(Collectors.toList());
                 if (pList.size() == 0) {
                     result = "未匹配到项目主数据";
                 } else {
@@ -212,7 +213,7 @@ public class AWImplClient implements AWClint {
     public Map doCheck(String taskId, boolean isTask) {
 
         log.info("检查项check, {}", taskId);
-        Map taskData = _getTaskFieldMap(taskId, AWServer.TASK_CODE, AWServer.TASK_CHECK_LINK, AWServer.TASK_ROLE, AWServer.TASK_STAGE);
+        Map taskData = _getTaskFieldMap(taskId, AWServer.TASK_CODE, AWServer.TASK_CHECK_LINK, AWServer.TASK_ROLE, AWServer.TASK_STAGE, AWServer.TASK_CHECK_STATUS);
         String checkLink = UtilMap.getString(taskData, AWServer.TASK_CHECK_LINK);
         /// prd 预检项持续维护需要重新匹配, 任务号和主数据判定为非法, 无需重新刷新
         if (isTask && (StringUtils.isNotBlank(checkLink) && !AWServer.TASK_TIPS.equals(checkLink))) {
@@ -234,11 +235,13 @@ public class AWImplClient implements AWClint {
                     .formUuid("FORM-1A5D4D7FBF88409B956EBE51F9342A6BKOLP")
                     .searchFieldJson(JSON.toJSONString(UtilMap.map("selectField_lrncf4hk, radioField_lrnddfq6", tCode, "启用")))
                     .build());
+            tList = tList.stream().filter(item -> tCode.equals(item.get("selectField_lrncf4hk"))).collect(Collectors.toList());
             if (tList.size() == 0) {
                 result = AWServer.TASK_TIPS;
             } else {
 //                List<Map> pList = ydService.queryDataList_FormData("FORM-84EF78C7DBA047E58A8C8511106F91D5WNVI", UtilMap.map("textField_lqxtykce", pCode));
                 List<Map> pList = ydService.queryDataList_FormData("FORM-141E21DF183846028E21727CE43CD1C75CLZ", UtilMap.map("textField_lqxtykce", pCode));
+                pList = pList.stream().filter(item -> pCode.equals(item.get("textField_lqxtykce"))).collect(Collectors.toList());
                 if (pList.size() == 0) {
                     result = "未匹配到项目主数据";
                 } else {
@@ -254,8 +257,8 @@ public class AWImplClient implements AWClint {
                 Map body = TBConf.assembleCustomFieldName(AWServer.TASK_CHECK_LINK, result);
                 tbClient.updateTaskCustomField(taskId, creatorId, body);
             }
-            // prd 未配置预检项更新为已检查, 避免完成任务完成触发必填校验
-            if (AWServer.TASK_TIPS.equals(result)) {
+            // prd 未配置预检项更新为已检查, 避免完成任务完成触发必填校验 [ppExt 避免重复写入, 重复写入TB会重复记录日志
+            if (AWServer.TASK_TIPS.equals(result) && !taskData.get(AWServer.TASK_CHECK_STATUS).equals("已检查")) {
                 Map body = TBConf.assembleCustomFieldName(AWServer.TASK_CHECK_STATUS, "已检查");
                 tbClient.updateTaskCustomField(taskId, creatorId, body);
             }
@@ -314,6 +317,9 @@ public class AWImplClient implements AWClint {
             ydParam.setSearchFieldJson(JSON.toJSONString(UtilMap.map("textField_le6o88w0", projectCode)));
         }
         List<Map> mapBaseList = ydService.queryAllFormData(ydParam);
+        if (StringUtils.isNotBlank(projectCode)) {
+            mapBaseList = mapBaseList.stream().filter(item -> projectCode.equals(item.get("textField_le6o88w0"))).collect(Collectors.toList());
+        }
         log.info("项目主数据, {}", mapBaseList.size());
         McException.assertAccessException(mapBaseList.isEmpty(), "未匹配项目主数据");
 
@@ -364,6 +370,8 @@ public class AWImplClient implements AWClint {
                     .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_lrj7vnxb", baseFormData.get("textField_le6o88w0"))))
                     .build();
             List<Map> projectMaps = (List<Map>) ydClient.queryData(ydParam2, YDConf.FORM_QUERY.retrieve_search_form).getData();
+            projectMaps = projectMaps.stream().filter(sub -> baseFormData.get("textField_le6o88w0").equals(item.get("textField_lrj7vnxb"))).collect(Collectors.toList());
+
             YDParam ydParam3 = YDParam.builder()
 //                    .formUuid("FORM-84EF78C7DBA047E58A8C8511106F91D5WNVI")
                     .formUuid("FORM-141E21DF183846028E21727CE43CD1C75CLZ")

BIN
mjava-fengkaili/src/main/resources/templates/Template_days.xlsx


+ 15 - 0
mjava-gewu/src/main/java/com/malk/gewu/controller/GWController.java

@@ -67,6 +67,21 @@ public class GWController {
         return McR.success();
     }
 
+    /**
+     * 创建提醒日程
+     */
+    @PostMapping("schedule")
+    McR schedule(HttpServletRequest request) {
+
+//        Map data = UtilServlet.getParamMap(request);
+//        log.info("创建提醒日程, {}", data);
+//        Map formData = (Map) JSON.parse(String.valueOf(data.get("formData")));
+//        List<String> userIds = (List<String>) JSON.parse(String.valueOf(formData.get("employeeField_limyct1y")));
+
+        gwService.createSchedule();
+        return McR.success();
+    }
+
 
     /**
      * test

+ 5 - 0
mjava-gewu/src/main/java/com/malk/gewu/service/GWService.java

@@ -7,6 +7,11 @@ public interface GWService {
      */
     void syncRoster();
 
+    /**
+     * 参加钉钉日程
+     */
+    void createSchedule();
+
     // test
     void test();
 }

+ 18 - 0
mjava-gewu/src/main/java/com/malk/gewu/service/impl/GWImplService.java

@@ -9,6 +9,7 @@ import com.malk.service.aliwork.YDClient;
 import com.malk.service.dingtalk.DDClient;
 import com.malk.service.dingtalk.DDClient_Contacts;
 import com.malk.service.dingtalk.DDClient_Personnel;
+import com.malk.service.dingtalk.DDClient_Schedule;
 import com.malk.utils.UtilFile;
 import com.malk.utils.UtilMap;
 import lombok.extern.slf4j.Slf4j;
@@ -103,9 +104,26 @@ public class GWImplService implements GWService {
         });
     }
 
+    @Autowired
+    private DDClient_Schedule ddClient_schedule;
+
+    /**
+     * 参加钉钉日程
+     */
+    @Override
+    public void createSchedule() {
+        List attendees = Arrays.asList("011467460262746600", "2534342040877632");
+        // ppExt: start 与 end 不能使用同一个map对象, 会报错date不能为空.
+        Map start = UtilMap.map("date", "2024-01-31");
+        Map end = UtilMap.map("date", "2024-01-31");
+        Map body = UtilMap.map("summary, description, start, end, attendees, isAllDay", "日程标题", "日程描述", start, end, attendees, true);
+        ddClient_schedule.eventsSchedule(ddClient.getAccessToken(), "095358016629044412", body);
+    }
+
     /// test
     @Override
     public void test() {
+
         ddClient_personnel.getPersonnelMeta(ddClient.getAccessToken(), ddConf.getAgentId());
     }
 }

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

@@ -49,10 +49,10 @@ logging:
 
 # dingtalk
 dingtalk:
-  agentId: 2660236361
-  appKey: dinguuieqv4lkvp3vkaf
-  appSecret: N5JjPU9RDk77pTze5vRWmiWLDjPKeYJV3sQrmYgN_SC57nOALmj570rVB0SGGcQQ
-  corpId: dingec9ee223c2b3a671
+  agentId: 2691784047
+  appKey: dinghbynhnd2dbgypmsa
+  appSecret: Kl5Xw8x0TlEIlvcJuUkYZD18UTTShJmfdKrAIpY8oX-Q_tazyUKA28nQh7dG5-mq
+  corpId: ding321c72787fffc78b35c2f4657eb6378f
   aesKey:
   token:
   operator: ""   # OA管理员账号

File diff suppressed because it is too large
+ 13931 - 8308
mjava-guyuan/src/main/resources/static/mjs/mjs.js


File diff suppressed because it is too large
+ 1 - 1
mjava-guyuan/src/main/resources/static/mjs/mjs.min.js


+ 2 - 1
mjava-hake/src/main/java/com/malk/hake/controller/HKController.java

@@ -81,7 +81,8 @@ public class HKController {
     McR pay() {
 
         log.info("手动触发, 拉取Monitor同步");
-        hkClient.syncMonitor("FKSQ");
+//        hkClient.syncMonitor("FKSQ");
+        hkClient.syncMonitor("YFKSQ");
         return McR.success();
     }
 

+ 26 - 0
mjava-hake/src/main/java/com/malk/hake/schedule/HKScheduleTask.java

@@ -42,4 +42,30 @@ public class HKScheduleTask {
             e.printStackTrace();
         }
     }
+
+    /**
+     * 同步付款: 每次凌晨1点
+     */
+    @Scheduled(cron = "0 0 1 * * ? ")
+    public void timer_3() {
+        try {
+            hkClient.syncMonitor("FKSQ");
+        } catch (Exception e) {
+            // 记录错误信息
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 同步预付款: 每次凌晨2点
+     */
+    @Scheduled(cron = "0 0 2 * * ? ")
+    public void timer_4() {
+        try {
+            hkClient.syncMonitor("YFKSQ");
+        } catch (Exception e) {
+            // 记录错误信息
+            e.printStackTrace();
+        }
+    }
 }

+ 1 - 1
mjava-hake/src/main/java/com/malk/hake/service/HKClient.java

@@ -20,7 +20,7 @@ public interface HKClient {
     void syncContact();
 
     /**
-     * 拉取数据发起
+     * 付款数据同步
      */
     void syncMonitor(String code);
 }

+ 80 - 19
mjava-hake/src/main/java/com/malk/hake/service/impl/HKImplClient.java

@@ -1,5 +1,6 @@
 package com.malk.hake.service.impl;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSON;
 import com.malk.hake.service.HKClient;
 import com.malk.server.aliwork.YDConf;
@@ -7,6 +8,7 @@ import com.malk.server.aliwork.YDParam;
 import com.malk.server.common.McException;
 import com.malk.server.dingtalk.DDConf;
 import com.malk.service.aliwork.YDClient;
+import com.malk.service.aliwork.YDService;
 import com.malk.service.dingtalk.DDClient;
 import com.malk.service.dingtalk.DDClient_Contacts;
 import com.malk.service.dingtalk.DDService;
@@ -36,15 +38,22 @@ public class HKImplClient implements HKClient {
         return "http://116.228.113.106:10001/api/public" + path;
     }
 
+
+    private Map MATE;
+
+    private Map _getMeta() {
+        if (ObjectUtil.isNull(MATE)) {
+            MATE = (Map) UtilFile.readJsonObjectFromResource("static/json/form.json"); // 本地匹配宜搭组件ID
+        }
+        return MATE;
+    }
+
     /**
-     * 通用流程发起
+     * 创建/更新数据
      */
-    @SneakyThrows
-    @Override
-    public Map<String, Object> startProcess(String code, Map data) {
-        Map meta = (Map) UtilFile.readJsonObjectFromResource("static/json/form.json"); // 本地匹配了宜搭组件ID
-        McException.assertAccessException(!meta.containsKey(code), "单据编码未匹配!");
+    private String upsertData(String code, Map data) {
         // 组织单据数据
+        Map meta = _getMeta();
         Map<String, ?> component = (Map) ((Map) meta.get(code)).get("compIds");
         Map formData = UtilMap.empty();
         for (String key : component.keySet()) {
@@ -68,18 +77,27 @@ public class HKImplClient implements HKClient {
         }
         // 发起人匹配规则
         String userId = _getUserId(code, meta, data);
-        Object InstanceId = ydClient.operateData(YDParam.builder()
+        YDConf.FORM_OPERATION operation = YDConf.FORM_OPERATION.start;
+        String processCode = String.valueOf(((Map) meta.get(code)).get("processCode"));
+        if (UtilString.isBlankCompatNull(processCode)) {
+            operation = YDConf.FORM_OPERATION.create;
+        }
+        String formInstanceId = UtilMap.getString(data, "instanceId");
+        YDParam ydParam = YDParam.builder()
                 .formUuid(String.valueOf(((Map) meta.get(code)).get("formUuid")))
-                .processCode(String.valueOf(((Map) meta.get(code)).get("processCode")))
+                .processCode(processCode)
                 .userId(userId)
                 .formDataJson(JSON.toJSONString(formData))
-                .build(), YDConf.FORM_OPERATION.start);
-        // 回传钉钉单据号
-        Thread.sleep(800);
-        Map form = ydClient.queryData(YDParam.builder()
-                .formInstanceId(String.valueOf(InstanceId))
-                .build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
-        return UtilMap.map("ddProcessId, dtNumber", InstanceId, form.get(meta.get(code + "_RC")));
+                .updateFormDataJson(JSON.toJSONString(formData))
+                .useLatestVersion(true)
+                .build();
+        // 匹配更新机制: Upsert操作
+        if (StringUtils.isNotBlank(formInstanceId)) {
+            ydParam.setFormInstanceId(formInstanceId);
+            operation = YDConf.FORM_OPERATION.update;
+        }
+        Object result = ydClient.operateData(ydParam, operation);
+        return StringUtils.isNotBlank(formInstanceId) ? formInstanceId : (String) result;
     }
 
     /// 发起人处理
@@ -99,6 +117,23 @@ public class HKImplClient implements HKClient {
         return userId;
     }
 
+    /**
+     * 通用流程发起
+     */
+    @SneakyThrows
+    @Override
+    public Map<String, Object> startProcess(String code, Map data) {
+        String instanceId = upsertData(code, data);
+        Map meta = _getMeta();
+        // 回传钉钉单据号
+        Thread.sleep(800);
+        Map form = ydClient.queryData(YDParam.builder()
+                .formInstanceId(String.valueOf(instanceId))
+                .build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
+        String url = "https://pxi03f.aliwork.com/APP_QWUVLI1R6XYUXWAOPF6O/processDetail?procInsId=" + instanceId;
+        return UtilMap.map("ddProcessId, dtNumber, Url", instanceId, form.get(meta.get(code + "_RC")), url);
+    }
+
     @Autowired
     private DDClient ddClient;
 
@@ -205,17 +240,43 @@ public class HKImplClient implements HKClient {
         }
     }
 
+    @Autowired
+    private YDService ydService;
+
     /**
-     * 拉取数据发起
+     * 付款数据同步
      */
     @Override
     public void syncMonitor(String code) {
 
-        String rsp = UtilHttp.doPost(_getEnvApi("/Payment"), UtilMap.map("Authorization", AUTH), null, UtilMap.empty());
+        McException.assertAccessException(!Arrays.asList("FKSQ", "YFKSQ").contains(code), "单据编码未匹配");
+        boolean isYF = "YFKSQ".equals(code);
+
+        String rsp = UtilHttp.doPost(_getEnvApi(isYF ? "/PrePayment" : "/Payment"), UtilMap.map("Authorization", AUTH), null, UtilMap.empty());
         Map result = (Map) JSON.parse(rsp);
+        List<Map> dataList = (List<Map>) UtilMap.getList(result, isYF ? "orders" : "rows");
+        log.info("付款数据同步, {} {}", code, dataList.size());
         // prd: 通过 http status 判定, 200 即为成功
-        for (Map row : (List<Map>) UtilMap.getList(result, "rows")) {
-            startProcess(code, row);
+        for (Map row : dataList) {
+            Map search = null;
+            if (isYF) {
+                search = YDConf.searchCondition_TextFiled("textField_lnmyiqan", UtilMap.getString(row, "orderNumber"), "eq");
+            } else {
+                search = YDConf.searchCondition_TextFiled("textField_lnmzbyzu", UtilMap.getString(row, "invoiceNumber"), "eq");
+            }
+            // 匹配是否新增
+            List<Map> formList = ydService.queryFormData(isYF ? "FORM-FCD09241E15D4E53A901D54CA3FBB084PQ6P" : "FORM-4E69EBA1416047078D14601AF17A05643350", JSON.toJSONString(Arrays.asList(search)));
+            if (formList.size() == 0) {
+                // 宜搭付款控制字段
+                row.put("status", "否");       // 反馈中
+                row.put("payed", 0);           // 已付款
+            } else {
+                Map record = formList.get(0);
+                row.put("status", record.get("radioField_ls3ddkie"));       // 反馈中
+                row.put("payed", record.get("numberField_ls3ddkif"));       // 已付款
+                row.put("instanceId", record.get("instanceId"));
+            }
+            upsertData(code, row);
         }
     }
 }

+ 13 - 6
mjava-hake/src/main/resources/static/json/form.json

@@ -177,8 +177,7 @@
   },
   "CGDDJQ_RC": "serialNumberField_lntocd8t",
   "FKSQ": {
-    "formUuid": "FORM-DJC666A1JXZELRB4852YS9GU85MM2BYSAZMNLC",
-    "processCode": "TPROC--DJC666A1JXZELRB4852YS9GU85MM2KZSAZMNLD",
+    "formUuid": "FORM-4E69EBA1416047078D14601AF17A05643350",
     "creator": "",
     "compIds": {
       "textField_lnmyiqad": "supplierNumber",
@@ -186,16 +185,20 @@
       "textField_lnmyiqag": "paymentDate",
       "textField_lnmyiqak": "paymentMethod",
       "textField_lnmyiqan": "dueDate",
+      "textField_ls3ddkia": "supplierInvoiceNumber",
       "textField_lnmzbyzu": "invoiceNumber",
       "numberField_lnmzbyzz": "paymentAmount",
       "numberField_lnmzbz00": "invoiceAmount",
-      "numberField_lnmzbz01": "restAmount"
+      "numberField_lnmzbz01": "restAmount",
+      "textField_ls3ddkib": "supplierAgentDtId",
+      "employeeField_ls3ddkid": "supplierAgentDtId",
+      "radioField_ls3ddkie": "status",
+      "numberField_ls3ddkif": "payed"
     }
   },
   "FKSQ_RC": "serialNumberField_lntocd8t",
   "YFKSQ": {
-    "formUuid": "FORM-GI666T81Q50FXN4QD7AJW6J7U2M52U8TDZMNLG",
-    "processCode": "TPROC--GI666T81Q50FXN4QD7AJW6J7U2M52W9TDZMNLH",
+    "formUuid": "FORM-FCD09241E15D4E53A901D54CA3FBB084PQ6P",
     "creator": "",
     "compIds": {
       "textField_lnmyiqad": "supplierNumber",
@@ -215,7 +218,11 @@
         "numberField_lnmzeuoo": "price",
         "numberField_lnmzeuop": "vat",
         "numberField_lnmzeuoq": "discount"
-      }
+      },
+      "textField_ls3ddkib": "supplierAgentDtId",
+      "textField_ls3ddkib": "employeeField_ls3egxx6",
+      "radioField_ls3ddkie": "status",
+      "numberField_ls3ddkif": "payed"
     }
   },
   "YFKSQ_RC": "serialNumberField_lntocd8t",

+ 1 - 1
mjava-lemeng/src/main/java/com/malk/lemeng/schedule/LMScheduleTask.java

@@ -23,7 +23,7 @@ public class LMScheduleTask {
     /**
      * 每天凌晨4点同步
      */
-    @Scheduled(cron = "0 0 4 * * ? ")
+    @Scheduled(cron = "0 0 3 * * ? ")
     public void syncDingTalkFailedList() {
         try {
             lmService.syncRoster();

+ 112 - 55
mjava-lemeng/src/main/java/com/malk/lemeng/service/impl/LMImplService.java

@@ -12,6 +12,7 @@ import com.malk.service.dingtalk.DDClient_Contacts;
 import com.malk.service.dingtalk.DDClient_Personnel;
 import com.malk.utils.UtilFile;
 import com.malk.utils.UtilMap;
+import lombok.Synchronized;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -116,6 +117,8 @@ public class LMImplService implements LMService {
     @Override
     public void syncDepartment() {
 
+        List<Map> budgetList = new ArrayList<>();
+
         // 部门已同步数据
         List<Map> dataList = ydService.queryFormData_all(YDParam.builder()
                 .formUuid("FORM-B6F662B18C3F4D7D855CFE50243394AFQPOH")
@@ -123,89 +126,143 @@ public class LMImplService implements LMService {
         // 匹配钉钉通讯录
         List<Long> deptList = ddClient_contacts.getDepartmentId_all(ddClient.getAccessToken(), true, DDConf.TOP_DEPARTMENT);
         for (long deptId : deptList) {
+            // 人员为空也同步 [累计到父部门]
             List<String> userIds = ddClient_contacts.listDepartmentUserId(ddClient.getAccessToken(), deptId);
-            if (userIds.size() == 0) {
-                continue;
-            }
             Map info = ddClient_contacts.getDepartmentInfo(ddClient.getAccessToken(), deptId);
             Map formData = UtilMap.map("textField_lpcff8zu, numberField_lr70cqsl, numberField_lr70cqsk", info.get("name"), info.get("parent_id"), info.get("dept_id"));
-            // todo 部门ID写入需要是string集合\数组, 封装
-            formData.putAll(UtilMap.map("employeeField_lpmbmyaa, departmentSelectField_lpaks312", info.get("dept_manager_userid_list"), Arrays.asList(String.valueOf(info.get("dept_id")))));//            float budget = userIds.size() * 200; // 部门人均
+            formData.putAll(UtilMap.map("employeeField_lpmbmyaa, departmentSelectField_lpaks312", info.get("dept_manager_userid_list"), Arrays.asList(String.valueOf(info.get("dept_id")))));
             float budget = userIds.size() * BUDGET_PER; // 部门人均
-            formData.putAll(UtilMap.map("numberField_lr71bkuj, employeeField_lr71bkui, numberField_lr71mvbk", userIds.size(), userIds, budget));
-            // Upsert操作, 记录当月预算
+            formData.putAll(UtilMap.map("numberField_lr71bkuj, employeeField_lr71bkui, numberField_lr71mvbk, numberField_lr7yq38c", userIds.size(), userIds, budget, 0));
+            // 仅记录当月预算 [记录预算金额]
             Optional optional = dataList.stream().filter(item -> deptId == UtilMap.getLong(item, "numberField_lr70cqsk")).findAny();
             if (optional.isPresent()) {
-                formData.put("employeeField_lr71bkui", UtilMap.getString((Map) optional.get(), "employeeField_lr71bkui_id")); // 非常规组件数据处理
-                ydClient.operateData(YDParam.builder()
-                        .formInstanceId(UtilMap.getString((Map) optional.get(), "instanceId"))
-                        .updateFormDataJson(JSON.toJSONString(formData))
-                        .build(), YDConf.FORM_OPERATION.update);
-                continue;
+                formData.put("instanceId", UtilMap.getString((Map) optional.get(), "instanceId"));
+                formData.put("radioField_lpaks316", UtilMap.getString((Map) optional.get(), "radioField_lpaks316")); // 记录值
+            } else {
+                formData.putAll(UtilMap.map("numberField_lpaks318, numberField_lpayajrp, numberField_lpayajrn", 0, 0, 0));
+                formData.putAll(UtilMap.map("radioField_lpaks316", "是")); // 默认值
             }
-            formData.putAll(UtilMap.map("numberField_lpaks318, numberField_lpayajrp, numberField_lpayajrn", 0, 0, 0));
-            formData.putAll(UtilMap.map("radioField_lpaks316", "是")); // test
-            ydClient.operateData(YDParam.builder()
+            //formData.putAll(UtilMap.map("numberField_lpaks318, numberField_lpayajrp, numberField_lpayajrn", 0, 0, 0));
+            budgetList.add(formData);
+        }
+
+        // prd 不存在一人多部门情况, 若是涉及行政归属则手动维护
+        List<Map> manualList = ydService.queryFormData_all(YDParam.builder()
+                .formUuid("FORM-A192B0134C184B1A84A791F322AA4D60N4F2")
+                .build());
+        for (Map data : manualList) {
+            try {
+                String userId = String.valueOf(UtilMap.getList(data, "employeeField_lroz3y2w_id").get(0));
+                Map srcDpet = budgetList.stream().filter(item -> UtilMap.getList(item, "employeeField_lr71bkui").contains(userId)).findAny().get();
+                updateBalance(srcDpet, -BUDGET_PER, -1); // 去除原部门个人金额
+
+                boolean multi = StringUtils.isNotBlank(UtilMap.getString(data, "numberField_lroz3y37"));
+                if (multi) {
+                    Map curDpet = budgetList.stream().filter(item -> data.get("numberField_lroz3y37").equals(item.get("numberField_lr70cqsk"))).findAny().get();
+                    updateBalance(curDpet, BUDGET_PER / 2, 0.5f); // 累加部门2个人金额一半
+                }
+                Map curDpet = budgetList.stream().filter(item -> data.get("numberField_lr70cqsk").equals(item.get("numberField_lr70cqsk"))).findAny().get();
+                updateBalance(curDpet, multi ? BUDGET_PER / 2 : BUDGET_PER, multi ? 0.5f : 1f); // 累加部门1个人金额
+            } catch (Exception e) {
+                log.error(e.getMessage(), e);
+            }
+        }
+
+        // prd 累计子节点
+        for (Map formData : budgetList) {
+            accBudget(formData, budgetList);
+        }
+        // prd 大区拆分一半
+        List<Map> halfList = ydService.queryFormData_all(YDParam.builder()
+                .formUuid("FORM-1393DC7A16424FC1BC84146C88586F91Q012")
+                .build());
+        for (Map dept : halfList) {
+            try {
+                // 顶部公司
+                Long deptId = UtilMap.getLong(dept, "numberField_lr70cqsk");
+                Map pData = budgetList.stream().filter(item -> deptId == UtilMap.getLong(item, "numberField_lr70cqsk")).findAny().get();
+                // 下属公司
+                List<Long> subList = ddClient_contacts.getDepartmentId_all(ddClient.getAccessToken(), false, deptId);
+                for (Long dId : subList) {
+                    Map dData = budgetList.stream().filter(item -> dId == UtilMap.getLong(item, "numberField_lr70cqsk")).findAny().get();
+                    float budget = UtilMap.getFloat(dData, "numberField_lr71mvbk");
+                    if (budget <= 0) {
+                        continue;
+                    }
+                    budget = budget / 2;
+                    float quota = UtilMap.getFloat(dData, "numberField_lr71bkuj") / 2;
+                    updateBalance(dData, -budget, -quota);      // 删除原余额一半
+                    updateBalance(pData, budget, quota);        // 累计新余额一半
+                }
+            } catch (Exception e) {
+                log.error(e.getMessage(), e);
+            }
+        }
+
+        // Upsert操作, 记录当月预算
+        for (Map formData : budgetList) {
+            String formInstanceId = UtilMap.getString(formData, "instanceId");
+            YDParam ydParam = YDParam.builder()
                     .formUuid("FORM-B6F662B18C3F4D7D855CFE50243394AFQPOH")
                     .formDataJson(JSON.toJSONString(formData))
-                    .build(), YDConf.FORM_OPERATION.create);
+                    .updateFormDataJson(JSON.toJSONString(formData))
+                    .build();
+            YDConf.FORM_OPERATION operation = YDConf.FORM_OPERATION.create;
+            if (StringUtils.isNotBlank(formInstanceId)) {
+                ydParam.setFormInstanceId(formInstanceId);
+                operation = YDConf.FORM_OPERATION.update;
+            }
+            ydClient.operateData(ydParam, operation);
+        }
+    }
+
+    // 非子阶段归属到上一层部门
+    private void accBudget(Map formData, List<Map> dataList) {
+        if ("否".equals(formData.get("radioField_lpaks316"))) {
+            try {
+                Map pData = dataList.stream().filter(item -> formData.get("numberField_lr70cqsl").equals(item.get("numberField_lr70cqsk"))).findAny().get();
+                float budget = UtilMap.getFloat(formData, "numberField_lr71mvbk");
+                float quota = UtilMap.getFloat(formData, "numberField_lr71bkuj");
+                updateBalance(formData, -budget, -quota);   // 删除原余额
+                updateBalance(pData, budget, quota);        // 累计新余额
+                accBudget(pData, dataList);                 // 是递归出口
+            } catch (Exception e) {
+                log.error(e.getMessage(), e);
+            }
         }
     }
 
     /// 涉及行政归属, 拆分规则
-    private void updateBalance(Map item, int budget, float quota) {
-        item.put("numberField_lpaks318", UtilMap.getFloat(item, "numberField_lpaks318") + budget); // 总经费
-        item.put("numberField_lpayajrn", UtilMap.getFloat(item, "numberField_lpayajrn") + budget); // 可用余额
-        item.put("numberField_lr7yq38c", UtilMap.getFloat(item, "numberField_lr7yq38c") + budget); // 修改前总金额
+    private void updateBalance(Map item, float budget, float quota) {
+        item.put("numberField_lr7yq38c", UtilMap.getFloat(item, "numberField_lr7yq38c") + budget);                                                       // 调差金额
         item.put("numberField_lr71mvbk", UtilMap.getFloat(item, "numberField_lr71mvbk") + budget); // 当月预计预算
-        item.put("numberField_lr71bkuj", UtilMap.getInt(item, "numberField_lr71bkuj") + quota);    // 部门人数
+        item.put("numberField_lr71bkuj", UtilMap.getFloat(item, "numberField_lr71bkuj") + quota);  // 部门人数
     }
 
     /**
      * 部门预算统计
      */
     @Override
+    @Synchronized
     public void calcBudget() {
 
         // 部门已同步数据
         List<Map> dataList = ydService.queryFormData_all(YDParam.builder()
                 .formUuid("FORM-B6F662B18C3F4D7D855CFE50243394AFQPOH")
                 .build());
-        // prd 不存在一人多部门情况, 若是涉及行政归属则手动维护
-        List<Map> manualList = ydService.queryFormData_all(YDParam.builder()
-                .formUuid("FORM-A192B0134C184B1A84A791F322AA4D60N4F2")
-                .build());
-        for (Map data : manualList) {
-            String userId = String.valueOf(UtilMap.getList(data, "employeeField_lroz3y2w_id").get(0));
-            Map srcDpet = dataList.stream().filter(item -> UtilMap.getList(data, "employeeField_lr71bkui_id").contains(userId)).findAny().get();
-            updateBalance(srcDpet, -BUDGET_PER, -1); // 去除原部门个人金额
-
-            boolean multi = StringUtils.isNotBlank(UtilMap.getString(data, "numberField_lroz3y37"));
-            if (multi) {
-                Map curDpet = dataList.stream().filter(item -> UtilMap.getList(data, "numberField_lroz3y37").contains(item.get("numberField_lr70cqsk"))).findAny().get();
-                updateBalance(curDpet, BUDGET_PER / 2, 0.5f); // 累加部门2个人金额一半
-            }
-            Map curDpet = dataList.stream().filter(item -> UtilMap.getList(data, "numberField_lr70cqsk").contains(item.get("numberField_lr70cqsk"))).findAny().get();
-            updateBalance(curDpet, multi ? BUDGET_PER / 2 : BUDGET_PER, multi ? 0.5f : 1f); // 累加部门1个人金额
-        }
-
-        // prd todo 非独立预算部门, 累计到父部门, 若父部门为空, 持续往上累加
         dataList.forEach(item -> {
-            if ("是".equals(item.get("radioField_lpaks316"))) {
-                int budget = UtilMap.getInt(item, "numberField_lr71mvbk");
-                // 冗余修改记录, 保留修改前金额并重置budget, 避免重复调用
-                item.putAll(UtilMap.map("numberField_lr7yq38c, numberField_lr71mvbk", UtilMap.getFloat(item, "numberField_lpaks318"), 0));
-                item.put("numberField_lpaks318", UtilMap.getFloat(item, "numberField_lpaks318") + budget);
-                item.put("numberField_lpayajrn", UtilMap.getFloat(item, "numberField_lpayajrn") + budget);
-                item.putAll(UtilMap.map("employeeField_lr71bkui, departmentSelectField_lpaks312", item.get("employeeField_lr71bkui_id"), item.get("departmentSelectField_lpaks312_id"))); // 非常规组件数据处理
-//                ydClient.operateData(YDParam.builder()
-//                        .formInstanceId(UtilMap.getString(item, "instanceId"))
-//                        .updateFormDataJson(JSON.toJSONString(item))
-//                        .build(), YDConf.FORM_OPERATION.update);
-            }
+            int budget = UtilMap.getInt(item, "numberField_lr71mvbk");
+            // 清空当月余额, 避免重复调用
+            item.put("numberField_lr71mvbk", 0);
+            item.put("numberField_lpaks318", UtilMap.getFloat(item, "numberField_lpaks318") + budget);
+            item.put("numberField_lpayajrn", UtilMap.getFloat(item, "numberField_lpayajrn") + budget);
+            // 非常规组件数据处理
+            item.putAll(UtilMap.map("employeeField_lr71bkui, departmentSelectField_lpaks312", item.get("employeeField_lr71bkui_id"), item.get("departmentSelectField_lpaks312_id")));
+            ydClient.operateData(YDParam.builder()
+                    .formInstanceId(UtilMap.getString(item, "instanceId"))
+                    .updateFormDataJson(JSON.toJSONString(item))
+                    .build(), YDConf.FORM_OPERATION.update);
         });
-
-
     }
 
     /// test

+ 8 - 8
mjava-lemeng/src/main/resources/application-prod.yml

@@ -1,8 +1,8 @@
 # 环境配置
 server:
-  port: 9015
+  port: 9024
   servlet:
-    context-path: /api/gewu
+    context-path: /api/lemeng
 
 # condition
 spel:
@@ -24,15 +24,15 @@ spring:
 
 # dingtalk
 dingtalk:
-  agentId: 2660236361
-  appKey: dinguuieqv4lkvp3vkaf
-  appSecret: N5JjPU9RDk77pTze5vRWmiWLDjPKeYJV3sQrmYgN_SC57nOALmj570rVB0SGGcQQ
-  corpId: dingec9ee223c2b3a671
+  agentId: 2854103578
+  appKey: dingdj7v5iusxvpj049e
+  appSecret: LB6FLLrdskwqMSMEaAa2gNazkbVQ1YtFNjgzGc1CpTlUfCOMeqhP73vx_gQkVyX0
+  corpId: ding321c72787fffc78b35c2f4657eb6378f
   aesKey:
   token:
   operator: ""   # OA管理员账号
 
 # aliwork
 aliwork:
-  appType: APP_FX4PR3OWW4WCFOHI2ZSR
-  systemToken: 2G766HA1RDHC1C2CCRY62544NL8L21T5786KL27
+  appType: APP_YPF7S88D9O139KRVM83J
+  systemToken: 3Z966P91XA1FTYVQ7UTVLDTGJ4613UJUR7ONLT7C

File diff suppressed because it is too large
+ 13927 - 8304
mjava-luyi/src/main/resources/mjs/mjs.js


File diff suppressed because it is too large
+ 1 - 1
mjava-luyi/src/main/resources/mjs/mjs.min.js


+ 1 - 1
mjava-mcli/src/main/java/com/malk/mcli/test/JSPTestController.java

@@ -18,7 +18,7 @@ import java.util.Map;
 /**
  * JSP在SpringBoot内运行
  * -
- * 1. 在 file - project structure - facets 下, 添加web以及对应的路径. 注意 web.xml 直接添加, 完成后将 webapp 文件夹移动到 src/main 下面
+ * 1. 在 file - project structure - facets 下, 添加web以及对应的路径. 注意 web2.xml 直接添加, 完成后将 webapp 文件夹移动到 src/main 下面
  * 2. 添加依赖, 注意 tomcat-embed-jasper 需要在子项目内引用才有效, 余下依赖引入主项目即可
  * 3. 项目配置, (jsp为存放jsp文件夹) spring: mvc: view:  -->  prefix: /WEB-INF/jsp/  -->  suffix: .jsp
  * 4. jsp文件有三种语法, JSP表达式 / EL表达式 / JSTL标签库; 正常书写 html, 数据获取通过 ModelAndView 传递进来 [c标签最实用]

+ 1 - 1
mjava-zhuogao/pom.xml

@@ -9,7 +9,7 @@
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>mjava-malk</artifactId>
+    <artifactId>mjava-zhuogao</artifactId>
     <description>案例项目, 用于拷贝</description>
 
     <properties>

File diff suppressed because it is too large
+ 0 - 1
mjava-zhuogao/src/main/resources/static/web/js/npm.ant-design.a5474300736ba6989b23.0.1.0.js


mjava-zhuogao/src/main/resources/static/web/css/app.1e205474.css → mjava-zhuogao/src/main/resources/static/web2/css/app.1e205474.css


mjava-zhuogao/src/main/resources/static/web/css/app.1e205474.css.gz → mjava-zhuogao/src/main/resources/static/web2/css/app.1e205474.css.gz


mjava-zhuogao/src/main/resources/static/web/css/chunk-020bde4f.8cd353de.css → mjava-zhuogao/src/main/resources/static/web2/css/chunk-020bde4f.8cd353de.css


mjava-zhuogao/src/main/resources/static/web/css/chunk-03803d04.d28c0d77.css → mjava-zhuogao/src/main/resources/static/web2/css/chunk-03803d04.d28c0d77.css


mjava-zhuogao/src/main/resources/static/web/css/chunk-09d432c5.08e92398.css → mjava-zhuogao/src/main/resources/static/web2/css/chunk-09d432c5.08e92398.css


mjava-zhuogao/src/main/resources/static/web/css/chunk-0dc3c267.a04b5e6e.css → mjava-zhuogao/src/main/resources/static/web2/css/chunk-0dc3c267.a04b5e6e.css


mjava-zhuogao/src/main/resources/static/web/css/chunk-115de532.efcd021e.css → mjava-zhuogao/src/main/resources/static/web2/css/chunk-115de532.efcd021e.css


mjava-zhuogao/src/main/resources/static/web/css/chunk-13e18d6c.29149725.css → mjava-zhuogao/src/main/resources/static/web2/css/chunk-13e18d6c.29149725.css


mjava-zhuogao/src/main/resources/static/web/css/chunk-16622649.5f788a64.css → mjava-zhuogao/src/main/resources/static/web2/css/chunk-16622649.5f788a64.css


mjava-zhuogao/src/main/resources/static/web/css/chunk-1ee91c18.2c5e6b95.css → mjava-zhuogao/src/main/resources/static/web2/css/chunk-1ee91c18.2c5e6b95.css


mjava-zhuogao/src/main/resources/static/web/css/chunk-241c9cfc.2ad4aee4.css → mjava-zhuogao/src/main/resources/static/web2/css/chunk-241c9cfc.2ad4aee4.css


mjava-zhuogao/src/main/resources/static/web/css/chunk-2b3d1d97.3e61a36e.css → mjava-zhuogao/src/main/resources/static/web2/css/chunk-2b3d1d97.3e61a36e.css


mjava-zhuogao/src/main/resources/static/web/css/chunk-34786a36.9b156963.css → mjava-zhuogao/src/main/resources/static/web2/css/chunk-34786a36.9b156963.css


mjava-zhuogao/src/main/resources/static/web/css/chunk-35d77297.5dd7accd.css → mjava-zhuogao/src/main/resources/static/web2/css/chunk-35d77297.5dd7accd.css


mjava-zhuogao/src/main/resources/static/web/css/chunk-35d77297.5dd7accd.css.gz → mjava-zhuogao/src/main/resources/static/web2/css/chunk-35d77297.5dd7accd.css.gz


mjava-zhuogao/src/main/resources/static/web/css/chunk-3f61e0f1.eef13e95.css → mjava-zhuogao/src/main/resources/static/web2/css/chunk-3f61e0f1.eef13e95.css


mjava-zhuogao/src/main/resources/static/web/css/chunk-4e109df4.b671580b.css → mjava-zhuogao/src/main/resources/static/web2/css/chunk-4e109df4.b671580b.css


mjava-zhuogao/src/main/resources/static/web/css/chunk-5d241c38.e69d3699.css → mjava-zhuogao/src/main/resources/static/web2/css/chunk-5d241c38.e69d3699.css


mjava-zhuogao/src/main/resources/static/web/css/chunk-6279ca32.6c624d50.css → mjava-zhuogao/src/main/resources/static/web2/css/chunk-6279ca32.6c624d50.css


mjava-zhuogao/src/main/resources/static/web/css/chunk-65abd8c2.182cda6f.css → mjava-zhuogao/src/main/resources/static/web2/css/chunk-65abd8c2.182cda6f.css


mjava-zhuogao/src/main/resources/static/web/css/chunk-6b83ef66.f91727df.css → mjava-zhuogao/src/main/resources/static/web2/css/chunk-6b83ef66.f91727df.css


mjava-zhuogao/src/main/resources/static/web/css/chunk-6d750ba2.b1127071.css → mjava-zhuogao/src/main/resources/static/web2/css/chunk-6d750ba2.b1127071.css


mjava-zhuogao/src/main/resources/static/web/css/chunk-723eb2cc.5ca1aba6.css → mjava-zhuogao/src/main/resources/static/web2/css/chunk-723eb2cc.5ca1aba6.css


mjava-zhuogao/src/main/resources/static/web/css/chunk-767b9dea.7228e7cc.css → mjava-zhuogao/src/main/resources/static/web2/css/chunk-767b9dea.7228e7cc.css


mjava-zhuogao/src/main/resources/static/web/css/chunk-87f1c134.0cd21f17.css → mjava-zhuogao/src/main/resources/static/web2/css/chunk-87f1c134.0cd21f17.css


mjava-zhuogao/src/main/resources/static/web/css/chunk-b189ddd8.7a1576f4.css → mjava-zhuogao/src/main/resources/static/web2/css/chunk-b189ddd8.7a1576f4.css


mjava-zhuogao/src/main/resources/static/web/css/chunk-d773cad0.b7a55ecf.css → mjava-zhuogao/src/main/resources/static/web2/css/chunk-d773cad0.b7a55ecf.css


mjava-zhuogao/src/main/resources/static/web/css/chunk-de510a84.694e0ad8.css → mjava-zhuogao/src/main/resources/static/web2/css/chunk-de510a84.694e0ad8.css


mjava-zhuogao/src/main/resources/static/web/css/chunk-fd2bf652.2e6b27df.css → mjava-zhuogao/src/main/resources/static/web2/css/chunk-fd2bf652.2e6b27df.css


mjava-zhuogao/src/main/resources/static/web/css/npm.ant-design-vue.05a448c8.css → mjava-zhuogao/src/main/resources/static/web2/css/npm.ant-design-vue.05a448c8.css


mjava-zhuogao/src/main/resources/static/web/css/npm.ant-design-vue.05a448c8.css.gz → mjava-zhuogao/src/main/resources/static/web2/css/npm.ant-design-vue.05a448c8.css.gz


mjava-zhuogao/src/main/resources/static/web/css/npm.element-ui.2fe571ab.css → mjava-zhuogao/src/main/resources/static/web2/css/npm.element-ui.2fe571ab.css


mjava-zhuogao/src/main/resources/static/web/css/npm.element-ui.2fe571ab.css.gz → mjava-zhuogao/src/main/resources/static/web2/css/npm.element-ui.2fe571ab.css.gz


mjava-zhuogao/src/main/resources/static/web/css/npm.quasar.2415b056.css → mjava-zhuogao/src/main/resources/static/web2/css/npm.quasar.2415b056.css


mjava-zhuogao/src/main/resources/static/web/css/npm.swiper.23437b54.css → mjava-zhuogao/src/main/resources/static/web2/css/npm.swiper.23437b54.css


mjava-zhuogao/src/main/resources/static/web/css/npm.swiper.23437b54.css.gz → mjava-zhuogao/src/main/resources/static/web2/css/npm.swiper.23437b54.css.gz


mjava-zhuogao/src/main/resources/static/web/favicon.ico → mjava-zhuogao/src/main/resources/static/web2/favicon.ico


mjava-zhuogao/src/main/resources/static/web/fonts/element-icons.535877f5.woff → mjava-zhuogao/src/main/resources/static/web2/fonts/element-icons.535877f5.woff


mjava-zhuogao/src/main/resources/static/web/fonts/element-icons.732389de.ttf → mjava-zhuogao/src/main/resources/static/web2/fonts/element-icons.732389de.ttf


mjava-zhuogao/src/main/resources/static/web/fonts/flUhRq6tzZclQEJ-Vdg-IuiaDsNa.29b882f0.woff → mjava-zhuogao/src/main/resources/static/web2/fonts/flUhRq6tzZclQEJ-Vdg-IuiaDsNa.29b882f0.woff


mjava-zhuogao/src/main/resources/static/web/fonts/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.0509ab09.woff2 → mjava-zhuogao/src/main/resources/static/web2/fonts/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.0509ab09.woff2


mjava-zhuogao/src/main/resources/static/web/img/+pk-select.472d7dee.png → mjava-zhuogao/src/main/resources/static/web2/img/+pk-select.472d7dee.png


mjava-zhuogao/src/main/resources/static/web/img/404.0a45bba9.jpg → mjava-zhuogao/src/main/resources/static/web2/img/404.0a45bba9.jpg


mjava-zhuogao/src/main/resources/static/web/img/link.038ba0a1.png → mjava-zhuogao/src/main/resources/static/web2/img/link.038ba0a1.png


mjava-zhuogao/src/main/resources/static/web/img/logo.a24f00e9.png → mjava-zhuogao/src/main/resources/static/web2/img/logo.a24f00e9.png


mjava-zhuogao/src/main/resources/static/web/img/logo.f2cf67e8.png → mjava-zhuogao/src/main/resources/static/web2/img/logo.f2cf67e8.png


mjava-zhuogao/src/main/resources/static/web/img/look.68727e17.png → mjava-zhuogao/src/main/resources/static/web2/img/look.68727e17.png


mjava-zhuogao/src/main/resources/static/web/img/no-data-pk.fc4bd766.png → mjava-zhuogao/src/main/resources/static/web2/img/no-data-pk.fc4bd766.png


mjava-zhuogao/src/main/resources/static/web/img/no-data-search.26341beb.png → mjava-zhuogao/src/main/resources/static/web2/img/no-data-search.26341beb.png


mjava-zhuogao/src/main/resources/static/web/img/pk-relation.05ad7b4b.png → mjava-zhuogao/src/main/resources/static/web2/img/pk-relation.05ad7b4b.png


mjava-zhuogao/src/main/resources/static/web/img/player.a587f6e2.png → mjava-zhuogao/src/main/resources/static/web2/img/player.a587f6e2.png


mjava-zhuogao/src/main/resources/static/web/img/reset.e99a88b6.png → mjava-zhuogao/src/main/resources/static/web2/img/reset.e99a88b6.png


mjava-zhuogao/src/main/resources/static/web/img/search-to.c3c08449.png → mjava-zhuogao/src/main/resources/static/web2/img/search-to.c3c08449.png


mjava-zhuogao/src/main/resources/static/web/img/selected.52f9c8b3.png → mjava-zhuogao/src/main/resources/static/web2/img/selected.52f9c8b3.png


mjava-zhuogao/src/main/resources/static/web/index.html → mjava-zhuogao/src/main/resources/static/web2/index.html


File diff suppressed because it is too large
+ 1 - 1
mjava-zhuogao/src/main/resources/static/web/js/app.846c2d9e4d31a40867a1.0.1.0.js


mjava-zhuogao/src/main/resources/static/web/js/app.846c2d9e4d31a40867a1.0.1.0.js.gz → mjava-zhuogao/src/main/resources/static/web2/js/app.846c2d9e4d31a40867a1.0.1.0.js.gz


mjava-zhuogao/src/main/resources/static/web/js/chunk-020bde4f.bfc01ad1cc29420aedd8.0.1.0.js → mjava-zhuogao/src/main/resources/static/web2/js/chunk-020bde4f.bfc01ad1cc29420aedd8.0.1.0.js


mjava-zhuogao/src/main/resources/static/web/js/chunk-03803d04.c3b16d4a6c0420874d46.0.1.0.js → mjava-zhuogao/src/main/resources/static/web2/js/chunk-03803d04.c3b16d4a6c0420874d46.0.1.0.js


mjava-zhuogao/src/main/resources/static/web/js/chunk-09d432c5.aaf5e68687314c59cf37.0.1.0.js → mjava-zhuogao/src/main/resources/static/web2/js/chunk-09d432c5.aaf5e68687314c59cf37.0.1.0.js


mjava-zhuogao/src/main/resources/static/web/js/chunk-0dc3c267.8b028092cee40dc46809.0.1.0.js → mjava-zhuogao/src/main/resources/static/web2/js/chunk-0dc3c267.8b028092cee40dc46809.0.1.0.js


mjava-zhuogao/src/main/resources/static/web/js/chunk-0dc3c267.8b028092cee40dc46809.0.1.0.js.gz → mjava-zhuogao/src/main/resources/static/web2/js/chunk-0dc3c267.8b028092cee40dc46809.0.1.0.js.gz


mjava-zhuogao/src/main/resources/static/web/js/chunk-115de532.80e8627a6888fd0e994b.0.1.0.js → mjava-zhuogao/src/main/resources/static/web2/js/chunk-115de532.80e8627a6888fd0e994b.0.1.0.js


mjava-zhuogao/src/main/resources/static/web/js/chunk-13e18d6c.e25ad72ebef0e4b19e1c.0.1.0.js → mjava-zhuogao/src/main/resources/static/web2/js/chunk-13e18d6c.e25ad72ebef0e4b19e1c.0.1.0.js


mjava-zhuogao/src/main/resources/static/web/js/chunk-16622649.b7e490fc848c6248754e.0.1.0.js → mjava-zhuogao/src/main/resources/static/web2/js/chunk-16622649.b7e490fc848c6248754e.0.1.0.js


mjava-zhuogao/src/main/resources/static/web/js/chunk-1ee91c18.87ca582b35170059e2f6.0.1.0.js → mjava-zhuogao/src/main/resources/static/web2/js/chunk-1ee91c18.87ca582b35170059e2f6.0.1.0.js


mjava-zhuogao/src/main/resources/static/web/js/chunk-241c9cfc.036cf7a85f38dd5baf5a.0.1.0.js → mjava-zhuogao/src/main/resources/static/web2/js/chunk-241c9cfc.036cf7a85f38dd5baf5a.0.1.0.js


mjava-zhuogao/src/main/resources/static/web/js/chunk-2b3d1d97.35059d0318a37d5d366c.0.1.0.js → mjava-zhuogao/src/main/resources/static/web2/js/chunk-2b3d1d97.35059d0318a37d5d366c.0.1.0.js


mjava-zhuogao/src/main/resources/static/web/js/chunk-2d0b68f8.f17891813c7697f3d507.0.1.0.js → mjava-zhuogao/src/main/resources/static/web2/js/chunk-2d0b68f8.f17891813c7697f3d507.0.1.0.js


mjava-zhuogao/src/main/resources/static/web/js/chunk-2d0c72d6.fc0c8ef08f288eee9cc8.0.1.0.js → mjava-zhuogao/src/main/resources/static/web2/js/chunk-2d0c72d6.fc0c8ef08f288eee9cc8.0.1.0.js


mjava-zhuogao/src/main/resources/static/web/js/chunk-2d0f07e2.3e78412d2d619e11a117.0.1.0.js → mjava-zhuogao/src/main/resources/static/web2/js/chunk-2d0f07e2.3e78412d2d619e11a117.0.1.0.js


mjava-zhuogao/src/main/resources/static/web/js/chunk-34786a36.a5f6992b4019533b6d0a.0.1.0.js → mjava-zhuogao/src/main/resources/static/web2/js/chunk-34786a36.a5f6992b4019533b6d0a.0.1.0.js


mjava-zhuogao/src/main/resources/static/web/js/chunk-34786a36.a5f6992b4019533b6d0a.0.1.0.js.gz → mjava-zhuogao/src/main/resources/static/web2/js/chunk-34786a36.a5f6992b4019533b6d0a.0.1.0.js.gz


mjava-zhuogao/src/main/resources/static/web/js/chunk-35d77297.b3d8d5413edc0d855ad6.0.1.0.js → mjava-zhuogao/src/main/resources/static/web2/js/chunk-35d77297.b3d8d5413edc0d855ad6.0.1.0.js


mjava-zhuogao/src/main/resources/static/web/js/chunk-35d77297.b3d8d5413edc0d855ad6.0.1.0.js.LICENSE.txt → mjava-zhuogao/src/main/resources/static/web2/js/chunk-35d77297.b3d8d5413edc0d855ad6.0.1.0.js.LICENSE.txt


mjava-zhuogao/src/main/resources/static/web/js/chunk-35d77297.b3d8d5413edc0d855ad6.0.1.0.js.gz → mjava-zhuogao/src/main/resources/static/web2/js/chunk-35d77297.b3d8d5413edc0d855ad6.0.1.0.js.gz


+ 0 - 0
mjava-zhuogao/src/main/resources/static/web/js/chunk-3f61e0f1.77a2e7a9ec04fb37d736.0.1.0.js


Some files were not shown because too many files changed in this diff