Bladeren bron

已约检任务单排序

xuzhancheng 1 dag geleden
bovenliggende
commit
03c0847f4c

+ 10 - 5
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/framework/cron/SyncTaskBoilerEquipmentJob.java

@@ -1220,6 +1220,8 @@ public class SyncTaskBoilerEquipmentJob {
 
             // 用于存储本次创建/更新的报告,便于子项目引用主项目
             Map<String, BoilerTaskOrderItemReportDO> createdReportsMap = new HashMap<>();
+            // sort排序:主报告第1个,其余按顺序递增
+            int sort = 1;
 
             // 为每个模版创建或更新报告记录
             for (BoilerConnectRecordReportDO template : templates) {
@@ -1233,14 +1235,14 @@ public class SyncTaskBoilerEquipmentJob {
 
                 if (existingReport == null) {
                     // 不存在记录,创建新记录
-                    BoilerTaskOrderItemReportDO newReport = createTaskOrderItemReport(taskOrderItem, itemDO, taskOrderId, template, createdReportsMap);
+                    BoilerTaskOrderItemReportDO newReport = createTaskOrderItemReport(taskOrderItem, itemDO, taskOrderId, template, createdReportsMap, sort++);
                     if (newReport != null) {
                         createdReportsMap.put(template.getProjectType(), newReport);
                     }
                     log.info("创建报告记录成功,设备: {}, 模版: {}", taskOrderItem.getRegisterNo(), template.getProjectName());
                 } else {
                     // 存在记录,进行更新
-                    updateTaskOrderItemReport(taskOrderItem, itemDO, taskOrderId, template, existingReport);
+                    updateTaskOrderItemReport(taskOrderItem, itemDO, taskOrderId, template, existingReport, sort++);
                     log.info("更新报告记录成功,设备: {}, 模版: {}, 报告ID: {}",
                             taskOrderItem.getRegisterNo(), template.getProjectName(), existingReport.getId());
                 }
@@ -1265,13 +1267,15 @@ public class SyncTaskBoilerEquipmentJob {
      * @param existingReport 已存在的报告记录
      */
     private void updateTaskOrderItemReport(TaskEquipmentDto taskOrderItem, BoilerTaskOrderItemDO itemDO,
-                                           String taskOrderId, BoilerConnectRecordReportDO template, BoilerTaskOrderItemReportDO existingReport) {
+                                           String taskOrderId, BoilerConnectRecordReportDO template, BoilerTaskOrderItemReportDO existingReport,
+                                           int sort) {
         try {
             // 更新报告记录的基本信息(不覆盖已有状态)
             existingReport.setOrderId(taskOrderId);
             existingReport.setTemplateId(template.getRecordTemplateId());
             existingReport.setProjectId(template.getId());
             existingReport.setReportName(template.getProjectName());
+            existingReport.setSort(sort);
             if (existingReport.getReportNo() == null || existingReport.getReportNo().isEmpty()) {
 //                existingReport.setReportNo(generateReportNo()); // 如果没有报告编号则生成
                 BoilerTaskOrderDO taskOrderDO = taskOrderService.getById(taskOrderId);
@@ -1316,7 +1320,8 @@ public class SyncTaskBoilerEquipmentJob {
      */
     private BoilerTaskOrderItemReportDO createTaskOrderItemReport(TaskEquipmentDto taskOrderItem, BoilerTaskOrderItemDO itemDO,
                                                                    String taskOrderId, BoilerConnectRecordReportDO template,
-                                                                   Map<String, BoilerTaskOrderItemReportDO> createdReportsMap) {
+                                                                   Map<String, BoilerTaskOrderItemReportDO> createdReportsMap,
+                                                                   int sort) {
         try {
             // 创建报告记录
             BoilerTaskOrderItemReportDO report = new BoilerTaskOrderItemReportDO();
@@ -1325,7 +1330,7 @@ public class SyncTaskBoilerEquipmentJob {
             report.setTemplateId(template.getRecordTemplateId()); // 模版ID
             report.setProjectId(template.getId()); // 模版ID
             report.setReportName(template.getProjectName()); // 报告名称使用模版名称
-            
+            report.setSort(sort);
             // 设置报告编号
             if ("MAIN".equals(template.getProjectType())) {
                 BoilerTaskOrderDO taskOrderDO = taskOrderService.getById(taskOrderId);

+ 32 - 14
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/framework/cron/SyncTaskPipeEquipmentJob.java

@@ -805,6 +805,10 @@ public class SyncTaskPipeEquipmentJob {
             List<PipeTaskOrderItemDO> allItemDOs = taskOrderItemService.list(
                     new LambdaQueryWrapperX<PipeTaskOrderItemDO>()
                             .eq(PipeTaskOrderItemDO::getOrderId, taskOrderId));
+            // 一览表的sort排在常规报告之后:当前报告总数 + 1 开始
+            int summarySortBase = (int) taskOrderItemReportService.count(
+                    new LambdaQueryWrapperX<PipeTaskOrderItemReportDO>()
+                            .eq(PipeTaskOrderItemReportDO::getOrderId, taskOrderId)) + 1;
             for (PipeTaskOrderItemDO itemDO : allItemDOs) {
                 if (StrUtil.isBlank(itemDO.getId())) {
                     log.warn("跳过一览表创建,itemDO id为空, orderId: {}", taskOrderId);
@@ -823,6 +827,7 @@ public class SyncTaskPipeEquipmentJob {
                     report.setProjectId(summaryTemplate.getId());
                     report.setReportName(summaryTemplate.getProjectName());
                     report.setReportNo(mainReportNo); // 复用主报告编号
+                    report.setSort(summarySortBase++);
                     report.setTaskStatus(500);
                     report.setStatus(100);
                     report.setRecheckStatus(100);
@@ -842,8 +847,17 @@ public class SyncTaskPipeEquipmentJob {
                 } else {
                     // 已存在则更新编号
                     PipeTaskOrderItemReportDO existingReport = existing.get(0);
+                    boolean needUpdate = false;
                     if (mainReportNo != null && !mainReportNo.equals(existingReport.getReportNo())) {
                         existingReport.setReportNo(mainReportNo);
+                        needUpdate = true;
+                    }
+                    if (existingReport.getSort() == null || existingReport.getSort() != summarySortBase) {
+                        existingReport.setSort(summarySortBase);
+                        needUpdate = true;
+                    }
+                    summarySortBase++;
+                    if (needUpdate) {
                         existingReport.setUpdateTime(LocalDateTime.now());
                         existingReport.setUpdater("1");
                         taskOrderItemReportService.updateById(existingReport);
@@ -1267,9 +1281,10 @@ public class SyncTaskPipeEquipmentJob {
 
             // 用于存储本次创建/更新的报告,便于子项目引用主项目
             Map<String, PipeTaskOrderItemReportDO> createdReportsMap = new HashMap<>();
+            // sort排序:主报告第1个,其余按顺序递增
+            int sortIndex = 1;
 
             // 第一遍:先处理MAIN主项目模板,生成报告编号后再处理子项目
-            // 避免一览表等非MAIN项目因排序问题在主报告前生成,导致拿不到报告编号
             List<BoilerConnectRecordReportDO> mainTemplates = templates.stream()
                     .filter(t -> "MAIN".equals(t.getProjectType()))
                     .toList();
@@ -1279,15 +1294,12 @@ public class SyncTaskPipeEquipmentJob {
 
             // 先处理MAIN模板
             for (BoilerConnectRecordReportDO template : mainTemplates) {
-                PipeTaskOrderItemReportDO report = createOrUpdateReport(taskOrderId, template, createdReportsMap);
-                if (report != null) {
-                    createdReportsMap.put(template.getProjectType(), report);
-                }
+                createOrUpdateReport(taskOrderId, template, createdReportsMap, sortIndex++);
             }
 
             // 再处理其他模板(此时createdReportsMap中已有MAIN的报告编号)
             for (BoilerConnectRecordReportDO template : otherTemplates) {
-                createOrUpdateReport(taskOrderId, template, createdReportsMap);
+                createOrUpdateReport(taskOrderId, template, createdReportsMap, sortIndex++);
             }
 
             log.info("成功生成 {} 个报告记录", templates.size());
@@ -1301,13 +1313,15 @@ public class SyncTaskPipeEquipmentJob {
     /**
      * 创建或更新管道报告记录(公共方法,两遍处理共用)
      *
-     * @param taskOrderId       任务单ID
-     * @param template          报告模板
-     * @param createdReportsMap 已创建的主报告映射(用于SUB获取MAIN编号)
+     * @param taskOrderId        任务单ID
+     * @param template           报告模板
+     * @param createdReportsMap  已创建的主报告映射(用于SUB获取MAIN编号)
+     * @param sort               排序号,MAIN=1,其余递增
      * @return 新创建的报告,已更新则返回null
      */
     private PipeTaskOrderItemReportDO createOrUpdateReport(String taskOrderId, BoilerConnectRecordReportDO template,
-                                                           Map<String, PipeTaskOrderItemReportDO> createdReportsMap) {
+                                                            Map<String, PipeTaskOrderItemReportDO> createdReportsMap,
+                                                            int sort) {
         List<PipeTaskOrderItemReportDO> existingReports = taskOrderItemReportService.list(
                 new LambdaQueryWrapperX<PipeTaskOrderItemReportDO>()
                         .eq(PipeTaskOrderItemReportDO::getOrderId, taskOrderId)
@@ -1316,9 +1330,10 @@ public class SyncTaskPipeEquipmentJob {
         PipeTaskOrderItemReportDO existingReport = existingReports.isEmpty() ? null : existingReports.get(0);
 
         if (existingReport == null) {
-            PipeTaskOrderItemReportDO newReport = createTaskOrderItemReport(taskOrderId, template, createdReportsMap);
+            PipeTaskOrderItemReportDO newReport = createTaskOrderItemReport(taskOrderId, template, createdReportsMap, sort);
             log.info("创建管道报告记录成功,模版: {}", template.getProjectName());
             if (newReport != null) {
+                createdReportsMap.put(template.getProjectType(), newReport);
                 BoilerTaskOrderSyncReportVO syncReportVO = new BoilerTaskOrderSyncReportVO();
                 syncReportVO.setRefId(newReport.getId());
                 syncReportVO.setReportType("record");
@@ -1326,7 +1341,7 @@ public class SyncTaskPipeEquipmentJob {
             }
             return newReport;
         } else {
-            updateTaskOrderItemReport(taskOrderId, template, existingReport);
+            updateTaskOrderItemReport(taskOrderId, template, existingReport, sort);
             log.info("更新管道报告记录成功,模版: {}, 报告ID: {}",
                     template.getProjectName(), existingReport.getId());
             return null;
@@ -1338,12 +1353,14 @@ public class SyncTaskPipeEquipmentJob {
      * 更新管道任务单设备报告记录
      */
     private void updateTaskOrderItemReport(
-            String taskOrderId, BoilerConnectRecordReportDO template, PipeTaskOrderItemReportDO existingReport) {
+            String taskOrderId, BoilerConnectRecordReportDO template, PipeTaskOrderItemReportDO existingReport,
+            int sort) {
         try {
             existingReport.setOrderId(taskOrderId);
             existingReport.setTemplateId(template.getRecordTemplateId());
             existingReport.setProjectId(template.getId());
             existingReport.setReportName(template.getProjectName());
+            existingReport.setSort(sort);
             if (existingReport.getReportNo() == null || existingReport.getReportNo().isEmpty()) {
                 PipeTaskOrderDO taskOrderDO = taskOrderService.getById(taskOrderId);
                 String projectCode = template.getProjectCode();
@@ -1370,13 +1387,14 @@ public class SyncTaskPipeEquipmentJob {
      */
     private PipeTaskOrderItemReportDO createTaskOrderItemReport(
             String taskOrderId, BoilerConnectRecordReportDO template,
-            Map<String, PipeTaskOrderItemReportDO> createdReportsMap) {
+            Map<String, PipeTaskOrderItemReportDO> createdReportsMap, int sort) {
         try {
             PipeTaskOrderItemReportDO report = new PipeTaskOrderItemReportDO();
             report.setOrderId(taskOrderId);
             report.setTemplateId(template.getRecordTemplateId());
             report.setProjectId(template.getId());
             report.setReportName(template.getProjectName());
+            report.setSort(sort);
 
             // 设置报告编号
             if ("MAIN".equals(template.getProjectType())) {