Przeglądaj źródła

报告归档-完整记录、报告

xy 3 dni temu
rodzic
commit
69b681a065
34 zmienionych plików z 1282 dodań i 3 usunięć
  1. 70 0
      build-prod/updata.sql
  2. 4 0
      tz-module-pressure2/tz-module-pressure2-api/src/main/java/cn/start/tz/module/pressure2/enums/ErrorCodeConstants.java
  3. 24 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/boilertaskorder/vo/BoilerTaskOrderArchiveDetailRespVO.java
  4. 78 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/boilertaskorderissuereportversion/BoilerTaskOrderIssueReportVersionController.java
  5. 40 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/boilertaskorderissuereportversion/vo/BoilerTaskOrderIssueReportVersionPageReqVO.java
  6. 47 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/boilertaskorderissuereportversion/vo/BoilerTaskOrderIssueReportVersionRespVO.java
  7. 33 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/boilertaskorderissuereportversion/vo/BoilerTaskOrderIssueReportVersionSaveReqVO.java
  8. 24 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/pipetaskorder/vo/PipeTaskOrderArchiveDetailRespVO.java
  9. 77 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/pipetaskorderissuereportversion/PipeTaskOrderIssueReportVersionController.java
  10. 40 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/pipetaskorderissuereportversion/vo/PipeTaskOrderIssueReportVersionPageReqVO.java
  11. 47 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/pipetaskorderissuereportversion/vo/PipeTaskOrderIssueReportVersionRespVO.java
  12. 33 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/pipetaskorderissuereportversion/vo/PipeTaskOrderIssueReportVersionSaveReqVO.java
  13. 5 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/dataobject/boilertaskorder/BoilerTaskOrderDO.java
  14. 55 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/dataobject/boilertaskorderissuereportversion/BoilerTaskOrderIssueReportVersionDO.java
  15. 5 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/dataobject/boilertaskorderitem/BoilerTaskOrderItemDO.java
  16. 4 1
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/dataobject/pipetaskorder/PipeTaskOrderDO.java
  17. 55 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/dataobject/pipetaskorderissuereportversion/PipeTaskOrderIssueReportVersionDO.java
  18. 5 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/dataobject/pipetaskorderitem/PipeTaskOrderItemDO.java
  19. 32 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/mysql/boilertaskorderissuereportversion/BoilerTaskOrderIssueReportVersionMapper.java
  20. 32 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/mysql/pipetaskorderissuereportversion/PipeTaskOrderIssueReportVersionMapper.java
  21. 3 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorder/BoilerTaskOrderService.java
  22. 4 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorder/BoilerTaskOrderServiceImpl.java
  23. 3 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorderissuereport/BoilerTaskOrderIssueReportService.java
  24. 82 2
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorderissuereport/BoilerTaskOrderIssueReportServiceImpl.java
  25. 58 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorderissuereportversion/BoilerTaskOrderIssueReportVersionService.java
  26. 116 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorderissuereportversion/BoilerTaskOrderIssueReportVersionServiceImpl.java
  27. 3 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorder/PipeTaskOrderService.java
  28. 8 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorder/PipeTaskOrderServiceImpl.java
  29. 2 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorderissuereport/PipeTaskOrderIssueReportService.java
  30. 81 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorderissuereport/PipeTaskOrderIssueReportServiceImpl.java
  31. 58 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorderissuereportversion/PipeTaskOrderIssueReportVersionService.java
  32. 130 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorderissuereportversion/PipeTaskOrderIssueReportVersionServiceImpl.java
  33. 12 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/resources/mapper/boilertaskorderissuereportversion/BoilerTaskOrderIssueReportVersionMapper.xml
  34. 12 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/resources/mapper/pipetaskorderissuereportversion/PipeTaskOrderIssueReportVersionMapper.xml

+ 70 - 0
build-prod/updata.sql

@@ -68,3 +68,73 @@ COMMENT ON COLUMN "PRESSURE_APPOINTMENT_CONFIRM_ORDER"."ANNOTATOR_NAME" IS '备
 ALTER TABLE "PRESSURE2_DYNAMIC_TB" ADD COLUMN "IMAGE_OFFSET" VARCHAR(150);
 COMMENT ON COLUMN "PRESSURE2_DYNAMIC_TB"."IMAGE_OFFSET" IS '偏移量';
 --已加
+
+--20260704
+ALTER TABLE "PRESSURE2_BOILER_TASK_ORDER_ITEM" ADD COLUMN "ENTER_PDF_URL" VARCHAR(50);
+COMMENT ON COLUMN "PRESSURE2_BOILER_TASK_ORDER_ITEM"."ENTER_PDF_URL" IS '总记录PDF';
+
+ALTER TABLE "PRESSURE2_PIPE_TASK_ORDER_ITEM" ADD COLUMN "ENTER_PDF_URL" VARCHAR(50);
+COMMENT ON COLUMN "PRESSURE2_PIPE_TASK_ORDER_ITEM"."ENTER_PDF_URL" IS '总记录PDF';
+
+ALTER TABLE "PRESSURE_TASK_ORDER" ADD COLUMN "ENTER_PDF_URL" VARCHAR(50);
+COMMENT ON COLUMN "PRESSURE_TASK_ORDER"."ENTER_PDF_URL" IS '总记录PDF';
+
+CREATE TABLE "PRESSURE2_BOILER_TASK_ORDER_ISSUE_REPORT_VERSION"
+(
+    "ID" VARCHAR(64),
+    "ORDER_ID" VARCHAR(50),
+    "ORDER_ITEM_ID" VARCHAR(50),
+    "REPORT_NO" VARCHAR(50),
+    "REPORT_TYPE" INTEGER,
+    "REPORT_VERSION" INTEGER,
+    "ISSUE_URL" VARCHAR(50),
+    "CREATOR" VARCHAR(64 CHAR),
+"CREATE_TIME" TIMESTAMP(0) NOT NULL,
+"UPDATER" VARCHAR(64 CHAR),
+"UPDATE_TIME" TIMESTAMP(0) NOT NULL,
+"DELETED" BIT DEFAULT 0) STORAGE(ON "MAIN", CLUSTERBTR) ;
+
+COMMENT ON TABLE "PRESSURE2_BOILER_TASK_ORDER_ISSUE_REPORT_VERSION" IS '锅炉记录报告版本记录';
+COMMENT ON COLUMN "PRESSURE2_BOILER_TASK_ORDER_ISSUE_REPORT_VERSION"."ID" IS 'id';
+COMMENT ON COLUMN "PRESSURE2_BOILER_TASK_ORDER_ISSUE_REPORT_VERSION"."ORDER_ID" IS '订单号';
+COMMENT ON COLUMN "PRESSURE2_BOILER_TASK_ORDER_ISSUE_REPORT_VERSION"."ORDER_ITEM_ID" IS '订单设备编号';
+COMMENT ON COLUMN "PRESSURE2_BOILER_TASK_ORDER_ISSUE_REPORT_VERSION"."REPORT_NO" IS '记录/报告编号';
+COMMENT ON COLUMN "PRESSURE2_BOILER_TASK_ORDER_ISSUE_REPORT_VERSION"."REPORT_TYPE" IS '100记录/200报告';
+COMMENT ON COLUMN "PRESSURE2_BOILER_TASK_ORDER_ISSUE_REPORT_VERSION"."REPORT_VERSION" IS '版本号';
+COMMENT ON COLUMN "PRESSURE2_BOILER_TASK_ORDER_ISSUE_REPORT_VERSION"."ISSUE_URL" IS '文件URL';
+COMMENT ON COLUMN "PRESSURE2_BOILER_TASK_ORDER_ISSUE_REPORT_VERSION"."CREATOR" IS '创建人';
+COMMENT ON COLUMN "PRESSURE2_BOILER_TASK_ORDER_ISSUE_REPORT_VERSION"."CREATE_TIME" IS '创建时间';
+COMMENT ON COLUMN "PRESSURE2_BOILER_TASK_ORDER_ISSUE_REPORT_VERSION"."UPDATER" IS '更新人';
+COMMENT ON COLUMN "PRESSURE2_BOILER_TASK_ORDER_ISSUE_REPORT_VERSION"."UPDATE_TIME" IS '更新时间';
+COMMENT ON COLUMN "PRESSURE2_BOILER_TASK_ORDER_ISSUE_REPORT_VERSION"."DELETED" IS '删除状态';
+
+CREATE TABLE "PRESSURE2_PIPE_TASK_ORDER_ISSUE_REPORT_VERSION"
+(
+    "ID" VARCHAR(64),
+    "ORDER_ID" VARCHAR(50),
+    "ORDER_ITEM_ID" VARCHAR(50),
+    "REPORT_NO" VARCHAR(50),
+    "REPORT_TYPE" INTEGER,
+    "REPORT_VERSION" INTEGER,
+    "ISSUE_URL" VARCHAR(50),
+    "CREATOR" VARCHAR(64 CHAR),
+"CREATE_TIME" TIMESTAMP(0) NOT NULL,
+"UPDATER" VARCHAR(64 CHAR),
+"UPDATE_TIME" TIMESTAMP(0) NOT NULL,
+"DELETED" BIT DEFAULT 0) STORAGE(ON "MAIN", CLUSTERBTR) ;
+
+COMMENT ON TABLE "PRESSURE2_PIPE_TASK_ORDER_ISSUE_REPORT_VERSION" IS '管道记录报告版本记录';
+COMMENT ON COLUMN "PRESSURE2_PIPE_TASK_ORDER_ISSUE_REPORT_VERSION"."ID" IS 'id';
+COMMENT ON COLUMN "PRESSURE2_PIPE_TASK_ORDER_ISSUE_REPORT_VERSION"."ORDER_ID" IS '订单号';
+COMMENT ON COLUMN "PRESSURE2_PIPE_TASK_ORDER_ISSUE_REPORT_VERSION"."ORDER_ITEM_ID" IS '订单设备编号';
+COMMENT ON COLUMN "PRESSURE2_PIPE_TASK_ORDER_ISSUE_REPORT_VERSION"."REPORT_NO" IS '记录/报告编号';
+COMMENT ON COLUMN "PRESSURE2_PIPE_TASK_ORDER_ISSUE_REPORT_VERSION"."REPORT_TYPE" IS '100记录/200报告';
+COMMENT ON COLUMN "PRESSURE2_PIPE_TASK_ORDER_ISSUE_REPORT_VERSION"."REPORT_VERSION" IS '版本号';
+COMMENT ON COLUMN "PRESSURE2_PIPE_TASK_ORDER_ISSUE_REPORT_VERSION"."ISSUE_URL" IS '文件URL';
+COMMENT ON COLUMN "PRESSURE2_PIPE_TASK_ORDER_ISSUE_REPORT_VERSION"."CREATOR" IS '创建人';
+COMMENT ON COLUMN "PRESSURE2_PIPE_TASK_ORDER_ISSUE_REPORT_VERSION"."CREATE_TIME" IS '创建时间';
+COMMENT ON COLUMN "PRESSURE2_PIPE_TASK_ORDER_ISSUE_REPORT_VERSION"."UPDATER" IS '更新人';
+COMMENT ON COLUMN "PRESSURE2_PIPE_TASK_ORDER_ISSUE_REPORT_VERSION"."UPDATE_TIME" IS '更新时间';
+COMMENT ON COLUMN "PRESSURE2_PIPE_TASK_ORDER_ISSUE_REPORT_VERSION"."DELETED" IS '删除状态';
+
+--已更新

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

