|
|
@@ -6141,6 +6141,73 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
|
|
|
null, reportId, 200);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void cancelApprovedRecheck(String reportId) {
|
|
|
+ // 1. 校验报告存在
|
|
|
+ BoilerTaskOrderItemReportDO reportDO = taskOrderItemReportMapper.selectById(reportId);
|
|
|
+ if (reportDO == null) {
|
|
|
+ throw exception(REPORT_NOT_EXISTS);
|
|
|
+ }
|
|
|
+ // 1.1 仅校核通过(200)且未编制报告(报告编制520)状态可撤回
|
|
|
+ if (!Integer.valueOf(200).equals(reportDO.getRecheckStatus())
|
|
|
+ || !TaskOrderStatusEnum.REPORT_PREPARE.getStatus().equals(reportDO.getTaskStatus())) {
|
|
|
+ throw exception(RECHECK_CANNOT_CANCEL);
|
|
|
+ }
|
|
|
+ // 1.2 仅提交人可撤回
|
|
|
+ String userId = String.valueOf(getLoginUserId());
|
|
|
+ if (!userId.equals(reportDO.getRecheckSubmitId())) {
|
|
|
+ throw exception(RECHECK_CANCEL_NOT_SUBMITTER);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 2. 回退报告状态到记录录入
|
|
|
+ BoilerTaskOrderItemReportDO updateDO = new BoilerTaskOrderItemReportDO();
|
|
|
+ updateDO.setId(reportId);
|
|
|
+ updateDO.setRecheckStatus(null);
|
|
|
+ updateDO.setRecheckId("");
|
|
|
+ updateDO.setRecheckName("");
|
|
|
+ updateDO.setRecheckSubmitId("");
|
|
|
+ updateDO.setRecheckSubmitTime(null);
|
|
|
+ updateDO.setRecheckDate(null);
|
|
|
+ updateDO.setRecheckReason("");
|
|
|
+ updateDO.setReturnReason("");
|
|
|
+ updateDO.setTaskStatus(TaskOrderStatusEnum.ENTER.getStatus());
|
|
|
+ taskOrderItemReportMapper.updateById(updateDO);
|
|
|
+
|
|
|
+ // 3. 报告流转记录
|
|
|
+ BoilerTaskOrderItemReportRecordDO recordDO = new BoilerTaskOrderItemReportRecordDO();
|
|
|
+ recordDO.setReportId(reportId);
|
|
|
+ recordDO.setProcess(TaskOrderStatusEnum.ENTER.getStatus());
|
|
|
+ taskOrderItemReportRecordMapper.insert(recordDO);
|
|
|
+
|
|
|
+ // 4. 回退设备项状态(如果该设备项下没有其他校核通过的报告,回退到记录录入)
|
|
|
+ BoilerTaskOrderItemDO taskOrderItemDO = boilerTaskOrderItemMapper.selectById(reportDO.getOrderItemId());
|
|
|
+ if (taskOrderItemDO != null
|
|
|
+ && taskOrderItemDO.getTaskStatus().equals(TaskOrderStatusEnum.REPORT_PREPARE.getStatus())) {
|
|
|
+ Long approvedCount = taskOrderItemReportMapper.selectCount(
|
|
|
+ new LambdaQueryWrapperX<BoilerTaskOrderItemReportDO>()
|
|
|
+ .eq(BoilerTaskOrderItemReportDO::getOrderItemId, reportDO.getOrderItemId())
|
|
|
+ .ne(BoilerTaskOrderItemReportDO::getId, reportId)
|
|
|
+ .eq(BoilerTaskOrderItemReportDO::getRecheckStatus, 200));
|
|
|
+ if (approvedCount == 0) {
|
|
|
+ BoilerTaskOrderItemDO updateItem = new BoilerTaskOrderItemDO();
|
|
|
+ updateItem.setId(taskOrderItemDO.getId());
|
|
|
+ updateItem.setTaskStatus(TaskOrderStatusEnum.ENTER.getStatus());
|
|
|
+ boilerTaskOrderItemMapper.updateById(updateItem);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Boolean batchCancelApprovedRecheck(OrderItemReportApproveBatchVO batchVO) {
|
|
|
+ if (batchVO == null || batchVO.getIds() == null || batchVO.getIds().isEmpty()) {
|
|
|
+ throw exception(RECHECK_CANNOT_CANCEL);
|
|
|
+ }
|
|
|
+ for (String id : batchVO.getIds()) {
|
|
|
+ cancelApprovedRecheck(id);
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public void updateTaskMainCheck(TaskOrderMainCheckVO updateReqVO) {
|
|
|
|