Bläddra i källkod

feat:something

shc 6 månader sedan
förälder
incheckning
36b6fd13a3

+ 161 - 67
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/InitController.java

@@ -29,6 +29,7 @@ import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskType;
 import com.qunzhixinxi.hnqz.admin.api.model.excel.TaskCheckExcelModel;
 import com.qunzhixinxi.hnqz.admin.api.model.excel.WmTaskDupModel;
 import com.qunzhixinxi.hnqz.admin.event.PackageContractEvent;
+import com.qunzhixinxi.hnqz.admin.mapper.InitMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.SysDeptMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.SysDeptRelationMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.WmDaAgentMapper;
@@ -73,6 +74,7 @@ import java.util.LinkedHashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import java.util.Set;
 import java.util.function.Function;
 import java.util.stream.Collectors;
@@ -92,6 +94,7 @@ import static org.bouncycastle.asn1.x500.style.RFC4519Style.o;
 @RequestMapping(value = "/init", produces = MediaType.APPLICATION_JSON_VALUE)
 public class InitController {
 
+    private final InitMapper initMapper;
     private final WmTaskContentService taskContentService;
     private final WmTaskService taskService;
     private final SysLogService logService;
@@ -853,62 +856,147 @@ public class InitController {
                 // 按节点分组
                 Map<Integer, List<SysCheckChainNodeCheckHistory>> nodeId2HisMap = sysCheckChainNodeCheckHistories.stream().collect(Collectors.groupingBy(SysCheckChainNodeCheckHistory::getNodeId));
 
-                // 判断地市 node=2
-                List<SysCheckChainNodeCheckHistory> cityCheckHis = nodeId2HisMap.get(2);
-                Map<String, Object> cityCheck = getCheckData(cityCheckHis, task, endTime);
-                cityUnfinishedCount += (int) cityCheck.get("count");
-                cityUnfinishedTime += (long) cityCheck.get("time");
-                boolean prvFlag = (boolean) cityCheck.get("nextFlag");
-
-                // 继续判断区域 node=3
-                if (prvFlag) {
-                    List<SysCheckChainNodeCheckHistory> provCheckHis = nodeId2HisMap.get(3);
-                    Map<String, Object> provCheck = getCheckData(provCheckHis, task, endTime);
-                    provUnfinishedCount += (int) provCheck.get("count");
-                    provUnfinishedTime += (long) provCheck.get("time");
-                    boolean bizDeptFlag = (boolean) provCheck.get("nextFlag");
-
-                    // 判断事业部 node=4
-                    if (bizDeptFlag) {
-                        List<SysCheckChainNodeCheckHistory> bizDeptHis = nodeId2HisMap.get(4);
-
-                        // 市场组和商务组都没有审核
-                        if (CollUtil.isNotEmpty(bizDeptHis)) {
-
-                            deptUnfinishedCount += bizDeptHis.size();
-                            long seconds = Duration.between(task.getCreateTime(), endTime).getSeconds();
-                            deptUnfinishedTime += seconds;
-                        }
-
-                        // 判断市场组是否审核
-                        List<SysCheckChainNodeCheckHistory> marketHis = nodeId2HisMap.get(8);
-                        Map<String, Object> marketCheck = getCheckData(marketHis, task, endTime);
-                        marketUnfinishedCount += (int) marketCheck.get("count");
-                        marketUnfinishedTime += (long) marketCheck.get("time");
-                        boolean marketFlag = (boolean) marketCheck.get("nextFlag");
-
-                        // 判断商务组是否审核
-                        List<SysCheckChainNodeCheckHistory> bizHis = nodeId2HisMap.get(9);
-                        Map<String, Object> bizCheck = getCheckData(bizHis, task, endTime);
-                        bizUnfinishedCount += (int) bizCheck.get("count");
-                        bizUnfinishedTime += (long) bizCheck.get("time");
-                        boolean bizFlag = (boolean) bizCheck.get("nextFlag");
-
-                        // 判断分管领导 node=5
-                        if (marketFlag && bizFlag) {
-                            List<SysCheckChainNodeCheckHistory> leaderHis = nodeId2HisMap.get(5);
-                            Map<String, Object> leaderCheck = getCheckData(leaderHis, task, endTime);
-                            leaderUnfinishedCount += (int) leaderCheck.get("count");
-                            leaderUnfinishedTime += (long) leaderCheck.get("time");
-                            boolean mgrFlag = (boolean) leaderCheck.get("nextFlag");
-                            // 判断总经理 node=6
-                            if (mgrFlag) {
-                                // 判断总经理
-                                List<SysCheckChainNodeCheckHistory> mgrHis = nodeId2HisMap.get(6);
-                                Map<String, Object> mgrCheck = getCheckData(mgrHis, task, endTime);
-                                mgrUnfinishedCount += (int) mgrCheck.get("count");
-                                mgrUnfinishedTime += (long) mgrCheck.get("time");
+                // // 最大的节点
+                // int maxNodeId = nodeId2HisMap.keySet().stream().max(Comparator.comparingInt(Integer::valueOf)).get();
+                //
+                // // 地市没有审核
+                // if (maxNodeId == 1) {
+                //     Optional<SysCheckChainNodeCheckHistory> any = nodeId2HisMap.get(maxNodeId).stream().filter(SysCheckChainNodeCheckHistory::getCheckResult).findAny();
+                //     if (any.isPresent()) {
+                //         cityUnfinishedCount++;
+                //         cityUnfinishedTime += getDurationSecond(task.getCreateTime(), endTime);
+                //     }
+                // }
+                //
+                // // 区域没有审核
+                // if (maxNodeId == 2) {
+                //     Optional<SysCheckChainNodeCheckHistory> any = nodeId2HisMap.get(maxNodeId).stream().filter(SysCheckChainNodeCheckHistory::getCheckResult).findAny();
+                //     if (any.isPresent()) {
+                //         provUnfinishedCount++;
+                //         provUnfinishedTime += getDurationSecond(task.getCreateTime(), endTime);
+                //     }
+                // }
+                //
+                // // 商务组或者市场组审核
+                // if (maxNodeId == 3 ) {
+                //     Optional<SysCheckChainNodeCheckHistory> any = nodeId2HisMap.get(maxNodeId).stream().filter(SysCheckChainNodeCheckHistory::getCheckResult).findAny();
+                //     if (any.isPresent()) {
+                //         deptUnfinishedCount++;
+                //         deptUnfinishedTime += getDurationSecond(task.getCreateTime(), endTime);
+                //     }
+                // }
+                //
+                // // 特殊处理
+                // if (maxNodeId == 4) {
+                //     deptUnfinishedCount++;
+                //     deptUnfinishedCount += getDurationSecond(task.getCreateTime(), endTime);
+                // }
+                //
+                // // 地市没有审核
+                // if (maxNodeId == 5) {
+                //     Optional<SysCheckChainNodeCheckHistory> any = nodeId2HisMap.get(maxNodeId).stream().filter(SysCheckChainNodeCheckHistory::getCheckResult).findAny();
+                //     if (any.isPresent()) {
+                //         mgrUnfinishedCount++;
+                //         mgrUnfinishedTime += getDurationSecond(task.getCreateTime(), endTime);
+                //     }
+                // }
+                //
+                //
+                // if (maxNodeId == 8) {
+                //     Optional<SysCheckChainNodeCheckHistory> any = nodeId2HisMap.get(maxNodeId).stream().filter(SysCheckChainNodeCheckHistory::getCheckResult).findAny();
+                //     if (any.isPresent()) {
+                //         bizUnfinishedCount++;
+                //         bizUnfinishedTime += getDurationSecond(task.getCreateTime(), endTime);
+                //     }
+                // }
+                //
+                // if (maxNodeId == 9) {
+                //     List<SysCheckChainNodeCheckHistory> market = nodeId2HisMap.get(8);
+                //     // 市场组审核完毕
+                //     if (CollUtil.isNotEmpty(market)) {
+                //         Optional<SysCheckChainNodeCheckHistory> any = nodeId2HisMap.get(maxNodeId).stream().filter(SysCheckChainNodeCheckHistory::getCheckResult).findAny();
+                //         Optional<SysCheckChainNodeCheckHistory> any1 = nodeId2HisMap.get(8).stream().filter(SysCheckChainNodeCheckHistory::getCheckResult).findAny();
+                //         if (any.isPresent() && any1.isPresent()) {
+                //             leaderUnfinishedCount++;
+                //             leaderUnfinishedTime += getDurationSecond(task.getCreateTime(), endTime);
+                //         }
+                //     }
+                //     // 市场组没有审核
+                //     else{
+                //         Optional<SysCheckChainNodeCheckHistory> any = nodeId2HisMap.get(maxNodeId).stream().filter(SysCheckChainNodeCheckHistory::getCheckResult).findAny();
+                //         if (any.isPresent()) {
+                //             marketUnfinishedCount++;
+                //             marketUnfinishedTime += getDurationSecond(task.getCreateTime(), endTime);
+                //         }
+                //     }
+                //
+                //
+                //
+                // }
+
+                // 待服务商审核 node=1
+                List<SysCheckChainNodeCheckHistory> vendorCheckHis = nodeId2HisMap.get(1);
+                Map<String, Object> vendorCheck = getCheckData(vendorCheckHis, task, endTime);
+                boolean vendorFlag = (boolean) vendorCheck.get("nextFlag");
+
+                if (vendorFlag) {
+                    // 判断地市 node=2
+                    List<SysCheckChainNodeCheckHistory> cityCheckHis = nodeId2HisMap.get(2);
+                    Map<String, Object> cityCheck = getCheckData(cityCheckHis, task, endTime);
+                    cityUnfinishedCount += (int) cityCheck.get("count");
+                    cityUnfinishedTime += (long) cityCheck.get("time");
+                    boolean prvFlag = (boolean) cityCheck.get("nextFlag");
+
+                    // 继续判断区域 node=3
+                    if (prvFlag) {
+                        List<SysCheckChainNodeCheckHistory> provCheckHis = nodeId2HisMap.get(3);
+                        Map<String, Object> provCheck = getCheckData(provCheckHis, task, endTime);
+                        provUnfinishedCount += (int) provCheck.get("count");
+                        provUnfinishedTime += (long) provCheck.get("time");
+                        boolean bizDeptFlag = (boolean) provCheck.get("nextFlag");
+
+                        // 判断事业部 node=4
+                        if (bizDeptFlag) {
+                            List<SysCheckChainNodeCheckHistory> bizDeptHis = nodeId2HisMap.get(4);
+
+                            // 市场组和商务组都没有审核
+                            if (CollUtil.isNotEmpty(bizDeptHis)) {
+
+                                deptUnfinishedCount += bizDeptHis.size();
+                                long seconds = Duration.between(task.getCreateTime(), endTime).getSeconds();
+                                deptUnfinishedTime += seconds;
+                            }
 
+                            // 判断市场组是否审核
+                            List<SysCheckChainNodeCheckHistory> marketHis = nodeId2HisMap.get(8);
+                            Map<String, Object> marketCheck = getCheckData(marketHis, task, endTime);
+                            marketUnfinishedCount += (int) marketCheck.get("count");
+                            marketUnfinishedTime += (long) marketCheck.get("time");
+                            boolean marketFlag = (boolean) marketCheck.get("nextFlag");
+
+                            // 判断商务组是否审核
+                            List<SysCheckChainNodeCheckHistory> bizHis = nodeId2HisMap.get(9);
+                            Map<String, Object> bizCheck = getCheckData(bizHis, task, endTime);
+                            bizUnfinishedCount += (int) bizCheck.get("count");
+                            bizUnfinishedTime += (long) bizCheck.get("time");
+                            boolean bizFlag = (boolean) bizCheck.get("nextFlag");
+
+                            // 判断分管领导 node=5
+                            if (marketFlag && bizFlag) {
+                                List<SysCheckChainNodeCheckHistory> leaderHis = nodeId2HisMap.get(5);
+                                Map<String, Object> leaderCheck = getCheckData(leaderHis, task, endTime);
+                                leaderUnfinishedCount += (int) leaderCheck.get("count");
+                                leaderUnfinishedTime += (long) leaderCheck.get("time");
+                                boolean mgrFlag = (boolean) leaderCheck.get("nextFlag");
+                                // 判断总经理 node=6
+                                if (mgrFlag) {
+                                    // 判断总经理
+                                    List<SysCheckChainNodeCheckHistory> mgrHis = nodeId2HisMap.get(6);
+                                    Map<String, Object> mgrCheck = getCheckData(mgrHis, task, endTime);
+                                    mgrUnfinishedCount += (int) mgrCheck.get("count");
+                                    mgrUnfinishedTime += (long) mgrCheck.get("time");
+
+                                }
                             }
                         }
                     }
@@ -932,52 +1020,52 @@ public class InitController {
 
         // 服务商
         taskCheckExcelModel.setVendorUnfinishedTaskCount(String.valueOf(vendorUnfinishedCount));
-        taskCheckExcelModel.setVendorUnfinishedAvgTime(String.format("%.2f", vendorUnfinishedTime * 1.0 / (60 * 60 * 24 * vendorUnfinishedCount)));
+        taskCheckExcelModel.setVendorUnfinishedAvgTime(String.format("%.2f", vendorUnfinishedTime * 1.0 / (60L * 60 * 24 * vendorUnfinishedCount)));
 
         // 地市
         taskCheckExcelModel.setCityUnfinishedTaskCount(String.valueOf(cityUnfinishedCount));
-        taskCheckExcelModel.setCityUnfinishedAvgTime(String.format("%.2f", cityUnfinishedTime * 1.0 / (60 * 60 * 24 * cityUnfinishedCount)));
+        taskCheckExcelModel.setCityUnfinishedAvgTime(String.format("%.2f", cityUnfinishedTime * 1.0 / (60L * 60 * 24 * cityUnfinishedCount)));
 
         // 区域
         taskCheckExcelModel.setProvinceUnfinishedTaskCount(String.valueOf(provUnfinishedCount));
-        taskCheckExcelModel.setProvinceUnfinishedAvgTime(String.format("%.2f", provUnfinishedTime * 1.0 / (60 * 60 * 24 * provUnfinishedCount)));
+        taskCheckExcelModel.setProvinceUnfinishedAvgTime(String.format("%.2f", provUnfinishedTime * 1.0 / (60L * 60 * 24 * provUnfinishedCount)));
 
         taskCheckExcelModel.setDeptUnfinishedTaskCount(String.valueOf(deptUnfinishedCount));
-        taskCheckExcelModel.setDeptUnfinishedAvgTime(String.format("%.2f", deptUnfinishedTime * 1.0 / (60 * 60 * 24 * deptUnfinishedCount)));
+        taskCheckExcelModel.setDeptUnfinishedAvgTime(String.format("%.2f", deptUnfinishedTime * 1.0 / (60L * 60 * 24 * deptUnfinishedCount)));
 
         // 市场
         taskCheckExcelModel.setMarketUnfinishedTaskCount(String.valueOf(marketUnfinishedCount));
-        taskCheckExcelModel.setMarketUnfinishedAvgTime(String.format("%.2f", marketUnfinishedTime * 1.0 / (60 * 60 * 24 * marketUnfinishedCount)));
+        taskCheckExcelModel.setMarketUnfinishedAvgTime(String.format("%.2f", marketUnfinishedTime * 1.0 / (60L * 60 * 24 * marketUnfinishedCount)));
 
         // 商务
         taskCheckExcelModel.setBizUnfinishedTaskCount(String.valueOf(bizUnfinishedCount));
-        taskCheckExcelModel.setBizUnfinishedAvgTime(String.format("%.2f", bizUnfinishedTime * 1.0 / (60 * 60 * 24 * bizUnfinishedCount)));
+        taskCheckExcelModel.setBizUnfinishedAvgTime(String.format("%.2f", bizUnfinishedTime * 1.0 / (60L * 60 * 24 * bizUnfinishedCount)));
 
         // 分管领导
         taskCheckExcelModel.setLeaderUnfinishedTaskCount(String.valueOf(leaderUnfinishedCount));
-        taskCheckExcelModel.setLeaderUnfinishedAvgTime(String.format("%.2f", leaderUnfinishedTime * 1.0 / (60 * 60 * 24 * leaderUnfinishedCount)));
+        taskCheckExcelModel.setLeaderUnfinishedAvgTime(String.format("%.2f", leaderUnfinishedTime * 1.0 / (60L * 60 * 24 * leaderUnfinishedCount)));
 
         // 总经理
         taskCheckExcelModel.setManagerUnfinishedTaskCount(String.valueOf(mgrUnfinishedCount));
-        taskCheckExcelModel.setManagerUnfinishedAvgTime(String.format("%.2f", mgrUnfinishedTime * 1.0 / (60 * 60 * 24 * mgrUnfinishedCount)));
+        taskCheckExcelModel.setManagerUnfinishedAvgTime(String.format("%.2f", mgrUnfinishedTime * 1.0 / (60L * 60 * 24 * mgrUnfinishedCount)));
         return Collections.singletonList(taskCheckExcelModel);
 
     }
 
 
-    private Map<String, Object> getCheckData(List<SysCheckChainNodeCheckHistory> cityCheckHis, WmTask task, LocalDateTime endTime) {
+    private Map<String, Object> getCheckData(List<SysCheckChainNodeCheckHistory> target, WmTask task, LocalDateTime endTime) {
 
         int count = 0;
         long time = 0L;
         boolean nextFlag = true;
 
-        if (CollUtil.isEmpty(cityCheckHis)) {
+        // 改节点尚未审核
+        if (CollUtil.isEmpty(target)) {
             count++;
             time += getDurationSecond(task.getCreateTime(), endTime);
             nextFlag = false;
         } else {
-            List<SysCheckChainNodeCheckHistory> collect = cityCheckHis.stream().sorted(Comparator.comparingInt(SysCheckChainNodeCheckHistory::getHistoryId)).collect(Collectors.toList());
-            for (SysCheckChainNodeCheckHistory his : collect) {
+            for (SysCheckChainNodeCheckHistory his : target) {
                 // 当前节点审核节点拒绝则流程完毕
                 if (!his.getCheckResult()) {
                     nextFlag = false;
@@ -1005,4 +1093,10 @@ public class InitController {
     }
 
 
+    public void export1() {
+
+
+    }
+
+
 }

+ 16 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/InitMapper.java

@@ -0,0 +1,16 @@
+package com.qunzhixinxi.hnqz.admin.mapper;
+
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.Map;
+
+/**
+ * @author jimmy
+ * @date 2025-01-06 21:11
+ */
+@Mapper
+public interface InitMapper {
+
+
+    Map<String, Object> export();
+}

+ 17 - 0
hnqz-upms/hnqz-upms-biz/src/main/resources/mapper/InitMapper.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.qunzhixinxi.hnqz.admin.mapper.InitMapper">
+
+  <select id="export" resultType="map">
+    SELECT t."id", tc1."node_id", tc1."check_result", tc1."create_time1"
+    FROM "wm_task" AS "T"
+           LEFT JOIN (SELECT tc."target_id", tc."node_id", tc."check_result", tc."create_time1"
+                      FROM "sys_chain_node_check_his" AS "TC"
+                             LEFT JOIN (SELECT "target_id", MAX("node_id")
+                                        FROM "sys_chain_node_check_his"
+                                        GROUP BY "target_id") AS "TCM" ON tcm."target_id" = tc."target_id" AND tcm."MAX(""node_id"")" = tc."node_id") AS "TC1"
+                     ON tc."target_id" = t."id";
+  </select>
+</mapper>