Browse Source

龙游提交

CRK 3 months ago
parent
commit
5750c0c791

+ 54 - 0
mjava-longyou/pom.xml

@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>java-mcli</artifactId>
+        <groupId>com.malk</groupId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>mjava-longyou</artifactId>
+    <description>龙游宜搭项目</description>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+    </properties>
+
+    <dependencies>
+        <!-- 核心模块-->
+        <dependency>
+            <groupId>com.malk</groupId>
+            <artifactId>mjava</artifactId>
+            <version>${mjava.version}</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <version>2.1.1.RELEASE</version>
+                <configuration>
+                    <includeSystemScope>true</includeSystemScope>
+                    <!-- 如果没有该配置,devtools不会生效: 打包时关闭 -->
+                    <fork>false</fork>
+                    <!-- 避免中文乱码 -->
+                    <jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
+                </configuration>
+                <!-- 允许生成可运行jar -->
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+        <finalName>${project.artifactId}</finalName>
+    </build>
+</project>

+ 36 - 0
mjava-longyou/src/main/java/com/malk/Boot.java

@@ -0,0 +1,36 @@
+package com.malk;
+
+import com.querydsl.jpa.impl.JPAQueryFactory;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.Bean;
+import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
+
+import javax.persistence.EntityManager;
+
+/**
+ * corp项目: 扫描公共模块
+ * -
+ * 若是无需数据库模块, 配置无效地址也可启动, 引入mjava不支持直接 @SpringBootApplication(exclude = DataSourceAutoConfiguration.class) 配置
+ * 需要配置 jpa.hibernate.ddl-auto 为 none. 标识对表没有任何操作. 若不设置为 none, flyway.enabled 配置会无效, 在没有数库连接情况下程序无法启动
+ */
+@EnableJpaAuditing
+@SpringBootApplication(scanBasePackages = {"com.malk"})
+public class Boot {
+
+
+    public static void main(String... args) {
+        SpringApplication.run(Boot.class, args);
+    }
+
+
+
+
+    /**
+     * 让Spring管理JPAQueryFactory [不使用Qualifier详见mjava-Boot]
+     */
+    @Bean
+    public JPAQueryFactory jpaQueryFactory(EntityManager entityManager) {
+        return new JPAQueryFactory(entityManager);
+    }
+}

+ 239 - 0
mjava-longyou/src/main/java/com/malk/longyou/Controller/lytoOAController.java

