Kaynağa Gözat

锡鼎部门匹配更新

pruple_boy 2 yıl önce
ebeveyn
işleme
c005bb6b86
37 değiştirilmiş dosya ile 425 ekleme ve 569 silme
  1. 1 0
      mjava-guyuan/pom.xml
  2. 72 40
      mjava-lichen/src/main/java/com/malk/lichen/controller/LiChenController.java
  3. 2 2
      mjava/target/maven-archiver/pom.properties
  4. 2 0
      mjava-lichen/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
  5. 2 0
      mjava-lichen/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
  6. BIN
      mjava-lichen/target/mjava-lichen.jar.original
  7. 2 2
      mjava-rongzhi/src/main/java/com/malk/rongzhi/service/impl/RZServiceImpl.java
  8. 40 5
      mjava-xiding/src/main/java/com/malk/xiding/controller/XDController.java
  9. 4 1
      mjava-xiding/src/main/java/com/malk/xiding/repository/dao/XdDdApproveRecordDao2.java
  10. 5 1
      mjava-xiding/src/main/java/com/malk/xiding/repository/entity/XdDdApproveRecordPo.java
  11. 19 2
      mjava-xiding/src/main/java/com/malk/xiding/schedule/XDScheduleTask.java
  12. 7 0
      mjava-xiding/src/main/java/com/malk/xiding/service/XDService.java
  13. 86 17
      mjava-xiding/src/main/java/com/malk/xiding/service/impl/XDImplService.java
  14. 1 0
      mjava-xiding/src/main/resources/application-dev.yml
  15. 1 0
      mjava-xiding/src/main/resources/application-prod.yml
  16. 1 0
      mjava-xiding/target/classes/application-dev.yml
  17. 1 0
      mjava-xiding/target/classes/application-prod.yml
  18. 2 0
      mjava-xiding/target/generated-sources/java/com/malk/xiding/repository/entity/QXdDdApproveRecordPo.java
  19. 1 1
      mjava-xiding/target/maven-archiver/pom.properties
  20. 19 0
      mjava-xiding/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
  21. BIN
      mjava-xiding/target/mjava-xiding.jar.original
  22. 1 0
      mjava/src/main/java/com/malk/server/aliwork/YDConf.java
  23. 48 3
      mjava/src/main/java/com/malk/server/dingtalk/DDR_New.java
  24. 4 0
      mjava/src/main/java/com/malk/service/aliwork/impl/YDClientImpl.java
  25. 8 0
      mjava/src/main/java/com/malk/service/dingtalk/DDClient_Attendance.java
  26. 9 5
      mjava/src/main/java/com/malk/service/dingtalk/DDClient_Contacts.java
  27. 8 0
      mjava/src/main/java/com/malk/service/dingtalk/DDService.java
  28. 16 0
      mjava/src/main/java/com/malk/service/dingtalk/impl/DDImplClient_Attendance.java
  29. 20 7
      mjava/src/main/java/com/malk/service/dingtalk/impl/DDImplClient_Contacts.java
  30. 43 0
      mjava/src/main/java/com/malk/service/dingtalk/impl/DDImplService.java
  31. 0 41
      mjava/target/generated-sources/java/com/malk/base/QBasePo.java
  32. 0 37
      mjava/target/generated-sources/java/com/malk/base/QJpaMap.java
  33. 0 70
      mjava/target/generated-sources/java/com/malk/repository/entity/mutual/QMcAuthorizationPo.java
  34. 0 50
      mjava/target/generated-sources/java/com/malk/repository/entity/primary/QMcTablePo.java
  35. 0 40
      mjava/target/generated-sources/java/com/malk/repository/entity/slave/QJpaMapSlave.java
  36. 0 137
      mjava/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
  37. 0 108
      mjava/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst

+ 1 - 0
mjava-guyuan/pom.xml

@@ -28,6 +28,7 @@
         <dependency>
         <dependency>
             <groupId>com.tencentcloudapi</groupId>
             <groupId>com.tencentcloudapi</groupId>
             <artifactId>tencentcloud-sdk-java</artifactId>
             <artifactId>tencentcloud-sdk-java</artifactId>
+            <version>3.1.322</version>
         </dependency>
         </dependency>
     </dependencies>
     </dependencies>
 
 

+ 72 - 40
mjava-lichen/src/main/java/com/malk/lichen/controller/LiChenController.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
 import com.malk.Util.UtilMap;
 import com.malk.Util.UtilMap;
 import com.malk.server.aliwork.YDConf;
 import com.malk.server.aliwork.YDConf;
 import com.malk.server.aliwork.YDParam;
 import com.malk.server.aliwork.YDParam;
+import com.malk.server.common.McException;
 import com.malk.server.common.McR;
 import com.malk.server.common.McR;
 import com.malk.service.aliwork.YDClient;
 import com.malk.service.aliwork.YDClient;
 import lombok.SneakyThrows;
 import lombok.SneakyThrows;
@@ -43,7 +44,10 @@ public class LiChenController {
                 .systemToken("CH766981WHM8OEVBEAKCY7MYB9SV3ORPLIQELS5")
                 .systemToken("CH766981WHM8OEVBEAKCY7MYB9SV3ORPLIQELS5")
                 .formInstId(formInstId)
                 .formInstId(formInstId)
                 .build();
                 .build();
-        return McR.success(ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_id));
+        if (formInstId.startsWith("FINST-")) {
+            return McR.success(ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_id));
+        }
+        return McR.success(ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_process_id));
     }
     }
 
 
     /**
     /**
@@ -89,52 +93,80 @@ public class LiChenController {
                         .systemToken("CH766981WHM8OEVBEAKCY7MYB9SV3ORPLIQELS5")
                         .systemToken("CH766981WHM8OEVBEAKCY7MYB9SV3ORPLIQELS5")
                         .formUuid("FORM-4V966QC142J8WYDD9PO74DD2QOME3ZG0MIQELK1")
                         .formUuid("FORM-4V966QC142J8WYDD9PO74DD2QOME3ZG0MIQELK1")
                         .searchFieldJson(JSON.toJSONString(searchMap))
                         .searchFieldJson(JSON.toJSONString(searchMap))
+                        .approvedResult("agree")
                         .build();
                         .build();
-                long total = ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_list).getTotalCount();
-                if (total == 0) {
-                    Map formData = UtilMap.map("textField_lgov75ms, radioField_lguqzv36", billNo, "是");//单据编号
-                    formData.put("textField_lglwgnl7", record.get("FCREATORID"));//创建人ID
-                    formData.put("textField_lguqqubv", record.get("FCREATORNAME"));//创建人姓名
-                    formData.put("textField_lgvpbhx0", record.get("FSETTLEORGID"));//结算组织
-                    formData.put("", record.get("FPURCHASEORGID")); //采购组织
-                    formData.put("textField_leqinlpz", record.get("FAPPLYORGID")); //申请组织
-                    formData.put("dateField_leqinlqd", record.get("FDATE")); //申请日期
-                    formData.put("selectField_lgvpbhwz", record.get("FBILLTYPEID"));//单据类型
-                    formData.put("selectField_lgpzoio6", record.get("FCONTACTUNITTYPE"));//往来单位类型
-                    formData.put("selectField_lexydxa5", record.get("FCONTACTUNIT"));//往来单位
-                    formData.put("textField_lgpzoio7", record.get("FCONTACTUNIT_Id"));//往来单位编码
-                    formData.put("", record.get("FBUSINESSTYPE"));//业务类型
-                    formData.put("textField_leqinlq3", record.get("FPAYORGID"));//付款组织
-                    formData.put("textField_lgvxe8q6", record.get("FRECTUNIT"));//收款单位
-                    formData.put("selectField_lgvpbhx1", record.get("F_BQB_Combo"));//付款类型
-                    formData.put("radioField_leqinlq7", record.get("F_BQB_FKDQ"));//付款地区
-                    formData.put("selectField_lgvz3r3j", record.get("F_BQB_FKGS"));//付款公司
-                    formData.put("textField_leqinlq2", record.get("FEXPENSEDEPTID"));//费用承担部门
-                    List<Map> details = new ArrayList<>();
-                    List<Map> dataTable = (List<Map>) JSON.parse(String.valueOf(record.get("DataTable")));
-                    for (Map detail : dataTable) {
-                        Map rowTable = UtilMap.map("selectField_lewl78sf", detail.get("FSETTLETYPEID"));//结算方式
-                        rowTable.put("textField_lfw71laq", detail.get("FEACHBANKACCOUNT"));//对方银行账号
-                        rowTable.put("numberField_leqinlqa", detail.get("FAPPLYAMOUNTFOR"));//申请付款金额
-                        rowTable.put("dateField_lewl78sh", detail.get("FENDDATE"));//到期日
-                        rowTable.put("dateField_lewl78sg", detail.get("FEXPECTPAYDATE"));//期望付款日期
-                        rowTable.put("textField_lfw71lar", detail.get("FEACHCCOUNTNAME"));//对方账户名称
-                        rowTable.put("textField_lfw71las", detail.get("FEACHBANKNAME"));//对方账户名称
-                        rowTable.put("selectField_lgqbuu2d", detail.get("FCOSTID"));//费用项目
-                        rowTable.put("textField_lgyosvjh", detail.get("FCOSTID_id"));//费用项目ID
-                        rowTable.put("textField_leqinlqb", detail.get("FDescription"));//备注
-                        details.add(rowTable);
-                    }
-                    formData.put("tableField_leqinlq8", details);
-                    ydParam.formDataJson = JSON.toJSONString(formData);
-                    ydParam.setProcessCode("TPROC--4V966QC142J8WYDD9PO74DD2QOME30H0MIQELL1");
-                    ydClient.operateData(ydParam, YDConf.FORM_OPERATION.start);
+                long total = ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_search_process).getTotalCount();
+                if (total > 0) {
+                    continue;
+                }
+                ydParam.setApprovedResult("");
+                ydParam.setInstanceStatus("RUNNING");
+                total = ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_search_process).getTotalCount();
+                if (total > 0) {
+                    continue;
                 }
                 }
+//
+                Map formData = UtilMap.map("textField_lgov75ms, radioField_lguqzv36", billNo, "是");//单据编号
+                formData.put("textField_lglwgnl7", record.get("FCREATORID"));//创建人ID
+                formData.put("textField_lguqqubv", record.get("FCREATORNAME"));//创建人姓名
+                formData.put("textField_lgvpbhx0", record.get("FSETTLEORGID"));//结算组织
+                formData.put("", record.get("FPURCHASEORGID")); //采购组织
+                formData.put("textField_leqinlpz", record.get("FAPPLYORGID")); //申请组织
+                formData.put("dateField_leqinlqd", record.get("FDATE")); //申请日期
+                formData.put("selectField_lgvpbhwz", record.get("FBILLTYPEID"));//单据类型
+                formData.put("selectField_lgpzoio6", record.get("FCONTACTUNITTYPE"));//往来单位类型
+                formData.put("selectField_lexydxa5", record.get("FCONTACTUNIT"));//往来单位
+                formData.put("textField_lgpzoio7", record.get("FCONTACTUNIT_Id"));//往来单位编码
+                formData.put("", record.get("FBUSINESSTYPE"));//业务类型
+                formData.put("textField_leqinlq3", record.get("FPAYORGID"));//付款组织
+                formData.put("textField_lgvxe8q6", record.get("FRECTUNIT"));//收款单位
+                formData.put("selectField_lgvpbhx1", record.get("F_BQB_Combo"));//付款类型
+                formData.put("radioField_leqinlq7", record.get("F_BQB_FKDQ"));//付款地区
+                formData.put("selectField_lgvz3r3j", record.get("F_BQB_FKGS"));//付款公司
+                formData.put("textField_leqinlq2", record.get("FEXPENSEDEPTID"));//费用承担部门
+                List<Map> details = new ArrayList<>();
+                List<Map> dataTable = (List<Map>) JSON.parse(String.valueOf(record.get("DataTable")));
+                for (Map detail : dataTable) {
+                    Map rowTable = UtilMap.map("selectField_lewl78sf", detail.get("FSETTLETYPEID"));//结算方式
+                    rowTable.put("textField_lfw71laq", detail.get("FEACHBANKACCOUNT"));//对方银行账号
+                    rowTable.put("numberField_leqinlqa", detail.get("FAPPLYAMOUNTFOR"));//申请付款金额
+                    rowTable.put("dateField_lewl78sh", detail.get("FENDDATE"));//到期日
+                    rowTable.put("dateField_lewl78sg", detail.get("FEXPECTPAYDATE"));//期望付款日期
+                    rowTable.put("textField_lfw71lar", detail.get("FEACHCCOUNTNAME"));//对方账户名称
+                    rowTable.put("textField_lfw71las", detail.get("FEACHBANKNAME"));//对方账户名称
+                    rowTable.put("selectField_lgqbuu2d", detail.get("FCOSTID"));//费用项目
+                    rowTable.put("textField_lgyosvjh", detail.get("FCOSTID_id"));//费用项目ID
+                    rowTable.put("textField_leqinlqb", detail.get("FDescription"));//备注
+                    details.add(rowTable);
+                }
+                formData.put("tableField_leqinlq8", details);
+                ydParam.formDataJson = JSON.toJSONString(formData);
+                ydParam.setProcessCode("TPROC--4V966QC142J8WYDD9PO74DD2QOME30H0MIQELL1");
+                ydClient.operateData(ydParam, YDConf.FORM_OPERATION.start);
             }
             }
         }
         }
         return McR.success();
         return McR.success();
     }
     }
 
 
+    /**
+     * 更新付款申请
+     */
+    @SneakyThrows
+    @PostMapping("form/fksq/update")
+    McR updateFuKuanShenQingProcess(@RequestBody Map<String, String> data) {
+
+        log.info("写入付款申请, {}", data);
+        McException.assertParamException_Null(data, "formInstId, compId, content");
+
+        YDParam ydParam = YDParam.builder()
+                .formInstId(data.get("formInstId"))
+                .updateFormDataJson(JSON.toJSONString(UtilMap.map(data.get("compId"), data.get("content"))))
+                .build();
+        ydClient.operateData(ydParam, YDConf.FORM_OPERATION.update);
+
+        return McR.success();
+    }
+
     /**
     /**
      * 写入应付单
      * 写入应付单
      */
      */

