Browse Source

报告归档-检验项目-历史版本信息调整

xy 2 days ago
parent
commit
073d871044
24 changed files with 1440 additions and 21 deletions
  1. 85 1
      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. 77 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/boilertaskorderitemreportversionarchiving/BoilerTaskOrderItemReportVersionArchivingController.java
  4. 55 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/boilertaskorderitemreportversionarchiving/vo/BoilerTaskOrderItemReportVersionArchivingPageReqVO.java
  5. 67 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/boilertaskorderitemreportversionarchiving/vo/BoilerTaskOrderItemReportVersionArchivingRespVO.java
  6. 48 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/boilertaskorderitemreportversionarchiving/vo/BoilerTaskOrderItemReportVersionArchivingSaveReqVO.java
  7. 77 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/pipetaskorderitemreportversionarchiving/PipeTaskOrderItemReportVersionArchivingController.java
  8. 55 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/pipetaskorderitemreportversionarchiving/vo/PipeTaskOrderItemReportVersionArchivingPageReqVO.java
  9. 67 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/pipetaskorderitemreportversionarchiving/vo/PipeTaskOrderItemReportVersionArchivingRespVO.java
  10. 48 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/pipetaskorderitemreportversionarchiving/vo/PipeTaskOrderItemReportVersionArchivingSaveReqVO.java
  11. 75 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/dataobject/boilertaskorderitemreportversionarchiving/BoilerTaskOrderItemReportVersionArchivingDO.java
  12. 75 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/dataobject/pipetaskorderitemreportversionarchiving/PipeTaskOrderItemReportVersionArchivingDO.java
  13. 37 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/mysql/boilertaskorderitemreportversionarchiving/BoilerTaskOrderItemReportVersionArchivingMapper.java
  14. 37 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/mysql/pipetaskorderitemreportversionarchiving/PipeTaskOrderItemReportVersionArchivingMapper.java
  15. 12 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorder/BoilerTaskOrderServiceImpl.java
  16. 17 10
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorderissuereport/BoilerTaskOrderIssueReportServiceImpl.java
  17. 67 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorderitemreportversionarchiving/BoilerTaskOrderItemReportVersionArchivingService.java
  18. 208 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorderitemreportversionarchiving/BoilerTaskOrderItemReportVersionArchivingServiceImpl.java
  19. 12 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorder/PipeTaskOrderServiceImpl.java
  20. 16 10
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorderissuereport/PipeTaskOrderIssueReportServiceImpl.java
  21. 67 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorderitemreportversionarchiving/PipeTaskOrderItemReportVersionArchivingService.java
  22. 210 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorderitemreportversionarchiving/PipeTaskOrderItemReportVersionArchivingServiceImpl.java
  23. 12 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/resources/mapper/boilertaskorderitemreportversionarchiving/BoilerTaskOrderItemReportVersionArchivingMapper.xml
  24. 12 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/resources/mapper/pipetaskorderitemreportversionarchiving/PipeTaskOrderItemReportVersionArchivingMapper.xml

+ 85 - 1
build-prod/updata.sql

@@ -160,4 +160,88 @@ 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 '删除状态';
 
---已更新
+--已更新
+
+--20260707
+
+CREATE TABLE "PRESSURE2_PIPE_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING"
+(
+    "ID" VARCHAR2(64) NOT NULL,
+    "REPORT_ID" VARCHAR2(64),
+    "OLD_REPORT_URL" VARCHAR2(100),
+    "OLD_PREPARE_JSON" TEXT,
+    "NEW_REPORT_URL" VARCHAR2(100),
+    "NEW_PREPARE_JSON" TEXT,
+    "VERSION_NO" INT,
+    "MODIFIED_REASON" VARCHAR2(32),
+    "CREATOR" VARCHAR2(64),
+    "CREATE_TIME" TIMESTAMP(6) NOT NULL,
+    "UPDATER" VARCHAR2(64),
+    "UPDATE_TIME" TIMESTAMP(6) NOT NULL,
+    "DELETED" BIT,
+    "REPORT_TYPE" INTEGER,
+    "ORDER_ID" VARCHAR(50),
+    "ORDER_ITEM_ID" VARCHAR(50),
+    "DYNAMIC_TB_CODE" VARCHAR(50),
+    NOT CLUSTER PRIMARY KEY("ID")) STORAGE(ON "MAIN", CLUSTERBTR) ;
+
+COMMENT ON TABLE "PRESSURE2_PIPE_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING" IS '管道报告归档检验项目版本信息';
+COMMENT ON COLUMN "PRESSURE2_PIPE_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING"."ID" IS 'ID';
+COMMENT ON COLUMN "PRESSURE2_PIPE_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING"."REPORT_ID" IS '报表ID';
+COMMENT ON COLUMN "PRESSURE2_PIPE_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING"."OLD_REPORT_URL" IS '旧PDF地址';
+COMMENT ON COLUMN "PRESSURE2_PIPE_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING"."OLD_PREPARE_JSON" IS '旧JSON值';
+COMMENT ON COLUMN "PRESSURE2_PIPE_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING"."NEW_REPORT_URL" IS '新PDF地址';
+COMMENT ON COLUMN "PRESSURE2_PIPE_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING"."NEW_PREPARE_JSON" IS '新JSON值';
+COMMENT ON COLUMN "PRESSURE2_PIPE_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING"."VERSION_NO" IS '版本号';
+COMMENT ON COLUMN "PRESSURE2_PIPE_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING"."MODIFIED_REASON" IS '修改原因';
+COMMENT ON COLUMN "PRESSURE2_PIPE_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING"."CREATOR" IS '创建人';
+COMMENT ON COLUMN "PRESSURE2_PIPE_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING"."CREATE_TIME" IS '创建时间';
+COMMENT ON COLUMN "PRESSURE2_PIPE_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING"."UPDATER" IS '修改人';
+COMMENT ON COLUMN "PRESSURE2_PIPE_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING"."UPDATE_TIME" IS '修改时间';
+COMMENT ON COLUMN "PRESSURE2_PIPE_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING"."DELETED" IS '是否删除';
+COMMENT ON COLUMN "PRESSURE2_PIPE_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING"."REPORT_TYPE" IS '100记录/200报告';
+COMMENT ON COLUMN "PRESSURE2_PIPE_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING"."ORDER_ID" IS '订单号';
+COMMENT ON COLUMN "PRESSURE2_PIPE_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING"."ORDER_ITEM_ID" IS '订单设备编号';
+COMMENT ON COLUMN "PRESSURE2_PIPE_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING"."DYNAMIC_TB_CODE" IS '模板编号CODE';
+
+CREATE TABLE "PRESSURE2_BOILER_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING"
+(
+    "ID" VARCHAR2(64) NOT NULL,
+    "REPORT_ID" VARCHAR2(64),
+    "OLD_REPORT_URL" VARCHAR2(100),
+    "OLD_PREPARE_JSON" TEXT,
+    "NEW_REPORT_URL" VARCHAR2(100),
+    "NEW_PREPARE_JSON" TEXT,
+    "VERSION_NO" INT,
+    "MODIFIED_REASON" VARCHAR2(32),
+    "CREATOR" VARCHAR2(64),
+    "CREATE_TIME" TIMESTAMP(6) NOT NULL,
+    "UPDATER" VARCHAR2(64),
+    "UPDATE_TIME" TIMESTAMP(6) NOT NULL,
+    "DELETED" BIT,
+    "REPORT_TYPE" INTEGER,
+    "ORDER_ID" VARCHAR(50),
+    "ORDER_ITEM_ID" VARCHAR(50),
+    "DYNAMIC_TB_CODE" VARCHAR(50),
+    NOT CLUSTER PRIMARY KEY("ID")) STORAGE(ON "MAIN", CLUSTERBTR) ;
+
+COMMENT ON TABLE "PRESSURE2_BOILER_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING" IS '锅炉报告归档检验项目版本信息';
+COMMENT ON COLUMN "PRESSURE2_BOILER_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING"."ID" IS 'ID';
+COMMENT ON COLUMN "PRESSURE2_BOILER_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING"."REPORT_ID" IS '报表ID';
+COMMENT ON COLUMN "PRESSURE2_BOILER_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING"."OLD_REPORT_URL" IS '旧PDF地址';
+COMMENT ON COLUMN "PRESSURE2_BOILER_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING"."OLD_PREPARE_JSON" IS '旧JSON值';
+COMMENT ON COLUMN "PRESSURE2_BOILER_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING"."NEW_REPORT_URL" IS '新PDF地址';
+COMMENT ON COLUMN "PRESSURE2_BOILER_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING"."NEW_PREPARE_JSON" IS '新JSON值';
+COMMENT ON COLUMN "PRESSURE2_BOILER_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING"."VERSION_NO" IS '版本号';
+COMMENT ON COLUMN "PRESSURE2_BOILER_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING"."MODIFIED_REASON" IS '修改原因';
+COMMENT ON COLUMN "PRESSURE2_BOILER_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING"."CREATOR" IS '创建人';
+COMMENT ON COLUMN "PRESSURE2_BOILER_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING"."CREATE_TIME" IS '创建时间';
+COMMENT ON COLUMN "PRESSURE2_BOILER_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING"."UPDATER" IS '修改人';
+COMMENT ON COLUMN "PRESSURE2_BOILER_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING"."UPDATE_TIME" IS '修改时间';
+COMMENT ON COLUMN "PRESSURE2_BOILER_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING"."DELETED" IS '是否删除';
+COMMENT ON COLUMN "PRESSURE2_BOILER_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING"."REPORT_TYPE" IS '100记录/200报告';
+COMMENT ON COLUMN "PRESSURE2_BOILER_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING"."ORDER_ID" IS '订单号';
+COMMENT ON COLUMN "PRESSURE2_BOILER_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING"."ORDER_ITEM_ID" IS '订单设备编号';
+COMMENT ON COLUMN "PRESSURE2_BOILER_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING"."DYNAMIC_TB_CODE" IS '模板编号CODE';
+
+--已加

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