@@ -0,0 +1,239 @@
+package com.malk.longyou.Controller;
+
+import com.alibaba.fastjson.JSON;
+import com.malk.server.aliwork.YDConf;
+import com.malk.server.aliwork.YDParam;
+import com.malk.server.common.McR;
+import com.malk.server.dingtalk.DDConf;
+import com.malk.server.dingtalk.DDFormComponentDto;
+import com.malk.server.dingtalk.DDR;
+import com.malk.server.dingtalk.DDR_New;
+import com.malk.service.aliwork.YDClient;
+import com.malk.service.dingtalk.DDClient;
+import com.malk.service.dingtalk.DDClient_Workflow;
+import com.malk.utils.UtilHttp;
+import com.malk.utils.UtilMap;
+import com.malk.utils.UtilServlet;
+import com.malk.utils.UtilToken;
+import lombok.SneakyThrows;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import java.time.Instant;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Slf4j
+@RestController
+@RequestMapping("/longyou")
+@EnableAsync
+public class lytoOAController {
+
+
+    @Autowired
+    private DDClient_Workflow ddClient_workflow;
+    @Autowired
+    private YDClient ydClient;
+    @Autowired
+    private DDClient ddClient;
+
+
+    @SneakyThrows
+    @PostMapping("/insetToOA")
+    McR insetXMC(HttpServletRequest request) {
+        Map data = UtilServlet.getParamMap(request);
+        if (data != null) {
+            String AppKey = data.get("AppKey").toString();
+            String AppSecret = data.get("AppSecret").toString();
+            String CorpId = data.get("CorpId").toString();
+            String DDFromName = data.get("FromName").toString();
+            String DDFromID = data.get("DDFromID").toString();//钉钉表单ID
+            if (!AppKey.equals("") && !AppSecret.equals("") && !CorpId.equals("") && !DDFromName.equals("") && !DDFromID.equals("")) {
+                //通过CorpI查询对应的数据
+                List<Map> dataList_bgxx = (List<Map>) ydClient.queryData(YDParam.builder()
+                        .appType("APP_N8M3FKV34PH3KQAXS44M")
+                        .systemToken("ULD66N81DQ3T5ZD9BPH3S8JUDVT82L8U04H7MUQD")
+                        .formUuid(retunYDFROMID(DDFromName))
+                        .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_m7hc1zky", CorpId)))
+
+                        .build(), YDConf.FORM_QUERY.retrieve_search_process).getData();
+
+                //String formInstanceId = data.get("formInstanceId").toString();
+
+
+                if (dataList_bgxx != null && dataList_bgxx.size() > 0) {
+                    for (int i = 0; i < dataList_bgxx.size(); i++) {
+                        Map formdata = dataList_bgxx.get(i);
+                          formdata = (Map) formdata.get("data");
+                        //写入OA
+                        List<Map> formValues = this.retunMap(formdata, DDFromName);////根据表单名称匹配对应的OA字段映射
+                        System.out.println("formValues:" + formValues);
+                        String userId = String.valueOf(formdata.get("textField_m7h960t6"));//发起人UserID
+
+                        Map extInfo = UtilMap.map("dept_id", DDConf.TOP_DEPARTMENT);
+                        //  Map extInfo = UtilMap.map("dept_id", DDConf.TOP_DEPARTMENT);
+                        String processInstanceId = ddClient_workflow.doProcessInstances(this.getAccessToken(AppKey, AppSecret), userId, DDFromID, formValues, extInfo);
+
+                    }
+                }
+
+
+            }
+        }
+
+
+        return McR.success();
+    }
+
+    public String getAccessToken(String AppKey, String AppSecret) {
+        String accessToken = "";
+//        if (StringUtils.isNotBlank(accessToken)) return accessToken;
+        Map param = new HashMap();
+        param.put("appkey", AppKey);
+        param.put("appsecret", AppSecret);
+        DDR r = (DDR) UtilHttp.doGet("https://oapi.dingtalk.com/gettoken", param, DDR.class);
+        log.info("响应token, {}", r.getAccessToken());
+        accessToken = r.getAccessToken();
+        // token失效自动重置: DD重新调用会重置过期时间
+        UtilToken.put("invalid-token-dingtalk", accessToken, r.getExpiresIn() * 1000L);
+        return accessToken;
+    }
+
+    public String retunYDFROMID(String DDFromName) {
+        String retunYDFROMID = "";
+        if (DDFromName.equals("付款申请")) {
+            retunYDFROMID = "FORM-822FDE31D5E149AD9179144C4A8A0010X6HX";
+        }
+        if (DDFromName.equals("费用报销")) {
+            retunYDFROMID = "FORM-C73D2A7BC7FB4114AD3F3053A8D6F7D2FD4A";
+        }
+        if (DDFromName.equals("用章申请")) {
+            retunYDFROMID = "FORM-8CD971E10C57411BB5B1BF02CC25B2E7Q7V5";
+        }
+        if (DDFromName.equals("维修申请")) {
+            retunYDFROMID = "FORM-6424E98828C942A1864AE1882F5C6239CN5J";
+        }
+        if (DDFromName.equals("出差申请")) {
+            retunYDFROMID = "FORM-18599997D2D44B8192945DF5ABDFE6DBRUIZ";
+        }
+        if (DDFromName.equals("请假申请")) {
+            retunYDFROMID = "FORM-DE9CB63A765B4BAF8590B6224736B06EV6CF";
+        }
+        if (DDFromName.equals("合同审批")) {
+            retunYDFROMID = "FORM-3B27A2923B624347822D48827DD27B8750O9";
+        }
+        return retunYDFROMID;
+    }
+
+    public List<Map> retunMap(Map formdata, String DDFromName) {
+        List<Map> formValues = new ArrayList<>();
+        if (DDFromName.equals("付款申请")) {
+            Map ruleForm = new HashMap<>();
+            ruleForm.put("selectField_kifm5he2", "供应商");
+            ruleForm.put("selectField_kifejog7", "合同编号");
+            ruleForm.put("numberField_kifu6j7b", "应付款金额");
+            ruleForm.put("numberField_kifu6j7c", "累计已付金额");
+            ruleForm.put("numberField_kifm5he6", "本次付款金额");
+            ruleForm.put("numberField_kifu6j7i", "剩余金额");
+            ruleForm.put("selectField_kifu6j7d", "付款方式");
+            ruleForm.put("FKSJ", "付款日期");
+            ruleForm.put("selectField_kifvqp9o", "发票情况");
+            ruleForm.put("textField_kifvqp9p", "发票号");
+            ruleForm.put("textareaField_kifnhkh4", "备注");
+            Map ruleDetail = UtilMap.map("tableField_kiela8ug", UtilMap.map("selectField_kir7e0nt, textField_kir7e0nu, textField_kir7e0nv, numberField_kiela8ua, numberField_kir7e0nw, numberField_kifm5he5, numberField_kifu6j7h", "合同编号付款项, 合同付款项, 付款条件, 应付金额, 已付款金额, 本次付款金额, 剩余未付款金额"));
+            ruleForm.put("tableField_kiela8ug", "付款明细");
+            if (!formdata.get("dateField_kifgfgw5").equals("")) {
+                long timestamp = (long) formdata.get("dateField_kifgfgw5"); // 例如:2021-10-01 00:00:00 UTC
+                Instant instant = Instant.ofEpochMilli(timestamp);
+                LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
+                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+                String formattedDate = localDateTime.format(formatter);
+                formdata.put("FKSJ", formattedDate);//付款日期传年月日格式
+            }
+            formValues = DDFormComponentDto.formatComponentValues(formdata, ruleForm, ruleDetail);
+        }
+        if (DDFromName.equals("费用报销")) {
+            Map ruleForm = new HashMap<>();
+            ruleForm.put("textField_m7hhnc3y", "申请人");
+            ruleForm.put("textField_m7hhnc3z", "收款人");
+            ruleForm.put("selectField_lmoighxc", "收款银行");
+            ruleForm.put("textField_lmoighx2", "收款账号");
+            ruleForm.put("numberField_lmoighxm", "报销总金额");
+            ruleForm.put("textareaField_lmoighxr", "备注");
+            Map ruleDetail = UtilMap.map("tableField_lmoighxh", UtilMap.map("selectField_lmoighxi, numberField_lmoighxj, textField_lmoighxl", "报销类别, 报销金额, 报销详细说明"));
+            ruleForm.put("tableField_lmoighxh", "报销明细");
+            formValues = DDFormComponentDto.formatComponentValues(formdata, ruleForm, ruleDetail);
+        }
+        if (DDFromName.equals("用章申请")) {
+            Map ruleForm = new HashMap<>();
+            ruleForm.put("textField_lmoa5kbv", "用章文件名称");
+            ruleForm.put("numberField_lmoa5kbx", "文件份数");
+            ruleForm.put("selectField_lmoa5kbz", "文件类别");
+            ruleForm.put("selectField_lmoa5kc0", "加盖何种印章");
+            ruleForm.put("textField_lmoa5kc1", "印章名称");
+            ruleForm.put("textareaField_lmoa5kc2", "备注");
+
+            formValues = DDFormComponentDto.formatComponentValues(formdata, ruleForm, null);
+        }
+        if (DDFromName.equals("维修申请")) {
+            Map ruleForm = new HashMap<>();
+            if (!formdata.get("dateField_lmo9uy7r").equals("")) {
+                long timestamp = (long) formdata.get("dateField_lmo9uy7r"); // 例如:2021-10-01 00:00:00 UTC
+                Instant instant = Instant.ofEpochMilli(timestamp);
+                LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
+                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+                String formattedDate = localDateTime.format(formatter);
+                formdata.put("BXRQ", formattedDate);//报修日期传年月日格式
+            }
+            ruleForm.put("BXRQ", "报修日期");
+            ruleForm.put("textField_m7iwejtd", "报修设备");
+            ruleForm.put("textField_lmo9uy7t", "设备编号");
+            ruleForm.put("textareaField_lmo9uy7u", "故障描述");
+
+            formValues = DDFormComponentDto.formatComponentValues(formdata, ruleForm, null);
+        }
+        if (DDFromName.equals("出差申请")) {
+            Map ruleForm = new HashMap<>();
+            ruleForm.put("textField_m7iwfo5s", "出差类型");
+            ruleForm.put("textField_m18xg91s", "出差事由");
+            ruleForm.put("textField_m7h98l0c", "出发地");
+            ruleForm.put("textField_m7h98l0d", "目的地");
+            ruleForm.put("textField_m7h81iwu", "客户名称");
+            ruleForm.put("textareaField_m18xg91v", "备注说明");
+
+            formValues = DDFormComponentDto.formatComponentValues(formdata, ruleForm, null);
+        }
+        if (DDFromName.equals("请假申请")) {
+            Map ruleForm = new HashMap<>();
+            ruleForm.put("textField_m7iwhoeb", "请假类别");
+            ruleForm.put("textField_m7hj640c", "开始时间");
+            ruleForm.put("textField_m7hj640d", "结束时间");
+            ruleForm.put("textareaField_kx5ti61t", "请假事由");
+            ruleForm.put("numberField_kx5usnal", "请假时长");
+
+
+            formValues = DDFormComponentDto.formatComponentValues(formdata, ruleForm, null);
+        }
+        if (DDFromName.equals("合同审批")) {
+            Map ruleForm = new HashMap<>();
+            ruleForm.put("textField_m1elynjm", "合同名称");
+            ruleForm.put("textField_m7iwjki4", "合同类型");
+            ruleForm.put("textareaField_m1elynjq", "合同内容概述");
+            ruleForm.put("numberField_m1elynjs", "合同标的");
+            Map ruleDetail = UtilMap.map("pageSection_m1elynjy", UtilMap.map("textField_m7iwjki5, textField_m1elynk2, textField_m1elynka, textField_m1elynkc", "类型, 单位名称, 联系人, 联系方式"));
+            ruleForm.put("pageSection_m1elynjy", "相对方管理");
+            ruleDetail = UtilMap.map("pageSection_m1elynke", UtilMap.map("textField_m7iwjki6, numberField_m1elynkk, textField_m1elynkm", "款项类型, 付款金额, 付款说明"));
+            ruleForm.put("pageSection_m1elynke", "合同付款方式");
+        }
+        return formValues;
+    }
+}