+ 2 - 2
mjava/target/maven-archiver/pom.properties

@@ -1,5 +1,5 @@
 #Generated by Maven
 #Generated by Maven
-#Thu Jun 22 22:58:52 CST 2023
+#Fri Jul 14 11:59:51 CST 2023
 version=1.0-SNAPSHOT
 version=1.0-SNAPSHOT
 groupId=com.malk
 groupId=com.malk
-artifactId=mjava
+artifactId=mjava-lichen

+ 2 - 0
mjava-lichen/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst

@@ -0,0 +1,2 @@
+com/malk/lichen/controller/LiChenController.class
+com/malk/lichen/Boot.class

+ 2 - 0
mjava-lichen/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst

@@ -0,0 +1,2 @@
+/Users/malk/server/java-mcli-2/mjava-lichen/src/main/java/com/malk/lichen/Boot.java
+/Users/malk/server/java-mcli-2/mjava-lichen/src/main/java/com/malk/lichen/controller/LiChenController.java

BIN
mjava-lichen/target/mjava-lichen.jar.original


+ 2 - 2
mjava-rongzhi/src/main/java/com/malk/rongzhi/service/impl/RZServiceImpl.java

@@ -105,9 +105,9 @@ public class RZServiceImpl implements RZService {
     }
     }
 
 
     // 匹配userId, 以最新数据为准
     // 匹配userId, 以最新数据为准
-    private void syncOrganizationalStructure(Number deptId, List<String> userIds) {
+    private void syncOrganizationalStructure(long deptId, List<String> userIds) {
         // 同步一级部门用户
         // 同步一级部门用户
-        if (deptId.equals(DDConf.TOP_DEPARTMENT)) {
+        if (deptId == DDConf.TOP_DEPARTMENT) {
             userIds.addAll(ddClientImpl_contacts.listDepartmentUserId(getAccessToken(RZConf.TYPE.dingtalk), DDConf.TOP_DEPARTMENT));
             userIds.addAll(ddClientImpl_contacts.listDepartmentUserId(getAccessToken(RZConf.TYPE.dingtalk), DDConf.TOP_DEPARTMENT));
         }
         }
         // 同步除一级部门外所有部门用户
         // 同步除一级部门外所有部门用户

+ 40 - 5
mjava-xiding/src/main/java/com/malk/xiding/controller/XDController.java

@@ -6,6 +6,8 @@ import com.malk.server.common.McR;
 import com.malk.server.fxiaoke.FXKConf;
 import com.malk.server.fxiaoke.FXKConf;
 import com.malk.service.dingtalk.DDClient;
 import com.malk.service.dingtalk.DDClient;
 import com.malk.service.dingtalk.DDClient_Attendance;
 import com.malk.service.dingtalk.DDClient_Attendance;
+import com.malk.service.dingtalk.DDClient_Contacts;
+import com.malk.service.dingtalk.DDService;
 import com.malk.service.fxiaoke.FXKClient;
 import com.malk.service.fxiaoke.FXKClient;
 import com.malk.xiding.repository.dao.XdDdApproveRecordDao2;
 import com.malk.xiding.repository.dao.XdDdApproveRecordDao2;
 import com.malk.xiding.repository.dao.XdDdFxkRelationDao;
 import com.malk.xiding.repository.dao.XdDdFxkRelationDao;
@@ -41,6 +43,9 @@ public class XDController {
     @Autowired
     @Autowired
     private DDClient ddClient;
     private DDClient ddClient;
 
 
+    @Autowired
+    private DDClient_Contacts ddClient_contacts;
+
     @Autowired
     @Autowired
     private XdDdApproveRecordDao2 approveRecordDao2;
     private XdDdApproveRecordDao2 approveRecordDao2;
 
 
@@ -81,7 +86,7 @@ public class XDController {
         String Time = UtilDateTime.formatLocalDate(UtilDateTime.convertToLocalDateTimeFromDate(sTime).plusDays(1).toLocalDate()) + " 05:00:00";
         String Time = UtilDateTime.formatLocalDate(UtilDateTime.convertToLocalDateTimeFromDate(sTime).plusDays(1).toLocalDate()) + " 05:00:00";
 
 
         log.info("xxxx, {}, {}", sTime, Time);
         log.info("xxxx, {}, {}", sTime, Time);
-        ddClient_attendance.listAttendanceRecord(ddClient.getAccessToken(), Arrays.asList("233927562629501739"), "2023-06-19 00:00:00", "2023-06-19 23:59:59");
+        ddClient_attendance.listAttendanceRecord(ddClient.getAccessToken(), Arrays.asList("01184453430538751536"), "2023-07-17 00:00:00", "2023-07-17 23:59:59");
 
 
 //        return McR.success(ddClient_attendance.uploadAttendanceRecord(ddClient.getAccessToken(), "1111", "纷享销客同步", "纷享销客同步", null, new Date().getTime()));
 //        return McR.success(ddClient_attendance.uploadAttendanceRecord(ddClient.getAccessToken(), "1111", "纷享销客同步", "纷享销客同步", null, new Date().getTime()));
 //        return McR.success(approveRecordDao2.findAllByEndTimeAfter(UtilDateTime.parseDateTime("2023-05-18 00:00:00"), PageRequest.of(0, 50)));
 //        return McR.success(approveRecordDao2.findAllByEndTimeAfter(UtilDateTime.parseDateTime("2023-05-18 00:00:00"), PageRequest.of(0, 50)));
@@ -99,15 +104,45 @@ public class XDController {
 
 
     @PostMapping("test2")
     @PostMapping("test2")
     McR test2() {
     McR test2() {
-        Date sTime = UtilDateTime.parseDateTime("2023-06-27" + " 00:00:00");
-        Date eTime = UtilDateTime.parseDateTime("2023-06-27" + " 23:59:59");
-        xdService.syncAttendance(0, sTime, eTime);
+        Date sTime = UtilDateTime.parseDateTime("2023-07-01" + " 00:00:00");
+        Date eTime = UtilDateTime.parseDateTime("2023-07-24" + " 23:59:59");
+//        xdService.syncAttendance(0, sTime, eTime);
+        xdService.syncAttendanceForCC(0, sTime, eTime);
         return McR.success();
         return McR.success();
     }
     }
 
 
     @PostMapping("test5")
     @PostMapping("test5")
     McR test5() {
     McR test5() {
-        ddClient_attendance.uploadAttendanceRecord(ddClient.getAccessToken(), "181004250420083082", "纷享销客同步", "纷享销客同步", null, 1687863141000L);
+        ddClient_attendance.uploadAttendanceRecord(ddClient.getAccessToken(), "01184453430538751536", "纷享销客同步", "纷享销客同步", null, 1689555600000L);
         return McR.success();
         return McR.success();
     }
     }
+
+    @Autowired
+    private DDService ddService;
+
+    @Autowired
+    private XdDdApproveRecordDao2 xdDdApproveRecordDao2;
+
+    @PostMapping("test6")
+    McR test6() {
+
+//        List<Number> deptIdList = (List<Number>) ddClient_contacts.getUserInfoByMobile(ddClient.getAccessToken(), "15399923686").get("dept_id_list");
+//        return McR.success(ddService.matchDepartment(ddClient.getAccessToken(), "01513053652926638706", Arrays.asList(37263540L)));
+
+//        Date sTime = UtilDateTime.parseDateTime("2023-07-01" + " 00:00:00");
+//        Date eTime = UtilDateTime.parseDateTime("2023-07-16" + " 23:59:59");
+//
+//        xdDdApproveRecordDao2.findAllByEndTimeAfterAndTypeAndMarketing(sTime, "出差", false, PageRequest.of(0, Integer.MAX_VALUE)).forEach(po -> {
+//            try {
+//                boolean isMarketing = ddService.matchDepartment(ddClient.getAccessToken(), po.getUserId(), Arrays.asList(37263540L));
+//                po.setMarketing(isMarketing);
+//                xdDdApproveRecordDao2.save(po);
+//            } catch (McException e) {
+//
+//            }
+//        });
+
+        return McR.success(ddService.matchDepartment(ddClient.getAccessToken(), "16859286440945113", Arrays.asList(37263540L)));
+    }
+
 }
 }

+ 4 - 1
mjava-xiding/src/main/java/com/malk/xiding/repository/dao/XdDdApproveRecordDao2.java

@@ -19,6 +19,9 @@ public interface XdDdApproveRecordDao2 extends CrudRepository<XdDdApproveRecordP
     Page<XdDdApproveRecordPo> findAllByEndTimeAfter(Date nowMin, Pageable page);
     Page<XdDdApproveRecordPo> findAllByEndTimeAfter(Date nowMin, Pageable page);
 
 
     Page<XdDdApproveRecordPo> findAll(Pageable page);
     Page<XdDdApproveRecordPo> findAll(Pageable page);
-    
+
     Page<XdDdApproveRecordPo> findAllByOpenUserId(String userId, Pageable page);
     Page<XdDdApproveRecordPo> findAllByOpenUserId(String userId, Pageable page);
+
+    // 查询范围, 匹配出差单 [营销中心]
+    Page<XdDdApproveRecordPo> findAllByEndTimeAfterAndTypeAndMarketing(Date nowMin, String type, boolean isMarketing, Pageable page);
 }
 }

+ 5 - 1
mjava-xiding/src/main/java/com/malk/xiding/repository/entity/XdDdApproveRecordPo.java

@@ -13,7 +13,6 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 import javax.persistence.TemporalType;
 import java.util.Date;
 import java.util.Date;
 
 
-
 @Entity
 @Entity
 @Data
 @Data
 @Builder
 @Builder
@@ -60,4 +59,9 @@ public class XdDdApproveRecordPo extends BasePo {
      * 类型: 出差\外出
      * 类型: 出差\外出
      */
      */
     private String type;
     private String type;
+
+    /**
+     * 属于营销部门
+     */
+    private boolean marketing = false;
 }
 }

