Browse Source

锡鼎更新

pruple_boy 1 year ago
parent
commit
01b16cfcf9
62 changed files with 1497 additions and 777 deletions
  1. 0 2
      mjava-guyuan/src/main/resources/application-dev.yml
  2. 0 2
      mjava-guyuan/src/main/resources/application-prod.yml
  3. 0 2
      mjava-guyuan/target/classes/application-dev.yml
  4. 0 2
      mjava-guyuan/target/classes/application-prod.yml
  5. 1 1
      mjava-hangshi/src/main/java/com/malk/hangshi/controller/HSController.java
  6. 0 5
      mjava-lichen/target/maven-archiver/pom.properties
  7. 0 2
      mjava-lichen/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
  8. 0 2
      mjava-lichen/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
  9. BIN
      mjava-lichen/target/mjava-lichen.jar.original
  10. 4 5
      mjava-rongzhi/src/main/java/com/malk/rongzhi/controller/RongZhiController.java
  11. 5 0
      mjava-rongzhi/src/main/java/com/malk/rongzhi/repository/entity/RzEkbRecordPo.java
  12. 13 0
      mjava-rongzhi/src/main/java/com/malk/rongzhi/schedule/RZScheduleTask.java
  13. 7 0
      mjava-rongzhi/src/main/java/com/malk/rongzhi/service/RZService.java
  14. 54 23
      mjava-rongzhi/src/main/java/com/malk/rongzhi/service/impl/RZServiceImpl.java
  15. 2 2
      mjava-rongzhi/src/main/resources/application-dev.yml
  16. 2 2
      mjava-rongzhi/target/classes/application-dev.yml
  17. 0 50
      mjava-rongzhi/target/generated-sources/java/com/malk/rongzhi/repository/entity/QRzEkbRecordPo.java
  18. 0 5
      mjava-shanghaishiwei/target/maven-archiver/pom.properties
  19. 0 0
      mjava-shanghaishiwei/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
  20. 0 8
      mjava-shanghaishiwei/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
  21. BIN
      mjava-shanghaishiwei/target/mjava-shanghaishiwei.jar.original
  22. 54 0
      mjava-xiding/src/main/java/com/malk/xiding/controller/GSController.java
  23. 22 32
      mjava-xiding/src/main/java/com/malk/xiding/controller/XDController.java
  24. 118 1
      mjava-xiding/src/main/java/com/malk/xiding/schedule/XDScheduleTask.java
  25. 28 0
      mjava-xiding/src/main/java/com/malk/xiding/service/GSClient.java
  26. 215 0
      mjava-xiding/src/main/java/com/malk/xiding/service/impl/GSImplClient.java
  27. 4 1
      mjava-xiding/src/main/resources/application-dev.yml
  28. 17 1
      mjava-xiding/src/main/resources/application-prod.yml
  29. 4 1
      mjava-xiding/target/classes/application-dev.yml
  30. 17 1
      mjava-xiding/target/classes/application-prod.yml
  31. 1 1
      mjava-xiding/target/maven-archiver/pom.properties
  32. 3 0
      mjava-xiding/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
  33. 3 0
      mjava-xiding/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
  34. BIN
      mjava-xiding/target/mjava-xiding.jar.original
  35. 150 155
      mjava-xintianlong/src/main/java/com/malk/xintianlong/controller/HSController.java
  36. 79 79
      mjava-xintianlong/src/main/java/com/malk/xintianlong/repository/dao/primary/HSViewDao.java
  37. 80 80
      mjava-xintianlong/src/main/java/com/malk/xintianlong/repository/dao/slave/HSViewDao.java
  38. 36 36
      mjava-xintianlong/src/main/resources/application-dev.yml
  39. 39 39
      mjava-xintianlong/src/main/resources/application-prod.yml
  40. 36 36
      mjava-xintianlong/target/classes/application-dev.yml
  41. 39 39
      mjava-xintianlong/target/classes/application-prod.yml
  42. 0 63
      mjava-xintianlong/target/generated-sources/java/com/malk/xintianlong/repository/entity/QHSApproveRecordPo.java
  43. 0 62
      mjava-xintianlong/target/generated-sources/java/com/malk/xintianlong/repository/entity/primary/QHSApproveRecordPo.java
  44. 0 5
      mjava-xintianlong/target/maven-archiver/pom.properties
  45. 0 1
      mjava-xintianlong/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
  46. 0 14
      mjava-xintianlong/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
  47. BIN
      mjava-xintianlong/target/mjava-xintianlong.jar.original
  48. 39 2
      mjava/src/main/java/com/malk/Util/UtilDateTime.java
  49. 7 0
      mjava/src/main/java/com/malk/Util/UtilMap.java
  50. 113 5
      mjava/src/main/java/com/malk/Util/UtilNumber.java
  51. 9 0
      mjava/src/main/java/com/malk/server/aliwork/YDConf.java
  52. 15 2
      mjava/src/main/java/com/malk/server/aliwork/YDParam.java
  53. 0 1
      mjava/src/main/java/com/malk/service/aliwork/YDClient.java
  54. 26 1
      mjava/src/main/java/com/malk/service/aliwork/YDService.java
  55. 3 0
      mjava/src/main/java/com/malk/service/aliwork/impl/YDClientImpl.java
  56. 54 1
      mjava/src/main/java/com/malk/service/aliwork/impl/YDServiceImpl.java
  57. 2 2
      mjava/src/main/java/com/malk/service/dingtalk/DDClient_Storage.java
  58. 1 1
      mjava/src/main/resources/application.yml
  59. 60 0
      mjava/target/classes/META-INF/spring-configuration-metadata.json
  60. 1 1
      mjava/target/classes/application.yml
  61. 1 1
      mjava/target/maven-archiver/pom.properties
  62. 133 0
      mjava/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst

+ 0 - 2
mjava-guyuan/src/main/resources/application-dev.yml

@@ -22,8 +22,6 @@ spring:
     show-sql: true
     database: MYSQL
     database-platform: org.hibernate.dialect.MySQL57Dialect
-  flyway:
-    enabled: false        #  需要配置 jpa.hibernate.ddl-auto 为 none. 否则 flyway.enabled 配置会无效, 在没有数库连接情况下程序无法启动
 
 # swagger3
 swagger:

+ 0 - 2
mjava-guyuan/src/main/resources/application-prod.yml

@@ -19,8 +19,6 @@ spring:
   jpa:
     database: MYSQL
     database-platform: org.hibernate.dialect.MySQL57Dialect
-  flyway:
-    enabled: false      #  需要配置 jpa.hibernate.ddl-auto 为 none. 否则 flyway.enabled 配置会无效, 在没有数库连接情况下程序无法启动
 
 # dingtalk
 dingtalk:

+ 0 - 2
mjava-guyuan/target/classes/application-dev.yml

@@ -22,8 +22,6 @@ spring:
     show-sql: true
     database: MYSQL
     database-platform: org.hibernate.dialect.MySQL57Dialect
-  flyway:
-    enabled: false        #  需要配置 jpa.hibernate.ddl-auto 为 none. 否则 flyway.enabled 配置会无效, 在没有数库连接情况下程序无法启动
 
 # swagger3
 swagger:

+ 0 - 2
mjava-guyuan/target/classes/application-prod.yml

@@ -19,8 +19,6 @@ spring:
   jpa:
     database: MYSQL
     database-platform: org.hibernate.dialect.MySQL57Dialect
-  flyway:
-    enabled: false      #  需要配置 jpa.hibernate.ddl-auto 为 none. 否则 flyway.enabled 配置会无效, 在没有数库连接情况下程序无法启动
 
 # dingtalk
 dingtalk:

+ 1 - 1
mjava-hangshi/src/main/java/com/malk/hangshi/controller/HSController.java

@@ -42,7 +42,7 @@ public class HSController {
         McException.assertParamException_Null(data, "condition", "formUuid", "compId");
 
         List conditions = Arrays.asList(UtilMap.map("key, value, type, operator, componentName", data.get("compId"), data.get("condition"), "TEXT", "contains", "TableField"));
-
+        
         YDParam ydParam = YDParam.builder()
                 .formUuid(String.valueOf(data.get("formUuid")))
                 .searchCondition(JSON.toJSONString(conditions))

+ 0 - 5
mjava-lichen/target/maven-archiver/pom.properties

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

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

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

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

@@ -1,2 +0,0 @@
-/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


+ 4 - 5
mjava-rongzhi/src/main/java/com/malk/rongzhi/controller/RongZhiController.java

@@ -1,6 +1,5 @@
 package com.malk.rongzhi.controller;
 
-import com.malk.Util.UtilDateTime;
 import com.malk.rongzhi.server.RZConf;
 import com.malk.rongzhi.service.RZService;
 import com.malk.server.common.McR;
@@ -11,7 +10,6 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.time.LocalDateTime;
 import java.util.Map;
 
 /**
@@ -44,8 +42,9 @@ public class RongZhiController {
 
     @PostMapping("/test")
     McR test() {
-        LocalDateTime finish = UtilDateTime.getLocalDateTimeFromTimestamp(1685461901000L + 1 * 60 * 60 * 1000L);
-        log.info("xxx, {}", finish);
-        return McR.success(finish.getHour());
+//        LocalDateTime finish = UtilDateTime.getLocalDateTimeFromTimestamp(1685461901000L + 1 * 60 * 60 * 1000L);
+//        log.info("xxx, {}", finish);
+//        return McR.success(finish.getHour());
+        return McR.success(rzService.getUserIds(false));
     }
 }

+ 5 - 0
mjava-rongzhi/src/main/java/com/malk/rongzhi/repository/entity/RzEkbRecordPo.java

@@ -26,4 +26,9 @@ public class RzEkbRecordPo extends BasePo {
      * 用户id [易快报]
      */
     private String userId;
+
+    /**
+     * 用户userId [钉钉]
+     */
+    private String name;
 }

+ 13 - 0
mjava-rongzhi/src/main/java/com/malk/rongzhi/schedule/RZScheduleTask.java

@@ -54,4 +54,17 @@ public class RZScheduleTask {
     public void Time_Period_3() {
         syncAttendance2EKB();
     }
+
+    /**
+     * 每天21.30同步, 10点同步考勤
+     */
+    @Scheduled(cron = "0 30 21 * * ? ")
+    public void syncDingTalkFailedList() {
+        try {
+            rzService.getUserIds(true);
+        } catch (Exception e) {
+            // 记录错误信息
+            e.printStackTrace();
+        }
+    }
 }

+ 7 - 0
mjava-rongzhi/src/main/java/com/malk/rongzhi/service/RZService.java

@@ -2,6 +2,8 @@ package com.malk.rongzhi.service;
 
 import com.malk.rongzhi.server.RZConf;
 