+ 5 - 0
mjava-longyou/src/main/java/com/malk/longyou/server/inst_OA.java

@@ -0,0 +1,5 @@
+package com.malk.longyou.server;
+
+public class inst_OA {
+
+}

+ 65 - 0
mjava-longyou/src/main/resources/application-dev.yml

@@ -0,0 +1,65 @@
+# 环境配置
+server:
+  port: 9001
+  servlet:
+    context-path: /api/longyou
+
+# condition
+spel:
+  scheduling: false        # 定时任务是否执行
+  multiSource: false       # 是否多数据源配置
+
+spring:
+  # database
+  datasource:
+    hikari:
+      connection-init-sql: SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci           # SqlServer, Oracle 无需设置类型
+    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
+    # 主库
+    primary:
+      username: root
+      password: mu123
+      jdbc-url: jdbc:mysql://127.0.0.1:3306/mjava?serverTimezone=Asia/Shanghai&useUnicode=yes&characterEncoding=UTF-8&useSSL=true
+    # 从库
+    slave:
+      username: root
+      password: mu123
+      jdbc-url: jdbc:mysql://127.0.0.1:3306/mjava_slave?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.MySQL57Dialect
+
+# filepath
+file:
+  path:
+    file: /Users/malk/server/_Tool/var/mjava/tmp/file/
+    image: /Users/malk/server/_Tool/var/mjava/tmp/image/
+    tmp: /Users/malk/server/_Tool/var/mjava/tmp/
+  source:
+    fonts: /Users/malk/server/_Tool/fonts/simsun.ttc
+logging:
+  file:
+    path: /Users/malk/server/_Tool/var/mjava/log
+
+# dingtalk
+dingtalk:
+  agentId: 2753454778
+  appKey: dingenx3hbv3cyniukvm
+  appSecret: OhFtEw-Uys4K1uAW9oAVRULPl91rNZgjqG2nXzhfcRdvVA4_AK9aDBMqzDcMW1-i
+  corpId: dingc6aaf57b32e5f80cffe93478753d9884
+  aesKey:
+  token:
+  robotCode:
+  operator: "0953580166-1416321485"   #
+
+# aliwork
+aliwork:
+  appType: APP_I45JU7MQMRRVZ472GS1U
+  systemToken: TG766XB110HDPKPV6HMGMC2IGEOM2STS67KLLS8
+

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