+ 19 - 2
mjava-xiding/src/main/java/com/malk/xiding/schedule/XDScheduleTask.java

@@ -47,7 +47,7 @@ public class XDScheduleTask {
      */
      */
     @Scheduled(cron = "0 9/10 9-10,16-23,0-4  1/1 * ?")
     @Scheduled(cron = "0 9/10 9-10,16-23,0-4  1/1 * ?")
     public void Time_Period_2() {
     public void Time_Period_2() {
-        log.info("###### [XD]同步考勤开始 ######");
+        log.info("###### [XD]外出同步考勤开始 ######");
         Date now = new Date();
         Date now = new Date();
         Date sTime = UtilDateTime.parseDateTime(UtilDateTime.formatDate(now) + " 00:00:00");
         Date sTime = UtilDateTime.parseDateTime(UtilDateTime.formatDate(now) + " 00:00:00");
         Date eTime = UtilDateTime.parseDateTime(UtilDateTime.formatDate(now) + " 23:59:59");
         Date eTime = UtilDateTime.parseDateTime(UtilDateTime.formatDate(now) + " 23:59:59");
@@ -56,6 +56,23 @@ public class XDScheduleTask {
         } catch (Exception e) {
         } catch (Exception e) {
             log.error(e.getMessage(), e); // 记录错误日志
             log.error(e.getMessage(), e); // 记录错误日志
         }
         }
-        log.info("###### [XD]同步考勤结束 ######");
+        log.info("###### [XD]外出同步考勤结束 ######");
+    }
+
+    /**
+     * prd [2023-07] 外出保留之前纷享销客同步机制, 出差18点同步, 自动上传
+     */
+    @Scheduled(cron = "0 5 18 * * ?")
+    public void Time_Period_3() {
+        log.info("###### [XD]出差同步考勤开始 ######");
+        Date now = new Date();
+        Date sTime = UtilDateTime.parseDateTime(UtilDateTime.formatDate(now) + " 00:00:00");
+        Date eTime = UtilDateTime.parseDateTime(UtilDateTime.formatDate(now) + " 23:59:59");
+        try {
+            xdService.syncAttendanceForCC(0, sTime, eTime);
+        } catch (Exception e) {
+            log.error(e.getMessage(), e); // 记录错误日志
+        }
+        log.info("###### [XD]出差同步考勤结束 ######");
     }
     }
 }
 }

+ 7 - 0
mjava-xiding/src/main/java/com/malk/xiding/service/XDService.java

@@ -19,4 +19,11 @@ public interface XDService {
      * @param eTime 考勤同步结束时间
      * @param eTime 考勤同步结束时间
      */
      */
     void syncAttendance(int page, Date sTime, Date eTime);
     void syncAttendance(int page, Date sTime, Date eTime);
+
+    /**
+     * 同步出差记录考勤 [钉钉排班仅支持7天内查询: 提交出差后, 就会有对应的排班, 无需重复查询]
+     * -
+     * prd [2023-07] 外出保留之前纷享销客同步机制, 出差18点同步, 自动上传
+     */
+    void syncAttendanceForCC(int page, Date sTime, Date eTime);
 }
 }

+ 86 - 17
mjava-xiding/src/main/java/com/malk/xiding/service/impl/XDImplService.java

@@ -7,10 +7,7 @@ import com.malk.Util.UtilMap;
 import com.malk.Util.UtilMc;
 import com.malk.Util.UtilMc;
 import com.malk.server.common.McException;
 import com.malk.server.common.McException;
 import com.malk.server.fxiaoke.FXKConf;
 import com.malk.server.fxiaoke.FXKConf;
-import com.malk.service.dingtalk.DDClient;
-import com.malk.service.dingtalk.DDClient_Attendance;
-import com.malk.service.dingtalk.DDClient_Contacts;
-import com.malk.service.dingtalk.DDClient_Workflow;
+import com.malk.service.dingtalk.*;
 import com.malk.service.fxiaoke.FXKClient;
 import com.malk.service.fxiaoke.FXKClient;
 import com.malk.xiding.repository.dao.XdDdApproveRecordDao;
 import com.malk.xiding.repository.dao.XdDdApproveRecordDao;
 import com.malk.xiding.repository.dao.XdDdApproveRecordDao2;
 import com.malk.xiding.repository.dao.XdDdApproveRecordDao2;
@@ -50,6 +47,9 @@ public class XDImplService implements XDService {
     @Autowired
     @Autowired
     private DDClient_Attendance ddClient_attendance;
     private DDClient_Attendance ddClient_attendance;
 
 
+    @Autowired
+    private DDService ddService;
+
     @Autowired
     @Autowired
     private FXKClient fxkClient;
     private FXKClient fxkClient;
 
 
@@ -124,9 +124,14 @@ public class XDImplService implements XDService {
                 .endTime(eTime)
                 .endTime(eTime)
                 .type(type)
                 .type(type)
                 .build();
                 .build();
+        // prd 2023-07 出差考勤同步仅适用于营销中心以及其子部门
+        if (type.equals("出差")) {
+            // 离职人员同步已过滤
+            approveRecordPo.setMarketing(ddService.matchDepartment(ddClient.getAccessToken(), userId, Arrays.asList(37263540L)));
+        }
         ddApproveRecordDao.save(approveRecordPo);
         ddApproveRecordDao.save(approveRecordPo);
         log.info("同步出差和人员信息, {}, {}", userPo, approveRecordPo);
         log.info("同步出差和人员信息, {}, {}", userPo, approveRecordPo);
-        _attendanceSync(sTime, eTime, userPo.getIdFxxk(), userId);  // 兼容后补审批记录
+        _attendanceSync(sTime, eTime, userPo.getIdFxxk(), userId, type);  // 兼容后补审批记录
     }
     }
 
 
     // 同步纷享销客人员信息
     // 同步纷享销客人员信息
@@ -211,23 +216,31 @@ public class XDImplService implements XDService {
     }
     }
 
 
     /// 后补审批单, 同步考勤
     /// 后补审批单, 同步考勤