+import java.util.List;
+
 public interface RZService {
 
     /**
@@ -9,6 +11,11 @@ public interface RZService {
      */
     String getAccessToken(RZConf.TYPE type);
 
+    /**
+     * 获取用户数据
+     */
+    List<String> getUserIds(boolean isClear);
+
     /**
      * 同步考勤数据到e快报
      */

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

@@ -1,5 +1,6 @@
 package com.malk.rongzhi.service.impl;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.malk.Util.UtilDateTime;
 import com.malk.Util.UtilHttp;
 import com.malk.Util.UtilMap;
@@ -27,7 +28,7 @@ import java.util.stream.Collectors;
 public class RZServiceImpl implements RZService {
 
     @Autowired
-    private DDClient_Contacts ddClientImpl_contacts;
+    private DDClient_Contacts ddClient_contacts;
 
     @Autowired
     private DDClient_Attendance ddClient_attendance;
@@ -51,30 +52,51 @@ public class RZServiceImpl implements RZService {
         return rsp.getData();
     }
 
+    private List<String> USER_IDS;
+
+    // 获取用户数据
+    @Override
+    public List<String> getUserIds(boolean isClear) {
+        if (isClear) {
+            USER_IDS = null;
+        }
+        if (ObjectUtil.isNull(USER_IDS)) {
+            log.info("###### [DD]开始同步组织架构 ######");
+            List<String> userIds = new ArrayList<>();
+            syncOrganizationalStructure(DDConf.TOP_DEPARTMENT, userIds);
+            USER_IDS = userIds;
+            log.info("###### [DD]同步组织架构结束 ######");
+        }
+        return USER_IDS;
+    }
+
     // 同步考勤数据到e快报
     @Override
     public void uploadTravelData() {
-        // 获取用户数据
-        log.info("###### [DD]开始同步组织架构 ######");
-        List<String> userIds = new ArrayList<>();
-        syncOrganizationalStructure(DDConf.TOP_DEPARTMENT, userIds);
-        log.info("###### [DD]同步组织架构结束 ######");
+
+        List<String> userIds = getUserIds(false);
+//        List<String> userIds = Arrays.asList("175666564733615796", "252036265721033696");
+
         // 获取用户考勤
         for (int i = 0; i < userIds.size(); i += 50) {
             int to = (i + 50) > userIds.size() ? userIds.size() : i + 50;
-            // 考勤范围从当日 7.30 到次日 7.30
-//            String now = "2023-06-20";
-            String now = UtilDateTime.formatDate(new Date());
-            String from = now + " 07:30:00";
-            String end = now + " 23:59:59";
-            // fixme: [凌晨以后同步新的考勤时段]
-            if (LocalDateTime.now().getHour() <= 7) {
-                from = now + " 00:00:00";
-                end = now + " 07:30:00";
+
+            LocalDateTime now = LocalDateTime.now();
+//            LocalDateTime now = UtilDateTime.parseLocalDateTime("2023-09-14 22:00:00");
+            // 考勤范围从当日 7.30 到次日 7.30, 查询时间需要调整 fixme: [凌晨以后同步新的考勤时段]
+            String from = "", end = "";
+            if (now.getHour() <= 7) {
+                from = UtilDateTime.formatLocalDate(now.plusDays(-1).toLocalDate());
+                end = UtilDateTime.formatLocalDate(now.toLocalDate());
+            } else {
+                from = UtilDateTime.formatLocalDate(now.toLocalDate());
+                end = UtilDateTime.formatLocalDate(now.plusDays(1).toLocalDate());
             }
+            from = from + " 07:30:00";
+            end = end + " 07:29:59";
+            // 匹配数据考勤
             List<String> users = userIds.subList(i, to);
             List<Map> list = ddClient_attendance.listAttendanceRecord(getAccessToken(RZConf.TYPE.dingtalk), users, from, end);
-            // 匹配数据考勤
             users.forEach(user -> {
                 List<Map> records = list.stream().filter(item -> user.equals(item.get("userId"))).collect(Collectors.toList());
                 // 有下班打卡
@@ -84,9 +106,9 @@ public class RZServiceImpl implements RZService {
                     String userId = String.valueOf(records.get(0).get("userId"));
                     LocalDateTime begin = UtilDateTime.getLocalDateTimeFromTimestamp(checkIn);
                     LocalDateTime finish = UtilDateTime.getLocalDateTimeFromTimestamp(checkOut);
-                    // 下班超过22点, 且当天考勤超过11小时
-                    float hour = UtilDateTime.betweenHour(begin, finish);
-                    if (hour > 11.0f && finish.getHour() >= 22) {
+                    // 下班超过22点或在次日7点上班前, 且当天考勤超过11小时
+                    double hour = UtilDateTime.betweenHour(begin, finish);
+                    if (hour > 11.0f && (finish.getHour() >= 22 || finish.getHour() <= 7)) {
                         String checkDate = UtilDateTime.formatLocalDate(begin.toLocalDate());
                         if (!rzEkbRecordDao.existsByUserIdAndCheckDate(userId, checkDate)) {
                             log.info("匹配符合数据, {}, {}, {}", userId, UtilDateTime.formatLocalDateTime(begin), UtilDateTime.formatLocalDateTime(finish));
@@ -108,11 +130,17 @@ public class RZServiceImpl implements RZService {
     private void syncOrganizationalStructure(long deptId, List<String> userIds) {
         // 同步一级部门用户
         if (deptId == DDConf.TOP_DEPARTMENT) {
-            userIds.addAll(ddClientImpl_contacts.listDepartmentUserId(getAccessToken(RZConf.TYPE.dingtalk), DDConf.TOP_DEPARTMENT));
+            userIds.addAll(ddClient_contacts.listDepartmentUserId(getAccessToken(RZConf.TYPE.dingtalk), DDConf.TOP_DEPARTMENT));
         }
         // 同步除一级部门外所有部门用户
-        ddClientImpl_contacts.listSubDepartmentId(getAccessToken(RZConf.TYPE.dingtalk), deptId).forEach(dept -> {
-            List<String> ids = ddClientImpl_contacts.listDepartmentUserId(getAccessToken(RZConf.TYPE.dingtalk), dept);
+        ddClient_contacts.listSubDepartmentId(getAccessToken(RZConf.TYPE.dingtalk), deptId).forEach(dept -> {
+            // 限流处理
+            try {
+                Thread.sleep(40);
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
+            List<String> ids = ddClient_contacts.listDepartmentUserId(getAccessToken(RZConf.TYPE.dingtalk), dept);
             userIds.addAll(ids);
             syncOrganizationalStructure(dept, userIds);
         });
@@ -135,9 +163,12 @@ public class RZServiceImpl implements RZService {
         // 创建单据数据, 推送易快报审批作为打车依据
         EKBR ekbr = ekbClient.createFormInstance(getAccessToken(RZConf.TYPE.ekuaibao), true, false, formData, new HashMap());
         // 记录当天的推送结果
+        Map user = ddClient_contacts.getUserInfoById(getAccessToken(RZConf.TYPE.dingtalk), userId);
         rzEkbRecordDao.save(RzEkbRecordPo.builder()
                 .userId(userId)
-                .checkDate(checkDate).build());
+                .checkDate(checkDate)
+                .name(String.valueOf(user.get("name")))
+                .build());
         log.info("易快报推送结果, {}", ekbr.getFlow());
     }
 }

+ 2 - 2
mjava-rongzhi/src/main/resources/application-dev.yml

@@ -14,8 +14,8 @@ spring:
   datasource:
     driver-class-name: com.mysql.cj.jdbc.Driver
     username: root
-    password: mu123
-    url: jdbc:mysql://127.0.0.1:3306/mjava?serverTimezone=Asia/Shanghai&useUnicode=yes&characterEncoding=UTF-8&useSSL=true
+    password: cp-root@2022++
+    url: jdbc:mysql://47.97.181.40:3306/mjava?serverTimezone=Asia/Shanghai&useUnicode=yes&characterEncoding=UTF-8&useSSL=true
   jpa:
     hibernate:
       ddl-auto: none      # JPA对表没有任何操作

+ 2 - 2
mjava-rongzhi/target/classes/application-dev.yml

@@ -14,8 +14,8 @@ spring:
   datasource:
     driver-class-name: com.mysql.cj.jdbc.Driver
     username: root
-    password: mu123
-    url: jdbc:mysql://127.0.0.1:3306/mjava?serverTimezone=Asia/Shanghai&useUnicode=yes&characterEncoding=UTF-8&useSSL=true
+    password: cp-root@2022++
+    url: jdbc:mysql://47.97.181.40:3306/mjava?serverTimezone=Asia/Shanghai&useUnicode=yes&characterEncoding=UTF-8&useSSL=true
   jpa:
     hibernate:
       ddl-auto: none      # JPA对表没有任何操作

+ 0 - 50
mjava-rongzhi/target/generated-sources/java/com/malk/rongzhi/repository/entity/QRzEkbRecordPo.java

@@ -1,50 +0,0 @@
-package com.malk.rongzhi.repository.entity;
-
-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;
-
-
-/**
- * QRzEkbRecordPo is a Querydsl query type for RzEkbRecordPo
- */
-@Generated("com.querydsl.codegen.EntitySerializer")
-public class QRzEkbRecordPo extends EntityPathBase<RzEkbRecordPo> {
-
-    private static final long serialVersionUID = 14758822L;
-
-    public static final QRzEkbRecordPo rzEkbRecordPo = new QRzEkbRecordPo("rzEkbRecordPo");
-
-    public final com.malk.base.QBasePo _super = new com.malk.base.QBasePo(this);
-
-    public final StringPath checkDate = createString("checkDate");
-
-    //inherited
-    public final DateTimePath<java.util.Date> createTime = _super.createTime;
-
-    //inherited
-    public final NumberPath<Long> id = _super.id;
-
-    //inherited
-    public final DateTimePath<java.util.Date> updateTime = _super.updateTime;
-
-    public final StringPath userId = createString("userId");
-
-    public QRzEkbRecordPo(String variable) {
-        super(RzEkbRecordPo.class, forVariable(variable));
-    }
-
-    public QRzEkbRecordPo(Path<? extends RzEkbRecordPo> path) {
-        super(path.getType(), path.getMetadata());
-    }
-
-    public QRzEkbRecordPo(PathMetadata metadata) {
-        super(RzEkbRecordPo.class, metadata);
-    }
-
-}
-

+ 0 - 5
mjava-shanghaishiwei/target/maven-archiver/pom.properties

@@ -1,5 +0,0 @@
-#Generated by Maven
-#Thu Jun 22 22:59:28 CST 2023
-version=1.0-SNAPSHOT
-groupId=com.malk
-artifactId=mjava-shanghaishiwei

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


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

@@ -1,8 +0,0 @@
-/Users/malk/server/java-mcli-2/mjava-shanghaishiwei/src/main/java/com/malk/shanghaishiwei/service/HTClient.java
-/Users/malk/server/java-mcli-2/mjava-shanghaishiwei/src/main/java/com/malk/shanghaishiwei/service/impl/HTImplClient.java
-/Users/malk/server/java-mcli-2/mjava-shanghaishiwei/src/main/java/com/malk/shanghaishiwei/service/HTService.java
-/Users/malk/server/java-mcli-2/mjava-shanghaishiwei/src/main/java/com/malk/shanghaishiwei/server/HTConf.java
-/Users/malk/server/java-mcli-2/mjava-shanghaishiwei/src/main/java/com/malk/shanghaishiwei/service/impl/HTImplService.java
-/Users/malk/server/java-mcli-2/mjava-shanghaishiwei/src/main/java/com/malk/shanghaishiwei/controller/SHHWController.java
-/Users/malk/server/java-mcli-2/mjava-shanghaishiwei/src/main/java/com/malk/shanghaishiwei/server/HTR.java
-/Users/malk/server/java-mcli-2/mjava-shanghaishiwei/src/main/java/com/malk/shanghaishiwei/Boot.java

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


+ 54 - 0
mjava-xiding/src/main/java/com/malk/xiding/controller/GSController.java

@@ -0,0 +1,54 @@
+package com.malk.xiding.controller;
+
+import com.malk.Util.UtilMap;
+import com.malk.server.common.McR;
+import com.malk.xiding.service.GSClient;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+/**
+ * 错误抛出与拦截详见CatchException
+ */
+@Slf4j
+@RestController
+@RequestMapping("/xiding-2")
+public class GSController {
+
+    @Autowired
+    private GSClient gsClient;
+
+    @PostMapping("month/report")
+    McR report() {
+
+        gsClient.collectMonthReport();
+        return McR.success();
+    }
+
+    @PostMapping("month/exception")
+    McR exception() {
+
+        gsClient.exceptionMonthReport();
+        return McR.success();
+    }
+
+    @PostMapping("month/validate")
+    McR validate(@RequestBody Map data) {
+
+        gsClient.validateManHour(UtilMap.getString(data, "userId"), ((Map) data.get("details")));
+        return McR.success();
+    }
+
+
+    @PostMapping("test")
+    McR test() {
+
+        gsClient.exceptionMonthReport();
+        return McR.success();
+    }
+}

+ 22 - 32
mjava-xiding/src/main/java/com/malk/xiding/controller/XDController.java

@@ -1,6 +1,5 @@
 package com.malk.xiding.controller;
 
-import com.malk.Util.UtilDateTime;
 import com.malk.server.common.McR;
 import com.malk.server.fxiaoke.FXKConf;
 import com.malk.service.dingtalk.DDClient;
@@ -10,21 +9,14 @@ import com.malk.service.dingtalk.DDService;
 import com.malk.service.fxiaoke.FXKClient;
 import com.malk.xiding.repository.dao.XdDdApproveRecordDao2;
 import com.malk.xiding.repository.dao.XdDdFxkRelationDao;
-import com.malk.xiding.server.XDConf;
 import com.malk.xiding.service.XDService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.PageRequest;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
 /**
  * 错误抛出与拦截详见CatchException
  */
@@ -57,13 +49,12 @@ public class XDController {
     @Autowired
     private XdDdFxkRelationDao relationDao;
 
-
     @PostMapping("test3")
     McR test3(@RequestParam String name) {
-        Date sTime = UtilDateTime.parseDateTime("2023-07-01" + " 00:00:00");
-        Date eTime = UtilDateTime.parseDateTime("2023-05-31" + " 23:59:59");
+//        Date sTime = UtilDateTime.parseDateTime("2023-07-01" + " 00:00:00");
+//        Date eTime = UtilDateTime.parseDateTime("2023-05-31" + " 23:59:59");
 
-        List<Map> records = fxkClient.getAttendance_All(fxkClient.getAccessToken(), fxkConf.getCorpId(), sTime.getTime(), eTime.getTime(), Arrays.asList(relationDao.findByName(name).getIdFxxk()));
+//        List<Map> records = fxkClient.getAttendance_All(fxkClient.getAccessToken(), fxkConf.getCorpId(), sTime.getTime(), eTime.getTime(), Arrays.asList(relationDao.findByName(name).getIdFxxk()));
 //        log.info("xxxx, {}", records.size());
 //
 //        Date tTime = UtilDateTime.parseDateTime("2023-05-04" + " 04:11:00");
@@ -76,46 +67,46 @@ public class XDController {
 //        return McR.success(JSON.parseArray(JSON.toJSONString(records), XdFxkDdAttendancePo.class));
 //        return McR.success(JSON.parseObject(JSON.toJSONString(records.get(0)), XdFxkDdAttendancePo.class));
 
-        return McR.success(approveRecordDao2.findAllByEndTimeAfterAndTypeAndMarketing(sTime, "出差", true, PageRequest.of(0, Integer.MAX_VALUE)));
-
+//        return McR.success(approveRecordDao2.findAllByEndTimeAfterAndTypeAndMarketing(sTime, "出差", true, PageRequest.of(0, Integer.MAX_VALUE)));
+        return McR.success();
     }
 
     @PostMapping("test1")
     McR test1() {
-        Date eTime = UtilDateTime.parseDateTime(UtilDateTime.formatDate(new Date()) + " 23:59:59");
-        Date sTime = UtilDateTime.parseDateTime(UtilDateTime.formatDate(new Date()) + " 11:00:00");
-
-        String Time = UtilDateTime.formatLocalDate(UtilDateTime.convertToLocalDateTimeFromDate(sTime).plusDays(1).toLocalDate()) + " 05:00:00";
-
-        log.info("xxxx, {}, {}", sTime, Time);
-        ddClient_attendance.listAttendanceRecord(ddClient.getAccessToken(), Arrays.asList("01184453430538751536"), "2023-07-17 00:00:00", "2023-07-17 23:59:59");
+//        Date eTime = UtilDateTime.parseDateTime(UtilDateTime.formatDate(new Date()) + " 23:59:59");
+//        Date sTime = UtilDateTime.parseDateTime(UtilDateTime.formatDate(new Date()) + " 11:00:00");
+//
+//        String Time = UtilDateTime.formatLocalDate(UtilDateTime.convertToLocalDateTimeFromDate(sTime).plusDays(1).toLocalDate()) + " 05:00:00";
+//
+//        log.info("xxxx, {}, {}", sTime, Time);
+//        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(approveRecordDao2.findAllByEndTimeAfter(UtilDateTime.parseDateTime("2023-05-18 00:00:00"), PageRequest.of(0, 50)));
         return McR.success();
     }
 
-    @PostMapping("test")
+    @PostMapping("test11")
     McR test() {
-        long startTime = UtilDateTime.parseDateTime("2023-07-31" + " 00:00:00").getTime();
-        long endTime = UtilDateTime.parseDateTime("2023-08-05" + " 23:59:59").getTime();
-        xdService.syncApprove(startTime, endTime, XDConf.TMP_CODE_CC, "出差");
+//        long startTime = UtilDateTime.parseDateTime("2023-08-27" + " 00:00:00").getTime();
+//        long endTime = UtilDateTime.parseDateTime("2023-08-31" + " 23:59:59").getTime();
+////        xdService.syncApprove(startTime, endTime, XDConf.TMP_CODE_CC, "出差");
 //        xdService.syncApprove(startTime, endTime, XDConf.TMP_CODE_WC, "外出");
         return McR.success();
     }
 
     @PostMapping("test2")
     McR test2() {
-        Date sTime = UtilDateTime.parseDateTime("2023-07-01" + " 00:00:00");
-        Date eTime = UtilDateTime.parseDateTime("2023-07-24" + " 23:59:59");
+//        Date sTime = UtilDateTime.parseDateTime("2023-08-04" + " 00:00:00");
+//        Date eTime = UtilDateTime.parseDateTime("2023-08-10" + " 23:59:59");
 //        xdService.syncAttendance(0, sTime, eTime);
-        xdService.syncAttendanceForCC(0, sTime, eTime);
+//        xdService.syncAttendanceForCC(0, sTime, eTime);
         return McR.success();
     }
 
     @PostMapping("test5")
     McR test5() {
-        ddClient_attendance.uploadAttendanceRecord(ddClient.getAccessToken(), "01184453430538751536", "纷享销客同步", "纷享销客同步", null, 1689555600000L);
+//        ddClient_attendance.uploadAttendanceRecord(ddClient.getAccessToken(), "01184453430538751536", "纷享销客同步", "纷享销客同步", null, 1689555600000L);
         return McR.success();
     }
 
@@ -143,8 +134,7 @@ public class XDController {
 //
 //            }
 //        });
-
-        return McR.success(ddService.matchDepartment(ddClient.getAccessToken(), "16859286440945113", Arrays.asList(37263540L)));
+//        return McR.success(ddService.matchDepartment(ddClient.getAccessToken(), "16859286440945113", Arrays.asList(37263540L)));
+        return McR.success();
     }
-
 }

+ 118 - 1
mjava-xiding/src/main/java/com/malk/xiding/schedule/XDScheduleTask.java

@@ -1,7 +1,14 @@
 package com.malk.xiding.schedule;
 
+import com.alibaba.fastjson.JSON;
 import com.malk.Util.UtilDateTime;
+import com.malk.Util.UtilMap;
+import com.malk.server.aliwork.YDConf;
+import com.malk.server.aliwork.YDParam;
+import com.malk.service.aliwork.YDClient;
+import com.malk.service.aliwork.YDService;
 import com.malk.xiding.server.XDConf;
+import com.malk.xiding.service.GSClient;
 import com.malk.xiding.service.XDService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -10,7 +17,9 @@ import org.springframework.context.annotation.Configuration;
 import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.scheduling.annotation.Scheduled;
 
+import java.time.LocalDate;
 import java.util.Date;
+import java.util.Map;
 
 /**
  * @EnableScheduling 开启定时任务 [配置参考McScheduleTask]
@@ -45,7 +54,7 @@ public class XDScheduleTask {
     /**
      * [频率为每10分钟查询一次, 同步当天全量时候, 过滤重复考勤, 避免钉钉调用次数过高]
      */
-    @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() {
         log.info("###### [XD]外出同步考勤开始 ######");
         Date now = new Date();
@@ -75,4 +84,112 @@ public class XDScheduleTask {
         }
         log.info("###### [XD]出差同步考勤结束 ######");
     }
+
+    ////////////////////////////// 工时上报 //////////////////////////////
+
+    @Autowired
+    private GSClient gsClient;
+
+    @Autowired
+    private YDService ydService;
+
+    @Autowired
+    private YDClient ydClient;
+
+    /**
+     * 每月1号 9.30 推送全员工时填写提醒
+     */
+    @Scheduled(cron = "0 30 9 1 * ? ")
+    public void Time_Period_4() {
+        try {
+            gsClient.noticeTemplate(false);
+        } catch (Exception e) {
+            log.error(e.getMessage(), e); // 记录错误日志
+        }
+    }
+
+    /**
+     * 每月3号 9.30 推送月度工时确认审批
+     */
+    @Scheduled(cron = "0 30 9 3 * ? ")
+    public void Time_Period_5() {
+        try {
+            gsClient.collectMonthReport();
+        } catch (Exception e) {
+            log.error(e.getMessage(), e); // 记录错误日志
+        }
+        String ymText = UtilDateTime.formatLocal(LocalDate.now().minusMonths(1L), "yyyy-MM");
+        Map condition = UtilMap.map("textField_lnb18vw9", ymText);
+        // 查询上月状态
+        ydService.upsertFormData("FORM-4UA668D1VTFEFFLLCKRCZ9KH8MGT354H81BNLS1", condition, condition, list -> {
+            // 更新确认状态
+            return UtilMap.map("radioField_lnb18vwa", "是");
+        });
+    }
+
+    /**
+     * 每月10~20 9.30 推送月度异常工时审批
+     */
+    @Scheduled(cron = "0 30 9 10-20 * ? ")
+    public void Time_Period_6() {
+        String ymText = UtilDateTime.formatLocal(LocalDate.now().minusMonths(1L), "yyyy-MM");
+        Map condition = UtilMap.map("textField_lnb18vw9", ymText);
+        // 查询上月状态
+        ydService.upsertFormData("FORM-4UA668D1VTFEFFLLCKRCZ9KH8MGT354H81BNLS1", condition, condition, list -> {
+            if (list.size() > 0) {
+                Map form = (Map) list.get(0).get("formData");
+                // 不执行更新: 月度未确认 | 上报已执行
+                if (!"是".equals(form.get("radioField_lnb18vwa")) || "是".equals(form.get("radioField_lnb18vwb"))) {
+                    return null;
+                }
+                // 不执行更新: 月度工时未全部确认
+                long count = ydClient.queryData(YDParam.builder()
+                        .formUuid("FORM-TD966Z81I9ODTCY66GH345S03VW03JJF6EQLL5")
+                        .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_lm5n9tjp", ymText)))
+                        .instanceStatus("RUNNING")
+                        .build(), YDConf.FORM_QUERY.retrieve_search_process).getTotalCount();
+                if (count != 0) {
+                    return null;
+                }
+                boolean isOper = gsClient.exceptionMonthReport();
+                // 薪资有导入记录, 执行更新状态
+                if (isOper) {
+                    return UtilMap.map("radioField_lnb18vwb", "是");
+                }
+            }
+            // 无记录执行新增
+            return condition;
+        });
+    }
+
+    /**
+     * 每月异常上报工时全部处理完成,推送管理员 [每月11号开始, 同时查询有异常上报记录, 且均审批完成]
+     */
+    @Scheduled(cron = "0 30 9 11-31 * ? ")
+    public void Time_Period_7() {
+        String ymText = UtilDateTime.formatLocal(LocalDate.now().minusMonths(1L), "yyyy-MM");
+        Map condition = UtilMap.map("textField_lnb18vw9", ymText);
+        // 查询上月状态
+        ydService.upsertFormData("FORM-4UA668D1VTFEFFLLCKRCZ9KH8MGT354H81BNLS1", condition, condition, list -> {
+            if (list.size() > 0) {
+                Map form = (Map) list.get(0).get("formData");
+                // 不执行更新: 异常未上报 | 上报已执行
+                if (!"是".equals(form.get("radioField_lnb18vwb")) || "是".equals(form.get("radioField_lnb2j7jd"))) {
+                    return null;
+                }
+                long count = ydClient.queryData(YDParam.builder()
+                        .formUuid("FORM-8Y866XB1G4NDRF8RCHWJRB5EQPI13TD3I8ULLT")
+                        .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_lm5n9tjp", ymText)))
+                        .instanceStatus("RUNNING")
+                        .build(), YDConf.FORM_QUERY.retrieve_search_process).getTotalCount();
+                // 异常处理结束, 通知管理员; 更新状态
+                if (count == 0) {
+                    gsClient.noticeTemplate(true);
+                    return UtilMap.map("radioField_lnb2j7jd", "是");
+                }
+            }
+            // 无记录执行新增
+            return condition;
+        });
+    }
 }

+ 28 - 0
mjava-xiding/src/main/java/com/malk/xiding/service/GSClient.java

@@ -0,0 +1,28 @@
+package com.malk.xiding.service;
+
+import java.util.Map;
+
+public interface GSClient {
+
+    /**
+     * 月度工时汇总
+     */
+    void collectMonthReport();
+
+    /**
+     * 月度异常上报
+     */
+    boolean exceptionMonthReport();
+
+    /**
+     * 工时提交校验
+     */
+    void validateManHour(String userId, Map<String, String> details);
+
+    /**
+     * 消息通知
+     *
+     * @param isAdmin 异常提醒管理员: 当月处理完成; 填报提醒人员档案全员: 当月1号提醒
+     */
+    void noticeTemplate(boolean isAdmin);
+}

File diff suppressed because it is too large
+ 215 - 0
mjava-xiding/src/main/java/com/malk/xiding/service/impl/GSImplClient.java


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

@@ -52,4 +52,7 @@ fxiaoke:
   permanentCode: 317DA531616A1569F906D1F9A1C74D15
   corpId: FSCID_2DA12EC0A1DC7EF6FD68E5AA33F25D8A  # 纷享销客 corpId
 
-
+# aliwork
+aliwork:
+  appType: APP_ATQMDF7W332Z2OUFGBIJ
+  systemToken: T99666B1S3NDZU5Y66SQC8CSEOMC2C2AXLOLLK

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

@@ -1,6 +1,6 @@
 # 环境配置
 server:
-  port: 9009
+  port: 9001
 
 # condition
 spel:
@@ -17,6 +17,17 @@ spring:
   jpa:
     database: MYSQL
     database-platform: org.hibernate.dialect.MySQL57Dialect
+  # 数据库版本
+  flyway:
+    enabled: false                      #  需要配置 jpa.hibernate.ddl-auto 为 none. 否则 flyway.enabled 配置会无效, 在没有数库连接情况下程序无法启动
+    encoding: UTF-8
+    locations: classpath:db/migration   # 迁移sql脚本文件存放路径,默认db/migration
+    sql-migration-prefix: V             # 迁移sql脚本文件名称的前缀,默认V
+    sql-migration-separator: __         # 迁移sql脚本文件名称的分隔符,默认2个下划线__
+    sql-migration-suffixes: .sql        # 迁移sql脚本文件名称的后缀
+    validate-on-migrate: true           # 迁移时是否进行校验,默认true
+    baseline-on-migrate: true           # 当迁移发现数据库非空且存在没有元数据的表时,自动执行基准迁移,新建schema_version表
+
 
 # dingtalk
 dingtalk:
@@ -34,3 +45,8 @@ fxiaoke:
   appSecret: 1f516179d4e84ecba24752b0c4af5d02
   permanentCode: 317DA531616A1569F906D1F9A1C74D15
   corpId: FSCID_2DA12EC0A1DC7EF6FD68E5AA33F25D8A  # 纷享销客 corpId
+
+# aliwork
+aliwork:
+  appType: APP_ATQMDF7W332Z2OUFGBIJ
+  systemToken: T99666B1S3NDZU5Y66SQC8CSEOMC2C2AXLOLLK

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

@@ -52,4 +52,7 @@ fxiaoke:
   permanentCode: 317DA531616A1569F906D1F9A1C74D15
   corpId: FSCID_2DA12EC0A1DC7EF6FD68E5AA33F25D8A  # 纷享销客 corpId
 
-
+# aliwork
+aliwork:
+  appType: APP_ATQMDF7W332Z2OUFGBIJ
+  systemToken: T99666B1S3NDZU5Y66SQC8CSEOMC2C2AXLOLLK

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

@@ -1,6 +1,6 @@
 # 环境配置
 server:
-  port: 9009
+  port: 9001
 
 # condition
 spel:
@@ -17,6 +17,17 @@ spring:
   jpa:
     database: MYSQL
     database-platform: org.hibernate.dialect.MySQL57Dialect
+  # 数据库版本
+  flyway:
+    enabled: false                      #  需要配置 jpa.hibernate.ddl-auto 为 none. 否则 flyway.enabled 配置会无效, 在没有数库连接情况下程序无法启动
+    encoding: UTF-8
+    locations: classpath:db/migration   # 迁移sql脚本文件存放路径,默认db/migration
+    sql-migration-prefix: V             # 迁移sql脚本文件名称的前缀,默认V
+    sql-migration-separator: __         # 迁移sql脚本文件名称的分隔符,默认2个下划线__
+    sql-migration-suffixes: .sql        # 迁移sql脚本文件名称的后缀
+    validate-on-migrate: true           # 迁移时是否进行校验,默认true
+    baseline-on-migrate: true           # 当迁移发现数据库非空且存在没有元数据的表时,自动执行基准迁移,新建schema_version表
+
 
 # dingtalk
 dingtalk:
@@ -34,3 +45,8 @@ fxiaoke:
   appSecret: 1f516179d4e84ecba24752b0c4af5d02
   permanentCode: 317DA531616A1569F906D1F9A1C74D15
   corpId: FSCID_2DA12EC0A1DC7EF6FD68E5AA33F25D8A  # 纷享销客 corpId
+
+# aliwork
+aliwork:
+  appType: APP_ATQMDF7W332Z2OUFGBIJ
+  systemToken: T99666B1S3NDZU5Y66SQC8CSEOMC2C2AXLOLLK

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

@@ -1,5 +1,5 @@
 #Generated by Maven
-#Mon Jul 24 18:20:43 CST 2023
+#Thu Oct 05 21:01:53 CST 2023
 version=1.0-SNAPSHOT
 groupId=com.malk
 artifactId=mjava-xiding

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

@@ -7,13 +7,16 @@ com/malk/xiding/repository/entity/XdDdFxkRelationPo$XdDdFxkRelationPoBuilder.cla
 com/malk/xiding/repository/entity/XdDdFxkRelationPo.class
 com/malk/xiding/Boot.class
 com/malk/xiding/repository/dao/XdDdFxkRelationDao.class
+com/malk/xiding/service/impl/GSImplClient.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/controller/GSController.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/service/GSClient.class
 com/malk/xiding/repository/entity/QXdDdFxkRelationPo.class
 com/malk/xiding/service/impl/XDImplService.class

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

@@ -3,6 +3,8 @@
 /Users/malk/server/java-mcli-2/mjava-xiding/src/main/java/com/malk/xiding/repository/entity/XdDdApproveRecordPo.java
 /Users/malk/server/java-mcli-2/mjava-xiding/src/main/java/com/malk/xiding/repository/dao/XdDdFxkRelationDao.java
 /Users/malk/server/java-mcli-2/mjava-xiding/src/main/java/com/malk/xiding/schedule/XDScheduleTask.java
+/Users/malk/server/java-mcli-2/mjava-xiding/src/main/java/com/malk/xiding/service/GSClient.java
+/Users/malk/server/java-mcli-2/mjava-xiding/src/main/java/com/malk/xiding/service/impl/GSImplClient.java
 /Users/malk/server/java-mcli-2/mjava-xiding/src/main/java/com/malk/xiding/service/XDService.java
 /Users/malk/server/java-mcli-2/mjava-xiding/src/main/java/com/malk/xiding/repository/dao/XdDdApproveRecordDao.java
 /Users/malk/server/java-mcli-2/mjava-xiding/src/main/java/com/malk/xiding/server/XDConf.java
@@ -13,4 +15,5 @@
 /Users/malk/server/java-mcli-2/mjava-xiding/target/generated-sources/java/com/malk/xiding/repository/entity/QXdFxkDdAttendancePo.java
 /Users/malk/server/java-mcli-2/mjava-xiding/src/main/java/com/malk/xiding/repository/entity/XdDdFxkRelationPo.java
 /Users/malk/server/java-mcli-2/mjava-xiding/src/main/java/com/malk/xiding/repository/dao/XdDdApproveRecordDao2.java
+/Users/malk/server/java-mcli-2/mjava-xiding/src/main/java/com/malk/xiding/controller/GSController.java
 /Users/malk/server/java-mcli-2/mjava-xiding/src/main/java/com/malk/xiding/Boot.java

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


+ 150 - 155
mjava-xintianlong/src/main/java/com/malk/xintianlong/controller/HSController.java

@@ -3,11 +3,8 @@ package com.malk.xintianlong.controller;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSON;
 import com.malk.Util.UtilMap;
-import com.malk.Util.UtilNumber;
-import com.malk.base.BaseDto;
 import com.malk.server.aliwork.YDConf;
 import com.malk.server.aliwork.YDParam;
-import com.malk.server.aliwork.YDR;
 import com.malk.server.common.McException;
 import com.malk.server.common.McR;
 import com.malk.server.dingtalk.DDConf;
@@ -17,24 +14,22 @@ import com.malk.service.aliwork.YDClient;
 import com.malk.service.dingtalk.DDClient;
 import com.malk.service.dingtalk.DDClient_Workflow;
 import com.malk.xintianlong.repository.dao.primary.HSApproveRecordDao;
-import com.malk.xintianlong.repository.dao.primary.HSViewDao;
 import com.malk.xintianlong.repository.entity.primary.HSApproveRecordPo;
 import com.malk.xintianlong.server.HSConf;
 import com.malk.xintianlong.service.HSService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.PageRequest;
-import org.springframework.data.domain.Pageable;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletRequest;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
 
 /**
  * 错误抛出与拦截详见CatchException
@@ -68,7 +63,7 @@ public class HSController {
         // 组件数据格式化
         data.put("corpTypeName", HSConf.SUB_CORP_DD.get(data.get("corpType")));
         Map ruleForm = UtilMap.map("corpTypeName, orderCode, proposerDate, purchaseType, goods", "公司主体, 请购单号, 请购日期, 采购类型, 采购明细");
-        Map ruleDetail = UtilMap.map("name, size, num, remark", "物品名称, 规格, 数量, 备注");
+        Map ruleDetail = UtilMap.map("name, size, num, remark, price", "物品名称, 规格, 数量, 备注, 单价");
 
         // 推送钉钉审批
         List<Map> formValues = DDFormComponentDto.formatComponentValues(data, ruleForm, ruleDetail);
@@ -275,151 +270,151 @@ public class HSController {
     }
 
 
-    @Qualifier("primaryHJDao")
-    @Autowired
-    private HSViewDao hsOrderPlanDao_HJ;
-
-    @Qualifier("slaveJTDao")
-    @Autowired
-    private com.malk.xintianlong.repository.dao.slave.HSViewDao hsOrderPlanDao_JT;
-
-    /**
-     * 查询生产计划
-     */
-    @PostMapping("view/queryOrderPlan")
-    McR queryOrderPlan(@RequestBody Map data) {
-
-        log.info("查询生产计划, {}", data);
-
-        String sOrderNo = UtilMap.getString(data, "sOrderNo");
-        Pageable pageable = PageRequest.of(UtilMap.getInt(data, "page") - 1, UtilMap.getInt(data, "size"));
-
-        Page page;
-        double total;
-        if (UtilMap.isNotBlankString(data, "startTime") && UtilMap.isNotBlankString(data, "endTime")) {
-            Date sTime = new Date(UtilMap.getLong(data, "startTime"));
-            Date eTime = new Date(UtilMap.getLong(data, "endTime"));
-            page = hsOrderPlanDao_HJ.queryOrderPlan(sTime, eTime, sOrderNo, pageable);
-            total = hsOrderPlanDao_HJ.queryOrderPlan_sum(sTime, eTime, sOrderNo);
-        } else if (UtilMap.isNotBlankString(data, "startTime")) {
-            Date sTime = new Date(UtilMap.getLong(data, "startTime"));
-            page = hsOrderPlanDao_HJ.queryOrderPlan_start(sTime, sOrderNo, pageable);
-            total = hsOrderPlanDao_HJ.queryOrderPlan_start_sum(sTime, sOrderNo);
-        } else if (UtilMap.isNotBlankString(data, "endTime")) {
-            Date eTime = new Date(UtilMap.getLong(data, "endTime"));
-            page = hsOrderPlanDao_HJ.queryOrderPlan_end(eTime, sOrderNo, pageable);
-            total = hsOrderPlanDao_HJ.queryOrderPlan_end_sum(eTime, sOrderNo);
-        } else {
-            page = hsOrderPlanDao_HJ.queryOrderPlan(sOrderNo, pageable);
-            total = hsOrderPlanDao_HJ.queryOrderPlan_sum(sOrderNo);
-        }
-        Map result = YDR.formatPage(page);
-        result.put("sum_total", UtilNumber.formatPrecision(total)); // 投入数量合计
-        return McR.success(BaseDto.jsonFormatDateTime(result));
-    }
-
-    /**
-     * 查询成品库存
-     */
-    @PostMapping("view/queryStoreWarehouse")
-    McR queryStoreWarehouse(@RequestBody Map data) {
-
-        log.info("查询成品库存, {}", data);
-        String sStoreInNo = UtilMap.getString(data, "sStoreInNo");
-        Pageable pageable = PageRequest.of(UtilMap.getInt(data, "page") - 1, UtilMap.getInt(data, "size"));
-
-        Page page;
-        double total;
-        if (UtilMap.isNotBlankString(data, "startTime") && UtilMap.isNotBlankString(data, "endTime")) {
-            Date sTime = new Date(UtilMap.getLong(data, "startTime"));
-            Date eTime = new Date(UtilMap.getLong(data, "endTime"));
-            page = hsOrderPlanDao_HJ.queryStoreWarehouse(sTime, eTime, sStoreInNo, pageable);
-            total = hsOrderPlanDao_HJ.queryStoreWarehouse(sTime, eTime, sStoreInNo);
-        } else if (UtilMap.isNotBlankString(data, "startTime")) {
-            Date sTime = new Date(UtilMap.getLong(data, "startTime"));
-            page = hsOrderPlanDao_HJ.queryStoreWarehouse_start(sTime, sStoreInNo, pageable);
-            total = hsOrderPlanDao_HJ.queryStoreWarehouse_start(sTime, sStoreInNo);
-        } else if (UtilMap.isNotBlankString(data, "endTime")) {
-            Date eTime = new Date(UtilMap.getLong(data, "endTime"));
-            page = hsOrderPlanDao_HJ.queryStoreWarehouse_end(eTime, sStoreInNo, pageable);
-            total = hsOrderPlanDao_HJ.queryStoreWarehouse_end(eTime, sStoreInNo);
-        } else {
-            page = hsOrderPlanDao_HJ.queryStoreWarehouse(sStoreInNo, pageable);
-            total = hsOrderPlanDao_HJ.queryStoreWarehouse(sStoreInNo);
-        }
-        Map result = YDR.formatPage(page);
-        result.put("sum_total", UtilNumber.formatPrecision(total * 100)); // 入库数量合计
-        return McR.success(BaseDto.jsonFormatDateTime(result));
-    }
-
-    /**
-     * 查询生产计划2
-     */
-    @PostMapping("view/queryOrderPlan2")
-    McR queryOrderPlan2(@RequestBody Map data) {
-
-        log.info("查询生产计划2, {}", data);
-
-        String sOrderNo = UtilMap.getString(data, "sOrderNo");
-        Pageable pageable = PageRequest.of(UtilMap.getInt(data, "page") - 1, UtilMap.getInt(data, "size"));
-
-        Page page;
-        double total;
-        if (UtilMap.isNotBlankString(data, "startTime") && UtilMap.isNotBlankString(data, "endTime")) {
-            Date sTime = new Date(UtilMap.getLong(data, "startTime"));
-            Date eTime = new Date(UtilMap.getLong(data, "endTime"));
-            page = hsOrderPlanDao_JT.queryOrderPlan(sTime, eTime, sOrderNo, pageable);
-            total = hsOrderPlanDao_JT.queryOrderPlan_sum(sTime, eTime, sOrderNo);
-        } else if (UtilMap.isNotBlankString(data, "startTime")) {
-            Date sTime = new Date(UtilMap.getLong(data, "startTime"));
-            page = hsOrderPlanDao_JT.queryOrderPlan_start(sTime, sOrderNo, pageable);
-            total = hsOrderPlanDao_JT.queryOrderPlan_start_sum(sTime, sOrderNo);
-        } else if (UtilMap.isNotBlankString(data, "endTime")) {
-            Date eTime = new Date(UtilMap.getLong(data, "endTime"));
-            page = hsOrderPlanDao_JT.queryOrderPlan_end(eTime, sOrderNo, pageable);
-            total = hsOrderPlanDao_JT.queryOrderPlan_end_sum(eTime, sOrderNo);
-        } else {
-            page = hsOrderPlanDao_JT.queryOrderPlan(sOrderNo, pageable);
-            total = hsOrderPlanDao_JT.queryOrderPlan_sum(sOrderNo);
-        }
-        Map result = YDR.formatPage(page);
-        result.put("sum_total", UtilNumber.formatPrecision(total)); // 投入数量合计
-        return McR.success(BaseDto.jsonFormatDateTime(result));
-    }
-
-    /**
-     * 查询成品库存
-     */
-    @PostMapping("view/queryStoreWarehouse2")
-    McR queryStoreWarehouse2(@RequestBody Map data) {
-
-        log.info("查询成品库存2, {}", data);
-        String sStoreInNo = UtilMap.getString(data, "sStoreInNo");
-        Pageable pageable = PageRequest.of(UtilMap.getInt(data, "page") - 1, UtilMap.getInt(data, "size"));
-
-        Page page;
-        double total;
-        if (UtilMap.isNotBlankString(data, "startTime") && UtilMap.isNotBlankString(data, "endTime")) {
-            Date sTime = new Date(UtilMap.getLong(data, "startTime"));
-            Date eTime = new Date(UtilMap.getLong(data, "endTime"));
-            page = hsOrderPlanDao_JT.queryStoreWarehouse(sTime, eTime, sStoreInNo, pageable);
-            total = hsOrderPlanDao_JT.queryStoreWarehouse(sTime, eTime, sStoreInNo);
-        } else if (UtilMap.isNotBlankString(data, "startTime")) {
-            Date sTime = new Date(UtilMap.getLong(data, "startTime"));
-            page = hsOrderPlanDao_JT.queryStoreWarehouse_start(sTime, sStoreInNo, pageable);
-            total = hsOrderPlanDao_JT.queryStoreWarehouse_start(sTime, sStoreInNo);
-        } else if (UtilMap.isNotBlankString(data, "endTime")) {
-            Date eTime = new Date(UtilMap.getLong(data, "endTime"));
-            page = hsOrderPlanDao_JT.queryStoreWarehouse_end(eTime, sStoreInNo, pageable);
-            total = hsOrderPlanDao_JT.queryStoreWarehouse_end(eTime, sStoreInNo);
-        } else {
-            page = hsOrderPlanDao_JT.queryStoreWarehouse(sStoreInNo, pageable);
-            total = hsOrderPlanDao_JT.queryStoreWarehouse(sStoreInNo);
-        }
-        Map result = YDR.formatPage(page);
-        result.put("sum_total", UtilNumber.formatPrecision(total * 100)); // 入库数量合计
-        return McR.success(BaseDto.jsonFormatDateTime(result));
-    }
+//    @Qualifier("primaryHJDao")
+//    @Autowired
+//    private HSViewDao hsOrderPlanDao_HJ;
+//
+//    @Qualifier("slaveJTDao")
+//    @Autowired
+//    private com.malk.xintianlong.repository.dao.slave.HSViewDao hsOrderPlanDao_JT;
+//
+//    /**
+//     * 查询生产计划
+//     */
+//    @PostMapping("view/queryOrderPlan")
+//    McR queryOrderPlan(@RequestBody Map data) {
+//
+//        log.info("查询生产计划, {}", data);
+//
+//        String sOrderNo = UtilMap.getString(data, "sOrderNo");
+//        Pageable pageable = PageRequest.of(UtilMap.getInt(data, "page") - 1, UtilMap.getInt(data, "size"));
+//
+//        Page page;
+//        double total;
+//        if (UtilMap.isNotBlankString(data, "startTime") && UtilMap.isNotBlankString(data, "endTime")) {
+//            Date sTime = new Date(UtilMap.getLong(data, "startTime"));
+//            Date eTime = new Date(UtilMap.getLong(data, "endTime"));
+//            page = hsOrderPlanDao_HJ.queryOrderPlan(sTime, eTime, sOrderNo, pageable);
+//            total = hsOrderPlanDao_HJ.queryOrderPlan_sum(sTime, eTime, sOrderNo);
+//        } else if (UtilMap.isNotBlankString(data, "startTime")) {
+//            Date sTime = new Date(UtilMap.getLong(data, "startTime"));
+//            page = hsOrderPlanDao_HJ.queryOrderPlan_start(sTime, sOrderNo, pageable);
+//            total = hsOrderPlanDao_HJ.queryOrderPlan_start_sum(sTime, sOrderNo);
+//        } else if (UtilMap.isNotBlankString(data, "endTime")) {
+//            Date eTime = new Date(UtilMap.getLong(data, "endTime"));
+//            page = hsOrderPlanDao_HJ.queryOrderPlan_end(eTime, sOrderNo, pageable);
+//            total = hsOrderPlanDao_HJ.queryOrderPlan_end_sum(eTime, sOrderNo);
+//        } else {
+//            page = hsOrderPlanDao_HJ.queryOrderPlan(sOrderNo, pageable);
+//            total = hsOrderPlanDao_HJ.queryOrderPlan_sum(sOrderNo);
+//        }
+//        Map result = YDR.formatPage(page);
+//        result.put("sum_total", UtilNumber.formatPrecision(total)); // 投入数量合计
+//        return McR.success(BaseDto.jsonFormatDateTime(result));
+//    }
+//
+//    /**
+//     * 查询成品库存
+//     */
+//    @PostMapping("view/queryStoreWarehouse")
+//    McR queryStoreWarehouse(@RequestBody Map data) {
+//
+//        log.info("查询成品库存, {}", data);
+//        String sStoreInNo = UtilMap.getString(data, "sStoreInNo");
+//        Pageable pageable = PageRequest.of(UtilMap.getInt(data, "page") - 1, UtilMap.getInt(data, "size"));
+//
+//        Page page;
+//        double total;
+//        if (UtilMap.isNotBlankString(data, "startTime") && UtilMap.isNotBlankString(data, "endTime")) {
+//            Date sTime = new Date(UtilMap.getLong(data, "startTime"));
+//            Date eTime = new Date(UtilMap.getLong(data, "endTime"));
+//            page = hsOrderPlanDao_HJ.queryStoreWarehouse(sTime, eTime, sStoreInNo, pageable);
+//            total = hsOrderPlanDao_HJ.queryStoreWarehouse(sTime, eTime, sStoreInNo);
+//        } else if (UtilMap.isNotBlankString(data, "startTime")) {
+//            Date sTime = new Date(UtilMap.getLong(data, "startTime"));
+//            page = hsOrderPlanDao_HJ.queryStoreWarehouse_start(sTime, sStoreInNo, pageable);
+//            total = hsOrderPlanDao_HJ.queryStoreWarehouse_start(sTime, sStoreInNo);
+//        } else if (UtilMap.isNotBlankString(data, "endTime")) {
+//            Date eTime = new Date(UtilMap.getLong(data, "endTime"));
+//            page = hsOrderPlanDao_HJ.queryStoreWarehouse_end(eTime, sStoreInNo, pageable);
+//            total = hsOrderPlanDao_HJ.queryStoreWarehouse_end(eTime, sStoreInNo);
+//        } else {
+//            page = hsOrderPlanDao_HJ.queryStoreWarehouse(sStoreInNo, pageable);
+//            total = hsOrderPlanDao_HJ.queryStoreWarehouse(sStoreInNo);
+//        }
+//        Map result = YDR.formatPage(page);
+//        result.put("sum_total", UtilNumber.formatPrecision(total * 100)); // 入库数量合计
+//        return McR.success(BaseDto.jsonFormatDateTime(result));
+//    }
+//
+//    /**
+//     * 查询生产计划2
+//     */
+//    @PostMapping("view/queryOrderPlan2")
+//    McR queryOrderPlan2(@RequestBody Map data) {
+//
+//        log.info("查询生产计划2, {}", data);
+//
+//        String sOrderNo = UtilMap.getString(data, "sOrderNo");
+//        Pageable pageable = PageRequest.of(UtilMap.getInt(data, "page") - 1, UtilMap.getInt(data, "size"));
+//
+//        Page page;
+//        double total;
+//        if (UtilMap.isNotBlankString(data, "startTime") && UtilMap.isNotBlankString(data, "endTime")) {
+//            Date sTime = new Date(UtilMap.getLong(data, "startTime"));
+//            Date eTime = new Date(UtilMap.getLong(data, "endTime"));
+//            page = hsOrderPlanDao_JT.queryOrderPlan(sTime, eTime, sOrderNo, pageable);
+//            total = hsOrderPlanDao_JT.queryOrderPlan_sum(sTime, eTime, sOrderNo);
+//        } else if (UtilMap.isNotBlankString(data, "startTime")) {
+//            Date sTime = new Date(UtilMap.getLong(data, "startTime"));
+//            page = hsOrderPlanDao_JT.queryOrderPlan_start(sTime, sOrderNo, pageable);
+//            total = hsOrderPlanDao_JT.queryOrderPlan_start_sum(sTime, sOrderNo);
+//        } else if (UtilMap.isNotBlankString(data, "endTime")) {
+//            Date eTime = new Date(UtilMap.getLong(data, "endTime"));
+//            page = hsOrderPlanDao_JT.queryOrderPlan_end(eTime, sOrderNo, pageable);
+//            total = hsOrderPlanDao_JT.queryOrderPlan_end_sum(eTime, sOrderNo);
+//        } else {
+//            page = hsOrderPlanDao_JT.queryOrderPlan(sOrderNo, pageable);
+//            total = hsOrderPlanDao_JT.queryOrderPlan_sum(sOrderNo);
+//        }
+//        Map result = YDR.formatPage(page);
+//        result.put("sum_total", UtilNumber.formatPrecision(total)); // 投入数量合计
+//        return McR.success(BaseDto.jsonFormatDateTime(result));
+//    }
+//
+//    /**
+//     * 查询成品库存
+//     */
+//    @PostMapping("view/queryStoreWarehouse2")
+//    McR queryStoreWarehouse2(@RequestBody Map data) {
+//
+//        log.info("查询成品库存2, {}", data);
+//        String sStoreInNo = UtilMap.getString(data, "sStoreInNo");
+//        Pageable pageable = PageRequest.of(UtilMap.getInt(data, "page") - 1, UtilMap.getInt(data, "size"));
+//
+//        Page page;
+//        double total;
+//        if (UtilMap.isNotBlankString(data, "startTime") && UtilMap.isNotBlankString(data, "endTime")) {
+//            Date sTime = new Date(UtilMap.getLong(data, "startTime"));
+//            Date eTime = new Date(UtilMap.getLong(data, "endTime"));
+//            page = hsOrderPlanDao_JT.queryStoreWarehouse(sTime, eTime, sStoreInNo, pageable);
+//            total = hsOrderPlanDao_JT.queryStoreWarehouse(sTime, eTime, sStoreInNo);
+//        } else if (UtilMap.isNotBlankString(data, "startTime")) {
+//            Date sTime = new Date(UtilMap.getLong(data, "startTime"));
+//            page = hsOrderPlanDao_JT.queryStoreWarehouse_start(sTime, sStoreInNo, pageable);
+//            total = hsOrderPlanDao_JT.queryStoreWarehouse_start(sTime, sStoreInNo);
+//        } else if (UtilMap.isNotBlankString(data, "endTime")) {
+//            Date eTime = new Date(UtilMap.getLong(data, "endTime"));
+//            page = hsOrderPlanDao_JT.queryStoreWarehouse_end(eTime, sStoreInNo, pageable);
+//            total = hsOrderPlanDao_JT.queryStoreWarehouse_end(eTime, sStoreInNo);
+//        } else {
+//            page = hsOrderPlanDao_JT.queryStoreWarehouse(sStoreInNo, pageable);
+//            total = hsOrderPlanDao_JT.queryStoreWarehouse(sStoreInNo);
+//        }
+//        Map result = YDR.formatPage(page);
+//        result.put("sum_total", UtilNumber.formatPrecision(total * 100)); // 入库数量合计
+//        return McR.success(BaseDto.jsonFormatDateTime(result));
+//    }
 
 
     @PostMapping("test")

+ 79 - 79
mjava-xintianlong/src/main/java/com/malk/xintianlong/repository/dao/primary/HSViewDao.java

@@ -1,79 +1,79 @@
-package com.malk.xintianlong.repository.dao.primary;
-
-import com.malk.base.JpaMap;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
-import org.springframework.data.jpa.repository.Query;
-import org.springframework.data.repository.CrudRepository;
-import org.springframework.stereotype.Repository;
-
-import javax.transaction.Transactional;
-import java.util.Date;
-import java.util.Map;
-
-/**
- * 视图表查询 [通过Map实现, 无需定义实体, 主键设置Long即可]
- */
-@Repository("primaryHJDao")
-@Transactional
-public interface HSViewDao extends CrudRepository<JpaMap, Long> {
-    /**
-     * 查询生产计划
-     */
-    @Query(value = "select * from vwpbCommonDataOrderPlan where dPlanDate >= ?1 and dPlanDate <= ?2 and sOrderNo like LTRIM('%' + ?3 + '%') order by dPlanDate desc", nativeQuery = true)
-    Page<Map> queryOrderPlan(Date start, Date end, String sOrderNo, Pageable pageable);
-
-    @Query(value = "select * from vwpbCommonDataOrderPlan where dPlanDate >= ?1 and sOrderNo like LTRIM('%' + ?2 + '%') order by dPlanDate desc", nativeQuery = true)
-    Page<Map> queryOrderPlan_start(Date end, String sOrderNo, Pageable pageable);
-
-    @Query(value = "select * from vwpbCommonDataOrderPlan where dPlanDate <= ?1 and sOrderNo like LTRIM('%' + ?2 + '%') order by dPlanDate desc", nativeQuery = true)
-    Page<Map> queryOrderPlan_end(Date start, String sOrderNo, Pageable pageable);
-
-    @Query(value = "select * from vwpbCommonDataOrderPlan where sOrderNo like LTRIM('%' + ?1 + '%') order by dPlanDate desc", nativeQuery = true)
-    Page<Map> queryOrderPlan(String sOrderNo, Pageable pageable);
-
-    /**
-     * 查询生产计划_数量
-     */
-    @Query(value = "select sum(trnQty) from vwpbCommonDataOrderPlan where dPlanDate >= ?1 and dPlanDate <= ?2 and sOrderNo like LTRIM('%' + ?3 + '%')", nativeQuery = true)
-    double queryOrderPlan_sum(Date start, Date end, String sOrderNo);
-
-    @Query(value = "select sum(trnQty) from vwpbCommonDataOrderPlan where dPlanDate >= ?1 and sOrderNo like LTRIM('%' + ?2 + '%')", nativeQuery = true)
-    double queryOrderPlan_start_sum(Date end, String sOrderNo);
-
-    @Query(value = "select sum(trnQty) from vwpbCommonDataOrderPlan where dPlanDate <= ?1 and sOrderNo like LTRIM('%' + ?2 + '%')", nativeQuery = true)
-    double queryOrderPlan_end_sum(Date start, String sOrderNo);
-
-    @Query(value = "select sum(trnQty) from vwpbCommonDataOrderPlan where sOrderNo like LTRIM('%' + ?1 + '%')", nativeQuery = true)
-    double queryOrderPlan_sum(String sOrderNo);
-
-    /**
-     * 查询成品库存
-     */
-    @Query(value = "select * from vwmmSTInStoreQuery where tStoreInTime >= ?1 and tStoreInTime <= ?2 and sStoreInNo like LTRIM('%' + ?3 + '%') order by tStoreInTime desc", nativeQuery = true)
-    Page<Map> queryStoreWarehouse(Date start, Date end, String sOrderNo, Pageable pageable);
-
-    @Query(value = "select * from vwmmSTInStoreQuery where tStoreInTime >= ?1 and sStoreInNo like LTRIM('%' + ?2 + '%') order by tStoreInTime desc", nativeQuery = true)
-    Page<Map> queryStoreWarehouse_start(Date end, String sOrderNo, Pageable pageable);
-
-    @Query(value = "select * from vwmmSTInStoreQuery where tStoreInTime <= ?1 and sStoreInNo like LTRIM('%' + ?2 + '%') order by tStoreInTime desc", nativeQuery = true)
-    Page<Map> queryStoreWarehouse_end(Date start, String sOrderNo, Pageable pageable);
-
-    @Query(value = "select * from vwmmSTInStoreQuery where sStoreInNo like LTRIM('%' + ?1 + '%') order by tStoreInTime desc", nativeQuery = true)
-    Page<Map> queryStoreWarehouse(String sStoreInNo, Pageable pageable);
-
-    /**
-     * 查询成品库存_数量
-     */
-    @Query(value = "select sum(nInQty) from vwmmSTInStoreQuery where tStoreInTime >= ?1 and tStoreInTime <= ?2 and sStoreInNo like LTRIM('%' + ?3 + '%')", nativeQuery = true)
-    double queryStoreWarehouse(Date start, Date end, String sOrderNo);
-
-    @Query(value = "select sum(nInQty)  from vwmmSTInStoreQuery where tStoreInTime >= ?1 and sStoreInNo like LTRIM('%' + ?2 + '%')", nativeQuery = true)
-    double queryStoreWarehouse_start(Date end, String sOrderNo);
-
-    @Query(value = "select sum(nInQty)  from vwmmSTInStoreQuery where tStoreInTime <= ?1 and sStoreInNo like LTRIM('%' + ?2 + '%')", nativeQuery = true)
-    double queryStoreWarehouse_end(Date start, String sOrderNo);
-
-    @Query(value = "select sum(nInQty)  from vwmmSTInStoreQuery where sStoreInNo like LTRIM('%' + ?1 + '%')", nativeQuery = true)
-    double queryStoreWarehouse(String sStoreInNo);
-}
+//package com.malk.xintianlong.repository.dao.primary;
+//
+//import com.malk.base.JpaMap;
+//import org.springframework.data.domain.Page;
+//import org.springframework.data.domain.Pageable;
+//import org.springframework.data.jpa.repository.Query;
+//import org.springframework.data.repository.CrudRepository;
+//import org.springframework.stereotype.Repository;
+//
+//import javax.transaction.Transactional;
+//import java.util.Date;
+//import java.util.Map;
+//
+///**
+// * 视图表查询 [通过Map实现, 无需定义实体, 主键设置Long即可]
+// */
+//@Repository("primaryHJDao")
+//@Transactional
+//public interface HSViewDao extends CrudRepository<JpaMap, Long> {
+//    /**
+//     * 查询生产计划
+//     */
+//    @Query(value = "select * from vwpbCommonDataOrderPlan where dPlanDate >= ?1 and dPlanDate <= ?2 and sOrderNo like LTRIM('%' + ?3 + '%') order by dPlanDate desc", nativeQuery = true)
+//    Page<Map> queryOrderPlan(Date start, Date end, String sOrderNo, Pageable pageable);
+//
+//    @Query(value = "select * from vwpbCommonDataOrderPlan where dPlanDate >= ?1 and sOrderNo like LTRIM('%' + ?2 + '%') order by dPlanDate desc", nativeQuery = true)
+//    Page<Map> queryOrderPlan_start(Date end, String sOrderNo, Pageable pageable);
+//
+//    @Query(value = "select * from vwpbCommonDataOrderPlan where dPlanDate <= ?1 and sOrderNo like LTRIM('%' + ?2 + '%') order by dPlanDate desc", nativeQuery = true)
+//    Page<Map> queryOrderPlan_end(Date start, String sOrderNo, Pageable pageable);
+//
+//    @Query(value = "select * from vwpbCommonDataOrderPlan where sOrderNo like LTRIM('%' + ?1 + '%') order by dPlanDate desc", nativeQuery = true)
+//    Page<Map> queryOrderPlan(String sOrderNo, Pageable pageable);
+//
+//    /**
+//     * 查询生产计划_数量
+//     */
+//    @Query(value = "select sum(trnQty) from vwpbCommonDataOrderPlan where dPlanDate >= ?1 and dPlanDate <= ?2 and sOrderNo like LTRIM('%' + ?3 + '%')", nativeQuery = true)
+//    double queryOrderPlan_sum(Date start, Date end, String sOrderNo);
+//
+//    @Query(value = "select sum(trnQty) from vwpbCommonDataOrderPlan where dPlanDate >= ?1 and sOrderNo like LTRIM('%' + ?2 + '%')", nativeQuery = true)
+//    double queryOrderPlan_start_sum(Date end, String sOrderNo);
+//
+//    @Query(value = "select sum(trnQty) from vwpbCommonDataOrderPlan where dPlanDate <= ?1 and sOrderNo like LTRIM('%' + ?2 + '%')", nativeQuery = true)
+//    double queryOrderPlan_end_sum(Date start, String sOrderNo);
+//
+//    @Query(value = "select sum(trnQty) from vwpbCommonDataOrderPlan where sOrderNo like LTRIM('%' + ?1 + '%')", nativeQuery = true)
+//    double queryOrderPlan_sum(String sOrderNo);
+//
+//    /**
+//     * 查询成品库存
+//     */
+//    @Query(value = "select * from vwmmSTInStoreQuery where tStoreInTime >= ?1 and tStoreInTime <= ?2 and sStoreInNo like LTRIM('%' + ?3 + '%') order by tStoreInTime desc", nativeQuery = true)
+//    Page<Map> queryStoreWarehouse(Date start, Date end, String sOrderNo, Pageable pageable);
+//
+//    @Query(value = "select * from vwmmSTInStoreQuery where tStoreInTime >= ?1 and sStoreInNo like LTRIM('%' + ?2 + '%') order by tStoreInTime desc", nativeQuery = true)
+//    Page<Map> queryStoreWarehouse_start(Date end, String sOrderNo, Pageable pageable);
+//
+//    @Query(value = "select * from vwmmSTInStoreQuery where tStoreInTime <= ?1 and sStoreInNo like LTRIM('%' + ?2 + '%') order by tStoreInTime desc", nativeQuery = true)
+//    Page<Map> queryStoreWarehouse_end(Date start, String sOrderNo, Pageable pageable);
+//
+//    @Query(value = "select * from vwmmSTInStoreQuery where sStoreInNo like LTRIM('%' + ?1 + '%') order by tStoreInTime desc", nativeQuery = true)
+//    Page<Map> queryStoreWarehouse(String sStoreInNo, Pageable pageable);
+//
+//    /**
+//     * 查询成品库存_数量
+//     */
+//    @Query(value = "select sum(nInQty) from vwmmSTInStoreQuery where tStoreInTime >= ?1 and tStoreInTime <= ?2 and sStoreInNo like LTRIM('%' + ?3 + '%')", nativeQuery = true)
+//    double queryStoreWarehouse(Date start, Date end, String sOrderNo);
+//
+//    @Query(value = "select sum(nInQty)  from vwmmSTInStoreQuery where tStoreInTime >= ?1 and sStoreInNo like LTRIM('%' + ?2 + '%')", nativeQuery = true)
+//    double queryStoreWarehouse_start(Date end, String sOrderNo);
+//
+//    @Query(value = "select sum(nInQty)  from vwmmSTInStoreQuery where tStoreInTime <= ?1 and sStoreInNo like LTRIM('%' + ?2 + '%')", nativeQuery = true)
+//    double queryStoreWarehouse_end(Date start, String sOrderNo);
+//
+//    @Query(value = "select sum(nInQty)  from vwmmSTInStoreQuery where sStoreInNo like LTRIM('%' + ?1 + '%')", nativeQuery = true)
+//    double queryStoreWarehouse(String sStoreInNo);
+//}

+ 80 - 80
mjava-xintianlong/src/main/java/com/malk/xintianlong/repository/dao/slave/HSViewDao.java

@@ -1,80 +1,80 @@
-package com.malk.xintianlong.repository.dao.slave;
-
-import com.malk.repository.entity.slave.JpaMapSlave;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
-import org.springframework.data.jpa.repository.Query;
-import org.springframework.data.repository.CrudRepository;
-import org.springframework.stereotype.Repository;
-
-import javax.transaction.Transactional;
-import java.util.Date;
-import java.util.Map;
-
-/**
- * 视图表查询 [通过Map实现, 无需定义实体, 主键设置Long即可]
- */
-@Repository("slaveJTDao")
-@Transactional
-public interface HSViewDao extends CrudRepository<JpaMapSlave, Long> {
-
-    /**
-     * 查询生产计划
-     */
-    @Query(value = "select * from vwpbCommonDataOrderPlan where dPlanDate >= ?1 and dPlanDate <= ?2 and sOrderNo like LTRIM('%' + ?3 + '%') order by dPlanDate desc", nativeQuery = true)
-    Page<Map> queryOrderPlan(Date start, Date end, String sOrderNo, Pageable pageable);
-
-    @Query(value = "select * from vwpbCommonDataOrderPlan where dPlanDate >= ?1 and sOrderNo like LTRIM('%' + ?2 + '%') order by dPlanDate desc", nativeQuery = true)
-    Page<Map> queryOrderPlan_start(Date end, String sOrderNo, Pageable pageable);
-
-    @Query(value = "select * from vwpbCommonDataOrderPlan where dPlanDate <= ?1 and sOrderNo like LTRIM('%' + ?2 + '%') order by dPlanDate desc", nativeQuery = true)
-    Page<Map> queryOrderPlan_end(Date start, String sOrderNo, Pageable pageable);
-
-    @Query(value = "select * from vwpbCommonDataOrderPlan where sOrderNo like LTRIM('%' + ?1 + '%') order by dPlanDate desc", nativeQuery = true)
-    Page<Map> queryOrderPlan(String sOrderNo, Pageable pageable);
-
-    /**
-     * 查询生产计划_数量
-     */
-    @Query(value = "select sum(trnQty) from vwpbCommonDataOrderPlan where dPlanDate >= ?1 and dPlanDate <= ?2 and sOrderNo like LTRIM('%' + ?3 + '%')", nativeQuery = true)
-    double queryOrderPlan_sum(Date start, Date end, String sOrderNo);
-
-    @Query(value = "select sum(trnQty) from vwpbCommonDataOrderPlan where dPlanDate >= ?1 and sOrderNo like LTRIM('%' + ?2 + '%')", nativeQuery = true)
-    double queryOrderPlan_start_sum(Date end, String sOrderNo);
-
-    @Query(value = "select sum(trnQty) from vwpbCommonDataOrderPlan where dPlanDate <= ?1 and sOrderNo like LTRIM('%' + ?2 + '%')", nativeQuery = true)
-    double queryOrderPlan_end_sum(Date start, String sOrderNo);
-
-    @Query(value = "select sum(trnQty) from vwpbCommonDataOrderPlan where sOrderNo like LTRIM('%' + ?1 + '%')", nativeQuery = true)
-    double queryOrderPlan_sum(String sOrderNo);
-
-    /**
-     * 查询成品库存
-     */
-    @Query(value = "select * from vwmmSTInStoreQuery where tStoreInTime >= ?1 and tStoreInTime <= ?2 and sStoreInNo like LTRIM('%' + ?3 + '%') order by tStoreInTime desc", nativeQuery = true)
-    Page<Map> queryStoreWarehouse(Date start, Date end, String sOrderNo, Pageable pageable);
-
-    @Query(value = "select * from vwmmSTInStoreQuery where tStoreInTime >= ?1 and sStoreInNo like LTRIM('%' + ?2 + '%') order by tStoreInTime desc", nativeQuery = true)
-    Page<Map> queryStoreWarehouse_start(Date end, String sOrderNo, Pageable pageable);
-
-    @Query(value = "select * from vwmmSTInStoreQuery where tStoreInTime <= ?1 and sStoreInNo like LTRIM('%' + ?2 + '%') order by tStoreInTime desc", nativeQuery = true)
-    Page<Map> queryStoreWarehouse_end(Date start, String sOrderNo, Pageable pageable);
-
-    @Query(value = "select * from vwmmSTInStoreQuery where sStoreInNo like LTRIM('%' + ?1 + '%') order by tStoreInTime desc", nativeQuery = true)
-    Page<Map> queryStoreWarehouse(String sStoreInNo, Pageable pageable);
-
-    /**
-     * 查询成品库存_数量
-     */
-    @Query(value = "select sum(nInQty) from vwmmSTInStoreQuery where tStoreInTime >= ?1 and tStoreInTime <= ?2 and sStoreInNo like LTRIM('%' + ?3 + '%')", nativeQuery = true)
-    double queryStoreWarehouse(Date start, Date end, String sOrderNo);
-
-    @Query(value = "select sum(nInQty)  from vwmmSTInStoreQuery where tStoreInTime >= ?1 and sStoreInNo like LTRIM('%' + ?2 + '%')", nativeQuery = true)
-    double queryStoreWarehouse_start(Date end, String sOrderNo);
-
-    @Query(value = "select sum(nInQty)  from vwmmSTInStoreQuery where tStoreInTime <= ?1 and sStoreInNo like LTRIM('%' + ?2 + '%')", nativeQuery = true)
-    double queryStoreWarehouse_end(Date start, String sOrderNo);
-
-    @Query(value = "select sum(nInQty)  from vwmmSTInStoreQuery where sStoreInNo like LTRIM('%' + ?1 + '%')", nativeQuery = true)
-    double queryStoreWarehouse(String sStoreInNo);
-}
+//package com.malk.xintianlong.repository.dao.slave;
+//
+//import com.malk.repository.entity.slave.JpaMapSlave;
+//import org.springframework.data.domain.Page;
+//import org.springframework.data.domain.Pageable;
+//import org.springframework.data.jpa.repository.Query;
+//import org.springframework.data.repository.CrudRepository;
+//import org.springframework.stereotype.Repository;
+//
+//import javax.transaction.Transactional;
+//import java.util.Date;
+//import java.util.Map;
+//
+///**
+// * 视图表查询 [通过Map实现, 无需定义实体, 主键设置Long即可]
+// */
+//@Repository("slaveJTDao")
+//@Transactional
+//public interface HSViewDao extends CrudRepository<JpaMapSlave, Long> {
+//
+//    /**
+//     * 查询生产计划
+//     */
+//    @Query(value = "select * from vwpbCommonDataOrderPlan where dPlanDate >= ?1 and dPlanDate <= ?2 and sOrderNo like LTRIM('%' + ?3 + '%') order by dPlanDate desc", nativeQuery = true)
+//    Page<Map> queryOrderPlan(Date start, Date end, String sOrderNo, Pageable pageable);
+//
+//    @Query(value = "select * from vwpbCommonDataOrderPlan where dPlanDate >= ?1 and sOrderNo like LTRIM('%' + ?2 + '%') order by dPlanDate desc", nativeQuery = true)
+//    Page<Map> queryOrderPlan_start(Date end, String sOrderNo, Pageable pageable);
+//
+//    @Query(value = "select * from vwpbCommonDataOrderPlan where dPlanDate <= ?1 and sOrderNo like LTRIM('%' + ?2 + '%') order by dPlanDate desc", nativeQuery = true)
+//    Page<Map> queryOrderPlan_end(Date start, String sOrderNo, Pageable pageable);
+//
+//    @Query(value = "select * from vwpbCommonDataOrderPlan where sOrderNo like LTRIM('%' + ?1 + '%') order by dPlanDate desc", nativeQuery = true)
+//    Page<Map> queryOrderPlan(String sOrderNo, Pageable pageable);
+//
+//    /**
+//     * 查询生产计划_数量
+//     */
+//    @Query(value = "select sum(trnQty) from vwpbCommonDataOrderPlan where dPlanDate >= ?1 and dPlanDate <= ?2 and sOrderNo like LTRIM('%' + ?3 + '%')", nativeQuery = true)
+//    double queryOrderPlan_sum(Date start, Date end, String sOrderNo);
+//
+//    @Query(value = "select sum(trnQty) from vwpbCommonDataOrderPlan where dPlanDate >= ?1 and sOrderNo like LTRIM('%' + ?2 + '%')", nativeQuery = true)
+//    double queryOrderPlan_start_sum(Date end, String sOrderNo);
+//
+//    @Query(value = "select sum(trnQty) from vwpbCommonDataOrderPlan where dPlanDate <= ?1 and sOrderNo like LTRIM('%' + ?2 + '%')", nativeQuery = true)
+//    double queryOrderPlan_end_sum(Date start, String sOrderNo);
+//
+//    @Query(value = "select sum(trnQty) from vwpbCommonDataOrderPlan where sOrderNo like LTRIM('%' + ?1 + '%')", nativeQuery = true)
+//    double queryOrderPlan_sum(String sOrderNo);
+//
+//    /**
+//     * 查询成品库存
+//     */
+//    @Query(value = "select * from vwmmSTInStoreQuery where tStoreInTime >= ?1 and tStoreInTime <= ?2 and sStoreInNo like LTRIM('%' + ?3 + '%') order by tStoreInTime desc", nativeQuery = true)
+//    Page<Map> queryStoreWarehouse(Date start, Date end, String sOrderNo, Pageable pageable);
+//
+//    @Query(value = "select * from vwmmSTInStoreQuery where tStoreInTime >= ?1 and sStoreInNo like LTRIM('%' + ?2 + '%') order by tStoreInTime desc", nativeQuery = true)
+//    Page<Map> queryStoreWarehouse_start(Date end, String sOrderNo, Pageable pageable);
+//
+//    @Query(value = "select * from vwmmSTInStoreQuery where tStoreInTime <= ?1 and sStoreInNo like LTRIM('%' + ?2 + '%') order by tStoreInTime desc", nativeQuery = true)
+//    Page<Map> queryStoreWarehouse_end(Date start, String sOrderNo, Pageable pageable);
+//
+//    @Query(value = "select * from vwmmSTInStoreQuery where sStoreInNo like LTRIM('%' + ?1 + '%') order by tStoreInTime desc", nativeQuery = true)
+//    Page<Map> queryStoreWarehouse(String sStoreInNo, Pageable pageable);
+//
+//    /**
+//     * 查询成品库存_数量
+//     */
+//    @Query(value = "select sum(nInQty) from vwmmSTInStoreQuery where tStoreInTime >= ?1 and tStoreInTime <= ?2 and sStoreInNo like LTRIM('%' + ?3 + '%')", nativeQuery = true)
+//    double queryStoreWarehouse(Date start, Date end, String sOrderNo);
+//
+//    @Query(value = "select sum(nInQty)  from vwmmSTInStoreQuery where tStoreInTime >= ?1 and sStoreInNo like LTRIM('%' + ?2 + '%')", nativeQuery = true)
+//    double queryStoreWarehouse_start(Date end, String sOrderNo);
+//
+//    @Query(value = "select sum(nInQty)  from vwmmSTInStoreQuery where tStoreInTime <= ?1 and sStoreInNo like LTRIM('%' + ?2 + '%')", nativeQuery = true)
+//    double queryStoreWarehouse_end(Date start, String sOrderNo);
+//
+//    @Query(value = "select sum(nInQty)  from vwmmSTInStoreQuery where sStoreInNo like LTRIM('%' + ?1 + '%')", nativeQuery = true)
+//    double queryStoreWarehouse(String sStoreInNo);
+//}

+ 36 - 36
mjava-xintianlong/src/main/resources/application-dev.yml

@@ -7,48 +7,48 @@ server:
 # condition
 spel:
   scheduling: false        # 定时任务是否执行
-  multiSource: true        # 是否多数据源配置
+  multiSource: false        # 是否多数据源配置
 
 spring:
   # database
-  #  datasource:
-  #    driver-class-name: com.mysql.cj.jdbc.Driver
-  #    username: root
-  #    password: cp-root@2022++
-  #    url: jdbc:mysql://47.97.181.40:3306/mjava?serverTimezone=Asia/Shanghai&useUnicode=yes&characterEncoding=UTF-8&useSSL=true
-  #  jpa:
-  #    hibernate:
-  #      ddl-auto: none      # JPA对表没有任何操作
-  #    show-sql: true
-  #    database: MYSQL
-  #    database-platform: org.hibernate.dialect.MySQLDialect
   datasource:
-    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
-    url: jdbc:sqlserver://122.224.41.74:4335;SelectMethod=cursor;DatabaseName=HSDyeingERP
-    username: dingding
-    password: dd12345678
-    # 灏宇
-    primary:
-      username: dingding
-      password: dd12345678
-      jdbc-url: jdbc:sqlserver://122.224.41.74:4335;SelectMethod=cursor;DatabaseName=HSDyeingERP
-    # 金塔
-    slave:
-      username: dingding
-      password: dd12345678
-      jdbc-url: jdbc:sqlserver://122.224.41.74:4336;SelectMethod=cursor;DatabaseName=HSDyeingERP
-  # JPA
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    username: root
+    password: cp-root@2022++
+    url: jdbc:mysql://47.97.181.40:3306/mjava?serverTimezone=Asia/Shanghai&useUnicode=yes&characterEncoding=UTF-8&useSSL=true
   jpa:
-    database: sql_server
-    properties:
-      hibernate:
-        default_schema: dbo
     hibernate:
-      ddl-auto: none
-      naming:
-        # 取消小驼峰到下划线映射
-        implicit-strategy: org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
-        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
+      ddl-auto: none      # JPA对表没有任何操作
+    show-sql: true
+    database: MYSQL
+    database-platform: org.hibernate.dialect.MySQLDialect
+#  datasource:
+#    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
+#    url: jdbc:sqlserver://122.224.41.74:4335;SelectMethod=cursor;DatabaseName=HSDyeingERP
+#    username: dingding
+#    password: dd12345678
+#    # 灏宇
+#    primary:
+#      username: dingding
+#      password: dd12345678
+#      jdbc-url: jdbc:sqlserver://122.224.41.74:4335;SelectMethod=cursor;DatabaseName=HSDyeingERP
+#    # 金塔
+#    slave:
+#      username: dingding
+#      password: dd12345678
+#      jdbc-url: jdbc:sqlserver://122.224.41.74:4336;SelectMethod=cursor;DatabaseName=HSDyeingERP
+#  # JPA
+#  jpa:
+#    database: sql_server
+#    properties:
+#      hibernate:
+#        default_schema: dbo
+#    hibernate:
+#      ddl-auto: none
+#      naming:
+#        # 取消小驼峰到下划线映射
+#        implicit-strategy: org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
+#        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
 
 # filepath
 file:

+ 39 - 39
mjava-xintianlong/src/main/resources/application-prod.yml

@@ -1,52 +1,52 @@
 # 环境配置
 server:
-  port: 9001
+  port: 9005
   servlet:
-    context-path: /proxy/xintianlong
+    context-path: /api/xintianlong
 
 # condition
 spel:
-  scheduling: false       # 定时任务是否执行
-  multiSource: true       # 是否多数据源配置
+  scheduling: true       # 定时任务是否执行
+  multiSource: false       # 是否多数据源配置
 
 spring:
   # database
-  #  datasource:
-  #    driver-class-name: com.mysql.cj.jdbc.Driver
-  #    username: root
-  #    password: cp-root@2022++
-  #    url: jdbc:mysql://47.97.181.40:3306/mjava?serverTimezone=Asia/Shanghai&useUnicode=yes&characterEncoding=UTF-8&useSSL=true
-  #  jpa:
-  #    database: MYSQL
-  #    database-platform: org.hibernate.dialect.MySQL57Dialect
-  # sql_server
   datasource:
-    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
-    url: jdbc:sqlserver://122.224.41.74:4335;SelectMethod=cursor;DatabaseName=HSDyeingERP
-    username: dingding
-    password: dd12345678
-    # 灏宇
-    primary:
-      username: dingding
-      password: dd12345678
-      jdbc-url: jdbc:sqlserver://122.224.41.74:4335;SelectMethod=cursor;DatabaseName=HSDyeingERP
-    # 金塔
-    slave:
-      username: dingding
-      password: dd12345678
-      jdbc-url: jdbc:sqlserver://122.224.41.74:4336;SelectMethod=cursor;DatabaseName=HSDyeingERP
-    # JPA
-    jpa:
-      database: sql_server
-      properties:
-        hibernate:
-          default_schema: dbo
-      hibernate:
-        ddl-auto: none
-        naming:
-          # 取消小驼峰到下划线映射
-          implicit-strategy: org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
-          physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    username: root
+    password: cp-root@2022++
+    url: jdbc:mysql://47.97.181.40:3306/mjava?serverTimezone=Asia/Shanghai&useUnicode=yes&characterEncoding=UTF-8&useSSL=true
+  jpa:
+    database: MYSQL
+    database-platform: org.hibernate.dialect.MySQL57Dialect
+  # sql_server
+#  datasource:
+#    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
+#    url: jdbc:sqlserver://122.224.41.74:4335;SelectMethod=cursor;DatabaseName=HSDyeingERP
+#    username: dingding
+#    password: dd12345678
+#    # 灏宇
+#    primary:
+#      username: dingding
+#      password: dd12345678
+#      jdbc-url: jdbc:sqlserver://122.224.41.74:4335;SelectMethod=cursor;DatabaseName=HSDyeingERP
+#    # 金塔
+#    slave:
+#      username: dingding
+#      password: dd12345678
+#      jdbc-url: jdbc:sqlserver://122.224.41.74:4336;SelectMethod=cursor;DatabaseName=HSDyeingERP
+#    # JPA
+#    jpa:
+#      database: sql_server
+#      properties:
+#        hibernate:
+#          default_schema: dbo
+#      hibernate:
+#        ddl-auto: none
+#        naming:
+#          # 取消小驼峰到下划线映射
+#          implicit-strategy: org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
+#          physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
 
 # dingtalk
 dingtalk:

+ 36 - 36
mjava-xintianlong/target/classes/application-dev.yml

@@ -7,48 +7,48 @@ server:
 # condition
 spel:
   scheduling: false        # 定时任务是否执行
-  multiSource: true        # 是否多数据源配置
+  multiSource: false        # 是否多数据源配置
 
 spring:
   # database
-  #  datasource:
-  #    driver-class-name: com.mysql.cj.jdbc.Driver
-  #    username: root
-  #    password: cp-root@2022++
-  #    url: jdbc:mysql://47.97.181.40:3306/mjava?serverTimezone=Asia/Shanghai&useUnicode=yes&characterEncoding=UTF-8&useSSL=true
-  #  jpa:
-  #    hibernate:
-  #      ddl-auto: none      # JPA对表没有任何操作
-  #    show-sql: true
-  #    database: MYSQL
-  #    database-platform: org.hibernate.dialect.MySQLDialect
   datasource:
-    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
-    url: jdbc:sqlserver://122.224.41.74:4335;SelectMethod=cursor;DatabaseName=HSDyeingERP
-    username: dingding
-    password: dd12345678
-    # 灏宇
-    primary:
-      username: dingding
-      password: dd12345678
-      jdbc-url: jdbc:sqlserver://122.224.41.74:4335;SelectMethod=cursor;DatabaseName=HSDyeingERP
-    # 金塔
-    slave:
-      username: dingding
-      password: dd12345678
-      jdbc-url: jdbc:sqlserver://122.224.41.74:4336;SelectMethod=cursor;DatabaseName=HSDyeingERP
-  # JPA
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    username: root
+    password: cp-root@2022++
+    url: jdbc:mysql://47.97.181.40:3306/mjava?serverTimezone=Asia/Shanghai&useUnicode=yes&characterEncoding=UTF-8&useSSL=true
   jpa:
-    database: sql_server
-    properties:
-      hibernate:
-        default_schema: dbo
     hibernate:
-      ddl-auto: none
-      naming:
-        # 取消小驼峰到下划线映射
-        implicit-strategy: org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
-        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
+      ddl-auto: none      # JPA对表没有任何操作
+    show-sql: true
+    database: MYSQL
+    database-platform: org.hibernate.dialect.MySQLDialect
+#  datasource:
+#    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
+#    url: jdbc:sqlserver://122.224.41.74:4335;SelectMethod=cursor;DatabaseName=HSDyeingERP
+#    username: dingding
+#    password: dd12345678
+#    # 灏宇
+#    primary:
+#      username: dingding
+#      password: dd12345678
+#      jdbc-url: jdbc:sqlserver://122.224.41.74:4335;SelectMethod=cursor;DatabaseName=HSDyeingERP
+#    # 金塔
+#    slave:
+#      username: dingding
+#      password: dd12345678
+#      jdbc-url: jdbc:sqlserver://122.224.41.74:4336;SelectMethod=cursor;DatabaseName=HSDyeingERP
+#  # JPA
+#  jpa:
+#    database: sql_server
+#    properties:
+#      hibernate:
+#        default_schema: dbo
+#    hibernate:
+#      ddl-auto: none
+#      naming:
+#        # 取消小驼峰到下划线映射
+#        implicit-strategy: org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
+#        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
 
 # filepath
 file:

+ 39 - 39
mjava-xintianlong/target/classes/application-prod.yml

@@ -1,52 +1,52 @@
 # 环境配置
 server:
-  port: 9001
+  port: 9005
   servlet:
-    context-path: /proxy/xintianlong
+    context-path: /api/xintianlong
 
 # condition
 spel:
-  scheduling: false       # 定时任务是否执行
-  multiSource: true       # 是否多数据源配置
+  scheduling: true       # 定时任务是否执行
+  multiSource: false       # 是否多数据源配置
 
 spring:
   # database
-  #  datasource:
-  #    driver-class-name: com.mysql.cj.jdbc.Driver
-  #    username: root
-  #    password: cp-root@2022++
-  #    url: jdbc:mysql://47.97.181.40:3306/mjava?serverTimezone=Asia/Shanghai&useUnicode=yes&characterEncoding=UTF-8&useSSL=true
-  #  jpa:
-  #    database: MYSQL
-  #    database-platform: org.hibernate.dialect.MySQL57Dialect
-  # sql_server
   datasource:
-    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
-    url: jdbc:sqlserver://122.224.41.74:4335;SelectMethod=cursor;DatabaseName=HSDyeingERP
-    username: dingding
-    password: dd12345678
-    # 灏宇
-    primary:
-      username: dingding
-      password: dd12345678
-      jdbc-url: jdbc:sqlserver://122.224.41.74:4335;SelectMethod=cursor;DatabaseName=HSDyeingERP
-    # 金塔
-    slave:
-      username: dingding
-      password: dd12345678
-      jdbc-url: jdbc:sqlserver://122.224.41.74:4336;SelectMethod=cursor;DatabaseName=HSDyeingERP
-    # JPA
-    jpa:
-      database: sql_server
-      properties:
-        hibernate:
-          default_schema: dbo
-      hibernate:
-        ddl-auto: none
-        naming:
-          # 取消小驼峰到下划线映射
-          implicit-strategy: org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
-          physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    username: root
+    password: cp-root@2022++
+    url: jdbc:mysql://47.97.181.40:3306/mjava?serverTimezone=Asia/Shanghai&useUnicode=yes&characterEncoding=UTF-8&useSSL=true
+  jpa:
+    database: MYSQL
+    database-platform: org.hibernate.dialect.MySQL57Dialect
+  # sql_server
+#  datasource:
+#    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
+#    url: jdbc:sqlserver://122.224.41.74:4335;SelectMethod=cursor;DatabaseName=HSDyeingERP
+#    username: dingding
+#    password: dd12345678
+#    # 灏宇
+#    primary:
+#      username: dingding
+#      password: dd12345678
+#      jdbc-url: jdbc:sqlserver://122.224.41.74:4335;SelectMethod=cursor;DatabaseName=HSDyeingERP
+#    # 金塔
+#    slave:
+#      username: dingding
+#      password: dd12345678
+#      jdbc-url: jdbc:sqlserver://122.224.41.74:4336;SelectMethod=cursor;DatabaseName=HSDyeingERP
+#    # JPA
+#    jpa:
+#      database: sql_server
+#      properties:
+#        hibernate:
+#          default_schema: dbo
+#      hibernate:
+#        ddl-auto: none
+#        naming:
+#          # 取消小驼峰到下划线映射
+#          implicit-strategy: org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
+#          physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
 
 # dingtalk
 dingtalk:

+ 0 - 63
mjava-xintianlong/target/generated-sources/java/com/malk/xintianlong/repository/entity/QHSApproveRecordPo.java

@@ -1,63 +0,0 @@
-package com.malk.xintianlong.repository.entity;
-
-import static com.querydsl.core.types.PathMetadataFactory.*;
-
-import com.malk.xintianlong.repository.entity.primary.HSApproveRecordPo;
-import com.querydsl.core.types.dsl.*;
-
-import com.querydsl.core.types.PathMetadata;
-import javax.annotation.Generated;
-import com.querydsl.core.types.Path;
-
-
-/**
- * QHSApproveRecordPo is a Querydsl query type for HSApproveRecordPo
- */
-@Generated("com.querydsl.codegen.EntitySerializer")
-public class QHSApproveRecordPo extends EntityPathBase<HSApproveRecordPo> {
-
-    private static final long serialVersionUID = 1830122090L;
-
-    public static final QHSApproveRecordPo hSApproveRecordPo = new QHSApproveRecordPo("hSApproveRecordPo");
-
-    public final com.malk.base.QBasePo _super = new com.malk.base.QBasePo(this);
-
-    public final StringPath approveResult = createString("approveResult");
-
-    public final StringPath corpType = createString("corpType");
-
-    //inherited
-    public final DateTimePath<java.util.Date> createTime = _super.createTime;
-
-    public final StringPath formType = createString("formType");
-
-    public final StringPath hsResponse = createString("hsResponse");
-
-    //inherited
-    public final NumberPath<Long> id = _super.id;
-
-    public final StringPath orderCode = createString("orderCode");
-
-    public final StringPath processInstanceId = createString("processInstanceId");
-
-    public final StringPath proposerCode = createString("proposerCode");
-
-    public final StringPath remark = createString("remark");
-
-    //inherited
-    public final DateTimePath<java.util.Date> updateTime = _super.updateTime;
-
-    public QHSApproveRecordPo(String variable) {
-        super(HSApproveRecordPo.class, forVariable(variable));
-    }
-
-    public QHSApproveRecordPo(Path<? extends HSApproveRecordPo> path) {
-        super(path.getType(), path.getMetadata());
-    }
-
-    public QHSApproveRecordPo(PathMetadata metadata) {
-        super(HSApproveRecordPo.class, metadata);
-    }
-
-}
-

+ 0 - 62
mjava-xintianlong/target/generated-sources/java/com/malk/xintianlong/repository/entity/primary/QHSApproveRecordPo.java

@@ -1,62 +0,0 @@
-package com.malk.xintianlong.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;
-
-
-/**
- * QHSApproveRecordPo is a Querydsl query type for HSApproveRecordPo
- */
-@Generated("com.querydsl.codegen.EntitySerializer")
-public class QHSApproveRecordPo extends EntityPathBase<HSApproveRecordPo> {
-
-    private static final long serialVersionUID = -856519298L;
-
-    public static final QHSApproveRecordPo hSApproveRecordPo = new QHSApproveRecordPo("hSApproveRecordPo");
-
-    public final com.malk.base.QBasePo _super = new com.malk.base.QBasePo(this);
-
-    public final StringPath approveResult = createString("approveResult");
-
-    public final StringPath corpType = createString("corpType");
-
-    //inherited
-    public final DateTimePath<java.util.Date> createTime = _super.createTime;
-
-    public final StringPath formType = createString("formType");
-
-    public final StringPath hsResponse = createString("hsResponse");
-
-    //inherited
-    public final NumberPath<Long> id = _super.id;
-
-    public final StringPath orderCode = createString("orderCode");
-
-    public final StringPath processInstanceId = createString("processInstanceId");
-
-    public final StringPath proposerCode = createString("proposerCode");
-
-    public final StringPath remark = createString("remark");
-
-    //inherited
-    public final DateTimePath<java.util.Date> updateTime = _super.updateTime;
-
-    public QHSApproveRecordPo(String variable) {
-        super(HSApproveRecordPo.class, forVariable(variable));
-    }
-
-    public QHSApproveRecordPo(Path<? extends HSApproveRecordPo> path) {
-        super(path.getType(), path.getMetadata());
-    }
-
-    public QHSApproveRecordPo(PathMetadata metadata) {
-        super(HSApproveRecordPo.class, metadata);
-    }
-
-}
-

+ 0 - 5
mjava-xintianlong/target/maven-archiver/pom.properties

@@ -1,5 +0,0 @@
-#Generated by Maven
-#Sat Jun 24 17:19:27 CST 2023
-version=1.0-SNAPSHOT
-groupId=com.malk
-artifactId=mjava-xintianlong

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

@@ -1 +0,0 @@
-com/malk/xintianlong/repository/entity/primary/QHSApproveRecordPo.class

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

@@ -1,14 +0,0 @@
-/Users/malk/server/java-mcli-2/mjava-xintianlong/src/main/java/com/malk/xintianlong/repository/dao/primary/HSApproveRecordDao.java
-/Users/malk/server/java-mcli-2/mjava-xintianlong/src/main/java/com/malk/xintianlong/Boot.java
-/Users/malk/server/java-mcli-2/mjava-xintianlong/target/generated-sources/java/com/malk/xintianlong/repository/entity/primary/QHSApproveRecordPo.java
-/Users/malk/server/java-mcli-2/mjava-xintianlong/src/main/java/com/malk/xintianlong/controller/HSController.java
-/Users/malk/server/java-mcli-2/mjava-xintianlong/src/main/java/com/malk/xintianlong/delegate/DDDelegate.java
-/Users/malk/server/java-mcli-2/mjava-xintianlong/src/main/java/com/malk/xintianlong/schedule/HSScheduleTask.java
-/Users/malk/server/java-mcli-2/mjava-xintianlong/src/main/java/com/malk/xintianlong/server/HSConf.java
-/Users/malk/server/java-mcli-2/mjava-xintianlong/target/generated-sources/java/com/malk/xintianlong/repository/entity/QHSApproveRecordPo.java
-/Users/malk/server/java-mcli-2/mjava-xintianlong/src/main/java/com/malk/xintianlong/repository/entity/primary/HSApproveRecordPo.java
-/Users/malk/server/java-mcli-2/mjava-xintianlong/src/main/java/com/malk/xintianlong/repository/dao/primary/HSViewDao.java
-/Users/malk/server/java-mcli-2/mjava-xintianlong/src/main/java/com/malk/xintianlong/controller/DDController.java
-/Users/malk/server/java-mcli-2/mjava-xintianlong/src/main/java/com/malk/xintianlong/service/impl/HSServiceImpl.java
-/Users/malk/server/java-mcli-2/mjava-xintianlong/src/main/java/com/malk/xintianlong/repository/dao/slave/HSViewDao.java
-/Users/malk/server/java-mcli-2/mjava-xintianlong/src/main/java/com/malk/xintianlong/service/HSService.java

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


+ 39 - 2
mjava/src/main/java/com/malk/Util/UtilDateTime.java

@@ -9,6 +9,7 @@ import java.time.*;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.Temporal;
 import java.time.temporal.TemporalAdjusters;
+import java.util.Calendar;
 import java.util.Date;
 
 /**
@@ -36,8 +37,8 @@ public abstract class UtilDateTime {
     }
 
     // 获取时间段内小时
-    public static float betweenHour(Temporal startInclusive, Temporal endExclusive) {
-        return Duration.between(startInclusive, endExclusive).toMillis() / 60f;
+    public static double betweenHour(Temporal startInclusive, Temporal endExclusive) {
+        return UtilNumber.formatPrecisionValue(Duration.between(startInclusive, endExclusive).toMinutes() / 60f);
     }
 
     // 获取上月第一天0点
@@ -46,6 +47,7 @@ public abstract class UtilDateTime {
         int year = dateTime.getYear();
         if (month == 0) {
             month = 12;
+            year -= 1;
         }
         return LocalDateTime.of(year, month, 1, 0, 0, 0);
     }
@@ -90,6 +92,10 @@ public abstract class UtilDateTime {
         return new SimpleDateFormat(TIME_PATTERN).format(dateTime);
     }
 
+    public static String format(Date dateTime, String pattern) {
+        return new SimpleDateFormat(pattern).format(dateTime);
+    }
+
     @SneakyThrows
     public static Date parseDateTime(String dateStr) {
         if (StringUtils.isBlank(dateStr)) {
@@ -138,4 +144,35 @@ public abstract class UtilDateTime {
     public static LocalTime parseLocalTime(String dateStr) {
         return LocalTime.parse(dateStr, DateTimeFormatter.ofPattern(TIME_PATTERN));
     }
+
+    public static LocalTime parseLocal(String dateStr, String pattern) {
+        return LocalTime.parse(dateStr, DateTimeFormatter.ofPattern(pattern));
+    }
+
+    public static String formatLocal(LocalDate dateTime, String pattern) {
+        return DateTimeFormatter.ofPattern(pattern).format(dateTime);
+    }
+
+    //// Calendar ////
+
+    // 获取上月最后一天
+    public static String lastDayOfNextMonth(Date date) {
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(date);
+        // 指定日期月份减去一
+        cal.add(Calendar.MONTH, -1);
+        cal.set(Calendar.DAY_OF_MONTH, 1);
+        cal.roll(Calendar.DAY_OF_MONTH, -1);
+        return formatDate(cal.getTime()) + " 23:59:59";
+    }
+
+    // 获取上月第一天
+    public static String firstDayOfNextMonth(Date date) {
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(date);
+        // 指定日期月份减去一
+        cal.add(Calendar.MONTH, -1);
+        cal.set(Calendar.DAY_OF_MONTH, 1);
+        return formatDate(cal.getTime()) + " 00:00:00";
+    }
 }

+ 7 - 0
mjava/src/main/java/com/malk/Util/UtilMap.java

@@ -108,6 +108,13 @@ public abstract class UtilMap {
         return Integer.valueOf(getString(data, key));
     }
 
+    /**
+     * 取值 [转为 float]
+     */
+    public static float getFloat(Map data, String key) {
+        return Float.valueOf(getString(data, key));
+    }
+
     /**
      * 取值 [为空返回默认值]
      */

+ 113 - 5
mjava/src/main/java/com/malk/Util/UtilNumber.java

@@ -1,33 +1,141 @@
 package com.malk.Util;
 
+import org.apache.commons.lang3.StringUtils;
+
 import java.math.BigDecimal;
 import java.text.DecimalFormat;
 import java.text.NumberFormat;
 import java.util.Locale;
+import java.util.regex.Pattern;
 
 /**
  * 数字格式化
+ * -
+ * ppExt: 不要直接使用 Number 作为类型, 不同基本类型比较值时会有偏差 [可以作为父类接受数据, 避免直接强制类型转换错误, 再进行基本类型处理]
  */
 public class UtilNumber {
 
-    // 货币格式化
+    /**
+     * 货币格式化
+     */
     public static final String formatCurrency(Number number) {
         DecimalFormat curFormat = (DecimalFormat) NumberFormat.getCurrencyInstance(Locale.CHINA);
         return curFormat.format(number);
     }
 
-    // 百分比格式化
+    /**
+     * 去除CHY货币标识
+     */
+    public static final String replaceCurrencyCHY(String cur) {
+        return cur.replace("¥", "").replace("¥", "");
+    }
+
+    /**
+     * 判断是否数字
+     */
+    public static boolean matchNumber(String num) {
+        Pattern pattern = Pattern.compile("^-?\\d+(\\.\\d+)?$");
+        return pattern.matcher(num).matches();
+    }
+
+    /**
+     * 去除CHY货币标识
+     */
+    public static final BigDecimal replaceCurrencyCHYToDecimal(String cur) {
+        String num = replaceCurrencyCHY(cur);
+        if (StringUtils.isBlank(num) || !matchNumber(num)) {
+            num = "0";
+        }
+        return new BigDecimal(num);
+    }
+
+    /**
+     * 百分比格式化
+     */
     public static final String formatPercent(Number number) {
         DecimalFormat percentFormat = (DecimalFormat) NumberFormat.getPercentInstance(Locale.CHINA);
         percentFormat.setMinimumFractionDigits(2);
         return percentFormat.format(number);
     }
 
-    // 小数位精度格式
-    public static final String formatPrecision(double number) {
-        DecimalFormat df = new DecimalFormat("#.00");
+    /**
+     * 小数位精度格式
+     */
+    public static final String formatPrecisionString(double number) {
+        return formatPrecisionString(number, "#.00");
+    }
+
+    /**
+     * 小数位精度格式
+     */
+    public static final String formatPrecisionString(double number, String pattern) {
+        DecimalFormat df = new DecimalFormat(pattern);
         return df.format(new BigDecimal(number));
     }
 
+    /**
+     * 小数位精度格式
+     */
+    public static final double formatPrecisionValue(double number) {
+        return Double.valueOf(formatPrecisionString(number));
+    }
+
+    /**
+     * 小数位精度格式
+     */
+    public static final double formatPrecisionValue(float number) {
+        return Double.valueOf(formatPrecisionString(number));
+    }
+
+    /**
+     * 小数位精度格式
+     */
+    public static final String formatPrecisionString(float number) {
+        return formatPrecisionString(Double.valueOf(String.valueOf(number)));
+    }
 
+    /**
+     * 非数值型字符串, 空字符串兼容
+     */
+    public static final BigDecimal setBigDecimal(String strNum) {
+        BigDecimal decimal = null;
+        if (StringUtils.isNotBlank(strNum)) {
+            try {
+                decimal = new BigDecimal(strNum);
+            } catch (NumberFormatException e) {
+                decimal = BigDecimal.ZERO;
+            }
+        }
+        return decimal;
+    }
+
+    /**
+     * 判断两个字符串, 转数值后是否相等
+     */
+    public static final int compareBigDecimal(String n1, String n2) {
+        return setBigDecimal(n1).compareTo(setBigDecimal(n2));
+    }
+
+    /**
+     * 判断两个字符串, 转数值后是否相等
+     */
+    public static final boolean equalBigDecimal(String n1, String n2) {
+        return compareBigDecimal(n1, n2) == 0;
+    }
+
+    /**
+     * 尾数: 0.5取整逻辑, 小于0.5为0.5, 大于0.5为1
+     */
+    public static double roundHalf(double num) {
+        double half = num % 1;
+        if (half != 0 && half != 0.5) {
+            if (half > 0.5f) {
+                num = Math.floor(num) + 1.0f;
+            } else {
+                num = Math.floor(num) + 0.5f;
+            }
+        }
+        return num;
+    }
 }
+

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

@@ -9,6 +9,14 @@ import org.springframework.stereotype.Component;
 @ConfigurationProperties(prefix = "aliwork")
 public class YDConf {
 
+    // todo "RUNNING"
+    //"NEW"
+    //"PAUSED"
+    //"TERMINATED"
+    //"COMPLETED"
+    //"ERROR"
+    //"CANCELED"
+
     private String appType;
 
     private String systemToken;
@@ -66,6 +74,7 @@ public class YDConf {
         delete_batch,               // 批量删除
         multi_update,
         start,                      // 发起流程
+        batchSave,                  // 批量创建
     }
 
     ////////////////////////// 老版本API //////////////////////////

+ 15 - 2
mjava/src/main/java/com/malk/server/aliwork/YDParam.java

@@ -141,11 +141,24 @@ public class YDParam extends BaseDto {
 
     // 是否需要宜搭服务端异步执行该任务
     @Builder.Default
-    boolean asynchronousExecution = false;
+    private boolean asynchronousExecution = false;
 
     // 是否需要触发表单绑定的校验规则、关联业务规则和第三方服务回调
     @Builder.Default
-    boolean executeExpression = true;
+    private boolean executeExpression = true;
+
+    /**
+     * 批量新增
+     */
+    private String formDataJsonList;
+
+    // 是否不触发表单绑定的校验规则、关联业务规则和第三方服务回调
+    @Builder.Default
+    private boolean noExecuteExpression = false;
+
+    // 批量保存多条表单实例数据发生异常时是否跳过异常的表单实例并继续保存下一个表单实例数据 [当noExecuteExpression为false时此参数才生效]
+    @Builder.Default
+    private boolean keepRunningAfterException = false;
 
     /**
      * 分组校验

+ 0 - 1
mjava/src/main/java/com/malk/service/aliwork/YDClient.java

@@ -18,7 +18,6 @@ public interface YDClient {
     DDR_New queryData(YDParam param, YDConf.FORM_QUERY type);
 
     /**
-     * w
      * 获取宜搭附件临时免登地址
      */
     String convertTemporaryUrl(String url, int timeout);

+ 26 - 1
mjava/src/main/java/com/malk/service/aliwork/YDService.java

@@ -1,6 +1,5 @@
 package com.malk.service.aliwork;
 
-
 import com.malk.server.aliwork.YDConf;
 import com.malk.server.aliwork.YDParam;
 
@@ -19,6 +18,11 @@ public interface YDService {
      */
     List<Map> queryDetails(YDParam ydParam);
 
+    /**
+     * 查询全部 [主表]
+     */
+    List<Map> queryAllFormData(YDParam YDParam);
+
     /**
      * 全表复制 [镜像] todo, 明细超过20条未处理, 组件替换和忽略未处理
      *
@@ -26,4 +30,25 @@ public interface YDService {
      * @param sParam 目标表数据, 表单ID/流程ID
      */
     Object copyFormData(YDParam cParam, YDParam sParam);
+
+    /**
+     * upsert方法 [todo: 优化 批量的数据兼容]
+     *
+     * @param lambda 查询数据回调, 传递查询结果list, 接收回调返回map传递钉到formData内, 若返回为空则不支持Upsert
+     */
+    Object upsertFormData(String formUuid, Map condition, Map formData, UpsertLambda lambda);
+
+    /**
+     * ppExt 函数式编程:Stream类、Lambda表达式和函数接口(Functional Inteface)
+     * -
+     * 自定义Lambda是为了更好的代码提示和数据类型定义: @FunctionalInterface,该接口为函数接口,一个函数接口只能存在一个方法
+     * 特别注意,非异步情况下,和网络请求一致,回调默认同步等待【回调方式可自定义:如兼容并发可有,同步单次回调、同步累积回调、并发异步执行、并发累积回调】
+     * 函数编程的最大好处,是可传入执行逻辑,而无需等待全部数据结果,尤其并发和异步情况下【异步效果优于Future】
+     * -
+     * 结合异步与并发, @Async说明和配置详见core/AsyncConfig
+     */
+    @FunctionalInterface
+    interface UpsertLambda {
+        Map dataList(List<Map> list);
+    }
 }

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

@@ -74,6 +74,9 @@ public class YDClientImpl implements YDClient {
             case delete_batch:
                 ddr_new = (DDR_New) UtilHttp.doPost(getRequestUrl("/forms/instances/batchRemove"), ddClient.initTokenHeader(), _initBodyParam(ydParam), DDR_New.class);
                 break;
+            case batchSave:
+                ddr_new = (DDR_New) UtilHttp.doPost(getRequestUrl("/forms/instances/batchSave"), ddClient.initTokenHeader(), null, _initBodyParam(ydParam), DDR_New.class);
+                break;
             default:
                 break;
         }

+ 54 - 1
mjava/src/main/java/com/malk/service/aliwork/impl/YDServiceImpl.java

@@ -1,8 +1,10 @@
 package com.malk.service.aliwork.impl;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSON;
 import com.malk.server.aliwork.YDConf;
 import com.malk.server.aliwork.YDParam;
+import com.malk.server.common.McException;
 import com.malk.server.dingtalk.DDR_New;
 import com.malk.service.aliwork.YDClient;
 import com.malk.service.aliwork.YDService;
@@ -53,6 +55,26 @@ public class YDServiceImpl implements YDService {
         return details;
     }
 
+    /**
+     * 查询全部 [主表]
+     */
+    @Override
+    public List<Map> queryAllFormData(YDParam ydParam) {
+        float pageSize = YDConf.PAGE_SIZE_LIMIT;
+        // 查询数据量
+        ydParam.setPageSize(1);
+        long totalCount = ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_search_form).getTotalCount();
+        // 轮询累计数据
+        List<Map> dataList = new ArrayList<>();
+        ydParam.setCurrentPage(1);
+        ydParam.setPageSize((int) pageSize);
+        for (int page = 1; page <= Math.ceil(totalCount / pageSize); page++) {
+            ydParam.setCurrentPage(page);
+            dataList.addAll((List<Map>) ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_search_form).getData());
+        }
+        return dataList;
+    }
+
     /**
      * 全表复制
      */
@@ -84,7 +106,6 @@ public class YDServiceImpl implements YDService {
 //        List<Map> association = JSON.parseArray(String.valueOf(JSON.parse(String.valueOf(formData.get("associationFormField_lg0gmbi8_id")))), Map.class);
 //        String formInstId = String.valueOf(association.get(0).get("instanceId"));
 
-
         if (compId.startsWith("tableField_")) {
             List<Map> details = (List<Map>) formData.get(compId);
             for (Map<String, Object> detail : details) {
@@ -102,4 +123,36 @@ public class YDServiceImpl implements YDService {
 
         return formData.get(compId);
     }
+
+    /**
+     * upsert方法
+     */
+    @Override
+    public Object upsertFormData(String formUuid, Map condition, Map formData, UpsertLambda lambda) {
+        YDParam ydParam = YDParam.builder()
+                .formUuid(formUuid)
+                .searchFieldJson(JSON.toJSONString(condition))
+                .build();
+        // 查询数据, 是否存在
+        List<Map> dataList = (List<Map>) ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_search_form).getData();
+        McException.assertAccessException(dataList.size() > 1, "upsert方法, 查询条件返回数据不唯一");
+        // 异步回调, 查询结果
+        if (ObjectUtil.isNotNull(lambda)) {
+            Map form = lambda.dataList(dataList);
+            // 若返回为空, 不执行
+            if (ObjectUtil.isNull(form)) {
+                return null;
+            }
+            // 回调数据, 写入表单
+            formData.putAll(form);
+        }
+        if (dataList.size() > 0) {
+            ydParam.setUpdateFormDataJson(JSON.toJSONString(formData));
+            ydParam.setFormInstanceId(dataList.get(0).get("formInstanceId").toString());
+            return ydClient.operateData(ydParam, YDConf.FORM_OPERATION.update);
+        }
+        formData.putAll(condition); // 新增写入查询条件数据
+        ydParam.setFormDataJson(JSON.toJSONString(formData));
+        return ydClient.operateData(ydParam, YDConf.FORM_OPERATION.create);
+    }
 }

+ 2 - 2
mjava/src/main/java/com/malk/service/dingtalk/DDClient_Storage.java

@@ -30,8 +30,8 @@ public interface DDClient_Storage {
      * 获取文件上传信息
      *
      * @implNote protocol 通过指定上传协议返回不同协议上传所需要的信息。HEADER_SIGNATURE:Header加签
-     * @implNote multipart 是否需要分片上传。 true:需要; false:不需要. 说明: 5G以下文件,设为false,简化上传步骤。
-     * 5G以上文件,必须设为true,否则会上传失败。
+     * @implNote multi41part 是否需要分片上传。 true:需要; false:不需要. 说明: 5G以下文件,设为false,简化上传步骤。
+     * 5G以上文件,必须77设为true,否则会上传失败。
      */
     DDR_New getUploadInfos(String access_token, String spaceId, String unionId, Map option);
 

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

@@ -37,7 +37,7 @@ spring:
   # JPA
   jpa:
     hibernate:
-      ddl-auto: none                # 对表没有任何操作. 若不设置为 non, flyway.enabled 配置会无效, 在没有数据库连接情况下程序无法启动
+      ddl-auto: none                # 对表没有任何操作. 若不设置为 none, flyway.enabled 配置会无效, 在没有数据库连接情况下程序无法启动
     show-sql: false
     open-in-view: false             # 开启可用于多对一懒加载, 但可能存在并发缓存问题
     properties:

+ 60 - 0
mjava/target/classes/META-INF/spring-configuration-metadata.json

@@ -40,6 +40,16 @@
       "type": "com.malk.server.common.FilePath$Path",
       "sourceType": "com.malk.server.common.FilePath$Path"
     },
+    {
+      "name": "file.path",
+      "type": "com.malk.server.common.FilePath$Path",
+      "sourceType": "com.malk.server.common.FilePath$Path"
+    },
+    {
+      "name": "file.path",
+      "type": "com.malk.server.common.FilePath$Path",
+      "sourceType": "com.malk.server.common.FilePath$Path"
+    },
     {
       "name": "file.source",
       "type": "com.malk.server.common.FilePath$Source",
@@ -55,6 +65,16 @@
       "type": "com.malk.server.common.FilePath$Source",
       "sourceType": "com.malk.server.common.FilePath$Source"
     },
+    {
+      "name": "file.source",
+      "type": "com.malk.server.common.FilePath$Source",
+      "sourceType": "com.malk.server.common.FilePath$Source"
+    },
+    {
+      "name": "file.source",
+      "type": "com.malk.server.common.FilePath$Source",
+      "sourceType": "com.malk.server.common.FilePath$Source"
+    },
     {
       "name": "fxiaoke",
       "type": "com.malk.server.fxiaoke.FXKConf",
@@ -184,6 +204,16 @@
       "type": "java.lang.String",
       "sourceType": "com.malk.server.common.FilePath$Path"
     },
+    {
+      "name": "file.path.file",
+      "type": "java.lang.String",
+      "sourceType": "com.malk.server.common.FilePath$Path"
+    },
+    {
+      "name": "file.path.file",
+      "type": "java.lang.String",
+      "sourceType": "com.malk.server.common.FilePath$Path"
+    },
     {
       "name": "file.path.image",
       "type": "java.lang.String",
@@ -194,6 +224,21 @@
       "type": "java.lang.String",
       "sourceType": "com.malk.server.common.FilePath$Path"
     },
+    {
+      "name": "file.path.image",
+      "type": "java.lang.String",
+      "sourceType": "com.malk.server.common.FilePath$Path"
+    },
+    {
+      "name": "file.path.image",
+      "type": "java.lang.String",
+      "sourceType": "com.malk.server.common.FilePath$Path"
+    },
+    {
+      "name": "file.path.tmp",
+      "type": "java.lang.String",
+      "sourceType": "com.malk.server.common.FilePath$Path"
+    },
     {
       "name": "file.path.tmp",
       "type": "java.lang.String",
@@ -204,6 +249,21 @@
       "type": "java.lang.String",
       "sourceType": "com.malk.server.common.FilePath$Path"
     },
+    {
+      "name": "file.path.tmp",
+      "type": "java.lang.String",
+      "sourceType": "com.malk.server.common.FilePath$Path"
+    },
+    {
+      "name": "file.source.fonts",
+      "type": "java.lang.String",
+      "sourceType": "com.malk.server.common.FilePath$Source"
+    },
+    {
+      "name": "file.source.fonts",
+      "type": "java.lang.String",
+      "sourceType": "com.malk.server.common.FilePath$Source"
+    },
     {
       "name": "file.source.fonts",
       "type": "java.lang.String",

+ 1 - 1
mjava/target/classes/application.yml

@@ -37,7 +37,7 @@ spring:
   # JPA
   jpa:
     hibernate:
-      ddl-auto: none                # 对表没有任何操作. 若不设置为 non, flyway.enabled 配置会无效, 在没有数据库连接情况下程序无法启动
+      ddl-auto: none                # 对表没有任何操作. 若不设置为 none, flyway.enabled 配置会无效, 在没有数据库连接情况下程序无法启动
     show-sql: false
     open-in-view: false             # 开启可用于多对一懒加载, 但可能存在并发缓存问题
     properties:

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

@@ -1,5 +1,5 @@
 #Generated by Maven
-#Fri Aug 04 18:56:26 CST 2023
+#Thu Oct 05 21:01:44 CST 2023
 version=1.0-SNAPSHOT
 groupId=com.malk
 artifactId=mjava

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

@@ -1,5 +1,138 @@
+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
+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/repository/entity/slave/JpaMapSlave.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/service/aliwork/YDService$UpsertLambda.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