xuzhancheng 2 هفته پیش
والد
کامیت
6286d64af3
66فایلهای تغییر یافته به همراه1808 افزوده شده و 279 حذف شده
  1. 1 1
      tz-module-infra/tz-module-infra-biz/src/main/resources/logback-spring.xml
  2. 1 1
      tz-module-laboratory/tz-module-laboratory-biz/src/main/resources/logback-spring.xml
  3. 1 1
      tz-module-member/tz-module-member-biz/src/main/resources/logback-spring.xml
  4. 1 1
      tz-module-pressure/tz-module-pressure-biz/src/main/resources/logback-spring.xml
  5. 7 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/boilertaskorder/BoilerTaskOrderController.java
  6. 8 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/boilertaskorder/vo/BoilerTaskOrderPageReqVO.java
  7. 1 1
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/boilertaskorder/vo/BoilerTaskOrderSyncReportVO.java
  8. 7 2
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/dynamictb/vo/DynamicTbRespVO.java
  9. 2 2
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/equipboilerscheduling/EquipBoilerSchedulingController.java
  10. 7 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/equipboilerscheduling/vo/EquipBoilerSchedulingRespVO.java
  11. 7 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/pipetaskorder/PipeTaskOrderController.java
  12. 11 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/pipetaskorderinput/PipeTaskOrderInputController.java
  13. 14 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/pipetaskorderinput/vo/PipeTaskOrderInputPrintReqVO.java
  14. 27 63
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/standardfile/StandardFileController.java
  15. 1 1
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/mysql/equipboilerscheduling/EquipBoilerSchedulingMapper.java
  16. 26 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/framework/datapermission/config/DataPermissionConfiguration.java
  17. 2 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorder/BoilerTaskOrderService.java
  18. 94 8
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorder/BoilerTaskOrderServiceImpl.java
  19. 8 4
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QC10020_202400ReportOFData.java
  20. 7 2
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QC10021_202400ReportOFData.java
  21. 7 3
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QC10023_202400ReportOFData.java
  22. 7 3
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QC10026_202400ReportOFData.java
  23. 7 3
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QC10027_202400ReportOFData.java
  24. 7 3
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QC10028_202400ReportOFData.java
  25. 7 3
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QC10029_202400ReportOFData.java
  26. 7 3
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QC10030_202400ReportOFData.java
  27. 7 3
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QC10031_202400ReportOFData.java
  28. 6 3
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QC10032_202400ReportOFData.java
  29. 7 2
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QC10086_202400RecordOFData.java
  30. 7 3
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QC10087_202400RecordOFData.java
  31. 9 5
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QC10089_202400RecordOFData.java
  32. 11 7
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QC10092_202400RecordOFData.java
  33. 7 1
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QC10093_202400RecordOFData.java
  34. 6 1
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QC10094_202400RecordOFData.java
  35. 7 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QC10095_202400RecordOFData.java
  36. 7 3
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QC10096_202400RecordOFData.java
  37. 6 3
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QC10097_202400RecordOFData.java
  38. 1 1
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QR0405_202400ReportOFData.java
  39. 52 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/README.md
  40. 35 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/comm/README.md
  41. 14 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/instruction/README.md
  42. 15 1
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QC12016_202400ReportOFData.java
  43. 43 7
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QC12024_202400ReportOFData.java
  44. 1 1
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QR0413_202400ReportOFData.java
  45. 85 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/README.md
  46. 193 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/util/AutoDataBoilerService.java
  47. 106 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/util/AutoDataPipeService.java
  48. 59 8
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/util/GenerateReportJsonService.java
  49. 0 75
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/util/GenerateReportJsonServiceImpl.java
  50. 135 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/util/JsonConvertUtil.java
  51. 60 2
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamictbins/DynamicTbInsServiceImpl.java
  52. 1 1
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/equipboilerscheduling/EquipBoilerSchedulingService.java
  53. 3 3
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/equipboilerscheduling/EquipBoilerSchedulingServiceImpl.java
  54. 2 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorder/PipeTaskOrderService.java
  55. 115 7
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorder/PipeTaskOrderServiceImpl.java
  56. 18 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorderinput/PipeTaskOrderInputService.java
  57. 93 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorderinput/PipeTaskOrderInputServiceImpl.java
  58. 97 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/util/DeptDataPermissionUtil.java
  59. 3 1
      tz-module-pressure2/tz-module-pressure2-biz/src/main/resources/application-hsd.yaml
  60. 1 1
      tz-module-pressure2/tz-module-pressure2-biz/src/main/resources/application-uat.yaml
  61. 125 14
      tz-module-pressure2/tz-module-pressure2-biz/src/main/resources/mapper/boilertaskorder/BoilerTaskOrderMapper.xml
  62. 30 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/resources/mapper/boilertaskorderitem/BoilerTaskOrderItemMapper.xml
  63. 26 12
      tz-module-pressure2/tz-module-pressure2-biz/src/main/resources/mapper/equipboilerscheduling/EquipBoilerSchedulingMapper.xml
  64. 50 2
      tz-module-pressure2/tz-module-pressure2-biz/src/main/resources/mapper/equippipescheduling/EquipPipeSchedulingMapper.xml
  65. 60 7
      tz-module-pressure2/tz-module-pressure2-biz/src/main/resources/mapper/pipetaskorder/PipeTaskOrderMapper.xml
  66. 30 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/resources/mapper/pipetaskorderitem/PipeTaskOrderItemMapper.xml

+ 1 - 1
tz-module-infra/tz-module-infra-biz/src/main/resources/logback-spring.xml

@@ -65,7 +65,7 @@
         </root>
     </springProfile>
     <!-- 其它环境 -->
-    <springProfile name="dev,test,uat,stage,prod,default">
+    <springProfile name="dev,test,uat,stage,prod,default,hsd">
         <root level="INFO">
             <appender-ref ref="STDOUT"/>
             <appender-ref ref="ASYNC"/>

+ 1 - 1
tz-module-laboratory/tz-module-laboratory-biz/src/main/resources/logback-spring.xml

@@ -65,7 +65,7 @@
         </root>
     </springProfile>
     <!-- 其它环境 -->
-    <springProfile name="dev,test,uat,stage,prod,default">
+    <springProfile name="dev,test,uat,stage,prod,default,hsd">
         <root level="INFO">
             <appender-ref ref="STDOUT"/>
             <appender-ref ref="ASYNC"/>

+ 1 - 1
tz-module-member/tz-module-member-biz/src/main/resources/logback-spring.xml

@@ -65,7 +65,7 @@
         </root>
     </springProfile>
     <!-- 其它环境 -->
-    <springProfile name="dev,test,uat,stage,prod,default">
+    <springProfile name="dev,test,uat,stage,prod,default,hsd">
         <root level="INFO">
             <appender-ref ref="STDOUT"/>
             <appender-ref ref="ASYNC"/>

+ 1 - 1
tz-module-pressure/tz-module-pressure-biz/src/main/resources/logback-spring.xml

@@ -65,7 +65,7 @@
         </root>
     </springProfile>
     <!-- 其它环境 -->
-    <springProfile name="dev,test,uat,uat,stage,prod,default">
+    <springProfile name="dev,test,uat,uat,stage,prod,default,hsd">
         <root level="INFO">
             <appender-ref ref="STDOUT"/>
             <appender-ref ref="ASYNC"/>

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

@@ -516,6 +516,13 @@ public class BoilerTaskOrderController {
         return success(approve);
     }
 
+    @PutMapping("/syncAllReportData")
+    @Operation(summary = "同步记录、报告和结论报告数据")
+    public CommonResult<Boolean> syncAllReportData(@Valid @RequestBody BoilerTaskOrderSyncReportVO reqVO) {
+        Boolean approve = boilerTaskOrderService.syncAllReportData(reqVO);
+        return success(approve);
+    }
+
     @GetMapping("/inspection-opinion/page")
     @Operation(summary = "检验意见通知书")
     @Tag(name = "检验意见通知书")

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

@@ -261,4 +261,12 @@ public class BoilerTaskOrderPageReqVO extends PageParam {
     @Schema(description = "检验员名称")
     private String inspectorName;
 
+    @Schema(description = "验证权限登录人")
+    private String permissionUserId;
+
+    @Schema(description = "验证权限部门")
+    private Set<String> permissionDeptIds;
+
+    @Schema(description = "是否有权限(0=否,1=是)")
+    private Boolean hasPermission;
 }

+ 1 - 1
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/boilertaskorder/vo/BoilerTaskOrderSyncReportVO.java

