提交 ab2d5952 authored 作者: Matrix's avatar Matrix

[核查模块] 修复BUG

上级 306311ac
...@@ -35,7 +35,7 @@ public class UnitAreaBean { ...@@ -35,7 +35,7 @@ public class UnitAreaBean {
.map(unit -> { .map(unit -> {
int areaId = unitsDao.findAreaIdByName(unit.getName()); int areaId = unitsDao.findAreaIdByName(unit.getName());
Area area = areaDao.findById(areaId) Area area = areaDao.findById(areaId)
.orElse(new Area(0, "无地区归属", 9999, "9999", 0, "")); .orElse(new Area(0, "省直属", 9999, "9999", 0, ""));
return new AreaUnit(area, unit); return new AreaUnit(area, unit);
}).collect(Collectors.toMap(AreaUnit::getUnitName, Function.identity())); }).collect(Collectors.toMap(AreaUnit::getUnitName, Function.identity()));
......
...@@ -53,7 +53,6 @@ import java.time.LocalDateTime; ...@@ -53,7 +53,6 @@ import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors;
import static com.tykj.dev.misc.base.BusinessEnum.CONFIRM_CHECK_DETAIL; import static com.tykj.dev.misc.base.BusinessEnum.CONFIRM_CHECK_DETAIL;
import static com.tykj.dev.misc.base.BusinessEnum.CONFIRM_CHECK_STAT; import static com.tykj.dev.misc.base.BusinessEnum.CONFIRM_CHECK_STAT;
...@@ -186,14 +185,14 @@ public class DeviceCheckController { ...@@ -186,14 +185,14 @@ public class DeviceCheckController {
} }
@GetMapping("/title/{examJobId}") @GetMapping("/title/{examJobId}")
public ResponseEntity getNames(@PathVariable Integer examJobId){ public ResponseEntity getNames(@PathVariable Integer examJobId) {
// 根据检查的主键id 查询到prov city Stat的title // 根据检查的主键id 查询到prov city Stat的title
Integer provId = taskService.get(examJobId).getParentTaskId(); Integer provId = taskService.get(examJobId).getParentTaskId();
// 检查的job id 找到 father 进而找到 father的billid 进而找到title Id // 检查的job id 找到 father 进而找到 father的billid 进而找到title Id
Integer statId = taskService.get(provId).getBillId(); Integer statId = taskService.get(provId).getBillId();
DeviceCheckStat deviceCheckStat = statRepo.getOne(statId); DeviceCheckStat deviceCheckStat = statRepo.getOne(statId);
String title = deviceCheckStat.getTitle(); String title = deviceCheckStat.getTitle();
return ResponseEntity.ok(new CheckTitleAndTimeVo(title,deviceCheckStat.getEndTime())); return ResponseEntity.ok(new CheckTitleAndTimeVo(title, deviceCheckStat.getEndTime()));
} }
@ApiOperation(value = "发起自动核查", notes = "发起自动核查") @ApiOperation(value = "发起自动核查", notes = "发起自动核查")
...@@ -231,9 +230,34 @@ public class DeviceCheckController { ...@@ -231,9 +230,34 @@ public class DeviceCheckController {
provStatTask.setCustomInfo("check"); provStatTask.setCustomInfo("check");
provStatTask = taskService.start(provStatTask); provStatTask = taskService.start(provStatTask);
// 构建自查任务(levl = 0,1,2) //构建市的检查任务(level=2)
List<Units> examCheckUnits = checkedUnits.stream()
.filter(units -> Arrays.asList(2).contains(units.getLevel()))
.collect(toList());
Map<Integer, Integer> cityExamIdMap = new HashMap<>();
for (Units unit : examCheckUnits) {
//构建市的统计账单
String cityTitle = unit.getName() + "检查统计";
DeviceCheckStat cityCheckStat = initStatData(cityTitle, ccVO.getRemark(), 0, 0, unit.getName(), Collections.emptyList(), ccVO.getEndTime().atStartOfDay());
Integer cityStatId = statRepo.save(cityCheckStat).getId();
log.info("[核查模块] {} 检查统计账单构建完毕,id 为 {}", unit.getName(), cityStatId);
// 构建市的统计任务
TaskBto cityStatTask = new TaskBto(CHECK_EXAM_STAT_0.id, unit.getName() + "检查统计任务", provStatTask.getId(), addNode(provStatTask.getNodeIdDetail(), provStatTask.getId()), CONFIRM_CHECK_STAT.id, cityStatId, unit.getUnitId(), 0);
cityStatTask.getInvolveUserIdList().add(0);
cityStatTask.setCurrentPoint(1);
cityStatTask.setCustomInfo("exam");
cityStatTask = taskService.start(cityStatTask);
//将市的检查id记录下,以便设置市的自查任务的父级节点
cityExamIdMap.put(unit.getUnitId(), cityStatTask.getId());
}
// 构建自查任务(levl = 1,2) tpye = 2
List<Units> selfCheckUnits = checkedUnits.stream() List<Units> selfCheckUnits = checkedUnits.stream()
.filter(units -> Arrays.asList(0, 1, 2).contains(units.getLevel())) .filter(units -> Arrays.asList(0, 1, 2).contains(units.getLevel()) || units.getType() == 2)
.collect(toList()); .collect(toList());
// 获取所有在库装备与不在库装备 // 获取所有在库装备与不在库装备
...@@ -266,30 +290,27 @@ public class DeviceCheckController { ...@@ -266,30 +290,27 @@ public class DeviceCheckController {
} }
// 3-2 构建被查单位的 自查任务 (根据被查单位的级别来区分是县级状态是市级状态) 这里的父级任务应该是省统计 // 3-2 构建被查单位的 自查任务 (根据被查单位的级别来区分是县级状态是市级状态) 这里的父级任务应该是省统计
TaskBto checkedTask = new TaskBto(CHECK_EXAM_DETAIL_0.id, "自核查任务", provStatTask.getId(), addNode(provStatTask.getNodeIdDetail(), provStatTask.getId()), CONFIRM_CHECK_DETAIL.id, detail.getId(), unit.getUnitId(), 0); // 如果是市level=2 的话,father Id为市的检查id
Integer fatherId = 0;
if (unit.getLevel() == 2) {
fatherId = cityExamIdMap.get(unit.getUnitId());
} else {
fatherId = provStatTask.getId();
}
Integer ownUnitId = 0;
if (unit.getType() == 2) {
ownUnitId = 1;
} else {
ownUnitId = unit.getUnitId();
}
TaskBto checkedTask = new TaskBto(CHECK_EXAM_DETAIL_0.id, unit.getName() + "自核查任务", fatherId, addNode(provStatTask.getNodeIdDetail(), provStatTask.getId()), CONFIRM_CHECK_DETAIL.id, detail.getId(), ownUnitId, 0);
checkedTask.setCustomInfo("manual"); checkedTask.setCustomInfo("manual");
taskService.start(checkedTask); taskService.start(checkedTask);
} }
//构建市的检查任务(level=2)
List<Units> examCheckUnits = checkedUnits.stream()
.filter(units -> Arrays.asList( 2).contains(units.getLevel()))
.collect(toList());
for (Units unit : examCheckUnits) {
//构建市的统计账单
String cityTitle = unit.getName() + "检查统计";
DeviceCheckStat cityCheckStat = initStatData(cityTitle, ccVO.getRemark(), 0, 0, unit.getName(), Collections.emptyList(), ccVO.getEndTime().atStartOfDay());
Integer cityStatId = statRepo.save(cityCheckStat).getId();
log.info("[核查模块] {} 检查统计账单构建完毕,id 为 {}", unit.getName(), cityStatId);
// 构建市的统计任务
TaskBto cityStatTask = new TaskBto(CHECK_EXAM_STAT_0.id, unit.getName() + "检查统计任务", provStatTask.getId(), addNode(provStatTask.getNodeIdDetail(), provStatTask.getId()), CONFIRM_CHECK_STAT.id, cityStatId, unit.getUnitId(), 0);
cityStatTask.getInvolveUserIdList().add(0);
cityStatTask.setCurrentPoint(1);
cityStatTask.setCustomInfo("exam");
taskService.start(cityStatTask);
}
return ResponseEntity.ok(ImmutableMap.of("msg", "发起核查成功")); return ResponseEntity.ok(ImmutableMap.of("msg", "发起核查成功"));
} }
...@@ -690,9 +711,24 @@ public class DeviceCheckController { ...@@ -690,9 +711,24 @@ public class DeviceCheckController {
.stream() .stream()
.map(v -> v.stream().reduce(CheckDeviceStatVo::reduce).get()) .map(v -> v.stream().reduce(CheckDeviceStatVo::reduce).get())
.collect(toList()); .collect(toList());
//直接替换 //直接替换
cityStatVo = cityStatVo.cleanReduce(addVos); cityStatVo = cityStatVo.cleanReduce(addVos);
// 把cityStatVo里本地区的进度更改为2
String unitName = currentDetail.getCheckUnit();
Integer areaId = unitsRepo.findByName(unitName).getAreaId();
String areaName = areaRepo.findById(areaId).orElse(new Area(0, "省直属", 9999, "9999", 0, ""))
.getName();
for (CheckDeviceStatVo v : cityStatVo.getDeviceStatVoList()) {
for (CheckAreaStatVo v1 : v.getAreaStatList()) {
if (v1.getAreaName().equals(areaName)) {
v1.end();
}
}
}
// 第一个区域替换,否则累加 // 第一个区域替换,否则累加
// if (firstArea) { // if (firstArea) {
// cityStatVo.setDeviceStatVoList(addVos); // cityStatVo.setDeviceStatVoList(addVos);
...@@ -707,6 +743,7 @@ public class DeviceCheckController { ...@@ -707,6 +743,7 @@ public class DeviceCheckController {
// 如果汇总完毕则将父级的统计任务推进 // 如果汇总完毕则将父级的统计任务推进
if (over) { if (over) {
log.info("[核查模块] 父节点 = {} 的所有子任务均已经完结,推动父节点的任务", fatherTaskId);
TaskBto fatherTask = taskService.get(fatherTaskId); TaskBto fatherTask = taskService.get(fatherTaskId);
//如果上一个id是-1 则证明是所有人的跟踪统计,即自动核查,那么下一步推进到所有人的跟踪,否则设置为-2,即维持跟踪者id //如果上一个id是-1 则证明是所有人的跟踪统计,即自动核查,那么下一步推进到所有人的跟踪,否则设置为-2,即维持跟踪者id
Integer lastUserId = fatherTask.getLastUserId() == -1 ? -1 : -2; Integer lastUserId = fatherTask.getLastUserId() == -1 ? -1 : -2;
...@@ -761,6 +798,8 @@ public class DeviceCheckController { ...@@ -761,6 +798,8 @@ public class DeviceCheckController {
areaStatVoList.add(checkAreaStatVo); areaStatVoList.add(checkAreaStatVo);
statVoList.add(new CheckDeviceStatVo(checkDevice.getModel(), checkDevice.getName(), 1, areaStatVoList)); statVoList.add(new CheckDeviceStatVo(checkDevice.getModel(), checkDevice.getName(), 1, areaStatVoList));
//这里直接跳过非在库装备
break;
} }
return statVoList; return statVoList;
......
...@@ -4,8 +4,6 @@ import lombok.AllArgsConstructor; ...@@ -4,8 +4,6 @@ import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
...@@ -75,6 +73,10 @@ public class CheckAreaStatVo implements Cloneable { ...@@ -75,6 +73,10 @@ public class CheckAreaStatVo implements Cloneable {
this.comProgress = 1; this.comProgress = 1;
} }
public void end() {
this.comProgress = 2;
}
/** /**
* 将相同地区的统计数据合并 * 将相同地区的统计数据合并
* *
......
...@@ -217,6 +217,13 @@ public class ObjTransUtil { ...@@ -217,6 +217,13 @@ public class ObjTransUtil {
return detailDo; return detailDo;
} }
/**
*
* 这里不考虑不在库的装备
* @param inLibrary
* @param notInLibrary
* @return
*/
public String devLib2String(List<DeviceInLibVo> inLibrary, List<DeviceNotInLibVo> notInLibrary) { public String devLib2String(List<DeviceInLibVo> inLibrary, List<DeviceNotInLibVo> notInLibrary) {
String inLibString = inLibrary.stream() String inLibString = inLibrary.stream()
......
...@@ -32,14 +32,14 @@ public class AreaCache { ...@@ -32,14 +32,14 @@ public class AreaCache {
} }
public Area findByName(String name) { public Area findByName(String name) {
return nameMap.get(name); return nameMap.get(name) == null ? new Area(0, "省直属", 9999, "9999", 0, "") : nameMap.get(name);
} }
public Area findById(Integer id) { public Area findById(Integer id) {
return idMap.get(id); return idMap.get(id) == null ? new Area(0, "省直属", 9999, "9999", 0, "") : idMap.get(id);
} }
public AreaCache refresh(List<Area> areaList){ public AreaCache refresh(List<Area> areaList) {
nameMap = areaList.stream().collect(Collectors.toMap(Area::getName, Function.identity())); nameMap = areaList.stream().collect(Collectors.toMap(Area::getName, Function.identity()));
idMap = areaList.stream().collect(Collectors.toMap(Area::getId, Function.identity())); idMap = areaList.stream().collect(Collectors.toMap(Area::getId, Function.identity()));
return this; return this;
......
...@@ -78,7 +78,7 @@ public class AuServiceImpl implements AuService { ...@@ -78,7 +78,7 @@ public class AuServiceImpl implements AuService {
.eq(Objects.nonNull(value), example.getFieldName(), value) .eq(Objects.nonNull(value), example.getFieldName(), value)
.build(); .build();
Units units = unitsRepo.findOne(pred).get(); Units units = unitsRepo.findOne(pred).get();
Area area = areaRepo.findById(units.getAreaId()).orElse(new Area(0, "无地区归属", 9999, "9999", 0, "")); Area area = areaRepo.findById(units.getAreaId()).orElse(new Area(0, "省直属", 9999, "9999", 0, ""));
return new AreaUnit(area, units); return new AreaUnit(area, units);
} }
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论