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

[核查模块] 回退了DeviceCheckController

上级 a784f862
...@@ -18,7 +18,6 @@ import com.tykj.dev.device.confirmcheck.utils.ObjTransUtil; ...@@ -18,7 +18,6 @@ import com.tykj.dev.device.confirmcheck.utils.ObjTransUtil;
import com.tykj.dev.device.file.entity.FileRet; import com.tykj.dev.device.file.entity.FileRet;
import com.tykj.dev.device.file.service.FilesUtil; import com.tykj.dev.device.file.service.FilesUtil;
import com.tykj.dev.device.library.repository.DeviceLibraryDao; import com.tykj.dev.device.library.repository.DeviceLibraryDao;
import com.tykj.dev.device.library.service.DeviceLibraryCacheService;
import com.tykj.dev.device.library.subject.domin.DeviceLibrary; import com.tykj.dev.device.library.subject.domin.DeviceLibrary;
import com.tykj.dev.device.selfcheck.controller.SelfCheckController; import com.tykj.dev.device.selfcheck.controller.SelfCheckController;
import com.tykj.dev.device.task.repository.TaskDao; import com.tykj.dev.device.task.repository.TaskDao;
...@@ -45,7 +44,6 @@ import io.swagger.annotations.ApiOperation; ...@@ -45,7 +44,6 @@ import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.jpa.domain.Specification; import org.springframework.data.jpa.domain.Specification;
...@@ -72,7 +70,7 @@ import static java.util.stream.Collectors.*; ...@@ -72,7 +70,7 @@ import static java.util.stream.Collectors.*;
@RestController @RestController
@RequestMapping(value = "/check/confirm") @RequestMapping(value = "/check/confirm")
@AutoDocument @AutoDocument
//@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Slf4j @Slf4j
@Api(tags = "核查模块", description = "核查模块", position = 1) @Api(tags = "核查模块", description = "核查模块", position = 1)
public class DeviceCheckController { public class DeviceCheckController {
...@@ -94,8 +92,6 @@ public class DeviceCheckController { ...@@ -94,8 +92,6 @@ public class DeviceCheckController {
@Autowired @Autowired
private DeviceCheckDetailDao detailRepo; private DeviceCheckDetailDao detailRepo;
@Autowired @Autowired
private DeviceLibraryCacheService dcService;
@Autowired
private ObjTransUtil transUtil; private ObjTransUtil transUtil;
@Autowired @Autowired
private TaskDao taskRepo; private TaskDao taskRepo;
...@@ -111,8 +107,6 @@ public class DeviceCheckController { ...@@ -111,8 +107,6 @@ public class DeviceCheckController {
private ConfirmCheckService ccService; private ConfirmCheckService ccService;
@Autowired @Autowired
private MyWebSocket myWebSocket; private MyWebSocket myWebSocket;
@Autowired
private SelfCheckController selfCheckController;
@GetMapping("/area/{fatherId}") @GetMapping("/area/{fatherId}")
@ApiOperation(value = "查询指定区域下的所有区域信息") @ApiOperation(value = "查询指定区域下的所有区域信息")
...@@ -140,6 +134,7 @@ public class DeviceCheckController { ...@@ -140,6 +134,7 @@ public class DeviceCheckController {
return statVoList; return statVoList;
} }
@ApiOperation(value = "根据关键字分页查询核查统计数据") @ApiOperation(value = "根据关键字分页查询核查统计数据")
@PostMapping("/stat") @PostMapping("/stat")
public Page<CheckStatTableVo> findStatByKeyword( public Page<CheckStatTableVo> findStatByKeyword(
...@@ -195,6 +190,7 @@ public class DeviceCheckController { ...@@ -195,6 +190,7 @@ public class DeviceCheckController {
return ResponseEntity.ok(new ResultObj<>(cdVo)); return ResponseEntity.ok(new ResultObj<>(cdVo));
} }
/** /**
* 该接口负责处理以下跳转情况 * 该接口负责处理以下跳转情况
* 1 - 统计跳转 * 1 - 统计跳转
...@@ -269,13 +265,11 @@ public class DeviceCheckController { ...@@ -269,13 +265,11 @@ public class DeviceCheckController {
.collect(toList()); .collect(toList());
totalList.addAll(casList); totalList.addAll(casList);
} }
//
String areaName = auService.findOne(AuExample.UnitId, child.getOwnUnit()).getName(); String areaName = auService.findOne(AuExample.UnitId, child.getOwnUnit()).getName();
// CheckAreaStatVo cas = combineCaList(totalList, areaName); CheckAreaStatVo cas = combineCaList(totalList, areaName);
//
// LinkCheckDetail lcd = rev2lcd(child, endTime, updateTime, cas.reverse());
LinkCheckDetail lcd = cas2lcd(totalList, child, areaName);
LinkCheckDetail lcd = rev2lcd(child, endTime, updateTime,cas.reverse());
lcd.setCheckUnit(unitName); lcd.setCheckUnit(unitName);
if (child.getTitle().contains("统计确认待办任务")) { if (child.getTitle().contains("统计确认待办任务")) {
lcd.setCheckSituation("统计确认待办任务"); lcd.setCheckSituation("统计确认待办任务");
...@@ -305,13 +299,16 @@ public class DeviceCheckController { ...@@ -305,13 +299,16 @@ public class DeviceCheckController {
if (casList.isEmpty()) { if (casList.isEmpty()) {
cas = new CheckAreaStatVo("默认地区", 0, 0, 0, 0, 0, 0); cas = new CheckAreaStatVo("默认地区", 0, 0, 0, 0, 0, 0);
} else { } else {
// cas = combineCaList(casList, unitName); cas = combineCaList(casList, unitName);
cas = casList.get(0);
} }
// LinkExamDetail led = rev2led(child, endTime, updateTime, cas.reverse()); // CheckAreaStatVo cas = parseStatString2Vo(child.parse2Bto(), childDetail).stream()
LinkExamDetail led = cas2led(cas, child, endTime, updateTime); // .map(CheckDeviceStatVo::getAreaStatList)
// .flatMap(checkAreaStatVos -> checkAreaStatVos.stream())
// .reduce(CheckAreaStatVo::combine)
// .orElse(new CheckAreaStatVo("默认地区", 0, 0, 0, 0, 0, 0));
LinkExamDetail led = rev2led(child, endTime, updateTime,cas.reverse());
led.setCheckUnit(unitName); led.setCheckUnit(unitName);
ledList.add(led); ledList.add(led);
...@@ -358,7 +355,34 @@ public class DeviceCheckController { ...@@ -358,7 +355,34 @@ public class DeviceCheckController {
int i = 0; int i = 0;
for (Task child : childTask) { for (Task child : childTask) {
LinkExamDetail led = getLed(endTime, updateTime, child); Integer childBusType = child.getBusinessType();
Integer childBusId = child.getBillId();
DeviceCheckDetail childDetail = detailRepo.findById(childBusId).get();
String unitName = childDetail.getCheckUnit();
List<CheckAreaStatVo> casList = parseStatString2Vo(child.parse2Bto(), childDetail).stream()
.map(CheckDeviceStatVo::getAreaStatList)
.flatMap(checkAreaStatVos -> checkAreaStatVos.stream())
.collect(toList());
//自查的areaName要从detail里找
String areaName = childDetail.getCheckUnit();
CheckAreaStatVo cas;
if (casList.isEmpty()) {
cas = new CheckAreaStatVo("默认地区", 0, 0, 0, 0, 0, 0);
} else {
cas = combineCaList(casList, areaName);
}
//
// CheckAreaStatVo cas = parseStatString2Vo(child.parse2Bto(), childDetail).stream()
// .map(CheckDeviceStatVo::getAreaStatList)
// .flatMap(checkAreaStatVos -> checkAreaStatVos.stream())
// .reduce(CheckAreaStatVo::combine)
// .get();
LinkExamDetail led = rev2led(child, endTime, updateTime,cas.reverse());
led.setCheckUnit(unitName);
//设置名称 //设置名称
led.setExamName(groupNames.get(i)); led.setExamName(groupNames.get(i));
...@@ -384,37 +408,8 @@ public class DeviceCheckController { ...@@ -384,37 +408,8 @@ public class DeviceCheckController {
} }
@NotNull
private LinkExamDetail getLed(LocalDateTime endTime, LocalDateTime updateTime, Task child) {
Integer childBusType = child.getBusinessType();
Integer childBusId = child.getBillId();
DeviceCheckDetail childDetail = detailRepo.findById(childBusId).get();
String unitName = childDetail.getCheckUnit();
List<CheckAreaStatVo> casList = parseStatString2Vo(child.parse2Bto(), childDetail).stream()
.map(CheckDeviceStatVo::getAreaStatList)
.flatMap(checkAreaStatVos -> checkAreaStatVos.stream())
.collect(toList());
//自查的areaName要从detail里找
String areaName = childDetail.getCheckUnit();
CheckAreaStatVo cas;
if (casList.isEmpty()) {
cas = new CheckAreaStatVo("默认地区", 0, 0, 0, 0, 0, 0);
} else {
cas = casList.get(0);
}
LinkExamDetail led = cas2led(cas, child, endTime, updateTime);
led.setCheckUnit(unitName);
return led;
}
//进行了更新 使用修改时间去做是否逾期判断 //进行了更新 使用修改时间去做是否逾期判断
private LinkCheckDetail rev2lcd(Task task, LocalDateTime endTime, LocalDateTime updateTime, RevAreaStat revAreaStat) { private LinkCheckDetail rev2lcd(Task task, LocalDateTime endTime, LocalDateTime updateTime,RevAreaStat revAreaStat) {
LinkCheckDetail lcd = new LinkCheckDetail(); LinkCheckDetail lcd = new LinkCheckDetail();
lcd.setId(task.getBillId()); lcd.setId(task.getBillId());
...@@ -481,100 +476,8 @@ public class DeviceCheckController { ...@@ -481,100 +476,8 @@ public class DeviceCheckController {
return lcd; return lcd;
} }
/**
* lcd 里的列表都为检查,因此是集合对
*
* @return
*/
private LinkCheckDetail cas2lcd(List<CheckAreaStatVo> casList, Task task, String finalCityName) {
LinkCheckDetail lcd = new LinkCheckDetail();
lcd.setId(task.getBillId());
//全部为0->0,全部为2->2,否则1
boolean waitStart = casList.stream()
.allMatch(cas -> cas.getComProgress() == 0);
boolean isFinished = casList.stream()
.allMatch(cas -> cas.getComProgress() == 2) || task.getBillStatus().equals(END);
if (waitStart) {
lcd.setCheckSituation("等待核查");
} else if (isFinished) {
lcd.setCheckSituation("已完成");
} else {
lcd.setCheckSituation("核查中");
}
boolean waitAudit = casList.stream()
.allMatch(cas -> cas.getComSituation() == 10);
// 需要每一个城市都有无误(即12) 才算无误
long cityCount = casList.stream().count();
long okCount = casList.stream()
.filter(cas -> cas.getComSituation() == 12)
.count();
boolean allOk = okCount >= cityCount;
if (isFinished) {
if (waitAudit) {
lcd.setCheckResult("待审核");
} else if (allOk) {
lcd.setCheckResult("无误");
} else {
lcd.setCheckResult("审核中");
}
}
lcd.setCheckUnit(finalCityName + "局");
return lcd;
}
/**
* led 里的列表都为自查,因此都是单个对象
*
* @return
*/
private LinkExamDetail cas2led(CheckAreaStatVo cas, Task task, LocalDateTime endTime, LocalDateTime updateTime) {
LinkExamDetail led = new LinkExamDetail();
led.setId(task.getBillId());
int comProgress = cas.getComProgress();
int comSituation = cas.getComSituation();
if (comProgress == 0) {
led.setCheckSituation("准备核查");
} else if (comProgress == 1) {
led.setCheckSituation("核查中");
} else if (comProgress == 2) {
if (endTime.isBefore(updateTime)) {
led.setCheckSituation("逾期完成");
} else {
led.setCheckSituation("完成");
}
}
if (comProgress == 0 || comProgress == 1) {
led.setCheckResult("无");
} else {
if (comSituation == 10) {
led.setCheckResult("待审核");
} else if (comSituation == 12) {
led.setCheckResult("无误");
} else if (comSituation == 13) {
led.setCheckResult("未通过");
} else {
led.setCheckResult("缺省");
}
}
led.setCheckUnit(cas.getAreaName() + "局");
return led;
}
//修改 //修改
private LinkExamDetail rev2led(Task task, LocalDateTime endTime, LocalDateTime updateTime, RevAreaStat revAreaStat) { private LinkExamDetail rev2led(Task task, LocalDateTime endTime, LocalDateTime updateTime,RevAreaStat revAreaStat) {
LinkExamDetail led = new LinkExamDetail(); LinkExamDetail led = new LinkExamDetail();
led.setId(task.getBillId()); led.setId(task.getBillId());
...@@ -683,7 +586,7 @@ public class DeviceCheckController { ...@@ -683,7 +586,7 @@ public class DeviceCheckController {
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.findById(statId).get(); DeviceCheckStat deviceCheckStat = statRepo.getOne(statId);
String title = deviceCheckStat.getTitle(); String title = deviceCheckStat.getTitle();
String remark = deviceCheckStat.getRemark(); String remark = deviceCheckStat.getRemark();
return ResponseEntity.ok(new CheckTitleAndTimeVo(title, deviceCheckStat.getEndTime(), remark)); return ResponseEntity.ok(new CheckTitleAndTimeVo(title, deviceCheckStat.getEndTime(), remark));
...@@ -713,8 +616,8 @@ public class DeviceCheckController { ...@@ -713,8 +616,8 @@ public class DeviceCheckController {
@ApiOperation(value = "检查地区是否发起核查", notes = "检查地区是否发起核查") @ApiOperation(value = "检查地区是否发起核查", notes = "检查地区是否发起核查")
@PostMapping("/checkPossible") @PostMapping("/checkPossible")
public ResponseEntity checkPossible(@RequestBody UnitIds unitIds) { public ResponseEntity checkPossible(@RequestBody UnitIds uuid) {
List<String> unitNames = unitIds.getIds().stream() List<String> unitNames = uuid.getIds().stream()
.map(id -> auService.findOne(AuExample.UnitId, id)) .map(id -> auService.findOne(AuExample.UnitId, id))
.map(AreaUnit::getUnitName) .map(AreaUnit::getUnitName)
.collect(toList()); .collect(toList());
...@@ -882,15 +785,12 @@ public class DeviceCheckController { ...@@ -882,15 +785,12 @@ public class DeviceCheckController {
} }
List<String> tmpString = new ArrayList<>(); List<String> tmpString = new ArrayList<>();
// 拼接检查组和检查组成员
for (CheckExamDetailVo vo : examDetailVos) { for (CheckExamDetailVo vo : examDetailVos) {
for (Integer u : vo.getUnitIds()) { tmpString.add(vo.getGroupName() + "," + vo.getUserNames().stream().collect(joining(",")));
tmpString.add(vo.getGroupName() + "," + vo.getUserNames().stream().collect(joining(",")));
}
} }
String groupUserString = tmpString.stream().collect(joining("|")); String groupUserString = tmpString.stream().collect(joining("|"));
List<Integer> unitIds = examDetailVos.stream().flatMap(cv -> cv.getUnitIds().stream()).collect(toList()); List<Integer> unitIds = examDetailVos.stream().map(CheckExamDetailVo::getUnitId).collect(toList());
List<Units> checkedUnits = unitsRepo.findAllById(unitIds); List<Units> checkedUnits = unitsRepo.findAllById(unitIds);
List<String> checkedUnitNames = checkedUnits.stream().map(Units::getName).collect(toList()); List<String> checkedUnitNames = checkedUnits.stream().map(Units::getName).collect(toList());
...@@ -959,37 +859,30 @@ public class DeviceCheckController { ...@@ -959,37 +859,30 @@ public class DeviceCheckController {
// 3. 构建被核查单位的详情账单与Task // 3. 构建被核查单位的详情账单与Task
// 对每个需要核查的单位构建其detail账单与task // 对每个需要核查的单位构建其detail账单与task
for (CheckExamDetailVo ed : examDetailVos) { for (CheckExamDetailVo ed : examDetailVos) {
List<Integer> uid = ed.getUnitIds(); Units unit = unitsRepo.findById(ed.getUnitId()).get();
for (Integer u : uid) { String names = ed.getUserNames().stream().collect(joining(","));
// 3-1 构建被查单位的 自查账单
Units unit = unitsRepo.findById(u).get(); DeviceCheckDetail unitDetailDoc = DeviceCheckDetail.EmptyWithChecker(names + "|" + ed.getRemark(), ceVo.getTitle() + "%^&" + ed.getRemark(), 0, 0, 0, 0, unit.getName(), devInLib.getOrDefault(unit.getName(), new ArrayList<>()), devNotInLib.getOrDefault(unit.getName(), new ArrayList<>()));
String names = ed.getUserNames().stream().collect(joining(",")); DeviceCheckDetail detail = detailRepo.save(unitDetailDoc);
detailIds.add(detail.getId());
// 3-1 构建被查单位的 自查账单 // 将id放入统计中去 model -> areaName -> detailId
DeviceCheckDetail unitDetailDoc = DeviceCheckDetail.EmptyWithChecker(names + "|" + ed.getRemark(), ceVo.getTitle() + "%^&" + ed.getRemark(), 0, 0, 0, 0, unit.getName(), devInLib.getOrDefault(unit.getName(), new ArrayList<>()), devNotInLib.getOrDefault(unit.getName(), new ArrayList<>())); String areaName = auService.findOne(AuExample.UnitId, unit.getUnitId()).getName();
DeviceCheckDetail detail = detailRepo.save(unitDetailDoc); for (CheckDeviceStatVo statVo : deviceStatVos) {
detailIds.add(detail.getId()); for (CheckAreaStatVo asv : statVo.getAreaStatList()) {
// 将id放入统计中去 model -> areaName -> detailId if (asv.getAreaName().equals(areaName)) {
String areaName = auService.findOne(AuExample.UnitId, unit.getUnitId()).getName(); asv.setAreaStatId(statId);
for (CheckDeviceStatVo statVo : deviceStatVos) { asv.setAreaDetailId(detail.getId());
for (CheckAreaStatVo asv : statVo.getAreaStatList()) {
if (asv.getAreaName().equals(areaName)) {
asv.setAreaStatId(statId);
asv.setAreaDetailId(detail.getId());
}
} }
} }
// 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);
checkedTask.setRemark(String.valueOf(CHECK_EXAM_DETAIL_0.id));
checkedTask.setCustomInfo("manual");
checkedTask = taskService.start(checkedTask);
desBillMap.put(detail.getId(), ed.getRemark());
desMap.put(checkedTask.getId(), ed.getRemark());
} }
// 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);
checkedTask.setRemark(String.valueOf(CHECK_EXAM_DETAIL_0.id));
checkedTask.setCustomInfo("manual");
checkedTask = taskService.start(checkedTask);
desBillMap.put(detail.getId(), ed.getRemark());
desMap.put(checkedTask.getId(), ed.getRemark());
} }
// 4. 重新设置并保存统计账单 // 4. 重新设置并保存统计账单
...@@ -1023,6 +916,7 @@ public class DeviceCheckController { ...@@ -1023,6 +916,7 @@ public class DeviceCheckController {
} }
/** /**
* 根据taskId查询Remark * 根据taskId查询Remark
*/ */
...@@ -1033,6 +927,7 @@ public class DeviceCheckController { ...@@ -1033,6 +927,7 @@ public class DeviceCheckController {
return ResponseEntity.ok(desBillMap.get(billId)); return ResponseEntity.ok(desBillMap.get(billId));
} }
private TaskBto selectProvTask(Integer taskId) { private TaskBto selectProvTask(Integer taskId) {
TaskBto taskBto = taskService.get(taskId); TaskBto taskBto = taskService.get(taskId);
if (taskBto.getParentTaskId() == 0) { if (taskBto.getParentTaskId() == 0) {
...@@ -1041,6 +936,7 @@ public class DeviceCheckController { ...@@ -1041,6 +936,7 @@ public class DeviceCheckController {
return selectProvTask(taskBto.getParentTaskId()); return selectProvTask(taskBto.getParentTaskId());
} }
/** /**
* 对于专员A来说的逻辑 * 对于专员A来说的逻辑
* 1. 修改detailString * 1. 修改detailString
...@@ -1203,126 +1099,84 @@ public class DeviceCheckController { ...@@ -1203,126 +1099,84 @@ public class DeviceCheckController {
return ResponseEntity.ok(new ResultObj<>("专管B操作成功")); return ResponseEntity.ok(new ResultObj<>("专管B操作成功"));
} }
@ApiOperation(value = "自查的回退接口") /**
@PutMapping("/audit/rollback/{id}") * 用于核查的回退接口
public ResponseEntity rollBack(@PathVariable Integer id) { *
//1. bill单的自查将百位数变为3 * @param id 办结的done接口id
DeviceCheckDetail detail = detailRepo.findById(id).get(); * @return
String detailString = detail.getCheckDetail(); */
String initalDetail = Arrays.stream(detailString.split(",")) @ApiOperation(value = "核查回退")
.map(s -> s.split("-")[0] + "-" + 119) @PutMapping("/check/rollback/{id}")
.collect(joining(",")); @Transactional(rollbackFor = Exception.class)
public ResponseEntity checkRollback(@PathVariable Integer id) {
String updateDetail = changeHunds(detailString,3); log.info("[核查模块] 将id = {} 的检查任务进行回退", id);
Specification<Task> donePred = Specifications.<Task>and()
detailRepo.updateCheckDetail(id, updateDetail, "", 0, 0, 0); .eq("billStatus", CONFIRM_STAT_0.id)
.eq("billId", id)
.eq("businessType", CONFIRM_CHECK_STAT.id)
.build();
TaskBto doneTask = taskRepo.findOne(donePred).get().parse2Bto();
//2. 当前任务结束,开启一个新的 退回任务(连带一个新的detail) Specification<Task> checkPred = Specifications.<Task>and()
TaskBto currentTask = taskService.get(id, CONFIRM_CHECK_DETAIL.id); .eq("customInfo", "exam")
TaskBto newTask = currentTask.toDo().copy().parse2Bto(); .eq("billId", id)
currentTask.setCustomInfo(currentTask.getCustomInfo()); .eq("businessType", CONFIRM_CHECK_STAT.id)
taskService.moveToEnd(currentTask); .build();
// 创建新的detail 新的detail会在B的时候加入,所以老的stat要去除掉 Task checkTask = taskRepo.findOne(checkPred).get();
DeviceCheckDetail cDetail = detail.copyWithoutId();
cDetail.setId(null);
cDetail.setCheckDetail(initalDetail);
cDetail = detailRepo.save(cDetail);
// 创建新的任务
newTask.setBillStatus(CHECK_EXAM_DETAIL_0.id);
newTask.setBillId(cDetail.getId());
newTask.setId(0);
newTask.setCustomInfo(newTask.getCustomInfo());
newTask.getInvolveUserIdList().add(0);
newTask.setCurrentPoint(newTask.getInvolveUserIdList().size()-1);
taskService.start(newTask);
//3. 在stat的remark中追加信息 - 找到currentTask在其中的顺位
TaskBto fatherTask = taskService.get(currentTask.getParentTaskId());
List<Task> childTask = taskRepo.findAllByParentTaskId(fatherTask.getId());
int pos = 0;
for (int i = 0; i < childTask.size(); i++) {
if (childTask.get(i).getId().equals(currentTask.getId())) {
log.info("[核查模块] 记录remark的pos位置 = {}", i);
}
}
DeviceCheckStat dcs = statRepo.findById(fatherTask.getBillId()).get(); //1.将市检查的任务节点回退到等待办结的状态
String[] groups = dcs.getRemark().split("\\|"); taskService.moveToSpecial(checkTask.parse2Bto(), CHECK_EXAM_STAT_1);
String pading = groups[pos];
dcs.setRemark(dcs.getRemark() + "|" + pading);
log.info("[核查模块] 补充remark = {}", pading);
// 老的stat要去除掉对应areaName的数据 //2.删除掉省的办结任务
String areaName = auService.findOne(AuExample.UnitName, detail.getCheckUnit()).getName(); if (Objects.isNull(doneTask)) {
CheckStatVo csv = transUtil.checkStatDo2Vo(dcs); log.info("[核查模块] 没有找到对应的办结任务");
for (CheckDeviceStatVo vo : csv.getDeviceStatVoList()) { } else {
List<CheckAreaStatVo> filterList = vo.getAreaStatList().stream() log.info("[核查模块] 删除id = {}的办结任务", doneTask.getId());
.filter(casv -> !casv.getAreaName().equals(areaName)).collect(toList()); taskRepo.deleteById(doneTask.getId());
if (filterList.size() != vo.getAreaStatList().size()){
log.info("[核查模块] 回退操作-将退回的数据从统计中去除了.");
vo.setAreaStatList(filterList);
}
} }
statRepo.save(csv.toDo()); return ResponseEntity.ok(new ResultObj<>("核查回退操作成功!"));
//4.父级任务变为进行中
fatherTask.setBillStatus(CHECK_EXAM_STAT_1.id);
taskRepo.save(fatherTask.toDo());
return ResponseEntity.ok(new ResultObj<>("回退操作成功!"));
} }
@PutMapping("/audit/verify/{id}")
@ApiOperation(value = "自查的通过接口")
public ResponseEntity verify(@PathVariable Integer id){
//将自查的情况的百位数全部替换成2
DeviceCheckDetail detail = detailRepo.findById(id).get();
String updatedString = changeHunds(detail.getCheckDetail(), 2);
detail.setCheckDetail(updatedString);
log.info("[核查模块] 审核通过 - 更新后的detailString形如 {}",updatedString.split(",")[0]);
detailRepo.save(detail);
//将对应stat中地区的comProgress 改为 2 comsitution 改为12
String areaName = auService.findOne(AuExample.UnitName, detail.getCheckUnit()).getName();
TaskBto currentTask = taskService.get(id, CONFIRM_CHECK_DETAIL.id);
TaskBto fatherTask = taskService.get(currentTask.getParentTaskId());
DeviceCheckStat dcs = statRepo.findById(fatherTask.getBillId()).get();
CheckStatVo csv = transUtil.checkStatDo2Vo(dcs);
for (CheckDeviceStatVo vo : csv.getDeviceStatVoList()) {
for (CheckAreaStatVo av : vo.getAreaStatList()) {
if (av.getAreaName().equals(areaName)){
log.info("[核查模块] 审核通过 - 地区 = {} 的统计数据在统计信息中被成功修改了",areaName);
av.auditPassed();
}
}
}
return ResponseEntity.ok(new ResultObj<>("审核通过!"));
}
/** /**
* 将detailString里的百位数改为指定数字 * 用于检查页面的回退接口
* @param detailString 要更改的自查详情字符串 *
* @param value 想要改成的数字 * @param id 自查的detail id
* @return * @return
*/ */
private String changeHunds(String detailString,Integer value) { @ApiOperation(value = " ")
String updateDetail = Arrays.stream(detailString.split(",")) @PutMapping("/exam/rollback/{id}")
.map(s -> { @Transactional(rollbackFor = Exception.class)
Integer number = Integer.valueOf(s.split("-")[1]); public ResponseEntity examRollback(@PathVariable Integer id) {
int digit = number % 10; log.info("[核查模块] 进行检查回退操作,要回退的检查detail id为 {}", id);
int tens = number / 10 % 10; //1. 回退device-detail数据 包括 detail String,checkResult,userAId,userBid,checkedCount
number = value * 100 + tens * 10 + digit; // 将原来的checkDetail 的检查状态统一更改为 8 - 已退回
return s.split("-")[0] + "-" + number; String detail = detailRepo.getOne(id).getCheckDetail();
}) String updateDetail = Arrays.stream(detail.split(","))
.map(s -> s.split("-")[0] + "-" + "8")
.collect(joining(",")); .collect(joining(","));
return updateDetail; 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<>("检查回退操作成功!"));
}
/** /**
* 将统计数据中指定城市的统计数据重置 * 将统计数据中指定城市的统计数据重置
...@@ -1449,7 +1303,8 @@ public class DeviceCheckController { ...@@ -1449,7 +1303,8 @@ public class DeviceCheckController {
log.info("[核查模块] 办结统计待办操作成功"); log.info("[核查模块] 办结统计待办操作成功");
return ResponseEntity.ok(new ResultObj<>("办结统计待办确认完毕")); return ResponseEntity.ok(new ResultObj<>("办结统计待办确认完毕"));
} }
@Autowired
private SelfCheckController selfCheckController;
/** /**
* @param statId 统计账单主键id * @param statId 统计账单主键id
*/ */
...@@ -1585,10 +1440,8 @@ public class DeviceCheckController { ...@@ -1585,10 +1440,8 @@ public class DeviceCheckController {
.collect(toList()); .collect(toList());
long start = System.currentTimeMillis(); long start = System.currentTimeMillis();
Map<Integer, DeviceLibrary> deviceMap = deviceRepo.findAllByIdIn(idList)
List<DeviceLibrary> allDevice = dcService.getAllDeviceLibraryList(); .stream()
Map<Integer, DeviceLibrary> deviceMap = allDevice.stream()
.filter(d -> idList.contains(d.getId()))
.collect(toMap(DeviceLibrary::getId, Function.identity())); .collect(toMap(DeviceLibrary::getId, Function.identity()));
long end = System.currentTimeMillis(); long end = System.currentTimeMillis();
log.info("[核查TEST] 批量查询id集合耗时 {} ms ", end - start); log.info("[核查TEST] 批量查询id集合耗时 {} ms ", end - start);
...@@ -1604,34 +1457,23 @@ public class DeviceCheckController { ...@@ -1604,34 +1457,23 @@ public class DeviceCheckController {
DeviceLibrary checkDevice = deviceMap.get(deviceId); DeviceLibrary checkDevice = deviceMap.get(deviceId);
CheckAreaStatVo checkAreaStatVo; CheckAreaStatVo checkAreaStatVo;
// 百位数 0/1 待审核 2 无误 3未通过
// 十位数 1 人工 2 自动 // 十位数 1 人工 2 自动
// 0缺失1无误2新增3不在库 8已退回 9未检查 // 0缺失1无误2新增3不在库 8已退回 9未检查
int digits = proofResult % 10; int digits = proofResult % 10;
int tens = proofResult / 10 % 10;
int huns = proofResult / 100 % 10;
// 个位数判断自查结果 if (digits == 8) {
if (digits == 9) { checkAreaStatVo = new CheckAreaStatVo(areaName, 1, 1, 3, -1, statId, detailId);
checkAreaStatVo = new CheckAreaStatVo(areaName, 1, 1, 0, 10, statId, detailId); } else if (digits == 9) {
checkAreaStatVo = new CheckAreaStatVo(areaName, 1, 1, 0, 0, statId, detailId);
} else if (digits == 3) { } else if (digits == 3) {
//跳过非在库的统计 //跳过非在库的统计
continue; continue;
} else if (digits == 1) { } else if (digits == 1) {
checkAreaStatVo = new CheckAreaStatVo(areaName, 1, 1, 2, 10, statId, detailId); checkAreaStatVo = new CheckAreaStatVo(areaName, 1, 1, 2, 0, statId, detailId);
} else if (digits == 0) { } else if (digits == 0) {
checkAreaStatVo = new CheckAreaStatVo(areaName, 0, 1, 2, 10, statId, detailId); checkAreaStatVo = new CheckAreaStatVo(areaName, 0, 1, 2, 1, statId, detailId);
} else { } else {
checkAreaStatVo = new CheckAreaStatVo(areaName, 1, 1, 2, 10, statId, detailId); checkAreaStatVo = new CheckAreaStatVo(areaName, 1, 1, 2, 1, statId, detailId);
}
// 百位数判断审核情况 0,1未检查 2是无误 3是未通过
if (huns == 0 || huns == 1) {
checkAreaStatVo.setComSituation(10);
} else if (huns == 2) {
checkAreaStatVo.setComSituation(12);
} else if (huns == 3) {
checkAreaStatVo.setComSituation(13);
} }
List<CheckAreaStatVo> areaStatVoList = new ArrayList<>(); List<CheckAreaStatVo> areaStatVoList = new ArrayList<>();
...@@ -1814,7 +1656,7 @@ public class DeviceCheckController { ...@@ -1814,7 +1656,7 @@ public class DeviceCheckController {
return new CheckAreaStatVo(finalCityName, actualCount, supposeCount, finalProgress, finalSituation, 0, 0); return new CheckAreaStatVo(finalCityName, actualCount, supposeCount, finalProgress, finalSituation, 0, 0);
} }
private void findBySystem() { private void findBySystem(){
selfCheckController.findBySystem1(); selfCheckController.findBySystem1();
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论