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

[核查模块] 修复BUG

上级 306311ac
......@@ -35,7 +35,7 @@ public class UnitAreaBean {
.map(unit -> {
int areaId = unitsDao.findAreaIdByName(unit.getName());
Area area = areaDao.findById(areaId)
.orElse(new Area(0, "无地区归属", 9999, "9999", 0, ""));
.orElse(new Area(0, "省直属", 9999, "9999", 0, ""));
return new AreaUnit(area, unit);
}).collect(Collectors.toMap(AreaUnit::getUnitName, Function.identity()));
......
......@@ -53,7 +53,6 @@ import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
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_STAT;
......@@ -186,14 +185,14 @@ public class DeviceCheckController {
}
@GetMapping("/title/{examJobId}")
public ResponseEntity getNames(@PathVariable Integer examJobId){
public ResponseEntity getNames(@PathVariable Integer examJobId) {
// 根据检查的主键id 查询到prov city Stat的title
Integer provId = taskService.get(examJobId).getParentTaskId();
// 检查的job id 找到 father 进而找到 father的billid 进而找到title Id
Integer statId = taskService.get(provId).getBillId();
DeviceCheckStat deviceCheckStat = statRepo.getOne(statId);
String title = deviceCheckStat.getTitle();
return ResponseEntity.ok(new CheckTitleAndTimeVo(title,deviceCheckStat.getEndTime()));
return ResponseEntity.ok(new CheckTitleAndTimeVo(title, deviceCheckStat.getEndTime()));
}
@ApiOperation(value = "发起自动核查", notes = "发起自动核查")
......@@ -231,9 +230,34 @@ public class DeviceCheckController {
provStatTask.setCustomInfo("check");
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()
.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());
// 获取所有在库装备与不在库装备
......@@ -266,30 +290,27 @@ public class DeviceCheckController {
}
// 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");
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", "发起核查成功"));
}
......@@ -690,9 +711,24 @@ public class DeviceCheckController {
.stream()
.map(v -> v.stream().reduce(CheckDeviceStatVo::reduce).get())
.collect(toList());
//直接替换
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) {
// cityStatVo.setDeviceStatVoList(addVos);
......@@ -707,6 +743,7 @@ public class DeviceCheckController {
// 如果汇总完毕则将父级的统计任务推进
if (over) {
log.info("[核查模块] 父节点 = {} 的所有子任务均已经完结,推动父节点的任务", fatherTaskId);
TaskBto fatherTask = taskService.get(fatherTaskId);
//如果上一个id是-1 则证明是所有人的跟踪统计,即自动核查,那么下一步推进到所有人的跟踪,否则设置为-2,即维持跟踪者id
Integer lastUserId = fatherTask.getLastUserId() == -1 ? -1 : -2;
......@@ -761,6 +798,8 @@ public class DeviceCheckController {
areaStatVoList.add(checkAreaStatVo);
statVoList.add(new CheckDeviceStatVo(checkDevice.getModel(), checkDevice.getName(), 1, areaStatVoList));
//这里直接跳过非在库装备
break;
}
return statVoList;
......
......@@ -4,8 +4,6 @@ import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import javax.validation.constraints.NotNull;
......@@ -75,6 +73,10 @@ public class CheckAreaStatVo implements Cloneable {
this.comProgress = 1;
}
public void end() {
this.comProgress = 2;
}
/**
* 将相同地区的统计数据合并
*
......
......@@ -217,6 +217,13 @@ public class ObjTransUtil {
return detailDo;
}
/**
*
* 这里不考虑不在库的装备
* @param inLibrary
* @param notInLibrary
* @return
*/
public String devLib2String(List<DeviceInLibVo> inLibrary, List<DeviceNotInLibVo> notInLibrary) {
String inLibString = inLibrary.stream()
......
......@@ -32,14 +32,14 @@ public class AreaCache {
}
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) {
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()));
idMap = areaList.stream().collect(Collectors.toMap(Area::getId, Function.identity()));
return this;
......
......@@ -78,7 +78,7 @@ public class AuServiceImpl implements AuService {
.eq(Objects.nonNull(value), example.getFieldName(), value)
.build();
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);
}
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论