xuzhancheng 2 주 전
부모
커밋
4ea81cca0d

+ 15 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorderitemreport/BoilerTaskOrderItemReportService.java

@@ -81,6 +81,21 @@ public interface BoilerTaskOrderItemReportService extends IService<BoilerTaskOrd
 
     void updateReport();
 
+    /**
+     * 处理OA退回流程回调:根据summaryId回退报告状态并增加流转记录
+     * @param summaryId OA流程ID
+     * @param returnReason 退回原因
+     * @return 是否找到并处理了对应的报告
+     */
+    boolean handleOAReturnFlow(String summaryId, String returnReason);
+
+    /**
+     * 处理OA撤销流程:根据summaryId回退报告状态到报告编制并增加流转记录
+     * @param summaryId OA流程ID
+     * @return 是否找到并处理了对应的报告
+     */
+    boolean handleOACancelFlow(String summaryId);
+
     /**
      * 报告办结
      * @param id

+ 64 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorderitemreport/BoilerTaskOrderItemReportServiceImpl.java

@@ -362,6 +362,70 @@ public class BoilerTaskOrderItemReportServiceImpl extends ServiceImpl<BoilerTask
         taskOrderItemReportMapper.updateById(taskOrderItemReport);
     }
 
+    @Override
+    public boolean handleOACancelFlow(String summaryId) {
+        BoilerTaskOrderItemReportDO report = taskOrderItemReportMapper.selectOne(
+                new LambdaQueryWrapper<BoilerTaskOrderItemReportDO>()
+                        .eq(BoilerTaskOrderItemReportDO::getSummaryId, summaryId));
+        if (report == null) return false;
+
+        log.info("OA撤销流程:找到锅炉报告记录,id={}, 当前状态={}", report.getId(), report.getTaskStatus());
+
+        // 增加撤销流转记录
+        BoilerTaskOrderItemReportRecordDO recordDO = new BoilerTaskOrderItemReportRecordDO();
+        recordDO.setReportId(report.getId());
+        recordDO.setProcess(report.getTaskStatus());
+        recordDO.setRemark("主动撤销");
+        recordDO.setResult(500);
+        taskOrderItemReportRecordMapper.insert(recordDO);
+
+        // 回退状态到报告编制(520)
+        Integer rollbackStatus = TaskOrderStatusEnum.REPORT_PREPARE.getStatus();
+        LambdaUpdateWrapper<BoilerTaskOrderItemReportDO> updateObj = new LambdaUpdateWrapper<>();
+        updateObj.eq(BoilerTaskOrderItemReportDO::getId, report.getId());
+        updateObj.set(BoilerTaskOrderItemReportDO::getTaskStatus, rollbackStatus);
+        // 清空审批相关字段
+        updateObj.set(BoilerTaskOrderItemReportDO::getApprovalId, null);
+        updateObj.set(BoilerTaskOrderItemReportDO::getApprovalTime, null);
+        updateObj.set(BoilerTaskOrderItemReportDO::getRatifyId, null);
+        updateObj.set(BoilerTaskOrderItemReportDO::getRatifyTime, null);
+        taskOrderItemReportMapper.update(updateObj);
+        log.info("OA撤销流程:锅炉报告状态已回退到{}", rollbackStatus);
+        return true;
+    }
+
+
+    @Override
+    public boolean handleOAReturnFlow(String summaryId, String returnReason) {
+        BoilerTaskOrderItemReportDO report = taskOrderItemReportMapper.selectOne(
+                new LambdaQueryWrapper<BoilerTaskOrderItemReportDO>()
+                        .eq(BoilerTaskOrderItemReportDO::getSummaryId, summaryId));
+        if (report == null) return false;
+
+        log.info("OA退回流程:找到锅炉报告记录,id={}, 当前状态={}", report.getId(), report.getTaskStatus());
+        // 回退状态到报告编制(520)
+        Integer rollbackStatus = TaskOrderStatusEnum.REPORT_PREPARE.getStatus();
+        LambdaUpdateWrapper<BoilerTaskOrderItemReportDO> updateObj = new LambdaUpdateWrapper<>();
+        updateObj.eq(BoilerTaskOrderItemReportDO::getId, report.getId());
+        updateObj.set(BoilerTaskOrderItemReportDO::getTaskStatus, rollbackStatus);
+        updateObj.set(BoilerTaskOrderItemReportDO::getReturnReason, returnReason);
+        // 清空审批相关字段
+        updateObj.set(BoilerTaskOrderItemReportDO::getApprovalId, null);
+        updateObj.set(BoilerTaskOrderItemReportDO::getApprovalTime, null);
+        updateObj.set(BoilerTaskOrderItemReportDO::getRatifyId, null);
+        updateObj.set(BoilerTaskOrderItemReportDO::getRatifyTime, null);
+        taskOrderItemReportMapper.update(updateObj);
+        log.info("OA退回流程:锅炉报告状态已回退到{}", rollbackStatus);
+
+        // 从OA获取最新评论并增加流转记录
+        ExternalOACommentRes commentRes = externalOAService.getExternalOAComment(summaryId);
+        if (commentRes != null && commentRes.getData() != null && commentRes.getData().getComments() != null) {
+            addFlowRecord(report, commentRes.getData().getComments());
+        }
+
+        return true;
+    }
+
 
     /**
      * 增加流转记录

+ 13 - 83
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/externalOA/ExternalOAServiceImpl.java

@@ -10,12 +10,7 @@ import cn.start.tz.module.grape.city.api.GrapeCityApi;
 import cn.start.tz.module.grape.city.api.vo.GrapeCityReqDTO;
 import cn.start.tz.module.infra.api.file.FileApi;
 import cn.start.tz.module.pressure2.controller.admin.externalOA.vo.ReturnFlowVO;
-import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorderitemreport.BoilerTaskOrderItemReportDO;
 import cn.start.tz.module.pressure2.dal.dataobject.dynamictbval.DynamicTbValDO;
-import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemreport.PipeTaskOrderItemReportDO;
-import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitemreport.BoilerTaskOrderItemReportMapper;
-import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitemreport.PipeTaskOrderItemReportMapper;
-import cn.start.tz.module.pressure2.enums.TaskOrderStatusEnum;
 import cn.start.tz.module.pressure2.service.boilertaskorderitemreport.BoilerTaskOrderItemReportService;
 import cn.start.tz.module.pressure2.service.dynamictbval.DynamicTbValService;
 import cn.start.tz.module.pressure2.service.externalOA.vo.*;
@@ -27,8 +22,6 @@ import com.alibaba.cloud.commons.lang.StringUtils;
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.grapecity.documents.excel.*;
 import com.grapecity.documents.excel.drawing.ImageType;
 import com.grapecity.documents.excel.template.DataSource.JsonDataSource;
@@ -72,10 +65,10 @@ public class ExternalOAServiceImpl implements ExternalOAService {
     private DynamicTbValService dynamicTbValService;
 
     @Resource
-    private BoilerTaskOrderItemReportMapper boilerTaskOrderItemReportMapper;
+    private BoilerTaskOrderItemReportService boilerTaskOrderItemReportService;
 
     @Resource
-    private PipeTaskOrderItemReportMapper pipeTaskOrderItemReportMapper;
+    private PipeTaskOrderItemReportService pipeTaskOrderItemReportService;
 
     @Value("${tz.fonts-folder-path:}")
     private String fontsFolderPath;
@@ -211,45 +204,15 @@ public class ExternalOAServiceImpl implements ExternalOAService {
                 .execute().body();
         log.info("撤销OA流程结果:{}", result);
 
-        // 撤销成功后,回退本地报告状态到报告编制(520)
-        Integer rollbackStatus = TaskOrderStatusEnum.REPORT_PREPARE.getStatus();
-
-        // 在锅炉报告表中查找
-        BoilerTaskOrderItemReportDO boilerReport = boilerTaskOrderItemReportMapper.selectOne(
-                new LambdaQueryWrapper<BoilerTaskOrderItemReportDO>()
-                        .eq(BoilerTaskOrderItemReportDO::getSummaryId, summaryId));
-        if (boilerReport != null) {
-            LambdaUpdateWrapper<BoilerTaskOrderItemReportDO> updateObj = new LambdaUpdateWrapper<>();
-            updateObj.eq(BoilerTaskOrderItemReportDO::getId, boilerReport.getId());
-            updateObj.set(BoilerTaskOrderItemReportDO::getTaskStatus, rollbackStatus);
-            // 清空审批相关字段
-            updateObj.set(BoilerTaskOrderItemReportDO::getApprovalId, null);
-            updateObj.set(BoilerTaskOrderItemReportDO::getApprovalTime, null);
-            updateObj.set(BoilerTaskOrderItemReportDO::getRatifyId, null);
-            updateObj.set(BoilerTaskOrderItemReportDO::getRatifyTime, null);
-            boilerTaskOrderItemReportMapper.update(updateObj);
-            log.info("撤销OA流程:锅炉报告状态已回退到{}", rollbackStatus);
-        } else {
-            // 在管道报告表中查找
-            PipeTaskOrderItemReportDO pipeReport = pipeTaskOrderItemReportMapper.selectOne(
-                    new LambdaQueryWrapper<PipeTaskOrderItemReportDO>()
-                            .eq(PipeTaskOrderItemReportDO::getSummaryId, summaryId));
-            if (pipeReport != null) {
-                LambdaUpdateWrapper<PipeTaskOrderItemReportDO> updateObj = new LambdaUpdateWrapper<>();
-                updateObj.eq(PipeTaskOrderItemReportDO::getId, pipeReport.getId());
-                updateObj.set(PipeTaskOrderItemReportDO::getTaskStatus, rollbackStatus);
-                // 清空审批相关字段
-                updateObj.set(PipeTaskOrderItemReportDO::getApprovalId, null);
-                updateObj.set(PipeTaskOrderItemReportDO::getApprovalTime, null);
-                updateObj.set(PipeTaskOrderItemReportDO::getRatifyId, null);
-                updateObj.set(PipeTaskOrderItemReportDO::getRatifyTime, null);
-                pipeTaskOrderItemReportMapper.update(updateObj);
-                log.info("撤销OA流程:管道报告状态已回退到{}", rollbackStatus);
-            } else {
-                log.warn("撤销OA流程:未找到summaryId={}对应的报告记录", summaryId);
-            }
+        // 委派给业务服务处理:回退报告状态 + 增加流转记录
+        if (boilerTaskOrderItemReportService.handleOACancelFlow(summaryId)) {
+            return CommonResult.success(true);
+        }
+        if (pipeTaskOrderItemReportService.handleOACancelFlow(summaryId)) {
+            return CommonResult.success(true);
         }
 
+        log.warn("撤销OA流程:未找到summaryId={}对应的报告记录", summaryId);
         return CommonResult.success(true);
     }
 
@@ -262,47 +225,14 @@ public class ExternalOAServiceImpl implements ExternalOAService {
             return CommonResult.error(400, "流程ID不能为空");
         }
 
-        // 退回目标状态:记录录入(500)
-        Integer rollbackStatus = TaskOrderStatusEnum.REPORT_PREPARE.getStatus();
         String returnReason = returnFlowVO.getState();
 
-        // 先在锅炉报告表中查找
-        BoilerTaskOrderItemReportDO boilerReport = boilerTaskOrderItemReportMapper.selectOne(
-                new LambdaQueryWrapper<BoilerTaskOrderItemReportDO>()
-                        .eq(BoilerTaskOrderItemReportDO::getSummaryId, summaryId));
-        if (boilerReport != null) {
-            log.info("OA退回流程:找到锅炉报告记录,id={}, 当前状态={}", boilerReport.getId(), boilerReport.getTaskStatus());
-            LambdaUpdateWrapper<BoilerTaskOrderItemReportDO> updateObj = new LambdaUpdateWrapper<>();
-            updateObj.eq(BoilerTaskOrderItemReportDO::getId, boilerReport.getId());
-            updateObj.set(BoilerTaskOrderItemReportDO::getTaskStatus, rollbackStatus);
-            updateObj.set(BoilerTaskOrderItemReportDO::getReturnReason, returnReason);
-            // 清空审批相关字段
-            updateObj.set(BoilerTaskOrderItemReportDO::getApprovalId, null);
-            updateObj.set(BoilerTaskOrderItemReportDO::getApprovalTime, null);
-            updateObj.set(BoilerTaskOrderItemReportDO::getRatifyId, null);
-            updateObj.set(BoilerTaskOrderItemReportDO::getRatifyTime, null);
-            boilerTaskOrderItemReportMapper.update(updateObj);
-            log.info("OA退回流程:锅炉报告状态已回退到{}", rollbackStatus);
+        // 委派给锅炉报告服务处理
+        if (boilerTaskOrderItemReportService.handleOAReturnFlow(summaryId, returnReason)) {
             return CommonResult.success(true);
         }
-
-        // 在管道报告表中查找
-        PipeTaskOrderItemReportDO pipeReport = pipeTaskOrderItemReportMapper.selectOne(
-                new LambdaQueryWrapper<PipeTaskOrderItemReportDO>()
-                        .eq(PipeTaskOrderItemReportDO::getSummaryId, summaryId));
-        if (pipeReport != null) {
-            log.info("OA退回流程:找到管道报告记录,id={}, 当前状态={}", pipeReport.getId(), pipeReport.getTaskStatus());
-            LambdaUpdateWrapper<PipeTaskOrderItemReportDO> updateObj = new LambdaUpdateWrapper<>();
-            updateObj.eq(PipeTaskOrderItemReportDO::getId, pipeReport.getId());
-            updateObj.set(PipeTaskOrderItemReportDO::getTaskStatus, rollbackStatus);
-            updateObj.set(PipeTaskOrderItemReportDO::getReturnReason, returnReason);
-            // 清空审批相关字段
-            updateObj.set(PipeTaskOrderItemReportDO::getApprovalId, null);
-            updateObj.set(PipeTaskOrderItemReportDO::getApprovalTime, null);
-            updateObj.set(PipeTaskOrderItemReportDO::getRatifyId, null);
-            updateObj.set(PipeTaskOrderItemReportDO::getRatifyTime, null);
-            pipeTaskOrderItemReportMapper.update(updateObj);
-            log.info("OA退回流程:管道报告状态已回退到{}", rollbackStatus);
+        // 委派给管道报告服务处理
+        if (pipeTaskOrderItemReportService.handleOAReturnFlow(summaryId, returnReason)) {
             return CommonResult.success(true);
         }
 

+ 15 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorderitemreport/PipeTaskOrderItemReportService.java

@@ -76,6 +76,21 @@ public interface PipeTaskOrderItemReportService extends IService<PipeTaskOrderIt
      */
     void updateReport();
 