-    private void _attendanceSync(Date sTime, Date eTime, String openUserId, String ddUserId) {
+    private void _attendanceSync(Date sTime, Date eTime, String openUserId, String ddUserId, String type) {
         // [人员匹配 & 开始时间小于当前同步时间, 若当前时间大于结束时间取结束时间]
         // [人员匹配 & 开始时间小于当前同步时间, 若当前时间大于结束时间取结束时间]
         Date syncTime = eTime.after(new Date()) ? new Date() : eTime;
         Date syncTime = eTime.after(new Date()) ? new Date() : eTime;
         if (sTime.after(syncTime) || StringUtils.isBlank(openUserId)) {
         if (sTime.after(syncTime) || StringUtils.isBlank(openUserId)) {
             return;
             return;
         }
         }
-        // 不跨月统计, 纷享销客查询范围仅支持40天内
-        if (sTime.getMonth() != eTime.getMonth()) {
-            sTime = new Date(sTime.getYear(), eTime.getMonth(), 1);
+        if (type.equals("外出")) {
+            // 不跨月统计, 纷享销客查询范围仅支持40天内
+            if (sTime.getMonth() != eTime.getMonth()) {
+                sTime = new Date(sTime.getYear(), eTime.getMonth(), 1);
+            }
+            List<Map> attendanceList = fxkClient.getAttendance_All(fxkClient.getAccessToken(), fxkConf.getCorpId(), sTime.getTime(), eTime.getTime(), Arrays.asList(openUserId));
+            log.info("后补人员 = {}, 考勤数量 = {}", openUserId, attendanceList.size());
+            attendanceList.forEach(item -> {
+                XdFxkDdAttendancePo attendancePo = JSON.parseObject(JSON.toJSONString(item), XdFxkDdAttendancePo.class);
+                attendancePo.setIdDd(ddUserId);
+                _attendanceRule(attendancePo);
+            });
+        } else {
+            // 提交出差后, 就会有对应的排班, 无需重复查询; 同步时匹配出差结束时间, 不写入未来时间考勤
+            for (int day = sTime.getDate(); day <= eTime.getDate(); day++) {
+                log.info("出差后补 = {}, 考勤时间 = {}", ddUserId, day);
+                _attendanceRule(ddUserId, ddFxkRelationDao.findByIdDd(ddUserId).getName(), UtilDateTime.formatDate(new Date(sTime.getYear(), eTime.getMonth(), day)) + " 09:00:00");
+            }
         }
         }
-        List<Map> attendanceList = fxkClient.getAttendance_All(fxkClient.getAccessToken(), fxkConf.getCorpId(), sTime.getTime(), eTime.getTime(), Arrays.asList(openUserId));
-        log.info("后补人员 = {}, 考勤数量 = {}", openUserId, attendanceList.size());
-        attendanceList.forEach(item -> {
-            XdFxkDdAttendancePo attendancePo = JSON.parseObject(JSON.toJSONString(item), XdFxkDdAttendancePo.class);
-            attendancePo.setIdDd(ddUserId);
-            _attendanceRule(attendancePo);
-        });
     }
     }
 
 
     // 考勤写入规则
     // 考勤写入规则
@@ -262,7 +275,7 @@ public class XDImplService implements XDService {
                     return;
                     return;
                 }
                 }
             }
             }
-            String ss = "纷享销客同步: " + UtilDateTime.formatDateTime(new Date(attendancePo.getCheckTime().getTime()));
+            String ss = "纷享销客同步" + ": " + UtilDateTime.formatDateTime(new Date(attendancePo.getCheckTime().getTime()));
             // 燕江 0953580166764920
             // 燕江 0953580166764920
             ddClient_attendance.uploadAttendanceRecord(ddClient.getAccessToken(), attendancePo.getIdDd(), ss, "纷享销客同步", null, check);
             ddClient_attendance.uploadAttendanceRecord(ddClient.getAccessToken(), attendancePo.getIdDd(), ss, "纷享销客同步", null, check);
             attendancePo.setRemark("同步成功");
             attendancePo.setRemark("同步成功");
@@ -272,4 +285,60 @@ public class XDImplService implements XDService {
             log.error(e.getMessage(), e);  // 记录错误日志
             log.error(e.getMessage(), e);  // 记录错误日志
         }
         }
     }
     }
+
+    /**
+     * 同步出差记录考勤 [营销中心]
+     * -
+     * 18点同步, 自动上传 [同步时匹配出差时间 [仅同步: 出差开始时间/同步开始 ~ 同步结束/出差结束时间]
+     * 废弃同步排班原因: 提交出差后, 就会有对应的排班, 无需重复查询. 且不同出差单起止时间不一致, 需要处理
+     */
+    @Override
+    public void syncAttendanceForCC(int page, Date sTime, Date eTime) {
+        Page<XdDdApproveRecordPo> poPage = approveRecordDao2.findAllByEndTimeAfterAndTypeAndMarketing(sTime, "出差", true, PageRequest.of(page, 50));
+        // 不能去重, 批量同步时, 可能一个时间段内会有多个出差单
+        List<XdDdApproveRecordPo> poList = poPage.getContent();
+        poList.forEach(po -> {
+            // 提交出差后, 就会有对应的排班, 无需重复查询; 同步时匹配出差时间 [仅同步: 出差开始时间/同步开始 ~ 同步结束/出差结束时间]
+            Date ssTime = sTime.before(po.getStartTime()) ? po.getStartTime() : sTime;
+            Date eeTime = eTime.after(po.getEndTime()) ? po.getEndTime() : eTime;
+            if (ssTime.after(eeTime)) {
+                return;
+            }
+            log.info("同步出差记录考勤, {}, {} ~ {}", ddFxkRelationDao.findByIdDd(po.getUserId()).getName(), ssTime, eeTime);
+            for (int day = ssTime.getDate(); day <= eeTime.getDate(); day++) {
+                _attendanceRule(po.getUserId(), ddFxkRelationDao.findByIdDd(po.getUserId()).getName(), UtilDateTime.formatDate(new Date(ssTime.getYear(), eeTime.getMonth(), day)) + " 09:00:00");
+            }
+        });
+        if (!poPage.isLast()) {
+            syncAttendanceForCC(poPage.getNumber() + 1, sTime, eTime);
+        }
+    }
+
+    // 考勤写入规则 [23.07 出差自动同步]
+    private void _attendanceRule(String userId, String userName, String date) {
+        XdFxkDdAttendancePo attendancePo = XdFxkDdAttendancePo.builder()
+                .idDd(userId)
+                .checkTime(UtilDateTime.parseDateTime(date))
+                .userName(userName)
+                .build();
+        try {
+            boolean hasRecord = attendanceDao.existsByIdDdAndCheckTimeEquals(attendancePo.getIdDd(), attendancePo.getCheckTime());
+            if (hasRecord) {
+                log.info("存在考勤, {}, {}", attendancePo.getUserName(), attendancePo.getCheckTime());
+                return;
+            }
+            String ss = "出差考勤同步" + ": " + UtilDateTime.formatDateTime(attendancePo.getCheckTime());
+            // 燕江 0953580166764920
+            ddClient_attendance.uploadAttendanceRecord(ddClient.getAccessToken(), attendancePo.getIdDd(), ss, "出差考勤同步", null, attendancePo.getCheckTime().getTime());
+            attendancePo.setRemark("同步成功");
+            attendanceDao.save(attendancePo);
+            log.info("写入考勤, {}, {}", attendancePo.getUserName(), attendancePo.getCheckTime());
+        } catch (McException e) {
+            log.error(e.getMessage(), e);  // 记录错误日志
+        }
+        // 同时写入下班考勤
+        if (date.endsWith(" 09:00:00")) {
+            _attendanceRule(userId, userName, date.replace(" 09:00:00", " 18:00:00"));
+        }
+    }
 }
 }

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

@@ -43,6 +43,7 @@ dingtalk:
   corpId: ding2daa2d5e80b14b5b35c2f4657eb6378f
   corpId: ding2daa2d5e80b14b5b35c2f4657eb6378f
   aesKey:
   aesKey:
   token:
   token:
+  operator: "050640000420258143"   # 侯丽萍, OA管理员账号
 
 
 # fxiaoke
 # fxiaoke
 fxiaoke:
 fxiaoke:

+ 1 - 0
mjava-xiding/src/main/resources/application-prod.yml

@@ -26,6 +26,7 @@ dingtalk:
   corpId: ding2daa2d5e80b14b5b35c2f4657eb6378f
   corpId: ding2daa2d5e80b14b5b35c2f4657eb6378f
   aesKey:
   aesKey:
   token:
   token:
+  operator: "050640000420258143"   # 侯丽萍, OA管理员账号
 
 
 # fxiaoke
 # fxiaoke
 fxiaoke:
 fxiaoke:

+ 1 - 0
mjava-xiding/target/classes/application-dev.yml

@@ -43,6 +43,7 @@ dingtalk:
   corpId: ding2daa2d5e80b14b5b35c2f4657eb6378f
   corpId: ding2daa2d5e80b14b5b35c2f4657eb6378f
   aesKey:
   aesKey:
   token:
   token:
+  operator: "050640000420258143"   # 侯丽萍, OA管理员账号
 
 
 # fxiaoke
 # fxiaoke
 fxiaoke:
 fxiaoke:

+ 1 - 0
mjava-xiding/target/classes/application-prod.yml

@@ -26,6 +26,7 @@ dingtalk:
   corpId: ding2daa2d5e80b14b5b35c2f4657eb6378f
   corpId: ding2daa2d5e80b14b5b35c2f4657eb6378f
   aesKey:
   aesKey:
   token:
   token:
+  operator: "050640000420258143"   # 侯丽萍, OA管理员账号
 
 
 # fxiaoke
 # fxiaoke
 fxiaoke:
 fxiaoke:

+ 2 - 0
mjava-xiding/target/generated-sources/java/com/malk/xiding/repository/entity/QXdDdApproveRecordPo.java

