|
@@ -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() {
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|