@@ -164,6 +164,10 @@ public interface ErrorCodeConstants{
 
     ErrorCode PIPE_TASK_ORDER_ISSUE_REPORT_VERSION_NOT_EXISTS = new ErrorCode(1080, "管道记录报告版本记录不存在");
 
+    ErrorCode PIPE_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING_NOT_EXISTS = new ErrorCode(1081, "管道报告归档检验项目版本信息不存在");
+
+    ErrorCode BOILER_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING_NOT_EXISTS = new ErrorCode(1082, "锅炉报告归档检验项目版本信息不存在");
+
     ErrorCode EQUIP_BOILER_NOT_EXISTS = new ErrorCode(2000, "锅炉设备不存在");
 
     ErrorCode BOILER_EQUIP_OPERATION_RECORD_NOT_EXISTS = new ErrorCode(2001, "锅炉操作记录不存在");

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

@@ -0,0 +1,77 @@
+package cn.start.tz.module.pressure2.controller.admin.boilertaskorderitemreportversionarchiving;
+
+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.boilertaskorderitemreportversionarchiving.vo.*;
+import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorderitemreportversionarchiving.BoilerTaskOrderItemReportVersionArchivingDO;
+import cn.start.tz.module.pressure2.service.boilertaskorderitemreportversionarchiving.BoilerTaskOrderItemReportVersionArchivingService;
+
+@Tag(name = "管理后台 - 锅炉报告归档检验项目版本信息")
+@RestController
+@RequestMapping("/pressure2/boiler-task-order-item-report-version-archiving")
+@Validated
+public class BoilerTaskOrderItemReportVersionArchivingController {
+
+    @Resource
+    private BoilerTaskOrderItemReportVersionArchivingService boilerTaskOrderItemReportVersionArchivingService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建锅炉报告归档检验项目版本信息")
+    public CommonResult<String> createBoilerTaskOrderItemReportVersionArchiving(@Valid @RequestBody BoilerTaskOrderItemReportVersionArchivingSaveReqVO createReqVO) {
+        return success(boilerTaskOrderItemReportVersionArchivingService.createBoilerTaskOrderItemReportVersionArchiving(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新锅炉报告归档检验项目版本信息")
+    public CommonResult<Boolean> updateBoilerTaskOrderItemReportVersionArchiving(@Valid @RequestBody BoilerTaskOrderItemReportVersionArchivingSaveReqVO updateReqVO) {
+        boilerTaskOrderItemReportVersionArchivingService.updateBoilerTaskOrderItemReportVersionArchiving(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除锅炉报告归档检验项目版本信息")
+    @Parameter(name = "id", description = "编号", required = true)
+    public CommonResult<Boolean> deleteBoilerTaskOrderItemReportVersionArchiving(@RequestParam("id") String id) {
+        boilerTaskOrderItemReportVersionArchivingService.deleteBoilerTaskOrderItemReportVersionArchiving(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得锅炉报告归档检验项目版本信息")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    public CommonResult<BoilerTaskOrderItemReportVersionArchivingRespVO> getBoilerTaskOrderItemReportVersionArchiving(@RequestParam("id") String id) {
+        BoilerTaskOrderItemReportVersionArchivingDO boilerTaskOrderItemReportVersionArchiving = boilerTaskOrderItemReportVersionArchivingService.getBoilerTaskOrderItemReportVersionArchiving(id);
+        return success(BeanUtils.toBean(boilerTaskOrderItemReportVersionArchiving, BoilerTaskOrderItemReportVersionArchivingRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得锅炉报告归档检验项目版本信息分页")
+    public CommonResult<PageResult<BoilerTaskOrderItemReportVersionArchivingRespVO>> getBoilerTaskOrderItemReportVersionArchivingPage(@Valid BoilerTaskOrderItemReportVersionArchivingPageReqVO pageReqVO) {
+        PageResult<BoilerTaskOrderItemReportVersionArchivingDO> pageResult = boilerTaskOrderItemReportVersionArchivingService.getBoilerTaskOrderItemReportVersionArchivingPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, BoilerTaskOrderItemReportVersionArchivingRespVO.class));
+    }
+
+}

+ 55 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/boilertaskorderitemreportversionarchiving/vo/BoilerTaskOrderItemReportVersionArchivingPageReqVO.java

@@ -0,0 +1,55 @@
+package cn.start.tz.module.pressure2.controller.admin.boilertaskorderitemreportversionarchiving.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 BoilerTaskOrderItemReportVersionArchivingPageReqVO extends PageParam {
+
+    @Schema(description = "报表ID", example = "16306")
+    private String reportId;
+
+    @Schema(description = "旧PDF地址", example = "https://www.iocoder.cn")
+    private String oldReportUrl;
+
+    @Schema(description = "旧JSON值")
+    private String oldPrepareJson;
+
+    @Schema(description = "新PDF地址", example = "https://www.iocoder.cn")
+    private String newReportUrl;
+
+    @Schema(description = "新JSON值")
+    private String newPrepareJson;
+
+    @Schema(description = "版本号")
+    private Integer versionNo;
+
+    @Schema(description = "修改原因", example = "不喜欢")
+    private String modifiedReason;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+    @Schema(description = "100记录/200报告", example = "2")
+    private Integer reportType;
+
+    @Schema(description = "订单号", example = "13096")
+    private String orderId;
+
+    @Schema(description = "订单设备编号", example = "19812")
+    private String orderItemId;
+
+    @Schema(description = "模板编号CODE")
+    private String dynamicTbCode;
+
+}

+ 67 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/boilertaskorderitemreportversionarchiving/vo/BoilerTaskOrderItemReportVersionArchivingRespVO.java

@@ -0,0 +1,67 @@
+package cn.start.tz.module.pressure2.controller.admin.boilertaskorderitemreportversionarchiving.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 BoilerTaskOrderItemReportVersionArchivingRespVO {
+
+    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "4952")
+    @ExcelProperty("ID")
+    private String id;
+
+    @Schema(description = "报表ID", example = "16306")
+    @ExcelProperty("报表ID")
+    private String reportId;
+
+    @Schema(description = "旧PDF地址", example = "https://www.iocoder.cn")
+    @ExcelProperty("旧PDF地址")
+    private String oldReportUrl;
+
+    @Schema(description = "旧JSON值")
+    @ExcelProperty("旧JSON值")
+    private String oldPrepareJson;
+
+    @Schema(description = "新PDF地址", example = "https://www.iocoder.cn")
+    @ExcelProperty("新PDF地址")
+    private String newReportUrl;
+
+    @Schema(description = "新JSON值")
+    @ExcelProperty("新JSON值")
+    private String newPrepareJson;
+
+    @Schema(description = "版本号")
+    @ExcelProperty("版本号")
+    private Integer versionNo;
+
+    @Schema(description = "修改原因", example = "不喜欢")
+    @ExcelProperty("修改原因")
+    private String modifiedReason;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+    @Schema(description = "100记录/200报告", example = "2")
+    @ExcelProperty("100记录/200报告")
+    private Integer reportType;
+
+    @Schema(description = "订单号", example = "13096")
+    @ExcelProperty("订单号")
+    private String orderId;
+
+    @Schema(description = "订单设备编号", example = "19812")
+    @ExcelProperty("订单设备编号")
+    private String orderItemId;
+
+    @Schema(description = "模板编号CODE")
+    @ExcelProperty("模板编号CODE")
+    private String dynamicTbCode;
+
+}

+ 48 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/boilertaskorderitemreportversionarchiving/vo/BoilerTaskOrderItemReportVersionArchivingSaveReqVO.java

@@ -0,0 +1,48 @@
+package cn.start.tz.module.pressure2.controller.admin.boilertaskorderitemreportversionarchiving.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 BoilerTaskOrderItemReportVersionArchivingSaveReqVO {
+
+    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "4952")
+    private String id;
+
+    @Schema(description = "报表ID", example = "16306")
+    private String reportId;
+
+    @Schema(description = "旧PDF地址", example = "https://www.iocoder.cn")
+    private String oldReportUrl;
+
+    @Schema(description = "旧JSON值")
+    private String oldPrepareJson;
+
+    @Schema(description = "新PDF地址", example = "https://www.iocoder.cn")
+    private String newReportUrl;
+
+    @Schema(description = "新JSON值")
+    private String newPrepareJson;
+
+    @Schema(description = "版本号")
+    private Integer versionNo;
+
+    @Schema(description = "修改原因", example = "不喜欢")
+    private String modifiedReason;
+
+    @Schema(description = "100记录/200报告", example = "2")
+    private Integer reportType;
+
+    @Schema(description = "订单号", example = "13096")
+    private String orderId;
+
+    @Schema(description = "订单设备编号", example = "19812")
+    private String orderItemId;
+
+    @Schema(description = "模板编号CODE")
+    private String dynamicTbCode;
+
+}

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

@@ -0,0 +1,77 @@
+package cn.start.tz.module.pressure2.controller.admin.pipetaskorderitemreportversionarchiving;
+
+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.pipetaskorderitemreportversionarchiving.vo.*;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemreportversionarchiving.PipeTaskOrderItemReportVersionArchivingDO;
+import cn.start.tz.module.pressure2.service.pipetaskorderitemreportversionarchiving.PipeTaskOrderItemReportVersionArchivingService;
+
+@Tag(name = "管理后台 - 管道报告归档检验项目版本信息")
+@RestController
+@RequestMapping("/pressure2/pipe-task-order-item-report-version-archiving")
+@Validated
+public class PipeTaskOrderItemReportVersionArchivingController {
+
+    @Resource
+    private PipeTaskOrderItemReportVersionArchivingService pipeTaskOrderItemReportVersionArchivingService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建管道报告归档检验项目版本信息")
+    public CommonResult<String> createPipeTaskOrderItemReportVersionArchiving(@Valid @RequestBody PipeTaskOrderItemReportVersionArchivingSaveReqVO createReqVO) {
+        return success(pipeTaskOrderItemReportVersionArchivingService.createPipeTaskOrderItemReportVersionArchiving(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新管道报告归档检验项目版本信息")
+    public CommonResult<Boolean> updatePipeTaskOrderItemReportVersionArchiving(@Valid @RequestBody PipeTaskOrderItemReportVersionArchivingSaveReqVO updateReqVO) {
+        pipeTaskOrderItemReportVersionArchivingService.updatePipeTaskOrderItemReportVersionArchiving(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除管道报告归档检验项目版本信息")
+    @Parameter(name = "id", description = "编号", required = true)
+    public CommonResult<Boolean> deletePipeTaskOrderItemReportVersionArchiving(@RequestParam("id") String id) {
+        pipeTaskOrderItemReportVersionArchivingService.deletePipeTaskOrderItemReportVersionArchiving(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得管道报告归档检验项目版本信息")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    public CommonResult<PipeTaskOrderItemReportVersionArchivingRespVO> getPipeTaskOrderItemReportVersionArchiving(@RequestParam("id") String id) {
+        PipeTaskOrderItemReportVersionArchivingDO pipeTaskOrderItemReportVersionArchiving = pipeTaskOrderItemReportVersionArchivingService.getPipeTaskOrderItemReportVersionArchiving(id);
+        return success(BeanUtils.toBean(pipeTaskOrderItemReportVersionArchiving, PipeTaskOrderItemReportVersionArchivingRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得管道报告归档检验项目版本信息分页")
+    public CommonResult<PageResult<PipeTaskOrderItemReportVersionArchivingRespVO>> getPipeTaskOrderItemReportVersionArchivingPage(@Valid PipeTaskOrderItemReportVersionArchivingPageReqVO pageReqVO) {
+        PageResult<PipeTaskOrderItemReportVersionArchivingDO> pageResult = pipeTaskOrderItemReportVersionArchivingService.getPipeTaskOrderItemReportVersionArchivingPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, PipeTaskOrderItemReportVersionArchivingRespVO.class));
+    }
+
+}

+ 55 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/pipetaskorderitemreportversionarchiving/vo/PipeTaskOrderItemReportVersionArchivingPageReqVO.java

@@ -0,0 +1,55 @@
+package cn.start.tz.module.pressure2.controller.admin.pipetaskorderitemreportversionarchiving.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 PipeTaskOrderItemReportVersionArchivingPageReqVO extends PageParam {
+
+    @Schema(description = "报表ID", example = "10924")
+    private String reportId;
+
+    @Schema(description = "旧PDF地址", example = "https://www.iocoder.cn")
+    private String oldReportUrl;
+
+    @Schema(description = "旧JSON值")
+    private String oldPrepareJson;
+
+    @Schema(description = "新PDF地址", example = "https://www.iocoder.cn")
+    private String newReportUrl;
+
+    @Schema(description = "新JSON值")
+    private String newPrepareJson;
+
+    @Schema(description = "版本号")
+    private Integer versionNo;
+
+    @Schema(description = "修改原因", example = "不好")
+    private String modifiedReason;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+    @Schema(description = "100记录/200报告", example = "1")
+    private Integer reportType;
+
+    @Schema(description = "订单号", example = "2209")
+    private String orderId;
+
+    @Schema(description = "订单设备编号", example = "1086")
+    private String orderItemId;
+
+    @Schema(description = "模板编号CODE")
+    private String dynamicTbCode;
+
+}

+ 67 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/pipetaskorderitemreportversionarchiving/vo/PipeTaskOrderItemReportVersionArchivingRespVO.java

@@ -0,0 +1,67 @@
+package cn.start.tz.module.pressure2.controller.admin.pipetaskorderitemreportversionarchiving.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 PipeTaskOrderItemReportVersionArchivingRespVO {
+
+    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "23239")
+    @ExcelProperty("ID")
+    private String id;
+
+    @Schema(description = "报表ID", example = "10924")
+    @ExcelProperty("报表ID")
+    private String reportId;
+
+    @Schema(description = "旧PDF地址", example = "https://www.iocoder.cn")
+    @ExcelProperty("旧PDF地址")
+    private String oldReportUrl;
+
+    @Schema(description = "旧JSON值")
+    @ExcelProperty("旧JSON值")
+    private String oldPrepareJson;
+
+    @Schema(description = "新PDF地址", example = "https://www.iocoder.cn")
+    @ExcelProperty("新PDF地址")
+    private String newReportUrl;
+
+    @Schema(description = "新JSON值")
+    @ExcelProperty("新JSON值")
+    private String newPrepareJson;
+
+    @Schema(description = "版本号")
+    @ExcelProperty("版本号")
+    private Integer versionNo;
+
+    @Schema(description = "修改原因", example = "不好")
+    @ExcelProperty("修改原因")
+    private String modifiedReason;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+    @Schema(description = "100记录/200报告", example = "1")
+    @ExcelProperty("100记录/200报告")
+    private Integer reportType;
+
+    @Schema(description = "订单号", example = "2209")
+    @ExcelProperty("订单号")
+    private String orderId;
+
+    @Schema(description = "订单设备编号", example = "1086")
+    @ExcelProperty("订单设备编号")
+    private String orderItemId;
+
+    @Schema(description = "模板编号CODE")
+    @ExcelProperty("模板编号CODE")
+    private String dynamicTbCode;
+
+}

+ 48 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/pipetaskorderitemreportversionarchiving/vo/PipeTaskOrderItemReportVersionArchivingSaveReqVO.java

@@ -0,0 +1,48 @@
+package cn.start.tz.module.pressure2.controller.admin.pipetaskorderitemreportversionarchiving.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 PipeTaskOrderItemReportVersionArchivingSaveReqVO {
+
+    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "23239")
+    private String id;
+
+    @Schema(description = "报表ID", example = "10924")
+    private String reportId;
+
+    @Schema(description = "旧PDF地址", example = "https://www.iocoder.cn")
+    private String oldReportUrl;
+
+    @Schema(description = "旧JSON值")
+    private String oldPrepareJson;
+
+    @Schema(description = "新PDF地址", example = "https://www.iocoder.cn")
+    private String newReportUrl;
+
+    @Schema(description = "新JSON值")
+    private String newPrepareJson;
+
+    @Schema(description = "版本号")
+    private Integer versionNo;
+
+    @Schema(description = "修改原因", example = "不好")
+    private String modifiedReason;
+
+    @Schema(description = "100记录/200报告", example = "1")
+    private Integer reportType;
+
+    @Schema(description = "订单号", example = "2209")
+    private String orderId;
+
+    @Schema(description = "订单设备编号", example = "1086")
+    private String orderItemId;
+
+    @Schema(description = "模板编号CODE")
+    private String dynamicTbCode;
+
+}

+ 75 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/dataobject/boilertaskorderitemreportversionarchiving/BoilerTaskOrderItemReportVersionArchivingDO.java

@@ -0,0 +1,75 @@
+package cn.start.tz.module.pressure2.dal.dataobject.boilertaskorderitemreportversionarchiving;
+
+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_item_report_version_archiving")
+@KeySequence("pressure2_boiler_task_order_item_report_version_archiving_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class BoilerTaskOrderItemReportVersionArchivingDO extends BaseDO {
+
+    /**
+     * ID
+     */
+    @TableId(value = "id", type = IdType.ASSIGN_UUID)
+    private String id;
+    /**
+     * 报表ID
+     */
+    private String reportId;
+    /**
+     * 旧PDF地址
+     */
+    private String oldReportUrl;
+    /**
+     * 旧JSON值
+     */
+    private String oldPrepareJson;
+    /**
+     * 新PDF地址
+     */
+    private String newReportUrl;
+    /**
+     * 新JSON值
+     */
+    private String newPrepareJson;
+    /**
+     * 版本号
+     */
+    private Integer versionNo;
+    /**
+     * 修改原因
+     */
+    private String modifiedReason;
+    /**
+     * 100记录/200报告
+     */
+    private Integer reportType;
+    /**
+     * 订单号
+     */
+    private String orderId;
+    /**
+     * 订单设备编号
+     */
+    private String orderItemId;
+    /**
+     * 模板编号CODE
+     */
+    private String dynamicTbCode;
+
+}

+ 75 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/dataobject/pipetaskorderitemreportversionarchiving/PipeTaskOrderItemReportVersionArchivingDO.java

@@ -0,0 +1,75 @@
+package cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemreportversionarchiving;
+
+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_item_report_version_archiving")
+@KeySequence("pressure2_pipe_task_order_item_report_version_archiving_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class PipeTaskOrderItemReportVersionArchivingDO extends BaseDO {
+
+    /**
+     * ID
+     */
+    @TableId(value = "id", type = IdType.ASSIGN_UUID)
+    private String id;
+    /**
+     * 报表ID
+     */
+    private String reportId;
+    /**
+     * 旧PDF地址
+     */
+    private String oldReportUrl;
+    /**
+     * 旧JSON值
+     */
+    private String oldPrepareJson;
+    /**
+     * 新PDF地址
+     */
+    private String newReportUrl;
+    /**
+     * 新JSON值
+     */
+    private String newPrepareJson;
+    /**
+     * 版本号
+     */
+    private Integer versionNo;
+    /**
+     * 修改原因
+     */
+    private String modifiedReason;
+    /**
+     * 100记录/200报告
+     */
+    private Integer reportType;
+    /**
+     * 订单号
+     */
+    private String orderId;
+    /**
+     * 订单设备编号
+     */
+    private String orderItemId;
+    /**
+     * 模板编号CODE
+     */
+    private String dynamicTbCode;
+
+}

+ 37 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/mysql/boilertaskorderitemreportversionarchiving/BoilerTaskOrderItemReportVersionArchivingMapper.java

@@ -0,0 +1,37 @@
+package cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitemreportversionarchiving;
+
+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.boilertaskorderitemreportversionarchiving.BoilerTaskOrderItemReportVersionArchivingDO;
+import org.apache.ibatis.annotations.Mapper;
+import cn.start.tz.module.pressure2.controller.admin.boilertaskorderitemreportversionarchiving.vo.*;
+
+/**
+ * 锅炉报告归档检验项目版本信息 Mapper
+ *
+ * @author 特种管理员
+ */
+@Mapper
+public interface BoilerTaskOrderItemReportVersionArchivingMapper extends BaseMapperX<BoilerTaskOrderItemReportVersionArchivingDO> {
+
+    default PageResult<BoilerTaskOrderItemReportVersionArchivingDO> selectPage(BoilerTaskOrderItemReportVersionArchivingPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<BoilerTaskOrderItemReportVersionArchivingDO>()
+                .eqIfPresent(BoilerTaskOrderItemReportVersionArchivingDO::getReportId, reqVO.getReportId())
+                .eqIfPresent(BoilerTaskOrderItemReportVersionArchivingDO::getOldReportUrl, reqVO.getOldReportUrl())
+                .eqIfPresent(BoilerTaskOrderItemReportVersionArchivingDO::getOldPrepareJson, reqVO.getOldPrepareJson())
+                .eqIfPresent(BoilerTaskOrderItemReportVersionArchivingDO::getNewReportUrl, reqVO.getNewReportUrl())
+                .eqIfPresent(BoilerTaskOrderItemReportVersionArchivingDO::getNewPrepareJson, reqVO.getNewPrepareJson())
+                .eqIfPresent(BoilerTaskOrderItemReportVersionArchivingDO::getVersionNo, reqVO.getVersionNo())
+                .eqIfPresent(BoilerTaskOrderItemReportVersionArchivingDO::getModifiedReason, reqVO.getModifiedReason())
+                .betweenIfPresent(BoilerTaskOrderItemReportVersionArchivingDO::getCreateTime, reqVO.getCreateTime())
+                .eqIfPresent(BoilerTaskOrderItemReportVersionArchivingDO::getReportType, reqVO.getReportType())
+                .eqIfPresent(BoilerTaskOrderItemReportVersionArchivingDO::getOrderId, reqVO.getOrderId())
+                .eqIfPresent(BoilerTaskOrderItemReportVersionArchivingDO::getOrderItemId, reqVO.getOrderItemId())
+                .eqIfPresent(BoilerTaskOrderItemReportVersionArchivingDO::getDynamicTbCode, reqVO.getDynamicTbCode())
+                .orderByDesc(BoilerTaskOrderItemReportVersionArchivingDO::getId));
+    }
+
+}

+ 37 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/mysql/pipetaskorderitemreportversionarchiving/PipeTaskOrderItemReportVersionArchivingMapper.java

@@ -0,0 +1,37 @@
+package cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitemreportversionarchiving;
+
+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.pipetaskorderitemreportversionarchiving.PipeTaskOrderItemReportVersionArchivingDO;
+import org.apache.ibatis.annotations.Mapper;
+import cn.start.tz.module.pressure2.controller.admin.pipetaskorderitemreportversionarchiving.vo.*;
+
+/**
+ * 管道报告归档检验项目版本信息 Mapper
+ *
+ * @author 特种管理员
+ */
+@Mapper
+public interface PipeTaskOrderItemReportVersionArchivingMapper extends BaseMapperX<PipeTaskOrderItemReportVersionArchivingDO> {
+
+    default PageResult<PipeTaskOrderItemReportVersionArchivingDO> selectPage(PipeTaskOrderItemReportVersionArchivingPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<PipeTaskOrderItemReportVersionArchivingDO>()
+                .eqIfPresent(PipeTaskOrderItemReportVersionArchivingDO::getReportId, reqVO.getReportId())
+                .eqIfPresent(PipeTaskOrderItemReportVersionArchivingDO::getOldReportUrl, reqVO.getOldReportUrl())
+                .eqIfPresent(PipeTaskOrderItemReportVersionArchivingDO::getOldPrepareJson, reqVO.getOldPrepareJson())
+                .eqIfPresent(PipeTaskOrderItemReportVersionArchivingDO::getNewReportUrl, reqVO.getNewReportUrl())
+                .eqIfPresent(PipeTaskOrderItemReportVersionArchivingDO::getNewPrepareJson, reqVO.getNewPrepareJson())
+                .eqIfPresent(PipeTaskOrderItemReportVersionArchivingDO::getVersionNo, reqVO.getVersionNo())
+                .eqIfPresent(PipeTaskOrderItemReportVersionArchivingDO::getModifiedReason, reqVO.getModifiedReason())
+                .betweenIfPresent(PipeTaskOrderItemReportVersionArchivingDO::getCreateTime, reqVO.getCreateTime())
+                .eqIfPresent(PipeTaskOrderItemReportVersionArchivingDO::getReportType, reqVO.getReportType())
+                .eqIfPresent(PipeTaskOrderItemReportVersionArchivingDO::getOrderId, reqVO.getOrderId())
+                .eqIfPresent(PipeTaskOrderItemReportVersionArchivingDO::getOrderItemId, reqVO.getOrderItemId())
+                .eqIfPresent(PipeTaskOrderItemReportVersionArchivingDO::getDynamicTbCode, reqVO.getDynamicTbCode())
+                .orderByDesc(PipeTaskOrderItemReportVersionArchivingDO::getId));
+    }
+
+}

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

@@ -138,6 +138,7 @@ import cn.start.tz.module.pressure2.service.boilertaskorderissuereport.BoilerTas
 import cn.start.tz.module.pressure2.service.boilertaskorderitempart.BoilerTaskOrderItemPartService;
 import cn.start.tz.module.pressure2.service.boilertaskorderitemreport.BoilerTaskOrderItemReportService;
 import cn.start.tz.module.pressure2.service.boilertaskorderitemreportversion.BoilerTaskOrderItemReportVersionService;
+import cn.start.tz.module.pressure2.service.boilertaskorderitemreportversionarchiving.BoilerTaskOrderItemReportVersionArchivingService;
 import cn.start.tz.module.pressure2.service.boilertaskorderoperation.BoilerTaskOrderOperationService;
 import cn.start.tz.module.pressure2.service.boilertaskordersecuritycheck.BoilerTaskOrderSecurityCheckService;
 import cn.start.tz.module.pressure2.service.common.RedisService;
@@ -448,6 +449,9 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
     @Resource
     private BoilerConnectTbServiceMapper boilerConnectTbServiceMapper;
 
+    @Resource
+    private BoilerTaskOrderItemReportVersionArchivingService versionArchivingService;
+
     @Resource
     private DeptApi deptApi;
 
@@ -4511,6 +4515,14 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
             try {
                 log.info("记录校核生成PDF");
                 boilerTaskOrderIssueReportService.generateReportIssueUrl(taskOrderAuditSingleVO.getId());
+
+                // 插入版本归档记录
+                versionArchivingService.insertArchivingRecord(
+                        taskOrderAuditSingleVO.getId(),
+                        "-",
+                        taskOrderItemReport.getOrderId(),
+                        taskOrderItemReport.getOrderItemId(),100);
+
             } catch (Exception e) {
                 log.error("记录校核生成PDF错误,{}", e.getMessage());
             }

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

@@ -24,6 +24,7 @@ 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.pressure2.dal.dataobject.pipetaskorderitemreport.PipeTaskOrderItemReportDO;
 import cn.start.tz.module.pressure2.enums.TaskOrderItemReportTypeEnum;
 import cn.start.tz.module.pressure2.enums.TaskOrderStatusEnum;
 import cn.start.tz.module.pressure2.constant.TemplateIdConstants;
@@ -89,6 +90,9 @@ import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderissuereportversion.
 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.boilertaskorderitemreportversionarchiving.BoilerTaskOrderItemReportVersionArchivingService;
+import cn.start.tz.module.pressure2.controller.admin.boilertaskorderitemreportversionarchiving.vo.BoilerTaskOrderItemReportVersionArchivingPageReqVO;
+import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorderitemreportversionarchiving.BoilerTaskOrderItemReportVersionArchivingDO;
 import cn.start.tz.module.pressure2.service.boilertaskordersignfile.BoilerTaskOrderSignFileService;
 import cn.start.tz.module.pressure2.service.dynamictbins.DynamicTbInsService;
 import cn.start.tz.module.pressure2.service.member.MemberRemoteService;
@@ -251,6 +255,9 @@ public class BoilerTaskOrderIssueReportServiceImpl extends ServiceImpl<BoilerTas
     @Resource
     private BoilerTaskOrderItemReportVersionService taskOrderItemReportVersionService;
 
+    @Resource
+    private BoilerTaskOrderItemReportVersionArchivingService versionArchivingService;
+
     @Resource
     private ObjectMapper objectMapper;
 
@@ -2183,7 +2190,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);
+        queryWrapper.orderByAsc(BoilerTaskOrderItemReportDO::getSort, BoilerTaskOrderItemReportDO::getCreateTime);
         List<BoilerTaskOrderItemReportDO> taskOrderItemReportDOS = taskOrderItemReportMapper.selectList(queryWrapper);
         if (CollUtil.isNotEmpty(taskOrderItemReportDOS)) {
             //任务单相关文件
@@ -2434,14 +2441,14 @@ public class BoilerTaskOrderIssueReportServiceImpl extends ServiceImpl<BoilerTas
                         }
                     }
 
-                    //获取报告历史记录
-                    BoilerTaskOrderItemReportVersionPageReqVO pageReqVO5 = new BoilerTaskOrderItemReportVersionPageReqVO();
-                    pageReqVO5.setPageSize(-1);
-                    pageReqVO5.setOrderItemReportId(taskOrderItemReportDO.getId());
-                    pageReqVO5.setBusinessType(false);
-                    CommonResult<PageResult<BoilerTaskOrderItemReportVersionRespVO>> taskOrderItemReportVersionPage = taskOrderItemReportVersionService.getTaskOrderItemReportVersionPage(pageReqVO5);
-                    if (CollUtil.isNotEmpty(taskOrderItemReportVersionPage.getData().getList())) {
-                        inspectionItem.setHistoryVersionNum(taskOrderItemReportVersionPage.getData().getList().size());
+                    //获取报告历史记录(归档版本表)
+                    BoilerTaskOrderItemReportVersionArchivingPageReqVO archivingReq = new BoilerTaskOrderItemReportVersionArchivingPageReqVO();
+                    archivingReq.setPageSize(-1);
+                    archivingReq.setReportId(taskOrderItemReportDO.getId());
+//                    archivingReq.setReportType(100);
+                    PageResult<BoilerTaskOrderItemReportVersionArchivingDO> archivingPage = versionArchivingService.getBoilerTaskOrderItemReportVersionArchivingPage(archivingReq);
+                    if (CollUtil.isNotEmpty(archivingPage.getList())) {
+                        inspectionItem.setHistoryVersionNum(archivingPage.getList().size());
                     }
 
                     //获取报告流转记录
@@ -2561,7 +2568,7 @@ public class BoilerTaskOrderIssueReportServiceImpl extends ServiceImpl<BoilerTas
                 new LambdaQueryWrapperX<BoilerTaskOrderIssueReportVersionDO>()
                         .eq(BoilerTaskOrderIssueReportVersionDO::getOrderItemId, orderItemId)
                         .orderByAsc(BoilerTaskOrderIssueReportVersionDO::getReportType)
-                        .orderByDesc(BoilerTaskOrderIssueReportVersionDO::getCreateTime));
+                        .orderByAsc(BoilerTaskOrderIssueReportVersionDO::getReportVersion));
         if (CollUtil.isNotEmpty(versionDOs)) {
             List<BoilerTaskOrderArchiveDetailRespVO.IssueReportVersionVO> versionList = versionDOs.stream()
                     .map(vo -> {

+ 67 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorderitemreportversionarchiving/BoilerTaskOrderItemReportVersionArchivingService.java

@@ -0,0 +1,67 @@
+package cn.start.tz.module.pressure2.service.boilertaskorderitemreportversionarchiving;
+
+import java.util.*;
+import jakarta.validation.*;
+import cn.start.tz.module.pressure2.controller.admin.boilertaskorderitemreportversionarchiving.vo.*;
+import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorderitemreportversionarchiving.BoilerTaskOrderItemReportVersionArchivingDO;
+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 BoilerTaskOrderItemReportVersionArchivingService extends IService<BoilerTaskOrderItemReportVersionArchivingDO>  {
+
+    /**
+     * 创建锅炉报告归档检验项目版本信息
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    String createBoilerTaskOrderItemReportVersionArchiving(@Valid BoilerTaskOrderItemReportVersionArchivingSaveReqVO createReqVO);
+
+    /**
+     * 更新锅炉报告归档检验项目版本信息
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateBoilerTaskOrderItemReportVersionArchiving(@Valid BoilerTaskOrderItemReportVersionArchivingSaveReqVO updateReqVO);
+
+    /**
+     * 删除锅炉报告归档检验项目版本信息
+     *
+     * @param id 编号
+     */
+    void deleteBoilerTaskOrderItemReportVersionArchiving(String id);
+
+    /**
+     * 获得锅炉报告归档检验项目版本信息
+     *
+     * @param id 编号
+     * @return 锅炉报告归档检验项目版本信息
+     */
+    BoilerTaskOrderItemReportVersionArchivingDO getBoilerTaskOrderItemReportVersionArchiving(String id);
+
+    /**
+     * 获得锅炉报告归档检验项目版本信息分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 锅炉报告归档检验项目版本信息分页
+     */
+    PageResult<BoilerTaskOrderItemReportVersionArchivingDO> getBoilerTaskOrderItemReportVersionArchivingPage(BoilerTaskOrderItemReportVersionArchivingPageReqVO pageReqVO);
+
+    /**
+     * 校核通过后插入版本归档记录
+     *
+     * @param reportId       报表ID
+     * @param modifiedReason 修改原因
+     * @param orderId        订单号
+     * @param orderItemId    订单设备编号
+     * @param reportType    记录/报告
+     */
+    void insertArchivingRecord(String reportId, String modifiedReason, String orderId, String orderItemId,Integer reportType);
+
+}

+ 208 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorderitemreportversionarchiving/BoilerTaskOrderItemReportVersionArchivingServiceImpl.java

@@ -0,0 +1,208 @@
+package cn.start.tz.module.pressure2.service.boilertaskorderitemreportversionarchiving;
+
+import cn.start.tz.module.infra.api.file.FileApi;
+import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorderitemreport.BoilerTaskOrderItemReportDO;
+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.dynamictb.DynamicTbMapper;
+import cn.start.tz.module.pressure2.dal.dataobject.dynamictb.DynamicTbDO;
+import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitemreport.BoilerTaskOrderItemReportMapper;
+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.pdf.PdfService;
+import lombok.extern.slf4j.Slf4j;
+import jodd.util.StringUtil;
+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.boilertaskorderitemreportversionarchiving.vo.*;
+import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorderitemreportversionarchiving.BoilerTaskOrderItemReportVersionArchivingDO;
+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.boilertaskorderitemreportversionarchiving.BoilerTaskOrderItemReportVersionArchivingMapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+
+import static cn.start.tz.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.start.tz.module.pressure2.enums.ErrorCodeConstants.*;
+
+/**
+ * 锅炉报告归档检验项目版本信息 Service 实现类
+ *
+ * @author 特种管理员
+ */
+@Service
+@Validated
+@Slf4j
+public class BoilerTaskOrderItemReportVersionArchivingServiceImpl extends ServiceImpl<BoilerTaskOrderItemReportVersionArchivingMapper, BoilerTaskOrderItemReportVersionArchivingDO> implements BoilerTaskOrderItemReportVersionArchivingService {
+
+    @Resource
+    private BoilerTaskOrderItemReportVersionArchivingMapper boilerTaskOrderItemReportVersionArchivingMapper;
+
+    @Resource
+    private BoilerTaskOrderItemReportMapper taskOrderItemReportMapper;
+
+    @Resource
+    private PdfService pdfService;
+
+    @Resource
+    private FileApi fileApi;
+
+    @Resource
+    private DynamicTbInsService dynamicTbInsService;
+
+    @Resource
+    private DynamicTbValService dynamicTbValService;
+
+    @Resource
+    private DynamicTbMapper dynamicTbMapper;
+
+    @Override
+    public String createBoilerTaskOrderItemReportVersionArchiving(BoilerTaskOrderItemReportVersionArchivingSaveReqVO createReqVO) {
+        // 插入
+        BoilerTaskOrderItemReportVersionArchivingDO boilerTaskOrderItemReportVersionArchiving = BeanUtils.toBean(createReqVO, BoilerTaskOrderItemReportVersionArchivingDO.class);
+        boilerTaskOrderItemReportVersionArchivingMapper.insert(boilerTaskOrderItemReportVersionArchiving);
+        // 返回
+        return boilerTaskOrderItemReportVersionArchiving.getId();
+    }
+
+    @Override
+    public void updateBoilerTaskOrderItemReportVersionArchiving(BoilerTaskOrderItemReportVersionArchivingSaveReqVO updateReqVO) {
+        // 校验存在
+        validateBoilerTaskOrderItemReportVersionArchivingExists(updateReqVO.getId());
+        // 更新
+        BoilerTaskOrderItemReportVersionArchivingDO updateObj = BeanUtils.toBean(updateReqVO, BoilerTaskOrderItemReportVersionArchivingDO.class);
+        boilerTaskOrderItemReportVersionArchivingMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteBoilerTaskOrderItemReportVersionArchiving(String id) {
+        // 校验存在
+        validateBoilerTaskOrderItemReportVersionArchivingExists(id);
+        // 删除
+        boilerTaskOrderItemReportVersionArchivingMapper.deleteById(id);
+    }
+
+    private void validateBoilerTaskOrderItemReportVersionArchivingExists(String id) {
+        if (boilerTaskOrderItemReportVersionArchivingMapper.selectById(id) == null) {
+            throw exception(BOILER_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public BoilerTaskOrderItemReportVersionArchivingDO getBoilerTaskOrderItemReportVersionArchiving(String id) {
+        return boilerTaskOrderItemReportVersionArchivingMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<BoilerTaskOrderItemReportVersionArchivingDO> getBoilerTaskOrderItemReportVersionArchivingPage(BoilerTaskOrderItemReportVersionArchivingPageReqVO pageReqVO) {
+        return boilerTaskOrderItemReportVersionArchivingMapper.selectPage(pageReqVO);
+    }
+
+    @Override
+    public void insertArchivingRecord(String reportId, String modifiedReason, String orderId, String orderItemId,Integer reportType) {
+
+        // 查询 reportId + reportType=100 下的最新版本号
+        LambdaQueryWrapper<BoilerTaskOrderItemReportVersionArchivingDO> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(BoilerTaskOrderItemReportVersionArchivingDO::getReportId, reportId)
+                .eq(BoilerTaskOrderItemReportVersionArchivingDO::getReportType, reportType)
+                .orderByDesc(BoilerTaskOrderItemReportVersionArchivingDO::getVersionNo)
+                .last("limit 1");
+        BoilerTaskOrderItemReportVersionArchivingDO lastRecord = boilerTaskOrderItemReportVersionArchivingMapper.selectOne(queryWrapper);
+        int nextVersion = (lastRecord != null && lastRecord.getVersionNo() != null) ? lastRecord.getVersionNo() + 1 : 1;
+
+        String fileUrl = "";
+        String NewJson = "";
+        String dynamicTbCode = "";
+        BoilerTaskOrderItemReportDO reportDO = taskOrderItemReportMapper.selectById(reportId);
+        if (reportDO != null){
+            if (reportType == 100){
+                //生成记录文件
+                if (reportDO.getEnterPdfUrl() != null && !reportDO.getEnterPdfUrl().isEmpty()){
+                    fileUrl = reportDO.getEnterPdfUrl();
+                }else{
+                    try {
+                        byte[] bytes = pdfService.pdfByRefId(reportDO.getTemplateId(), reportDO.getId());
+                        fileUrl = fileApi.createFile(bytes);
+                    } catch (Exception e) {
+                        log.error("报告编号{}生成记录报表PDF失败",reportId, e);
+                    }
+                }
+                // 查询动态表数据转为JSON
+                NewJson = buildDynamicJson(reportDO.getId());
+            }else if (reportType == 200){
+                //生成报告文件
+                if (reportDO.getIssueUrl() != null && !reportDO.getIssueUrl().isEmpty()){
+                    fileUrl = reportDO.getIssueUrl();
+                }else{
+                    try {
+                        byte[] bytes = pdfService.pdfByRefId(reportDO.getReportTemplateId(), "report_" + reportDO.getId());
+                        fileUrl = fileApi.createFile(bytes);
+                    } catch (Exception e) {
+                        log.error("报告编号{}生成报告报表PDF失败",reportId, e);
+                    }
+                }
+                // 查询动态表数据转为JSON
+                NewJson = buildDynamicJson("report_" + reportDO.getId());
+            }
+
+            // 查询 dynamicTbCode:记录取 templateId,报告取 reportTemplateId
+
+            String tbId = reportType == 200 ? reportDO.getReportTemplateId() : reportDO.getTemplateId();
+            if (tbId != null) {
+                DynamicTbDO tbDO = dynamicTbMapper.selectById(tbId);
+                if (tbDO != null && tbDO.getTbCode() != null) {
+                    dynamicTbCode = tbDO.getTbCode();
+                }
+            }
+        }
+
+        BoilerTaskOrderItemReportVersionArchivingDO archivingDO = new BoilerTaskOrderItemReportVersionArchivingDO();
+        archivingDO.setReportId(reportId);
+        archivingDO.setReportType(reportType);
+        archivingDO.setVersionNo(nextVersion);
+        archivingDO.setModifiedReason(modifiedReason);
+        archivingDO.setOrderId(orderId);
+        archivingDO.setOrderItemId(orderItemId);
+        archivingDO.setNewReportUrl(fileUrl);
+        archivingDO.setNewPrepareJson(NewJson);
+        archivingDO.setDynamicTbCode(dynamicTbCode);
+
+        if (lastRecord != null){
+            archivingDO.setOldReportUrl(lastRecord.getNewReportUrl());
+            archivingDO.setOldPrepareJson(lastRecord.getNewPrepareJson());
+        }
+        boilerTaskOrderItemReportVersionArchivingMapper.insert(archivingDO);
+
+    }
+
+    /**
+     * 从 dynamicTbIns + dynamicTbVal 查询数据并转为 JSON 字符串
+     */
+    private String buildDynamicJson(String refId) {
+        try {
+            DynamicTbInsDO insDO = dynamicTbInsService.getDynamicRefId(refId);
+            if (insDO == null) return "";
+            List<DynamicTbValDO> valList = dynamicTbValService.lambdaQuery()
+                    .eq(DynamicTbValDO::getInsId, insDO.getId())
+                    .list();
+            if (valList.isEmpty()) return "";
+            // 转为 Map<colCode, valValue>
+            Map<String, String> jsonMap = new LinkedHashMap<>();
+            for (DynamicTbValDO val : valList) {
+                jsonMap.put(val.getColCode(), val.getValValue());
+            }
+            return com.alibaba.fastjson2.JSON.toJSONString(jsonMap);
+        } catch (Exception e) {
+            log.error("[buildDynamicJson] 查询动态表数据失败, refId={}", refId, e);
+            return "";
+        }
+    }
+
+}

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

@@ -160,6 +160,7 @@ import cn.start.tz.module.pressure2.service.pipetaskorderinput.PipeTaskOrderInpu
 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.pipetaskorderitemreportversionarchiving.PipeTaskOrderItemReportVersionArchivingService;
 import cn.start.tz.module.pressure2.service.pipetaskorderoperation.PipeTaskOrderOperationService;
 import cn.start.tz.module.pressure2.service.pipetaskordersecuritycheck.PipeTaskOrderSecurityCheckService;
 import cn.start.tz.module.pressure2.service.pushtaskorder.PushTaskOrderService;
@@ -342,6 +343,9 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
     @Resource
     private BoilerConnectTbServiceMapper boilerConnectTbServiceMapper;
 
+    @Resource
+    private PipeTaskOrderItemReportVersionArchivingService versionArchivingService;
+
     @Resource
     private BoilerTaskOrderItemReportEquipMapper taskOrderItemReportEquipMapper;
 
@@ -3343,6 +3347,14 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
             try {
                 log.info("记录校核生成PDF");
                 pipeTaskOrderIssueReportService.generateReportIssueUrl(taskOrderAuditSingleVO.getId());
+
+                // 插入版本归档记录
+                versionArchivingService.insertArchivingRecord(
+                        taskOrderAuditSingleVO.getId(),
+                        "-",
+                        taskOrderItemReport.getOrderId(),
+                        taskOrderItemReport.getOrderItemId(),100);
+
             } catch (Exception e) {
                 log.error("记录校核生成PDF错误,{}", e.getMessage());
             }

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

@@ -99,6 +99,9 @@ import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderissuereportversion.Pi
 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.pipetaskorderitemreportversionarchiving.PipeTaskOrderItemReportVersionArchivingService;
+import cn.start.tz.module.pressure2.controller.admin.pipetaskorderitemreportversionarchiving.vo.PipeTaskOrderItemReportVersionArchivingPageReqVO;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemreportversionarchiving.PipeTaskOrderItemReportVersionArchivingDO;
 import cn.start.tz.module.pressure2.service.pushtaskorder.PushTaskOrderService;
 
 import cn.start.tz.module.pressure2.service.taskordernontaxrecord.TaskOrderNonTaxRecordService;
@@ -255,6 +258,9 @@ public class PipeTaskOrderIssueReportServiceImpl extends ServiceImpl<PipeTaskOrd
     @Resource
     private PipeTaskOrderItemReportVersionService taskOrderItemReportVersionService;
 
+    @Resource
+    private PipeTaskOrderItemReportVersionArchivingService versionArchivingService;
+
     @Resource
     private ObjectMapper objectMapper;
 
@@ -2232,7 +2238,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);
+        queryWrapper.orderByAsc(PipeTaskOrderItemReportDO::getSort,PipeTaskOrderItemReportDO::getCreateTime);
         List<PipeTaskOrderItemReportDO> taskOrderItemReportDOS = taskOrderItemReportMapper.selectList(queryWrapper);
         if (CollUtil.isNotEmpty(taskOrderItemReportDOS)) {
 
@@ -2493,14 +2499,14 @@ public class PipeTaskOrderIssueReportServiceImpl extends ServiceImpl<PipeTaskOrd
                         }
                     }
 
-                    //获取报告历史记录
-                    PipeTaskOrderItemReportVersionPageReqVO pageReqVO5 = new PipeTaskOrderItemReportVersionPageReqVO();
-                    pageReqVO5.setPageSize(-1);
-                    pageReqVO5.setOrderItemReportId(taskOrderItemReportDO.getId());
-                    pageReqVO5.setBusinessType(0);
-                    CommonResult<PageResult<PipeTaskOrderItemReportVersionRespVO>> taskOrderItemReportVersionPage = taskOrderItemReportVersionService.getTaskOrderItemReportVersionPage(pageReqVO5);
-                    if (CollUtil.isNotEmpty(taskOrderItemReportVersionPage.getData().getList())) {
-                        inspectionItem.setHistoryVersionNum(taskOrderItemReportVersionPage.getData().getList().size());
+                    //获取报告历史记录(归档版本表)
+                    PipeTaskOrderItemReportVersionArchivingPageReqVO archivingReq = new PipeTaskOrderItemReportVersionArchivingPageReqVO();
+                    archivingReq.setPageSize(-1);
+                    archivingReq.setReportId(taskOrderItemReportDO.getId());
+//                    archivingReq.setReportType(100);
+                    PageResult<PipeTaskOrderItemReportVersionArchivingDO> archivingPage = versionArchivingService.getPipeTaskOrderItemReportVersionArchivingPage(archivingReq);
+                    if (CollUtil.isNotEmpty(archivingPage.getList())) {
+                        inspectionItem.setHistoryVersionNum(archivingPage.getList().size());
                     }
 
                     //获取报告流转记录
@@ -2620,7 +2626,7 @@ public class PipeTaskOrderIssueReportServiceImpl extends ServiceImpl<PipeTaskOrd
                 new LambdaQueryWrapperX<PipeTaskOrderIssueReportVersionDO>()
                         .eq(PipeTaskOrderIssueReportVersionDO::getOrderId, taskOrderDO.getId())
                         .orderByAsc(PipeTaskOrderIssueReportVersionDO::getReportType)
-                        .orderByDesc(PipeTaskOrderIssueReportVersionDO::getCreateTime));
+                        .orderByAsc(PipeTaskOrderIssueReportVersionDO::getReportVersion));
         if (CollUtil.isNotEmpty(versionDOs)) {
             List<PipeTaskOrderArchiveDetailRespVO.IssueReportVersionVO> versionList = versionDOs.stream()
                     .map(vo -> {

+ 67 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorderitemreportversionarchiving/PipeTaskOrderItemReportVersionArchivingService.java

@@ -0,0 +1,67 @@
+package cn.start.tz.module.pressure2.service.pipetaskorderitemreportversionarchiving;
+
+import java.util.*;
+import jakarta.validation.*;
+import cn.start.tz.module.pressure2.controller.admin.pipetaskorderitemreportversionarchiving.vo.*;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemreportversionarchiving.PipeTaskOrderItemReportVersionArchivingDO;
+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 PipeTaskOrderItemReportVersionArchivingService extends IService<PipeTaskOrderItemReportVersionArchivingDO>  {
+
+    /**
+     * 创建管道报告归档检验项目版本信息
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    String createPipeTaskOrderItemReportVersionArchiving(@Valid PipeTaskOrderItemReportVersionArchivingSaveReqVO createReqVO);
+
+    /**
+     * 更新管道报告归档检验项目版本信息
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updatePipeTaskOrderItemReportVersionArchiving(@Valid PipeTaskOrderItemReportVersionArchivingSaveReqVO updateReqVO);
+
+    /**
+     * 删除管道报告归档检验项目版本信息
+     *
+     * @param id 编号
+     */
+    void deletePipeTaskOrderItemReportVersionArchiving(String id);
+
+    /**
+     * 获得管道报告归档检验项目版本信息
+     *
+     * @param id 编号
+     * @return 管道报告归档检验项目版本信息
+     */
+    PipeTaskOrderItemReportVersionArchivingDO getPipeTaskOrderItemReportVersionArchiving(String id);
+
+    /**
+     * 获得管道报告归档检验项目版本信息分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 管道报告归档检验项目版本信息分页
+     */
+    PageResult<PipeTaskOrderItemReportVersionArchivingDO> getPipeTaskOrderItemReportVersionArchivingPage(PipeTaskOrderItemReportVersionArchivingPageReqVO pageReqVO);
+
+    /**
+     * 校核通过后插入版本归档记录
+     *
+     * @param reportId       报表ID
+     * @param modifiedReason 修改原因
+     * @param orderId        订单号
+     * @param orderItemId    订单设备编号
+     * @param reportType    记录/报告
+     */
+    void insertArchivingRecord(String reportId, String modifiedReason, String orderId, String orderItemId,Integer reportType);
+
+}

+ 210 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorderitemreportversionarchiving/PipeTaskOrderItemReportVersionArchivingServiceImpl.java

@@ -0,0 +1,210 @@
+package cn.start.tz.module.pressure2.service.pipetaskorderitemreportversionarchiving;
+
+import cn.start.tz.module.infra.api.file.FileApi;
+import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorderitemreport.BoilerTaskOrderItemReportDO;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemreport.PipeTaskOrderItemReportDO;
+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.dynamictb.DynamicTbMapper;
+import cn.start.tz.module.pressure2.dal.dataobject.dynamictb.DynamicTbDO;
+import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitemreport.BoilerTaskOrderItemReportMapper;
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitemreport.PipeTaskOrderItemReportMapper;
+import cn.start.tz.module.pressure2.service.dynamictbins.DynamicTbInsService;
+import cn.start.tz.module.pressure2.service.dynamictbval.DynamicTbValService;
+import cn.start.tz.module.pressure2.service.pdf.PdfService;
+import jodd.util.StringUtil;
+import lombok.extern.slf4j.Slf4j;
+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.pipetaskorderitemreportversionarchiving.vo.*;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemreportversionarchiving.PipeTaskOrderItemReportVersionArchivingDO;
+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.pipetaskorderitemreportversionarchiving.PipeTaskOrderItemReportVersionArchivingMapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+
+import static cn.start.tz.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.start.tz.module.pressure2.enums.ErrorCodeConstants.*;
+
+/**
+ * 管道报告归档检验项目版本信息 Service 实现类
+ *
+ * @author 特种管理员
+ */
+@Service
+@Validated
+@Slf4j
+public class PipeTaskOrderItemReportVersionArchivingServiceImpl extends ServiceImpl<PipeTaskOrderItemReportVersionArchivingMapper, PipeTaskOrderItemReportVersionArchivingDO> implements PipeTaskOrderItemReportVersionArchivingService {
+
+    @Resource
+    private PipeTaskOrderItemReportVersionArchivingMapper pipeTaskOrderItemReportVersionArchivingMapper;
+
+    @Resource
+    private PipeTaskOrderItemReportMapper taskOrderItemReportMapper;
+
+    @Resource
+    private PdfService pdfService;
+
+    @Resource
+    private FileApi fileApi;
+
+    @Resource
+    private DynamicTbInsService dynamicTbInsService;
+
+    @Resource
+    private DynamicTbValService dynamicTbValService;
+
+    @Resource
+    private DynamicTbMapper dynamicTbMapper;
+
+    @Override
+    public String createPipeTaskOrderItemReportVersionArchiving(PipeTaskOrderItemReportVersionArchivingSaveReqVO createReqVO) {
+        // 插入
+        PipeTaskOrderItemReportVersionArchivingDO pipeTaskOrderItemReportVersionArchiving = BeanUtils.toBean(createReqVO, PipeTaskOrderItemReportVersionArchivingDO.class);
+        pipeTaskOrderItemReportVersionArchivingMapper.insert(pipeTaskOrderItemReportVersionArchiving);
+        // 返回
+        return pipeTaskOrderItemReportVersionArchiving.getId();
+    }
+
+    @Override
+    public void updatePipeTaskOrderItemReportVersionArchiving(PipeTaskOrderItemReportVersionArchivingSaveReqVO updateReqVO) {
+        // 校验存在
+        validatePipeTaskOrderItemReportVersionArchivingExists(updateReqVO.getId());
+        // 更新
+        PipeTaskOrderItemReportVersionArchivingDO updateObj = BeanUtils.toBean(updateReqVO, PipeTaskOrderItemReportVersionArchivingDO.class);
+        pipeTaskOrderItemReportVersionArchivingMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deletePipeTaskOrderItemReportVersionArchiving(String id) {
+        // 校验存在
+        validatePipeTaskOrderItemReportVersionArchivingExists(id);
+        // 删除
+        pipeTaskOrderItemReportVersionArchivingMapper.deleteById(id);
+    }
+
+    private void validatePipeTaskOrderItemReportVersionArchivingExists(String id) {
+        if (pipeTaskOrderItemReportVersionArchivingMapper.selectById(id) == null) {
+            throw exception(PIPE_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public PipeTaskOrderItemReportVersionArchivingDO getPipeTaskOrderItemReportVersionArchiving(String id) {
+        return pipeTaskOrderItemReportVersionArchivingMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<PipeTaskOrderItemReportVersionArchivingDO> getPipeTaskOrderItemReportVersionArchivingPage(PipeTaskOrderItemReportVersionArchivingPageReqVO pageReqVO) {
+        return pipeTaskOrderItemReportVersionArchivingMapper.selectPage(pageReqVO);
+    }
+
+    @Override
+    public void insertArchivingRecord(String reportId, String modifiedReason, String orderId, String orderItemId,Integer reportType) {
+
+        // 查询 reportId + reportType=100 下的最新版本号
+        LambdaQueryWrapper<PipeTaskOrderItemReportVersionArchivingDO> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(PipeTaskOrderItemReportVersionArchivingDO::getReportId, reportId)
+                .eq(PipeTaskOrderItemReportVersionArchivingDO::getReportType, reportType)
+                .orderByDesc(PipeTaskOrderItemReportVersionArchivingDO::getVersionNo)
+                .last("limit 1");
+        PipeTaskOrderItemReportVersionArchivingDO lastRecord = pipeTaskOrderItemReportVersionArchivingMapper.selectOne(queryWrapper);
+        int nextVersion = (lastRecord != null && lastRecord.getVersionNo() != null) ? lastRecord.getVersionNo() + 1 : 1;
+
+        String fileUrl = "";
+        String NewJson = "";
+        String dynamicTbCode = "";
+        PipeTaskOrderItemReportDO reportDO = taskOrderItemReportMapper.selectById(reportId);
+        if (reportDO != null){
+
+            if (reportType == 100){
+                //生成记录文件
+                if (reportDO.getEnterPdfUrl() != null && !reportDO.getEnterPdfUrl().isEmpty()){
+                    fileUrl = reportDO.getEnterPdfUrl();
+                }else{
+                    try {
+                        byte[] bytes = pdfService.pdfByRefId(reportDO.getTemplateId(), reportDO.getId());
+                        fileUrl = fileApi.createFile(bytes);
+                    } catch (Exception e) {
+                        log.error("报告编号{}生成记录报表PDF失败",reportId, e);
+                    }
+                }
+                // 查询动态表数据转为JSON
+                NewJson = buildDynamicJson(reportDO.getId());
+            }else if (reportType == 200){
+                //生成报告文件
+                if (reportDO.getIssueUrl() != null && !reportDO.getIssueUrl().isEmpty()){
+                    fileUrl = reportDO.getIssueUrl();
+                }else{
+                    try {
+                        byte[] bytes = pdfService.pdfByRefId(reportDO.getReportTemplateId(), "report_" + reportDO.getId());
+                        fileUrl = fileApi.createFile(bytes);
+                    } catch (Exception e) {
+                        log.error("报告编号{}生成报告报表PDF失败",reportId, e);
+                    }
+                }
+                // 查询动态表数据转为JSON
+                NewJson = buildDynamicJson("report_" + reportDO.getId());
+            }
+
+            // 查询 dynamicTbCode:记录取 templateId,报告取 reportTemplateId
+            String tbId = reportType == 200 ? reportDO.getReportTemplateId() : reportDO.getTemplateId();
+            if (tbId != null) {
+                DynamicTbDO tbDO = dynamicTbMapper.selectById(tbId);
+                if (tbDO != null && tbDO.getTbCode() != null) {
+                    dynamicTbCode = tbDO.getTbCode();
+                }
+            }
+
+        }
+
+        PipeTaskOrderItemReportVersionArchivingDO archivingDO = new PipeTaskOrderItemReportVersionArchivingDO();
+        archivingDO.setReportId(reportId);
+        archivingDO.setReportType(reportType);
+        archivingDO.setVersionNo(nextVersion);
+        archivingDO.setModifiedReason(modifiedReason);
+        archivingDO.setOrderId(orderId);
+        archivingDO.setOrderItemId(orderItemId);
+        archivingDO.setNewReportUrl(fileUrl);
+        archivingDO.setNewPrepareJson(NewJson);
+        archivingDO.setDynamicTbCode(dynamicTbCode);
+
+        if (lastRecord != null){
+            archivingDO.setOldReportUrl(lastRecord.getNewReportUrl());
+            archivingDO.setOldPrepareJson(lastRecord.getNewPrepareJson());
+        }
+
+        pipeTaskOrderItemReportVersionArchivingMapper.insert(archivingDO);
+    }
+
+    /**
+     * 从 dynamicTbIns + dynamicTbVal 查询数据并转为 JSON 字符串
+     */
+    private String buildDynamicJson(String reportId) {
+        try {
+            DynamicTbInsDO insDO = dynamicTbInsService.getDynamicRefId(reportId);
+            if (insDO == null) return "";
+            List<DynamicTbValDO> valList = dynamicTbValService.lambdaQuery()
+                    .eq(DynamicTbValDO::getInsId, insDO.getId())
+                    .list();
+            if (valList.isEmpty()) return "";
+            Map<String, String> jsonMap = new LinkedHashMap<>();
+            for (DynamicTbValDO val : valList) {
+                jsonMap.put(val.getColCode(), val.getValValue());
+            }
+            return com.alibaba.fastjson2.JSON.toJSONString(jsonMap);
+        } catch (Exception e) {
+            log.error("[buildDynamicJson] 查询动态表数据失败, reportId={}", reportId, e);
+            return "";
+        }
+    }
+
+}

+ 12 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/resources/mapper/boilertaskorderitemreportversionarchiving/BoilerTaskOrderItemReportVersionArchivingMapper.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.boilertaskorderitemreportversionarchiving.BoilerTaskOrderItemReportVersionArchivingMapper">
+
+    <!--
+        一般情况下,尽可能使用 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/pipetaskorderitemreportversionarchiving/PipeTaskOrderItemReportVersionArchivingMapper.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.pipetaskorderitemreportversionarchiving.PipeTaskOrderItemReportVersionArchivingMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
+     -->
+
+</mapper>