@@ -0,0 +1,39 @@
+# 环境配置
+server:
+  port: 9022
+  servlet:
+    context-path: /api/longyou
+
+# condition
+spel:
+  scheduling: true        # 定时任务是否执行
+  multiSource: false      # 是否多数据源配置
+
+spring:
+  # database
+  datasource:
+    hikari:
+      connection-init-sql: SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci           # SqlServer, Oracle 无需设置类型
+    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
+  jpa:
+    database: MYSQL
+    database-platform: org.hibernate.dialect.MySQL57Dialect
+
+# dingtalk
+dingtalk:
+  agentId: 2753454778
+  appKey: dingenx3hbv3cyniukvm
+  appSecret: OhFtEw-Uys4K1uAW9oAVRULPl91rNZgjqG2nXzhfcRdvVA4_AK9aDBMqzDcMW1-i
+  corpId: dingc6aaf57b32e5f80cffe93478753d9884
+  aesKey:
+  token:
+  robotCode:
+  operator: "0953580166-1416321485"   #  ]
+
+# aliwork
+aliwork:
+  appType: APP_I45JU7MQMRRVZ472GS1U
+  systemToken: TG766XB110HDPKPV6HMGMC2IGEOM2STS67KLLS8

File diff suppressed because it is too large
+ 1435 - 407
mjava-luyi/src/main/java/com/malk/luyi/controller/KSJCController.java