+    /**
+     * 处理OA退回流程回调:根据summaryId回退报告状态并增加流转记录
+     * @param summaryId OA流程ID
+     * @param returnReason 退回原因
+     * @return 是否找到并处理了对应的报告
+     */
+    boolean handleOAReturnFlow(String summaryId, String returnReason);
+
+    /**
+     * 处理OA撤销流程:根据summaryId回退报告状态到报告编制并增加流转记录
+     * @param summaryId OA流程ID
+     * @return 是否找到并处理了对应的报告
+     */
+    boolean handleOACancelFlow(String summaryId);
+
     /**
      * 报告办结
      * @param id

+ 63 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorderitemreport/PipeTaskOrderItemReportServiceImpl.java

@@ -293,6 +293,69 @@ public class PipeTaskOrderItemReportServiceImpl extends ServiceImpl<PipeTaskOrde
         taskOrderItemReportMapper.updateById(taskOrderItemReport);
     }
 
+    @Override
+    public boolean handleOAReturnFlow(String summaryId, String returnReason) {
+        PipeTaskOrderItemReportDO report = taskOrderItemReportMapper.selectOne(
+                new LambdaQueryWrapper<PipeTaskOrderItemReportDO>()
+                        .eq(PipeTaskOrderItemReportDO::getSummaryId, summaryId));
+        if (report == null) return false;
+
+        log.info("OA退回流程:找到管道报告记录,id={}, 当前状态={}", report.getId(), report.getTaskStatus());
+        // 回退状态到报告编制(520)
+        Integer rollbackStatus = TaskOrderStatusEnum.REPORT_PREPARE.getStatus();
+        LambdaUpdateWrapper<PipeTaskOrderItemReportDO> updateObj = new LambdaUpdateWrapper<>();
+        updateObj.eq(PipeTaskOrderItemReportDO::getId, report.getId());
+        updateObj.set(PipeTaskOrderItemReportDO::getTaskStatus, rollbackStatus);
+        updateObj.set(PipeTaskOrderItemReportDO::getReturnReason, returnReason);
+        // 清空审批相关字段
+        updateObj.set(PipeTaskOrderItemReportDO::getApprovalId, null);
+        updateObj.set(PipeTaskOrderItemReportDO::getApprovalTime, null);
+        updateObj.set(PipeTaskOrderItemReportDO::getRatifyId, null);
+        updateObj.set(PipeTaskOrderItemReportDO::getRatifyTime, null);
+        taskOrderItemReportMapper.update(updateObj);
+        log.info("OA退回流程:管道报告状态已回退到{}", rollbackStatus);
+
+        // 从OA获取最新评论并增加流转记录
+        ExternalOACommentRes commentRes = externalOAService.getExternalOAComment(summaryId);
+        if (commentRes != null && commentRes.getData() != null && commentRes.getData().getComments() != null) {
+            addFlowRecord(report, commentRes.getData().getComments());
+        }
+
+        return true;
+    }
+
+    @Override
+    public boolean handleOACancelFlow(String summaryId) {
+        PipeTaskOrderItemReportDO report = taskOrderItemReportMapper.selectOne(
+                new LambdaQueryWrapper<PipeTaskOrderItemReportDO>()
+                        .eq(PipeTaskOrderItemReportDO::getSummaryId, summaryId));
+        if (report == null) return false;
+
+        log.info("OA撤销流程:找到管道报告记录,id={}, 当前状态={}", report.getId(), report.getTaskStatus());
+
+        // 增加撤销流转记录
+        PipeTaskOrderItemReportRecordDO recordDO = new PipeTaskOrderItemReportRecordDO();
+        recordDO.setReportId(report.getId());
+        recordDO.setProcess(report.getTaskStatus());
+        recordDO.setRemark("主动撤销");
+        recordDO.setResult(500);
+        pipeTaskOrderItemReportRecordMapper.insert(recordDO);
+
+        // 回退状态到报告编制(520)
+        Integer rollbackStatus = TaskOrderStatusEnum.REPORT_PREPARE.getStatus();
+        LambdaUpdateWrapper<PipeTaskOrderItemReportDO> updateObj = new LambdaUpdateWrapper<>();
+        updateObj.eq(PipeTaskOrderItemReportDO::getId, report.getId());
+        updateObj.set(PipeTaskOrderItemReportDO::getTaskStatus, rollbackStatus);
+        // 清空审批相关字段
+        updateObj.set(PipeTaskOrderItemReportDO::getApprovalId, null);
+        updateObj.set(PipeTaskOrderItemReportDO::getApprovalTime, null);
+        updateObj.set(PipeTaskOrderItemReportDO::getRatifyId, null);
+        updateObj.set(PipeTaskOrderItemReportDO::getRatifyTime, null);
+        taskOrderItemReportMapper.update(updateObj);
+        log.info("OA撤销流程:管道报告状态已回退到{}", rollbackStatus);
+        return true;
+    }
+
     /**
      * 修改报告状态
      *

+ 1 - 1
tz-module-pressure2/tz-module-pressure2-biz/src/main/resources/application-uat.yaml

@@ -162,7 +162,7 @@ external:
       password: 69030b1b-44b7-45d0-aaf3-e73968933642
       loginName: 300801
     # 定时获取状态
-    cron: 0 0 0 * * ?
+    cron: 0 0 * * * ?
 synchronization:
   host: http://192.168.20.70:28081
   apiKey: cecb02cf8d1c7be3a05987d6acc6d913666d9cb72cc061039ffb19ecaead1bb9