@@ -160,6 +160,10 @@ public interface ErrorCodeConstants{
     ErrorCode TASK_ORDER_FILE_NOT_EXISTS = new ErrorCode(1077, "任务单附件不存在");
     ErrorCode TASK_ORDER_FILE_UPLOAD_FAIL = new ErrorCode(1078, "任务单附件上传失败");
 
+    ErrorCode BOILER_TASK_ORDER_ISSUE_REPORT_VERSION_NOT_EXISTS = new ErrorCode(1079, "锅炉记录报告版本记录不存在");
+
+    ErrorCode PIPE_TASK_ORDER_ISSUE_REPORT_VERSION_NOT_EXISTS = new ErrorCode(1080, "管道记录报告版本记录不存在");
+
     ErrorCode EQUIP_BOILER_NOT_EXISTS = new ErrorCode(2000, "锅炉设备不存在");
 
     ErrorCode BOILER_EQUIP_OPERATION_RECORD_NOT_EXISTS = new ErrorCode(2001, "锅炉操作记录不存在");

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

@@ -40,6 +40,30 @@ public class BoilerTaskOrderArchiveDetailRespVO implements Serializable {
     @Schema(description = "设备代码")
     private String equipCode;
 
+    @Schema(description = "完整记录/报告版本列表")
+    private List<IssueReportVersionVO> issueReportVersionList;
+
+    @Data
+    public static class IssueReportVersionVO implements Serializable {
+        @Serial
+        private static final long serialVersionUID = 1L;
+
+        @Schema(description = "记录/报告编号")
+        private String reportNo;
+
+        @Schema(description = "100记录/200报告")
+        private Integer reportType;
+
+        @Schema(description = "版本号")
+        private Integer reportVersion;
+
+        @Schema(description = "文件URL")
+        private String issueUrl;
+
+        @Schema(description = "创建时间(生效时间)")
+        private LocalDateTime createTime;
+    }
+
     @Data
     public static class TaskListFile implements Serializable {
         @Serial

+ 78 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/boilertaskorderissuereportversion/BoilerTaskOrderIssueReportVersionController.java

@@ -0,0 +1,78 @@
+package cn.start.tz.module.pressure2.controller.admin.boilertaskorderissuereportversion;
+
+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 java.util.*;
+import java.io.IOException;
+
+import cn.start.tz.framework.common.pojo.PageParam;
+import cn.start.tz.framework.common.pojo.PageResult;
+import cn.start.tz.framework.common.pojo.CommonResult;
+import cn.start.tz.framework.common.util.object.BeanUtils;
+import static cn.start.tz.framework.common.pojo.CommonResult.success;
+
+import cn.start.tz.framework.excel.core.util.ExcelUtils;
+
+import cn.start.tz.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.start.tz.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.start.tz.module.pressure2.controller.admin.boilertaskorderissuereportversion.vo.*;
+import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorderissuereportversion.BoilerTaskOrderIssueReportVersionDO;
+import cn.start.tz.module.pressure2.service.boilertaskorderissuereportversion.BoilerTaskOrderIssueReportVersionService;
+
+@Tag(name = "管理后台 - 锅炉记录报告版本记录")
+@RestController
+@RequestMapping("/pressure2/boiler-task-order-issue-report-version")
+@Validated
+public class BoilerTaskOrderIssueReportVersionController {
+
+    @Resource
+    private BoilerTaskOrderIssueReportVersionService boilerTaskOrderIssueReportVersionService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建锅炉记录报告版本记录")
+    public CommonResult<String> createBoilerTaskOrderIssueReportVersion(@Valid @RequestBody BoilerTaskOrderIssueReportVersionSaveReqVO createReqVO) {
+        return success(boilerTaskOrderIssueReportVersionService.createBoilerTaskOrderIssueReportVersion(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新锅炉记录报告版本记录")
+    public CommonResult<Boolean> updateBoilerTaskOrderIssueReportVersion(@Valid @RequestBody BoilerTaskOrderIssueReportVersionSaveReqVO updateReqVO) {
+        boilerTaskOrderIssueReportVersionService.updateBoilerTaskOrderIssueReportVersion(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除锅炉记录报告版本记录")
+    @Parameter(name = "id", description = "编号", required = true)
+    public CommonResult<Boolean> deleteBoilerTaskOrderIssueReportVersion(@RequestParam("id") String id) {
+        boilerTaskOrderIssueReportVersionService.deleteBoilerTaskOrderIssueReportVersion(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得锅炉记录报告版本记录")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    public CommonResult<BoilerTaskOrderIssueReportVersionRespVO> getBoilerTaskOrderIssueReportVersion(@RequestParam("id") String id) {
+        BoilerTaskOrderIssueReportVersionDO boilerTaskOrderIssueReportVersion = boilerTaskOrderIssueReportVersionService.getBoilerTaskOrderIssueReportVersion(id);
+        return success(BeanUtils.toBean(boilerTaskOrderIssueReportVersion, BoilerTaskOrderIssueReportVersionRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得锅炉记录报告版本记录分页")
+    public CommonResult<PageResult<BoilerTaskOrderIssueReportVersionRespVO>> getBoilerTaskOrderIssueReportVersionPage(@Valid BoilerTaskOrderIssueReportVersionPageReqVO pageReqVO) {
+        PageResult<BoilerTaskOrderIssueReportVersionDO> pageResult = boilerTaskOrderIssueReportVersionService.getBoilerTaskOrderIssueReportVersionPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, BoilerTaskOrderIssueReportVersionRespVO.class));
+    }
+
+
+}

+ 40 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/boilertaskorderissuereportversion/vo/BoilerTaskOrderIssueReportVersionPageReqVO.java

@@ -0,0 +1,40 @@
+package cn.start.tz.module.pressure2.controller.admin.boilertaskorderissuereportversion.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.start.tz.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.start.tz.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 锅炉记录报告版本记录分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class BoilerTaskOrderIssueReportVersionPageReqVO extends PageParam {
+
+    @Schema(description = "订单号", example = "13038")
+    private String orderId;
+
+    @Schema(description = "订单设备编号", example = "9754")
+    private String orderItemId;
+
+    @Schema(description = "记录/报告编号")
+    private String reportNo;
+
+    @Schema(description = "记录/报告", example = "1")
+    private Integer reportType;
+
+    @Schema(description = "版本号")
+    private Integer reportVersion;
+
+    @Schema(description = "文件URL", example = "https://www.iocoder.cn")
+    private String issueUrl;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 47 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/boilertaskorderissuereportversion/vo/BoilerTaskOrderIssueReportVersionRespVO.java

@@ -0,0 +1,47 @@
+package cn.start.tz.module.pressure2.controller.admin.boilertaskorderissuereportversion.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - 锅炉记录报告版本记录 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class BoilerTaskOrderIssueReportVersionRespVO {
+
+    @Schema(description = "id", example = "9762")
+    @ExcelProperty("id")
+    private String id;
+
+    @Schema(description = "订单号", example = "13038")
+    @ExcelProperty("订单号")
+    private String orderId;
+
+    @Schema(description = "订单设备编号", example = "9754")
+    @ExcelProperty("订单设备编号")
+    private String orderItemId;
+
+    @Schema(description = "记录/报告编号")
+    @ExcelProperty("记录/报告编号")
+    private Integer reportNo;
+
+    @Schema(description = "记录/报告", example = "1")
+    @ExcelProperty("记录/报告")
+    private Integer reportType;
+
+    @Schema(description = "版本号")
+    @ExcelProperty("版本号")
+    private String reportVersion;
+
+    @Schema(description = "文件URL", example = "https://www.iocoder.cn")
+    @ExcelProperty("文件URL")
+    private String issueUrl;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 33 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/boilertaskorderissuereportversion/vo/BoilerTaskOrderIssueReportVersionSaveReqVO.java

@@ -0,0 +1,33 @@
+package cn.start.tz.module.pressure2.controller.admin.boilertaskorderissuereportversion.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import jakarta.validation.constraints.*;
+
+@Schema(description = "管理后台 - 锅炉记录报告版本记录新增/修改 Request VO")
+@Data
+public class BoilerTaskOrderIssueReportVersionSaveReqVO {
+
+    @Schema(description = "id", example = "9762")
+    private String id;
+
+    @Schema(description = "订单号", example = "13038")
+    private String orderId;
+
+    @Schema(description = "订单设备编号", example = "9754")
+    private String orderItemId;
+
+    @Schema(description = "记录/报告编号")
+    private Integer reportNo;
+
+    @Schema(description = "记录/报告", example = "1")
+    private Integer reportType;
+
+    @Schema(description = "版本号")
+    private String reportVersion;
+
+    @Schema(description = "文件URL", example = "https://www.iocoder.cn")
+    private String issueUrl;
+
+}

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

@@ -39,6 +39,30 @@ public class PipeTaskOrderArchiveDetailRespVO implements Serializable {
     @Schema(description = "设备代码")
     private String equipCode;
 
+    @Schema(description = "完整记录/报告版本列表")
+    private List<IssueReportVersionVO> issueReportVersionList;
+
+    @Data
+    public static class IssueReportVersionVO implements Serializable {
+        @Serial
+        private static final long serialVersionUID = 1L;
+
+        @Schema(description = "记录/报告编号")
+        private String reportNo;
+
+        @Schema(description = "100记录/200报告")
+        private Integer reportType;
+
+        @Schema(description = "版本号")
+        private Integer reportVersion;
+
+        @Schema(description = "文件URL")
+        private String issueUrl;
+
+        @Schema(description = "创建时间(生效时间)")
+        private LocalDateTime createTime;
+    }
+
     @Data
     public static class TaskListFile implements Serializable {
         @Serial

+ 77 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/pipetaskorderissuereportversion/PipeTaskOrderIssueReportVersionController.java

@@ -0,0 +1,77 @@
+package cn.start.tz.module.pressure2.controller.admin.pipetaskorderissuereportversion;
+
+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 java.util.*;
+import java.io.IOException;
+
+import cn.start.tz.framework.common.pojo.PageParam;
+import cn.start.tz.framework.common.pojo.PageResult;
+import cn.start.tz.framework.common.pojo.CommonResult;
+import cn.start.tz.framework.common.util.object.BeanUtils;
+import static cn.start.tz.framework.common.pojo.CommonResult.success;
+
+import cn.start.tz.framework.excel.core.util.ExcelUtils;
+
+import cn.start.tz.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.start.tz.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.start.tz.module.pressure2.controller.admin.pipetaskorderissuereportversion.vo.*;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderissuereportversion.PipeTaskOrderIssueReportVersionDO;
+import cn.start.tz.module.pressure2.service.pipetaskorderissuereportversion.PipeTaskOrderIssueReportVersionService;
+
+@Tag(name = "管理后台 - 管道记录报告版本记录")
+@RestController
+@RequestMapping("/pressure2/pipe-task-order-issue-report-version")
+@Validated
+public class PipeTaskOrderIssueReportVersionController {
+
+    @Resource
+    private PipeTaskOrderIssueReportVersionService pipeTaskOrderIssueReportVersionService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建管道记录报告版本记录")
+    public CommonResult<String> createPipeTaskOrderIssueReportVersion(@Valid @RequestBody PipeTaskOrderIssueReportVersionSaveReqVO createReqVO) {
+        return success(pipeTaskOrderIssueReportVersionService.createPipeTaskOrderIssueReportVersion(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新管道记录报告版本记录")
+    public CommonResult<Boolean> updatePipeTaskOrderIssueReportVersion(@Valid @RequestBody PipeTaskOrderIssueReportVersionSaveReqVO updateReqVO) {
+        pipeTaskOrderIssueReportVersionService.updatePipeTaskOrderIssueReportVersion(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除管道记录报告版本记录")
+    @Parameter(name = "id", description = "编号", required = true)
+    public CommonResult<Boolean> deletePipeTaskOrderIssueReportVersion(@RequestParam("id") String id) {
+        pipeTaskOrderIssueReportVersionService.deletePipeTaskOrderIssueReportVersion(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得管道记录报告版本记录")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    public CommonResult<PipeTaskOrderIssueReportVersionRespVO> getPipeTaskOrderIssueReportVersion(@RequestParam("id") String id) {
+        PipeTaskOrderIssueReportVersionDO pipeTaskOrderIssueReportVersion = pipeTaskOrderIssueReportVersionService.getPipeTaskOrderIssueReportVersion(id);
+        return success(BeanUtils.toBean(pipeTaskOrderIssueReportVersion, PipeTaskOrderIssueReportVersionRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得管道记录报告版本记录分页")
+    public CommonResult<PageResult<PipeTaskOrderIssueReportVersionRespVO>> getPipeTaskOrderIssueReportVersionPage(@Valid PipeTaskOrderIssueReportVersionPageReqVO pageReqVO) {
+        PageResult<PipeTaskOrderIssueReportVersionDO> pageResult = pipeTaskOrderIssueReportVersionService.getPipeTaskOrderIssueReportVersionPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, PipeTaskOrderIssueReportVersionRespVO.class));
+    }
+
+}

+ 40 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/pipetaskorderissuereportversion/vo/PipeTaskOrderIssueReportVersionPageReqVO.java

@@ -0,0 +1,40 @@
+package cn.start.tz.module.pressure2.controller.admin.pipetaskorderissuereportversion.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.start.tz.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.start.tz.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 管道记录报告版本记录分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class PipeTaskOrderIssueReportVersionPageReqVO extends PageParam {
+
+    @Schema(description = "订单号", example = "31752")
+    private String orderId;
+
+    @Schema(description = "订单设备编号", example = "4898")
+    private String orderItemId;
+
+    @Schema(description = "记录/报告编号")
+    private String reportNo;
+
+    @Schema(description = "记录/报告", example = "1")
+    private Integer reportType;
+
+    @Schema(description = "版本号")
+    private Integer reportVersion;
+
+    @Schema(description = "文件URL", example = "https://www.iocoder.cn")
+    private String issueUrl;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 47 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/pipetaskorderissuereportversion/vo/PipeTaskOrderIssueReportVersionRespVO.java

@@ -0,0 +1,47 @@
+package cn.start.tz.module.pressure2.controller.admin.pipetaskorderissuereportversion.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - 管道记录报告版本记录 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class PipeTaskOrderIssueReportVersionRespVO {
+
+    @Schema(description = "id", example = "24167")
+    @ExcelProperty("id")
+    private String id;
+
+    @Schema(description = "订单号", example = "31752")
+    @ExcelProperty("订单号")
+    private String orderId;
+
+    @Schema(description = "订单设备编号", example = "4898")
+    @ExcelProperty("订单设备编号")
+    private String orderItemId;
+
+    @Schema(description = "记录/报告编号")
+    @ExcelProperty("记录/报告编号")
+    private String reportNo;
+
+    @Schema(description = "记录/报告", example = "1")
+    @ExcelProperty("记录/报告")
+    private Integer reportType;
+
+    @Schema(description = "版本号")
+    @ExcelProperty("版本号")
+    private Integer reportVersion;
+
+    @Schema(description = "文件URL", example = "https://www.iocoder.cn")
+    @ExcelProperty("文件URL")
+    private String issueUrl;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 33 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/pipetaskorderissuereportversion/vo/PipeTaskOrderIssueReportVersionSaveReqVO.java

@@ -0,0 +1,33 @@
+package cn.start.tz.module.pressure2.controller.admin.pipetaskorderissuereportversion.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import jakarta.validation.constraints.*;
+
+@Schema(description = "管理后台 - 管道记录报告版本记录新增/修改 Request VO")
+@Data
+public class PipeTaskOrderIssueReportVersionSaveReqVO {
+
+    @Schema(description = "id", example = "24167")
+    private String id;
+
+    @Schema(description = "订单号", example = "31752")
+    private String orderId;
+
+    @Schema(description = "订单设备编号", example = "4898")
+    private String orderItemId;
+
+    @Schema(description = "记录/报告编号")
+    private String reportNo;
+
+    @Schema(description = "记录/报告", example = "1")
+    private Integer reportType;
+
+    @Schema(description = "版本号")
+    private Integer reportVersion;
+
+    @Schema(description = "文件URL", example = "https://www.iocoder.cn")
+    private String issueUrl;
+
+}

+ 5 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/dataobject/boilertaskorder/BoilerTaskOrderDO.java

@@ -344,4 +344,9 @@ public class BoilerTaskOrderDO extends BaseDO {
     private Integer noTaxPaymentStatus;
 
     private LocalDateTime noTaxPayTime;
+
+    /**
+     * 记录pdfUrl
+     */
+    private String enterPdfUrl;
 }

+ 55 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/dataobject/boilertaskorderissuereportversion/BoilerTaskOrderIssueReportVersionDO.java

@@ -0,0 +1,55 @@
+package cn.start.tz.module.pressure2.dal.dataobject.boilertaskorderissuereportversion;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import cn.start.tz.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 锅炉记录报告版本记录 DO
+ *
+ * @author 特种管理员
+ */
+@TableName("pressure2_boiler_task_order_issue_report_version")
+@KeySequence("pressure2_boiler_task_order_issue_report_version_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class BoilerTaskOrderIssueReportVersionDO extends BaseDO {
+
+    /**
+     * id
+     */
+    @TableId(value = "id", type = IdType.ASSIGN_UUID)
+    private String id;
+    /**
+     * 订单号
+     */
+    private String orderId;
+    /**
+     * 订单设备编号
+     */
+    private String orderItemId;
+    /**
+     * 记录/报告编号
+     */
+    private String reportNo;
+    /**
+     * 100记录/200报告
+     */
+    private Integer reportType;
+    /**
+     * 版本号
+     */
+    private Integer reportVersion;
+    /**
+     * 文件URL
+     */
+    private String issueUrl;
+
+}

+ 5 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/dataobject/boilertaskorderitem/BoilerTaskOrderItemDO.java

@@ -97,4 +97,9 @@ public class BoilerTaskOrderItemDO extends BaseDO {
      * 检验方案审批时间(首次审批通过时记录)
      */
     private LocalDateTime schemeRatifyTime;
+
+    /**
+     * 记录pdfUrl
+     */
+    private String enterPdfUrl;
 }

+ 4 - 1
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/dataobject/pipetaskorder/PipeTaskOrderDO.java

@@ -364,5 +364,8 @@ public class PipeTaskOrderDO extends BaseDO {
      */
     private String isSync;
 
-
+    /**
+     * 记录pdfUrl
+     */
+    private String enterPdfUrl;
 }

+ 55 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/dataobject/pipetaskorderissuereportversion/PipeTaskOrderIssueReportVersionDO.java

@@ -0,0 +1,55 @@
+package cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderissuereportversion;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import cn.start.tz.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 管道记录报告版本记录 DO
+ *
+ * @author 特种管理员
+ */
+@TableName("pressure2_pipe_task_order_issue_report_version")
+@KeySequence("pressure2_pipe_task_order_issue_report_version_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class PipeTaskOrderIssueReportVersionDO extends BaseDO {
+
+    /**
+     * id
+     */
+    @TableId(value = "id", type = IdType.ASSIGN_UUID)
+    private String id;
+    /**
+     * 订单号
+     */
+    private String orderId;
+    /**
+     * 订单设备编号
+     */
+    private String orderItemId;
+    /**
+     * 记录/报告编号
+     */
+    private String reportNo;
+    /**
+     * 100记录/200报告
+     */
+    private Integer reportType;
+    /**
+     * 版本号
+     */
+    private Integer reportVersion;
+    /**
+     * 文件URL
+     */
+    private String issueUrl;
+
+}

+ 5 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/dataobject/pipetaskorderitem/PipeTaskOrderItemDO.java

@@ -87,4 +87,9 @@ public class PipeTaskOrderItemDO extends BaseDO {
     private Boolean isSuspend;
 
     private LocalDateTime suspendTime;
+
+    /**
+     * 记录pdfUrl
+     */
+    private String enterPdfUrl;
 }

+ 32 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/mysql/boilertaskorderissuereportversion/BoilerTaskOrderIssueReportVersionMapper.java

@@ -0,0 +1,32 @@
+package cn.start.tz.module.pressure2.dal.mysql.boilertaskorderissuereportversion;
+
+import java.util.*;
+
+import cn.start.tz.framework.common.pojo.PageResult;
+import cn.start.tz.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.start.tz.framework.mybatis.core.mapper.BaseMapperX;
+import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorderissuereportversion.BoilerTaskOrderIssueReportVersionDO;
+import org.apache.ibatis.annotations.Mapper;
+import cn.start.tz.module.pressure2.controller.admin.boilertaskorderissuereportversion.vo.*;
+
+/**
+ * 锅炉记录报告版本记录 Mapper
+ *
+ * @author 特种管理员
+ */
+@Mapper
+public interface BoilerTaskOrderIssueReportVersionMapper extends BaseMapperX<BoilerTaskOrderIssueReportVersionDO> {
+
+    default PageResult<BoilerTaskOrderIssueReportVersionDO> selectPage(BoilerTaskOrderIssueReportVersionPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<BoilerTaskOrderIssueReportVersionDO>()
+                .eqIfPresent(BoilerTaskOrderIssueReportVersionDO::getOrderId, reqVO.getOrderId())
+                .eqIfPresent(BoilerTaskOrderIssueReportVersionDO::getOrderItemId, reqVO.getOrderItemId())
+                .eqIfPresent(BoilerTaskOrderIssueReportVersionDO::getReportNo, reqVO.getReportNo())
+                .eqIfPresent(BoilerTaskOrderIssueReportVersionDO::getReportType, reqVO.getReportType())
+                .eqIfPresent(BoilerTaskOrderIssueReportVersionDO::getReportVersion, reqVO.getReportVersion())
+                .eqIfPresent(BoilerTaskOrderIssueReportVersionDO::getIssueUrl, reqVO.getIssueUrl())
+                .betweenIfPresent(BoilerTaskOrderIssueReportVersionDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(BoilerTaskOrderIssueReportVersionDO::getId));
+    }
+
+}

+ 32 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/mysql/pipetaskorderissuereportversion/PipeTaskOrderIssueReportVersionMapper.java

@@ -0,0 +1,32 @@
+package cn.start.tz.module.pressure2.dal.mysql.pipetaskorderissuereportversion;
+
+import java.util.*;
+
+import cn.start.tz.framework.common.pojo.PageResult;
+import cn.start.tz.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.start.tz.framework.mybatis.core.mapper.BaseMapperX;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderissuereportversion.PipeTaskOrderIssueReportVersionDO;
+import org.apache.ibatis.annotations.Mapper;
+import cn.start.tz.module.pressure2.controller.admin.pipetaskorderissuereportversion.vo.*;
+
+/**
+ * 管道记录报告版本记录 Mapper
+ *
+ * @author 特种管理员
+ */
+@Mapper
+public interface PipeTaskOrderIssueReportVersionMapper extends BaseMapperX<PipeTaskOrderIssueReportVersionDO> {
+
+    default PageResult<PipeTaskOrderIssueReportVersionDO> selectPage(PipeTaskOrderIssueReportVersionPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<PipeTaskOrderIssueReportVersionDO>()
+                .eqIfPresent(PipeTaskOrderIssueReportVersionDO::getOrderId, reqVO.getOrderId())
+                .eqIfPresent(PipeTaskOrderIssueReportVersionDO::getOrderItemId, reqVO.getOrderItemId())
+                .eqIfPresent(PipeTaskOrderIssueReportVersionDO::getReportNo, reqVO.getReportNo())
+                .eqIfPresent(PipeTaskOrderIssueReportVersionDO::getReportType, reqVO.getReportType())
+                .eqIfPresent(PipeTaskOrderIssueReportVersionDO::getReportVersion, reqVO.getReportVersion())
+                .eqIfPresent(PipeTaskOrderIssueReportVersionDO::getIssueUrl, reqVO.getIssueUrl())
+                .betweenIfPresent(PipeTaskOrderIssueReportVersionDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(PipeTaskOrderIssueReportVersionDO::getId));
+    }
+
+}

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

@@ -248,4 +248,7 @@ public interface BoilerTaskOrderService extends IService<BoilerTaskOrderDO>  {
      * @return 结果
      */
     BoilerTaskOrderItemDetailsVO getTaskOrderItemById(String orderItemId);
+
+    byte[] getRecordOutputStreamMerge(String orderItemId);
+
 }

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

@@ -4451,6 +4451,9 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
             }
         });
 
+        //所有检验项目都校核通过生成所有记录的PDF
+        boilerTaskOrderIssueReportService.generateAllRecordIssueUrl(taskOrderItemReport.getOrderItemId());
+
     }
 
     @Override
@@ -6723,6 +6726,7 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
      * 记录合并
      * @return
      */
+    @Override
     public byte[] getRecordOutputStreamMerge(String orderItemId) {
 
 //        List<BoilerTaskOrderItemReportDO> taskOrderReportDOS = taskOrderItemReportMapper.selectList(new LambdaQueryWrapperX<BoilerTaskOrderItemReportDO>().

+ 3 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorderissuereport/BoilerTaskOrderIssueReportService.java

@@ -100,4 +100,7 @@ public interface BoilerTaskOrderIssueReportService extends IService<BoilerTaskOr
     //生成单个报告的pdf
     void generateReportIssueUrl(String reportId);
 
+    //记录校核后生成所有记录的总PDF
+    void generateAllRecordIssueUrl(String orderItemId);
+
 }

+ 82 - 2
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorderissuereport/BoilerTaskOrderIssueReportServiceImpl.java

@@ -24,8 +24,8 @@ import cn.start.tz.module.member.api.user.dto.MemberUserReqVo;
 import cn.start.tz.module.member.api.user.dto.MemberUserRespDTO;
 import cn.start.tz.module.member.api.user.dto.SendAppMpMessageReqDTO;
 import cn.start.tz.module.member.api.user.dto.WxMpTemplateDataReqDto;
-import cn.start.tz.module.pressure.enums.TaskOrderItemReportTypeEnum;
-import cn.start.tz.module.pressure.enums.TaskOrderStatusEnum;
+import cn.start.tz.module.pressure2.enums.TaskOrderItemReportTypeEnum;
+import cn.start.tz.module.pressure2.enums.TaskOrderStatusEnum;
 import cn.start.tz.module.pressure2.constant.TemplateIdConstants;
 import cn.start.tz.module.pressure2.controller.admin.boilertaskorder.vo.*;
 import cn.start.tz.module.pressure2.controller.admin.boilertaskorderfollowrecord.vo.BoilerTaskOrderFollowRecordRespVO;
@@ -84,6 +84,9 @@ import cn.start.tz.module.pressure2.dal.mysql.usesignreport.UseSignReportMapper;
 import cn.start.tz.module.pressure2.enums.EnvConstants;
 import cn.start.tz.module.pressure2.framework.thread.CommonThread;
 import cn.start.tz.module.pressure2.service.boilertaskorder.BoilerTaskOrderService;
+import cn.start.tz.module.pressure2.service.boilertaskorderissuereportversion.BoilerTaskOrderIssueReportVersionService;
+import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderissuereportversion.BoilerTaskOrderIssueReportVersionMapper;
+import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorderissuereportversion.BoilerTaskOrderIssueReportVersionDO;
 import cn.start.tz.module.pressure2.service.boilertaskorderitemreportrecord.BoilerTaskOrderItemReportRecordService;
 import cn.start.tz.module.pressure2.service.boilertaskorderitemreportversion.BoilerTaskOrderItemReportVersionService;
 import cn.start.tz.module.pressure2.service.boilertaskordersignfile.BoilerTaskOrderSignFileService;
@@ -139,6 +142,7 @@ import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.ChronoUnit;
 import java.util.*;
+import java.util.concurrent.CompletableFuture;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -226,6 +230,9 @@ public class BoilerTaskOrderIssueReportServiceImpl extends ServiceImpl<BoilerTas
     @Resource
     private UseSignReportMapper useSignReportMapper;
 
+    @Resource
+    private BoilerTaskOrderIssueReportVersionMapper boilerTaskOrderIssueReportVersionMapper;
+
     @Resource
     private BoilerConnectTbServiceMapper boilerConnectTbServiceMapper;
 
@@ -310,6 +317,9 @@ public class BoilerTaskOrderIssueReportServiceImpl extends ServiceImpl<BoilerTas
     @Resource
     private PushTaskOrderService pushTaskOrderService;
 
+    @Resource
+    private BoilerTaskOrderIssueReportVersionService taskOrderIssueReportVersionService;
+
     @Override
     public String createBoilerTaskOrderIssueReport(BoilerTaskOrderIssueReportSaveReqVO createReqVO) {
         // 插入
@@ -1896,6 +1906,12 @@ public class BoilerTaskOrderIssueReportServiceImpl extends ServiceImpl<BoilerTas
                             }
                         }
                     }
+
+                    if (taskOrderItemDO.getTaskStatus() != null && taskOrderItemDO.getTaskStatus().equals(TaskOrderStatusEnum.REPORT_FINISH.getStatus())){
+                        //办结后生成pdf时需要生成报告版本信息
+                        taskOrderIssueReportVersionService.generateIssueReportVersion(taskOrderItemDO.getId(), fileUrl, 200);
+                    }
+
                     updateOb.setId(taskOrderItemDO.getId());
                     updateOb.setIssueUrl(fileUrl);
                     taskOrderItemMapper.updateById(updateOb);
@@ -1968,6 +1984,48 @@ public class BoilerTaskOrderIssueReportServiceImpl extends ServiceImpl<BoilerTas
 
     }
 
+    @Override
+    public void generateAllRecordIssueUrl(String orderItemId) {
+
+        BoilerTaskOrderItemDO taskOrderItemDO = taskOrderItemMapper.selectById(orderItemId);
+        if (taskOrderItemDO != null){
+
+            List<BoilerTaskOrderItemReportDO> taskOrderItemReportDOS = taskOrderItemReportMapper.selectList(new LambdaQueryWrapperX<BoilerTaskOrderItemReportDO>()
+                    .eq(BoilerTaskOrderItemReportDO::getOrderItemId, orderItemId)
+                    .in(BoilerTaskOrderItemReportDO::getReportType, TaskOrderItemReportTypeEnum.MAIN_REPORT.getType(),
+                            TaskOrderItemReportTypeEnum.SUB_REPORT.getType(),TaskOrderItemReportTypeEnum.SOLO_TRIP_REPORT.getType()));
+
+            // 判断是否有taskStatus小于报告编制的状态
+            boolean hasStatusLessThanReportPrepare = taskOrderItemReportDOS.stream()
+                    .anyMatch(report -> report.getTaskStatus() < TaskOrderStatusEnum.REPORT_PREPARE.getStatus());
+            if (hasStatusLessThanReportPrepare){
+                return;
+            }
+
+            CompletableFuture.runAsync(() -> {
+                try {
+                    log.info("记录校核全通过生成总记录PDF");
+
+                    BoilerTaskOrderItemDO updateOb = new BoilerTaskOrderItemDO();
+                    updateOb.setId(orderItemId);
+
+                    byte[] pdfRecord = taskOrderService.getRecordOutputStreamMerge(orderItemId);
+                    String fileUrl = fileApi.createFile(pdfRecord);
+                    updateOb.setEnterPdfUrl(fileUrl);
+                    taskOrderItemMapper.updateById(updateOb);
+
+                    //增加总记录PDF版本
+                    taskOrderIssueReportVersionService.generateIssueReportVersion(orderItemId, fileUrl, 100);
+
+                } catch (Exception e) {
+                    log.error("记录校核全通过生成总记录PDF错误,{}", e.getMessage());
+                }
+            });
+
+        }
+
+    }
+
     @Override
     public PageResult<BoilerOrderItemPageRespVO> orderItemReportConclusionPage(BoilerTaskOrderPageReqVO pageReqVO) {
         pageReqVO.setInReportTypes(Lists.newArrayList(TaskOrderItemReportTypeEnum.MAIN_REPORT.getType(),
@@ -2125,6 +2183,7 @@ public class BoilerTaskOrderIssueReportServiceImpl extends ServiceImpl<BoilerTas
         LambdaQueryWrapper<BoilerTaskOrderItemReportDO> queryWrapper = new LambdaQueryWrapperX<>();
         queryWrapper.eq(BoilerTaskOrderItemReportDO::getOrderItemId, orderItemId);
         queryWrapper.eq(BoilerTaskOrderItemReportDO::getTaskStatus, 800);
+        queryWrapper.orderByAsc(BoilerTaskOrderItemReportDO::getSort);
         List<BoilerTaskOrderItemReportDO> taskOrderItemReportDOS = taskOrderItemReportMapper.selectList(queryWrapper);
         if (CollUtil.isNotEmpty(taskOrderItemReportDOS)) {
             //任务单相关文件
@@ -2496,6 +2555,27 @@ public class BoilerTaskOrderIssueReportServiceImpl extends ServiceImpl<BoilerTas
         taskOrderArchiveDetail.setImages(allImages);
         taskOrderArchiveDetail.setVideos(allVideos);
         taskOrderArchiveDetail.setAttachments(allAttachments);
+
+        // 查询完整记录/报告版本列表,按 reportType 和创建时间排序
+        List<BoilerTaskOrderIssueReportVersionDO> versionDOs = boilerTaskOrderIssueReportVersionMapper.selectList(
+                new LambdaQueryWrapperX<BoilerTaskOrderIssueReportVersionDO>()
+                        .eq(BoilerTaskOrderIssueReportVersionDO::getOrderItemId, orderItemId)
+                        .orderByAsc(BoilerTaskOrderIssueReportVersionDO::getReportType)
+                        .orderByDesc(BoilerTaskOrderIssueReportVersionDO::getCreateTime));
+        if (CollUtil.isNotEmpty(versionDOs)) {
+            List<BoilerTaskOrderArchiveDetailRespVO.IssueReportVersionVO> versionList = versionDOs.stream()
+                    .map(vo -> {
+                        BoilerTaskOrderArchiveDetailRespVO.IssueReportVersionVO v = new BoilerTaskOrderArchiveDetailRespVO.IssueReportVersionVO();
+                        v.setReportNo(vo.getReportNo());
+                        v.setReportType(vo.getReportType());
+                        v.setReportVersion(vo.getReportVersion());
+                        v.setIssueUrl(vo.getIssueUrl());
+                        v.setCreateTime(vo.getCreateTime());
+                        return v;
+                    }).collect(Collectors.toList());
+            taskOrderArchiveDetail.setIssueReportVersionList(versionList);
+        }
+
         return taskOrderArchiveDetail;
     }
 

+ 58 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorderissuereportversion/BoilerTaskOrderIssueReportVersionService.java

@@ -0,0 +1,58 @@
+package cn.start.tz.module.pressure2.service.boilertaskorderissuereportversion;
+
+import java.util.*;
+import jakarta.validation.*;
+import cn.start.tz.module.pressure2.controller.admin.boilertaskorderissuereportversion.vo.*;
+import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorderissuereportversion.BoilerTaskOrderIssueReportVersionDO;
+import cn.start.tz.framework.common.pojo.PageResult;
+import cn.start.tz.framework.common.pojo.PageParam;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 锅炉记录报告版本记录 Service 接口
+ *
+ * @author 特种管理员
+ */
+public interface BoilerTaskOrderIssueReportVersionService extends IService<BoilerTaskOrderIssueReportVersionDO>  {
+
+    /**
+     * 创建锅炉记录报告版本记录
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    String createBoilerTaskOrderIssueReportVersion(@Valid BoilerTaskOrderIssueReportVersionSaveReqVO createReqVO);
+
+    /**
+     * 更新锅炉记录报告版本记录
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateBoilerTaskOrderIssueReportVersion(@Valid BoilerTaskOrderIssueReportVersionSaveReqVO updateReqVO);
+
+    /**
+     * 删除锅炉记录报告版本记录
+     *
+     * @param id 编号
+     */
+    void deleteBoilerTaskOrderIssueReportVersion(String id);
+
+    /**
+     * 获得锅炉记录报告版本记录
+     *
+     * @param id 编号
+     * @return 锅炉记录报告版本记录
+     */
+    BoilerTaskOrderIssueReportVersionDO getBoilerTaskOrderIssueReportVersion(String id);
+
+    /**
+     * 获得锅炉记录报告版本记录分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 锅炉记录报告版本记录分页
+     */
+    PageResult<BoilerTaskOrderIssueReportVersionDO> getBoilerTaskOrderIssueReportVersionPage(BoilerTaskOrderIssueReportVersionPageReqVO pageReqVO);
+
+    void generateIssueReportVersion(String orderItemId,String issueUrl,Integer reportType);
+
+}

+ 116 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorderissuereportversion/BoilerTaskOrderIssueReportVersionServiceImpl.java

@@ -0,0 +1,116 @@
+package cn.start.tz.module.pressure2.service.boilertaskorderissuereportversion;
+
+import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorderitem.BoilerTaskOrderItemDO;
+import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitem.BoilerTaskOrderItemMapper;
+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.util.*;
+import cn.start.tz.module.pressure2.controller.admin.boilertaskorderissuereportversion.vo.*;
+import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorderissuereportversion.BoilerTaskOrderIssueReportVersionDO;
+import cn.start.tz.framework.common.pojo.PageResult;
+import cn.start.tz.framework.common.pojo.PageParam;
+import cn.start.tz.framework.common.util.object.BeanUtils;
+import cn.start.tz.framework.common.util.string.StrUtils;
+import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderissuereportversion.BoilerTaskOrderIssueReportVersionMapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import cn.hutool.core.collection.CollUtil;
+
+import static cn.start.tz.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.start.tz.module.pressure2.enums.ErrorCodeConstants.*;
+
+/**
+ * 锅炉记录报告版本记录 Service 实现类
+ *
+ * @author 特种管理员
+ */
+@Service
+@Validated
+public class BoilerTaskOrderIssueReportVersionServiceImpl extends ServiceImpl<BoilerTaskOrderIssueReportVersionMapper, BoilerTaskOrderIssueReportVersionDO> implements BoilerTaskOrderIssueReportVersionService {
+
+    @Resource
+    private BoilerTaskOrderIssueReportVersionMapper boilerTaskOrderIssueReportVersionMapper;
+
+    @Resource
+    private BoilerTaskOrderItemMapper taskOrderItemMapper;
+
+    @Override
+    public String createBoilerTaskOrderIssueReportVersion(BoilerTaskOrderIssueReportVersionSaveReqVO createReqVO) {
+        // 插入
+        BoilerTaskOrderIssueReportVersionDO boilerTaskOrderIssueReportVersion = BeanUtils.toBean(createReqVO, BoilerTaskOrderIssueReportVersionDO.class);
+        boilerTaskOrderIssueReportVersionMapper.insert(boilerTaskOrderIssueReportVersion);
+        // 返回
+        return boilerTaskOrderIssueReportVersion.getId();
+    }
+
+    @Override
+    public void updateBoilerTaskOrderIssueReportVersion(BoilerTaskOrderIssueReportVersionSaveReqVO updateReqVO) {
+        // 校验存在
+        validateBoilerTaskOrderIssueReportVersionExists(updateReqVO.getId());
+        // 更新
+        BoilerTaskOrderIssueReportVersionDO updateObj = BeanUtils.toBean(updateReqVO, BoilerTaskOrderIssueReportVersionDO.class);
+        boilerTaskOrderIssueReportVersionMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteBoilerTaskOrderIssueReportVersion(String id) {
+        // 校验存在
+        validateBoilerTaskOrderIssueReportVersionExists(id);
+        // 删除
+        boilerTaskOrderIssueReportVersionMapper.deleteById(id);
+    }
+
+    private void validateBoilerTaskOrderIssueReportVersionExists(String id) {
+        if (boilerTaskOrderIssueReportVersionMapper.selectById(id) == null) {
+            throw exception(BOILER_TASK_ORDER_ISSUE_REPORT_VERSION_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public BoilerTaskOrderIssueReportVersionDO getBoilerTaskOrderIssueReportVersion(String id) {
+        return boilerTaskOrderIssueReportVersionMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<BoilerTaskOrderIssueReportVersionDO> getBoilerTaskOrderIssueReportVersionPage(BoilerTaskOrderIssueReportVersionPageReqVO pageReqVO) {
+        return boilerTaskOrderIssueReportVersionMapper.selectPage(pageReqVO);
+    }
+
+    @Override
+    public void generateIssueReportVersion(String orderItemId,String issueUrl,Integer reportType) {
+
+        BoilerTaskOrderItemDO taskOrderItemDO = taskOrderItemMapper.selectById(orderItemId);
+        if (taskOrderItemDO != null) {
+
+            //获取最新版本号
+            List<BoilerTaskOrderIssueReportVersionDO> versionList = boilerTaskOrderIssueReportVersionMapper.selectList(
+                    new LambdaQueryWrapper<BoilerTaskOrderIssueReportVersionDO>()
+                            .eq(BoilerTaskOrderIssueReportVersionDO::getOrderItemId, orderItemId)
+                            .eq(BoilerTaskOrderIssueReportVersionDO::getReportType, reportType)
+                            .orderByDesc(BoilerTaskOrderIssueReportVersionDO::getCreateTime));
+            int nextVersion = 1;
+            if (CollUtil.isNotEmpty(versionList)) {
+                Integer latestVersion = versionList.get(0).getReportVersion();
+                if (latestVersion != null) {
+                    nextVersion = latestVersion + 1;
+                }
+            }
+
+            BoilerTaskOrderIssueReportVersionDO issueReportVersion = new BoilerTaskOrderIssueReportVersionDO();
+            issueReportVersion.setIssueUrl(issueUrl);
+            issueReportVersion.setReportVersion(nextVersion);
+            issueReportVersion.setOrderItemId(orderItemId);
+            issueReportVersion.setReportType(reportType);
+            issueReportVersion.setOrderId(taskOrderItemDO.getOrderId());
+            issueReportVersion.setReportNo(taskOrderItemDO.getReportNo());
+            boilerTaskOrderIssueReportVersionMapper.insert(issueReportVersion);
+
+        }
+
+    }
+
+
+}

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

@@ -230,4 +230,7 @@ public interface PipeTaskOrderService extends IService<PipeTaskOrderDO>  {
      * @return 结果
      */
     PipeTaskOrderItemDetailsVO getTaskOrderItemById(String orderItemId);
+
+    byte[] getRecordOutputStreamMerge(String orderId);
+
 }

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

@@ -158,6 +158,7 @@ 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.pipetaskorderinput.PipeTaskOrderInputService;
 import cn.start.tz.module.pressure2.service.pipetaskorderissuereport.PipeTaskOrderIssueReportService;
+import cn.start.tz.module.pressure2.service.pipetaskorderissuereportversion.PipeTaskOrderIssueReportVersionService;
 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;
@@ -308,6 +309,9 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
     @Resource
     private PipeTaskOrderUserMapper pipeTaskOrderUserMapper;
 
+    @Resource
+    private PipeTaskOrderIssueReportVersionService taskOrderIssueReportVersionService;
+
     @Resource
     private PipeAcceptOrderUserMapper pipeAcceptOrderUserMapper;
 
@@ -3278,6 +3282,9 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
             }
         });
 
+        //所有检验项目都校核通过生成所有记录的PDF
+        pipeTaskOrderIssueReportService.generateAllRecordIssueUrl(taskOrderItemReport.getOrderId());
+
     }
 
     @Override
@@ -5708,6 +5715,7 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
      * 合并记录pdf
      * @return
      */
+    @Override
     public byte[] getRecordOutputStreamMerge(String orderId) {
 
 //        List<PipeTaskOrderItemReportDO> taskOrderReportDOS = taskOrderItemReportMapper.selectList(new LambdaQueryWrapperX<PipeTaskOrderItemReportDO>().

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

@@ -113,4 +113,6 @@ public interface PipeTaskOrderIssueReportService extends IService<PipeTaskOrderI
     //生成单个报告的pdf
     void generateReportIssueUrl(String reportId);
 
+    //记录校核后生成所有记录的总PDF
+    void generateAllRecordIssueUrl(String orderId);
 }

+ 81 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorderissuereport/PipeTaskOrderIssueReportServiceImpl.java

@@ -94,6 +94,9 @@ import cn.start.tz.module.pressure2.service.boilertaskordersignfile.BoilerTaskOr
 import cn.start.tz.module.pressure2.service.dynamictbins.DynamicTbInsService;
 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.pipetaskorderissuereportversion.PipeTaskOrderIssueReportVersionService;
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderissuereportversion.PipeTaskOrderIssueReportVersionMapper;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderissuereportversion.PipeTaskOrderIssueReportVersionDO;
 import cn.start.tz.module.pressure2.service.pipetaskorderitemreportrecord.PipeTaskOrderItemReportRecordService;
 import cn.start.tz.module.pressure2.service.pipetaskorderitemreportversion.PipeTaskOrderItemReportVersionService;
 import cn.start.tz.module.pressure2.service.pushtaskorder.PushTaskOrderService;
@@ -136,6 +139,7 @@ import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
+import java.util.concurrent.CompletableFuture;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -221,6 +225,9 @@ public class PipeTaskOrderIssueReportServiceImpl extends ServiceImpl<PipeTaskOrd
     @Resource
     private UseSignReportMapper useSignReportMapper;
 
+    @Resource
+    private PipeTaskOrderIssueReportVersionMapper pipeTaskOrderIssueReportVersionMapper;
+
     @Resource
     private BoilerConnectTbServiceMapper boilerConnectTbServiceMapper;
 
@@ -302,6 +309,9 @@ public class PipeTaskOrderIssueReportServiceImpl extends ServiceImpl<PipeTaskOrd
     @Resource
     private PushTaskOrderService pushTaskOrderService;
 
+    @Resource
+    private PipeTaskOrderIssueReportVersionService taskOrderIssueReportVersionService;
+
     @Override
     public String createPipeTaskOrderIssueReport(PipeTaskOrderIssueReportSaveReqVO createReqVO) {
         // 插入
@@ -1997,10 +2007,17 @@ public class PipeTaskOrderIssueReportServiceImpl extends ServiceImpl<PipeTaskOrd
                             }
                         }
                     }
+
                     updateOb.setId(taskOrderItemDO.getId());
                     updateOb.setIssueUrl(fileUrl);
                     taskOrderItemMapper.updateById(updateOb);
                 }
+
+                if (taskOrderDO.getTaskStatus() != null && taskOrderDO.getTaskStatus().equals(TaskOrderStatusEnum.REPORT_FINISH.getStatus())){
+                    //办结后生成pdf时需要生成报告版本信息
+                    taskOrderIssueReportVersionService.generateIssueReportVersion(taskOrderDO.getId(), fileUrl, 200);
+                }
+
             }
         } catch (Exception e) {
             log.error("生成任务单设备报告失败", e);
@@ -2062,6 +2079,48 @@ public class PipeTaskOrderIssueReportServiceImpl extends ServiceImpl<PipeTaskOrd
 
     }
 
+    @Override
+    public void generateAllRecordIssueUrl(String orderId) {
+
+        PipeTaskOrderDO taskOrderDO = taskOrderMapper.selectById(orderId);
+        if (taskOrderDO != null){
+
+            List<PipeTaskOrderItemReportDO> taskOrderItemReportDOS = taskOrderItemReportMapper.selectList(new LambdaQueryWrapperX<PipeTaskOrderItemReportDO>()
+                    .eq(PipeTaskOrderItemReportDO::getOrderId, orderId)
+                    .in(PipeTaskOrderItemReportDO::getReportType, TaskOrderItemReportTypeEnum.MAIN_REPORT.getType(),
+                            TaskOrderItemReportTypeEnum.SUB_REPORT.getType(),TaskOrderItemReportTypeEnum.SOLO_TRIP_REPORT.getType()));
+
+            // 判断是否有taskStatus小于报告编制的状态
+            boolean hasStatusLessThanReportPrepare = taskOrderItemReportDOS.stream()
+                    .anyMatch(report -> report.getTaskStatus() < TaskOrderStatusEnum.REPORT_PREPARE.getStatus());
+            if (hasStatusLessThanReportPrepare){
+                return;
+            }
+
+            CompletableFuture.runAsync(() -> {
+                try {
+                    log.info("记录校核全通过生成总记录PDF");
+
+                    PipeTaskOrderDO updateOb = new PipeTaskOrderDO();
+                    updateOb.setId(orderId);
+
+                    byte[] pdfRecord = taskOrderService.getRecordOutputStreamMerge(orderId);
+                    String fileUrl = fileApi.createFile(pdfRecord);
+                    updateOb.setEnterPdfUrl(fileUrl);
+                    taskOrderMapper.updateById(updateOb);
+
+                    //增加总记录PDF版本
+                    taskOrderIssueReportVersionService.generateIssueReportVersion(orderId, fileUrl, 100);
+
+                } catch (Exception e) {
+                    log.error("记录校核全通过生成总记录PDF错误,{}", e.getMessage());
+                }
+            });
+
+        }
+
+    }
+
     @Override
     public PageResult<PipeTaskOrderRespVO> archivePage(PipeTaskOrderPageReqVO pageReqVO) {
 
@@ -2173,6 +2232,7 @@ public class PipeTaskOrderIssueReportServiceImpl extends ServiceImpl<PipeTaskOrd
         LambdaQueryWrapper<PipeTaskOrderItemReportDO> queryWrapper = new LambdaQueryWrapperX<>();
         queryWrapper.eq(PipeTaskOrderItemReportDO::getOrderId, taskOrderDO.getId());
         queryWrapper.eq(PipeTaskOrderItemReportDO::getTaskStatus, 800);
+        queryWrapper.orderByAsc(PipeTaskOrderItemReportDO::getSort);
         List<PipeTaskOrderItemReportDO> taskOrderItemReportDOS = taskOrderItemReportMapper.selectList(queryWrapper);
         if (CollUtil.isNotEmpty(taskOrderItemReportDOS)) {
 
@@ -2554,6 +2614,27 @@ public class PipeTaskOrderIssueReportServiceImpl extends ServiceImpl<PipeTaskOrd
         taskOrderArchiveDetail.setImages(allImages);
         taskOrderArchiveDetail.setVideos(allVideos);
         taskOrderArchiveDetail.setAttachments(allAttachments);
+
+        // 查询完整记录/报告版本列表,按 reportType 和创建时间排序
+        List<PipeTaskOrderIssueReportVersionDO> versionDOs = pipeTaskOrderIssueReportVersionMapper.selectList(
+                new LambdaQueryWrapperX<PipeTaskOrderIssueReportVersionDO>()
+                        .eq(PipeTaskOrderIssueReportVersionDO::getOrderId, taskOrderDO.getId())
+                        .orderByAsc(PipeTaskOrderIssueReportVersionDO::getReportType)
+                        .orderByDesc(PipeTaskOrderIssueReportVersionDO::getCreateTime));
+        if (CollUtil.isNotEmpty(versionDOs)) {
+            List<PipeTaskOrderArchiveDetailRespVO.IssueReportVersionVO> versionList = versionDOs.stream()
+                    .map(vo -> {
+                        PipeTaskOrderArchiveDetailRespVO.IssueReportVersionVO v = new PipeTaskOrderArchiveDetailRespVO.IssueReportVersionVO();
+                        v.setReportNo(vo.getReportNo());
+                        v.setReportType(vo.getReportType());
+                        v.setReportVersion(vo.getReportVersion());
+                        v.setIssueUrl(vo.getIssueUrl());
+                        v.setCreateTime(vo.getCreateTime());
+                        return v;
+                    }).collect(Collectors.toList());
+            taskOrderArchiveDetail.setIssueReportVersionList(versionList);
+        }
+
         return taskOrderArchiveDetail;
     }
 

+ 58 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorderissuereportversion/PipeTaskOrderIssueReportVersionService.java

@@ -0,0 +1,58 @@
+package cn.start.tz.module.pressure2.service.pipetaskorderissuereportversion;
+
+import java.util.*;
+import jakarta.validation.*;
+import cn.start.tz.module.pressure2.controller.admin.pipetaskorderissuereportversion.vo.*;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderissuereportversion.PipeTaskOrderIssueReportVersionDO;
+import cn.start.tz.framework.common.pojo.PageResult;
+import cn.start.tz.framework.common.pojo.PageParam;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 管道记录报告版本记录 Service 接口
+ *
+ * @author 特种管理员
+ */
+public interface PipeTaskOrderIssueReportVersionService extends IService<PipeTaskOrderIssueReportVersionDO>  {
+
+    /**
+     * 创建管道记录报告版本记录
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    String createPipeTaskOrderIssueReportVersion(@Valid PipeTaskOrderIssueReportVersionSaveReqVO createReqVO);
+
+    /**
+     * 更新管道记录报告版本记录
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updatePipeTaskOrderIssueReportVersion(@Valid PipeTaskOrderIssueReportVersionSaveReqVO updateReqVO);
+
+    /**
+     * 删除管道记录报告版本记录
+     *
+     * @param id 编号
+     */
+    void deletePipeTaskOrderIssueReportVersion(String id);
+
+    /**
+     * 获得管道记录报告版本记录
+     *
+     * @param id 编号
+     * @return 管道记录报告版本记录
+     */
+    PipeTaskOrderIssueReportVersionDO getPipeTaskOrderIssueReportVersion(String id);
+
+    /**
+     * 获得管道记录报告版本记录分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 管道记录报告版本记录分页
+     */
+    PageResult<PipeTaskOrderIssueReportVersionDO> getPipeTaskOrderIssueReportVersionPage(PipeTaskOrderIssueReportVersionPageReqVO pageReqVO);
+
+    void generateIssueReportVersion(String orderId,String issueUrl,Integer reportType);
+
+}

+ 130 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorderissuereportversion/PipeTaskOrderIssueReportVersionServiceImpl.java

@@ -0,0 +1,130 @@
+package cn.start.tz.module.pressure2.service.pipetaskorderissuereportversion;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorderissuereportversion.BoilerTaskOrderIssueReportVersionDO;
+import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorderitem.BoilerTaskOrderItemDO;
+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.mysql.pipetaskorder.PipeTaskOrderMapper;
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitem.PipeTaskOrderItemMapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+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.util.*;
+import cn.start.tz.module.pressure2.controller.admin.pipetaskorderissuereportversion.vo.*;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderissuereportversion.PipeTaskOrderIssueReportVersionDO;
+import cn.start.tz.framework.common.pojo.PageResult;
+import cn.start.tz.framework.common.pojo.PageParam;
+import cn.start.tz.framework.common.util.object.BeanUtils;
+
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderissuereportversion.PipeTaskOrderIssueReportVersionMapper;
+
+import static cn.start.tz.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.start.tz.module.pressure2.enums.ErrorCodeConstants.*;
+
+/**
+ * 管道记录报告版本记录 Service 实现类
+ *
+ * @author 特种管理员
+ */
+@Service
+@Validated
+public class PipeTaskOrderIssueReportVersionServiceImpl extends ServiceImpl<PipeTaskOrderIssueReportVersionMapper, PipeTaskOrderIssueReportVersionDO> implements PipeTaskOrderIssueReportVersionService {
+
+    @Resource
+    private PipeTaskOrderIssueReportVersionMapper pipeTaskOrderIssueReportVersionMapper;
+
+    @Resource
+    private PipeTaskOrderMapper taskOrderMapper;
+
+    @Resource
+    private PipeTaskOrderItemMapper taskOrderItemMapper;
+
+    @Override
+    public String createPipeTaskOrderIssueReportVersion(PipeTaskOrderIssueReportVersionSaveReqVO createReqVO) {
+        // 插入
+        PipeTaskOrderIssueReportVersionDO pipeTaskOrderIssueReportVersion = BeanUtils.toBean(createReqVO, PipeTaskOrderIssueReportVersionDO.class);
+        pipeTaskOrderIssueReportVersionMapper.insert(pipeTaskOrderIssueReportVersion);
+        // 返回
+        return pipeTaskOrderIssueReportVersion.getId();
+    }
+
+    @Override
+    public void updatePipeTaskOrderIssueReportVersion(PipeTaskOrderIssueReportVersionSaveReqVO updateReqVO) {
+        // 校验存在
+        validatePipeTaskOrderIssueReportVersionExists(updateReqVO.getId());
+        // 更新
+        PipeTaskOrderIssueReportVersionDO updateObj = BeanUtils.toBean(updateReqVO, PipeTaskOrderIssueReportVersionDO.class);
+        pipeTaskOrderIssueReportVersionMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deletePipeTaskOrderIssueReportVersion(String id) {
+        // 校验存在
+        validatePipeTaskOrderIssueReportVersionExists(id);
+        // 删除
+        pipeTaskOrderIssueReportVersionMapper.deleteById(id);
+    }
+
+    private void validatePipeTaskOrderIssueReportVersionExists(String id) {
+        if (pipeTaskOrderIssueReportVersionMapper.selectById(id) == null) {
+            throw exception(PIPE_TASK_ORDER_ISSUE_REPORT_VERSION_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public PipeTaskOrderIssueReportVersionDO getPipeTaskOrderIssueReportVersion(String id) {
+        return pipeTaskOrderIssueReportVersionMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<PipeTaskOrderIssueReportVersionDO> getPipeTaskOrderIssueReportVersionPage(PipeTaskOrderIssueReportVersionPageReqVO pageReqVO) {
+        return pipeTaskOrderIssueReportVersionMapper.selectPage(pageReqVO);
+    }
+
+    @Override
+    public void generateIssueReportVersion(String orderId, String issueUrl, Integer reportType) {
+
+        PipeTaskOrderDO taskOrderDO = taskOrderMapper.selectById(orderId);
+        if (taskOrderDO != null) {
+
+            //获取最新版本号
+            List<PipeTaskOrderIssueReportVersionDO> versionList = pipeTaskOrderIssueReportVersionMapper.selectList(
+                    new LambdaQueryWrapper<PipeTaskOrderIssueReportVersionDO>()
+                            .eq(PipeTaskOrderIssueReportVersionDO::getOrderId, orderId)
+                            .eq(PipeTaskOrderIssueReportVersionDO::getReportType, reportType)
+                            .orderByDesc(PipeTaskOrderIssueReportVersionDO::getCreateTime));
+            int nextVersion = 1;
+            if (CollUtil.isNotEmpty(versionList)) {
+                Integer latestVersion = versionList.get(0).getReportVersion();
+                if (latestVersion != null) {
+                    nextVersion = latestVersion + 1;
+                }
+            }
+
+            String reportNo = "";
+            List<PipeTaskOrderItemDO> taskOrderItemDOList = taskOrderItemMapper.selectList(
+                    new LambdaQueryWrapper<PipeTaskOrderItemDO>()
+                            .eq(PipeTaskOrderItemDO::getOrderId, orderId));
+            if (!taskOrderItemDOList.isEmpty()){
+                reportNo = taskOrderItemDOList.get(0).getReportNo();
+            }
+
+            PipeTaskOrderIssueReportVersionDO issueReportVersion = new PipeTaskOrderIssueReportVersionDO();
+            issueReportVersion.setIssueUrl(issueUrl);
+            issueReportVersion.setReportVersion(nextVersion);
+            issueReportVersion.setReportType(reportType);
+            issueReportVersion.setOrderId(orderId);
+            issueReportVersion.setReportNo(reportNo);
+            pipeTaskOrderIssueReportVersionMapper.insert(issueReportVersion);
+
+        }
+
+
+    }
+
+}

+ 12 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/resources/mapper/boilertaskorderissuereportversion/BoilerTaskOrderIssueReportVersionMapper.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.start.tz.module.pressure2.dal.mysql.boilertaskorderissuereportversion.BoilerTaskOrderIssueReportVersionMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
+     -->
+
+</mapper>

+ 12 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/resources/mapper/pipetaskorderissuereportversion/PipeTaskOrderIssueReportVersionMapper.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.start.tz.module.pressure2.dal.mysql.pipetaskorderissuereportversion.PipeTaskOrderIssueReportVersionMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
+     -->
+
+</mapper>