Przeglądaj źródła

定时删除账龄表重复uuid
每月16号定时更新项目点档案子表字段产值预估

fyz 4 miesięcy temu
rodzic
commit
044aa7416e

+ 25 - 2
mjava-lanyun/src/main/java/com/malk/lanyun/schedule/ScheduleTask.java

@@ -36,10 +36,19 @@ public class ScheduleTask {
      */
     @Scheduled(cron = "0 0 1 1 * ?")
     public void syncDingTalkFailedList() {
-
         timerService.updateYuedudinge();
         log.info("定时方法执行时间 :" + new Date());
     }
+
+    /**
+     * 每月16日凌晨1点自动执行更新项目点档案子表产值预估
+     */
+    @Scheduled(cron = "0 0 0 16 * ?")
+    public void updateOutputPredict() {
+        timerService.updateOutputPredict();
+        log.info("定时方法执行时间 :" + new Date());
+    }
+
     /**
      * 每月1日凌晨0点自动执行更新业主产值每月累计
      */
@@ -133,12 +142,26 @@ public class ScheduleTask {
     }
 
     /**
-     * 每天晚上22点全量同步账龄表
+     * 每2小时全量同步账龄表
      */
     @Scheduled(cron = "0 0 0/2 * * ?")
     void syncAgingTask(){
         log.info("全量同步账龄表");
         fService.syncAgingSchedule();
+        try {
+            Thread.sleep(3000);
+        } catch (InterruptedException e) {
+            throw new RuntimeException(e);
+        }
+        syncDeleteAgingTask();
     }
 
+    /**
+     * 每2小时15分删除账龄表重复uuid
+     */
+//    @Scheduled(cron = "0 15 0/2 * * ?")
+    private void syncDeleteAgingTask(){
+        log.info("删除账龄表重复uuid");
+        fService.syncDeleteAgingTask();
+    }
 }

+ 4 - 5
mjava-lanyun/src/main/java/com/malk/lanyun/service/FService.java

@@ -1,8 +1,5 @@
 package com.malk.lanyun.service;
 
-import com.malk.server.common.McR;
-import org.springframework.web.bind.annotation.GetMapping;
-
 /**
  * 财务账龄表\催款函
  */
@@ -11,10 +8,12 @@ public interface FService {
     /**
      * 蓝云, 全量同步账龄表
      */
-     void syncAgingSchedule();
+    void syncAgingSchedule();
 
     /**
      * 蓝云, 同步催款函
      */
-     void syncCallLetters();
+    void syncCallLetters();
+
+    void syncDeleteAgingTask();
 }

+ 3 - 1
mjava-lanyun/src/main/java/com/malk/lanyun/service/TimerService.java

@@ -85,7 +85,7 @@ public interface TimerService {
 
     /**
      * 项目点档案点编辑保存后,更新是否补充字段为是
-     * @param data
+     * @param data 传参
      */
     void updateIsSupply(Map data);
 
@@ -114,4 +114,6 @@ public interface TimerService {
     Map<String, Object> testProjectAnalysisGroup(Map<String, Object> data);
 
     void getProject(String formInstId, String projectCode, String monthAmount);
+
+    void updateOutputPredict();
 }

+ 23 - 5
mjava-lanyun/src/main/java/com/malk/lanyun/service/impl/FImplService.java

@@ -1,11 +1,9 @@
 package com.malk.lanyun.service.impl;
 
-import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSON;
 import com.malk.lanyun.service.FService;
 import com.malk.server.aliwork.YDConf;
 import com.malk.server.aliwork.YDParam;
-import com.malk.server.common.McR;
 import com.malk.service.aliwork.YDClient;
 import com.malk.service.aliwork.YDService;
 import com.malk.utils.UtilDateTime;
@@ -15,7 +13,6 @@ import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.web.bind.annotation.GetMapping;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -24,8 +21,8 @@ import java.util.stream.Collectors;
 @Slf4j
 public class FImplService implements FService {
 
-@Autowired
-private YDService ydService;
+    @Autowired
+    private YDService ydService;
 
     @Autowired
     private YDClient ydClient;
@@ -117,6 +114,27 @@ private YDService ydService;
         }
     }
 