@@ -31,6 +31,8 @@ public class QXdDdApproveRecordPo extends EntityPathBase<XdDdApproveRecordPo> {
 
 
     public final StringPath instanceId = createString("instanceId");
     public final StringPath instanceId = createString("instanceId");
 
 
+    public final BooleanPath marketing = createBoolean("marketing");
+
     public final StringPath openUserId = createString("openUserId");
     public final StringPath openUserId = createString("openUserId");
 
 
     public final DateTimePath<java.util.Date> startTime = createDateTime("startTime", java.util.Date.class);
     public final DateTimePath<java.util.Date> startTime = createDateTime("startTime", java.util.Date.class);

+ 1 - 1
mjava-xiding/target/maven-archiver/pom.properties

@@ -1,5 +1,5 @@
 #Generated by Maven
 #Generated by Maven
-#Mon Jul 03 03:27:55 CST 2023
+#Fri Jul 21 19:05:51 CST 2023
 version=1.0-SNAPSHOT
 version=1.0-SNAPSHOT
 groupId=com.malk
 groupId=com.malk
 artifactId=mjava-xiding
 artifactId=mjava-xiding

+ 19 - 0
mjava-xiding/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst

@@ -0,0 +1,19 @@
+com/malk/xiding/repository/entity/XdFxkDdAttendancePo.class
+com/malk/xiding/repository/dao/XdFxkDdAttendanceDao.class
+com/malk/xiding/repository/entity/XdDdApproveRecordPo$XdDdApproveRecordPoBuilder.class
+com/malk/xiding/repository/dao/XdDdApproveRecordDao2.class
+com/malk/xiding/schedule/XDScheduleTask.class
+com/malk/xiding/repository/entity/XdDdFxkRelationPo$XdDdFxkRelationPoBuilder.class
+com/malk/xiding/repository/entity/XdDdFxkRelationPo.class
+com/malk/xiding/Boot.class
+com/malk/xiding/repository/dao/XdDdFxkRelationDao.class
+com/malk/xiding/controller/XDController.class
+com/malk/xiding/repository/entity/QXdFxkDdAttendancePo.class
+com/malk/xiding/server/XDConf.class
+com/malk/xiding/service/XDService.class
+com/malk/xiding/repository/entity/XdFxkDdAttendancePo$XdFxkDdAttendancePoBuilder.class
+com/malk/xiding/repository/entity/XdDdApproveRecordPo.class
+com/malk/xiding/repository/dao/XdDdApproveRecordDao.class
+com/malk/xiding/repository/entity/QXdDdApproveRecordPo.class
+com/malk/xiding/repository/entity/QXdDdFxkRelationPo.class
+com/malk/xiding/service/impl/XDImplService.class

BIN
mjava-xiding/target/mjava-xiding.jar.original


+ 1 - 0
mjava/src/main/java/com/malk/server/aliwork/YDConf.java

@@ -43,6 +43,7 @@ public class YDConf {
         multi_retrieve_id,
         multi_retrieve_id,
 
 
         retrieve_id,                // 单个ID查询
         retrieve_id,                // 单个ID查询
+        retrieve_process_id,                // 单个流程ID查询
 
 
         retrieve_search_process,            // 流程列表
         retrieve_search_process,            // 流程列表
         retrieve_search_form,               // 表单列表
         retrieve_search_form,               // 表单列表

+ 48 - 3
mjava/src/main/java/com/malk/server/dingtalk/DDR_New.java

@@ -8,6 +8,8 @@ import com.malk.server.common.VenR;
 import lombok.Data;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import lombok.NoArgsConstructor;
 
 
+import java.util.Date;
+import java.util.List;
 import java.util.Map;
 import java.util.Map;
 
 
 /**
 /**
@@ -32,6 +34,51 @@ public class DDR_New<T> extends VenR {
      */
      */
     private String instanceId;
     private String instanceId;
 
 
+    /**
+     * 创建时间
+     */
+    private Date createTimeGMT;
+
+    /**
+     * 修改时间
+     */
+    private Date modifiedTimeGMT;
+
+    /**
+     * 流程标题
+     */
+    private String title;
+
+    /**
+     * 流程实例ID
+     */
+    private String processInstanceId;
+
+    /**
+     * 流程实例当前任务执行人列表
+     */
+    private List actionExecutor;
+
+    /**
+     * 流程编码
+     */
+    private String formUuid;
+
+    /**
+     * 流程编码
+     */
+    private String processCode;
+
+    /**
+     * 实例状态,取值:RUNNING:运行中, TERMINATED:已终止, COMPLETED:已完成, ERROR:异常
+     */
+    private String instanceStatus;
+
+    /**
+     * 审批结果,取值:agree:同意; disagree:拒绝
+     */
+    private String approvedResult;
+
     ////  宜搭数据  ////
     ////  宜搭数据  ////
 
 
     /**
     /**
@@ -45,9 +92,7 @@ public class DDR_New<T> extends VenR {
      * 实例ID详情
      * 实例ID详情
      */
      */
     private Map originator;
     private Map originator;
-
-    private String modifiedTimeGMT;
-
+    
     private String formInstId;
     private String formInstId;
 
 
     private Map formData;
     private Map formData;

+ 4 - 0
mjava/src/main/java/com/malk/service/aliwork/impl/YDClientImpl.java

@@ -99,6 +99,10 @@ public class YDClientImpl implements YDClient {
                 rsp = UtilHttp.doGet(getRequestUrl("/forms/instances", ydParam), ddClient.initTokenHeader(), param);
                 rsp = UtilHttp.doGet(getRequestUrl("/forms/instances", ydParam), ddClient.initTokenHeader(), param);
                 break;
                 break;
 
 
+            case retrieve_process_id:
+                rsp = UtilHttp.doGet(getRequestUrl("/processes/instancesInfos", ydParam), ddClient.initTokenHeader(), param);
+                break;
+
             case retrieve_search_process:
             case retrieve_search_process:
                 rsp = UtilHttp.doPost(getRequestUrl("/processes/instances", ydParam), ddClient.initTokenHeader(), param, param);
                 rsp = UtilHttp.doPost(getRequestUrl("/processes/instances", ydParam), ddClient.initTokenHeader(), param, param);
                 break;
                 break;

+ 8 - 0
mjava/src/main/java/com/malk/service/dingtalk/DDClient_Attendance.java

@@ -45,4 +45,12 @@ public interface DDClient_Attendance {
      * 查询假期余额_全部
      * 查询假期余额_全部
      */
      */
     List<Map> queryVacationQuota_all(String access_token, String op_userid, String leave_code, String userids, int offset, int size);
     List<Map> queryVacationQuota_all(String access_token, String op_userid, String leave_code, String userids, int offset, int size);
+
+    /**
+     * 批量查询人员排班信息 [班次ID,无该字段,表明当天休息]
+     *
+     * @param to_date_time 开始时间和结束时间的间隔不能超过7天; 查询时间限制距今180天内.
+     * @param userids      查询的人员userId列表,一次最多可传50个
+     */
+    List<Map> listScheduleUsers(String access_token, String op_user_id, List<String> userids, long from_date_time, long to_date_time);
 }
 }

+ 9 - 5
mjava/src/main/java/com/malk/service/dingtalk/DDClient_Contacts.java

@@ -13,17 +13,17 @@ public interface DDClient_Contacts {
     /**
     /**
      * 获取子部门ID列表 [获取企业部门下的所有直属子部门列表]
      * 获取子部门ID列表 [获取企业部门下的所有直属子部门列表]
      */
      */
-    List<Number> listSubDepartmentId(String access_token, Number dept_id);
+    List<Long> listSubDepartmentId(String access_token, long dept_id);
 
 
     /**
     /**
      * 获取全部架构内部门_全部 ID
      * 获取全部架构内部门_全部 ID
      */
      */
-    List<Number> getDepartmentId_all(String access_token);
+    List<Long> getDepartmentId_all(String access_token);
 
 
     /**
     /**
      * 获取部门列表
      * 获取部门列表
      */
      */
-    List<Map> listSubDepartmentDetail(String access_token, Number dept_id);
+    List<Map> listSubDepartmentDetail(String access_token, long dept_id);
 
 
     /**
     /**
      * 获取全部架构内部门_全部 detail
      * 获取全部架构内部门_全部 detail
@@ -33,7 +33,7 @@ public interface DDClient_Contacts {
     /**
     /**
      * 获取部门用户userid列表 [无需分页]
      * 获取部门用户userid列表 [无需分页]
      */
      */
-    List<String> listDepartmentUserId(String access_token, Number dept_id);
+    List<String> listDepartmentUserId(String access_token, long dept_id);
 
 
     /**
     /**
      * 查询用户详情
      * 查询用户详情
@@ -41,7 +41,7 @@ public interface DDClient_Contacts {
     Map getUserInfoById(String access_token, String userId);
     Map getUserInfoById(String access_token, String userId);
 
 
     /**
     /**
-     * 根据手机号查询用户
+     * 根据手机号查询用户 [手机号查询仅返回userid, 查询详情后返回]
      */
      */
     Map getUserInfoByMobile(String access_token, String mobile);
     Map getUserInfoByMobile(String access_token, String mobile);
 
 
@@ -60,6 +60,10 @@ public interface DDClient_Contacts {
      */
      */
     Map createDepartment(String access_token, String name, long parent_id, Map body_ext);
     Map createDepartment(String access_token, String name, long parent_id, Map body_ext);
 
 
+    /**
+     * 获取部门详情
+     */
+    Map getDepartmentInfo(String access_token, long dept_id);
 
 
     /**
     /**
      * 获取员工人数
      * 获取员工人数

+ 8 - 0
mjava/src/main/java/com/malk/service/dingtalk/DDService.java

@@ -1,5 +1,6 @@
 package com.malk.service.dingtalk;
 package com.malk.service.dingtalk;
 
 
+import java.util.List;
 import java.util.Map;
 import java.util.Map;
 
 
 public interface DDService {
 public interface DDService {
@@ -13,4 +14,11 @@ public interface DDService {
      * 钉钉查询假期余额返回是记录, 按照消失/天单位计算该假期类型下的余额
      * 钉钉查询假期余额返回是记录, 按照消失/天单位计算该假期类型下的余额
      */
      */
     Map queryVacationQuota_balance(String access_token, String op_userid, String leave_code, String userids, int offset, int size);
     Map queryVacationQuota_balance(String access_token, String op_userid, String leave_code, String userids, int offset, int size);
+
+    // todo 通讯录部门结构返回; 通讯录全量数据同步
+
+    /**
+     * 判断员工是否在指定部门
+     */
+    boolean matchDepartment(String access_token, String userId, List<Long> deptIds);
 }
 }

+ 16 - 0
mjava/src/main/java/com/malk/service/dingtalk/impl/DDImplClient_Attendance.java

@@ -97,4 +97,20 @@ public class DDImplClient_Attendance implements DDClient_Attendance {
         }
         }
         return records;
         return records;
     }
     }