+ 241 - 12
mjava-luyi/src/main/java/com/malk/luyi/controller/KSJC_timer.java

@@ -15,9 +15,9 @@ import org.springframework.context.annotation.Configuration;
 import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.scheduling.annotation.Scheduled;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
+import java.time.*;
+import java.time.temporal.ChronoUnit;
+import java.util.*;
 
 @Slf4j
 @Configuration
@@ -27,22 +27,251 @@ public class KSJC_timer {
     private KSJCController legalEntityService;
     @Autowired
     private YDClient ydClient;
+
+
     /*集晨判断是否能打卡*/
     //每天早晨7点05分同步数据
- //@Scheduled(cron = "0 5 7 * * ?")
- // @Scheduled(fixedRate = 500)
-    public void LegalEntityList(){
-        log.info("k");
-      System.out.println("开始同步");
-        try{
-            legalEntityService.insetTHXM_TMER();
-             System.out.println("集晨判断,同步完成");
-        }catch (Exception e){
+    @Scheduled(cron = "0 5 7 * * ?")
+    // @Scheduled(fixedRate = 500)
+    public void LegalEntityList() {
+        if (true) {
+            log.info("k");
+            System.out.println("考勤判断开始同步");
+            try {
+                legalEntityService.insetTHXM_TMER();
+                System.out.println("集晨考勤判断,同步完成");
+            } catch (Exception e) {
+                //记录错误信息
+                e.printStackTrace();
+            }
+        }
+    }
+
+    /**
+     * 每天8点半  根据项目给项目人员发送待办
+     */
+   @Scheduled(cron = "0 30 8 * * ?")
+     //@Scheduled(fixedRate = 100)
+    public void create_DB() {
+        if (true) {
+            System.out.println("开始根据项目给项目人员发送待办");
+            try {
+                legalEntityService.create_DB();
+                System.out.println("根据项目给项目人员发送待办,同步完成");
+            } catch (Exception e) {
+                //记录错误信息
+                e.printStackTrace();
+            }
+        }
+    }
+
+
+    /**
+     * 每小时累计异常工时和正常工时
+     */
+    @Scheduled(fixedRate = 1000 * 60 * 60)
+    public void updatiemr() {
+        if (true){
+
+        System.out.println("同步判断异常数据区间");
+        try {
+            LocalDateTime currentTime = LocalDateTime.now();
+            // 获取小时数(24小时制)
+            int hour = currentTime.getHour();
+            if (hour == 20 || hour == 21 || hour == 22 || hour == 23 || hour == 24 || hour == 0 || hour == 1 || hour == 2 || hour == 3 || hour == 4 || hour == 5 || hour == 6 || hour == 7) {
+                // List<Map> searchCondition = Arrays.asList(YDConf.searchCondition_TextFiled("textField_m4v6nphm", "进行中", "eq"));
+                List<Map> dataList_bgxx = (List<Map>) ydClient.queryData(YDParam.builder()
+                        .appType("APP_X89Y00KKTG36B8JYGZVR")
+                        .systemToken("QIA66091HJPLRHM3AUFJLCN24CUP2VNMO41XLW4")
+                        .formUuid("FORM-C3B8A99E31FD42AC8AFFE0343A6A3CF3LUH7")
+                        .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_m4v6nphm", "进行中")))
+                        .build(), YDConf.FORM_QUERY.retrieve_search_form).getData();
+
+                if (dataList_bgxx != null && dataList_bgxx.size() > 0) {
+                    for (int i = 0; i < dataList_bgxx.size(); i++) {
+                        try {
+                            Map map = new HashMap<>();
+                            map = dataList_bgxx.get(i);
+                            if (map != null) {
+                                String formInstanceId = (String) map.get("formInstanceId");
+                                Map formData = (Map) JSON.parse(String.valueOf(map.get("formData")));
+                                int pd = (int) formData.get("numberField_m4rt0yry");
+                                int yy = (int) formData.get("numberField_m4v7v0ou");
+                                ydClient.operateData(YDParam.builder()
+                                        .appType("APP_X89Y00KKTG36B8JYGZVR")
+                                        .systemToken("QIA66091HJPLRHM3AUFJLCN24CUP2VNMO41XLW4")
+                                        .formInstanceId(String.valueOf(formInstanceId))
+                                        .updateFormDataJson(JSON.toJSONString(UtilMap.map("numberField_m4rt0yry", pd + 1)))
+                                        .build(), YDConf.FORM_OPERATION.update);
+                            }
+                        } catch (Exception e) {
+
+                        }
+
+
+                    }
+                }
+
+            }
+            if (true) {
+
+                // List<Map> searchCondition = Arrays.asList(YDConf.searchCondition_TextFiled("textField_m4v6nphm", "进行中", "eq"));
+                List<Map> dataList_bgxx = (List<Map>) ydClient.queryData(YDParam.builder()
+                        .appType("APP_X89Y00KKTG36B8JYGZVR")
+                        .systemToken("QIA66091HJPLRHM3AUFJLCN24CUP2VNMO41XLW4")
+                        .formUuid("FORM-C3B8A99E31FD42AC8AFFE0343A6A3CF3LUH7")
+                        .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_m4v6nphm", "进行中")))
+                        .build(), YDConf.FORM_QUERY.retrieve_search_form).getData();
+                if (dataList_bgxx != null && dataList_bgxx.size() > 0) {
+                    for (int i = 0; i < dataList_bgxx.size(); i++) {
+                        try {
+                            Map map = new HashMap<>();
+                            map = dataList_bgxx.get(i);
+                            if (map != null) {
+                                String formInstanceId = (String) map.get("formInstanceId");
+                                Map formData = (Map) JSON.parse(String.valueOf(map.get("formData")));
+                                int yy = (int) formData.get("numberField_m4v7v0ou");
+                                ydClient.operateData(YDParam.builder()
+                                        .appType("APP_X89Y00KKTG36B8JYGZVR")
+                                        .systemToken("QIA66091HJPLRHM3AUFJLCN24CUP2VNMO41XLW4")
+                                        .formInstanceId(String.valueOf(formInstanceId))
+                                        .updateFormDataJson(JSON.toJSONString(UtilMap.map("numberField_m4v7v0ou", yy + 1)))
+                                        .build(), YDConf.FORM_OPERATION.update);
+                            }
+                        } catch (Exception e) {
+
+                        }
+                    }
+                }
+            }
+            System.out.println("同步判断异常数据区间结束");
+        } catch (Exception e) {
             //记录错误信息
             e.printStackTrace();
         }
+        }
     }
 
+    /**
+     * 每天8点更改项目进度天数
+     */
+  @Scheduled(cron = "0 0 8 * * ?")
+    //@Scheduled(fixedRate = 1000)
+    public void updateGS_day() {
+      if (true) {
+          log.info("k");
+          System.out.println("开始--同步更改项目进度天数");
+          try {
+              long currentTimestamp = System.currentTimeMillis();//当前时间戳
+              List<Map> dataList_bgxx = (List<Map>) ydClient.queryData(YDParam.builder()
+                      .appType("APP_X89Y00KKTG36B8JYGZVR")
+                      .systemToken("QIA66091HJPLRHM3AUFJLCN24CUP2VNMO41XLW4")
+                      .formUuid("FORM-0DA535E7D9564265B9A85A503AF0041EN39H")
+                      .build(), YDConf.FORM_QUERY.retrieve_search_form).getData();
+              if (dataList_bgxx != null && dataList_bgxx.size() > 0) {
+                  for (int i = 0; i < dataList_bgxx.size(); i++) {
+                      try {
+                          Map map = new HashMap<>();
+                          map = dataList_bgxx.get(i);
+                          if (map != null) {
+                              String formInstanceId = (String) map.get("formInstanceId");
+                              Map formData = (Map) JSON.parse(String.valueOf(map.get("formData")));
+                              Long XMCJSJ = (Long) formData.get("dateField_m2a4epem");
+                              Long SJXBOM = (Long) formData.get("dateField_m2a4o7j8");
+                              Long DQXBOM = (Long) formData.get("dateField_m2bmqgdf");
+                              Long WLRK = (Long) formData.get("dateField_m2a4o7ja");
+                              Long ZZQRWC = (Long) formData.get("dateField_m2a4o7j9");
+                              Long PJWC = (Long) formData.get("dateField_m2a4o7jb");
+                              Long XCDW = (Long) formData.get("dateField_m2a4o7je");
+                              Long YSWC = (Long) formData.get("dateField_m2a4o7jd");
+                              int numberField_m4v8pnva = 0;
+                              int numberField_m4v8pnvb = 0;
+                              int numberField_m4v8pnvc = 0;
+                              int numberField_m2a4o7jm = 0;
+                              int numberField_m2bb9qyh = 0;
+                              int numberField_m2bb9qyi = 0;
+
+                              if (XMCJSJ != null && SJXBOM != null) {
+                                  numberField_m4v8pnva = (int) getDys(XMCJSJ, SJXBOM);
+                              } else if (XMCJSJ != null && SJXBOM == null) {
+                                  numberField_m4v8pnva = (int) getDys(XMCJSJ, currentTimestamp);
+                              }
+                              if (WLRK != null && SJXBOM != null) {
+                                  numberField_m4v8pnvb = (int) getDys(SJXBOM, WLRK);
+                              } else if (WLRK == null && SJXBOM != null) {
+                                  numberField_m4v8pnvb = (int) getDys(SJXBOM, currentTimestamp);
+                              }
+                              if (ZZQRWC != null && WLRK != null) {
+                                  numberField_m4v8pnvc = (int) getDys(WLRK, ZZQRWC);
+                                  numberField_m2a4o7jm = (int) getDys(WLRK, ZZQRWC);
+                              } else if (ZZQRWC == null && WLRK != null) {
+                                  numberField_m4v8pnvc = (int) getDys(WLRK, currentTimestamp);
+                                  numberField_m2a4o7jm = (int) getDys(WLRK, currentTimestamp);
+                              }
+                              if (PJWC != null && ZZQRWC != null) {
+                                  numberField_m2bb9qyh = (int) getDys(ZZQRWC, PJWC);
+                              } else if (PJWC == null && ZZQRWC != null) {
+                                  numberField_m2bb9qyh = (int) getDys(ZZQRWC, currentTimestamp);
+                              }
+                              if (YSWC != null && XCDW != null) {
+                                  numberField_m2bb9qyh = (int) getDys(XCDW, YSWC);
+                              } else if (YSWC == null && XCDW != null) {
+                                  numberField_m2bb9qyh = (int) getDys(XCDW, currentTimestamp);
+                              }
+                              ydClient.operateData(YDParam.builder()
+                                      .appType("APP_X89Y00KKTG36B8JYGZVR")
+                                      .systemToken("QIA66091HJPLRHM3AUFJLCN24CUP2VNMO41XLW4")
+                                      .formInstanceId(String.valueOf(formInstanceId))
+                                      .updateFormDataJson(JSON.toJSONString(UtilMap.map("numberField_m4v8pnva, numberField_m4v8pnvb, numberField_m4v8pnvc, numberField_m2a4o7jm, numberField_m2bb9qyh, numberField_m2bb9qyi", numberField_m4v8pnva, numberField_m4v8pnvb, numberField_m4v8pnvc, numberField_m2a4o7jm, numberField_m2bb9qyh, numberField_m2bb9qyi)))
+                                      .build(), YDConf.FORM_OPERATION.update);
+                          }
+                      } catch (Exception e) {
+
+                      }
+
+
+                  }
+              }
+
+              System.out.println("同步更改项目进度天数---结束");
+          } catch (Exception e) {
+              //记录错误信息
+              e.printStackTrace();
+          }
+      }
+    }
+
+
+
+
+
+
+
+
+
+
+    /**
+     * 计算两个时间段的差值天数
+     * @param timestamp1
+     * @param timestamp2
+     * @return
+     */
+    public long getDys(long timestamp1, long timestamp2) {
+
+
+        // 将时间戳转换为Instant对象
+        Instant instant1 = Instant.ofEpochMilli(timestamp1);
+        Instant instant2 = Instant.ofEpochMilli(timestamp2);
+
+        // 将Instant对象转换为LocalDate对象(需要指定时区)
+        // 这里使用UTC时区,因为时间戳通常是基于UTC的
+        LocalDate date1 = instant1.atZone(ZoneId.of("UTC")).toLocalDate();
+        LocalDate date2 = instant2.atZone(ZoneId.of("UTC")).toLocalDate();
+
+        // 计算天数差值
+        long daysBetween = ChronoUnit.DAYS.between(date1, date2);
+        return daysBetween + 1;
+    }
 
 
     //    @Scheduled(cron = "0 5 7 * * ?")

+ 1 - 0
pom.xml

@@ -31,6 +31,7 @@
         <module>mjava-dongfangxinhua</module>
         <module>mjava-aiwei</module>
         <module>mjava-lemeng</module>
+        <module>mjava-longyou</module>
     </modules>
     <packaging>pom</packaging>