提交 6a0652bf authored 作者: Matrix's avatar Matrix

[核查模块] 添加退回中 以及不同意功能

上级 883b6fbd
...@@ -147,6 +147,10 @@ public enum LogType { ...@@ -147,6 +147,10 @@ public enum LogType {
CONFIRM_CHECK_EXAM_STAT_3(420, CONFIRM_CHECK_DETAIL.id, CHECK_EXAM_STAT_0.id, END.id, "检查统计任务数据已确认完毕,任务完结"), CONFIRM_CHECK_EXAM_STAT_3(420, CONFIRM_CHECK_DETAIL.id, CHECK_EXAM_STAT_0.id, END.id, "检查统计任务数据已确认完毕,任务完结"),
CONFIRM_CHECK_SELF_ROLLBACK(421, CONFIRM_CHECK_DETAIL.id, END.id,CHECK_EXAM_DETAIL_0.id, "自查任务已退回至等待专管员A处理状态"),
CONFIRM_CHECK_EXAM_ROLLBACK(422, CONFIRM_CHECK_DETAIL.id, END.id,CHECK_EXAM_STAT_1.id, "检查任务已退回至等待确认状态"),
ALLOT_BACK_1(57, ALLOT_BACK.id, ORIGIN_STATUS.id, ALLOT_BACKING.id, "发起装备退回"), ALLOT_BACK_1(57, ALLOT_BACK.id, ORIGIN_STATUS.id, ALLOT_BACKING.id, "发起装备退回"),
ALLOT_BACK_2(58,ALLOT_BACK.id, ALLOT_BACKING.id, END.id, "接收退回装备并上传退回签收单"), ALLOT_BACK_2(58,ALLOT_BACK.id, ALLOT_BACKING.id, END.id, "接收退回装备并上传退回签收单"),
......
...@@ -407,7 +407,9 @@ public class DeviceCheckController { ...@@ -407,7 +407,9 @@ public class DeviceCheckController {
lcd.setId(task.getBillId()); lcd.setId(task.getBillId());
//核查情况 无误/有误/逾期 //核查情况 无误/有误/逾期
if (revAreaStat.getComSituation() == 1) { if (revAreaStat.getComSituation() == -1) {
lcd.setCheckSituation("重新检查");
} else if (revAreaStat.getComSituation() == 1) {
lcd.setCheckSituation("有误"); lcd.setCheckSituation("有误");
} else if (revAreaStat.getComSituation() == 0) { } else if (revAreaStat.getComSituation() == 0) {
if (revAreaStat.getComProgress() == 0) { if (revAreaStat.getComProgress() == 0) {
...@@ -435,6 +437,8 @@ public class DeviceCheckController { ...@@ -435,6 +437,8 @@ public class DeviceCheckController {
} else { } else {
lcd.setCheckResult("完成"); lcd.setCheckResult("完成");
} }
} else if (revAreaStat.getComProgress() == 3) {
lcd.setCheckResult("已退回");
} else if (revAreaStat.getComProgress() == 0) { } else if (revAreaStat.getComProgress() == 0) {
lcd.setCheckResult("未开始"); lcd.setCheckResult("未开始");
} else if (revAreaStat.getComProgress() == 1) { } else if (revAreaStat.getComProgress() == 1) {
...@@ -464,8 +468,10 @@ public class DeviceCheckController { ...@@ -464,8 +468,10 @@ public class DeviceCheckController {
LinkExamDetail led = new LinkExamDetail(); LinkExamDetail led = new LinkExamDetail();
led.setId(task.getBillId()); led.setId(task.getBillId());
//核查情况 无误/有误/逾期 //核查情况 重新检查/无误/有误/逾期
if (revAreaStat.getComSituation() == 1) { if (revAreaStat.getComSituation() == -1) {
led.setCheckSituation("重新检查");
} else if (revAreaStat.getComSituation() == 1) {
led.setCheckSituation("有误"); led.setCheckSituation("有误");
} else if (revAreaStat.getComSituation() == 0) { } else if (revAreaStat.getComSituation() == 0) {
if (revAreaStat.getComProgress() == 0) { if (revAreaStat.getComProgress() == 0) {
...@@ -484,6 +490,8 @@ public class DeviceCheckController { ...@@ -484,6 +490,8 @@ public class DeviceCheckController {
} else { } else {
led.setCheckResult("完成"); led.setCheckResult("完成");
} }
} else if (revAreaStat.getComProgress() == 3) {
led.setCheckResult("已退回");
} else if (revAreaStat.getComProgress() == 0) { } else if (revAreaStat.getComProgress() == 0) {
led.setCheckResult("未开始"); led.setCheckResult("未开始");
} else if (revAreaStat.getComProgress() == 1) { } else if (revAreaStat.getComProgress() == 1) {
...@@ -550,6 +558,12 @@ public class DeviceCheckController { ...@@ -550,6 +558,12 @@ public class DeviceCheckController {
return ImmutableMap.of("currentTaskPeriod", periodName); return ImmutableMap.of("currentTaskPeriod", periodName);
} }
/**
* 发起检查时获取核查的标题
*
* @param examJobId
* @return
*/
@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
...@@ -792,15 +806,20 @@ public class DeviceCheckController { ...@@ -792,15 +806,20 @@ public class DeviceCheckController {
if (ceVo.getExamStatId() == 0) { if (ceVo.getExamStatId() == 0) {
cityStatTask = new Task(CHECK_EXAM_STAT_1.id, CHECK_EXAM_STAT_0.name, 0, ".0.", CONFIRM_CHECK_STAT.id, statId, startUnitId) cityStatTask = new Task(CHECK_EXAM_STAT_1.id, CHECK_EXAM_STAT_0.name, 0, ".0.", CONFIRM_CHECK_STAT.id, statId, startUnitId)
.parse2Bto(); .parse2Bto();
cityStatTask.setRemark(String.valueOf(CHECK_EXAM_STAT_1.id));
cityStatTask.setCustomInfo("exam"); cityStatTask.setCustomInfo("exam");
cityStatTask.getInvolveUserIdList().add(currentUserId); cityStatTask.getInvolveUserIdList().add(currentUserId);
cityStatTask.getInvolveUserIdList().add(-1); // 检查变为待办
cityStatTask.getInvolveUserIdList().add(0);
cityStatTask.setCurrentPoint(1); cityStatTask.setCurrentPoint(1);
cityStatTask = taskService.start(cityStatTask); cityStatTask = taskService.start(cityStatTask);
} else { } else {
// 将原来的待办改为跟踪 // 将原来的待办改为跟踪
cityStatTask = taskRepo.findByBillIdAndBusinessType(ceVo.getExamStatId(), CONFIRM_CHECK_STAT.id).get().parse2Bto(); cityStatTask = taskRepo.findByBillIdAndBusinessType(ceVo.getExamStatId(), CONFIRM_CHECK_STAT.id).get().parse2Bto();
cityStatTask.getInvolveUserIdList().add(-1); //检查变为待办
cityStatTask.getInvolveUserIdList().add(0);
cityStatTask.setRemark(String.valueOf(CHECK_EXAM_STAT_1.id));
cityStatTask.setCustomInfo("exam");
cityStatTask.setCurrentPoint(cityStatTask.getCurrentPoint() + 1); cityStatTask.setCurrentPoint(cityStatTask.getCurrentPoint() + 1);
cityStatTask.setCreateUserId(currentUserId); cityStatTask.setCreateUserId(currentUserId);
cityStatTask.setBillStatus(CHECK_EXAM_STAT_1.id); cityStatTask.setBillStatus(CHECK_EXAM_STAT_1.id);
...@@ -842,6 +861,7 @@ public class DeviceCheckController { ...@@ -842,6 +861,7 @@ public class DeviceCheckController {
// 3-2 构建被查单位的 自查任务 (根据被查单位的级别来区分是县级状态是市级状态) // 3-2 构建被查单位的 自查任务 (根据被查单位的级别来区分是县级状态是市级状态)
TaskBto checkedTask = new TaskBto(CHECK_EXAM_DETAIL_0.id, "自核查任务", cityStatTask.getId(), addNode(cityStatTask.getNodeIdDetail(), cityStatTask.getId()), CONFIRM_CHECK_DETAIL.id, detail.getId(), unit.getUnitId(), 0); TaskBto checkedTask = new TaskBto(CHECK_EXAM_DETAIL_0.id, "自核查任务", cityStatTask.getId(), addNode(cityStatTask.getNodeIdDetail(), cityStatTask.getId()), CONFIRM_CHECK_DETAIL.id, detail.getId(), unit.getUnitId(), 0);
checkedTask.setRemark(String.valueOf(CHECK_EXAM_DETAIL_0.id));
checkedTask.setCustomInfo("manual"); checkedTask.setCustomInfo("manual");
checkedTask = taskService.start(checkedTask); checkedTask = taskService.start(checkedTask);
desBillMap.put(detail.getId(), ed.getRemark()); desBillMap.put(detail.getId(), ed.getRemark());
...@@ -927,8 +947,8 @@ public class DeviceCheckController { ...@@ -927,8 +947,8 @@ public class DeviceCheckController {
currentTask.getInvolveUserIdList().set(0, authenticationUtils.getAuthentication().getCurrentUserInfo().getUserId()); currentTask.getInvolveUserIdList().set(0, authenticationUtils.getAuthentication().getCurrentUserInfo().getUserId());
taskService.moveToNext(currentTask, assignUserId); taskService.moveToNext(currentTask, assignUserId);
log.info("[核查模块] A岗核查操作成功"); log.info("[核查模块] A岗核查操作成功");
//3.将父级以及父级的父级的状态更改为正在进行 找到父级的stat对象
//3.将父级以及父级的父级的状态更改为正在进行 找到父级的stat对象
Integer fatherId = currentTask.getParentTaskId(); Integer fatherId = currentTask.getParentTaskId();
Task cityTask = taskRepo.findById(fatherId).get(); Task cityTask = taskRepo.findById(fatherId).get();
Integer cityStatId = cityTask.getBillId(); Integer cityStatId = cityTask.getBillId();
...@@ -1060,6 +1080,104 @@ public class DeviceCheckController { ...@@ -1060,6 +1080,104 @@ public class DeviceCheckController {
return ResponseEntity.ok(new ResultObj<>("专管B操作成功")); return ResponseEntity.ok(new ResultObj<>("专管B操作成功"));
} }
/**
* 用于核查的回退接口
*
* @param id 办结的done接口id
* @return
*/
@ApiOperation(value = "核查回退")
@PutMapping("/check/rollback/{id}")
@Transactional(rollbackFor = Exception.class)
public ResponseEntity checkRollback(@PathVariable Integer id) {
log.info("[核查模块] 将id = {} 的检查任务进行回退", id);
Specification<Task> donePred = Specifications.<Task>and()
.eq("billStatus", CONFIRM_STAT_0.id)
.eq("billId", id)
.eq("businessType", CONFIRM_CHECK_STAT.id)
.build();
TaskBto doneTask = taskRepo.findOne(donePred).get().parse2Bto();
Specification<Task> checkPred = Specifications.<Task>and()
.eq("customInfo", "exam")
.eq("billId", id)
.eq("businessType", CONFIRM_CHECK_STAT.id)
.build();
Task checkTask = taskRepo.findOne(checkPred).get();
//1.将市检查的任务节点回退到等待办结的状态
taskService.moveToSpecial(checkTask.parse2Bto(), CHECK_EXAM_STAT_1);
//2.删除掉省的办结任务
if (Objects.isNull(doneTask)) {
log.info("[核查模块] 没有找到对应的办结任务");
} else {
log.info("[核查模块] 删除id = {}的办结任务", doneTask.getId());
taskRepo.deleteById(doneTask.getId());
}
return ResponseEntity.ok(new ResultObj<>("核查回退操作成功!"));
}
/**
* 用于检查页面的回退接口
*
* @param id 自查的detail id
* @return
*/
@ApiOperation(value = "检查回退")
@PutMapping("/exam/rollback/{id}")
@Transactional(rollbackFor = Exception.class)
public ResponseEntity examRollback(@PathVariable Integer id) {
log.info("[核查模块] 进行检查回退操作,要回退的检查detail id为 {}", id);
//1. 回退device-detail数据 包括 detail String,checkResult,userAId,userBid,checkedCount
// 将原来的checkDetail 的检查状态统一更改为 8 - 已退回
String detail = detailRepo.getOne(id).getCheckDetail();
String updateDetail = Arrays.stream(detail.split(","))
.map(s -> s.split("-")[0] + "-" + "8")
.collect(joining(","));
detailRepo.updateCheckDetail(id, updateDetail, "", 0, 0, 0);
//2. 回退任务Task
TaskBto currentTask = taskService.get(id, CONFIRM_CHECK_DETAIL.id);
StatusEnum firstStatus = GlobalMap.getStatusEnumMap().get(Integer.valueOf(currentTask.getRemark()));
taskService.moveToSpecial(currentTask, firstStatus, currentTask.getFirstUserId());
//3.如果父级任务状态已经到确认阶段,则同样回退一个阶段
TaskBto fatherTask = taskService.get(currentTask.getParentTaskId());
// log.info("[核查模块] 父级统计节点的task id = {} , bill id = {}", fatherTask.getId(), fatherTask.getBillId());
// if (fatherTask.getBillStatus().equals(CHECK_EXAM_STAT_1.id)) {
// log.info("[核查模块] 检测到父级节点已经进入确认阶段,回滚父级节点");
// taskService.moveToSpecial(fatherTask, CHECK_EXAM_STAT_0, fatherTask.getFirstUserId());
// }
//3. 回退合并上去的数据
String unitName = detailRepo.findById(id).get().getCheckUnit();
AreaUnit areaUnit = auService.findOne(AuExample.UnitName, unitName);
String cityName = areaUnit.getName();
resetStatByCity(fatherTask.getBillId(), cityName);
return ResponseEntity.ok(new ResultObj<>("检查回退操作成功!"));
}
/**
* 将统计数据中指定城市的统计数据重置
*
* @param statId stat主键id
* @param cityName 要重置的城市名称
*/
private void resetStatByCity(Integer statId, String cityName) {
DeviceCheckStat stat = statRepo.findById(statId).get();
CheckStatVo statVo = transUtil.checkStatDo2Vo(stat);
for (CheckDeviceStatVo vo : statVo.getDeviceStatVoList()) {
for (CheckAreaStatVo cas : vo.getAreaStatList()) {
if (cas.getAreaName().equals(cityName)) {
cas.reset();
}
}
}
statRepo.save(statVo.toDo());
}
@ApiOperation(value = "核查组A/B确认核查详情单") @ApiOperation(value = "核查组A/B确认核查详情单")
@PutMapping("/detail/C/{id}") @PutMapping("/detail/C/{id}")
...@@ -1320,10 +1438,12 @@ public class DeviceCheckController { ...@@ -1320,10 +1438,12 @@ public class DeviceCheckController {
CheckAreaStatVo checkAreaStatVo; CheckAreaStatVo checkAreaStatVo;
// 十位数 1 人工 2 自动 // 十位数 1 人工 2 自动
// 0缺失1无误2新增3不在库9未检查 // 0缺失1无误2新增3不在库 8已退回 9未检查
int digits = proofResult % 10; int digits = proofResult % 10;
if (digits == 9) { if (digits == 8) {
checkAreaStatVo = new CheckAreaStatVo(areaName, 1, 1, 3, -1, statId, detailId);
} else if (digits == 9) {
checkAreaStatVo = new CheckAreaStatVo(areaName, 1, 1, 0, 0, statId, detailId); checkAreaStatVo = new CheckAreaStatVo(areaName, 1, 1, 0, 0, statId, detailId);
} else if (digits == 3) { } else if (digits == 3) {
//跳过非在库的统计 //跳过非在库的统计
...@@ -1476,22 +1596,37 @@ public class DeviceCheckController { ...@@ -1476,22 +1596,37 @@ public class DeviceCheckController {
comSituationCount += v.getComSituation(); comSituationCount += v.getComSituation();
} }
//comprogress合并逻辑 if all 0->0 2->2 else 1 for (CheckAreaStatVo v : casList) {
if (v.getComSituation() == -1) {
comSituationCount = -1;
}
}
//comprogress合并逻辑 if all 0->0 2->2 3->3 else 1
boolean isDone = casList.stream() boolean isDone = casList.stream()
.mapToInt(CheckAreaStatVo::getComProgress) .mapToInt(CheckAreaStatVo::getComProgress)
.allMatch(value -> value == 2); .allMatch(value -> value == 2);
boolean isRollbakck = casList.stream()
.mapToInt(CheckAreaStatVo::getComProgress)
.anyMatch(value -> value == 3);
if (progressCount == 0) { if (progressCount == 0) {
finalProgress = 0; finalProgress = 0;
} else if (isDone) { } else if (isDone) {
finalProgress = 2; finalProgress = 2;
} else if (isRollbakck) {
finalProgress = 3;
} else { } else {
finalProgress = 1; finalProgress = 1;
} }
// comsitution 合并逻辑 0->0 , 1->1 , 0,1->1 // comsitution 合并逻辑 0->0 , 1->1 , 0,1->1
if (comSituationCount == 0) { if (comSituationCount == -1) {
finalSituation = -1;
} else if (comSituationCount == 0) {
finalSituation = 0; finalSituation = 0;
} else { } else {
finalSituation = 1; finalSituation = 1;
......
...@@ -4,10 +4,8 @@ import lombok.AllArgsConstructor; ...@@ -4,10 +4,8 @@ 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.objenesis.ObjenesisHelper;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.util.List;
/** /**
* CheckAreaStatVo. * CheckAreaStatVo.
...@@ -75,8 +73,20 @@ public class CheckAreaStatVo implements Cloneable { ...@@ -75,8 +73,20 @@ public class CheckAreaStatVo implements Cloneable {
return this; return this;
} }
/**
* 重置该地区的统计数据
*/
public void reset() {
this.actualCount = 0;
this.supposeCount = 0;
this.comProgress = 3;
this.comSituation = -1;
this.areaStatId = 0;
this.areaDetailId = 0;
}
public void start() { public void start() {
if (this.comProgress !=2){ if (this.comProgress != 2) {
this.comProgress = 1; this.comProgress = 1;
} }
} }
...@@ -194,8 +204,7 @@ public class CheckAreaStatVo implements Cloneable { ...@@ -194,8 +204,7 @@ public class CheckAreaStatVo implements Cloneable {
} }
public RevAreaStat reverse() {
public RevAreaStat reverse(){
return new RevAreaStat(areaName, actualCount, supposeCount, comProgress, comSituation); return new RevAreaStat(areaName, actualCount, supposeCount, comProgress, comSituation);
} }
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论