@@ -14,7 +14,7 @@ public class BoilerTaskOrderSyncReportVO {
     @Schema(description = "报表ID",requiredMode = Schema.RequiredMode.REQUIRED)
     private String refId;
 
-    @Schema(description = "报表类型 record-记录 report-报告 result-结论报告",requiredMode = Schema.RequiredMode.REQUIRED)
+    @Schema(description = "报表类型 record-记录 report-报告 result-结论报告")
     private String reportType;
 
     @Schema(description = "附加数据")

+ 7 - 2
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/dynamictb/vo/DynamicTbRespVO.java

@@ -32,6 +32,11 @@ public class DynamicTbRespVO {
     @DictFormat("pressure2_tb_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
     private Integer tbType;
 
+    @Schema(description = "模板类型")
+    @ExcelProperty(value = "模板类型", converter = DictConvert.class)
+    @DictFormat("pressure2_dynamic_report_type")
+    private Integer reportType;
+
     @Schema(description = "项目分类", example = "1")
     @ExcelProperty(value = "项目分类", converter = DictConvert.class)
     @DictFormat("system_template_init_data_classification") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
@@ -50,6 +55,8 @@ public class DynamicTbRespVO {
     private LocalDateTime createTime;
 
     @Schema(description = "状态", example = "1")
+    @ExcelProperty(value = "状态", converter = DictConvert.class)
+    @DictFormat("COMPRESSION_PROJECT_TEMPLATEMANAGEMENT")
     private Integer status;
 
     @Schema(description = "模板导入文件", example = "filename.doc")
@@ -61,8 +68,6 @@ public class DynamicTbRespVO {
     @Schema(description = "模板表单文件", example = "filename.pdf")
     private String formPath;
 
-    @Schema(description = "模板类型")
-    private Integer reportType;
 
     @Schema(description = "报告原件")
     private List<FileRepsDTO> filePaths;

+ 2 - 2
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/equipboilerscheduling/EquipBoilerSchedulingController.java

@@ -46,7 +46,7 @@ public class EquipBoilerSchedulingController {
     @Operation(summary = "获得锅炉计划排期分页")
     //@PreAuthorize("@ss.hasPermission('pressure2:equip-boiler-scheduling:query')")
     public CommonResult<PageResult<EquipBoilerSchedulingRespVO>> getEquipBoilerSchedulingPage(@Valid EquipBoilerSchedulingPageReqVO pageReqVO) {
-        PageResult<EquipBoilerSchedulingDO> pageResult = equipBoilerSchedulingService.getEquipBoilerSchedulingPage(pageReqVO);
+        PageResult<EquipBoilerSchedulingRespVO> pageResult = equipBoilerSchedulingService.getEquipBoilerSchedulingPage(pageReqVO);
         return success(BeanUtils.toBean(pageResult, EquipBoilerSchedulingRespVO.class));
     }
 
@@ -56,7 +56,7 @@ public class EquipBoilerSchedulingController {
     public void exportSchedulingTbExcel(@Valid EquipBoilerSchedulingPageReqVO pageReqVO,
                                         HttpServletResponse response) throws IOException {
         pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<EquipBoilerSchedulingDO> list = equipBoilerSchedulingService.getEquipBoilerSchedulingPage(pageReqVO).getList();
+        List<EquipBoilerSchedulingRespVO> list = equipBoilerSchedulingService.getEquipBoilerSchedulingPage(pageReqVO).getList();
         // 导出 Excel
         ExcelUtils.write(response, "锅炉计划排期表单.xls", "数据", EquipBoilerSchedulingRespVO.class,
                 BeanUtils.toBean(list, EquipBoilerSchedulingRespVO.class));

+ 7 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/equipboilerscheduling/vo/EquipBoilerSchedulingRespVO.java

@@ -81,4 +81,11 @@ public class EquipBoilerSchedulingRespVO {
     @ExcelProperty("出厂编号")
     private String factoryCode;
 
+    @Schema(description = "排期内部检验时间")
+    private String planInCheckDate;
+    @Schema(description = "排期外部检验时间")
+    private String planOutCheckDate;
+    @Schema(description = "排期耐压检验时间")
+    private String planPressureCheckDate;
+
 }

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

@@ -530,6 +530,13 @@ public class PipeTaskOrderController {
         return success(approve);
     }
 
+    @PutMapping("/syncAllReportData")
+    @Operation(summary = "同步记录、报告和结论报告数据")
+    public CommonResult<Boolean> syncAllReportData(@Valid @RequestBody BoilerTaskOrderSyncReportVO reqVO) {
+        Boolean approve = pipeTaskOrderService.syncAllReportData(reqVO);
+        return success(approve);
+    }
+
     @GetMapping("/getEquipsByOrderId")
     @Operation(summary = "通过任务单ID获得设备列表")
     public CommonResult<List<PipeEquipInfoVO>> getEquipsByOrderId(@RequestParam("orderId") String orderId) {

+ 11 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/pipetaskorderinput/PipeTaskOrderInputController.java

@@ -80,4 +80,15 @@ public class PipeTaskOrderInputController {
     }
 
 
+    @PostMapping("/print")
+    @Operation(summary = "打印管道检测项目")
+    public void printPipeTaskOrderInput(@Validated @RequestBody List<PipeTaskOrderInputPrintReqVO> printReqVOS, HttpServletResponse response) throws Exception {
+        pipeTaskOrderInputService.printPipeTaskOrderInput(printReqVOS, response);
+    }
+
+    @PostMapping("/download")
+    @Operation(summary = "下载管道检测项目")
+    public void downloadPipeTaskOrderInput(@Validated @RequestBody List<PipeTaskOrderInputPrintReqVO> printReqVOS, HttpServletResponse response) throws Exception {
+        pipeTaskOrderInputService.downloadPipeTaskOrderInput(printReqVOS, response);
+    }
 }

+ 14 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/pipetaskorderinput/vo/PipeTaskOrderInputPrintReqVO.java

@@ -0,0 +1,14 @@
+package cn.start.tz.module.pressure2.controller.admin.pipetaskorderinput.vo;
+
+import lombok.Data;
+
+
+@Data
+public class PipeTaskOrderInputPrintReqVO {
+    private Integer taskStatus;
+    private String resultTemplateId;
+    private String templateId;
+    private String reportTemplateId;
+    private String reportUrl;
+    private String id;
+}

+ 27 - 63
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/standardfile/StandardFileController.java

@@ -1,17 +1,15 @@
 package cn.start.tz.module.pressure2.controller.admin.standardfile;
 
+import cn.hutool.http.HttpUtil;
+import cn.start.tz.framework.common.pojo.CommonResult;
+import com.alibaba.fastjson2.JSONObject;
 import com.grapecity.documents.excel.*;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
 import jakarta.annotation.Resource;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.security.access.prepost.PreAuthorize;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.Operation;
-
-import jakarta.validation.constraints.*;
-import jakarta.validation.*;
-import jakarta.servlet.http.*;
+import jakarta.servlet.http.HttpServletResponse;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -33,7 +31,13 @@ import static cn.start.tz.framework.apilog.core.enums.OperateTypeEnum.*;
 import cn.start.tz.module.pressure2.controller.admin.standardfile.vo.*;
 import cn.start.tz.module.pressure2.dal.dataobject.standardfile.StandardFileDO;
 import cn.start.tz.module.pressure2.service.standardfile.StandardFileService;
-import org.springframework.web.multipart.MultipartFile;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.validation.annotation.Validated;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.*;
 
 @Tag(name = "管理后台 - 承压标准文件")
 @RestController
@@ -41,6 +45,9 @@ import org.springframework.web.multipart.MultipartFile;
 @Validated
 public class StandardFileController {
 
+    @Value("${grapecity.url:null}")
+    private String grapecityUrl;
+
     @Resource
     private StandardFileService standardFileService;
 
@@ -96,58 +103,15 @@ public class StandardFileController {
     @Operation(summary = "预览模版pdf")
     public void getPdf(@RequestParam(value = "file", required = true) MultipartFile file,
                        HttpServletResponse response) throws Exception {
-        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
-        WorkbookOptions workbookOptions = new WorkbookOptions();
-        workbookOptions.setPixelBasedColumnWidth(true);
-        Workbook workbook = new Workbook(workbookOptions);
-        byte[] bytes = file.getBytes();
-        workbook.open(new ByteArrayInputStream(bytes), OpenFileFormat.Sjs);
-
-        // 检查是否有工作表
-        if (workbook.getWorksheets().getCount() == 0) {
-            // 创建一个默认工作表以避免"没有可打印的内容"错误
-            workbook.getWorksheets().add();
-        }
-
-        // 检查工作表内容
-        boolean hasContent = false;
-        for (int i = 0; i < workbook.getWorksheets().getCount(); i++) {
-            IWorksheet worksheet = workbook.getWorksheets().get(i);
-            worksheet.getPageSetup().setPrintHeadings(false);
-            worksheet.getPageSetup().setPaperSize(PaperSize.A4);
-            worksheet.getPageSetup().setLeftMargin(7); // 左边距
-            worksheet.getPageSetup().setRightMargin(7); // 右边距
-            worksheet.getPageSetup().setCenterHorizontally(true);
-
-            // 检查工作表是否有内容
-            if (!hasContent && worksheet.getUsedRange() != null) {
-                hasContent = true;
-            }
-        }
-
-        // 如果没有任何工作表有内容,添加一个提示文本
-        if (!hasContent) {
-            IWorksheet firstWorksheet = workbook.getWorksheets().get(0);
-            firstWorksheet.getRange("A1").setValue("空模板");
-        }
-
-        Workbook.FontProvider = new IFontProvider() {
-            @Override
-            public List<String> getFontFilePaths() {
-                return new ArrayList<>(Arrays.asList(
-                        "fonts/simsun.ttf"
-                ));
-            }
-
-            @Override
-            public InputStream getFont(String fontFilePath) {
-                return getClass().getClassLoader().getResourceAsStream(fontFilePath);
-            }
-        };
-        // 设置PdfSaveOptions以将工作簿导出为PDF文件。
-        PdfSaveOptions pdfOptions = new PdfSaveOptions();
-        pdfOptions.setIncludeAutoMergedCells(true);
-        workbook.save(byteArrayOutputStream, pdfOptions);
-        response.getOutputStream().write(byteArrayOutputStream.toByteArray());
+            // 调用另一个服务的 PDF 转换接口
+            String targetUrl = grapecityUrl+
+                    "/pdf/getPdf";
+            byte[] fileBytes = file.getBytes();
+            List<byte[]> pdfBytesList = new ArrayList<>();
+            pdfBytesList.add(fileBytes);
+            // 发送 POST 请求获取 PDF 字节流
+        byte[] bytes = HttpUtil.createPost(targetUrl)
+                .body(JSONObject.toJSONString(pdfBytesList)).execute().bodyBytes();
+        response.getOutputStream().write(bytes);
     }
 }

+ 1 - 1
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/mysql/equipboilerscheduling/EquipBoilerSchedulingMapper.java

@@ -19,7 +19,7 @@ import cn.start.tz.module.pressure2.controller.admin.equipboilerscheduling.vo.*;
 public interface EquipBoilerSchedulingMapper extends BaseMapperX<EquipBoilerSchedulingDO> {
 
     @InterceptorIgnore(dataPermission = "true")
-    List<EquipBoilerSchedulingDO> selectPlanPage(EquipBoilerSchedulingPageReqVO reqVO);
+    List<EquipBoilerSchedulingRespVO> selectPlanPage(EquipBoilerSchedulingPageReqVO reqVO);
 
     Long selectPlanPageCount(EquipBoilerSchedulingPageReqVO reqVO);
 

+ 26 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/framework/datapermission/config/DataPermissionConfiguration.java

@@ -0,0 +1,26 @@
+//package cn.start.tz.module.pressure2.framework.datapermission.config;
+//
+//import cn.start.tz.framework.datapermission.core.rule.dept.DeptDataPermissionRuleCustomizer;
+//import org.springframework.context.annotation.Bean;
+//import org.springframework.context.annotation.Configuration;
+//
+///**
+// * Pressure2 模块的数据权限 Configuration
+// *
+// * @author 芋道源码
+// */
+//@Configuration(proxyBeanMethods = false)
+//public class DataPermissionConfiguration {
+//
+//    @Bean
+//    public DeptDataPermissionRuleCustomizer sysDeptDataPermissionRuleCustomizer() {
+//        return rule -> {
+//            // dept
+////            rule.addDeptColumn("PRESSURE_TASK_ORDER", "DEPT_ID");
+////            // user
+////            rule.addUserColumn("PRESSURE_TASK_ORDER", "MANAGER_ID");
+////            rule.addUserColumn("PRESSURE2_PIPE_TASK_ORDER_USER", "USER_ID");
+//        };
+//    }
+//
+//}

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

@@ -191,6 +191,8 @@ public interface BoilerTaskOrderService extends IService<BoilerTaskOrderDO>  {
 
     Boolean syncReportData(BoilerTaskOrderSyncReportVO reqVO);
 
+    Boolean syncAllReportData(BoilerTaskOrderSyncReportVO reqVO);
+
     PageResult<BoilerOrderItemPageRespVO> inspectionOpinionPage(@Valid BoilerTaskOrderPageReqVO pageReqVO);
 
 }

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

@@ -30,6 +30,7 @@ import cn.start.tz.module.member.api.user.dto.MemberUserRespDTO;
 import cn.start.tz.module.pressure2.constant.TemplateIdConstants;
 import cn.start.tz.module.pressure2.controller.admin.equipboilerscheduling.vo.BoilerDeleteTask;
 import cn.start.tz.module.pressure2.dal.dataobject.businessmemberrelation.BusinessMemberRelationDO;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemreport.PipeTaskOrderItemReportDO;
 import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderuser.PipeTaskOrderUserDO;
 import cn.start.tz.module.pressure2.dal.mysql.boilerconnectrecordreport.BoilerConnectRecordReportMapper;
 import cn.start.tz.module.pressure2.dal.mysql.businessmemberrelation.BusinessMemberRelationMapper;
@@ -133,12 +134,10 @@ import cn.start.tz.module.pressure2.service.inspectionnature.InspectionNatureTem
 import cn.start.tz.module.pressure2.service.orderreport.OrderReportService;
 import cn.start.tz.module.pressure2.service.pdf.PdfService;
 import cn.start.tz.module.pressure2.service.pipetaskorder.PipeTaskOrderService;
+import cn.start.tz.module.pressure2.service.pipetaskorder.PipeTaskOrderServiceImpl;
 import cn.start.tz.module.pressure2.service.synchronization.SynchronizationService;
 import cn.start.tz.module.pressure2.service.synchronization.dto.ReportDto;
-import cn.start.tz.module.pressure2.util.ImageUtil;
-import cn.start.tz.module.pressure2.util.JsonDiffTool;
-import cn.start.tz.module.pressure2.util.JsonFieldMapper;
-import cn.start.tz.module.pressure2.util.WordToPdfUtils;
+import cn.start.tz.module.pressure2.util.*;
 import cn.start.tz.module.system.api.clientunit.ClientUnitApi;
 import cn.start.tz.module.system.api.clientunit.dto.ClientUnitDTO;
 import cn.start.tz.module.system.api.dept.DeptApi;
@@ -605,6 +604,13 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
 
     @Override
     public PageResult<BoilerTaskOrderRespVO> getBoilerTaskOrderPage(BoilerTaskOrderPageReqVO pageReqVO) {
+
+//        String userId = getLoginUserId();
+//        pageReqVO.setUserId(userId);
+
+        //获取权限参数
+        pageReqVO = DeptDataPermissionUtil.generateDeptDataPermissionReq(pageReqVO);
+
         PageResult<BoilerTaskOrderRespVO> pageResult = new PageResult<>();
 
         List<BoilerTaskOrderRespVO> boilerTaskOrderRespVOS = boilerTaskOrderMapper.selectPage(pageReqVO);
@@ -811,11 +817,11 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
                         addReport1.setTemplateId(dynamicTbDO.getId());
                         addReport1.setFee(item.getFee());
                         addReport1.setOrderId(taskOrderDO.getId());
-                        addReport1.setTaskStatus(400);
+                        addReport1.setTaskStatus(500);
                         addReport1.setReportNo(reportNo);
                         //addReport1.setSort(index.getAndSet(index.get() + 1));
                         addReport1.setReportType(dynamicTbDO.getTbType());
-
+                        addReport1.setReportUrl(id);
                         //使用配置的项目名称
                         //addReport1.setReportName(dynamicTbDO.getTbName());
                         addReport1.setReportName(recordReportDO.getProjectName());
@@ -863,6 +869,13 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
 
     @Override
     public PageResult<BoilerOrderItemPageRespVO> getOrderItemPage(BoilerTaskOrderPageReqVO pageReqVO) {
+
+//        String userId = getLoginUserId();
+//        pageReqVO.setUserId(userId);
+
+        //获取权限参数
+        pageReqVO = DeptDataPermissionUtil.generateDeptDataPermissionReq(pageReqVO);
+
         PageResult<BoilerOrderItemPageRespVO> pageResult = new PageResult<>();
 
         List<BoilerOrderItemPageRespVO> boilerOrderItemPageRespVOS = boilerTaskOrderMapper.selectItemPage(pageReqVO);
@@ -2032,7 +2045,7 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
             addReport.setTemplateId(vo.getTemplateId());
             addReport.setFee(vo.getFee());
             addReport.setOrderId(orderItemDOS.get(0).getOrderId());
-            addReport.setTaskStatus(TaskOrderStatusEnum.CONFIRM.getStatus());
+            addReport.setTaskStatus(TaskOrderStatusEnum.ENTER.getStatus());
             addReport.setSort(count + 1);
             addReport.setItemPartId(itemPartId);
             // 非手动上传
@@ -2850,7 +2863,12 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
     @Override
     public PageResult<BoilerOrderItemPageRespVO> recheckOrderItemPage(BoilerTaskOrderPageReqVO pageReqVO) {
 
-        String userId = getLoginUserId();
+//        String userId = getLoginUserId();
+//        pageReqVO.setUserId(userId);
+
+        //获取权限参数
+        pageReqVO = DeptDataPermissionUtil.generateDeptDataPermissionReq(pageReqVO);
+
         if (StringUtils.isNotEmpty(pageReqVO.getApproveStrIds())) {
             pageReqVO.setApproveIds(List.of(pageReqVO.getApproveStrIds().split(",")));
         }
@@ -5673,6 +5691,74 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
 
     }
 
+    @Override
+    public Boolean syncAllReportData(BoilerTaskOrderSyncReportVO reqVO) {
+
+        BoilerTaskOrderItemReportDO itemReportDO = taskOrderItemReportMapper.selectById(reqVO.getRefId());
+        if (itemReportDO != null) {
+            // 收集需要处理的模板 ID 及其类型列表
+            List<TemplateInfo> templateInfos = new ArrayList<>();
+            if (StringUtils.isNotBlank(itemReportDO.getTemplateId())) {
+                templateInfos.add(new TemplateInfo(itemReportDO.getTemplateId(), 1));
+            }
+            if (StringUtils.isNotBlank(itemReportDO.getReportTemplateId())) {
+                templateInfos.add(new TemplateInfo(itemReportDO.getReportTemplateId(), 2));
+            }
+            if (StringUtils.isNotBlank(itemReportDO.getResultTemplateId())) {
+                templateInfos.add(new TemplateInfo(itemReportDO.getResultTemplateId(), 3));
+            }
+
+            // 对每个模板 ID 进行循环同步处理
+            for (TemplateInfo templateInfo : templateInfos) {
+                DynamicTbDO dynamicTbDO = dynamicTbMapper.selectById(templateInfo.getTemplateId());
+                if (dynamicTbDO == null) {
+                    continue;
+                }
+
+                CreateInstantiateWithRuleVO ruleVO = new CreateInstantiateWithRuleVO();
+                ruleVO.setTemplateId(templateInfo.getTemplateId());
+                ruleVO.setRefId(reqVO.getRefId());
+                ruleVO.setRefName(itemReportDO.getReportName());
+                ruleVO.setReportType(templateInfo.getReportType());
+                if (reqVO.getParams() == null){
+                    reqVO.setParams(new com.alibaba.fastjson2.JSONObject());
+                }
+                reqVO.getParams().put("equipMainType","boiler");
+                ruleVO.setParams(reqVO.getParams());
+
+                //获取 tbCode 的服务方法名
+                BoilerConnectTbServiceDO tbServiceDO = boilerConnectTbServiceMapper.selectOne(BoilerConnectTbServiceDO::getTbId, dynamicTbDO.getId());
+                if (tbServiceDO != null){
+                    ruleVO.setServiceName(tbServiceDO.getInitServiceName());
+                    dynamicTbInsService.createInstantiateWithRule(ruleVO);
+                }
+            }
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * 模板信息内部类
+     */
+    private static class TemplateInfo {
+        private final String templateId;
+        private final int reportType;
+
+        public TemplateInfo(String templateId, int reportType) {
+            this.templateId = templateId;
+            this.reportType = reportType;
+        }
+
+        public String getTemplateId() {
+            return templateId;
+        }
+
+        public int getReportType() {
+            return reportType;
+        }
+    }
+
     @Override
     public PageResult<BoilerOrderItemPageRespVO> inspectionOpinionPage(BoilerTaskOrderPageReqVO pageReqVO) {
         //构建查询参数

+ 8 - 4
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QC10020_202400ReportOFData.java

@@ -13,6 +13,7 @@ import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitemreport.BoilerTa
 import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderuser.BoilerTaskOrderUserMapper;
 import cn.start.tz.module.pressure2.dal.mysql.equipboiler.EquipBoilerMapper;
 import cn.start.tz.module.pressure2.service.dynamicOFData.IDynamicOFData;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.AutoDataBoilerService;
 import cn.start.tz.module.pressure2.service.dynamicOFData.util.GenerateReportJsonService;
 import cn.start.tz.module.pressure2.service.dynamictbcol.DynamicTbColService;
 import cn.start.tz.module.pressure2.service.dynamictbval.DynamicTbValService;
@@ -60,6 +61,9 @@ public class QC10020_202400ReportOFData implements IDynamicOFData {
     @Resource
     private AdminUserApi adminUserApi;
 
+    @Resource
+    private AutoDataBoilerService autoDataBoilerService;
+
     @Override
     public JSONObject getOFData(JSONObject params) {
         return null;
@@ -81,7 +85,7 @@ public class QC10020_202400ReportOFData implements IDynamicOFData {
 
             //根据记录字段动态生成报告字段
             result = generateReportJsonService.generateReportFromRecord(ruleVO.getReportType(),ruleVO.getTemplateId(),refId);
-
+            result = autoDataBoilerService.autoGenerateBoilerReportData(result,refId);
             String orderItemId = itemReportDO.getOrderItemId();
             BoilerTaskOrderItemDO itemDO = boilerTaskOrderItemMapper.selectById(orderItemId);
             EquipBoilerReportVO equipBoilerDO = equipBoilerMapper.selectDetailsById(itemDO.getEquipId());
@@ -102,7 +106,7 @@ public class QC10020_202400ReportOFData implements IDynamicOFData {
                 }
             }
 
-            result.put("reportNo",itemReportDO.getReportNo());
+//            result.put("reportNo",itemReportDO.getReportNo());
 
             //检验员信息
             List<BoilerTaskOrderUserDO> checkUserList = boilerTaskOrderUserMapper.selectList(BoilerTaskOrderUserDO::getOrderId,itemReportDO.getOrderId());
@@ -119,7 +123,7 @@ public class QC10020_202400ReportOFData implements IDynamicOFData {
             }
 
             //编制人员信息
-            AdminUserRespDTO userInfo = adminUserApi.getUser(itemReportDO.getPrepareId()).getData();
+            /*AdminUserRespDTO userInfo = adminUserApi.getUser(itemReportDO.getPrepareId()).getData();
             if (userInfo != null){
                 if (userInfo.getSignUrl() != null){
                     result.put("prepareName",userInfo.getSignUrl());
@@ -155,7 +159,7 @@ public class QC10020_202400ReportOFData implements IDynamicOFData {
             }
             if (itemReportDO.getRatifyTime() != null){
                 result.put("ratifyTime",itemReportDO.getRatifyTime().format(dateFormat));
-            }
+            }*/
 
         }
 

+ 7 - 2
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QC10021_202400ReportOFData.java

@@ -11,6 +11,7 @@ import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitem.BoilerTaskOrde
 import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitemreport.BoilerTaskOrderItemReportMapper;
 import cn.start.tz.module.pressure2.dal.mysql.equipboiler.EquipBoilerMapper;
 import cn.start.tz.module.pressure2.service.dynamicOFData.IDynamicOFData;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.AutoDataBoilerService;
 import cn.start.tz.module.pressure2.service.dynamicOFData.util.GenerateReportJsonService;
 import cn.start.tz.module.pressure2.service.dynamictbcol.DynamicTbColService;
 import cn.start.tz.module.pressure2.service.dynamictbval.DynamicTbValService;
@@ -53,6 +54,9 @@ public class QC10021_202400ReportOFData implements IDynamicOFData {
     @Resource
     private AdminUserApi adminUserApi;
 
+    @Resource
+    private AutoDataBoilerService autoDataBoilerService;
+
     @Override
     public JSONObject getOFData(JSONObject params) {
         return null;
@@ -74,7 +78,8 @@ public class QC10021_202400ReportOFData implements IDynamicOFData {
 
             //根据记录字段动态生成报告字段
             result = generateReportJsonService.generateReportFromRecord(ruleVO.getReportType(),ruleVO.getTemplateId(),refId);
-
+            result = autoDataBoilerService.autoGenerateBoilerReportData(result, refId);
+/*
             String orderItemId = itemReportDO.getOrderItemId();
             BoilerTaskOrderItemDO itemDO = boilerTaskOrderItemMapper.selectById(orderItemId);
             EquipBoilerReportVO equipBoilerDO = equipBoilerMapper.selectDetailsById(itemDO.getEquipId());
@@ -96,7 +101,7 @@ public class QC10021_202400ReportOFData implements IDynamicOFData {
             }
             if (itemReportDO.getApprovalTime() != null){
                 result.put("approvalTime",itemReportDO.getApprovalTime().format(dateFormat));
-            }
+            }*/
 
         }
 

+ 7 - 3
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QC10023_202400ReportOFData.java

@@ -11,6 +11,7 @@ import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitemreport.BoilerTa
 import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderuser.BoilerTaskOrderUserMapper;
 import cn.start.tz.module.pressure2.dal.mysql.equipboiler.EquipBoilerMapper;
 import cn.start.tz.module.pressure2.service.dynamicOFData.IDynamicOFData;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.AutoDataBoilerService;
 import cn.start.tz.module.pressure2.service.dynamicOFData.util.GenerateReportJsonService;
 import cn.start.tz.module.pressure2.service.dynamictbcol.DynamicTbColService;
 import cn.start.tz.module.pressure2.service.dynamictbval.DynamicTbValService;
@@ -58,6 +59,9 @@ public class QC10023_202400ReportOFData implements IDynamicOFData {
     @Resource
     private AdminUserApi adminUserApi;
 
+    @Resource
+    private AutoDataBoilerService autoDataBoilerService;
+
     @Override
     public JSONObject getOFData(JSONObject params) {
         return null;
@@ -79,7 +83,7 @@ public class QC10023_202400ReportOFData implements IDynamicOFData {
 
             //根据记录字段动态生成报告字段
             result = generateReportJsonService.generateReportFromRecord(ruleVO.getReportType(),ruleVO.getTemplateId(),refId);
-
+            result = autoDataBoilerService.autoGenerateBoilerReportData(result, refId);
             //检验员信息
             List<BoilerTaskOrderUserDO> checkUserList = boilerTaskOrderUserMapper.selectList(BoilerTaskOrderUserDO::getOrderId,itemReportDO.getOrderId());
             if (!checkUserList.isEmpty()){
@@ -94,7 +98,7 @@ public class QC10023_202400ReportOFData implements IDynamicOFData {
                 }
             }
 
-            result.put("reportNo",itemReportDO.getReportNo());
+           /* result.put("reportNo",itemReportDO.getReportNo());
 
             //编制人员信息
             AdminUserRespDTO userInfo = adminUserApi.getUser(itemReportDO.getPrepareId()).getData();
@@ -134,7 +138,7 @@ public class QC10023_202400ReportOFData implements IDynamicOFData {
             if (itemReportDO.getRatifyTime() != null){
                 result.put("ratifyTime",itemReportDO.getRatifyTime().format(dateFormat));
             }
-
+        */
         }
 
         return result;

+ 7 - 3
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QC10026_202400ReportOFData.java

@@ -11,6 +11,7 @@ import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitem.BoilerTaskOrde
 import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitemreport.BoilerTaskOrderItemReportMapper;
 import cn.start.tz.module.pressure2.dal.mysql.equipboiler.EquipBoilerMapper;
 import cn.start.tz.module.pressure2.service.dynamicOFData.IDynamicOFData;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.AutoDataBoilerService;
 import cn.start.tz.module.pressure2.service.dynamicOFData.util.GenerateReportJsonService;
 import cn.start.tz.module.pressure2.service.dynamictbcol.DynamicTbColService;
 import cn.start.tz.module.pressure2.service.dynamictbval.DynamicTbValService;
@@ -53,6 +54,9 @@ public class QC10026_202400ReportOFData implements IDynamicOFData {
     @Resource
     private AdminUserApi adminUserApi;
 
+    @Resource
+    private AutoDataBoilerService autoDataBoilerService;
+
     @Override
     public JSONObject getOFData(JSONObject params) {
         return null;
@@ -74,8 +78,8 @@ public class QC10026_202400ReportOFData implements IDynamicOFData {
 
             //根据记录字段动态生成报告字段
             result = generateReportJsonService.generateReportFromRecord(ruleVO.getReportType(),ruleVO.getTemplateId(),refId);
-
-            String orderItemId = itemReportDO.getOrderItemId();
+            result = autoDataBoilerService.autoGenerateBoilerRecordData(result,refId);
+          /*  String orderItemId = itemReportDO.getOrderItemId();
             BoilerTaskOrderItemDO itemDO = boilerTaskOrderItemMapper.selectById(orderItemId);
             EquipBoilerReportVO equipBoilerDO = equipBoilerMapper.selectDetailsById(itemDO.getEquipId());
             if (equipBoilerDO != null){
@@ -97,7 +101,7 @@ public class QC10026_202400ReportOFData implements IDynamicOFData {
             }
             if (itemReportDO.getApprovalTime() != null){
                 result.put("approvalTime",itemReportDO.getApprovalTime().format(dateFormat));
-            }
+            }*/
 
         }
 

+ 7 - 3
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QC10027_202400ReportOFData.java

@@ -11,6 +11,7 @@ import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitem.BoilerTaskOrde
 import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitemreport.BoilerTaskOrderItemReportMapper;
 import cn.start.tz.module.pressure2.dal.mysql.equipboiler.EquipBoilerMapper;
 import cn.start.tz.module.pressure2.service.dynamicOFData.IDynamicOFData;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.AutoDataBoilerService;
 import cn.start.tz.module.pressure2.service.dynamicOFData.util.GenerateReportJsonService;
 import cn.start.tz.module.pressure2.service.dynamictbcol.DynamicTbColService;
 import cn.start.tz.module.pressure2.service.dynamictbval.DynamicTbValService;
@@ -53,6 +54,9 @@ public class QC10027_202400ReportOFData implements IDynamicOFData {
     @Resource
     private AdminUserApi adminUserApi;
 
+    @Resource
+    private AutoDataBoilerService autoDataBoilerService;
+
     @Override
     public JSONObject getOFData(JSONObject params) {
         return null;
@@ -74,8 +78,8 @@ public class QC10027_202400ReportOFData implements IDynamicOFData {
 
             //根据记录字段动态生成报告字段
             result = generateReportJsonService.generateReportFromRecord(ruleVO.getReportType(),ruleVO.getTemplateId(),refId);
-
-            String orderItemId = itemReportDO.getOrderItemId();
+            result = autoDataBoilerService.autoGenerateBoilerReportData(result,refId);
+            /*String orderItemId = itemReportDO.getOrderItemId();
             BoilerTaskOrderItemDO itemDO = boilerTaskOrderItemMapper.selectById(orderItemId);
             EquipBoilerReportVO equipBoilerDO = equipBoilerMapper.selectDetailsById(itemDO.getEquipId());
             if (equipBoilerDO != null){
@@ -97,7 +101,7 @@ public class QC10027_202400ReportOFData implements IDynamicOFData {
             }
             if (itemReportDO.getApprovalTime() != null){
                 result.put("approvalTime",itemReportDO.getApprovalTime().format(dateFormat));
-            }
+            }*/
 
         }
 

+ 7 - 3
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QC10028_202400ReportOFData.java

@@ -14,6 +14,7 @@ import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitemreport.BoilerTa
 import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderuser.BoilerTaskOrderUserMapper;
 import cn.start.tz.module.pressure2.dal.mysql.equipboiler.EquipBoilerMapper;
 import cn.start.tz.module.pressure2.service.dynamicOFData.IDynamicOFData;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.AutoDataBoilerService;
 import cn.start.tz.module.pressure2.service.dynamictbcol.DynamicTbColService;
 import cn.start.tz.module.pressure2.service.dynamictbval.DynamicTbValService;
 import cn.start.tz.module.system.api.user.AdminUserApi;
@@ -57,6 +58,8 @@ public class QC10028_202400ReportOFData implements IDynamicOFData {
     @Resource
     private AdminUserApi adminUserApi;
 
+    @Resource
+    private AutoDataBoilerService autoDataBoilerService;
     @Override
     public JSONObject getOFData(JSONObject params) {
         return null;
@@ -73,12 +76,13 @@ public class QC10028_202400ReportOFData implements IDynamicOFData {
 
         JSONObject result = new JSONObject();
         BoilerTaskOrderItemReportDO itemReportDO = boilerTaskOrderItemReportMapper.selectById(refId);
-
+        result = autoDataBoilerService.autoGenerateBoilerReportData(result, refId);
         if (itemReportDO != null){
 
             String orderItemId = itemReportDO.getOrderItemId();
             BoilerTaskOrderItemDO itemDO = boilerTaskOrderItemMapper.selectById(orderItemId);
-            EquipBoilerReportVO equipBoilerDO = equipBoilerMapper.selectDetailsById(itemDO.getEquipId());
+
+            /*EquipBoilerReportVO equipBoilerDO = equipBoilerMapper.selectDetailsById(itemDO.getEquipId());
             if (equipBoilerDO != null){
                 //设备信息
                 result.put("unitName",equipBoilerDO.getUnitName());
@@ -88,7 +92,7 @@ public class QC10028_202400ReportOFData implements IDynamicOFData {
                 result.put("equipCode",equipBoilerDO.getEquipCode());
                 result.put("zipCode",equipBoilerDO.getZipCode());
                 result.put("unitAddress",equipBoilerDO.getUnitAddress());
-            }
+            }*/
 
             String orderId = itemReportDO.getOrderId();
             BoilerTaskOrderDO taskOrderDO = boilerTaskOrderMapper.selectById(orderId);

+ 7 - 3
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QC10029_202400ReportOFData.java

@@ -11,6 +11,7 @@ import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitem.BoilerTaskOrde
 import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitemreport.BoilerTaskOrderItemReportMapper;
 import cn.start.tz.module.pressure2.dal.mysql.equipboiler.EquipBoilerMapper;
 import cn.start.tz.module.pressure2.service.dynamicOFData.IDynamicOFData;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.AutoDataBoilerService;
 import cn.start.tz.module.pressure2.service.dynamicOFData.util.GenerateReportJsonService;
 import cn.start.tz.module.pressure2.service.dynamictbcol.DynamicTbColService;
 import cn.start.tz.module.pressure2.service.dynamictbval.DynamicTbValService;
@@ -53,6 +54,9 @@ public class QC10029_202400ReportOFData implements IDynamicOFData {
     @Resource
     private AdminUserApi adminUserApi;
 
+    @Resource
+    private AutoDataBoilerService autoDataBoilerService;
+
     @Override
     public JSONObject getOFData(JSONObject params) {
         return null;
@@ -74,8 +78,8 @@ public class QC10029_202400ReportOFData implements IDynamicOFData {
 
             //根据记录字段动态生成报告字段
             result = generateReportJsonService.generateReportFromRecord(ruleVO.getReportType(),ruleVO.getTemplateId(),refId);
-
-            String orderItemId = itemReportDO.getOrderItemId();
+            result = autoDataBoilerService.autoGenerateBoilerReportData(result, refId);
+           /* String orderItemId = itemReportDO.getOrderItemId();
             BoilerTaskOrderItemDO itemDO = boilerTaskOrderItemMapper.selectById(orderItemId);
             EquipBoilerReportVO equipBoilerDO = equipBoilerMapper.selectDetailsById(itemDO.getEquipId());
             if (equipBoilerDO != null){
@@ -96,7 +100,7 @@ public class QC10029_202400ReportOFData implements IDynamicOFData {
             if (itemReportDO.getApprovalTime() != null){
                 result.put("approvalTime",itemReportDO.getApprovalTime().format(dateFormat));
             }
-
+*/
         }
 
         return result;

+ 7 - 3
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QC10030_202400ReportOFData.java

@@ -11,6 +11,7 @@ import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitem.BoilerTaskOrde
 import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitemreport.BoilerTaskOrderItemReportMapper;
 import cn.start.tz.module.pressure2.dal.mysql.equipboiler.EquipBoilerMapper;
 import cn.start.tz.module.pressure2.service.dynamicOFData.IDynamicOFData;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.AutoDataBoilerService;
 import cn.start.tz.module.pressure2.service.dynamicOFData.util.GenerateReportJsonService;
 import cn.start.tz.module.pressure2.service.dynamictbcol.DynamicTbColService;
 import cn.start.tz.module.pressure2.service.dynamictbval.DynamicTbValService;
@@ -53,6 +54,9 @@ public class QC10030_202400ReportOFData implements IDynamicOFData {
     @Resource
     private AdminUserApi adminUserApi;
 
+    @Resource
+    private AutoDataBoilerService autoDataBoilerService;
+
     @Override
     public JSONObject getOFData(JSONObject params) {
         return null;
@@ -74,8 +78,8 @@ public class QC10030_202400ReportOFData implements IDynamicOFData {
 
             //根据记录字段动态生成报告字段
             result = generateReportJsonService.generateReportFromRecord(ruleVO.getReportType(),ruleVO.getTemplateId(),refId);
-
-            String orderItemId = itemReportDO.getOrderItemId();
+            result = autoDataBoilerService.autoGenerateBoilerReportData(result, ruleVO.getRefId());
+           /* String orderItemId = itemReportDO.getOrderItemId();
             BoilerTaskOrderItemDO itemDO = boilerTaskOrderItemMapper.selectById(orderItemId);
             EquipBoilerReportVO equipBoilerDO = equipBoilerMapper.selectDetailsById(itemDO.getEquipId());
             if (equipBoilerDO != null){
@@ -95,7 +99,7 @@ public class QC10030_202400ReportOFData implements IDynamicOFData {
             }
             if (itemReportDO.getApprovalTime() != null){
                 result.put("approvalTime",itemReportDO.getApprovalTime().format(dateFormat));
-            }
+            }*/
 
         }
 

+ 7 - 3
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QC10031_202400ReportOFData.java

@@ -11,6 +11,7 @@ import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitem.BoilerTaskOrde
 import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitemreport.BoilerTaskOrderItemReportMapper;
 import cn.start.tz.module.pressure2.dal.mysql.equipboiler.EquipBoilerMapper;
 import cn.start.tz.module.pressure2.service.dynamicOFData.IDynamicOFData;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.AutoDataBoilerService;
 import cn.start.tz.module.pressure2.service.dynamicOFData.util.GenerateReportJsonService;
 import cn.start.tz.module.pressure2.service.dynamictbcol.DynamicTbColService;
 import cn.start.tz.module.pressure2.service.dynamictbval.DynamicTbValService;
@@ -53,6 +54,9 @@ public class QC10031_202400ReportOFData implements IDynamicOFData {
     @Resource
     private AdminUserApi adminUserApi;
 
+    @Resource
+    private AutoDataBoilerService autoDataBoilerService;
+
     @Override
     public JSONObject getOFData(JSONObject params) {
         return null;
@@ -74,8 +78,8 @@ public class QC10031_202400ReportOFData implements IDynamicOFData {
 
             //根据记录字段动态生成报告字段
             result = generateReportJsonService.generateReportFromRecord(ruleVO.getReportType(),ruleVO.getTemplateId(),refId);
-
-            String orderItemId = itemReportDO.getOrderItemId();
+            result = autoDataBoilerService.autoGenerateBoilerReportData(result, ruleVO.getRefId());
+          /*  String orderItemId = itemReportDO.getOrderItemId();
             BoilerTaskOrderItemDO itemDO = boilerTaskOrderItemMapper.selectById(orderItemId);
             EquipBoilerReportVO equipBoilerDO = equipBoilerMapper.selectDetailsById(itemDO.getEquipId());
             if (equipBoilerDO != null){
@@ -96,7 +100,7 @@ public class QC10031_202400ReportOFData implements IDynamicOFData {
             if (itemReportDO.getApprovalTime() != null){
                 result.put("approvalTime",itemReportDO.getApprovalTime().format(dateFormat));
             }
-
+*/
         }
 
         return result;

+ 6 - 3
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QC10032_202400ReportOFData.java

@@ -11,6 +11,7 @@ import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitem.BoilerTaskOrde
 import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitemreport.BoilerTaskOrderItemReportMapper;
 import cn.start.tz.module.pressure2.dal.mysql.equipboiler.EquipBoilerMapper;
 import cn.start.tz.module.pressure2.service.dynamicOFData.IDynamicOFData;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.AutoDataBoilerService;
 import cn.start.tz.module.pressure2.service.dynamicOFData.util.GenerateReportJsonService;
 import cn.start.tz.module.pressure2.service.dynamictbcol.DynamicTbColService;
 import cn.start.tz.module.pressure2.service.dynamictbval.DynamicTbValService;
@@ -52,6 +53,8 @@ public class QC10032_202400ReportOFData implements IDynamicOFData {
 
     @Resource
     private AdminUserApi adminUserApi;
+    @Resource
+    private AutoDataBoilerService autoDataBoilerService;
 
     @Override
     public JSONObject getOFData(JSONObject params) {
@@ -74,8 +77,8 @@ public class QC10032_202400ReportOFData implements IDynamicOFData {
 
             //根据记录字段动态生成报告字段
             result = generateReportJsonService.generateReportFromRecord(ruleVO.getReportType(),ruleVO.getTemplateId(),refId);
-
-            String orderItemId = itemReportDO.getOrderItemId();
+            result = autoDataBoilerService.autoGenerateBoilerReportData(result, ruleVO.getRefId());
+          /*  String orderItemId = itemReportDO.getOrderItemId();
             BoilerTaskOrderItemDO itemDO = boilerTaskOrderItemMapper.selectById(orderItemId);
             EquipBoilerReportVO equipBoilerDO = equipBoilerMapper.selectDetailsById(itemDO.getEquipId());
             if (equipBoilerDO != null){
@@ -96,7 +99,7 @@ public class QC10032_202400ReportOFData implements IDynamicOFData {
             if (itemReportDO.getApprovalTime() != null){
                 result.put("approvalTime",itemReportDO.getApprovalTime().format(dateFormat));
             }
-
+*/
         }
 
         return result;

+ 7 - 2
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QC10086_202400RecordOFData.java

@@ -10,6 +10,7 @@ import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitem.BoilerTaskOrde
 import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitemreport.BoilerTaskOrderItemReportMapper;
 import cn.start.tz.module.pressure2.dal.mysql.equipboiler.EquipBoilerMapper;
 import cn.start.tz.module.pressure2.service.dynamicOFData.IDynamicOFData;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.AutoDataBoilerService;
 import cn.start.tz.module.system.api.user.AdminUserApi;
 import cn.start.tz.module.system.api.user.dto.AdminUserRespDTO;
 import com.alibaba.fastjson2.JSONObject;
@@ -39,6 +40,9 @@ public class QC10086_202400RecordOFData implements IDynamicOFData {
     @Resource
     private AdminUserApi adminUserApi;
 
+    @Resource
+    private AutoDataBoilerService autoDataBoilerService;
+
     @Override
     public JSONObject getOFData(JSONObject params) {
         return null;
@@ -46,7 +50,8 @@ public class QC10086_202400RecordOFData implements IDynamicOFData {
 
     @Override
     public JSONObject getOfDataByVO(CreateInstantiateWithRuleVO ruleVO) {
-
+        return autoDataBoilerService.autoGenerateBoilerRecordData(new JSONObject(), ruleVO.getRefId());
+        /*
         //日期格式
         DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
 
@@ -130,7 +135,7 @@ public class QC10086_202400RecordOFData implements IDynamicOFData {
         }
 
         return result;
-
+*/
 
     }
 }

+ 7 - 3
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QC10087_202400RecordOFData.java

@@ -10,6 +10,7 @@ import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitem.BoilerTaskOrde
 import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitemreport.BoilerTaskOrderItemReportMapper;
 import cn.start.tz.module.pressure2.dal.mysql.equipboiler.EquipBoilerMapper;
 import cn.start.tz.module.pressure2.service.dynamicOFData.IDynamicOFData;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.AutoDataBoilerService;
 import cn.start.tz.module.system.api.user.AdminUserApi;
 import cn.start.tz.module.system.api.user.dto.AdminUserRespDTO;
 import com.alibaba.fastjson2.JSONObject;
@@ -38,6 +39,9 @@ public class QC10087_202400RecordOFData implements IDynamicOFData {
     @Resource
     private AdminUserApi adminUserApi;
 
+    @Resource
+    private AutoDataBoilerService autoDataBoilerService;
+
     @Override
     public JSONObject getOFData(JSONObject params) {
         return null;
@@ -45,8 +49,8 @@ public class QC10087_202400RecordOFData implements IDynamicOFData {
 
     @Override
     public JSONObject getOfDataByVO(CreateInstantiateWithRuleVO ruleVO) {
-
-        //日期格式
+        return autoDataBoilerService.autoGenerateBoilerRecordData(new JSONObject(), ruleVO.getRefId());
+       /* //日期格式
         DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
 
         //设备报表ID
@@ -94,7 +98,7 @@ public class QC10087_202400RecordOFData implements IDynamicOFData {
 
         }
 
-        return result;
+        return result;*/
 
 
     }

+ 9 - 5
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QC10089_202400RecordOFData.java

@@ -12,6 +12,7 @@ import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitemreport.BoilerTa
 import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderuser.BoilerTaskOrderUserMapper;
 import cn.start.tz.module.pressure2.dal.mysql.equipboiler.EquipBoilerMapper;
 import cn.start.tz.module.pressure2.service.dynamicOFData.IDynamicOFData;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.AutoDataBoilerService;
 import cn.start.tz.module.system.api.user.AdminUserApi;
 import cn.start.tz.module.system.api.user.dto.AdminUserRespDTO;
 import com.alibaba.fastjson2.JSONObject;
@@ -47,6 +48,9 @@ public class QC10089_202400RecordOFData implements IDynamicOFData {
     @Resource
     private AdminUserApi adminUserApi;
 
+    @Resource
+    private AutoDataBoilerService autoDataBoilerService;
+
     @Override
     public JSONObject getOFData(JSONObject params) {
         return null;
@@ -65,10 +69,10 @@ public class QC10089_202400RecordOFData implements IDynamicOFData {
 
         JSONObject result = new JSONObject();
         BoilerTaskOrderItemReportDO itemReportDO = boilerTaskOrderItemReportMapper.selectById(refId);
-
+        result = autoDataBoilerService.autoGenerateBoilerRecordData(result, refId);
         if (itemReportDO != null){
 
-            String orderItemId = itemReportDO.getOrderItemId();
+           /* String orderItemId = itemReportDO.getOrderItemId();
             BoilerTaskOrderItemDO itemDO = boilerTaskOrderItemMapper.selectById(orderItemId);
             EquipBoilerReportVO equipBoilerDO = equipBoilerMapper.selectDetailsById(itemDO.getEquipId());
             if (equipBoilerDO != null){
@@ -87,7 +91,7 @@ public class QC10089_202400RecordOFData implements IDynamicOFData {
                 result.put("installUnit",equipBoilerDO.getInstallUnit());
             }
 
-            result.put("reportNo",itemReportDO.getReportNo());
+            result.put("reportNo",itemReportDO.getReportNo());*/
 
             //检验员信息
             List<BoilerTaskOrderUserDO> checkUserList = boilerTaskOrderUserMapper.selectList(BoilerTaskOrderUserDO::getOrderId,itemReportDO.getOrderId());
@@ -103,7 +107,7 @@ public class QC10089_202400RecordOFData implements IDynamicOFData {
                 }
             }
 
-            //检验员信息
+          /*  //检验员信息
             String orderId = itemReportDO.getOrderId();
             BoilerTaskOrderDO taskOrderDO =  boilerTaskOrderMapper.selectById(orderId);
             if (taskOrderDO != null){
@@ -123,7 +127,7 @@ public class QC10089_202400RecordOFData implements IDynamicOFData {
             }
             if (itemReportDO.getRecheckDate() != null){
                 result.put("recheckDate",itemReportDO.getRecheckDate().format(dateFormat));
-            }
+            }*/
 
         }
 

+ 11 - 7
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QC10092_202400RecordOFData.java

@@ -11,6 +11,7 @@ import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitem.BoilerTaskOrde
 import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitemreport.BoilerTaskOrderItemReportMapper;
 import cn.start.tz.module.pressure2.dal.mysql.equipboiler.EquipBoilerMapper;
 import cn.start.tz.module.pressure2.service.dynamicOFData.IDynamicOFData;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.AutoDataBoilerService;
 import cn.start.tz.module.system.api.dict.DictDataApi;
 import cn.start.tz.module.system.api.dict.dto.DictDataRespDTO;
 import cn.start.tz.module.system.api.user.AdminUserApi;
@@ -45,6 +46,9 @@ public class QC10092_202400RecordOFData implements IDynamicOFData {
     @Resource
     private DictDataApi dictDataApi;
 
+    @Resource
+    private AutoDataBoilerService autoDataBoilerService;
+
     @Override
     public JSONObject getOFData(JSONObject params) {
         return null;
@@ -63,16 +67,12 @@ public class QC10092_202400RecordOFData implements IDynamicOFData {
 
         JSONObject result = new JSONObject();
         BoilerTaskOrderItemReportDO itemReportDO = boilerTaskOrderItemReportMapper.selectById(refId);
-
+        result = autoDataBoilerService.autoGenerateBoilerRecordData(result,refId);
         if (itemReportDO != null){
 
             String orderItemId = itemReportDO.getOrderItemId();
             BoilerTaskOrderItemDO itemDO = boilerTaskOrderItemMapper.selectById(orderItemId);
             EquipBoilerReportVO equipBoilerDO = equipBoilerMapper.selectDetailsById(itemDO.getEquipId());
-            if (equipBoilerDO != null){
-                //设备信息
-                result.put("productCode",equipBoilerDO.getProductCode());
-            }
 
             //检件名称
             if (itemReportDO.getItemPartId() != null){
@@ -81,7 +81,11 @@ public class QC10092_202400RecordOFData implements IDynamicOFData {
                     result.put("part",partType.getLabel());
                 }
             }
-
+             /*
+             if (equipBoilerDO != null){
+                //设备信息
+                result.put("productCode",equipBoilerDO.getProductCode());
+            }
             result.put("reportNo",itemReportDO.getReportNo());
 
             //检验员信息
@@ -105,7 +109,7 @@ public class QC10092_202400RecordOFData implements IDynamicOFData {
             if (itemReportDO.getRecheckDate() != null){
                 result.put("recheckDate",itemReportDO.getRecheckDate().format(dateFormat));
             }
-
+*/
         }
 
         return result;

+ 7 - 1
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QC10093_202400RecordOFData.java

@@ -10,6 +10,7 @@ import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitem.BoilerTaskOrde
 import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitemreport.BoilerTaskOrderItemReportMapper;
 import cn.start.tz.module.pressure2.dal.mysql.equipboiler.EquipBoilerMapper;
 import cn.start.tz.module.pressure2.service.dynamicOFData.IDynamicOFData;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.AutoDataBoilerService;
 import cn.start.tz.module.system.api.user.AdminUserApi;
 import cn.start.tz.module.system.api.user.dto.AdminUserRespDTO;
 import com.alibaba.fastjson2.JSONObject;
@@ -38,6 +39,9 @@ public class QC10093_202400RecordOFData implements IDynamicOFData {
     @Resource
     private AdminUserApi adminUserApi;
 
+    @Resource
+    private AutoDataBoilerService autoDataBoilerService;
+
     @Override
     public JSONObject getOFData(JSONObject params) {
         return null;
@@ -45,7 +49,8 @@ public class QC10093_202400RecordOFData implements IDynamicOFData {
 
     @Override
     public JSONObject getOfDataByVO(CreateInstantiateWithRuleVO ruleVO) {
-
+        return autoDataBoilerService.autoGenerateBoilerRecordData(new JSONObject(), ruleVO.getRefId());
+/*
         //日期格式
         DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
 
@@ -96,5 +101,6 @@ public class QC10093_202400RecordOFData implements IDynamicOFData {
         return result;
 
 
+*/
     }
 }

+ 6 - 1
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QC10094_202400RecordOFData.java

@@ -10,6 +10,7 @@ import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitem.BoilerTaskOrde
 import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitemreport.BoilerTaskOrderItemReportMapper;
 import cn.start.tz.module.pressure2.dal.mysql.equipboiler.EquipBoilerMapper;
 import cn.start.tz.module.pressure2.service.dynamicOFData.IDynamicOFData;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.AutoDataBoilerService;
 import cn.start.tz.module.system.api.user.AdminUserApi;
 import cn.start.tz.module.system.api.user.dto.AdminUserRespDTO;
 import com.alibaba.fastjson2.JSONObject;
@@ -38,7 +39,8 @@ public class QC10094_202400RecordOFData implements IDynamicOFData {
 
     @Resource
     private AdminUserApi adminUserApi;
-
+    @Resource
+    private AutoDataBoilerService autoDataBoilerService;
     @Override
     public JSONObject getOFData(JSONObject params) {
         return null;
@@ -46,6 +48,8 @@ public class QC10094_202400RecordOFData implements IDynamicOFData {
 
     @Override
     public JSONObject getOfDataByVO(CreateInstantiateWithRuleVO ruleVO) {
+        return autoDataBoilerService.autoGenerateBoilerRecordData(new JSONObject(),ruleVO.getRefId());
+/*
 
         //日期格式
         DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
@@ -95,6 +99,7 @@ public class QC10094_202400RecordOFData implements IDynamicOFData {
         }
 
         return result;
+*/
 
 
     }

+ 7 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QC10095_202400RecordOFData.java

@@ -10,6 +10,7 @@ import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitem.BoilerTaskOrde
 import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitemreport.BoilerTaskOrderItemReportMapper;
 import cn.start.tz.module.pressure2.dal.mysql.equipboiler.EquipBoilerMapper;
 import cn.start.tz.module.pressure2.service.dynamicOFData.IDynamicOFData;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.AutoDataBoilerService;
 import cn.start.tz.module.system.api.user.AdminUserApi;
 import cn.start.tz.module.system.api.user.dto.AdminUserRespDTO;
 import com.alibaba.fastjson2.JSONObject;
@@ -39,6 +40,9 @@ public class QC10095_202400RecordOFData implements IDynamicOFData {
     @Resource
     private AdminUserApi adminUserApi;
 
+    @Resource
+    private AutoDataBoilerService autoDataBoilerService;
+
     @Override
     public JSONObject getOFData(JSONObject params) {
         return null;
@@ -46,6 +50,8 @@ public class QC10095_202400RecordOFData implements IDynamicOFData {
 
     @Override
     public JSONObject getOfDataByVO(CreateInstantiateWithRuleVO ruleVO) {
+        return autoDataBoilerService.autoGenerateBoilerRecordData(new JSONObject(),ruleVO.getRefId());
+/*
 
         //日期格式
         DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
@@ -97,5 +103,6 @@ public class QC10095_202400RecordOFData implements IDynamicOFData {
         return result;
 
 
+*/
     }
 }

+ 7 - 3
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QC10096_202400RecordOFData.java

@@ -10,6 +10,7 @@ import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitem.BoilerTaskOrde
 import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitemreport.BoilerTaskOrderItemReportMapper;
 import cn.start.tz.module.pressure2.dal.mysql.equipboiler.EquipBoilerMapper;
 import cn.start.tz.module.pressure2.service.dynamicOFData.IDynamicOFData;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.AutoDataBoilerService;
 import cn.start.tz.module.system.api.user.AdminUserApi;
 import cn.start.tz.module.system.api.user.dto.AdminUserRespDTO;
 import com.alibaba.fastjson2.JSONObject;
@@ -39,6 +40,9 @@ public class QC10096_202400RecordOFData implements IDynamicOFData {
     @Resource
     private AdminUserApi adminUserApi;
 
+    @Resource
+    private AutoDataBoilerService autoDataBoilerService;
+
     @Override
     public JSONObject getOFData(JSONObject params) {
         return null;
@@ -46,8 +50,8 @@ public class QC10096_202400RecordOFData implements IDynamicOFData {
 
     @Override
     public JSONObject getOfDataByVO(CreateInstantiateWithRuleVO ruleVO) {
-
-        //日期格式
+        return autoDataBoilerService.autoGenerateBoilerRecordData(new JSONObject(),ruleVO.getRefId());
+      /*  //日期格式
         DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
 
         //设备报表ID
@@ -94,7 +98,7 @@ public class QC10096_202400RecordOFData implements IDynamicOFData {
 
         }
 
-        return result;
+        return result;*/
 
 
     }

+ 6 - 3
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QC10097_202400RecordOFData.java

@@ -10,6 +10,7 @@ import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitem.BoilerTaskOrde
 import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitemreport.BoilerTaskOrderItemReportMapper;
 import cn.start.tz.module.pressure2.dal.mysql.equipboiler.EquipBoilerMapper;
 import cn.start.tz.module.pressure2.service.dynamicOFData.IDynamicOFData;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.AutoDataBoilerService;
 import cn.start.tz.module.system.api.user.AdminUserApi;
 import cn.start.tz.module.system.api.user.dto.AdminUserRespDTO;
 import com.alibaba.fastjson2.JSONObject;
@@ -38,6 +39,8 @@ public class QC10097_202400RecordOFData implements IDynamicOFData {
 
     @Resource
     private AdminUserApi adminUserApi;
+    @Resource
+    private AutoDataBoilerService autoDataBoilerService;
 
     @Override
     public JSONObject getOFData(JSONObject params) {
@@ -46,8 +49,8 @@ public class QC10097_202400RecordOFData implements IDynamicOFData {
 
     @Override
     public JSONObject getOfDataByVO(CreateInstantiateWithRuleVO ruleVO) {
-
-        //日期格式
+        return autoDataBoilerService.autoGenerateBoilerRecordData(new JSONObject(),ruleVO.getRefId());
+     /*   //日期格式
         DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
 
         //设备报表ID
@@ -95,7 +98,7 @@ public class QC10097_202400RecordOFData implements IDynamicOFData {
         }
 
         return result;
-
+*/
 
     }
 }

+ 1 - 1
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QR0405_202400ReportOFData.java

@@ -24,7 +24,7 @@ import java.util.List;
 import java.util.stream.Collectors;
 
 /**
- * 压力管道一览表报告
+ * 受理单
  */
 @Service("QR0405_202400ReportOFData")
 public class QR0405_202400ReportOFData implements IDynamicOFData {

+ 52 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/README.md

@@ -0,0 +1,52 @@
+# 锅炉动态字段数据服务类文档
+
+### 一、报告类 (Report) - QC 系列
+
+#### QC10020-QC10033 系列
+
+| 序号 | 文件名 | 类名 | 描述 | 链接 |
+|:---:|--------|------|------|------|
+| 1 | [QC10020_202400ReportOFData.java](./QC10020_202400ReportOFData.java) | `QC10020_202400` | 锅炉内部检验报告 | [查看](./QC10020_202400ReportOFData.java) |
+| 2 | [QC10021_202400ReportOFData.java](./QC10021_202400ReportOFData.java) | `QC10021_202400` | 工业锅炉内部检验报告 | [查看](./QC10021_202400ReportOFData.java) |
+| 3 | [QC10022_202400ReportOFData.java](./QC10022_202400ReportOFData.java) | `QC10022_202400` | 工业锅炉外部检验报告 | [查看](./QC10022_202400ReportOFData.java) |
+| 4 | [QC10023_202400ReportOFData.java](./QC10023_202400ReportOFData.java) | `QC10023_202400` | 锅炉水(耐)压试验报告 | [查看](./QC10023_202400ReportOFData.java) |
+| 5 | [QC10024_202400ReportOFData.java](./QC10024_202400ReportOFData.java) | `QC10024_202400` | 有机热载体炉外部检验报告 | [查看](./QC10024_202400ReportOFData.java) |
+| 6 | [QC10025_202400ReportOFData.java](./QC10025_202400ReportOFData.java) | `QC10025_202400` | 有机热载体炉内部检验报告 | [查看](./QC10025_202400ReportOFData.java) |
+| 7 | [QC10026_202400ReportOFData.java](./QC10026_202400ReportOFData.java) | `QC10026_202400` | 锅炉强度校核报告 | [查看](./QC10026_202400ReportOFData.java) |
+| 8 | [QC10027_202400ReportOFData.java](./QC10027_202400ReportOFData.java) | `QC10027_202400` | 锅炉定期检验附加报告 | [查看](./QC10027_202400ReportOFData.java) |
+| 9 | [QC10028_202400ReportOFData.java](./QC10028_202400ReportOFData.java) | `QC10028_202400` | 锅炉定期检验报告(封面) | [查看](./QC10028_202400ReportOFData.java) |
+| 10 | [QC10029_202400ReportOFData.java](./QC10029_202400ReportOFData.java) | `QC10029_202400` | 工业锅炉热力管道全面检验报告 | [查看](./QC10029_202400ReportOFData.java) |
+| 11 | [QC10030_202400ReportOFData.java](./QC10030_202400ReportOFData.java) | `QC10030_202400` | 工业锅炉热力管道在线检验报告 | [查看](./QC10030_202400ReportOFData.java) |
+| 12 | [QC10031_202400ReportOFData.java](./QC10031_202400ReportOFData.java) | `QC10031_202400` | 有机热载体炉管道全面检验报告 | [查看](./QC10031_202400ReportOFData.java) |
+| 13 | [QC10032_202400ReportOFData.java](./QC10032_202400ReportOFData.java) | `QC10032_202400` | 有机热载体炉管道全面检验报告 | [查看](./QC10032_202400ReportOFData.java) |
+| 14 | [QC10033_202400ReportOFData.java](./QC10033_202400ReportOFData.java) | `QC10033_202400` | 锅炉外部检验结论报告 | [查看](./QC10033_202400ReportOFData.java) |
+
+---
+
+### 二、记录类 (Record) - QC 系列
+
+#### QC10086-QC10098 系列
+
+| 序号 | 文件名 | 类名 | 描述 | 链接 |
+|:---:|--------|------|------|------|
+| 1 | [QC10086_202400RecordOFData.java](./QC10086_202400RecordOFData.java) | `QC10086_202400` | 锅炉内部检验记录 | [查看](./QC10086_202400RecordOFData.java) |
+| 2 | [QC10087_202400RecordOFData.java](./QC10087_202400RecordOFData.java) | `QC10087_202400` | 工业锅炉内部检验记录 | [查看](./QC10087_202400RecordOFData.java) |
+| 3 | [QC10088_202400RecordOFData.java](./QC10088_202400RecordOFData.java) | `QC10088_202400` | 工业锅炉外部检验记录 | [查看](./QC10088_202400RecordOFData.java) |
+| 4 | [QC10089_202400RecordOFData.java](./QC10089_202400RecordOFData.java) | `QC10089_202400` | 锅炉水(耐)压试验记录 | [查看](./QC10089_202400RecordOFData.java) |
+| 5 | [QC10090_202400RecordOFData.java](./QC10090_202400RecordOFData.java) | `QC10090_202400` | 有机热载体炉外部检验记录 | [查看](./QC10090_202400RecordOFData.java) |
+| 6 | [QC10091_202400RecordOFData.java](./QC10091_202400RecordOFData.java) | `QC10091_202400` | 有机热载体炉内部检验记录 | [查看](./QC10091_202400RecordOFData.java) |
+| 7 | [QC10092_202400RecordOFData.java](./QC10092_202400RecordOFData.java) | `QC10092_202400` | 锅炉强度校核记录 | [查看](./QC10092_202400RecordOFData.java) |
+| 8 | [QC10093_202400RecordOFData.java](./QC10093_202400RecordOFData.java) | `QC10093_202400` | 锅炉定期检验附加记录 | [查看](./QC10093_202400RecordOFData.java) |
+| 9 | [QC10094_202400RecordOFData.java](./QC10094_202400RecordOFData.java) | `QC10094_202400` | 工业锅炉热力管道全面检验记录 | [查看](./QC10094_202400RecordOFData.java) |
+| 10 | [QC10095_202400RecordOFData.java](./QC10095_202400RecordOFData.java) | `QC10095_202400` | 工业锅炉热力管道在线检验记录 | [查看](./QC10095_202400RecordOFData.java) |
+| 11 | [QC10096_202400RecordOFData.java](./QC10096_202400RecordOFData.java) | `QC10096_202400` | 有机热载体炉管道全面检验记录 | [查看](./QC10096_202400RecordOFData.java) |
+| 12 | [QC10097_202400RecordOFData.java](./QC10097_202400RecordOFData.java) | `QC10097_202400` | 有机热载体炉管道在线检验记录 | [查看](./QC10097_202400RecordOFData.java) |
+| 13 | [QC10098_202400RecordOFData.java](./QC10098_202400RecordOFData.java) | `QC10098_202400` | 锅炉外部检验记录 | [查看](./QC10098_202400RecordOFData.java) |
+
+---
+
+### 三、其他报告类 (QR 系列)
+
+| 序号 | 文件名 | 类名 | 描述 | 链接 |
+|:---:|--------|------|------|------|
+| 1 | [QR0405_202400ReportOFData.java](./QR0405_202400ReportOFData.java) | `QR0405_202400` | 锅炉定期检验申请(受理)单 | [查看](./QR0405_202400ReportOFData.java) |

+ 35 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/comm/README.md

@@ -0,0 +1,35 @@
+# 公用动态字段数据服务类文档
+
+## 📊 文件分类汇总
+
+### 一、通用业务类 (QC 系列)
+
+| 序号 | 文件名 | 类名 | 描述 | 链接 |
+|:---:|--------|------|------|------|
+| 1 | [EHSQGR009_202400RecordOFData.java](./EHSQGR009_202400RecordOFData.java) | `EHSQGR009_202400` | EHS 质量管理记录 | [查看](./EHSQGR009_202400RecordOFData.java) |
+| 2 | [QC01001_202400OFData.java](./QC01001_202400OFData.java) | `QC01001_202400` | 检验方案 | [查看](./QC01001_202400OFData.java) |
+| 3 | [QC01010_202402OFData.java](./QC01010_202402OFData.java) | `QC01010_202402` | 检验方案(版本 2) | [查看](./QC01010_202402OFData.java) |
+
+---
+
+### 二、报告类 (QC47-QC52 系列)
+
+| 序号 | 文件名 | 类名 | 描述 | 链接 |
+|:---:|--------|------|------|------|
+| 1 | [QC47012_202400ReportOFData.java](./QC47012_202400ReportOFData.java) | `QC47012_202400` | 特种设备检验报告 | [查看](./QC47012_202400ReportOFData.java) |
+| 2 | [QC52017_202401ReportOFData.java](./QC52017_202401ReportOFData.java) | `QC52017_202401` | 检验检测报告 | [查看](./QC52017_202401ReportOFData.java) |
+| 3 | [QC52018_202400ReportOFData.java](./QC52018_202400ReportOFData.java) | `QC52018_202400` | 检验结论报告 | [查看](./QC52018_202400ReportOFData.java) |
+| 4 | [QC52019_202400ReportOFData.java](./QC52019_202400ReportOFData.java) | `QC52019_202400` | 检验结果报告 | [查看](./QC52019_202400ReportOFData.java) |
+| 5 | [QC52020_202400ReportOFData.java](./QC52020_202400ReportOFData.java) | `QC52020_202400` | 检验情况报告 | [查看](./QC52020_202400ReportOFData.java) |
+
+---
+
+### 三、记录类 (QC52 系列)
+
+| 序号 | 文件名 | 类名 | 描述 | 链接 |
+|:---:|--------|------|------|------|
+| 1 | [QC47037_202400RecordOFData.java](./QC47037_202400RecordOFData.java) | `QC47037_202400` | 特种设备检验记录 | [查看](./QC47037_202400RecordOFData.java) |
+| 2 | [QC52044_202401RecordOFData.java](./QC52044_202401RecordOFData.java) | `QC52044_202401` | 检验检测记录 | [查看](./QC52044_202401RecordOFData.java) |
+| 3 | [QC52045_202401RecordOFData.java](./QC52045_202401RecordOFData.java) | `QC52045_202401` | 检验结论记录 | [查看](./QC52045_202401RecordOFData.java) |
+| 4 | [QC52046_202400RecordOFData.java](./QC52046_202400RecordOFData.java) | `QC52046_202400` | 检验结果记录 | [查看](./QC52046_202400RecordOFData.java) |
+| 5 | [QC52047_202400RecordOFData.java](./QC52047_202400RecordOFData.java) | `QC52047_202400` | 检验情况记录 | [查看](./QC52047_202400RecordOFData.java) |

+ 14 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/instruction/README.md

@@ -0,0 +1,14 @@
+# 操作指导书动态字段数据服务类文档
+
+## 📊 文件分类汇总
+
+### 一、操作指导书类 (Instruction) - QC52 系列
+
+| 序号 | 文件名 | 类名 | 描述 | 链接 |
+|:---:|--------|------|------|------|
+| 1 | [QC52001_202401InstructionOFData.java](./QC52001_202401InstructionOFData.java) | `QC52001_202401` | 射线检测操作指导书 | [查看](./QC52001_202401InstructionOFData.java) |
+| 2 | [QC52002_202401InstructionOFData.java](./QC52002_202401InstructionOFData.java) | `QC52002_202401` | 超声波检测操作指导书 | [查看](./QC52002_202401InstructionOFData.java) |
+| 3 | [QC52003_202401InstructionOFData.java](./QC52003_202401InstructionOFData.java) | `QC52003_202401` | 磁粉检测操作指导书 | [查看](./QC52003_202401InstructionOFData.java) |
+| 4 | [QC52004_202400InstructionOFData.java](./QC52004_202400InstructionOFData.java) | `QC52004_202400` | 渗透检测操作指导书 | [查看](./QC52004_202400InstructionOFData.java) |
+| 5 | [QC52009_202400InstructionOFData.java](./QC52009_202400InstructionOFData.java) | `QC52009_202400` | 目视检测操作指导书 | [查看](./QC52009_202400InstructionOFData.java) |
+| 6 | [QC52011_202400InstructionOFData.java](./QC52011_202400InstructionOFData.java) | `QC52011_202400` | 其他检测操作指导书 | [查看](./QC52011_202400InstructionOFData.java) |

+ 15 - 1
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QC12016_202400ReportOFData.java

@@ -34,6 +34,7 @@ import org.springframework.stereotype.Service;
 
 import java.time.format.DateTimeFormatter;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 压力管道年度检查结论报告
@@ -103,12 +104,12 @@ public class QC12016_202400ReportOFData implements IDynamicOFData {
                     .eq(PipeTaskOrderItemDO::getOrderId, itemReportDO.getOrderId()));
             if (!itemDOList.isEmpty()){
                 //设备信息
+                EquipPipeDO equipPipeDO = equipPipeMapper.selectById(itemDOList.get(0).getEquipId());
                 if (itemDOList.size() > 1){
                     result.put("unitCode","见一览表");
                     result.put("unitName","见一览表");
                     result.put("unitAddress","见一览表");
                 }else {
-                    EquipPipeDO equipPipeDO = equipPipeMapper.selectById(itemDOList.get(0).getEquipId());
                     if (equipPipeDO != null){
                         result.put("unitCode",equipPipeDO.getUnitCode());
                         result.put("unitName",equipPipeDO.getUnitName());
@@ -150,6 +151,19 @@ public class QC12016_202400ReportOFData implements IDynamicOFData {
                         }
                     }
                 }
+                if (equipPipeDO != null) {
+                    result.put("certificateNo", equipPipeDO.getCertificateNo());
+                }
+                List<EquipPipeDO> equipPipeDOList = equipPipeMapper.selectList(new LambdaQueryWrapper<EquipPipeDO>().in(EquipPipeDO::getId, itemDOList.stream().map(PipeTaskOrderItemDO::getEquipId).toList()));
+                List<PipeTaskOrderItemDetailDO> detailDOS = pipeTaskOrderItemDetailMapper.selectList(PipeTaskOrderItemDetailDO::getOrderId, itemReportDO.getOrderId());
+                List<EquipPipeDetailDO> equipPipeDetailDOList = equipPipeDetailMapper.selectList(new LambdaQueryWrapper<EquipPipeDetailDO>().in(EquipPipeDetailDO::getId, detailDOS.stream().map(PipeTaskOrderItemDetailDO::getEquipDetailId).toList()));
+                double sum = equipPipeDetailDOList.stream().mapToDouble(equipPipeDetailDO -> equipPipeDetailDO.getPipeLength().doubleValue()).sum();
+                result.put("pipeLengthTotal", String.valueOf(sum));
+                List<String> pipeCategoryList = equipPipeDOList.stream().map(EquipPipeDO::getPipeCategory).distinct().toList();
+                List<DictDataRespDTO> dictDataRespDTOList = dictDataApi.getDictDataList("PIPE_TYPE").getData();
+                // 按/拼接
+                String collect = dictDataRespDTOList.stream().filter(dictDataRespDTO -> pipeCategoryList.contains(dictDataRespDTO.getValue())).map(DictDataRespDTO::getLabel).collect(Collectors.joining("/"));
+                result.put("pipeCategory", collect);
             }
 
             String orderId = itemReportDO.getOrderId();

+ 43 - 7
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QC12024_202400ReportOFData.java

@@ -1,5 +1,6 @@
 package cn.start.tz.module.pressure2.service.dynamicOFData.pipe;
 
+import cn.hutool.core.util.StrUtil;
 import cn.start.tz.module.pressure2.controller.admin.dynamictbins.vo.CreateInstantiateWithRuleVO;
 import cn.start.tz.module.pressure2.dal.dataobject.dynamictbcol.DynamicTbColDO;
 import cn.start.tz.module.pressure2.dal.dataobject.dynamictbval.DynamicTbValDO;
@@ -33,6 +34,8 @@ import org.springframework.stereotype.Service;
 
 import java.time.format.DateTimeFormatter;
 import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
 
 /**
  * 压力管道定期检验结论报告
@@ -116,10 +119,10 @@ public class QC12024_202400ReportOFData implements IDynamicOFData {
 
                     //获取所有管道信息
                     List<EquipPipeDO> equipPipeDOList = equipPipeMapper.selectList(new LambdaQueryWrapper<EquipPipeDO>()
-                            .in(EquipPipeDO::getId, itemDOList.stream().map(PipeTaskOrderItemDO::getEquipId)));
+                            .in(EquipPipeDO::getId, itemDOList.stream().map(PipeTaskOrderItemDO::getEquipId).toList()));
                     
                     //分别检查管道类别和使用登记证编号是否一致
-                    if (!equipPipeDOList.isEmpty()) {
+                   /* if (!equipPipeDOList.isEmpty()) {
                         // 检查所有管道的类别是否一致
                         String firstPipeCategory = equipPipeDOList.get(0).getPipeCategory();
                         boolean allPipeCategorySame = true;
@@ -158,8 +161,35 @@ public class QC12024_202400ReportOFData implements IDynamicOFData {
                         } else {
                             result.put("certificateNo", "见一览表");
                         }
-                    }
+                    }*/
+                    if (!equipPipeDOList.isEmpty()) {
+                        // 查询是否已经填写管道类别
+                        try {
+                            List<DynamicTbValDO> dynamicTbValByRefId = dynamicTbValService.getDynamicTbValByRefId(ruleVO.getRefId());
+                            if (!dynamicTbValByRefId.isEmpty()) {
+                                // 新增
+
+                                Optional<DynamicTbValDO> dynamicTbValDO = dynamicTbValByRefId.stream().filter(dynamicTbVal -> "pipeCategory".equals(dynamicTbVal.getColCode())).findFirst();
+                                if (dynamicTbValDO.isEmpty() || StrUtil.isBlank(dynamicTbValDO.get().getValValue())) {
+                                    List<String> pipeCategoryList = equipPipeDOList.stream().map(EquipPipeDO::getPipeCategory).distinct().toList();
+                                    List<DictDataRespDTO> dictDataRespDTOList = dictDataApi.getDictDataList("PIPE_TYPE").getData();
+                                    // 按/拼接
+                                    String collect = dictDataRespDTOList.stream().filter(dictDataRespDTO -> pipeCategoryList.contains(dictDataRespDTO.getValue())).map(DictDataRespDTO::getLabel).collect(Collectors.joining("/"));
+                                    result.put("pipeCategory", collect);
+                                }
 
+                            }
+                        } catch (Exception e) {
+                            // 说明是新增
+                            List<String> pipeCategoryList = equipPipeDOList.stream().map(EquipPipeDO::getPipeCategory).distinct().toList();
+                            List<DictDataRespDTO> dictDataRespDTOList = dictDataApi.getDictDataList("PIPE_TYPE").getData();
+                            // 按/拼接
+                            String collect = dictDataRespDTOList.stream().filter(dictDataRespDTO -> pipeCategoryList.contains(dictDataRespDTO.getValue())).map(DictDataRespDTO::getLabel).collect(Collectors.joining("/"));
+                            result.put("pipeCategory", collect);
+                        }
+                        String collect = equipPipeDOList.stream().filter(equipPipeDO1 -> equipPipeDO1.getLayingMode() != null).map(EquipPipeDO::getLayingMode).distinct().collect(Collectors.joining("/"));
+                        result.put("value2", collect);
+                    }
                 }else {
                     if (equipPipeDO != null){
                         result.put("unitCode",equipPipeDO.getUnitCode());
@@ -167,7 +197,6 @@ public class QC12024_202400ReportOFData implements IDynamicOFData {
                         result.put("unitAddress",equipPipeDO.getUnitAddress());
 
                         result.put("contactPhone",equipPipeDO.getContactPhone());
-                        result.put("certificateNo",equipPipeDO.getCertificateNo());
 
                         result.put("securityMan",equipPipeDO.getSecurityMan());
                         result.put("pipeClass",equipPipeDO.getPipeClass());
@@ -175,8 +204,7 @@ public class QC12024_202400ReportOFData implements IDynamicOFData {
                         result.put("projectName",equipPipeDO.getProjectName());
                         result.put("postalCode",equipPipeDO.getPostalCode());
                         result.put("pipeUsePlace",equipPipeDO.getPipeUsePlace());
-
-                        result.put("pipeLengthTotal",equipPipeDO.getPipeLengthTotal().toString());
+                        result.put("value2",equipPipeDO.getLayingMode());
 
                         DictDataRespDTO dictDataRespDTO = dictDataApi.getDictData("PIPE_TYPE",equipPipeDO.getPipeCategory()).getData();
                         if (dictDataRespDTO != null){
@@ -184,8 +212,16 @@ public class QC12024_202400ReportOFData implements IDynamicOFData {
                         }
                     }
                 }
+                if (equipPipeDO != null) {
+                    result.put("certificateNo",equipPipeDO.getCertificateNo());
+                    // 管道长度相加
+                    // 获取所有管道信息
+                    List<PipeTaskOrderItemDetailDO> pipeTaskOrderItemDetailDOS = pipeTaskOrderItemDetailMapper.selectList(new LambdaQueryWrapper<PipeTaskOrderItemDetailDO>().in(PipeTaskOrderItemDetailDO::getOrderItemId, itemDOList.stream().map(PipeTaskOrderItemDO::getId).toList()));
+                    List<EquipPipeDetailDO> equipPipeDetailDOList = equipPipeDetailMapper.selectList(new LambdaQueryWrapper<EquipPipeDetailDO>().in(EquipPipeDetailDO::getId, pipeTaskOrderItemDetailDOS.stream().map(PipeTaskOrderItemDetailDO::getEquipDetailId).toList()));
+                    double sum = equipPipeDetailDOList.stream().mapToDouble(equipPipeDetailDO -> equipPipeDetailDO.getPipeLength().doubleValue()).sum();
+                    result.put("pipeLengthTotal", String.valueOf(sum));
+                }
             }
-
             String orderId = itemReportDO.getOrderId();
             PipeTaskOrderDO taskOrderDO = pipeTaskOrderMapper.selectById(orderId);
             if (taskOrderDO != null){

+ 1 - 1
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QR0413_202400ReportOFData.java

@@ -35,7 +35,7 @@ import java.util.List;
 import java.util.stream.Collectors;
 
 /**
- * 压力管道一览表报告
+ * 受理单
  */
 @Service("QR0413_202400ReportOFData")
 public class QR0413_202400ReportOFData implements IDynamicOFData {

+ 85 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/README.md

@@ -0,0 +1,85 @@
+# 压力管道动态字段数据服务类文档
+
+## 📊 文件分类汇总
+
+### 一、报告类 (Report) - QC 系列
+
+#### QC12002-QC12107 系列
+
+| 序号 | 文件名 | 类名 | 描述 | 链接 |
+|:---:|--------|------|------|------|
+| 1 | [QC12002_202401ReportOFData.java](./QC12002_202401ReportOFData.java) | `QC12002_202401` | 压力管道施工质量监督检验结论报告 | [查看](./QC12002_202401ReportOFData.java) |
+| 2 | [QC12003_202400ReportOFData.java](./QC12003_202400ReportOFData.java) | `QC12003_202400` | 压力管道定期检验报告 | [查看](./QC12003_202400ReportOFData.java) |
+| 3 | [QC12005_202400ReportOFData.java](./QC12005_202400ReportOFData.java) | `QC12005_202400` | 压力管道全面检验报告 | [查看](./QC12005_202400ReportOFData.java) |
+| 4 | [QC12006_202401ReportOFData.java](./QC12006_202401ReportOFData.java) | `QC12006_202401` | 压力管道在线检验报告 | [查看](./QC12006_202401ReportOFData.java) |
+| 5 | [QC12016_202400ReportOFData.java](./QC12016_202400ReportOFData.java) | `QC12016_202400` | 压力管道合于使用评价报告 | [查看](./QC12016_202400ReportOFData.java) |
+| 6 | [QC12017_202400ReportOFData.java](./QC12017_202400ReportOFData.java) | `QC12017_202400` | 压力管道剩余寿命评估报告 | [查看](./QC12017_202400ReportOFData.java) |
+| 7 | [QC12018_202400ReportOFData.java](./QC12018_202400ReportOFData.java) | `QC12018_202400` | 压力管道风险评估报告 | [查看](./QC12018_202400ReportOFData.java) |
+| 8 | [QC12018_202401ReportOFData.java](./QC12018_202401ReportOFData.java) | `QC12018_202401` | 压力管道风险评估报告(版本 2) | [查看](./QC12018_202401ReportOFData.java) |
+| 9 | [QC12019_202400ReportOFData.java](./QC12019_202400ReportOFData.java) | `QC12019_202400` | 压力管道损坏部位确认报告 | [查看](./QC12019_202400ReportOFData.java) |
+| 10 | [QC12021_202400ReportOFData.java](./QC12021_202400ReportOFData.java) | `QC12021_202400` | 压力管道重大维修改造确认报告 | [查看](./QC12021_202400ReportOFData.java) |
+| 11 | [QC12024_202400ReportOFData.java](./QC12024_202400ReportOFData.java) | `QC12024_202400` | 压力管道报废注销确认报告 | [查看](./QC12024_202400ReportOFData.java) |
+| 12 | [QC12024_202403ReportOFData.java](./QC12024_202403ReportOFData.java) | `QC12024_202403` | 压力管道报废注销确认报告(版本 3) | [查看](./QC12024_202403ReportOFData.java) |
+| 13 | [QC12025_202400ReportOFData.java](./QC12025_202400ReportOFData.java) | `QC12025_202400` | 压力管道使用登记核查报告 | [查看](./QC12025_202400ReportOFData.java) |
+| 14 | [QC12026_202400ReportOFData.java](./QC12026_202400ReportOFData.java) | `QC12026_202400` | 压力管道安全管理状况检查报告 | [查看](./QC12026_202400ReportOFData.java) |
+| 15 | [QC12027_202400ReportOFData.java](./QC12027_202400ReportOFData.java) | `QC12027_202400` | 压力管道事故专项评估报告 | [查看](./QC12027_202400ReportOFData.java) |
+| 16 | [QC12028_202400ReportOFData.java](./QC12028_202400ReportOFData.java) | `QC12028_202400` | 压力管道符合性验证报告 | [查看](./QC12028_202400ReportOFData.java) |
+| 17 | [QC12029_202400ReportOFData.java](./QC12029_202400ReportOFData.java) | `QC12029_202400` | 压力管道技术档案核查报告 | [查看](./QC12029_202400ReportOFData.java) |
+| 18 | [QC12029_202401ReportOFData.java](./QC12029_202401ReportOFData.java) | `QC12029_202401` | 压力管道技术档案核查报告(版本 2) | [查看](./QC12029_202401ReportOFData.java) |
+| 19 | [QC12030_202400ReportOFData.java](./QC12030_202400ReportOFData.java) | `QC12030_202400` | 压力管道其他专项报告 | [查看](./QC12030_202400ReportOFData.java) |
+| 20 | [QC12031_202400ReportOFData.java](./QC12031_202400ReportOFData.java) | `QC12031_202400` | 压力管道年度检查报告 | [查看](./QC12031_202400ReportOFData.java) |
+| 21 | [QC12032_202400ReportOFData.java](./QC12032_202400ReportOFData.java) | `QC12032_202400` | 压力管道日常检查报告 | [查看](./QC12032_202400ReportOFData.java) |
+| 22 | [QC12033_202400ReportOFData.java](./QC12033_202400ReportOFData.java) | `QC12033_202400` | 压力管道维护保养报告 | [查看](./QC12033_202400ReportOFData.java) |
+| 23 | [QC12033_202401ReportOFData.java](./QC12033_202401ReportOFData.java) | `QC12033_202401` | 压力管道维护保养报告(版本 2) | [查看](./QC12033_202401ReportOFData.java) |
+| 24 | [QC12034_202400ReportOFData.java](./QC12034_202400ReportOFData.java) | `QC12034_202400` | 压力管道运行报告 | [查看](./QC12034_202400ReportOFData.java) |
+| 25 | [QC12035_202400ReportOFData.java](./QC12035_202400ReportOFData.java) | `QC12035_202400` | 压力管道修理报告 | [查看](./QC12035_202400ReportOFData.java) |
+| 26 | [QC12036_202400ReportOFData.java](./QC12036_202400ReportOFData.java) | `QC12036_202400` | 压力管道改造报告 | [查看](./QC12036_202400ReportOFData.java) |
+| 27 | [QC12037_202400ReportOFData.java](./QC12037_202400ReportOFData.java) | `QC12037_202400` | 压力管道重大维修报告 | [查看](./QC12037_202400ReportOFData.java) |
+| 28 | [QC12040_202400ReportOFData.java](./QC12040_202400ReportOFData.java) | `QC12040_202400` | 压力管道耐压试验报告 | [查看](./QC12040_202400ReportOFData.java) |
+| 29 | [QC12041_202400ReportOFData.java](./QC12041_202400ReportOFData.java) | `QC12041_202400` | 压力管道泄漏试验报告 | [查看](./QC12041_202400ReportOFData.java) |
+| 30 | [QC12099_202400ReportOFData.java](./QC12099_202400ReportOFData.java) | `QC12099_202400` | 压力管道其他报告 1 | [查看](./QC12099_202400ReportOFData.java) |
+| 31 | [QC12100_202400ReportOFData.java](./QC12100_202400ReportOFData.java) | `QC12100_202400` | 压力管道其他报告 2 | [查看](./QC12100_202400ReportOFData.java) |
+| 32 | [QC12101_202400ReportOFData.java](./QC12101_202400ReportOFData.java) | `QC12101_202400` | 压力管道其他报告 3 | [查看](./QC12101_202400ReportOFData.java) |
+| 33 | [QC12107_202400ReportOFData.java](./QC12107_202400ReportOFData.java) | `QC12107_202400` | 压力管道其他报告 4 | [查看](./QC12107_202400ReportOFData.java) |
+
+---
+
+### 二、记录类 (Record) - QC 系列
+
+#### QC12113-QC12193 系列
+
+| 序号 | 文件名 | 类名 | 描述 | 链接 |
+|:---:|--------|------|------|------|
+| 1 | [QC12113_202401RecordOFData.java](./QC12113_202401RecordOFData.java) | `QC12113_202401` | 压力管道定期检验记录 | [查看](./QC12113_202401RecordOFData.java) |
+| 2 | [QC12115_202400RecordOFData.java](./QC12115_202400RecordOFData.java) | `QC12115_202400` | 压力管道全面检验记录 | [查看](./QC12115_202400RecordOFData.java) |
+| 3 | [QC12116_202400RecordOFData.java](./QC12116_202400RecordOFData.java) | `QC12116_202400` | 压力管道在线检验记录 | [查看](./QC12116_202400RecordOFData.java) |
+| 4 | [QC12123_202400RecordOFData.java](./QC12123_202400RecordOFData.java) | `QC12123_202400` | 压力管道合于使用评价记录 | [查看](./QC12123_202400RecordOFData.java) |
+| 5 | [QC12124_202400RecordOFData.java](./QC12124_202400RecordOFData.java) | `QC12124_202400` | 压力管道剩余寿命评估记录 | [查看](./QC12124_202400RecordOFData.java) |
+| 6 | [QC12124_202401RecordOFData.java](./QC12124_202401RecordOFData.java) | `QC12124_202401` | 压力管道剩余寿命评估记录(版本 2) | [查看](./QC12124_202401RecordOFData.java) |
+| 7 | [QC12125_202400RecordOFData.java](./QC12125_202400RecordOFData.java) | `QC12125_202400` | 压力管道风险评估记录 | [查看](./QC12125_202400RecordOFData.java) |
+| 8 | [QC12126_202400RecordOFData.java](./QC12126_202400RecordOFData.java) | `QC12126_202400` | 压力管道损坏部位确认记录 | [查看](./QC12126_202400RecordOFData.java) |
+| 9 | [QC12127_202400RecordOFData.java](./QC12127_202400RecordOFData.java) | `QC12127_202400` | 压力管道重大维修改造确认记录 | [查看](./QC12127_202400RecordOFData.java) |
+| 10 | [QC12128_202400RecordOFData.java](./QC12128_202400RecordOFData.java) | `QC12128_202400` | 压力管道报废注销确认记录 | [查看](./QC12128_202400RecordOFData.java) |
+| 11 | [QC12128_202401RecordOFData.java](./QC12128_202401RecordOFData.java) | `QC12128_202401` | 压力管道报废注销确认记录(版本 2) | [查看](./QC12128_202401RecordOFData.java) |
+| 12 | [QC12129_202400RecordOFData.java](./QC12129_202400RecordOFData.java) | `QC12129_202400` | 压力管道使用登记核查记录 | [查看](./QC12129_202400RecordOFData.java) |
+| 13 | [QC12130_202400RecordOFData.java](./QC12130_202400RecordOFData.java) | `QC12130_202400` | 压力管道安全管理状况检查记录 | [查看](./QC12130_202400RecordOFData.java) |
+| 14 | [QC12131_202400RecordOFData.java](./QC12131_202400RecordOFData.java) | `QC12131_202400` | 压力管道事故专项评估记录 | [查看](./QC12131_202400RecordOFData.java) |
+| 15 | [QC12132_202400RecordOFData.java](./QC12132_202400RecordOFData.java) | `QC12132_202400` | 压力管道符合性验证记录 | [查看](./QC12132_202400RecordOFData.java) |
+| 16 | [QC12133_202400RecordOFData.java](./QC12133_202400RecordOFData.java) | `QC12133_202400` | 压力管道技术档案核查记录 | [查看](./QC12133_202400RecordOFData.java) |
+| 17 | [QC12133_202401RecordOFData.java](./QC12133_202401RecordOFData.java) | `QC12133_202401` | 压力管道技术档案核查记录(版本 2) | [查看](./QC12133_202401RecordOFData.java) |
+| 18 | [QC12134_202400RecordOFData.java](./QC12134_202400RecordOFData.java) | `QC12134_202400` | 压力管道其他专项记录 | [查看](./QC12134_202400RecordOFData.java) |
+| 19 | [QC12135_202400RecordOFData.java](./QC12135_202400RecordOFData.java) | `QC12135_202400` | 压力管道年度检查记录 | [查看](./QC12135_202400RecordOFData.java) |
+| 20 | [QC12136_202400RecordOFData.java](./QC12136_202400RecordOFData.java) | `QC12136_202400` | 压力管道日常检查记录 | [查看](./QC12136_202400RecordOFData.java) |
+| 21 | [QC12137_202400RecordOFData.java](./QC12137_202400RecordOFData.java) | `QC12137_202400` | 压力管道维护保养记录 | [查看](./QC12137_202400RecordOFData.java) |
+| 22 | [QC12139_202400RecordOFData.java](./QC12139_202400RecordOFData.java) | `QC12139_202400` | 压力管道运行记录 | [查看](./QC12139_202400RecordOFData.java) |
+| 23 | [QC12141_202400RecordOFData.java](./QC12141_202400RecordOFData.java) | `QC12141_202400` | 压力管道修理记录 | [查看](./QC12141_202400RecordOFData.java) |
+| 24 | [QC12142_202400RecordOFData.java](./QC12142_202400RecordOFData.java) | `QC12142_202400` | 压力管道改造记录 | [查看](./QC12142_202400RecordOFData.java) |
+| 25 | [QC12170_202400RecordOFData.java](./QC12170_202400RecordOFData.java) | `QC12170_202400` | 压力管道重大维修记录 | [查看](./QC12170_202400RecordOFData.java) |
+| 26 | [QC12171_202400RecordOFData.java](./QC12171_202400RecordOFData.java) | `QC12171_202400` | 压力管道耐压试验记录 | [查看](./QC12171_202400RecordOFData.java) |
+| 27 | [QC12176_202400RecordOFData.java](./QC12176_202400RecordOFData.java) | `QC12176_202400` | 压力管道泄漏试验记录 | [查看](./QC12176_202400RecordOFData.java) |
+| 28 | [QC12177_202400RecordOFData.java](./QC12177_202400RecordOFData.java) | `QC12177_202400` | 压力管道交接班记录 | [查看](./QC12177_202400RecordOFData.java) |
+| 29 | [QC12184_202400ReportOFData.java](./QC12184_202400ReportOFData.java) | `QC12184_202400` | 压力管道其他报告 5 | [查看](./QC12184_202400ReportOFData.java) |
+| 30 | [QC12185_202400ReportOFData.java](./QC12185_202400ReportOFData.java) | `QC12185_202400` | 压力管道其他报告 6 | [查看](./QC12185_202400ReportOFData.java) |
+| 31 | [QC12186_202400RecordOFData.java](./QC12186_202400RecordOFData.java) | `QC12186_202400` | 压力管道其他记录 1 | [查看](./QC12186_202400RecordOFData.java) |
+| 32 | [QC12192_202500RecordOFData.java](./QC12192_202500RecordOFData.java) | `QC12192_202500` | 压力管道其他记录 2(2025 版) | [查看](./QC12192_202500RecordOFData.java) |
+| 33 | [QC12193_202500ReportOFData.java](./QC12193_202500ReportOFData.java) | `QC12193_202500` | 压力管道其他报告 7(2025 版) | [查看](./QC12193_202500ReportOFData.java) |

+ 193 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/util/AutoDataBoilerService.java

@@ -0,0 +1,193 @@
+package cn.start.tz.module.pressure2.service.dynamicOFData.util;
+
+import cn.start.tz.module.pressure2.controller.admin.equipboiler.vo.EquipBoilerReportVO;
+import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorder.BoilerTaskOrderDO;
+import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorderitem.BoilerTaskOrderItemDO;
+import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorderitemreport.BoilerTaskOrderItemReportDO;
+import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorderitemreportuser.BoilerTaskOrderItemReportUserDO;
+import cn.start.tz.module.pressure2.dal.dataobject.equipboiler.EquipBoilerDO;
+import cn.start.tz.module.pressure2.dal.mysql.boilertaskorder.BoilerTaskOrderMapper;
+import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitem.BoilerTaskOrderItemMapper;
+import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitemreport.BoilerTaskOrderItemReportMapper;
+import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitemreportuser.BoilerTaskOrderItemReportUserMapper;
+import cn.start.tz.module.pressure2.dal.mysql.equipboiler.EquipBoilerMapper;
+import cn.start.tz.module.system.api.user.AdminUserApi;
+import cn.start.tz.module.system.api.user.dto.AdminUserRespDTO;
+import com.alibaba.fastjson2.JSONObject;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+
+@Service
+public class AutoDataBoilerService {
+    /**
+     * 锅炉检验记录数据自动生成服务类
+     */
+    @Resource
+    private BoilerTaskOrderItemReportMapper boilerTaskOrderItemReportMapper;
+
+    /**
+     * 锅炉任务订单项目 Mapper
+     */
+    @Resource
+    private BoilerTaskOrderItemMapper boilerTaskOrderItemMapper;
+
+    /**
+     * 锅炉任务订单 Mapper
+     */
+    @Resource
+    private BoilerTaskOrderMapper boilerTaskOrderMapper;
+
+    /**
+     * 锅炉设备 Mapper
+     */
+    @Resource
+    private EquipBoilerMapper equipBoilerMapper;
+
+    /**
+     * 管理员用户 API
+     */
+    @Resource
+    private AdminUserApi adminUserApi;
+
+    /**
+     * 锅炉任务订单项目报告用户 Mapper
+     */
+    @Resource
+    private BoilerTaskOrderItemReportUserMapper boilerTaskOrderItemReportUserMapper;
+
+    /**
+     * 日期格式化器:yyyy 年 MM 月 dd 日
+     */
+    private final DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
+
+    /**
+     * 自动生成锅炉记录数据
+     * <p>
+     * 根据锅炉任务订单项目报告 ID,自动填充锅炉设备信息、检验信息、人员信息等到 JSON 对象中
+     *
+     * @param jsonObject                    待填充的 JSON 对象
+     * @param boilerTaskOrderItemReportDOId 锅炉任务订单项目报告 ID
+     * @return 填充后的 JSON 对象
+     */
+    public JSONObject autoGenerateBoilerRecordData(JSONObject jsonObject, String boilerTaskOrderItemReportDOId) {
+        // 获取锅炉任务订单项目报告、订单、设备信息
+        BoilerTaskOrderItemReportDO itemReportDO = boilerTaskOrderItemReportMapper.selectById(boilerTaskOrderItemReportDOId);
+        BoilerTaskOrderDO taskOrderDO = boilerTaskOrderMapper.selectById(itemReportDO.getOrderId());
+        BoilerTaskOrderItemDO itemDO = boilerTaskOrderItemMapper.selectById(itemReportDO.getOrderItemId());
+        if (itemDO != null) {
+            // 获取锅炉设备详细信息并转换为 JSON
+            EquipBoilerReportVO boilerDO = equipBoilerMapper.selectDetailsById(itemDO.getEquipId());
+            JSONObject boilerInfo = JSONObject.from(boilerDO);
+            // 自动转换所有字段为字符串格式
+            JsonConvertUtil.convertAllFieldsToString(boilerInfo);
+            // 合并 json
+            jsonObject.putAll(boilerInfo);
+        }
+        // 设置报告编号
+        jsonObject.put("reportNo", itemReportDO.getReportNo());
+
+        // 获取参与检验的人员列表
+        List<BoilerTaskOrderItemReportUserDO> itemReportUserDOS = boilerTaskOrderItemReportUserMapper.selectList(BoilerTaskOrderItemReportUserDO::getReportId, boilerTaskOrderItemReportDOId);
+        if (taskOrderDO != null) {
+            jsonObject.put("checkDate", taskOrderDO.getCheckDate().format(dateFormat));
+        }
+        if (!itemReportUserDOS.isEmpty()) {
+            AdminUserRespDTO userInfo = adminUserApi.getUser(itemReportUserDOS.get(0).getUserId()).getData();
+            if (userInfo != null) {
+                jsonObject.put("checkName", userInfo.getSignUrl());
+            }
+        }
+
+        //校验人员信息
+        // 获取校核人信息并设置签名 URL
+        AdminUserRespDTO userInfo = adminUserApi.getUser(itemReportDO.getRecheckId()).getData();
+        if (userInfo != null) {
+            jsonObject.put("recheckName", userInfo.getSignUrl());
+        } else {
+            jsonObject.put("recheckName", itemReportDO.getRecheckName());
+        }
+        if (itemReportDO.getRecheckDate() != null) {
+            jsonObject.put("recheckDate", itemReportDO.getRecheckDate().format(dateFormat));
+        }
+        return jsonObject;
+    }
+
+    /**
+     * 自动生成锅炉报告数据
+     * <p>
+     * 根据锅炉任务订单项目报告 ID,自动填充锅炉设备信息、检验信息、人员信息等到 JSON 对象中(无返回值)
+     *
+     * @param jsonObject                    待填充的 JSON 对象
+     * @param boilerTaskOrderItemReportDOId 锅炉任务订单项目报告 ID
+     */
+    public JSONObject autoGenerateBoilerReportData(JSONObject jsonObject, String boilerTaskOrderItemReportDOId) {
+        // 获取锅炉任务订单项目报告、订单、设备信息
+        BoilerTaskOrderItemReportDO itemReportDO = boilerTaskOrderItemReportMapper.selectById(boilerTaskOrderItemReportDOId);
+        BoilerTaskOrderDO taskOrderDO = boilerTaskOrderMapper.selectById(itemReportDO.getOrderId());
+        BoilerTaskOrderItemDO itemDO = boilerTaskOrderItemMapper.selectById(itemReportDO.getOrderItemId());
+        if (itemDO != null) {
+            // 获取锅炉设备详细信息并转换为 JSON
+            EquipBoilerReportVO boilerDO = equipBoilerMapper.selectDetailsById(itemDO.getEquipId());
+            JSONObject boilerInfo = JSONObject.from(boilerDO);
+            // 自动转换所有字段为字符串格式(包括日期、数字、布尔等)
+            JsonConvertUtil.convertAllFieldsToString(boilerInfo);
+            // 合并 json
+            for (String key : boilerInfo.keySet()) {
+                // 没有这个key或者为null或者为空字符串时put
+                if (!jsonObject.containsKey(key) || jsonObject.get(key) == null || jsonObject.get(key).toString().isEmpty()) {
+                    jsonObject.put(key, boilerInfo.get(key));
+                }
+            }
+        }
+        // 设置报告编号
+        jsonObject.put("reportNo", itemReportDO.getReportNo());
+
+        //编制人员信息
+        AdminUserRespDTO userInfo = adminUserApi.getUser(itemReportDO.getPrepareId()).getData();
+        if (userInfo != null) {
+            if (userInfo.getSignUrl() != null) {
+                jsonObject.put("prepareName", userInfo.getSignUrl());
+            } else {
+                jsonObject.put("prepareName", itemReportDO.getPrepareName());
+            }
+        }
+        if (itemReportDO.getPrepareTime() != null) {
+            jsonObject.put("prepareTime", itemReportDO.getPrepareTime().format(dateFormat));
+        }
+
+        //审核人员信息
+        userInfo = adminUserApi.getUser(itemReportDO.getApprovalId()).getData();
+        if (userInfo != null) {
+            if (userInfo.getSignUrl() != null) {
+                jsonObject.put("approvalName", userInfo.getSignUrl());
+            } else {
+                jsonObject.put("approvalName", itemReportDO.getApprovalName());
+            }
+        }
+        if (itemReportDO.getApprovalTime() != null) {
+            jsonObject.put("approvalTime", itemReportDO.getApprovalTime().format(dateFormat));
+        }
+
+        //批准人员信息
+        userInfo = adminUserApi.getUser(itemReportDO.getRatifyId()).getData();
+        if (userInfo != null) {
+            if (userInfo.getSignUrl() != null) {
+                jsonObject.put("ratifyName", userInfo.getSignUrl());
+            } else {
+                jsonObject.put("ratifyName", itemReportDO.getRatifyName());
+            }
+        }
+        if (itemReportDO.getRatifyTime() != null) {
+            jsonObject.put("ratifyTime", itemReportDO.getRatifyTime().format(dateFormat));
+        }
+        return jsonObject;
+    }
+
+
+    public JSONObject autoGenerateBoilerResultData(JSONObject ofData, String refId) {
+        return ofData;
+    }
+}

+ 106 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/util/AutoDataPipeService.java

@@ -0,0 +1,106 @@
+package cn.start.tz.module.pressure2.service.dynamicOFData.util;
+
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorder.PipeTaskOrderDO;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitem.PipeTaskOrderItemDO;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemreport.PipeTaskOrderItemReportDO;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemreportuser.PipeTaskOrderItemReportUserDO;
+import cn.start.tz.module.pressure2.dal.dataobject.equippipe.EquipPipeDO;
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorder.PipeTaskOrderMapper;
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitem.PipeTaskOrderItemMapper;
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitemreport.PipeTaskOrderItemReportMapper;
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitemreportuser.PipeTaskOrderItemReportUserMapper;
+import cn.start.tz.module.pressure2.dal.mysql.equippipe.EquipPipeMapper;
+import cn.start.tz.module.system.api.user.AdminUserApi;
+import cn.start.tz.module.system.api.user.dto.AdminUserRespDTO;
+import com.alibaba.fastjson2.JSONObject;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+
+@Service
+public class AutoDataPipeService {
+    @Resource
+    private PipeTaskOrderItemReportMapper pipeTaskOrderItemReportMapper;
+
+    @Resource
+    private PipeTaskOrderItemMapper pipeTaskOrderItemMapper;
+
+    @Resource
+    private PipeTaskOrderMapper pipeTaskOrderMapper;
+
+    @Resource
+    private EquipPipeMapper equipPipeMapper;
+
+    @Resource
+    private AdminUserApi adminUserApi;
+
+    @Resource
+    private PipeTaskOrderItemReportUserMapper pipeTaskOrderItemReportUserMapper;
+
+    private final DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
+
+    public JSONObject autoGeneratePipeRecordData(JSONObject jsonObject, String pipeTaskOrderItemReportDOId) {
+        PipeTaskOrderItemReportDO itemReportDO = pipeTaskOrderItemReportMapper.selectById(pipeTaskOrderItemReportDOId);
+        PipeTaskOrderDO taskOrderDO = pipeTaskOrderMapper.selectById(itemReportDO.getOrderId());
+        jsonObject.put("reportNo", itemReportDO.getReportNo());
+
+        List<PipeTaskOrderItemReportUserDO> itemReportUserDOS = pipeTaskOrderItemReportUserMapper.selectList(PipeTaskOrderItemReportUserDO::getReportId, pipeTaskOrderItemReportDOId);
+        if (taskOrderDO != null) {
+            jsonObject.put("checkDate", taskOrderDO.getCheckDate().format(dateFormat));
+        }
+        if (!itemReportUserDOS.isEmpty()) {
+            AdminUserRespDTO userInfo = adminUserApi.getUser(itemReportUserDOS.get(0).getUserId()).getData();
+            if (userInfo != null) {
+                jsonObject.put("checkName", userInfo.getSignUrl());
+            }
+        }
+
+        //校验人员信息
+        AdminUserRespDTO userInfo = adminUserApi.getUser(itemReportDO.getRecheckId()).getData();
+        if (userInfo != null) {
+            jsonObject.put("recheckName", userInfo.getSignUrl());
+        } else {
+            jsonObject.put("recheckName", itemReportDO.getRecheckName());
+        }
+        if (itemReportDO.getRecheckDate() != null) {
+            jsonObject.put("recheckDate", itemReportDO.getRecheckDate().format(dateFormat));
+        }
+        return jsonObject;
+    }
+
+
+    public JSONObject autoGeneratePipeReportData(JSONObject jsonObject, String pipeTaskOrderItemReportDOId) {
+        PipeTaskOrderItemReportDO itemReportDO = pipeTaskOrderItemReportMapper.selectById(pipeTaskOrderItemReportDOId);
+        PipeTaskOrderDO taskOrderDO = pipeTaskOrderMapper.selectById(itemReportDO.getOrderId());
+        jsonObject.put("reportNo", itemReportDO.getReportNo());
+
+        List<PipeTaskOrderItemReportUserDO> itemReportUserDOS = pipeTaskOrderItemReportUserMapper.selectList(PipeTaskOrderItemReportUserDO::getReportId, pipeTaskOrderItemReportDOId);
+        if (taskOrderDO != null) {
+            jsonObject.put("checkDate", taskOrderDO.getCheckDate().format(dateFormat));
+        }
+        if (!itemReportUserDOS.isEmpty()) {
+            AdminUserRespDTO userInfo = adminUserApi.getUser(itemReportUserDOS.get(0).getUserId()).getData();
+            if (userInfo != null) {
+                jsonObject.put("checkName", userInfo.getSignUrl());
+            }
+        }
+
+        //校验人员信息
+        AdminUserRespDTO userInfo = adminUserApi.getUser(itemReportDO.getRecheckId()).getData();
+        if (userInfo != null) {
+            jsonObject.put("recheckName", userInfo.getSignUrl());
+        } else {
+            jsonObject.put("recheckName", itemReportDO.getRecheckName());
+        }
+        if (itemReportDO.getRecheckDate() != null) {
+            jsonObject.put("recheckDate", itemReportDO.getRecheckDate().format(dateFormat));
+        }
+        return jsonObject;
+    }
+
+    public JSONObject autoGeneratePipeResultData(JSONObject ofData, String refId) {
+        return null;
+    }
+}

+ 59 - 8
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/util/GenerateReportJsonService.java

@@ -1,15 +1,66 @@
 package cn.start.tz.module.pressure2.service.dynamicOFData.util;
 
-import cn.start.tz.framework.common.pojo.PageResult;
-import cn.start.tz.module.pressure2.controller.admin.equipboilercheckhistory.vo.EquipBoilerCheckHistoryPageReqVO;
-import cn.start.tz.module.pressure2.controller.admin.equipboilercheckhistory.vo.EquipBoilerCheckHistorySaveReqVO;
-import cn.start.tz.module.pressure2.dal.dataobject.equipboilercheckhistory.EquipBoilerCheckHistoryDO;
+import cn.start.tz.module.pressure2.dal.dataobject.dynamictbcol.DynamicTbColDO;
+import cn.start.tz.module.pressure2.dal.dataobject.dynamictbins.DynamicTbInsDO;
+import cn.start.tz.module.pressure2.dal.dataobject.dynamictbval.DynamicTbValDO;
+import cn.start.tz.module.pressure2.service.dynamictbcol.DynamicTbColService;
+import cn.start.tz.module.pressure2.service.dynamictbins.DynamicTbInsService;
+import cn.start.tz.module.pressure2.service.dynamictbval.DynamicTbValService;
 import com.alibaba.fastjson2.JSONObject;
-import com.baomidou.mybatisplus.extension.service.IService;
-import jakarta.validation.Valid;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
 
-public interface GenerateReportJsonService {
+import java.util.List;
 
-    JSONObject generateReportFromRecord(Integer reportType,String templateId,String refId);
+import static cn.start.tz.framework.common.exception.util.ServiceExceptionUtil.exception;
 
+/**
+ * 锅炉设备检验历史 Service 实现类
+ *
+ * @author 特种管理员
+ */
+@Service
+@Validated
+public class GenerateReportJsonService {
+
+    @Resource
+    private DynamicTbColService dynamicTbColService;
+
+    @Resource
+    private DynamicTbValService dynamicTbValService;
+
+    @Resource
+    private DynamicTbInsService dynamicTbInsService;
+
+
+    public JSONObject generateReportFromRecord(Integer reportType, String templateId, String refId) {
+
+        JSONObject result = new JSONObject();
+
+        //是否第一次生成
+        String[] prefixes = {"", "record_", "report_", "result_"};
+        String ownRefId = prefixes[reportType] + refId;
+        DynamicTbInsDO firstInsDO = dynamicTbInsService.getDynamicRefId(ownRefId);
+        if (firstInsDO == null) {
+            //根据记录字段动态生成报告字段
+            List<DynamicTbValDO> valList = dynamicTbValService.getDynamicTbValByRefId(refId);
+            if (valList != null && !valList.isEmpty()){
+                List<DynamicTbColDO> ColsList = dynamicTbColService.lambdaQuery()
+                        .eq(DynamicTbColDO::getTbId, templateId)
+                        .or().eq(DynamicTbColDO::getColRound, 3).list();
+                ColsList.forEach(v -> {
+                    String colCode = v.getColCode();
+                    valList.forEach(val -> {
+                        if (val.getColCode() != null && val.getColCode().equals(colCode)){
+                            result.put(colCode, val.getValValue());
+                        }
+                    });
+                });
+            }
+        }
+
+        return result;
+
+    }
 }

+ 0 - 75
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/util/GenerateReportJsonServiceImpl.java

@@ -1,75 +0,0 @@
-package cn.start.tz.module.pressure2.service.dynamicOFData.util;
-
-import cn.start.tz.framework.common.pojo.PageResult;
-import cn.start.tz.framework.common.util.object.BeanUtils;
-import cn.start.tz.module.pressure2.controller.admin.equipboilercheckhistory.vo.EquipBoilerCheckHistoryPageReqVO;
-import cn.start.tz.module.pressure2.controller.admin.equipboilercheckhistory.vo.EquipBoilerCheckHistorySaveReqVO;
-import cn.start.tz.module.pressure2.dal.dataobject.dynamictbcol.DynamicTbColDO;
-import cn.start.tz.module.pressure2.dal.dataobject.dynamictbins.DynamicTbInsDO;
-import cn.start.tz.module.pressure2.dal.dataobject.dynamictbval.DynamicTbValDO;
-import cn.start.tz.module.pressure2.dal.dataobject.equipboilercheckhistory.EquipBoilerCheckHistoryDO;
-import cn.start.tz.module.pressure2.dal.mysql.equipboilercheckhistory.EquipBoilerCheckHistoryMapper;
-import cn.start.tz.module.pressure2.service.dynamictbcol.DynamicTbColService;
-import cn.start.tz.module.pressure2.service.dynamictbins.DynamicTbInsService;
-import cn.start.tz.module.pressure2.service.dynamictbval.DynamicTbValService;
-import cn.start.tz.module.pressure2.service.equipboilercheckhistory.EquipBoilerCheckHistoryService;
-import com.alibaba.fastjson2.JSONObject;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import jakarta.annotation.Resource;
-import org.springframework.stereotype.Service;
-import org.springframework.validation.annotation.Validated;
-
-import java.util.List;
-
-import static cn.start.tz.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.start.tz.module.pressure2.enums.ErrorCodeConstants.EQUIP_BOILER_CHECK_HISTORY_NOT_EXISTS;
-
-/**
- * 锅炉设备检验历史 Service 实现类
- *
- * @author 特种管理员
- */
-@Service
-@Validated
-public class GenerateReportJsonServiceImpl implements GenerateReportJsonService {
-
-    @Resource
-    private DynamicTbColService dynamicTbColService;
-
-    @Resource
-    private DynamicTbValService dynamicTbValService;
-
-    @Resource
-    private DynamicTbInsService dynamicTbInsService;
-
-    @Override
-    public JSONObject generateReportFromRecord(Integer reportType, String templateId, String refId) {
-
-        JSONObject result = new JSONObject();
-
-        //是否第一次生成
-        String[] prefixes = {"", "record_", "report_", "result_"};
-        String ownRefId = prefixes[reportType] + refId;
-        DynamicTbInsDO firstInsDO = dynamicTbInsService.getDynamicRefId(ownRefId);
-        if (firstInsDO == null) {
-            //根据记录字段动态生成报告字段
-            List<DynamicTbValDO> valList = dynamicTbValService.getDynamicTbValByRefId(refId);
-            if (valList != null && !valList.isEmpty()){
-                List<DynamicTbColDO> ColsList = dynamicTbColService.lambdaQuery()
-                        .eq(DynamicTbColDO::getTbId, templateId)
-                        .or().eq(DynamicTbColDO::getColRound, 3).list();
-                ColsList.forEach(v -> {
-                    String colCode = v.getColCode();
-                    valList.forEach(val -> {
-                        if (val.getColCode() != null && val.getColCode().equals(colCode)){
-                            result.put(colCode, val.getValValue());
-                        }
-                    });
-                });
-            }
-        }
-
-        return result;
-
-    }
-}

+ 135 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/util/JsonConvertUtil.java

@@ -0,0 +1,135 @@
+package cn.start.tz.module.pressure2.service.dynamicOFData.util;
+
+import com.alibaba.fastjson2.JSONObject;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Map;
+
+/**
+ * JSON 数据转换工具类
+ * 用于将 JSONObject 中的各种类型字段自动转换为格式化字符串
+ *
+ * @author tz
+ */
+public class JsonConvertUtil {
+
+    /**
+     * 默认日期格式:yyyy 年 MM 月 dd 日
+     */
+    private static final DateTimeFormatter DEFAULT_DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
+
+    /**
+     * 默认日期时间格式:yyyy 年 MM 月 dd 日 HH:mm:ss
+     */
+    private static final DateTimeFormatter DEFAULT_DATETIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy年MM月dd日HH:mm:ss");
+
+    /**
+     * 将 JSONObject 中的所有字段转换为字符串格式
+     * 自动识别并转换以下类型:
+     * - LocalDate: 使用日期格式
+     * - LocalDateTime: 使用日期时间格式
+     * - Integer/Long/Double/Float/BigDecimal/Short/Byte: 转为字符串
+     * - Boolean: 转为 "true"/"false"
+     *
+     * @param jsonObject JSONObject 对象
+     * @return 转换后的 JSONObject
+     */
+    public static JSONObject convertAllFieldsToString(JSONObject jsonObject) {
+        if (jsonObject == null || jsonObject.isEmpty()) {
+            return jsonObject;
+        }
+
+        // 遍历 JSONObject 的所有字段
+        for (Map.Entry<String, Object> entry : jsonObject.entrySet()) {
+            Object value = entry.getValue();
+            String formattedValue = convertValueToString(value, DEFAULT_DATE_FORMATTER, DEFAULT_DATETIME_FORMATTER);
+
+            // 如果转换成功(非 null),则更新字段值
+            if (formattedValue != null) {
+                jsonObject.put(entry.getKey(), formattedValue);
+            }
+        }
+
+        return jsonObject;
+    }
+
+    /**
+     * 将单个值转换为字符串
+     *
+     * @param value             原始值
+     * @param dateFormatter     日期格式转换器
+     * @param dateTimeFormatter 日期时间格式转换器
+     * @return 转换后的字符串
+     */
+    private static String convertValueToString(Object value, DateTimeFormatter dateFormatter, DateTimeFormatter dateTimeFormatter) {
+        if (value == null) {
+            return null;
+        }
+
+        // LocalDate 类型
+        if (value instanceof LocalDate) {
+            return ((LocalDate) value).format(dateFormatter);
+        }
+        // LocalDateTime 类型
+        else if (value instanceof LocalDateTime) {
+            return ((LocalDateTime) value).format(dateTimeFormatter);
+        }
+        // 数字类型
+        else if (value instanceof Integer || value instanceof Long ||
+                value instanceof Double || value instanceof Float ||
+                value instanceof BigDecimal || value instanceof Short ||
+                value instanceof Byte) {
+            return value.toString();
+        }
+        // 布尔类型
+        else if (value instanceof Boolean) {
+            return value.toString();
+        }
+        // 已经是字符串类型
+        else if (value instanceof String) {
+            return (String) value;
+        }
+        // 其他类型,尝试转为字符串
+        else {
+            return value.toString();
+        }
+    }
+
+    /**
+     * 将 JSONObject 中的指定字段转换为格式化字符串
+     * 支持日期、数字、布尔等所有类型
+     *
+     * @param jsonObject JSONObject 对象
+     * @param fieldName  字段名
+     * @param formatter  日期格式转换器(仅对日期类型有效)
+     */
+    public static void convertFieldToString(JSONObject jsonObject, String fieldName, DateTimeFormatter formatter) {
+        if (jsonObject == null || fieldName == null) {
+            return;
+        }
+
+        Object value = jsonObject.get(fieldName);
+        if (value == null) {
+            return;
+        }
+
+        String formattedValue;
+        // LocalDate 类型
+        if (value instanceof LocalDate && formatter != null) {
+            formattedValue = ((LocalDate) value).format(formatter);
+        }
+        // LocalDateTime 类型
+        else if (value instanceof LocalDateTime && formatter != null) {
+            formattedValue = ((LocalDateTime) value).format(formatter);
+        }
+        // 其他类型直接转字符串
+        else {
+            formattedValue = value.toString();
+        }
+
+        jsonObject.put(fieldName, formattedValue);
+    }
+}

+ 60 - 2
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamictbins/DynamicTbInsServiceImpl.java

@@ -12,6 +12,8 @@ import cn.start.tz.module.pressure2.dal.dataobject.dynamictbins.DynamicTbInsDO;
 import cn.start.tz.module.pressure2.dal.dataobject.dynamictbval.DynamicTbValDO;
 import cn.start.tz.module.pressure2.dal.mysql.dynamictbins.DynamicTbInsMapper;
 import cn.start.tz.module.pressure2.service.dynamicOFData.IDynamicOFData;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.AutoDataBoilerService;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.AutoDataPipeService;
 import cn.start.tz.module.pressure2.service.dynamictb.DynamicTbService;
 import cn.start.tz.module.pressure2.service.dynamictbval.DynamicTbValService;
 import cn.start.tz.module.pressure2.util.OFDataUtils;
@@ -55,6 +57,12 @@ public class DynamicTbInsServiceImpl extends ServiceImpl<DynamicTbInsMapper, Dyn
     @Lazy
     private DynamicTbValService dynamicTbValService;
 
+    @Resource
+    private AutoDataBoilerService autoDataBoilerService;
+
+    @Resource
+    private AutoDataPipeService autoDataPipeService;
+
     @Override
     public String createDynamicTbIns(DynamicTbInsSaveReqVO createReqVO) {
         // 插入
@@ -123,8 +131,13 @@ public class DynamicTbInsServiceImpl extends ServiceImpl<DynamicTbInsMapper, Dyn
     @Override
     public DynamicTbInsDO createInstantiateWithRule(CreateInstantiateWithRuleVO ruleVO) {
         IDynamicOFData findOFService = ofDataUtils.getFindOFService(ruleVO.getServiceName());
-
-        JSONObject ofData = findOFService.getOfDataByVO(ruleVO);
+        JSONObject ofData;
+        // 加上默认实现
+        if (findOFService == null) {
+            ofData = getJsonObject(ruleVO);
+        } else {
+            ofData = findOFService.getOfDataByVO(ruleVO);
+        }
 
         Integer isReport = ruleVO.getReportType();
         //报表
@@ -148,6 +161,51 @@ public class DynamicTbInsServiceImpl extends ServiceImpl<DynamicTbInsMapper, Dyn
         return dynamicTbInsDO;
     }
 
+    /**
+     * 根据规则 VO 获取默认填充数据
+     * <p>
+     * 根据设备类型(锅炉/管道)和报告类型,调用对应的服务生成数据
+     *
+     * @param ruleVO 规则 VO 对象
+     * @return 生成的 JSON 数据对象
+     * @throws IllegalArgumentException 当设备类型或报告类型不合法时抛出
+     */
+    private JSONObject getJsonObject(CreateInstantiateWithRuleVO ruleVO) {
+        // 参数校验
+        if (ruleVO == null || ruleVO.getParams() == null) {
+            throw exception(DYNAMIC_TB_INS_NOT_EXISTS);
+        }
+
+        String equipMainType = ruleVO.getParams().getString("equipMainType");
+        Integer reportType = ruleVO.getReportType();
+        String refId = ruleVO.getRefId();
+
+        // 校验必填参数
+        if (equipMainType == null || refId == null || reportType == null) {
+            throw exception(DYNAMIC_TB_INS_NOT_EXISTS);
+        }
+
+        // 创建用于接收数据的 JSON 对象
+        JSONObject ofData = new JSONObject();
+
+        // 根据设备类型调用对应的服务
+        return switch (equipMainType) {
+            case "boiler" -> switch (reportType) {
+                case 1 -> autoDataBoilerService.autoGenerateBoilerRecordData(ofData, refId);
+                case 2 -> autoDataBoilerService.autoGenerateBoilerReportData(ofData, refId);
+                case 3 -> autoDataBoilerService.autoGenerateBoilerResultData(ofData, refId);
+                default -> throw exception(DYNAMIC_TB_INS_NOT_EXISTS);
+            };
+            case "pipe" -> switch (reportType) {
+                case 1 -> autoDataPipeService.autoGeneratePipeRecordData(ofData, refId);
+                case 2 -> autoDataPipeService.autoGeneratePipeReportData(ofData, refId);
+                case 3 -> autoDataPipeService.autoGeneratePipeResultData(ofData, refId);
+                default -> throw exception(DYNAMIC_TB_INS_NOT_EXISTS);
+            };
+            default -> throw exception(DYNAMIC_TB_INS_NOT_EXISTS);
+        };
+    }
+
     @Override
     @Transactional
     public boolean copyInstantiate(String oldRefId, String newRefId) {

+ 1 - 1
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/equipboilerscheduling/EquipBoilerSchedulingService.java

@@ -21,7 +21,7 @@ public interface EquipBoilerSchedulingService extends IService<EquipBoilerSchedu
      * @param pageReqVO 分页查询
      * @return 锅炉计划排期分页
      */
-    PageResult<EquipBoilerSchedulingDO> getEquipBoilerSchedulingPage(EquipBoilerSchedulingPageReqVO pageReqVO);
+    PageResult<EquipBoilerSchedulingRespVO> getEquipBoilerSchedulingPage(EquipBoilerSchedulingPageReqVO pageReqVO);
 
     PageResult<EquipBoilerSchedulingBoilersRespVO> getEquipBoilerSchedulingBoilersPage(EquipBoilerSchedulingPageReqVO pageReqVO);
 

+ 3 - 3
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/equipboilerscheduling/EquipBoilerSchedulingServiceImpl.java

@@ -123,10 +123,10 @@ public class EquipBoilerSchedulingServiceImpl extends ServiceImpl<EquipBoilerSch
     private DeptApi deptApi;
 
     @Override
-    public PageResult<EquipBoilerSchedulingDO> getEquipBoilerSchedulingPage(EquipBoilerSchedulingPageReqVO pageReqVO) {
+    public PageResult<EquipBoilerSchedulingRespVO> getEquipBoilerSchedulingPage(EquipBoilerSchedulingPageReqVO pageReqVO) {
 
-        PageResult<EquipBoilerSchedulingDO> pageResult = new PageResult<>();
-        List<EquipBoilerSchedulingDO> list = equipBoilerSchedulingMapper.selectPlanPage(pageReqVO);
+        PageResult<EquipBoilerSchedulingRespVO> pageResult = new PageResult<>();
+        List<EquipBoilerSchedulingRespVO> list = equipBoilerSchedulingMapper.selectPlanPage(pageReqVO);
         Long count = equipBoilerSchedulingMapper.selectPlanPageCount(pageReqVO);
 
         if(!list.isEmpty()){

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

@@ -186,6 +186,8 @@ public interface PipeTaskOrderService extends IService<PipeTaskOrderDO>  {
 
     Boolean syncReportData(BoilerTaskOrderSyncReportVO reqVO);
 
+    Boolean syncAllReportData(BoilerTaskOrderSyncReportVO reqVO);
+
     List<PipeEquipInfoVO> getEquipsByOrderId(String orderId);
 
     PageResult<PipeOrderItemPageRespVO> inspectionOpinionPage(@Valid BoilerTaskOrderPageReqVO pageReqVO);

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

@@ -130,6 +130,7 @@ import cn.start.tz.module.pressure2.service.pipetaskorderinput.PipeTaskOrderInpu
 import cn.start.tz.module.pressure2.service.pipetaskorderitemreportversion.PipeTaskOrderItemReportVersionService;
 import cn.start.tz.module.pressure2.service.pipetaskorderoperation.PipeTaskOrderOperationService;
 import cn.start.tz.module.pressure2.service.pipetaskordersecuritycheck.PipeTaskOrderSecurityCheckService;
+import cn.start.tz.module.pressure2.util.DeptDataPermissionUtil;
 import cn.start.tz.module.pressure2.util.JsonDiffTool;
 import cn.start.tz.module.system.api.clientunit.ClientUnitApi;
 import cn.start.tz.module.system.api.orgcontact.OrgContactApi;
@@ -506,6 +507,13 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
 
     @Override
     public PageResult<PipeTaskOrderRespVO> getPipeTaskOrderPage(BoilerTaskOrderPageReqVO pageReqVO) {
+
+//        String userId = getLoginUserId();
+//        pageReqVO.setUserId(userId);
+
+        //获取权限参数
+        pageReqVO = DeptDataPermissionUtil.generateDeptDataPermissionReq(pageReqVO);
+
         PageResult<PipeTaskOrderRespVO> pageResult = new PageResult<>();
 
         List<PipeTaskOrderRespVO> TaskOrderRespVOS = pipeTaskOrderMapper.selectPage(pageReqVO);
@@ -618,6 +626,16 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
             List<String> reportIds = new ArrayList<>();
             for (PipeTaskOrderItemReportDO report : reportDOs) {
                 reportIds.add(report.getId());
+
+                //刷新报表数据
+                BoilerTaskOrderSyncReportVO syncReportVO = new BoilerTaskOrderSyncReportVO();
+                syncReportVO.setRefId(report.getId());
+                syncReportVO.setReportType("record");
+                com.alibaba.fastjson2.JSONObject params = new com.alibaba.fastjson2.JSONObject();
+                params.put("checkUserId",managerId);
+                syncReportVO.setParams(params);
+                syncReportData(syncReportVO);
+
             }
             List<PipeTaskOrderItemReportUserDO> reportUserDOs = pipeTaskOrderItemReportUserMapper.selectList(new LambdaQueryWrapperX<PipeTaskOrderItemReportUserDO>()
                     .in(PipeTaskOrderItemReportUserDO::getReportId, reportIds));
@@ -789,8 +807,9 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
                                 addReport1.setTemplateId(dynamicTbDO.getId());
                                 addReport1.setFee(item.getFee());
                                 addReport1.setOrderId(taskOrderDO.getId());
-                                addReport1.setTaskStatus(400);
+                                addReport1.setTaskStatus(500);
                                 addReport1.setReportNo(reportNo);
+                                addReport1.setReportUrl(itemDO.getId());
                                 //addReport1.setSort(index.getAndSet(index.get() + 1));
                                 addReport1.setReportType(dynamicTbDO.getTbType());
 
@@ -814,7 +833,7 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
                             addReport1.setTemplateId(dynamicTbDO.getId());
                             addReport1.setFee(item.getFee());
                             addReport1.setOrderId(taskOrderDO.getId());
-                            addReport1.setTaskStatus(400);
+                            addReport1.setTaskStatus(500);
                             addReport1.setReportNo(reportNo);
                             //addReport1.setSort(index.getAndSet(index.get() + 1));
                             addReport1.setReportType(dynamicTbDO.getTbType());
@@ -878,6 +897,12 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
     @Override
     public PageResult<PipeOrderItemPageRespVO> getOrderItemPage(BoilerTaskOrderPageReqVO pageReqVO) {
 
+//        String userId = getLoginUserId();
+//        pageReqVO.setUserId(userId);
+
+        //获取权限参数
+        pageReqVO = DeptDataPermissionUtil.generateDeptDataPermissionReq(pageReqVO);
+
         PageResult<PipeOrderItemPageRespVO> pageResult = new PageResult<>();
 
         List<PipeOrderItemPageRespVO> pipeOrderItemPageRespVOS = pipeTaskOrderMapper.selectItemPage(pageReqVO);
@@ -1227,7 +1252,7 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
                 addReport.setTemplateId(vo.getTemplateId());
                 addReport.setFee(vo.getFee());
                 addReport.setOrderId(orderId);
-                addReport.setTaskStatus(TaskOrderStatusEnum.CONFIRM.getStatus());
+                addReport.setTaskStatus(TaskOrderStatusEnum.ENTER.getStatus());
                 addReport.setSort(count + 1 + i);
                 
                 // 计算当前是第几个(从 1 开始)
@@ -1318,7 +1343,7 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
                     taskOrderItemReportUserDO.setUserId(orderItemEnterVO.getCheckId());
                     taskOrderItemReportUserDO.setGroupTeamId(orderItemEnterVO.getGroupTeamId());
 
-                    if (StringUtils.isBlank(taskOrderDO.getManagerId())) {
+                    if (StringUtils.isBlank(orderItemEnterVO.getCheckId())) {
                         taskOrderItemReportUserDO.setUserId(taskOrderDO.getManagerId());
                     }
                     pipeTaskOrderItemReportUserMapper.insert(taskOrderItemReportUserDO);
@@ -1329,7 +1354,7 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
                 syncReportVO.setRefId(addReport.getId());
                 syncReportVO.setReportType("record");
                 com.alibaba.fastjson2.JSONObject params = new com.alibaba.fastjson2.JSONObject();
-                if (taskOrderDO != null && StringUtils.isBlank(taskOrderDO.getManagerId())) {
+                if (taskOrderDO != null && StringUtils.isBlank(orderItemEnterVO.getCheckId())) {
                     params.put("checkUserId",taskOrderDO.getManagerId());
                 }else{
                     params.put("checkUserId",orderItemEnterVO.getCheckId());
@@ -2017,6 +2042,7 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
     }
 
     @Override
+    @Transactional
     public void updateTaskOrderItemReportUser(PipeTaskOrderReportUserVO updateReqVO) {
 
         pipeTaskOrderItemReportUserMapper.delete(PipeTaskOrderItemReportUserDO::getReportId, updateReqVO.getId());
@@ -2032,6 +2058,16 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
         // 设备关联 检验
         pipeTaskOrderItemReportUserMapper.insertBatch(acceptOrderList);
 
+        //刷新报表数据
+        if (!acceptOrderList.isEmpty()){
+            BoilerTaskOrderSyncReportVO syncReportVO = new BoilerTaskOrderSyncReportVO();
+            syncReportVO.setRefId(updateReqVO.getId());
+            syncReportVO.setReportType("record");
+            com.alibaba.fastjson2.JSONObject params = new com.alibaba.fastjson2.JSONObject();
+            params.put("checkUserId",acceptOrderList.get(0).getUserId());
+            syncReportVO.setParams(params);
+            syncReportData(syncReportVO);
+        }
     }
 
     @Override
@@ -2081,7 +2117,12 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
     @Override
     public PageResult<PipeOrderItemPageRespVO> recheckOrderItemPage(BoilerTaskOrderPageReqVO pageReqVO) {
 
-        String userId = getLoginUserId();
+//        String userId = getLoginUserId();
+//        pageReqVO.setUserId(userId);
+
+        //获取权限参数
+        pageReqVO = DeptDataPermissionUtil.generateDeptDataPermissionReq(pageReqVO);
+
         if (StringUtils.isNotEmpty(pageReqVO.getApproveStrIds())) {
             pageReqVO.setApproveIds(List.of(pageReqVO.getApproveStrIds().split(",")));
         }
@@ -2106,7 +2147,6 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
             pageReqVO.setCheckUserIds(List.of(pageReqVO.getCheckUserStrIds().split(",")));
         }
 
-//        pageReqVO.setUserId(userId);
         pageReqVO.setTaskStatus(TaskOrderStatusEnum.RECHECK.getStatus());
         if (CollUtil.isNotEmpty(pageReqVO.getRecheckStatusList())) {
             pageReqVO.setRecheckStatusList(pageReqVO.getRecheckStatusList());
@@ -4572,6 +4612,74 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
         return false;
     }
 
+    @Override
+    public Boolean syncAllReportData(BoilerTaskOrderSyncReportVO reqVO) {
+        
+        PipeTaskOrderItemReportDO itemReportDO = taskOrderItemReportMapper.selectById(reqVO.getRefId());
+        if (itemReportDO != null) {
+            // 收集需要处理的模板 ID 及其类型列表
+            List<TemplateInfo> templateInfos = new ArrayList<>();
+            if (StringUtils.isNotBlank(itemReportDO.getTemplateId())) {
+                templateInfos.add(new TemplateInfo(itemReportDO.getTemplateId(), 1));
+            }
+            if (StringUtils.isNotBlank(itemReportDO.getReportTemplateId())) {
+                templateInfos.add(new TemplateInfo(itemReportDO.getReportTemplateId(), 2));
+            }
+            if (StringUtils.isNotBlank(itemReportDO.getResultTemplateId())) {
+                templateInfos.add(new TemplateInfo(itemReportDO.getResultTemplateId(), 3));
+            }
+                    
+            // 对每个模板 ID 进行循环同步处理
+            for (TemplateInfo templateInfo : templateInfos) {
+                DynamicTbDO dynamicTbDO = dynamicTbMapper.selectById(templateInfo.getTemplateId());
+                if (dynamicTbDO == null) {
+                    continue;
+                }
+        
+                CreateInstantiateWithRuleVO ruleVO = new CreateInstantiateWithRuleVO();
+                ruleVO.setTemplateId(templateInfo.getTemplateId());
+                ruleVO.setRefId(reqVO.getRefId());
+                ruleVO.setRefName(itemReportDO.getReportName());
+                ruleVO.setReportType(templateInfo.getReportType());
+                if (reqVO.getParams() == null){
+                    reqVO.setParams(new com.alibaba.fastjson2.JSONObject());
+                }
+                reqVO.getParams().put("equipMainType","pipe");
+                ruleVO.setParams(reqVO.getParams());
+                        
+                //获取 tbCode 的服务方法名
+                BoilerConnectTbServiceDO tbServiceDO = boilerConnectTbServiceMapper.selectOne(BoilerConnectTbServiceDO::getTbId, dynamicTbDO.getId());
+                if (tbServiceDO != null){
+                    ruleVO.setServiceName(tbServiceDO.getInitServiceName());
+                    dynamicTbInsService.createInstantiateWithRule(ruleVO);
+                }
+            }
+            return true;
+        }
+        return false;
+    }
+        
+    /**
+     * 模板信息内部类
+     */
+    private static class TemplateInfo {
+        private final String templateId;
+        private final int reportType;
+            
+        public TemplateInfo(String templateId, int reportType) {
+            this.templateId = templateId;
+            this.reportType = reportType;
+        }
+            
+        public String getTemplateId() {
+            return templateId;
+        }
+            
+        public int getReportType() {
+            return reportType;
+        }
+    }
+
     @Override
     public List<PipeEquipInfoVO> getEquipsByOrderId(String orderId) {
 

+ 18 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorderinput/PipeTaskOrderInputService.java

@@ -1,6 +1,9 @@
 package cn.start.tz.module.pressure2.service.pipetaskorderinput;
 
+import java.io.IOException;
 import java.util.*;
+
+import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.*;
 import cn.start.tz.module.pressure2.controller.admin.pipetaskorderinput.vo.*;
 import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderinput.PipeTaskOrderInputDO;
@@ -53,4 +56,19 @@ public interface PipeTaskOrderInputService extends IService<PipeTaskOrderInputDO
      */
     PageResult<PipeTaskOrderInputDO> getPipeTaskOrderInputPage(PipeTaskOrderInputPageReqVO pageReqVO);
 
+    /**
+     * 打印管道检测项目,合并成同一个文件
+     *
+     * @param printReqVOS 打印信息
+     * @param response 响应
+     */
+    void printPipeTaskOrderInput(List<PipeTaskOrderInputPrintReqVO> printReqVOS, HttpServletResponse response) throws Exception;
+
+    /**
+     * 下载管道检测项目,打包成压缩包
+     *
+     * @param printReqVOS 下载信息
+     * @param response 响应
+     */
+    void downloadPipeTaskOrderInput(List<PipeTaskOrderInputPrintReqVO> printReqVOS, HttpServletResponse response) throws Exception;
 }

+ 93 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorderinput/PipeTaskOrderInputServiceImpl.java

@@ -1,12 +1,26 @@
 package cn.start.tz.module.pressure2.service.pipetaskorderinput;
 
+import cn.start.tz.module.pressure2.dal.dataobject.dynamictbins.DynamicTbInsDO;
+import cn.start.tz.module.pressure2.service.dynamictbins.DynamicTbInsService;
+import cn.start.tz.module.pressure2.service.pdf.PdfService;
+import jakarta.servlet.http.HttpServletResponse;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.pdfbox.multipdf.PDFMergerUtility;
 import org.springframework.stereotype.Service;
 import jakarta.annotation.Resource;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.transaction.annotation.Transactional;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
 import java.util.*;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
+
 import cn.start.tz.module.pressure2.controller.admin.pipetaskorderinput.vo.*;
 import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderinput.PipeTaskOrderInputDO;
 import cn.start.tz.framework.common.pojo.PageResult;
@@ -25,11 +39,17 @@ import static cn.start.tz.module.pressure2.enums.ErrorCodeConstants.*;
  */
 @Service
 @Validated
+@Slf4j
 public class PipeTaskOrderInputServiceImpl extends ServiceImpl<PipeTaskOrderInputMapper, PipeTaskOrderInputDO> implements PipeTaskOrderInputService {
 
     @Resource
     private PipeTaskOrderInputMapper pipeTaskOrderInputMapper;
 
+    @Resource
+    private PdfService pdfService;
+    @Resource
+    private DynamicTbInsService dynamicTbInsService;
+
     @Override
     public String createPipeTaskOrderInput(PipeTaskOrderInputSaveReqVO createReqVO) {
         // 插入
@@ -72,4 +92,77 @@ public class PipeTaskOrderInputServiceImpl extends ServiceImpl<PipeTaskOrderInpu
         return pipeTaskOrderInputMapper.selectPage(pageReqVO);
     }
 
+    @Override
+    public void printPipeTaskOrderInput(List<PipeTaskOrderInputPrintReqVO> printReqVOS, HttpServletResponse response) throws Exception {
+        ByteArrayOutputStream mergeOutputStream = new ByteArrayOutputStream();
+        log.info("printReqVOS:{}", printReqVOS);
+        PDFMergerUtility mergerUtility = new PDFMergerUtility();
+        for (PipeTaskOrderInputPrintReqVO printReqVO : printReqVOS) {
+            String templateId = printReqVO.getTemplateId();
+            String instanceId = null;
+            if (printReqVO.getTaskStatus() >= 520) {
+                templateId = printReqVO.getReportTemplateId();
+                instanceId = dynamicTbInsService.getDynamicRefId("report_" + printReqVO.getId()).getId();
+            } else {
+                instanceId = dynamicTbInsService.getDynamicRefId(printReqVO.getId()).getId();
+            }
+            byte[] pdf = pdfService.pdf(templateId, instanceId);
+            mergerUtility.addSource(new ByteArrayInputStream(pdf));
+        }
+        mergerUtility.setDestinationStream(mergeOutputStream);
+        mergerUtility.mergeDocuments(null);
+        response.setContentType("application/pdf");
+        response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode("报告.pdf", StandardCharsets.UTF_8));
+        mergeOutputStream.writeTo(response.getOutputStream());
+    }
+
+    @Override
+    public void downloadPipeTaskOrderInput(List<PipeTaskOrderInputPrintReqVO> printReqVOS, HttpServletResponse response) throws Exception {
+        log.info("printReqVOS:{}", printReqVOS);
+
+        // 创建 ZIP 输出流
+        ByteArrayOutputStream zipOutputStream = new ByteArrayOutputStream();
+        ZipOutputStream zos = new ZipOutputStream(zipOutputStream);
+
+        try {
+            for (int i = 0; i < printReqVOS.size(); i++) {
+                PipeTaskOrderInputPrintReqVO printReqVO = printReqVOS.get(i);
+                String templateId = printReqVO.getTemplateId();
+                String instanceId = null;
+                DynamicTbInsDO dynamicRefId;
+                // 根据任务状态确定模板 ID 和实例 ID
+                if (printReqVO.getTaskStatus() >= 520) {
+                    templateId = printReqVO.getReportTemplateId();
+                    dynamicRefId = dynamicTbInsService.getDynamicRefId("report_" + printReqVO.getId());
+                    instanceId = dynamicRefId.getId();
+                } else {
+                    dynamicRefId = dynamicTbInsService.getDynamicRefId(printReqVO.getId());
+                    instanceId = dynamicRefId.getId();
+                }
+
+                // 生成 PDF
+                byte[] pdf = pdfService.pdf(templateId, instanceId);
+
+                // 添加到 ZIP 文件
+                String fileName = dynamicRefId.getRefName() + ".pdf";
+                ZipEntry zipEntry = new ZipEntry(fileName);
+                zos.putNextEntry(zipEntry);
+                zos.write(pdf, 0, pdf.length);
+                zos.closeEntry();
+            }
+        } finally {
+            zos.flush();
+            zos.close();
+        }
+
+        // 设置响应头
+        response.setContentType("application/zip");
+        response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode("管道检测录入报告.zip", StandardCharsets.UTF_8.name()));
+        response.setContentLength(zipOutputStream.size());
+
+        // 写入响应
+        zipOutputStream.writeTo(response.getOutputStream());
+        response.getOutputStream().flush();
+    }
+
 }

+ 97 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/util/DeptDataPermissionUtil.java

@@ -0,0 +1,97 @@
+package cn.start.tz.module.pressure2.util;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.start.tz.framework.datapermission.core.rule.dept.DeptDataPermissionRule;
+import cn.start.tz.framework.security.core.LoginUser;
+import cn.start.tz.framework.security.core.util.SecurityFrameworkUtils;
+import cn.start.tz.module.pressure2.controller.admin.boilertaskorder.vo.BoilerTaskOrderPageReqVO;
+import cn.start.tz.module.system.api.permission.PermissionApi;
+import cn.start.tz.module.system.api.permission.dto.DeptDataPermissionRespDTO;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DeptDataPermissionUtil {
+
+    /**
+     * LoginUser 的 Context 缓存 Key
+     */
+    protected static final String CONTEXT_KEY = DeptDataPermissionRule.class.getSimpleName();
+
+    private static PermissionApi permissionApi;
+
+    @Resource
+    public void setPermissionApi(PermissionApi permissionApi) {
+        DeptDataPermissionUtil.permissionApi = permissionApi;
+    }
+
+    public static BoilerTaskOrderPageReqVO generateDeptDataPermissionReq(BoilerTaskOrderPageReqVO pageReqVO) {
+        // 初始化参数
+        if (pageReqVO == null) {
+            pageReqVO = new BoilerTaskOrderPageReqVO();
+        }
+
+        LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
+
+        // 获取数据权限(优先从上下文缓存中获取)
+        DeptDataPermissionRespDTO deptDataPermission = getDeptDataPermission(loginUser);
+
+        // 根据数据权限类型设置查询条件
+        return applyDataPermission(pageReqVO, loginUser, deptDataPermission);
+    }
+
+    /**
+     * 获取数据权限(带缓存)
+     */
+    private static DeptDataPermissionRespDTO getDeptDataPermission(LoginUser loginUser) {
+        DeptDataPermissionRespDTO deptDataPermission = loginUser.getContext(CONTEXT_KEY, DeptDataPermissionRespDTO.class);
+        
+        if (deptDataPermission == null) {
+            deptDataPermission = permissionApi.getDeptDataPermission(loginUser.getId()).getCheckedData();
+            if (deptDataPermission == null) {
+                throw new NullPointerException("未返回数据权限");
+            }
+            // 缓存到上下文,避免重复计算
+            loginUser.setContext(CONTEXT_KEY, deptDataPermission);
+        }
+        
+        return deptDataPermission;
+    }
+
+    /**
+     * 应用数据权限到查询条件
+     */
+    private static BoilerTaskOrderPageReqVO applyDataPermission(
+            BoilerTaskOrderPageReqVO pageReqVO,
+            LoginUser loginUser,
+            DeptDataPermissionRespDTO deptDataPermission) {
+        
+        // 情况一:ALL 权限,可查看全部,不添加查询条件
+        if (Boolean.TRUE.equals(deptDataPermission.getAll())) {
+            return pageReqVO;
+        }
+
+        // 情况二:只能查看自己
+        if (CollUtil.isEmpty(deptDataPermission.getDeptIds())
+                && Boolean.TRUE.equals(deptDataPermission.getSelf())) {
+            return pageReqVO.setPermissionUserId(loginUser.getId());
+        }
+
+        // 情况三:只能查看部门(无个人权限)
+        if (!CollUtil.isEmpty(deptDataPermission.getDeptIds())
+                && Boolean.FALSE.equals(deptDataPermission.getSelf())) {
+            return pageReqVO.setPermissionDeptIds(deptDataPermission.getDeptIds());
+        }
+
+        // 情况四:既能查看部门又能查看自己(部门优先)
+        if (!CollUtil.isEmpty(deptDataPermission.getDeptIds())
+                && Boolean.TRUE.equals(deptDataPermission.getSelf())) {
+            return pageReqVO.setPermissionDeptIds(deptDataPermission.getDeptIds());
+        }
+
+        // 情况五:无任何权限,返回空结果
+        return pageReqVO.setHasPermission(false);
+    }
+
+
+}

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

@@ -180,4 +180,6 @@ external:
 synchronization:
   host: http://192.168.20.70:28081
   apiKey: cecb02cf8d1c7be3a05987d6acc6d913666d9cb72cc061039ffb19ecaead1bb9
-  cron: 0 0 0 * * ?
+  cron: 0 0 0 * * ?
+grapecity:
+  url: http://127.0.0.1:48010

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

@@ -167,4 +167,4 @@ synchronization:
   apiKey: cecb02cf8d1c7be3a05987d6acc6d913666d9cb72cc061039ffb19ecaead1bb9
   cron: 0 0 0 * * ?
 grapecity:
-  url: http://192.168.19.166:48010
+  url: http://192.168.19.166:48011

+ 125 - 14
tz-module-pressure2/tz-module-pressure2-biz/src/main/resources/mapper/boilertaskorder/BoilerTaskOrderMapper.xml

@@ -23,6 +23,9 @@
                 <if test="checkType != null and checkType != ''">
                     AND bto.CHECK_TYPE = #{checkType}
                 </if>
+                <if test="equipMainType != null and equipMainType != ''">
+                    AND bto.EQUIP_MAIN_TYPE = #{equipMainType}
+                </if>
                 <if test="checkDate != null and checkDate.size() >= 2">
                     AND bto.CHECK_DATE BETWEEN #{checkDate[0]} AND #{checkDate[1]}
                 </if>
@@ -33,12 +36,45 @@
                     AND bto.TASK_STATUS = #{taskStatus}
                 </if>
                 <if test="checkUserIds != null and checkUserIds.size() >= 1">
-                    AND bto.ID in (select tu.ORDER_ID from pressure2_boiler_task_order_user tu
-                        left join SYSTEM_USERS u on u.ID = tu.USER_ID
-                        where tu.deleted = 0 and tu.USER_ID IN
-                        <foreach close=")" collection="checkUserIds" item="listItem" open="(" separator=",">
-                            #{listItem}
-                        </foreach>
+                    AND bto.ID in (
+                        <choose>
+                            <when test="equipMainType != null and equipMainType == '100'">
+                                select tu.ORDER_ID from PRESSURE_TASK_ORDER_USER tu
+                                left join SYSTEM_USERS u on u.ID = tu.USER_ID
+                                where tu.deleted = 0 and tu.USER_ID IN
+                                <foreach close=")" collection="checkUserIds" item="listItem" open="(" separator=",">
+                                    #{listItem}
+                                </foreach>
+                            </when>
+                            <when test="equipMainType != null and equipMainType == '200'">
+                                select tu.ORDER_ID from pressure2_boiler_task_order_user tu
+                                left join SYSTEM_USERS u on u.ID = tu.USER_ID
+                                where tu.deleted = 0 and tu.USER_ID IN
+                                <foreach close=")" collection="checkUserIds" item="listItem" open="(" separator=",">
+                                    #{listItem}
+                                </foreach>
+                            </when>
+                            <when test="equipMainType != null and equipMainType == '300'">
+                                select tu.ORDER_ID from pressure2_pipe_task_order_user tu
+                                left join SYSTEM_USERS u on u.ID = tu.USER_ID
+                                where tu.deleted = 0 and tu.USER_ID IN
+                                <foreach close=")" collection="checkUserIds" item="listItem" open="(" separator=",">
+                                    #{listItem}
+                                </foreach>
+                            </when>
+                            <otherwise>
+                                select tu.ORDER_ID from (
+                                    select ORDER_ID, USER_ID from pressure2_boiler_task_order_user where deleted = 0
+                                    union all
+                                    select ORDER_ID, USER_ID from pressure2_pipe_task_order_user where deleted = 0
+                                ) tu
+                                left join SYSTEM_USERS u on u.ID = tu.USER_ID
+                                where tu.USER_ID IN
+                                <foreach close=")" collection="checkUserIds" item="listItem" open="(" separator=",">
+                                    #{listItem}
+                                </foreach>
+                            </otherwise>
+                        </choose>
                     )
                 </if>
                 <if test="submitIds != null and submitIds.size() >= 1">
@@ -50,15 +86,49 @@
                 <if test="deptId != null and deptId != ''">
                     AND bto.DEPT_ID = #{deptId}
                 </if>
-                <if test="equipMainType != null and equipMainType != ''">
-                    AND bto.EQUIP_MAIN_TYPE = #{equipMainType}
-                </if>
                 <if test="submitTime != null and submitTime.size() >= 2">
                     AND bto.SUBMIT_TIME BETWEEN #{submitTime[0]} AND #{submitTime[1]}
                 </if>
                 <if test="status != null and status != ''">
                     AND bto.STATUS = #{status}
                 </if>
+                <if test="permissionUserId != null and permissionUserId != ''">
+                    AND ( bto.MANAGER_ID = #{permissionUserId}
+                    or bto.ID in (
+                        <choose>
+                            <when test="equipMainType != null and equipMainType == '100'">
+                                select tu.ORDER_ID from PRESSURE_TASK_ORDER_USER tu
+                                where tu.deleted = 0 and tu.USER_ID = #{permissionUserId}
+                            </when>
+                            <when test="equipMainType != null and equipMainType == '200'">
+                                select tu.ORDER_ID from pressure2_boiler_task_order_user tu
+                                where tu.deleted = 0 and tu.USER_ID = #{permissionUserId}
+                            </when>
+                            <when test="equipMainType != null and equipMainType == '300'">
+                                select tu.ORDER_ID from pressure2_pipe_task_order_user tu
+                                where tu.deleted = 0 and tu.USER_ID = #{permissionUserId}
+                            </when>
+                            <otherwise>
+                                select tu.ORDER_ID from (
+                                    select ORDER_ID, USER_ID from pressure2_boiler_task_order_user where deleted = 0
+                                    union all
+                                    select ORDER_ID, USER_ID from pressure2_pipe_task_order_user where deleted = 0
+                                ) tu
+                                where tu.USER_ID = #{permissionUserId}
+                            </otherwise>
+                        </choose>
+                    ) )
+                </if>
+                <if test="permissionDeptIds != null and permissionDeptIds != ''">
+                    AND  ( bto.DEPT_ID in
+                    <foreach close=")" collection="permissionDeptIds" item="listItem" open="(" separator=",">
+                        #{listItem}
+                    </foreach>
+                    )
+                </if>
+                <if test="hasPermission != null and hasPermission == false">
+                    AND 1 = 2
+                </if>
             </where>
             order by bto.CREATE_TIME desc
         ) a
@@ -69,7 +139,7 @@
         select count(1) from (
             select bto.* from PRESSURE_TASK_ORDER bto
             <where>
-                bto.DELETED = 0
+                bto.DELETED = 0 and bto.EQUIP_MAIN_TYPE = 200
                 <if test="orderNo != null and orderNo != ''">
                     AND bto.ORDER_NO LIKE CONCAT('%',#{orderNo},'%')
                 </if>
@@ -90,7 +160,6 @@
                 </if>
                 <if test="checkUserIds != null and checkUserIds.size() >= 1">
                     AND bto.ID in (select tu.ORDER_ID from pressure2_boiler_task_order_user tu
-                    left join SYSTEM_USERS u on u.ID = tu.USER_ID
                     where tu.deleted = 0 and tu.USER_ID IN
                     <foreach close=")" collection="checkUserIds" item="listItem" open="(" separator=",">
                         #{listItem}
@@ -106,15 +175,27 @@
                 <if test="deptId != null and deptId != ''">
                     AND bto.DEPT_ID = #{deptId}
                 </if>
-                <if test="equipMainType != null and equipMainType != ''">
-                    AND bto.EQUIP_MAIN_TYPE = #{equipMainType}
-                </if>
                 <if test="submitTime != null and submitTime.size() >= 2">
                     AND bto.SUBMIT_TIME BETWEEN #{submitTime[0]} AND #{submitTime[1]}
                 </if>
                 <if test="status != null and status != ''">
                     AND bto.STATUS = #{status}
                 </if>
+                <if test="permissionUserId != null and permissionUserId != ''">
+                    AND ( bto.MANAGER_ID = #{permissionUserId}
+                    or bto.ID in (select tu.ORDER_ID from pressure2_boiler_task_order_user tu
+                    where tu.deleted = 0 and tu.USER_ID = #{permissionUserId} ) )
+                </if>
+                <if test="permissionDeptIds != null and permissionDeptIds != ''">
+                    AND  ( bto.DEPT_ID in
+                    <foreach close=")" collection="permissionDeptIds" item="listItem" open="(" separator=",">
+                        #{listItem}
+                    </foreach>
+                    )
+                </if>
+                <if test="hasPermission != null and hasPermission == false">
+                    AND 1 = 2
+                </if>
             </where>
         ) a
     </select>
@@ -194,6 +275,21 @@
                     </foreach>
                     )
                 </if>
+                <if test="permissionUserId != null and permissionUserId != ''">
+                    AND ( bto.MANAGER_ID = #{permissionUserId}
+                    or bto.ID in (select tu.ORDER_ID from pressure2_boiler_task_order_user tu
+                    where tu.deleted = 0 and tu.USER_ID = #{permissionUserId} ) )
+                </if>
+                <if test="permissionDeptIds != null and permissionDeptIds != ''">
+                    AND  ( bto.DEPT_ID in
+                    <foreach close=")" collection="permissionDeptIds" item="listItem" open="(" separator=",">
+                        #{listItem}
+                    </foreach>
+                    )
+                </if>
+                <if test="hasPermission != null and hasPermission == false">
+                    AND 1 = 2
+                </if>
             </where>
             order by bto.CREATE_TIME desc
         ) a
@@ -264,6 +360,21 @@
                 </foreach>
                 )
             </if>
+            <if test="permissionUserId != null and permissionUserId != ''">
+                AND ( bto.MANAGER_ID = #{permissionUserId}
+                or bto.ID in (select tu.ORDER_ID from pressure2_boiler_task_order_user tu
+                where tu.deleted = 0 and tu.USER_ID = #{permissionUserId} ) )
+            </if>
+            <if test="permissionDeptIds != null and permissionDeptIds != ''">
+                AND  ( bto.DEPT_ID in
+                <foreach close=")" collection="permissionDeptIds" item="listItem" open="(" separator=",">
+                    #{listItem}
+                </foreach>
+                )
+            </if>
+            <if test="hasPermission != null and hasPermission == false">
+                AND 1 = 2
+            </if>
         </where>
         ) a
     </select>

+ 30 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/resources/mapper/boilertaskorderitem/BoilerTaskOrderItemMapper.xml

@@ -214,6 +214,21 @@
                     #{listItem}
                 </foreach>
             </if>
+            <if test="permissionUserId != null and permissionUserId != ''">
+                AND  ( bto.MANAGER_ID = #{permissionUserId}
+                or btoiru.USER_ID = #{permissionUserId}
+                or btoir.RECHECK_ID = #{permissionUserId} )
+            </if>
+            <if test="permissionDeptIds != null and permissionDeptIds != ''">
+                AND  ( bto.DEPT_ID in
+                <foreach close=")" collection="permissionDeptIds" item="listItem" open="(" separator=",">
+                    #{listItem}
+                </foreach>
+                )
+            </if>
+            <if test="hasPermission != null and hasPermission == false">
+                AND 1 = 2
+            </if>
             order by bto.CREATE_TIME desc
         </where>
         ) a
@@ -288,6 +303,21 @@
                     #{listItem}
                 </foreach>
             </if>
+            <if test="permissionUserId != null and permissionUserId != ''">
+                AND  ( bto.MANAGER_ID = #{permissionUserId}
+                or btoiru.USER_ID = #{permissionUserId}
+                or btoir.RECHECK_ID = #{permissionUserId} )
+            </if>
+            <if test="permissionDeptIds != null and permissionDeptIds != ''">
+                AND  ( bto.DEPT_ID in
+                <foreach close=")" collection="permissionDeptIds" item="listItem" open="(" separator=",">
+                    #{listItem}
+                </foreach>
+                )
+            </if>
+            <if test="hasPermission != null and hasPermission == false">
+                AND 1 = 2
+            </if>
         </where>
         ) a
     </select>

+ 26 - 12
tz-module-pressure2/tz-module-pressure2-biz/src/main/resources/mapper/equipboilerscheduling/EquipBoilerSchedulingMapper.xml

@@ -18,12 +18,12 @@
             AND eb.NEXT_IN_CHECK_DATE BETWEEN #{nextDate[0]} AND #{nextDate[1]}
         </if>
         THEN eb.id ELSE NULL END, ',' ON OVERFLOW TRUNCATE) AS in_equip_ids
-        ,LISTAGG(CASE WHEN eb.NEXT_OUT_CHECK_DATE IS NOT NULL AND eb.HAS_EXTERNAL = 0
+        ,LISTAGG(CASE WHEN eb.NEXT_OUT_CHECK_DATE IS NOT NULL AND eb.HAS_INTERNAL = 0
         <if test="nextDate != null and nextDate.size()>= 2">
             AND eb.NEXT_OUT_CHECK_DATE BETWEEN #{nextDate[0]} AND #{nextDate[1]}
         </if>
         THEN eb.id ELSE NULL END, ',' ON OVERFLOW TRUNCATE) AS out_equip_ids
-        ,LISTAGG(CASE WHEN eb.NEXT_PRESSURE_CHECK_DATE IS NOT NULL AND eb.HAS_PRESSURE = 0
+        ,LISTAGG(CASE WHEN eb.NEXT_PRESSURE_CHECK_DATE IS NOT NULL AND eb.HAS_INTERNAL = 0
         <if test="nextDate != null and nextDate.size()>= 2">
             AND eb.NEXT_PRESSURE_CHECK_DATE BETWEEN #{nextDate[0]} AND #{nextDate[1]}
         </if>
@@ -33,37 +33,51 @@
             AND eb.NEXT_IN_CHECK_DATE BETWEEN #{nextDate[0]} AND #{nextDate[1]}
         </if>
         THEN 1 ELSE 0 END) AS count_in
-        ,SUM(CASE WHEN eb.NEXT_OUT_CHECK_DATE IS NOT NULL AND eb.HAS_EXTERNAL = 0
+        ,SUM(CASE WHEN eb.NEXT_OUT_CHECK_DATE IS NOT NULL AND eb.HAS_INTERNAL = 0
         <if test="nextDate != null and nextDate.size()>= 2">
             AND eb.NEXT_OUT_CHECK_DATE BETWEEN #{nextDate[0]} AND #{nextDate[1]}
         </if>
         THEN 1 ELSE 0 END) AS count_out
-        ,SUM(CASE WHEN eb.NEXT_PRESSURE_CHECK_DATE IS NOT NULL AND eb.HAS_PRESSURE = 0
+        ,SUM(CASE WHEN eb.NEXT_PRESSURE_CHECK_DATE IS NOT NULL AND eb.HAS_INTERNAL = 0
         <if test="nextDate != null and nextDate.size()>= 2">
-            AND eb.NEXT_PRESSURE_CHECK_DATE BETWEEN #{nextDate[0]} AND #{nextDate[1]}
+            AND eb.NEXT_PRESSURE_CHECK_DATE BETWEEN #{nextDate[0]} AND #{nextDate[1]} AND eb.HAS_INTERNAL = 0
         </if>
         THEN 1 ELSE 0 END) AS count_pre
-        ,MIN(CASE WHEN eb.NEXT_IN_CHECK_DATE IS NOT NULL AND eb.HAS_INTERNAL = 0
+        ,MIN(CASE WHEN eb.NEXT_IN_CHECK_DATE IS NOT NULL
         <if test="nextDate != null and nextDate.size()>= 2">
             AND eb.NEXT_IN_CHECK_DATE BETWEEN #{nextDate[0]} AND #{nextDate[1]}
         </if>
         THEN eb.NEXT_IN_CHECK_DATE ELSE NULL END
         ) AS NEXT_IN_CHECK_DATE
-        ,MIN(CASE WHEN eb.NEXT_OUT_CHECK_DATE IS NOT NULL AND eb.HAS_EXTERNAL = 0
+        ,MIN(CASE WHEN eb.NEXT_OUT_CHECK_DATE IS NOT NULL
         <if test="nextDate != null and nextDate.size()>= 2">
             AND eb.NEXT_OUT_CHECK_DATE BETWEEN #{nextDate[0]} AND #{nextDate[1]}
         </if>
         THEN eb.NEXT_OUT_CHECK_DATE ELSE NULL END
         ) AS NEXT_OUT_CHECK_DATE
-        ,MIN(CASE WHEN eb.NEXT_PRESSURE_CHECK_DATE IS NOT NULL AND eb.HAS_PRESSURE = 0
+        ,MIN(CASE WHEN eb.NEXT_PRESSURE_CHECK_DATE IS NOT NULL
         <if test="nextDate != null and nextDate.size()>= 2">
             AND eb.NEXT_PRESSURE_CHECK_DATE BETWEEN #{nextDate[0]} AND #{nextDate[1]}
         </if>
         THEN eb.NEXT_PRESSURE_CHECK_DATE ELSE NULL END
         ) AS NEXT_PRESSURE_CHECK_DATE
+        ,scheduling_info.plan_in_check_date
+        ,scheduling_info.plan_out_check_date
+        ,scheduling_info.plan_pressure_check_date
         from PRESSURE2_EQUIP_BOILER eb
+        LEFT JOIN (
+        SELECT
+        b.equip_id,
+        MAX(CASE WHEN s.type = 100 THEN s.PLAN_DATE END) AS plan_in_check_date,
+        MAX(CASE WHEN s.type = 200 THEN s.PLAN_DATE END) AS plan_out_check_date,
+        MAX(CASE WHEN s.type = 300 THEN s.PLAN_DATE END) AS plan_pressure_check_date
+        FROM PRESSURE2_EQUIP_BOILER_SCHEDULING s
+        INNER JOIN PRESSURE2_EQUIP_BOILER_SCHEDULING_ITEM b ON s.ID = b.SCHEDULING_ID
+        WHERE s.DELETED = 0 AND b.DELETED = 0 AND s.type IN (100, 200, 300)
+        GROUP BY b.equip_id
+        ) scheduling_info ON eb.ID = scheduling_info.equip_id
         <where>
-            eb.deleted = 0 AND (eb.HAS_INTERNAL = 0 OR eb.HAS_EXTERNAL = 0 OR eb.HAS_PRESSURE = 0)
+            eb.deleted = 0 --AND (eb.HAS_INTERNAL = 0 OR eb.HAS_EXTERNAL = 0 OR eb.HAS_PRESSURE = 0)
             <if test="unitName != null and unitName != ''">
                 AND eb.unit_name LIKE CONCAT('%',#{unitName},'%')
             </if>
@@ -116,7 +130,7 @@
         </where>
         group by eb.id
         ) a
-        WHERE a.count_in > 0 OR a.count_out > 0 OR a.count_pre > 0
+        --WHERE a.count_in > 0 OR a.count_out > 0 OR a.count_pre > 0
         <if test="pageSize != -1">
             OFFSET ${(pageNo - 1) * pageSize} ROWS FETCH NEXT #{pageSize} ROWS ONLY
         </if>
@@ -160,7 +174,7 @@
         ) AS NEXT_PRESSURE_CHECK_DATE
         from PRESSURE2_EQUIP_BOILER eb
         <where>
-            eb.deleted = 0 AND (eb.HAS_INTERNAL = 0 OR eb.HAS_EXTERNAL = 0 OR eb.HAS_PRESSURE = 0)
+            eb.deleted = 0 -- AND (eb.HAS_INTERNAL = 0 OR eb.HAS_EXTERNAL = 0 OR eb.HAS_PRESSURE = 0)
             <if test="unitName != null and unitName != ''">
                 AND eb.unit_name LIKE CONCAT('%',#{unitName},'%')
             </if>
@@ -213,7 +227,7 @@
         </where>
         group by eb.id
         ) a
-        WHERE a.count_in > 0 OR a.count_out > 0 OR a.count_pre > 0
+        -- WHERE a.count_in > 0 OR a.count_out > 0 OR a.count_pre > 0
     </select>
 
     <select id="selectPlanBoilersPage">

+ 50 - 2
tz-module-pressure2/tz-module-pressure2-biz/src/main/resources/mapper/equippipescheduling/EquipPipeSchedulingMapper.xml

@@ -88,6 +88,30 @@
         </if>
         THEN eb.NEXT_YEAR_CHECK_DATE ELSE NULL END
         ) AS NEXT_YEAR_CHECK_DATE
+        ,MIN(COALESCE(
+            CASE WHEN eb.NEXT_LEGAL_CHECK_DATE IS NOT NULL AND eb.HAS_LEGAL_SCHEDULING = 0
+                <if test="nextDate != null and nextDate.size()>= 2">
+                    AND eb.NEXT_LEGAL_CHECK_DATE BETWEEN #{nextDate[0]} AND #{nextDate[1]}
+                </if>
+                <if test="useStatus != null and useStatus.size() > 0">
+                    AND eb.USE_STATUS IN
+                    <foreach close=")" collection="useStatus" item="listItem" open="(" separator=",">
+                        #{listItem}
+                    </foreach>
+                </if>
+            THEN eb.NEXT_LEGAL_CHECK_DATE ELSE NULL END,
+            CASE WHEN eb.NEXT_YEAR_CHECK_DATE IS NOT NULL AND eb.HAS_YEAR_SCHEDULING = 0
+                <if test="nextDate != null and nextDate.size()>= 2">
+                    AND eb.NEXT_YEAR_CHECK_DATE BETWEEN #{nextDate[0]} AND #{nextDate[1]}
+                </if>
+                <if test="useStatus != null and useStatus.size() > 0">
+                    AND eb.USE_STATUS IN
+                    <foreach close=")" collection="useStatus" item="listItem" open="(" separator=",">
+                        #{listItem}
+                    </foreach>
+                </if>
+            THEN eb.NEXT_YEAR_CHECK_DATE ELSE NULL END
+        )) AS unified_check_date
         from PRESSURE2_EQUIP_PIPE eb
         <where>
             eb.deleted = 0
@@ -136,7 +160,7 @@
         </where>
         group by eb.EQUIP_DISTRICT,eb.EQUIP_STREET,eb.UNIT_CODE,eb.PIPE_ADDRESS,
         eb.CONTACT,eb.CONTACT_PHONE
-        order by NEXT_LEGAL_CHECK_DATE NULLS LAST,NEXT_YEAR_CHECK_DATE NULLS LAST,eb.EQUIP_DISTRICT,eb.EQUIP_STREET
+        order by unified_check_date NULLS LAST,eb.EQUIP_DISTRICT,eb.EQUIP_STREET
         ) a
         WHERE a.count_legal > 0 OR a.count_year > 0
         OFFSET ${(pageNo - 1) * pageSize} ROWS FETCH NEXT #{pageSize} ROWS ONLY
@@ -221,6 +245,30 @@
         </if>
         THEN eb.NEXT_YEAR_CHECK_DATE ELSE NULL END
         ) AS NEXT_YEAR_CHECK_DATE
+        ,MIN(COALESCE(
+            CASE WHEN eb.NEXT_LEGAL_CHECK_DATE IS NOT NULL AND eb.HAS_LEGAL_SCHEDULING = 0
+                <if test="nextDate != null and nextDate.size()>= 2">
+                    AND eb.NEXT_LEGAL_CHECK_DATE BETWEEN #{nextDate[0]} AND #{nextDate[1]}
+                </if>
+                <if test="useStatus != null and useStatus.size() > 0">
+                    AND eb.USE_STATUS IN
+                    <foreach close=")" collection="useStatus" item="listItem" open="(" separator=",">
+                        #{listItem}
+                    </foreach>
+                </if>
+            THEN eb.NEXT_LEGAL_CHECK_DATE ELSE NULL END,
+            CASE WHEN eb.NEXT_YEAR_CHECK_DATE IS NOT NULL AND eb.HAS_YEAR_SCHEDULING = 0
+                <if test="nextDate != null and nextDate.size()>= 2">
+                    AND eb.NEXT_YEAR_CHECK_DATE BETWEEN #{nextDate[0]} AND #{nextDate[1]}
+                </if>
+                <if test="useStatus != null and useStatus.size() > 0">
+                    AND eb.USE_STATUS IN
+                    <foreach close=")" collection="useStatus" item="listItem" open="(" separator=",">
+                        #{listItem}
+                    </foreach>
+                </if>
+            THEN eb.NEXT_YEAR_CHECK_DATE ELSE NULL END
+        )) AS unified_check_date
         from PRESSURE2_EQUIP_PIPE eb
         <where>
             eb.deleted = 0
@@ -269,7 +317,7 @@
         </where>
         group by eb.EQUIP_DISTRICT,eb.EQUIP_STREET,eb.UNIT_CODE,eb.PIPE_ADDRESS,
         eb.CONTACT,eb.CONTACT_PHONE
-        order by NEXT_LEGAL_CHECK_DATE NULLS LAST,NEXT_YEAR_CHECK_DATE NULLS LAST,eb.EQUIP_DISTRICT,eb.EQUIP_STREET
+        ORDER BY unified_check_date NULLS LAST,eb.EQUIP_DISTRICT,eb.EQUIP_STREET
         ) a
         WHERE a.count_legal > 0 OR a.count_year > 0
     </select>

+ 60 - 7
tz-module-pressure2/tz-module-pressure2-biz/src/main/resources/mapper/pipetaskorder/PipeTaskOrderMapper.xml

@@ -34,7 +34,6 @@
                 </if>
                 <if test="checkUserIds != null and checkUserIds.size() >= 1">
                     AND bto.ID in (select tu.ORDER_ID from pressure2_pipe_task_order_user tu
-                        left join SYSTEM_USERS u on u.ID = tu.USER_ID
                         where tu.deleted = 0 and tu.USER_ID IN
                         <foreach close=")" collection="checkUserIds" item="listItem" open="(" separator=",">
                             #{listItem}
@@ -53,15 +52,27 @@
                 <if test="deptId != null and deptId != ''">
                     AND bto.DEPT_ID = #{deptId}
                 </if>
-                <if test="equipMainType != null and equipMainType != ''">
-                    AND bto.EQUIP_MAIN_TYPE = #{equipMainType}
-                </if>
                 <if test="submitTime != null and submitTime.size() >= 2">
                     AND bto.SUBMIT_TIME BETWEEN #{submitTime[0]} AND #{submitTime[1]}
                 </if>
                 <if test="status != null and status != ''">
                     AND bto.STATUS = #{status}
                 </if>
+                <if test="permissionUserId != null and permissionUserId != ''">
+                    AND ( bto.MANAGER_ID = #{permissionUserId}
+                    or bto.ID in (select tu.ORDER_ID from pressure2_pipe_task_order_user tu
+                    where tu.deleted = 0 and tu.USER_ID = #{permissionUserId} ) )
+                </if>
+                <if test="permissionDeptIds != null and permissionDeptIds != ''">
+                    AND  ( bto.DEPT_ID in
+                    <foreach close=")" collection="permissionDeptIds" item="listItem" open="(" separator=",">
+                        #{listItem}
+                    </foreach>
+                    )
+                </if>
+                <if test="hasPermission != null and hasPermission == false">
+                    AND 1 = 2
+                </if>
             </where>
             order by bto.CREATE_TIME desc
         ) a
@@ -112,15 +123,27 @@
                 <if test="deptId != null and deptId != ''">
                     AND bto.DEPT_ID = #{deptId}
                 </if>
-                <if test="equipMainType != null and equipMainType != ''">
-                    AND bto.EQUIP_MAIN_TYPE = #{equipMainType}
-                </if>
                 <if test="submitTime != null and submitTime.size() >= 2">
                     AND bto.SUBMIT_TIME BETWEEN #{submitTime[0]} AND #{submitTime[1]}
                 </if>
                 <if test="status != null and status != ''">
                     AND bto.STATUS = #{status}
                 </if>
+                <if test="permissionUserId != null and permissionUserId != ''">
+                    AND ( bto.MANAGER_ID = #{permissionUserId}
+                    or bto.ID in (select tu.ORDER_ID from pressure2_pipe_task_order_user tu
+                    where tu.deleted = 0 and tu.USER_ID = #{permissionUserId} ) )
+                </if>
+                <if test="permissionDeptIds != null and permissionDeptIds != ''">
+                    AND  ( bto.DEPT_ID in
+                    <foreach close=")" collection="permissionDeptIds" item="listItem" open="(" separator=",">
+                        #{listItem}
+                    </foreach>
+                    )
+                </if>
+                <if test="hasPermission != null and hasPermission == false">
+                    AND 1 = 2
+                </if>
             </where>
         ) a
     </select>
@@ -203,6 +226,21 @@
                     </foreach>
                     )
                 </if>
+                <if test="permissionUserId != null and permissionUserId != ''">
+                    AND ( bto.MANAGER_ID = #{permissionUserId}
+                    or bto.ID in (select tu.ORDER_ID from pressure2_pipe_task_order_user tu
+                    where tu.deleted = 0 and tu.USER_ID = #{permissionUserId} ) )
+                </if>
+                <if test="permissionDeptIds != null and permissionDeptIds != ''">
+                    AND  ( bto.DEPT_ID in
+                    <foreach close=")" collection="permissionDeptIds" item="listItem" open="(" separator=",">
+                        #{listItem}
+                    </foreach>
+                    )
+                </if>
+                <if test="hasPermission != null and hasPermission == false">
+                    AND 1 = 2
+                </if>
             </where>
             group by tt.ID, bto.ID, bto.ORDER_NO, bto.UNIT_NAME, bto.CHECK_TYPE, btoir.TASK_STATUS,
             bto.CHECK_DATE, bto.MANAGER_ID, tt.MAIN_CHECKER, tt.END_CHECK_DATE, bto.CREATE_TIME
@@ -292,6 +330,21 @@
                 </foreach>
                 )
             </if>
+            <if test="permissionUserId != null and permissionUserId != ''">
+                AND ( bto.MANAGER_ID = #{permissionUserId}
+                or bto.ID in (select tu.ORDER_ID from pressure2_pipe_task_order_user tu
+                where tu.deleted = 0 and tu.USER_ID = #{permissionUserId} ) )
+            </if>
+            <if test="permissionDeptIds != null and permissionDeptIds != ''">
+                AND  ( bto.DEPT_ID in
+                <foreach close=")" collection="permissionDeptIds" item="listItem" open="(" separator=",">
+                    #{listItem}
+                </foreach>
+                )
+            </if>
+            <if test="hasPermission != null and hasPermission == false">
+                AND 1 = 2
+            </if>
         </where>
         group by tt.ID, bto.ID, bto.ORDER_NO, bto.UNIT_NAME, bto.CHECK_TYPE, btoir.TASK_STATUS,
         bto.CHECK_DATE, bto.MANAGER_ID, tt.MAIN_CHECKER, tt.END_CHECK_DATE, bto.CREATE_TIME

+ 30 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/resources/mapper/pipetaskorderitem/PipeTaskOrderItemMapper.xml

@@ -209,6 +209,21 @@
                     #{listItem}
                 </foreach>
             </if>
+            <if test="permissionUserId != null and permissionUserId != ''">
+                AND  ( bto.MANAGER_ID = #{permissionUserId}
+                or btoiru.USER_ID = #{permissionUserId}
+                or btoir.RECHECK_ID = #{permissionUserId} )
+            </if>
+            <if test="permissionDeptIds != null and permissionDeptIds != ''">
+                AND  ( bto.DEPT_ID in
+                <foreach close=")" collection="permissionDeptIds" item="listItem" open="(" separator=",">
+                    #{listItem}
+                </foreach>
+                )
+            </if>
+            <if test="hasPermission != null and hasPermission == false">
+                AND 1 = 2
+            </if>
             group by btoi.ID,btoir.ID
             <if test="projectNo != null and projectNo != ''">
                 HAVING WM_CONCAT(epp.PROJECT_NO) LIKE CONCAT('%',#{projectNo},'%')
@@ -288,6 +303,21 @@
                     #{listItem}
                 </foreach>
             </if>
+            <if test="permissionUserId != null and permissionUserId != ''">
+                AND  ( bto.MANAGER_ID = #{permissionUserId}
+                or btoiru.USER_ID = #{permissionUserId}
+                or btoir.RECHECK_ID = #{permissionUserId} )
+            </if>
+            <if test="permissionDeptIds != null and permissionDeptIds != ''">
+                AND  ( bto.DEPT_ID in
+                <foreach close=")" collection="permissionDeptIds" item="listItem" open="(" separator=",">
+                    #{listItem}
+                </foreach>
+                )
+            </if>
+            <if test="hasPermission != null and hasPermission == false">
+                AND 1 = 2
+            </if>
             group by btoi.ID,btoir.ID
             <if test="projectNo != null and projectNo != ''">
                 HAVING WM_CONCAT(epp.PROJECT_NO) LIKE CONCAT('%',#{projectNo},'%')