提交 4570bdb0 authored 作者: Matrix's avatar Matrix

feat(核查模块): 增加了关于托管单位的核查处理

- 发起核查的时候不显示被托管的单位 - 被托管的单位的装备算在省本级里
上级 a6691d99
...@@ -142,14 +142,18 @@ public class DeviceCheckController { ...@@ -142,14 +142,18 @@ public class DeviceCheckController {
} }
/** /**
* @return level = 0 ,1 ,2 的单位 * 查询默认的可以被核查单位的清单(省本直,省直属,市局),同时过滤掉那些已经被代管的单位
*
* @return type = 2 and level in (1,2) ,filter escrow = 1 的单位
*/ */
@GetMapping("/unit") @GetMapping("/unit")
@ApiOperation(value = "查询默认的可以被核查单位的清单(省本直,省直属,市局)") @ApiOperation(value = "查询默认的可以被核查单位的清单(省本直,省直属,市局),同时过滤掉那些已经被代管的单位")
public ResponseEntity findDefaultUnits() { public ResponseEntity findDefaultUnits() {
return ResponseEntity.ok(new ResultObj<>(unitsRepo.findAllByTypeInOrLevelIn( List<Units> units = unitsRepo.findAllByTypeInOrLevelIn(Lists.newArrayList(2), Lists.newArrayList(1, 2))
Lists.newArrayList(2), .stream().filter(Units::isNotEscrow)
Lists.newArrayList(1, 2)))); .collect(toList());
// 需要去除掉被托管的单位
return ResponseEntity.ok(new ResultObj<>(units));
} }
/** /**
...@@ -253,9 +257,9 @@ public class DeviceCheckController { ...@@ -253,9 +257,9 @@ public class DeviceCheckController {
public ResponseEntity msgLink(@RequestParam Integer taskId) { public ResponseEntity msgLink(@RequestParam Integer taskId) {
// 如果是businessType = 7 走unionLink 否则走detail接口 // 如果是businessType = 7 走unionLink 否则走detail接口
Task task = taskRepo.findById(taskId).orElseThrow(() -> new ApiException(String.format("没有找到taskId = %d 的任务", taskId))); Task task = taskRepo.findById(taskId).orElseThrow(() -> new ApiException(String.format("没有找到taskId = %d 的任务", taskId)));
if (task.getBusinessType().equals(CONFIRM_CHECK_STAT.id)){ if (task.getBusinessType().equals(CONFIRM_CHECK_STAT.id)) {
return unionLink(7, task.getBillId()); return unionLink(7, task.getBillId());
}else if (task.getBusinessType().equals(CONFIRM_CHECK_DETAIL.id)){ } else if (task.getBusinessType().equals(CONFIRM_CHECK_DETAIL.id)) {
return findDetail(task.getBillId()); return findDetail(task.getBillId());
} }
...@@ -346,6 +350,22 @@ public class DeviceCheckController { ...@@ -346,6 +350,22 @@ public class DeviceCheckController {
devNotInLib.addAll(specialLib.get(false)); devNotInLib.addAll(specialLib.get(false));
} }
} }
// 代管 - 如果当前自查为省本级自查,则需要将被代管的装备加入到省本级
Units unit = unitsRepo.findByName(checkUnit);
boolean isProv = unit.getLevel() == 1 && unit.getType() == 1;
if (isProv) {
//获得所有的需要被代管的单位的在库与非在库装备,添加到省本级的在库与非在库中去
List<Units> escrowUnits = unitsRepo.findByTypeAndEscrow(2, 1);
for (Units eu : escrowUnits) {
log.info("[核查模块] 正在将 {} 单位的装备托管代理到 {} 单位", checkUnit, eu.getName());
Map<Boolean, List<DeviceLibrary>> libMap = getDevLibMap(eu.getName(), allDevices);
devInLib.addAll(libMap.get(true));
devNotInLib.addAll(libMap.get(false));
}
}
detail.updateDevice(devInLib, devNotInLib); detail.updateDevice(devInLib, devNotInLib);
//更新应查装备数量 //更新应查装备数量
...@@ -399,7 +419,7 @@ public class DeviceCheckController { ...@@ -399,7 +419,7 @@ public class DeviceCheckController {
.orElseThrow(() -> new ApiException("[核查模块]没有找到对应billId的统计任务,您给的billId = " + billId)); .orElseThrow(() -> new ApiException("[核查模块]没有找到对应billId的统计任务,您给的billId = " + billId));
// key = stat id ,value = LinkVo // key = stat id ,value = LinkVo
if (rootTask.getBillStatus().equals(REVOKEALLOTTASK.id)) { if (rootTask.getBillStatus().equals(CHECK_SHUT_DOWN.id)) {
// 拿之前保存的缓存 // 拿之前保存的缓存
linkVo = linkRepo.findByStatId(billId) linkVo = linkRepo.findByStatId(billId)
.orElseThrow(() -> new ApiException(String.format("没有找到stat id = %d 的统计缓存,请检查数据", billId))) .orElseThrow(() -> new ApiException(String.format("没有找到stat id = %d 的统计缓存,请检查数据", billId)))
...@@ -1419,14 +1439,17 @@ public class DeviceCheckController { ...@@ -1419,14 +1439,17 @@ public class DeviceCheckController {
/** /**
* 获得指定单位的在库装备与非在库装备 * 获得指定单位的在库装备与非在库装备
* lifeStatus 10 = 已销毁 11 = 丢失
* *
* @param checkUnit 单位名 * @param checkUnit 单位名
* @param allDevices 装备列表 * @param allDevices 装备列表
* @return true -> 在库装备,false -> 非在库装备 * @return true -> 在库装备,false -> 非在库装备
* @see DeviceLibrary#lifeStatus
*/ */
@NotNull @NotNull
private Map<Boolean, List<DeviceLibrary>> getDevLibMap(String checkUnit, List<DeviceLibrary> allDevices) { private Map<Boolean, List<DeviceLibrary>> getDevLibMap(String checkUnit, List<DeviceLibrary> allDevices) {
//在库 = A and B & not B 去除掉ls = 10 的装备 把ls = 11 的装备加入到非在库 // 在库装备 = 所在在本单位 (过滤掉生命状态为10(已销毁)的装备)
// 非在库装备 = 所属是本单位,但是所在不在本单位里 + 原本是在库装备但是生命状态是11(丢失)的装备
Map<Boolean, List<DeviceLibrary>> locationMap = allDevices.stream() Map<Boolean, List<DeviceLibrary>> locationMap = allDevices.stream()
.collect(partitioningBy(d -> d.getLocationUnit().equals(checkUnit))); .collect(partitioningBy(d -> d.getLocationUnit().equals(checkUnit)));
...@@ -1707,13 +1730,13 @@ public class DeviceCheckController { ...@@ -1707,13 +1730,13 @@ public class DeviceCheckController {
/** /**
* 尝试自动完结检查任务(市/省的) * 尝试自动完结检查任务(市/省的)
* 1. 当且仅当该检查任务的状态等于@link{CHECK_EXAM_STAT_1}时且其下的所有子任务均为完结状态,自动推进 * 1. 当且仅当该检查任务的状态等于@link{CHECK_EXAM_STAT_1}时 并且该检查是三级结构里的核查(即父Id !=0 )且其下的所有子任务均为完结状态,自动推进
* *
* @param exam的taskId * @param exam的taskId
*/ */
private void advanceExamTask(Integer examTaskId) { private void advanceExamTask(Integer examTaskId) {
TaskBto parentTask = taskService.findByTaskId(examTaskId); TaskBto parentTask = taskService.findByTaskId(examTaskId);
if (parentTask.getBillStatus().equals(CHECK_EXAM_STAT_1.id) && taskService.TaskTreeIsOver(examTaskId)) { if (parentTask.getBillStatus().equals(CHECK_EXAM_STAT_1.id) && parentTask.getParentTaskId() != 0 && taskService.TaskTreeIsOver(examTaskId)) {
log.info("[核查模块] 检测到task id = {}的检查任务已经可以自动推进了,自动推进至下一步", examTaskId); log.info("[核查模块] 检测到task id = {}的检查任务已经可以自动推进了,自动推进至下一步", examTaskId);
statConfirm(parentTask.getBillId()); statConfirm(parentTask.getBillId());
} }
...@@ -2062,17 +2085,17 @@ public class DeviceCheckController { ...@@ -2062,17 +2085,17 @@ public class DeviceCheckController {
boolean over = taskService.TaskTreeIsOver(fatherTaskId); boolean over = taskService.TaskTreeIsOver(fatherTaskId);
// 如果汇总完毕则将父级的统计任务推进 // 如果汇总完毕则将父级的统计任务推进
if (over) { // if (over) {
log.info("[核查模块] 父节点 = {} 的所有子任务均已经完结,推动父节点的任务", fatherTaskId); // 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;
//TaskBto newFatherTask = taskService.moveToNext(fatherTask, lastUserId); // //TaskBto newFatherTask = taskService.moveToNext(fatherTask, lastUserId);
// 将父级的统计任务变为待办 // // 将父级的统计任务变为待办
fatherTask.getInvolveUserIdList().add(0); // fatherTask.getInvolveUserIdList().add(0);
fatherTask.setCurrentPoint(fatherTask.getCurrentPoint() + 1); // fatherTask.setCurrentPoint(fatherTask.getCurrentPoint() + 1);
taskService.update(fatherTask); // taskService.update(fatherTask);
} // }
log.info("[核查模块] 数据汇总完毕"); log.info("[核查模块] 数据汇总完毕");
} }
......
...@@ -42,8 +42,7 @@ import java.util.*; ...@@ -42,8 +42,7 @@ import java.util.*;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.tykj.dev.misc.base.StatusEnum.END; import static com.tykj.dev.misc.base.StatusEnum.*;
import static com.tykj.dev.misc.base.StatusEnum.REVOKEALLOTTASK;
import static java.util.stream.Collectors.toList; import static java.util.stream.Collectors.toList;
import static java.util.stream.Collectors.toMap; import static java.util.stream.Collectors.toMap;
...@@ -156,20 +155,21 @@ public class ObjTransUtil { ...@@ -156,20 +155,21 @@ public class ObjTransUtil {
long total = childTask.size(); long total = childTask.size();
long done = childTask.stream() long done = childTask.stream()
.filter(task -> task.getBillStatus().equals(END.id) || task.getBillStatus().equals(REVOKEALLOTTASK.id)) .filter(task -> task.getBillStatus().equals(END.id) || task.getBillStatus().equals(CHECK_SHUT_DOWN.id))
.count(); .count();
//如果是检查统计的话那么还要看一下他的父节点是不是已经完成了 //如果是检查统计的话那么还要看一下他的父节点是不是已经完成了
String completion; String completion;
if (done == total) { if (done == total) {
if (stat.getCheckType() == CheckType.CT_EXAM && !fatherTask.getBillStatus().equals(9999)) { boolean examFinish = fatherTask.getBillStatus().equals(END.id) || fatherTask.getBillStatus().equals(CHECK_SHUT_DOWN.id);
if (stat.getCheckType() == CheckType.CT_EXAM && !examFinish) {
completion = "核查完成待办结"; completion = "核查完成待办结";
} else { } else {
if (flag) { if (flag) {
completion = "核查完成待确认"; completion = "核查完成待确认";
} else { } else {
// confirmTaskidDone 为true 代表此时等待最后的father任务 为false代表 flag = false 且isDone为false 代表整个节点里没有确认节点直接完结 // confirmTaskidDone 为true 代表此时等待最后的father任务 为false代表 flag = false 且isDone为false 代表整个节点里没有确认节点直接完结
if (fatherTask.getBillStatus().equals(END.id) || fatherTask.getBillStatus().equals(REVOKEALLOTTASK.id)) { if (fatherTask.getBillStatus().equals(END.id) || fatherTask.getBillStatus().equals(CHECK_SHUT_DOWN.id)) {
completion = "核查完成"; completion = "核查完成";
} else { } else {
completion = "核查完成待办结"; completion = "核查完成待办结";
......
...@@ -48,4 +48,6 @@ public interface UnitsDao extends JpaRepository<Units, Integer>, JpaSpecificatio ...@@ -48,4 +48,6 @@ public interface UnitsDao extends JpaRepository<Units, Integer>, JpaSpecificatio
List<Units> findAllByType(Integer type); List<Units> findAllByType(Integer type);
List<Units> findByTypeAndEscrow(int type, int escrow);
} }
...@@ -134,4 +134,18 @@ public class Units { ...@@ -134,4 +134,18 @@ public class Units {
public LeftNavigation toLeftNavigation(){ public LeftNavigation toLeftNavigation(){
return new LeftNavigation(unitId,name,null, UUID.randomUUID().toString(),2,showOrder,null); return new LeftNavigation(unitId,name,null, UUID.randomUUID().toString(),2,showOrder,null);
} }
/**
* @return true = 是代管单位,false = 不是代管单位
*/
public boolean isEscrow(){
return escrow == 1;
}
/**
* @return true = 不是代管单位,false = 是代管单位
*/
public boolean isNotEscrow(){
return escrow == 0;
}
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论