+    @Override
+    public void syncDeleteAgingTask() {
+        List<Map> dataList = ydService.queryFormData_all(_initLYParam()
+                .formUuid("FORM-EC785A5AB2B9432C892062823EB7C62A9NTL")
+//                .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_lvdosccc", "KP_2024120201435")))
+                .build());
+        Map<Object, List<Map>> dataStream = dataList.stream().collect(Collectors.groupingBy(map -> map.get("textField_m5297e3q")));
+        dataStream.forEach((k,v)->{
+            if (v.size()>1){
+                for (int i = v.size() - 1; i > 0; i--) {
+                    ydClient.operateData(_initLYParam()
+//                            .searchCondition(JSON.toJSONString(searchCondition))
+                            .formUuid("FORM-EC785A5AB2B9432C892062823EB7C62A9NTL")
+//                            .formDataJson(JSON.toJSONString(dataForm))
+                            .formInstanceId(v.get(i).get("formInstId").toString())
+                            .build(), YDConf.FORM_OPERATION.delete);
+                }
+            }
+        });
+    }
+
 
     /**
      * 蓝云, 全量同步账龄表 [todo 后续可调整为同步前一天更新数据]

+ 1 - 1
mjava-lanyun/src/main/java/com/malk/lanyun/service/impl/NCServiceImpl.java

@@ -825,7 +825,7 @@ public class NCServiceImpl implements NCService {
                 if (!tableList.isEmpty()){
                     tableList.forEach(t->{
                         double open = "".equals(t.get("numberField_lrru2to2_value")) ? 0.0: Double.parseDouble(t.get("numberField_lrru2to2_value").toString());
-                        double income = "".equals(t.get("numberField_lrru2to2_value"))  || "0".equals(t.get("numberField_lrru2to2_value"))? Double.parseDouble("".equals(t.get("numberField_lryopn7o_value")) ?"0.0":t.get("numberField_lryopn7o_value").toString()) : open;
+                        double income = open == 0.0 ? Double.parseDouble("".equals(t.get("numberField_lryopn7o_value")) ?"0.0":t.get("numberField_lryopn7o_value").toString()) : open;
                         sum[7] = sum[7] + income;
                         sum[8] = sum[8] +open;
                     });

+ 80 - 5
mjava-lanyun/src/main/java/com/malk/lanyun/service/impl/TimerServiceImpl.java

@@ -17,10 +17,8 @@ import com.malk.service.dingtalk.DDClient_Personnel;
 import com.malk.utils.UtilDateTime;
 import com.malk.utils.UtilExcel;
 import com.malk.utils.UtilMap;
-import com.mysql.cj.util.StringUtils;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.poi.util.StringUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.jdbc.core.JdbcTemplate;
@@ -1173,9 +1171,9 @@ public class TimerServiceImpl implements TimerService {
                                 .formUuid("FORM-84AFCA01E1C24216BD46DC13FB3A82D4B4ZB")
                                 .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_ltxqbvzu, selectField_ltxy8wyr, selectField_ltxqfrj8", code,"启用",area)))
                                 .build());
-                            if (businessList.size()>=2){
-                                businessList = businessList.stream().filter(map -> map.get("textField_ludp2v7i") != "临时采购").collect(Collectors.toList());
-                            }
+                        if (businessList.size()>=2){
+                            businessList = businessList.stream().filter(map -> map.get("textField_ludp2v7i") != "临时采购").collect(Collectors.toList());
+                        }
                         System.out.println(businessList.size());
                         if(ObjectUtil.isNotNull(businessList)){
                             if (ObjectUtil.isNotNull(businessList.get(0).get("numberField_ltxqbvzz"))){
@@ -1419,4 +1417,81 @@ public class TimerServiceImpl implements TimerService {
                 .updateFormDataJson(JSON.toJSONString(UtilMap.map("numberField_m3dvrmfd, numberField_m3dvrmfe, numberField_m3dvrmff, numberField_m3dvrmfg", rg, wh, rgRate, whRate)))
                 .build(), YDConf.FORM_OPERATION.update);
     }
+
+    @Override
+    public void updateOutputPredict() {
+        //获取上月时间戳
+        long lastMonth = DateUtil.beginOfMonth(DateUtil.lastMonth()).getTime();
+        List<Map> dataList = ydService.queryFormData_all(YDParam.builder()
+                .appType("APP_ERBDTFS82HOVBPL3NFH0")
+                .systemToken("RRB66F91T97H1WN89QZYC47PKLZO2ZQOUMOQLP")
+                .formUuid("FORM-97BA6C6C8C50416A9E5854F2F4B5C3F3R4WC")
+//                .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_lrr3rg6h", "XM00345")))
+                .build());
+        log.info("项目点数据, {}", dataList.size());
+        dataList.forEach(formData -> {
+            //获取撤场时间
+            Long withdrawalTime = formData.get("dateField_lzaqu26p")==null?null:DateUtil.beginOfMonth(DateUtil.date(Long.parseLong(formData.get("dateField_lzaqu26p").toString()))).getTime();
+            if (UtilMap.getString(formData, "selectField_lrn2oy4a").equals("进行中") || (ObjectUtil.isNotNull(withdrawalTime) && lastMonth == withdrawalTime)){
+                List<Map> details = UtilMap.getList(formData, "tableField_lrru2tnq");
+//            details = details.stream().filter(item -> UtilMap.isNotBlankString(item, "dateField_lrru2tnr")).collect(Collectors.toList());
+                // 数据格式化
+//            details.forEach(row -> {
+//                row.put("textField_luh0k82j", UtilDateTime.format(new Date(UtilMap.getLong(row, "dateField_lrru2tnr")), "yyyy-MM"));
+//            }
+//            });
+//            Collections.sort(details, Comparator.comparingLong(o -> UtilMap.getLong(o, "dateField_lrru2tnr")));
+
+                // 查找当月数据
+                LocalDateTime currentDate = UtilDateTime.firstDayOfLastMonth(LocalDateTime.now());
+//            LocalDateTime currentDate = UtilDateTime.parseLocalDateTime("2024-07-01 00:00:00");
+
+                try {
+                    Optional optional = details.stream().filter(item -> UtilDateTime.getLocalDateTimeTimeStamp(currentDate) == UtilMap.getLong(item, "dateField_lrru2tnr")).findAny();
+                    log.info("上个月数据, {}, {}", currentDate, optional);
+                    if (!optional.isPresent() || UtilMap.getFloat((Map) optional.get(), "numberField_lrru2tnz") != 0f) {
+                        return;
+                    }
+
+//                    LocalDateTime lastMonthDate = UtilDateTime.firstDayOfLastMonth(currentDate);
+////            LocalDateTime lastMonthDate = UtilDateTime.parseLocalDateTime("2024-06-01 00:00:00");
+                    Map currentRow = (Map) optional.get();
+//                    optional = details.stream().filter(item -> UtilDateTime.getLocalDateTimeTimeStamp(lastMonthDate) == UtilMap.getLong(item, "dateField_lrru2tnr")).findAny();
+//                    log.info("上上月数据, {}, {}", lastMonthDate, optional);
+//
+//                    float price = 0f;
+//                    if (!optional.isPresent() || UtilMap.getFloat((Map) optional.get(), "numberField_lrru2tnz") == 0f) {
+//                        price = UtilMap.getFloat(currentRow, "numberField_lrru2tns");
+//                        currentRow.put("numberField_lrru2tnz", price); // 取本月收入定额
+//                    } else {
+//                        price = UtilMap.getFloat((Map) optional.get(), "numberField_lrru2tnz");
+//                        currentRow.put("numberField_lrru2tnz", price); // 取上月收入预估
+//                    }
+                    float open = UtilMap.getFloat(currentRow, "numberField_lryopn7o");
+                    if (ObjectUtil.isNotNull(currentRow.get("numberField_lrru2to2")) && UtilMap.getFloat(currentRow, "numberField_lrru2to2") > 0){
+                        open = UtilMap.getFloat(currentRow, "numberField_lrru2to2");
+                    }
+                    //明细合计
+                    currentRow.put("numberField_m1hhyqiv", open + UtilMap.getFloat(currentRow, "numberField_m5uf580r"));
+
+//                    price += UtilMap.getFloat(formData, "numberField_lutjev0u");
+//                    log.info("price, {}", price);
+
+//                    System.out.println("更新内容:" + JSON.toJSONString(UtilMap.map("tableField_lrru2tnq, numberField_lutjev0u", details, price)));
+                    // 合计初始化
+//            price = details.stream().map(item -> UtilMap.getFloat(item, "numberField_lrru2tnz")).collect(Collectors.toList()).stream().reduce(0f, (acc, cur) -> acc + cur);
+                    ydClient.operateData(YDParam.builder()
+                            .appType("APP_ERBDTFS82HOVBPL3NFH0")
+                            .systemToken("RRB66F91T97H1WN89QZYC47PKLZO2ZQOUMOQLP")
+                            .formInstanceId(UtilMap.getString(formData, "formInstanceId"))
+//                    .useLatestVersion(true)
+                            .updateFormDataJson(JSON.toJSONString(UtilMap.map("tableField_lrru2tnq", details)))
+                            .build(), YDConf.FORM_OPERATION.update);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        });
+
+    }
 }