+
+    /**
+     * 批量查询人员排班信息
+     *
+     * @apiNote https://open.dingtalk.com/document/orgapp/query-batch-scheduling-information
+     */
+    @Override
+    public List<Map> listScheduleUsers(String access_token, String op_user_id, List<String> userids, long from_date_time, long to_date_time) {
+
+        Map params = UtilMap.map("op_user_id, userids, from_date_time, to_date_time", op_user_id, String.join(",", userids), from_date_time, to_date_time);
+        DDR ddr = DDR.doPost("https://oapi.dingtalk.com/topapi/attendance/schedule/listbyusers", null, DDConf.initTokenParams(access_token), params);
+        if (ObjectUtil.isNull(ddr.getResult())) {
+            return new ArrayList<>();
+        }
+        return (List<Map>) ddr.getResult();
+    }
 }
 }

+ 20 - 7
mjava/src/main/java/com/malk/service/dingtalk/impl/DDImplClient_Contacts.java

@@ -23,11 +23,13 @@ public class DDImplClient_Contacts implements DDClient_Contacts {
      * @apiNote https://open.dingtalk.com/document/orgapp/obtain-a-sub-department-id-list-v2
      * @apiNote https://open.dingtalk.com/document/orgapp/obtain-a-sub-department-id-list-v2
      */
      */
     @Override
     @Override
-    public List<Number> listSubDepartmentId(String access_token, Number dept_id) {
+    public List<Long> listSubDepartmentId(String access_token, long dept_id) {
         Map param = UtilMap.map("access_token", access_token);
         Map param = UtilMap.map("access_token", access_token);
         Map body = UtilMap.map("dept_id", dept_id);
         Map body = UtilMap.map("dept_id", dept_id);
         Map rsp = (Map) DDR.doPost("https://oapi.dingtalk.com/topapi/v2/department/listsubid", null, param, body).getResult();
         Map rsp = (Map) DDR.doPost("https://oapi.dingtalk.com/topapi/v2/department/listsubid", null, param, body).getResult();
-        return (List<Number>) rsp.get("dept_id_list");
+        List<Number> list = (List<Number>) rsp.get("dept_id_list");
+        // ppExt: 不要直接使用 Number 作为类型, 不同基本类型比较值时会有偏差 [可以作为父类接受数据, 避免直接强制类型转换错误, 再进行基本类型处理]
+        return list.stream().map(item -> item.longValue()).collect(Collectors.toList());
     }
     }
 
 
     /**
     /**
@@ -36,7 +38,7 @@ public class DDImplClient_Contacts implements DDClient_Contacts {
      * @apiNote https://open.dingtalk.com/document/orgapp/obtain-the-department-list-v2
      * @apiNote https://open.dingtalk.com/document/orgapp/obtain-the-department-list-v2
      */
      */
     @Override
     @Override
-    public List<Map> listSubDepartmentDetail(String access_token, Number dept_id) {
+    public List<Map> listSubDepartmentDetail(String access_token, long dept_id) {
         Map param = UtilMap.map("access_token", access_token);
         Map param = UtilMap.map("access_token", access_token);
         Map body = UtilMap.map("dept_id", dept_id);
         Map body = UtilMap.map("dept_id", dept_id);
         return (List<Map>) DDR.doPost("https://oapi.dingtalk.com/topapi/v2/department/listsub", null, param, body).getResult();
         return (List<Map>) DDR.doPost("https://oapi.dingtalk.com/topapi/v2/department/listsub", null, param, body).getResult();
@@ -51,8 +53,8 @@ public class DDImplClient_Contacts implements DDClient_Contacts {
     }
     }
 
 
     @Override
     @Override
-    public List<Number> getDepartmentId_all(String access_token) {
-        return (List<Number>) _getDepartment_all(access_token, DDConf.TOP_DEPARTMENT, new ArrayList<>(), true)
+    public List<Long> getDepartmentId_all(String access_token) {
+        return (List<Long>) _getDepartment_all(access_token, DDConf.TOP_DEPARTMENT, new ArrayList<>(), true)
                 .stream().map(detpId -> Long.valueOf(String.valueOf(detpId))).collect(Collectors.toList());
                 .stream().map(detpId -> Long.valueOf(String.valueOf(detpId))).collect(Collectors.toList());
     }
     }
 
 
@@ -75,7 +77,7 @@ public class DDImplClient_Contacts implements DDClient_Contacts {
      * @apiNote https://open.dingtalk.com/document/orgapp/query-the-list-of-department-userids
      * @apiNote https://open.dingtalk.com/document/orgapp/query-the-list-of-department-userids
      */
      */
     @Override
     @Override
-    public List<String> listDepartmentUserId(String access_token, Number dept_id) {
+    public List<String> listDepartmentUserId(String access_token, long dept_id) {
         Map param = UtilMap.map("access_token", access_token);
         Map param = UtilMap.map("access_token", access_token);
         Map body = UtilMap.map("dept_id", dept_id);
         Map body = UtilMap.map("dept_id", dept_id);
         Map rsp = (Map) DDR.doPost("https://oapi.dingtalk.com/topapi/user/listid", null, param, body).getResult();
         Map rsp = (Map) DDR.doPost("https://oapi.dingtalk.com/topapi/user/listid", null, param, body).getResult();
@@ -99,7 +101,8 @@ public class DDImplClient_Contacts implements DDClient_Contacts {
     public Map getUserInfoByMobile(String access_token, String mobile) {
     public Map getUserInfoByMobile(String access_token, String mobile) {
         Map param = UtilMap.map("access_token", access_token);
         Map param = UtilMap.map("access_token", access_token);
         Map body = UtilMap.map("mobile", mobile);
         Map body = UtilMap.map("mobile", mobile);
-        return (Map) DDR.doPost("https://oapi.dingtalk.com/topapi/v2/user/getbymobile", null, param, body).getResult();
+        Map result = (Map) DDR.doPost("https://oapi.dingtalk.com/topapi/v2/user/getbymobile", null, param, body).getResult();
+        return getUserInfoById(access_token, String.valueOf(result.get("userid")));
     }
     }
 
 
     /**
     /**
@@ -144,6 +147,16 @@ public class DDImplClient_Contacts implements DDClient_Contacts {
         return (Map) DDR.doPost("https://oapi.dingtalk.com/topapi/v2/department/create", null, param, body).getResult();
         return (Map) DDR.doPost("https://oapi.dingtalk.com/topapi/v2/department/create", null, param, body).getResult();
     }
     }
 
 
+    /**
+     * 获取部门详情
+     *
+     * @apiNote https://open.dingtalk.com/document/orgapp/query-department-details0-v2
+     */
+    @Override
+    public Map getDepartmentInfo(String access_token, long dept_id) {
+        return (Map) DDR.doPost("https://oapi.dingtalk.com/topapi/v2/department/get", null, DDConf.initTokenParams(access_token), UtilMap.map("dept_id", dept_id)).getResult();
+    }
+
     /**
     /**
      * 获取员工人数
      * 获取员工人数
      */
      */

+ 43 - 0
mjava/src/main/java/com/malk/service/dingtalk/impl/DDImplService.java

@@ -1,7 +1,10 @@
 package com.malk.service.dingtalk.impl;
 package com.malk.service.dingtalk.impl;
 
 
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.ObjectUtil;
+import com.malk.Util.UtilMap;
+import com.malk.server.dingtalk.DDConf;
 import com.malk.service.dingtalk.DDClient_Attendance;
 import com.malk.service.dingtalk.DDClient_Attendance;
+import com.malk.service.dingtalk.DDClient_Contacts;
 import com.malk.service.dingtalk.DDClient_Workflow;
 import com.malk.service.dingtalk.DDClient_Workflow;
 import com.malk.service.dingtalk.DDService;
 import com.malk.service.dingtalk.DDService;
 import lombok.SneakyThrows;
 import lombok.SneakyThrows;
@@ -24,6 +27,9 @@ public class DDImplService implements DDService {
     @Autowired
     @Autowired
     private DDClient_Attendance ddClient_attendance;
     private DDClient_Attendance ddClient_attendance;
 
 
+    @Autowired
+    private DDClient_Contacts ddClient_contacts;
+
     /**
     /**
      * 新发起审批15s内不允许撤销, 异步执行 [审批同意/拒绝只能通过节点操作, 系统无法直接介入]   -- 异步需要中转一层进行触发, client为原子接口
      * 新发起审批15s内不允许撤销, 异步执行 [审批同意/拒绝只能通过节点操作, 系统无法直接介入]   -- 异步需要中转一层进行触发, client为原子接口
      */
      */
@@ -61,4 +67,41 @@ public class DDImplService implements DDService {
         result.put("unit", unit);
         result.put("unit", unit);
         return result;
         return result;
     }
     }
+
+    /**
+     * 判断员工是否在指定部门
+     */
+    @Override
+    public boolean matchDepartment(String access_token, String userId, List<Long> deptIds) {
+        List<Number> deptIdList = (List<Number>) ddClient_contacts.getUserInfoById(access_token, userId).get("dept_id_list");
+        boolean isMatch = false;
+        // 兼容多部门场景
+        for (Number deptId : deptIdList) {
+            // ppExt: 不要直接使用 Number 作为类型, 不同基本类型比较值时会有偏差 [可以作为父类接受数据, 避免直接强制类型转换错误, 再进行基本类型处理]
+            isMatch = _matchDepartment(access_token, deptId.longValue(), deptIds);
+            if (isMatch) {
+                break;
+            }
+        }
+        return isMatch;
+    }
+
+    /// 递归: 判断员工是否在指定部门
+    boolean _matchDepartment(String access_token, long dept_id, List<Long> deptIds) {
+        boolean isMatch = false;
+        // 判断入参 [同样作为递归出口]
+        if (dept_id == DDConf.TOP_DEPARTMENT) {
+            return false;
+        }
+        if (deptIds.contains(dept_id)) {
+            isMatch = true;
+        }
+        // 递归出口 [查询上级部门匹配]
+        if (!isMatch) {
+            Map deptInfo = ddClient_contacts.getDepartmentInfo(access_token, dept_id);
+            long parentId = UtilMap.getLong(deptInfo, "parent_id");
+            return _matchDepartment(access_token, parentId, deptIds);
+        }
+        return isMatch;
+    }
 }
 }

+ 0 - 41
mjava/target/generated-sources/java/com/malk/base/QBasePo.java

@@ -1,41 +0,0 @@
-package com.malk.base;
-
-import static com.querydsl.core.types.PathMetadataFactory.*;
-
-import com.querydsl.core.types.dsl.*;
-
-import com.querydsl.core.types.PathMetadata;
-import javax.annotation.Generated;
-import com.querydsl.core.types.Path;
-
-
-/**
- * QBasePo is a Querydsl query type for BasePo
- */
-@Generated("com.querydsl.codegen.SupertypeSerializer")
-public class QBasePo extends EntityPathBase<BasePo> {
-
-    private static final long serialVersionUID = -2112308225L;
-
-    public static final QBasePo basePo = new QBasePo("basePo");
-
-    public final DateTimePath<java.util.Date> createTime = createDateTime("createTime", java.util.Date.class);
-
-    public final NumberPath<Long> id = createNumber("id", Long.class);
-
-    public final DateTimePath<java.util.Date> updateTime = createDateTime("updateTime", java.util.Date.class);
-
-    public QBasePo(String variable) {
-        super(BasePo.class, forVariable(variable));
-    }
-
-    public QBasePo(Path<? extends BasePo> path) {
-        super(path.getType(), path.getMetadata());
-    }
-
-    public QBasePo(PathMetadata metadata) {
-        super(BasePo.class, metadata);
-    }
-
-}
-

+ 0 - 37
mjava/target/generated-sources/java/com/malk/base/QJpaMap.java

@@ -1,37 +0,0 @@
-package com.malk.base;
-
-import static com.querydsl.core.types.PathMetadataFactory.*;
-
-import com.querydsl.core.types.dsl.*;
-
-import com.querydsl.core.types.PathMetadata;
-import javax.annotation.Generated;
-import com.querydsl.core.types.Path;
-
-
-/**
- * QJpaMap is a Querydsl query type for JpaMap
- */
-@Generated("com.querydsl.codegen.EntitySerializer")
-public class QJpaMap extends EntityPathBase<JpaMap> {
-
-    private static final long serialVersionUID = -1869980976L;
-
-    public static final QJpaMap jpaMap = new QJpaMap("jpaMap");
-
-    public final StringPath id = createString("id");
-
-    public QJpaMap(String variable) {
-        super(JpaMap.class, forVariable(variable));
-    }
-
-    public QJpaMap(Path<? extends JpaMap> path) {
-        super(path.getType(), path.getMetadata());
-    }
-
-    public QJpaMap(PathMetadata metadata) {
-        super(JpaMap.class, metadata);
-    }
-
-}
-

+ 0 - 70
mjava/target/generated-sources/java/com/malk/repository/entity/mutual/QMcAuthorizationPo.java

@@ -1,70 +0,0 @@
-package com.malk.repository.entity.mutual;
-
-import static com.querydsl.core.types.PathMetadataFactory.*;
-
-import com.querydsl.core.types.dsl.*;
-
-import com.querydsl.core.types.PathMetadata;
-import javax.annotation.Generated;
-import com.querydsl.core.types.Path;
-
-
-/**
- * QMcAuthorizationPo is a Querydsl query type for McAuthorizationPo
- */
-@Generated("com.querydsl.codegen.EntitySerializer")
-public class QMcAuthorizationPo extends EntityPathBase<McAuthorizationPo> {
-
-    private static final long serialVersionUID = 823235005L;
-
-    public static final QMcAuthorizationPo mcAuthorizationPo = new QMcAuthorizationPo("mcAuthorizationPo");
-
-    public final com.malk.base.QBasePo _super = new com.malk.base.QBasePo(this);
-
-    public final StringPath appName = createString("appName");
-
-    public final StringPath appType = createString("appType");
-
-    public final StringPath corpId = createString("corpId");
-
-    public final StringPath corpName = createString("corpName");
-
-    //inherited
-    public final DateTimePath<java.util.Date> createTime = _super.createTime;
-
-    public final NumberPath<Integer> delStatus = createNumber("delStatus", Integer.class);
-
-    public final StringPath deptId = createString("deptId");
-
-    public final StringPath deptName = createString("deptName");
-
-    public final StringPath description = createString("description");
-
-    //inherited
-    public final NumberPath<Long> id = _super.id;
-
-    public final StringPath remark = createString("remark");
-
-    public final StringPath systemToken = createString("systemToken");
-
-    //inherited
-    public final DateTimePath<java.util.Date> updateTime = _super.updateTime;
-
-    public final StringPath userId = createString("userId");
-
-    public final StringPath userName = createString("userName");
-
-    public QMcAuthorizationPo(String variable) {
-        super(McAuthorizationPo.class, forVariable(variable));
-    }
-
-    public QMcAuthorizationPo(Path<? extends McAuthorizationPo> path) {
-        super(path.getType(), path.getMetadata());
-    }
-
-    public QMcAuthorizationPo(PathMetadata metadata) {
-        super(McAuthorizationPo.class, metadata);
-    }
-
-}
-

+ 0 - 50
mjava/target/generated-sources/java/com/malk/repository/entity/primary/QMcTablePo.java

@@ -1,50 +0,0 @@
-package com.malk.repository.entity.primary;
-
-import static com.querydsl.core.types.PathMetadataFactory.*;
-
-import com.querydsl.core.types.dsl.*;
-
-import com.querydsl.core.types.PathMetadata;
-import javax.annotation.Generated;
-import com.querydsl.core.types.Path;
-
-
-/**
- * QMcTablePo is a Querydsl query type for McTablePo
- */
-@Generated("com.querydsl.codegen.EntitySerializer")
-public class QMcTablePo extends EntityPathBase<McTablePo> {
-
-    private static final long serialVersionUID = 597816118L;
-
-    public static final QMcTablePo mcTablePo = new QMcTablePo("mcTablePo");
-
-    public final com.malk.base.QBasePo _super = new com.malk.base.QBasePo(this);
-
-    //inherited
-    public final DateTimePath<java.util.Date> createTime = _super.createTime;
-
-    //inherited
-    public final NumberPath<Long> id = _super.id;
-
-    public final StringPath tDesc = createString("tDesc");
-
-    public final StringPath tName = createString("tName");
-
-    //inherited
-    public final DateTimePath<java.util.Date> updateTime = _super.updateTime;
-
-    public QMcTablePo(String variable) {
-        super(McTablePo.class, forVariable(variable));
-    }
-
-    public QMcTablePo(Path<? extends McTablePo> path) {
-        super(path.getType(), path.getMetadata());
-    }
-
-    public QMcTablePo(PathMetadata metadata) {
-        super(McTablePo.class, metadata);
-    }
-
-}
-

+ 0 - 40
mjava/target/generated-sources/java/com/malk/repository/entity/slave/QJpaMapSlave.java

@@ -1,40 +0,0 @@
-package com.malk.repository.entity.slave;
-
-import static com.querydsl.core.types.PathMetadataFactory.*;
-
-import com.querydsl.core.types.dsl.*;
-
-import com.querydsl.core.types.PathMetadata;
-import javax.annotation.Generated;
-import com.querydsl.core.types.Path;
-
-
-/**
- * QJpaMapSlave is a Querydsl query type for JpaMapSlave
- */
-@Generated("com.querydsl.codegen.EntitySerializer")
-public class QJpaMapSlave extends EntityPathBase<JpaMapSlave> {
-
-    private static final long serialVersionUID = -1301758614L;
-
-    public static final QJpaMapSlave jpaMapSlave = new QJpaMapSlave("jpaMapSlave");
-
-    public final com.malk.base.QJpaMap _super = new com.malk.base.QJpaMap(this);
-
-    //inherited
-    public final StringPath id = _super.id;
-
-    public QJpaMapSlave(String variable) {
-        super(JpaMapSlave.class, forVariable(variable));
-    }
-
-    public QJpaMapSlave(Path<? extends JpaMapSlave> path) {
-        super(path.getType(), path.getMetadata());
-    }
-
-    public QJpaMapSlave(PathMetadata metadata) {
-        super(JpaMapSlave.class, metadata);
-    }
-
-}
-

+ 0 - 137
mjava/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst

@@ -1,137 +0,0 @@
-com/malk/test/RESTFulTestController.class
-com/malk/Util/UtilImport$ExecuteLambda.class
-com/malk/server/aliwork/YDParam$Retrieve_Condition.class
-com/malk/service/fxiaoke/impl/FXKImplClient.class
-com/malk/server/h3yun/CYConf.class
-com/malk/service/dingtalk/DDClient_Storage.class
-com/malk/service/dingtalk/DDClient_Attendance.class
-com/malk/Util/UtilMc.class
-com/malk/Filter/RequestInterceptor.class
-com/malk/service/aliyun/impl/ALYInvoiceImpl.class
-com/malk/Util/UtilMath.class
-com/malk/server/aliwork/YDParam$Retrieve_FormInstId.class
-com/malk/Util/UtilImport$UtilImportBuilder.class
-com/malk/server/aliwork/YDParam$Delete.class
-com/malk/server/common/McException$McExceptionBuilder.class
-com/malk/Util/UtilDateTime.class
-com/malk/config/mutilSource/SlaveConfig.class
-com/malk/server/aliwork/YDR.class
-com/malk/service/dingtalk/impl/DDImplClient.class
-com/malk/repository/entity/primary/McTablePo$McTablePoBuilder.class
-com/malk/server/aliwork/YDConf.class
-com/malk/service/dingtalk/impl/DDImplClient_Storage.class
-com/malk/server/ekuaibao/EKBR.class
-com/malk/Util/UtilFile.class
-com/malk/repository/entity/primary/McTablePo.class
-com/malk/base/QBasePo.class
-com/malk/server/dingtalk/DDR_New.class
-com/malk/service/tencent/impl/TXYImplInvoice.class
-com/malk/server/tencent/TXYConf.class
-com/malk/server/h3yun/CYConf$ACTION_NAME.class
-com/malk/service/xbongbong/impl/XBBImplClient.class
-com/malk/test/McTestController$TModel.class
-com/malk/base/BaseDto.class
-com/malk/config/WebConfiguration.class
-com/malk/Util/UtilServlet.class
-com/malk/Util/UtilHttp.class
-com/malk/service/ekuaibao/impl/EKBClientImpl.class
-com/malk/server/common/McConf.class
-com/malk/Util/UtilString.class
-com/malk/Util/UtilVendor.class
-com/malk/server/aliwork/YDConf$FORM_OPERATION.class
-com/malk/delegate/impl/DDImplEvent_Delegate.class
-com/malk/service/dingtalk/impl/DDImplClient_Contacts.class
-com/malk/server/aliwork/YDParam$Create_Process.class
-com/malk/service/ekuaibao/EKBClient.class
-com/malk/service/dingtalk/DDClient_Workflow.class
-META-INF/spring-configuration-metadata.json
-com/malk/controller/DDCallbackController.class
-com/malk/Boot.class
-com/malk/test/dto/Async2Sync.class
-com/malk/Util/UtilExcel.class
-com/malk/base/BaseRepository.class
-com/malk/config/mutilSource/DataSourceConfig.class
-com/malk/service/dingtalk/DDService.class
-com/malk/server/common/FilePath$Path.class
-com/malk/server/dingtalk/DDConf.class
-com/malk/server/h3yun/CYR.class
-com/malk/Util/UtilExcel$UpdateCellStyle.class
-com/malk/Util/UtilExcel$UtilExcelBuilder.class
-com/malk/server/common/McPage.class
-com/malk/Filter/RequestFilter.class
-com/malk/service/fxiaoke/FXKClient.class
-com/malk/server/dingtalk/crypto/DingCallbackCrypto$Utils.class
-com/malk/service/h3yun/impl/CYImplClient.class
-com/malk/service/aliyun/ALYInvoice.class
-com/malk/service/aliwork/impl/YDClientImpl.class
-com/malk/server/common/McR.class
-com/malk/Util/UtilEnv.class
-com/malk/server/aliyun/ALYR.class
-com/malk/service/dingtalk/DDClient.class
-com/malk/repository/entity/mutual/McAuthorizationPo.class
-com/malk/server/aliwork/YDParam$Retrieve_Condition_Update.class
-com/malk/base/BasePo.class
-com/malk/schedule/McScheduleTask.class
-com/malk/server/common/McREnum.class
-com/malk/repository/entity/primary/QMcTablePo.class
-com/malk/service/aliwork/YDClient.class
-com/malk/core/AsyncConfig.class
-com/malk/service/dingtalk/DDClient_Contacts.class
-com/malk/delegate/DDEvent_Delegate.class
-com/malk/server/dingtalk/DDR.class
-com/malk/Filter/CatchException.class
-com/malk/server/common/VenR.class
-com/malk/Util/UtilConvert$ConvertData.class
-com/malk/server/fxiaoke/FXXR.class
-com/malk/server/aliwork/YDParam$Retrieve_ProcessInstanceIds.class
-com/malk/service/xbongbong/XBBClient.class
-com/malk/server/aliwork/YDParam$Update.class
-com/malk/Util/UtilList.class
-com/malk/test/McTestController.class
-com/malk/server/dingtalk/crypto/DingCallbackCrypto.class
-com/malk/Util/UtilMc$1Obj.class
-com/malk/Util/UtilImport.class
-com/malk/config/mutilSource/PrimaryConfig.class
-com/malk/server/fxiaoke/FXKConf.class
-com/malk/server/aliwork/YDParam$Update_ProcessInstanceId.class
-com/malk/base/BaseDao.class
-com/malk/service/dingtalk/impl/DDImplClient_Event.class
-com/malk/repository/entity/mutual/QMcAuthorizationPo.class
-com/malk/server/dingtalk/DDFormComponentDto$DDFormComponentDtoBuilder.class
-com/malk/server/dingtalk/crypto/DingCallbackCrypto$PKCS7Padding.class
-com/malk/server/aliwork/YDParam$Create.class
-com/malk/service/h3yun/CYClient.class
-com/malk/service/aliwork/impl/YDClientImpl$1.class
-com/malk/base/QJpaMap.class
-com/malk/service/dingtalk/DDClient_Event.class
-com/malk/server/aliwork/YDParam$Definition.class
-com/malk/server/aliwork/YDParam.class
-com/malk/service/dingtalk/impl/DDImplClient_Workflow.class
-com/malk/repository/dao/primary/McTableDao.class
-com/malk/server/aliwork/YDParam$Delete_ProcessInstanceId.class
-com/malk/service/dingtalk/impl/DDImplClient_Attendance.class
-com/malk/test/dto/User.class
-com/malk/config/JpaConfiguration.class
-com/malk/Util/UtilHttp$1.class
-com/malk/service/dingtalk/impl/DDImplService.class
-com/malk/repository/entity/slave/QJpaMapSlave.class
-com/malk/server/dingtalk/DDFormComponentDto.class
-com/malk/service/aliwork/impl/YDServiceImpl.class
-com/malk/service/aliwork/YDService.class
-com/malk/server/common/McR$McRBuilder.class
-com/malk/base/JpaMap.class
-com/malk/server/aliwork/YDParam$Retrieve_ProcessInstanceId.class
-com/malk/Util/UtilMap.class
-com/malk/server/aliwork/YDConf$FORM_QUERY.class
-com/malk/Util/UtilToken.class
-com/malk/server/dingtalk/crypto/DingCallbackCrypto$DingTalkEncryptException.class
-com/malk/server/ekuaibao/EKBConf.class
-com/malk/server/common/FilePath$Source.class
-com/malk/service/tencent/TXYInvoice.class
-com/malk/Util/UtilHttp$METHOD.class
-com/malk/Util/UtilNumber.class
-com/malk/server/aliwork/YDParam$YDParamBuilder.class
-com/malk/Util/UtilConvert.class
-com/malk/server/common/FilePath.class
-com/malk/server/common/McException.class
-com/malk/repository/dao/mutual/McAuthorizationDao.class

+ 0 - 108
mjava/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst

@@ -1,108 +0,0 @@
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/server/h3yun/CYR.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/server/aliwork/YDR.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/service/aliwork/impl/YDClientImpl.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/service/ekuaibao/impl/EKBClientImpl.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/service/xbongbong/XBBClient.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/Util/UtilMc.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/service/aliwork/YDClient.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/delegate/DDEvent_Delegate.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/service/dingtalk/impl/DDImplClient_Workflow.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/server/common/McPage.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/repository/dao/slave/McTableDao.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/base/BaseDao.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/service/tencent/impl/TXYImplInvoice.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/service/xbongbong/impl/XBBImplClient.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/server/common/FilePath.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/server/tencent/TXYConf.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/server/common/VenR.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/server/aliwork/YDConf.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/config/JpaConfiguration.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/service/aliyun/impl/ALYInvoiceImpl.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/Util/UtilVendor.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/server/fxiaoke/FXXR.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/repository/entity/slave/McTablePo.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/Util/UtilHttp.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/server/h3yun/CYConf.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/Filter/ExceptionNotice.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/server/dingtalk/DDR.java
-/Users/malk/server/java-mcli-2/mjava/target/generated-sources/java/com/malk/base/QBasePo.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/service/dingtalk/impl/DDImplClient_Contacts.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/server/common/McException.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/test/JSPTestController.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/service/dingtalk/impl/DDImplClient.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/Filter/RequestInterceptor.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/Util/UtilExcel.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/test/YDTestController.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/server/common/McR.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/server/ekuaibao/EKBConf.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/service/dingtalk/DDClient_Event.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/Filter/CatchException.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/schedule/McScheduleTask.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/delegate/impl/DDImplEvent_Delegate.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/Filter/RequestFilter.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/config/mutilSource/PrimaryConfig.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/service/aliwork/impl/YDServiceImpl.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/server/ekuaibao/EKBR.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/repository/entity/mutual/McAuthorizationPo.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/server/fxiaoke/FXKConf.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/server/dingtalk/DDR_New.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/server/dingtalk/crypto/DingCallbackCrypto.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/server/dingtalk/DDFormComponentDto.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/service/dingtalk/impl/DDImplClient_Event.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/Util/UtilImport.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/Util/UtilConvert.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/server/common/McConf.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/Util/UtilDateTime.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/server/common/McREnum.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/base/BaseRepository.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/Util/UtilList.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/config/mutilSource/DataSourceConfig.java
-/Users/malk/server/java-mcli-2/mjava/target/generated-sources/java/com/malk/base/QJpaMap.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/config/mutilSource/SlaveConfig.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/Util/UtilMap.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/config/WebConfiguration.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/base/JpaMap.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/test/DSTestController.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/test/dto/User.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/core/AsyncConfig.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/service/h3yun/impl/CYImplClient.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/Util/UtilEnv.java
-/Users/malk/server/java-mcli-2/mjava/target/generated-sources/java/com/malk/repository/entity/mutual/QMcAuthorizationPo.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/Util/UtilMath.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/service/fxiaoke/FXKClient.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/controller/DDCallbackController.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/test/McTestController.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/service/tencent/TXYInvoice.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/service/dingtalk/DDClient_Attendance.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/Util/UtilNumber.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/test/RESTFulTestController.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/test/dto/Async2Sync.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/test/DDTestController.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/repository/dao/mutual/McAuthorizationDao.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/service/dingtalk/DDClient_Storage.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/base/BaseDto.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/Boot.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/service/aliwork/YDService.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/service/dingtalk/DDClient_Workflow.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/service/dingtalk/impl/DDImplClient_Storage.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/test/MGTestController.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/server/dingtalk/DDConf.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/Util/UtilFile.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/repository/entity/primary/McTablePo.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/server/aliyun/ALYR.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/service/dingtalk/impl/DDImplClient_Attendance.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/Util/UtilString.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/server/aliwork/YDParam.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/service/fxiaoke/impl/FXKImplClient.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/service/aliyun/ALYInvoice.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/repository/dao/primary/McTableDao.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/service/h3yun/CYClient.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/Util/UtilServlet.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/service/ekuaibao/EKBClient.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/service/dingtalk/impl/DDImplService.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/service/dingtalk/DDClient_Contacts.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/base/BasePo.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/Util/UtilToken.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/service/dingtalk/DDService.java
-/Users/malk/server/java-mcli-2/mjava/src/main/java/com/malk/service/dingtalk/DDClient.java
-/Users/malk/server/java-mcli-2/mjava/target/generated-sources/java/com/malk/repository/entity/primary/QMcTablePo.java