|
@@ -1,6 +1,5 @@
|
|
|
package com.qmth.sop.business.service.impl;
|
|
|
|
|
|
-import cn.hutool.core.date.DateUtil;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
@@ -74,60 +73,52 @@ public class SopScheduleServiceImpl extends ServiceImpl<SopScheduleMapper, TBSop
|
|
|
Map<String, List<Map<String, Object>>> result = new HashMap<>();
|
|
|
List<TBSopPlanDateLogDto> tbSopPlanDateLogDtoList = tbSopPlanDateLogService.findSopPlanDateLog(serviceId);
|
|
|
if (!CollectionUtils.isEmpty(tbSopPlanDateLogDtoList)) {
|
|
|
- Set<Long> sopIdSet = new HashSet<>();//有几条sop
|
|
|
- Long minStartTime = null, maxEndTime = null;//取最小开始和最大结束时间
|
|
|
Map<Long, Long> endTimeMap = new HashMap<>();//取终止的流程日期
|
|
|
List<Map<String, Object>> plan = new ArrayList<>(), actualed = new ArrayList<>();
|
|
|
LinkedMultiValueMap<Long, TBSopPlanDateLogDto> sopPlanDateLogDtoLinkedMultiValueMap = new LinkedMultiValueMap<>();
|
|
|
for (TBSopPlanDateLogDto t : tbSopPlanDateLogDtoList) {
|
|
|
- sopIdSet.add(t.getSopId());
|
|
|
sopPlanDateLogDtoLinkedMultiValueMap.add(t.getSopId(), t);
|
|
|
- if (Objects.isNull(minStartTime) || minStartTime > t.getBeginTime()) {
|
|
|
- minStartTime = t.getBeginTime();
|
|
|
- }
|
|
|
- if (Objects.isNull(maxEndTime) || maxEndTime < t.getEndTime()) {
|
|
|
- maxEndTime = t.getEndTime();
|
|
|
- }
|
|
|
if (t.getStatus() == FlowStatusEnum.END) {
|
|
|
endTimeMap.put(t.getSopId(), t.getFlowUpdateTime());
|
|
|
}
|
|
|
}
|
|
|
- List<String> daysBetweenMaxMinTime = DateDisposeUtils.getDaysBetween(minStartTime, maxEndTime, SystemConstant.DEFAULT_DATE_YMD_PATTERN);
|
|
|
Map<String, Integer> daysBetweenPlanCalculat = new LinkedHashMap<>();
|
|
|
Map<String, Integer> daysBetweenActaledCalculat = new LinkedHashMap<>();
|
|
|
- String nowDate = DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_YMD_PATTERN);
|
|
|
- for (int i = 0; i < daysBetweenMaxMinTime.size(); i++) {
|
|
|
- if (Objects.equals(nowDate, daysBetweenMaxMinTime.get(i))) {
|
|
|
- daysBetweenPlanCalculat.put(daysBetweenMaxMinTime.get(i), -1);
|
|
|
- } else {
|
|
|
- daysBetweenPlanCalculat.put(daysBetweenMaxMinTime.get(i), 0);
|
|
|
- }
|
|
|
- }
|
|
|
- daysBetweenActaledCalculat.putAll(daysBetweenPlanCalculat);
|
|
|
for (Map.Entry<Long, List<TBSopPlanDateLogDto>> entry : sopPlanDateLogDtoLinkedMultiValueMap.entrySet()) {
|
|
|
List<TBSopPlanDateLogDto> list = entry.getValue();
|
|
|
TBSopPlanDateLog planDateLog = list.get(0);//计划
|
|
|
TBSopPlanDateLog planActaledDateLog = null;
|
|
|
if (list.size() > 1) {//实际
|
|
|
planActaledDateLog = list.get(list.size() - 1);
|
|
|
- } else {
|
|
|
- planActaledDateLog = list.get(0);
|
|
|
+ }
|
|
|
+ if (Objects.nonNull(planActaledDateLog) && endTimeMap.containsKey(planActaledDateLog.getSopId())) {
|
|
|
+ planActaledDateLog.setEndTime(endTimeMap.get(planActaledDateLog.getSopId()));
|
|
|
}
|
|
|
if (Objects.nonNull(planDateLog)) {
|
|
|
List<String> daysBetweenPlan = DateDisposeUtils.getDaysBetween(planDateLog.getBeginTime(), planDateLog.getEndTime(), SystemConstant.DEFAULT_DATE_YMD_PATTERN);
|
|
|
- Map<String, Object> daysBetweenPlanMap = daysBetweenPlan.stream().collect(Collectors.toMap(s -> s, s -> s, (k1, k2) -> k1, LinkedHashMap::new));
|
|
|
- for (Map.Entry<String, Integer> entryPlan : daysBetweenPlanCalculat.entrySet()) {
|
|
|
- if (daysBetweenPlanMap.containsKey(entryPlan.getKey())) {
|
|
|
- daysBetweenPlanCalculat.put(entryPlan.getKey(), daysBetweenPlanCalculat.get(entryPlan.getKey()) + 1);
|
|
|
+ Map<String, Integer> daysBetweenPlanMap = new LinkedHashMap<>();
|
|
|
+ for (int i = 0; i < daysBetweenPlan.size(); i++) {
|
|
|
+ daysBetweenPlanMap.put(daysBetweenPlan.get(i), i + 1);
|
|
|
+ }
|
|
|
+ for (Map.Entry<String, Integer> entryPlan : daysBetweenPlanMap.entrySet()) {
|
|
|
+ if (daysBetweenPlanCalculat.containsKey(entryPlan.getKey())) {
|
|
|
+ daysBetweenPlanCalculat.put(entryPlan.getKey(), daysBetweenPlanCalculat.get(entryPlan.getKey()) + entryPlan.getValue());
|
|
|
+ } else {
|
|
|
+ daysBetweenPlanCalculat.put(entryPlan.getKey(), entryPlan.getValue());
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
if (Objects.nonNull(planActaledDateLog)) {
|
|
|
List<String> daysBetweenActualed = DateDisposeUtils.getDaysBetween(planActaledDateLog.getBeginTime(), planActaledDateLog.getEndTime(), SystemConstant.DEFAULT_DATE_YMD_PATTERN);
|
|
|
- Map<String, Object> daysBetweenActualedMap = daysBetweenActualed.stream().collect(Collectors.toMap(s -> s, s -> s, (k1, k2) -> k1, LinkedHashMap::new));
|
|
|
- for (Map.Entry<String, Integer> entryPlan : daysBetweenActaledCalculat.entrySet()) {
|
|
|
- if (daysBetweenActualedMap.containsKey(entryPlan.getKey())) {
|
|
|
- daysBetweenActaledCalculat.put(entryPlan.getKey(), daysBetweenActaledCalculat.get(entryPlan.getKey()) + 1);
|
|
|
+ Map<String, Integer> daysBetweenActualedMap = new LinkedHashMap<>();
|
|
|
+ for (int i = 0; i < daysBetweenActualed.size(); i++) {
|
|
|
+ daysBetweenActualedMap.put(daysBetweenActualed.get(i), i + 1);
|
|
|
+ }
|
|
|
+ for (Map.Entry<String, Integer> entryActualed : daysBetweenActualedMap.entrySet()) {
|
|
|
+ if (daysBetweenActaledCalculat.containsKey(entryActualed.getKey())) {
|
|
|
+ daysBetweenActaledCalculat.put(entryActualed.getKey(), daysBetweenActaledCalculat.get(entryActualed.getKey()) + entryActualed.getValue());
|
|
|
+ } else {
|
|
|
+ daysBetweenActaledCalculat.put(entryActualed.getKey(), entryActualed.getValue());
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -135,13 +126,13 @@ public class SopScheduleServiceImpl extends ServiceImpl<SopScheduleMapper, TBSop
|
|
|
for (Map.Entry<String, Integer> entryPlan : daysBetweenPlanCalculat.entrySet()) {
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
map.put("datetime", entryPlan.getKey());
|
|
|
- map.put("count", entryPlan.getValue() < 0 ? 0 : entryPlan.getValue());
|
|
|
+ map.put("count", entryPlan.getValue());
|
|
|
plan.add(map);
|
|
|
}
|
|
|
for (Map.Entry<String, Integer> entryActaled : daysBetweenActaledCalculat.entrySet()) {
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
map.put("datetime", entryActaled.getKey());
|
|
|
- map.put("count", entryActaled.getValue() < 0 ? 0 : entryActaled.getValue());
|
|
|
+ map.put("count", entryActaled.getValue());
|
|
|
actualed.add(map);
|
|
|
}
|
|
|
result.put("plan", plan);
|