Pārlūkot izejas kodu

项目点档案每周出库情况定时任务跑批更新

fyz 8 mēneši atpakaļ
vecāks
revīzija
141102de48

+ 11 - 4
mjava-lanyun/src/main/java/com/malk/lanyun/schedule/ScheduleTask.java

@@ -27,7 +27,7 @@ public class ScheduleTask {
     @Autowired
     private SyncAssetsService syncAssetsService;
     /**
-     * 每月1日凌晨2点自动执行
+     * 每月1日凌晨1点自动执行
      */
     @Scheduled(cron = "0 0 1 1 * ?")
     public void syncDingTalkFailedList() {
@@ -36,7 +36,7 @@ public class ScheduleTask {
         log.info("定时方法执行时间 :" + new Date());
     }
     /**
-     * 每月1日凌晨1点自动执行更新业主产值每月累计
+     * 每月1日凌晨0点自动执行更新业主产值每月累计
      */
     @Scheduled(cron = "0 0 0 1 * ?")
     public void bigOwnerOutPut() {
@@ -56,7 +56,7 @@ public class ScheduleTask {
     /**
      * 各项目经营分析每月1日上午4点自动插入数据库
      */
-    @Scheduled(cron = "0 0 2 1 * ?")
+    @Scheduled(cron = "0 0 4 1 * ?")
     void insertAnalysisList(){
         timerService.insertAnalysisList();
     }
@@ -102,6 +102,13 @@ public class ScheduleTask {
 
     }
 
-
+    /**
+     * 每日凌晨0点30自动执行更新项目点档案本周出库情况
+     */
+    @Scheduled(cron = "0 30 0 * * ?")
+    public void projectUnshippedTask() {
+        timerService.projectUnshipped();
+        log.info("项目点档案本周出库情况执行时间 :" + new Date());
+    }
 
 }

+ 5 - 0
mjava-lanyun/src/main/java/com/malk/lanyun/service/TimerService.java

@@ -71,4 +71,9 @@ public interface TimerService {
      * @param nowCost 本次物耗
      */
     void updateMaterialProject(String projectCode, String date, Double firstCost, Double nowCost, int type);
+
+    /**
+     * 定时更新本周未出库项目数
+     */
+    void projectUnshipped();
 }

+ 75 - 4
mjava-lanyun/src/main/java/com/malk/lanyun/service/impl/TimerServiceImpl.java

@@ -31,6 +31,9 @@ import java.sql.PreparedStatement;
 import java.text.DecimalFormat;
 import java.time.LocalDateTime;
 import java.util.*;
+import java.util.stream.Collectors;
+
+import static java.lang.Integer.parseInt;
 
 
 @Service
@@ -308,7 +311,7 @@ public class TimerServiceImpl implements TimerService {
                 "发票寄送地址:上海市宝山区双城路803弄宝莲城9号楼27层\n" +
                 "联系人:浦水菊  联系电话:60671366  转 828";
         dataMain.put("text",text);
-        int numSum = dataList.stream().mapToInt(e -> e.get("numberField_ltxyt75z").toString().equals("") ? 0 : Integer.parseInt(e.get("numberField_ltxyt75z").toString())).sum();
+        int numSum = dataList.stream().mapToInt(e -> e.get("numberField_ltxyt75z").toString().equals("") ? 0 : parseInt(e.get("numberField_ltxyt75z").toString())).sum();
         Double sumTotal = dataList.stream().mapToDouble(e -> e.get("numberField_ltxyt764").toString().equals("") ? 0 : Double.parseDouble(e.get("numberField_ltxyt764").toString())).sum();
         dataMain.put("num_sum",String.valueOf(numSum));
         dataMain.put("sum_total",String.valueOf(sumTotal));
@@ -366,8 +369,8 @@ public class TimerServiceImpl implements TimerService {
     public  Map<String, Object> projectAnalysisGroup(Map<String, Object> data){
         final String[] sql = {"","","","","",""};
         /*分页*/
-        int pageStart = (Integer.parseInt(data.get("page").toString()) - 1) * (Integer.parseInt(data.get("num").toString())-1);
-        int pageSize = Integer.parseInt(data.get("num").toString()) - 1;
+        int pageStart = (parseInt(data.get("page").toString()) - 1) * (parseInt(data.get("num").toString())-1);
+        int pageSize = parseInt(data.get("num").toString()) - 1;
         log.info("pageStart:{}",pageStart);
         log.info("pageEnd:{}",pageSize);
         data.remove("page");
@@ -528,7 +531,7 @@ public class TimerServiceImpl implements TimerService {
         List<Map<String, Object>> result = jdbcTemplate.queryForList(sql[2]);
         int totalCount = 0;
         if (result.size() >0) {
-            totalCount = Integer.parseInt(result.get(0).get("total_count").toString());
+            totalCount = parseInt(result.get(0).get("total_count").toString());
         }
         List<Map<String, Object>> projects = jdbcTemplate.queryForList(sql[3]);
         projects.get(0).forEach((k,v)->{
@@ -775,4 +778,72 @@ public class TimerServiceImpl implements TimerService {
                     .build(), YDConf.FORM_OPERATION.update);
         });
     }
+
+    @Override
+    public void projectUnshipped() {
+//无需出库项目
+        List<Map> materialList = ydService.queryFormData_all(YDParam.builder()
+                .appType("APP_ERBDTFS82HOVBPL3NFH0")
+                .systemToken("RRB66F91T97H1WN89QZYC47PKLZO2ZQOUMOQLP")
+                .formUuid("FORM-38649DA9003B48F4A7DC476122E4D6C1JNKU")
+                .build());
+        List<Map<String,Object>> result = new ArrayList<>();
+        Map<String, List<Map>> codeList = materialList.stream().collect(Collectors.groupingBy(map -> map.get("textField_ltxutdfi").toString()));
+        codeList.forEach((k,sList)->{
+            Map<String, Object> hashMap = new HashMap<>();
+            IntSummaryStatistics sum = sList.stream().collect(Collectors.summarizingInt(e -> parseInt(e.get("numberField_lu24bwd0").toString())));
+            if (sum.getSum() == 0){
+                hashMap.put("code",sList.get(0).get("textField_ltxutdfi"));
+                hashMap.put("sum",sum.getSum());
+                result.add(hashMap);
+            }
+        });
+        List<Map<String,Object>> noNeedResult = result;
+        //本周已出库项目
+        long beginWeek = DateUtil.beginOfWeek(DateUtil.date()).getTime();
+        long endWeek = DateUtil.endOfWeek(DateUtil.date()).getTime();
+        String[] dateList = new String[2];
+        dateList[0] = String.valueOf(beginWeek);
+        dateList[1] = String.valueOf(endWeek);
+        List<Map> alredyList = ydService.queryFormData_all(YDParam.builder()
+                .appType("APP_ERBDTFS82HOVBPL3NFH0")
+                .systemToken("RRB66F91T97H1WN89QZYC47PKLZO2ZQOUMOQLP")
+                .formUuid("FORM-38649DA9003B48F4A7DC476122E4D6C1JNKU")
+                .searchFieldJson(JSON.toJSONString(UtilMap.map("dateField_lvvthng6", (Object) dateList)))
+                .build());
+        if (alredyList.size()>0 && ObjectUtil.isNotNull(alredyList)){
+            alredyList = alredyList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() ->
+                    new TreeSet<>(Comparator.comparing(o-> o.get("textField_ltxutdfi").toString()))), ArrayList::new));
+
+            //合并无需出库项目和本周已出库项目
+            alredyList.forEach(o->{
+                HashMap<String, Object> map = new HashMap<>();
+                map.put("code",o.get("textField_ltxutdfi"));
+                noNeedResult.add(map);
+            });
+        }
+        //处理数据
+        List<Map> allProjectList = ydService.queryFormData_all(YDParam.builder()
+                .appType("APP_ERBDTFS82HOVBPL3NFH0")
+                .systemToken("RRB66F91T97H1WN89QZYC47PKLZO2ZQOUMOQLP")
+                .formUuid("FORM-97BA6C6C8C50416A9E5854F2F4B5C3F3R4WC")
+                .build());
+        allProjectList.forEach(e->{
+            System.out.println(e.toString());
+            int status = 1;
+            for (int i = 0; i < noNeedResult.size(); i++) {
+                if (e.get("textField_ltxrn8h1").equals(noNeedResult.get(i).get("code"))){
+                    status = 0;
+                    noNeedResult.remove(i);
+                    break;
+                }
+            }
+            ydClient.operateData(YDParam.builder()
+                    .appType("APP_ERBDTFS82HOVBPL3NFH0")
+                    .systemToken("RRB66F91T97H1WN89QZYC47PKLZO2ZQOUMOQLP")
+                    .formInstanceId(e.get("formInstanceId").toString())
+                    .updateFormDataJson(JSON.toJSONString(UtilMap.map("numberField_m230rjg5",status)))
+                    .build(), YDConf.FORM_OPERATION.update);
+        });
+    }
 }