xzc 1 dzień temu
rodzic
commit
d39bbd8273

+ 4 - 0
tz-module-pressure2/tz-module-pressure2-api/src/main/java/cn/start/tz/module/pressure2/enums/ErrorCodeConstants.java

@@ -217,4 +217,8 @@ public interface ErrorCodeConstants{
     ErrorCode USER_TEMPLATE_LIBRARY_NOT_EXISTS = new ErrorCode(5020, "用户操作指导书模板库不存在");
 
     ErrorCode DEFAULT_APPROVAL_NOT_EXISTS = new ErrorCode(5021, "默认审批配置不存在");
+
+    ErrorCode REPORT_NOT_EXISTS = new ErrorCode(5022, "报告不存在");
+    ErrorCode RECHECK_CANNOT_CANCEL = new ErrorCode(5023, "当前状态不允许撤销校核");
+    ErrorCode RECHECK_CANCEL_NOT_SUBMITTER = new ErrorCode(5024, "仅提交人可撤销校核");
 }

+ 8 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/boilertaskorder/BoilerTaskOrderController.java

@@ -418,6 +418,14 @@ public class BoilerTaskOrderController {
         return success(result);
     }
 
+    @PutMapping("/order-item/report/cancel-recheck")
+    @Operation(summary = "撤销校核提交(回退到记录录入)")
+    @Parameter(name = "id", description = "报告ID", required = true)
+    public CommonResult<Boolean> cancelRecheckReport(@RequestParam("id") String id) {
+        boilerTaskOrderService.cancelRecheckReport(id);
+        return success(true);
+    }
+
     @PutMapping("/order-item/choice/recheck")
     @Operation(summary = "任务单-设备项选择校核人")
     public CommonResult<Boolean> recheckOrderItem(@RequestBody RecheckOrderItemVO recheckOrderItemVO) {

+ 3 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/boilertaskorder/vo/BoilerOrderItemReportVO.java

@@ -52,6 +52,9 @@ public class    BoilerOrderItemReportVO {
 
     private String recheckId;
 
+    @Schema(description = "校核提交人ID")
+    private String recheckSubmitId;
+
     @Schema(description = "报告地址")
     private String reportUrl;
 

+ 8 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/pipetaskorder/PipeTaskOrderController.java

@@ -371,6 +371,14 @@ public class PipeTaskOrderController {
         return success(result);
     }
 
+    @PutMapping("/order-item/report/cancel-recheck")
+    @Operation(summary = "撤销校核提交(回退到记录录入)")
+    @Parameter(name = "id", description = "报告ID", required = true)
+    public CommonResult<Boolean> cancelRecheckReport(@RequestParam("id") String id) {
+        pipeTaskOrderService.cancelRecheckReport(id);
+        return success(true);
+    }
+
     @PutMapping("/order-item/choice/recheck")
     @Operation(summary = "任务单-设备项选择校核人")
     public CommonResult<Boolean> recheckOrderItem(@RequestBody RecheckOrderItemVO recheckOrderItemVO) {

+ 3 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/pipetaskorder/vo/PipeOrderItemReportVO.java

@@ -52,6 +52,9 @@ public class PipeOrderItemReportVO {
 
     private String recheckId;
 
+    @Schema(description = "校核提交人ID")
+    private String recheckSubmitId;
+
     @Schema(description = "报告地址")
     private String reportUrl;
 

+ 7 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorder/BoilerTaskOrderService.java

@@ -165,6 +165,13 @@ public interface BoilerTaskOrderService extends IService<BoilerTaskOrderDO>  {
 
     Boolean recheckOrderItem(RecheckOrderItemVO recheckOrderItemVO);
 
+    /**
+     * 撤销校核提交(回退到记录录入)
+     * 仅限当前登录用户为提交人时撤销
+     * @param reportId 报告ID
+     */
+    void cancelRecheckReport(String reportId);
+
     void updateTaskMainCheck(@Valid TaskOrderMainCheckVO updateReqVO);
 
     void updateOrderItemApprove(OrderItemApprovalVO orderItemPrepareVO);

+ 57 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorder/BoilerTaskOrderServiceImpl.java

@@ -5872,6 +5872,63 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
 
     }
 
+    @Override
+    public void cancelRecheckReport(String reportId) {
+        // 1. 校验报告存在
+        BoilerTaskOrderItemReportDO reportDO = taskOrderItemReportMapper.selectById(reportId);
+        if (reportDO == null) {
+            throw exception(REPORT_NOT_EXISTS);
+        }
+        // 1.1 仅审核中(100)状态可撤销
+        if (!Integer.valueOf(100).equals(reportDO.getRecheckStatus())) {
+            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.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.RECHECK.getStatus())) {
+            // 检查该设备项下是否还有其他审核中的报告
+            Long pendingCount = taskOrderItemReportMapper.selectCount(
+                    new LambdaQueryWrapperX<BoilerTaskOrderItemReportDO>()
+                            .eq(BoilerTaskOrderItemReportDO::getOrderItemId, reportDO.getOrderItemId())
+                            .ne(BoilerTaskOrderItemReportDO::getId, reportId)
+                            .eq(BoilerTaskOrderItemReportDO::getRecheckStatus, 100));
+            if (pendingCount == 0) {
+                BoilerTaskOrderItemDO updateItem = new BoilerTaskOrderItemDO();
+                updateItem.setId(taskOrderItemDO.getId());
+                updateItem.setTaskStatus(TaskOrderStatusEnum.ENTER.getStatus());
+                boilerTaskOrderItemMapper.updateById(updateItem);
+            }
+        }
+
+        // 5. 移除首页待办
+        indexTodoService.deleteIndexToDO(IndexTodoTypeNameEnum.RECHECK_ORDER_ITEM.getCode(),
+                null, reportId, 200);
+    }
+
     @Override
     public void updateTaskMainCheck(TaskOrderMainCheckVO updateReqVO) {
 

+ 7 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorder/PipeTaskOrderService.java

@@ -141,6 +141,13 @@ public interface PipeTaskOrderService extends IService<PipeTaskOrderDO>  {
 
     Boolean recheckOrderItem(RecheckOrderItemVO recheckOrderItemVO);
 
+    /**
+     * 撤销校核提交(回退到记录录入)
+     * 仅限当前登录用户为提交人时撤销
+     * @param reportId 报告ID
+     */
+    void cancelRecheckReport(String reportId);
+
     void updateTaskMainCheck(@Valid TaskOrderMainCheckVO updateReqVO);
 
     void updateOrderItemApprove(OrderItemApprovalVO orderItemPrepareVO);

+ 42 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorder/PipeTaskOrderServiceImpl.java

@@ -228,6 +228,9 @@ import static cn.start.tz.framework.security.core.util.SecurityFrameworkUtils.ge
 import static cn.start.tz.module.infra.api.sign.dto.SignValuesDTO.SIGN_GZ_INS_SEAL2;
 import static cn.start.tz.module.pressure.enums.ErrorCodeConstants.REPORT_TEMPLATE_NOT_EXISTS;
 import static cn.start.tz.module.pressure2.enums.ErrorCodeConstants.BOILER_TASK_ORDER_NOT_EXISTS;
+import static cn.start.tz.module.pressure2.enums.ErrorCodeConstants.REPORT_NOT_EXISTS;
+import static cn.start.tz.module.pressure2.enums.ErrorCodeConstants.RECHECK_CANNOT_CANCEL;
+import static cn.start.tz.module.pressure2.enums.ErrorCodeConstants.RECHECK_CANCEL_NOT_SUBMITTER;
 import static java.time.LocalDate.now;
 
 /**
@@ -4232,6 +4235,45 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
 
     }
 
+    @Override
+    public void cancelRecheckReport(String reportId) {
+        // 1. 校验报告存在
+        PipeTaskOrderItemReportDO reportDO = taskOrderItemReportMapper.selectById(reportId);
+        if (reportDO == null) {
+            throw exception(REPORT_NOT_EXISTS);
+        }
+        // 1.1 仅审核中(100)状态可撤销
+        if (!Integer.valueOf(100).equals(reportDO.getRecheckStatus())) {
+            throw exception(RECHECK_CANNOT_CANCEL);
+        }
+        // 1.2 仅提交人可撤销
+        String userId = String.valueOf(getLoginUserId());
+        if (!userId.equals(reportDO.getRecheckSubmitId())) {
+            throw exception(RECHECK_CANCEL_NOT_SUBMITTER);
+        }
+
+        // 2. 回退报告状态到记录录入
+        PipeTaskOrderItemReportDO updateDO = new PipeTaskOrderItemReportDO();
+        updateDO.setId(reportId);
+        updateDO.setRecheckStatus(null);
+        updateDO.setRecheckId("");
+        updateDO.setRecheckName("");
+        updateDO.setRecheckSubmitId("");
+        updateDO.setRecheckSubmitTime(null);
+        updateDO.setTaskStatus(TaskOrderStatusEnum.ENTER.getStatus());
+        taskOrderItemReportMapper.updateById(updateDO);
+
+        // 3. 报告流转记录
+        PipeTaskOrderItemReportRecordDO recordDO = new PipeTaskOrderItemReportRecordDO();
+        recordDO.setReportId(reportId);
+        recordDO.setProcess(TaskOrderStatusEnum.ENTER.getStatus());
+        taskOrderItemReportRecordMapper.insert(recordDO);
+
+        // 4. 移除首页待办
+        indexTodoService.deleteIndexToDO(IndexTodoTypeNameEnum.RECHECK_ORDER_ITEM.getCode(),
+                null, reportId, 300);
+    }
+
     @Override
     public void updateTaskMainCheck(TaskOrderMainCheckVO updateReqVO) {