Przeglądaj źródła

版本合并0418

xy 1 dzień temu
rodzic
commit
c974f8ec18
55 zmienionych plików z 1513 dodań i 1285 usunięć
  1. 3 0
      tz-module-pressure2/tz-module-pressure2-api/src/main/java/cn/start/tz/module/pressure2/enums/ErrorCodeConstants.java
  2. 6 1
      tz-module-pressure2/tz-module-pressure2-api/src/main/java/cn/start/tz/module/pressure2/enums/RedisKeyEnums.java
  3. BIN
      tz-module-pressure2/tz-module-pressure2-biz/lib/Spire.Office.jar
  4. BIN
      tz-module-pressure2/tz-module-pressure2-biz/lib/aspose-words-21.11-jdk17.jar
  5. 69 41
      tz-module-pressure2/tz-module-pressure2-biz/pom.xml
  6. 3 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/acceptorder/vo/PipeAcceptOrderRespVO.java
  7. 4 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/acceptorder/vo/PipeAcceptOrderSubmitVO.java
  8. 2 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/boilertaskorder/vo/BoilerMajorIssuesPageRespVO.java
  9. 13 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/boilertaskorder/vo/BoilerOrderItemAddReportV2VO.java
  10. 3 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/boilertaskorder/vo/BoilerOrderItemAddReportVO.java
  11. 9 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/boilertaskorder/vo/BoilerOrderItemReportVO.java
  12. 22 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/equipboilerscheduling/vo/BoilerPlanSchedulingAssignTaskVO.java
  13. 3 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/equipboilerscheduling/vo/BoilerPlanSchedulingCheckItemVO.java
  14. 21 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/equippipescheduling/vo/PipePlanSchedulingAssignTaskVO.java
  15. 89 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/inspectionnaturetype/InspectionNatureTypeController.java
  16. 29 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/inspectionnaturetype/vo/InspectionNatureTypePageReqVO.java
  17. 34 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/inspectionnaturetype/vo/InspectionNatureTypeRespVO.java
  18. 22 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/inspectionnaturetype/vo/InspectionNatureTypeSaveReqVO.java
  19. 10 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/pipetaskorder/vo/PipeOrderItemAddReportV2VO.java
  20. 3 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/pipetaskorder/vo/PipeOrderItemAddReportVO.java
  21. 9 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/pipetaskorder/vo/PipeOrderItemReportVO.java
  22. 4 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/pipetaskorder/vo/PipeTaskOrderUserVO.java
  23. 45 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/standardfile/StandardFileController.java
  24. 3 3
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/dataobject/boilertaskorder/BoilerTaskOrderDO.java
  25. 4 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/dataobject/boilertaskorderitemreport/BoilerTaskOrderItemReportDO.java
  26. 6 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/dataobject/equipboilerschedulingitem/EquipBoilerSchedulingCheckDO.java
  27. 21 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/dataobject/equipboilerschedulingitem/EquipBoilerSchedulingFeeDO.java
  28. 5 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/dataobject/equippipeschedulingitem/EquipPipeSchedulingCheckDO.java
  29. 21 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/dataobject/equippipeschedulingitem/EquipPipeSchedulingFeeDO.java
  30. 43 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/dataobject/inspectionnaturetype/InspectionNatureTypeDO.java
  31. 3 3
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/dataobject/pipetaskorder/PipeTaskOrderDO.java
  32. 4 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/dataobject/pipetaskorderitemreport/PipeTaskOrderItemReportDO.java
  33. 29 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/mysql/inspectionnaturetype/InspectionNatureTypeMapper.java
  34. 2 1
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/acceptorder/AcceptOrderService.java
  35. 12 2
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/acceptorder/AcceptOrderServiceImpl.java
  36. 2 1
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/acceptorder/PipeAcceptOrderService.java
  37. 38 13
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/acceptorder/PipeAcceptOrderServiceImpl.java
  38. 13 2
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/appointmentconfirmorder/AppointmentConfirmOrderServiceImpl.java
  39. 12 2
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/appointmentconfirmorder/PipeAppointmentConfirmOrderServiceImpl.java
  40. 0 2
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorder/BoilerTaskOrderService.java
  41. 183 201
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorder/BoilerTaskOrderServiceImpl.java
  42. 1 1
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorderitempart/BoilerTaskOrderItemPartService.java
  43. 2 1
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorderitempart/BoilerTaskOrderItemPartServiceImpl.java
  44. 10 5
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/common/RedisServiceImpl.java
  45. 13 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamictb/DynamicTbServiceImpl.java
  46. 21 3
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/equipboilerscheduling/EquipBoilerSchedulingServiceImpl.java
  47. 21 3
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/equippipescheduling/EquipPipeSchedulingServiceImpl.java
  48. 56 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/inspectionnaturetype/InspectionNatureTypeService.java
  49. 75 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/inspectionnaturetype/InspectionNatureTypeServiceImpl.java
  50. 0 2
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorder/PipeTaskOrderService.java
  51. 392 424
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorder/PipeTaskOrderServiceImpl.java
  52. 90 573
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/util/WordToPdfUtils.java
  53. 14 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/resources/license.xml
  54. 2 1
      tz-module-pressure2/tz-module-pressure2-biz/src/main/resources/mapper/boilertaskorder/BoilerTaskOrderMapper.xml
  55. 12 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/resources/mapper/inspectionnaturetype/InspectionNatureTypeMapper.xml

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

@@ -111,6 +111,7 @@ public interface ErrorCodeConstants{
     ErrorCode DYNAMIC_TB_COL_NOT_EXISTS = new ErrorCode(3002, "承压动态报表字段不存在");
     ErrorCode DYNAMIC_TB_VAL_NOT_EXISTS = new ErrorCode(3003, "承压动态报表值不存在");
     ErrorCode DYNAMIC_TB_INS_NOT_EXISTS = new ErrorCode(3004, "承压动态报表实例不存在");
+    ErrorCode DYNAMIC_TB_CODE_EXISTS = new ErrorCode(3005, "承压动态报表模板编号已存在");
 
 
     ErrorCode PIPE_EQUIPMENT_SCHEDULING_USER_NOT_EXISTS = new ErrorCode(10004, "排期人员不存在");
@@ -148,4 +149,6 @@ public interface ErrorCodeConstants{
 
     ErrorCode DYNAMIC_TB_FEE_COL_NOT_EXISTS = new ErrorCode(5016, "承压动态报表字段不存在");
     ErrorCode DYNAMIC_TB_FEE_COL_CODE_EXISTS = new ErrorCode(5017, "承压动态报表字段标识已存在");
+
+    ErrorCode INSPECTION_NATURE_TYPE_NOT_EXISTS = new ErrorCode(5018, "检验性质类型关联不存在");
 }

+ 6 - 1
tz-module-pressure2/tz-module-pressure2-api/src/main/java/cn/start/tz/module/pressure2/enums/RedisKeyEnums.java

@@ -3,12 +3,17 @@ package cn.start.tz.module.pressure2.enums;
 public enum RedisKeyEnums {
 
     APPOINTMENT_CONFIRM_ORDER("APPOINTMENT_CONFIRM_ORDER", "约检确认单流水号"),
+    APPOINTMENT_CONFIRM_ORDER_PIPE("APPOINTMENT_CONFIRM_ORDER_PIPE", "管道约检确认单流水号"),
     ACCEPT_ORDER("ACCEPT_ORDER", "业务受理单"),
+    ACCEPT_ORDER_PIPE("ACCEPT_ORDER_PIPE", "管道业务受理单"),
     ACCEPT_ORDER_ITEM("ACCEPT_ORDER_ITEM", "业务受理单item"),
     ACCEPT_ORDER_ITEM_SUB("ACCEPT_ORDER_ITEM_SUB", "业务受理单item 子报告"),
     TASK_ORDER("TASK_ORDER", "任务单"),
+    TASK_ORDER_PIPE("TASK_ORDER_PIPE", "管道任务单"),
     TASK_ORDER_ITEM("TASK_ORDER_ITEM", "业务受理单item"),
-    TASK_ORDER_ITEM_SUB("TASK_ORDER_ITEM_SUB", "业务受理单item 子报告"),;
+    TASK_ORDER_ITEM_PIPE("TASK_ORDER_ITEM_PIPE", "管道业务受理单item"),
+    TASK_ORDER_ITEM_SUB("TASK_ORDER_ITEM_SUB", "业务受理单item 子报告"),
+    TASK_ORDER_ITEM_SUB_PIPE("TASK_ORDER_ITEM_SUB_PIPE", "管道业务受理单item 子报告"),;
 
 
     /**

BIN
tz-module-pressure2/tz-module-pressure2-biz/lib/Spire.Office.jar


BIN
tz-module-pressure2/tz-module-pressure2-biz/lib/aspose-words-21.11-jdk17.jar


+ 69 - 41
tz-module-pressure2/tz-module-pressure2-biz/pom.xml

@@ -180,10 +180,10 @@
         </dependency>
 
         <!-- ZXing 核心库 (包含 BarcodeFormat) -->
-<!--        <dependency>-->
-<!--            <groupId>com.google.zxing</groupId>-->
-<!--            <artifactId>core</artifactId>-->
-<!--        </dependency>-->
+        <!--        <dependency>-->
+        <!--            <groupId>com.google.zxing</groupId>-->
+        <!--            <artifactId>core</artifactId>-->
+        <!--        </dependency>-->
 
         <!--        <dependency>-->
         <!--            <groupId>fr.opensagres.xdocreport</groupId>-->
@@ -212,46 +212,39 @@
         <!--            <version>5.1.0</version>-->
         <!--        </dependency>-->
 
-<!--        <dependency>-->
-<!--            <groupId>com.artofsolving</groupId>-->
-<!--            <artifactId>jodconverter</artifactId>-->
-<!--            <version>2.2.1</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>org.openoffice</groupId>-->
-<!--            <artifactId>juh</artifactId>-->
-<!--            <version>4.1.2</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>org.openoffice</groupId>-->
-<!--            <artifactId>ridl</artifactId>-->
-<!--            <version>4.1.2</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>org.openoffice</groupId>-->
-<!--            <artifactId>unoil</artifactId>-->
-<!--            <version>4.1.2</version>-->
-<!--        </dependency>-->
-
-<!--        <dependency>-->
-<!--            <groupId>com.itextpdf</groupId>-->
-<!--            <artifactId>itextpdf</artifactId>-->
-<!--            <version>5.5.13.3</version>-->
-<!--        </dependency>-->
-        <dependency>
-            <groupId>cn.tz.cloud</groupId>
-            <artifactId>tz-module-pressure2-api</artifactId>
-            <version>2.4.0-SNAPSHOT</version>
-            <scope>compile</scope>
-        </dependency>
+        <!--        <dependency>-->
+        <!--            <groupId>com.artofsolving</groupId>-->
+        <!--            <artifactId>jodconverter</artifactId>-->
+        <!--            <version>2.2.1</version>-->
+        <!--        </dependency>-->
+        <!--        <dependency>-->
+        <!--            <groupId>org.openoffice</groupId>-->
+        <!--            <artifactId>juh</artifactId>-->
+        <!--            <version>4.1.2</version>-->
+        <!--        </dependency>-->
+        <!--        <dependency>-->
+        <!--            <groupId>org.openoffice</groupId>-->
+        <!--            <artifactId>ridl</artifactId>-->
+        <!--            <version>4.1.2</version>-->
+        <!--        </dependency>-->
+        <!--        <dependency>-->
+        <!--            <groupId>org.openoffice</groupId>-->
+        <!--            <artifactId>unoil</artifactId>-->
+        <!--            <version>4.1.2</version>-->
+        <!--        </dependency>-->
 
+        <!--        <dependency>-->
+        <!--            <groupId>com.itextpdf</groupId>-->
+        <!--            <artifactId>itextpdf</artifactId>-->
+        <!--            <version>5.5.13.3</version>-->
+        <!--        </dependency>-->
         <dependency>
-            <groupId>com.onlyoffice</groupId>
-            <artifactId>docs-integration-sdk</artifactId>
-            <version>1.4.0</version>
+            <groupId>com.itextpdf</groupId>
+            <artifactId>itextpdf</artifactId>
+            <version>5.5.13.3</version>
         </dependency>
 
-       <!-- <dependency>
+        <dependency>
             <groupId>com.aspose</groupId>
             <artifactId>aspose-words</artifactId>
             <version>20.2</version>
@@ -266,7 +259,42 @@
             <systemPath>${basedir}/lib/Spire.Office.jar</systemPath>
             <scope>system</scope>
         </dependency>
--->
+
+        <dependency>
+            <groupId>cn.tz.cloud</groupId>
+            <artifactId>tz-module-pressure2-api</artifactId>
+            <version>2.4.0-SNAPSHOT</version>
+            <scope>compile</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>com.onlyoffice</groupId>
+            <artifactId>docs-integration-sdk</artifactId>
+            <version>1.4.0</version>
+        </dependency>
+        <!--        <dependency>-->
+        <!--            <groupId>cn.tz.cloud</groupId>-->
+        <!--            <artifactId>tz-module-pressure-biz</artifactId>-->
+        <!--            <version>2.4.0-SNAPSHOT</version>-->
+        <!--            <scope>compile</scope>-->
+        <!--        </dependency>-->
+
+        <!-- <dependency>
+             <groupId>com.aspose</groupId>
+             <artifactId>aspose-words</artifactId>
+             <version>20.2</version>
+             <systemPath>${basedir}/lib/aspose-words-21.11-jdk17.jar</systemPath>
+             <scope>system</scope>
+         </dependency>
+
+         <dependency>
+             <groupId>com.aspose</groupId>
+             <artifactId>spire</artifactId>
+             <version>20.2</version>
+             <systemPath>${basedir}/lib/Spire.Office.jar</systemPath>
+             <scope>system</scope>
+         </dependency>
+ -->
     </dependencies>
 
     <build>

+ 3 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/acceptorder/vo/PipeAcceptOrderRespVO.java

@@ -292,4 +292,7 @@ public class PipeAcceptOrderRespVO {
 
     @Schema(description = "设备类型 100容器 200锅炉 300管道")
     private Integer equipMainType;
+
+    @Schema(description = "小组信息")
+    private List<TeamItemVO> teamList;
 }

+ 4 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/acceptorder/vo/PipeAcceptOrderSubmitVO.java

@@ -13,4 +13,8 @@ public class PipeAcceptOrderSubmitVO extends AcceptOrderSaveReqVO {
 
     @Schema(description = "人员")
     private List<String> userList ;
+
+    @Schema(description = "人员")
+    private List<SubmitTeamItemVO> teamList ;
+
 }

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

@@ -98,4 +98,6 @@ public class BoilerMajorIssuesPageRespVO {
     private String signFilePdf;
 
     private String projectNo;
+
+    private String manualUrl;
 }

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

@@ -4,6 +4,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 @Data
@@ -30,4 +31,16 @@ public class BoilerOrderItemAddReportV2VO {
 
     @Schema(description = "部件类型", example = "200")
     private String partType;
+
+    @Schema(description = "部件类型ID", example = "200")
+    private String itemPartId;
+
+    @Schema(description = "应收法定金额")
+    private BigDecimal shouldAmount;
+
+    @Schema(description = "服务收费金额")
+    private BigDecimal serviceAmount;
+
+    @Schema(description = "免征费用")
+    private BigDecimal reduceFee;
 }

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

@@ -36,4 +36,7 @@ public class BoilerOrderItemAddReportVO {
 
     @Schema(description = "任务单ID", example = "6822")
     private String orderReportId;
+
+    @Schema(description = "费用类型", example = "1")
+    private String type;
 }

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

@@ -140,4 +140,13 @@ public class BoilerOrderItemReportVO {
 
     @Schema(description ="生成的结论报告模板ID")
     private String resultTemplateId;
+
+    /**
+     * 手动上传
+     */
+    private String manualUrl;
+    /**
+     * 是否手动上传
+     */
+    private Boolean isManual;
 }

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

@@ -60,4 +60,26 @@ public class BoilerPlanSchedulingAssignTaskVO {
      */
     @Schema(description = "检验项目")
     private List<BoilerPlanSchedulingCheckItemVO> checkItemList;
+
+
+    /**
+     * 收费类型 1 非合同收费 2 合同收费
+     */
+    private String chargeType;
+    /**
+     * 是否免征 0 否 1 是
+     */
+    private String isExempt;
+    /**
+     * 应收法定金额
+     */
+    private BigDecimal shouldAmount;
+    /**
+     * 服务收费金额
+     */
+    private BigDecimal serviceAmount;
+    /**
+     * 免征费用
+     */
+    private BigDecimal reduceFee;
 }

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

@@ -20,4 +20,7 @@ public class BoilerPlanSchedulingCheckItemVO {
 
     @Schema(description = "费用计算json")
     private String feeCalculateJson;
+
+    @Schema(description = "类型 1 法定 2 服务")
+    private String type;
 }

+ 21 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/equippipescheduling/vo/PipePlanSchedulingAssignTaskVO.java

@@ -72,4 +72,25 @@ public class PipePlanSchedulingAssignTaskVO {
      */
     @Schema(description = "管道明细列表")
     private List<EquipPipePlanSchedulingVO> pipeDetailList;
+
+    /**
+     * 收费类型 1 非合同收费 2 合同收费
+     */
+    private String chargeType;
+    /**
+     * 是否免征 0 否 1 是
+     */
+    private String isExempt;
+    /**
+     * 应收法定金额
+     */
+    private BigDecimal shouldAmount;
+    /**
+     * 服务收费金额
+     */
+    private BigDecimal serviceAmount;
+    /**
+     * 免征费用
+     */
+    private BigDecimal reduceFee;
 }

+ 89 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/inspectionnaturetype/InspectionNatureTypeController.java

@@ -0,0 +1,89 @@
+package cn.start.tz.module.pressure2.controller.admin.inspectionnaturetype;
+
+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.inspectionnaturetype.vo.*;
+import cn.start.tz.module.pressure2.dal.dataobject.inspectionnaturetype.InspectionNatureTypeDO;
+import cn.start.tz.module.pressure2.service.inspectionnaturetype.InspectionNatureTypeService;
+
+@Tag(name = "管理后台 - 检验性质类型关联")
+@RestController
+@RequestMapping("/pressure2/inspection-nature-type")
+@Validated
+public class InspectionNatureTypeController {
+
+    @Resource
+    private InspectionNatureTypeService inspectionNatureTypeService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建检验性质类型关联")
+    public CommonResult<String> createInspectionNatureType(@Valid @RequestBody InspectionNatureTypeSaveReqVO createReqVO) {
+        return success(inspectionNatureTypeService.createInspectionNatureType(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新检验性质类型关联")
+    public CommonResult<Boolean> updateInspectionNatureType(@Valid @RequestBody InspectionNatureTypeSaveReqVO updateReqVO) {
+        inspectionNatureTypeService.updateInspectionNatureType(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除检验性质类型关联")
+    @Parameter(name = "id", description = "编号", required = true)
+    public CommonResult<Boolean> deleteInspectionNatureType(@RequestParam("id") String id) {
+        inspectionNatureTypeService.deleteInspectionNatureType(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得检验性质类型关联")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    public CommonResult<InspectionNatureTypeRespVO> getInspectionNatureType(@RequestParam("id") String id) {
+        InspectionNatureTypeDO inspectionNatureType = inspectionNatureTypeService.getInspectionNatureType(id);
+        return success(BeanUtils.toBean(inspectionNatureType, InspectionNatureTypeRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得检验性质类型关联分页")
+    public CommonResult<PageResult<InspectionNatureTypeRespVO>> getInspectionNatureTypePage(@Valid InspectionNatureTypePageReqVO pageReqVO) {
+        PageResult<InspectionNatureTypeDO> pageResult = inspectionNatureTypeService.getInspectionNatureTypePage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, InspectionNatureTypeRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出检验性质类型关联 Excel")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportInspectionNatureTypeExcel(@Valid InspectionNatureTypePageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<InspectionNatureTypeDO> list = inspectionNatureTypeService.getInspectionNatureTypePage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "检验性质类型关联.xls", "数据", InspectionNatureTypeRespVO.class,
+                        BeanUtils.toBean(list, InspectionNatureTypeRespVO.class));
+    }
+
+}

+ 29 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/inspectionnaturetype/vo/InspectionNatureTypePageReqVO.java

@@ -0,0 +1,29 @@
+package cn.start.tz.module.pressure2.controller.admin.inspectionnaturetype.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 InspectionNatureTypePageReqVO extends PageParam {
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+    @Schema(description = "性质")
+    private String nature;
+
+    @Schema(description = "类型", example = "2")
+    private String type;
+    @Schema(description = "设备类型")
+    private String equip;
+}

+ 34 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/inspectionnaturetype/vo/InspectionNatureTypeRespVO.java

@@ -0,0 +1,34 @@
+package cn.start.tz.module.pressure2.controller.admin.inspectionnaturetype.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 InspectionNatureTypeRespVO {
+
+    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "24922")
+    @ExcelProperty("主键")
+    private String id;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+    @Schema(description = "性质")
+    @ExcelProperty("性质")
+    private String nature;
+
+    @Schema(description = "类型", example = "2")
+    @ExcelProperty("类型")
+    private String type;
+
+    @ExcelProperty("设备类型")
+    @Schema(description = "设备类型")
+    private String equip;
+}

+ 22 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/inspectionnaturetype/vo/InspectionNatureTypeSaveReqVO.java

@@ -0,0 +1,22 @@
+package cn.start.tz.module.pressure2.controller.admin.inspectionnaturetype.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 InspectionNatureTypeSaveReqVO {
+
+    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "24922")
+    private String id;
+
+    @Schema(description = "性质")
+    private String nature;
+
+    @Schema(description = "类型", example = "2")
+    private String type;
+    @Schema(description = "设备类型")
+    private String equip;
+}

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

@@ -5,6 +5,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 @Data
@@ -33,4 +34,13 @@ public class PipeOrderItemAddReportV2VO {
     private String partType;
 
     private String orderId;
+
+    @Schema(description = "应收法定金额")
+    private BigDecimal shouldAmount;
+
+    @Schema(description = "服务收费金额")
+    private BigDecimal serviceAmount;
+
+    @Schema(description = "免征费用")
+    private BigDecimal reduceFee;
 }

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

@@ -42,4 +42,7 @@ public class PipeOrderItemAddReportVO {
 
     @Schema(description = "检验项目增加数量", example = "1")
     private Integer quantity;
+
+    @Schema(description = "费用类型", example = "1")
+    private String type;
 }

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

@@ -143,4 +143,13 @@ public class PipeOrderItemReportVO {
 
     @Schema(description ="重复报告对应的管线名称")
     private String pipeDetailName;
+
+    /**
+     * 手动上传
+     */
+    private String manualUrl;
+    /**
+     * 是否手动上传
+     */
+    private Boolean isManual;
 }

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

@@ -1,6 +1,7 @@
 package cn.start.tz.module.pressure2.controller.admin.pipetaskorder.vo;
 
 
+import cn.start.tz.module.pressure2.controller.admin.boilertaskorder.vo.BoilerOrderTeamItemVO;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -17,4 +18,7 @@ public class PipeTaskOrderUserVO {
     @Schema(description = "人员")
     private List<String> userList ;
 
+    @Schema(description = "人员")
+    private List<BoilerOrderTeamItemVO> teamList ;
+
 }

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

@@ -2,9 +2,15 @@ package cn.start.tz.module.pressure2.controller.admin.standardfile;
 
 import cn.hutool.http.HttpUtil;
 import cn.start.tz.framework.common.pojo.CommonResult;
+import cn.start.tz.module.grape.city.api.GrapeCityApi;
+import cn.start.tz.module.infra.api.file.FileApi;
 import cn.start.tz.module.pressure2.service.standardfile.StandardClassService;
+import cn.start.tz.module.pressure2.util.WordToPdfUtils;
 import com.alibaba.fastjson2.JSONObject;
 import com.grapecity.documents.excel.*;
+import jodd.util.StringUtil;
+import org.apache.commons.lang.StringUtils;
+import org.apache.pdfbox.multipdf.PDFMergerUtility;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
 import jakarta.annotation.Resource;
@@ -55,6 +61,12 @@ public class StandardFileController {
     @Resource
     private StandardClassService standardClassService;
 
+    @Resource
+    private GrapeCityApi grapeCityApi;
+
+    @Resource
+    private FileApi fileApi;
+
 
     @PostMapping("/create")
     @Operation(summary = "创建承压标准文件")
@@ -120,6 +132,39 @@ public class StandardFileController {
         response.getOutputStream().write(bytes);
     }
 
+    @PostMapping("/getPDFByInspection")
+    @Operation(summary = "预览检验方案模版pdf")
+    public void getPDFByInspection(@RequestParam(value = "file", required = true) MultipartFile file,@RequestParam(value = "manualUrl") String manualUrl,
+                       HttpServletResponse response) throws Exception {
+        byte[] bytes = grapeCityApi.getPdfByte(file.getBytes()).getCheckedData();
+
+        if (StringUtils.isNotEmpty(manualUrl)){
+
+            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+
+            if (manualUrl.endsWith(".doc") || manualUrl.endsWith(".docx")) {
+                byte[] wordBytes = fileApi.getFileByPath(manualUrl).getData();
+                byteArrayOutputStream = WordToPdfUtils.doc2pdfOutStream(wordBytes);
+            } else {
+                byte[] bytes1 = fileApi.getFileByPath(manualUrl).getData();
+                byteArrayOutputStream.write(bytes1);
+            }
+
+            ByteArrayOutputStream mergeOutputStream = new ByteArrayOutputStream();
+            PDFMergerUtility mergerUtility = new PDFMergerUtility();
+            mergerUtility.addSource(new ByteArrayInputStream(bytes));
+            mergerUtility.addSource(new ByteArrayInputStream(byteArrayOutputStream.toByteArray()));
+            // pdf 文件流合并
+            mergerUtility.setDestinationStream(mergeOutputStream);
+            mergerUtility.mergeDocuments(null);
+
+            response.getOutputStream().write(mergeOutputStream.toByteArray());
+        }else{
+            response.getOutputStream().write(bytes);
+        }
+
+    }
+
 
     @GetMapping("/list")
     @Operation(summary = "获得标准分类列表")

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

@@ -133,7 +133,7 @@ public class BoilerTaskOrderDO extends BaseDO {
     /**
      * 实收金额 废弃
      */
-//    private BigDecimal actualAmount;
+    private BigDecimal actualAmount;
     /**
      * 服务费
      */
@@ -141,11 +141,11 @@ public class BoilerTaskOrderDO extends BaseDO {
     /**
      * 应收金额 废弃
      */
-//    private BigDecimal shouldAmount;
+    private BigDecimal shouldAmount;
     /**
      * 减免费用 废弃
      */
-//    private BigDecimal reduceFee;
+    private BigDecimal reduceFee;
     /**
      * 计划id
      */

+ 4 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/dataobject/boilertaskorderitemreport/BoilerTaskOrderItemReportDO.java

@@ -352,4 +352,8 @@ public class BoilerTaskOrderItemReportDO extends BaseDO {
      * 生成的结论报告模板ID
      */
     private String resultTemplateId;
+    /**
+     * 费用类型(1=法定,2=服务)
+     */
+    private String feeType;
 }

+ 6 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/dataobject/equipboilerschedulingitem/EquipBoilerSchedulingCheckDO.java

@@ -67,4 +67,10 @@ public class EquipBoilerSchedulingCheckDO extends BaseDO {
      * 费用计算json
      */
     private String feeCalculateJson;
+
+
+    /**
+     * 类型 1 法定 2 服务
+     */
+    private String type;
 }

+ 21 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/dataobject/equipboilerschedulingitem/EquipBoilerSchedulingFeeDO.java

@@ -52,4 +52,25 @@ public class EquipBoilerSchedulingFeeDO extends BaseDO {
      * 实收金额
      */
     private BigDecimal actualAmount;
+
+    /**
+     * 收费类型 1 非合同收费 2 合同收费
+     */
+    private String chargeType;
+    /**
+     * 是否免征 0 否 1 是
+     */
+    private String isExempt;
+    /**
+     * 应收法定金额
+     */
+    private BigDecimal shouldAmount;
+    /**
+     * 服务收费金额
+     */
+    private BigDecimal serviceAmount;
+    /**
+     * 免征费用
+     */
+    private BigDecimal reduceFee;
 }

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

@@ -67,4 +67,9 @@ public class EquipPipeSchedulingCheckDO extends BaseDO {
      * 费用计算json
      */
     private String feeCalculateJson;
+
+    /**
+     * 类型 1 法定 2 服务
+     */
+    private String type;
 }

+ 21 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/dataobject/equippipeschedulingitem/EquipPipeSchedulingFeeDO.java

@@ -52,4 +52,25 @@ public class EquipPipeSchedulingFeeDO extends BaseDO {
      * 实收金额
      */
     private BigDecimal actualAmount;
+
+    /**
+     * 收费类型 1 非合同收费 2 合同收费
+     */
+    private String chargeType;
+    /**
+     * 是否免征 0 否 1 是
+     */
+    private String isExempt;
+    /**
+     * 应收法定金额
+     */
+    private BigDecimal shouldAmount;
+    /**
+     * 服务收费金额
+     */
+    private BigDecimal serviceAmount;
+    /**
+     * 免征费用
+     */
+    private BigDecimal reduceFee;
 }

+ 43 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/dataobject/inspectionnaturetype/InspectionNatureTypeDO.java

@@ -0,0 +1,43 @@
+package cn.start.tz.module.pressure2.dal.dataobject.inspectionnaturetype;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+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_inspection_nature_type")
+@KeySequence("pressure2_inspection_nature_type_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class InspectionNatureTypeDO extends BaseDO {
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.ASSIGN_UUID)
+    private String id;
+    /**
+     * 性质
+     */
+    private String nature;
+    /**
+     * 类型
+     */
+    private String type;
+    /**
+     * 设备类型
+     */
+    private String equip;
+}

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

@@ -131,7 +131,7 @@ public class PipeTaskOrderDO extends BaseDO {
     /**
      * 实收金额 废弃
      */
-//    private BigDecimal actualAmount;
+    private BigDecimal actualAmount;
     /**
      * 服务费
      */
@@ -139,11 +139,11 @@ public class PipeTaskOrderDO extends BaseDO {
     /**
      * 应收金额 废弃
      */
-//    private BigDecimal shouldAmount;
+    private BigDecimal shouldAmount;
     /**
      * 减免费用 废弃
      */
-//    private BigDecimal reduceFee;
+    private BigDecimal reduceFee;
     /**
      * 计划id
      */

+ 4 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/dataobject/pipetaskorderitemreport/PipeTaskOrderItemReportDO.java

@@ -348,4 +348,8 @@ public class PipeTaskOrderItemReportDO extends BaseDO {
      * 重复报告对应的管线ID
      */
     private String pipeDetailId;
+    /**
+     * 费用类型(1=法定,2=服务)
+     */
+    private String feeType;
 }

+ 29 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/mysql/inspectionnaturetype/InspectionNatureTypeMapper.java

@@ -0,0 +1,29 @@
+package cn.start.tz.module.pressure2.dal.mysql.inspectionnaturetype;
+
+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.inspectionnaturetype.InspectionNatureTypeDO;
+import org.apache.ibatis.annotations.Mapper;
+import cn.start.tz.module.pressure2.controller.admin.inspectionnaturetype.vo.*;
+
+/**
+ * 检验性质类型关联 Mapper
+ *
+ * @author 特种管理员
+ */
+@Mapper
+public interface InspectionNatureTypeMapper extends BaseMapperX<InspectionNatureTypeDO> {
+
+    default PageResult<InspectionNatureTypeDO> selectPage(InspectionNatureTypePageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<InspectionNatureTypeDO>()
+                .betweenIfPresent(InspectionNatureTypeDO::getCreateTime, reqVO.getCreateTime())
+                .eqIfPresent(InspectionNatureTypeDO::getNature, reqVO.getNature())
+                .eqIfPresent(InspectionNatureTypeDO::getEquip, reqVO.getEquip())
+                .eqIfPresent(InspectionNatureTypeDO::getType, reqVO.getType())
+                .orderByDesc(InspectionNatureTypeDO::getId));
+    }
+
+}

+ 2 - 1
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/acceptorder/AcceptOrderService.java

@@ -9,6 +9,7 @@ import cn.start.tz.module.pressure2.controller.admin.appointmentconfirmorder.vo.
 import jakarta.validation.Valid;
 
 import java.io.ByteArrayOutputStream;
+import java.time.LocalDate;
 
 /**
  * 受理单 Service 接口
@@ -41,7 +42,7 @@ public interface AcceptOrderService {
 
     PageResult<AcceptEquipsPageRespVO> getEquipsPage(@Valid ConfirmOrderPageVO pageReqVO);
 
-    String generateOrderNo();
+    String generateOrderNo(LocalDate checkDate);
 
     //受理单审批生成任务单
     Boolean audit(String id, Integer status,String reason);

+ 12 - 2
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/acceptorder/AcceptOrderServiceImpl.java

@@ -69,7 +69,10 @@ import org.springframework.validation.annotation.Validated;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
 
@@ -472,8 +475,15 @@ public class AcceptOrderServiceImpl implements AcceptOrderService {
     }
 
     @Override
-    public String generateOrderNo(){
-        return redisService.generateAcceptanceNo(RedisKeyEnums.ACCEPT_ORDER.getKey());
+    public String generateOrderNo(LocalDate checkDate){
+        // 生成日期部分,优先使用检验时间,如果为空则使用当前时间
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy"); // 4位年
+        Date dateToUse = (checkDate != null) ?
+                Date.from(checkDate.atStartOfDay(ZoneId.systemDefault()).toInstant()) :
+                new Date();
+        String dateStr = simpleDateFormat.format(dateToUse);
+        return dateStr + redisService.generateAcceptanceNo(RedisKeyEnums.ACCEPT_ORDER.getKey());
+
     }
 
     @Override

+ 2 - 1
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/acceptorder/PipeAcceptOrderService.java

@@ -8,6 +8,7 @@ import cn.start.tz.module.pressure2.controller.admin.appointmentconfirmorder.vo.
 import jakarta.validation.Valid;
 
 import java.io.ByteArrayOutputStream;
+import java.time.LocalDate;
 
 /**
  * 受理单 Service 接口
@@ -40,7 +41,7 @@ public interface PipeAcceptOrderService {
 
     PageResult<PipeAcceptEquipsPageRespVO> getEquipsPage(@Valid ConfirmOrderPageVO pageReqVO);
 
-    String generateOrderNo();
+    String generateOrderNo(LocalDate checkDate);
 
     //受理单审批生成任务单
     Boolean audit(String id, Integer status,String reason);

+ 38 - 13
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/acceptorder/PipeAcceptOrderServiceImpl.java

@@ -21,6 +21,7 @@ import cn.start.tz.module.infra.api.file.FileApi;
 import cn.start.tz.module.infra.api.pay.PayApi;
 import cn.start.tz.module.member.api.user.MemberUserApi;
 import cn.start.tz.module.pressure.constant.TemplateIdConstants;
+import cn.start.tz.module.pressure2.dal.dataobject.boileracceptorderuser.BoilerAcceptOrderUserDO;
 import cn.start.tz.module.pressure2.enums.RedisKeyEnums;
 import cn.start.tz.module.pressure2.controller.admin.acceptorder.vo.*;
 import cn.start.tz.module.pressure2.controller.admin.appointmentconfirmorder.vo.*;
@@ -73,7 +74,10 @@ import org.springframework.validation.annotation.Validated;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
 
@@ -183,7 +187,7 @@ public class PipeAcceptOrderServiceImpl implements PipeAcceptOrderService {
         List<String> userIds = equipContainerSchedulingMemberDOS.stream().map(PipeAcceptOrderUserDO::getUserId).toList();
         Map<String, AdminUserRespDTO> userMap = adminUserApi.getUserMap(userIds);
 
-       /* Set<String> set = equipContainerSchedulingMemberDOS.stream().map(PipeAcceptOrderUserDO::getGroupTeamId).collect(Collectors.toSet());
+        Set<String> set = equipContainerSchedulingMemberDOS.stream().map(PipeAcceptOrderUserDO::getGroupTeamId).collect(Collectors.toSet());
         set.stream().sorted();
 
         //检验员
@@ -209,12 +213,13 @@ public class PipeAcceptOrderServiceImpl implements PipeAcceptOrderService {
                     }
                     return taskDetailsItemVO;
                 }
-        ).toList();*/
+        ).toList();
 
-        List<AdminUserRespDTO> list = userIds.stream().map(userMap::get).toList();
+        //List<AdminUserRespDTO> list = userIds.stream().map(userMap::get).toList();
 
         PipeAcceptOrderRespVO orderRespVO = BeanUtils.toBean(acceptOrderDO, PipeAcceptOrderRespVO.class);
-        orderRespVO.setUserList(list);
+        //orderRespVO.setUserList(list);
+        orderRespVO.setTeamList(teamItemList);
 
         Area area = AreaUtils.getArea(acceptOrderDO.getEquipStreet());
         if(area != null){
@@ -279,13 +284,27 @@ public class PipeAcceptOrderServiceImpl implements PipeAcceptOrderService {
         pipeAcceptOrderUserMapper.delete(PipeAcceptOrderUserDO::getOrderId,acceptOrderSubmitVO.getId());
         List<PipeAcceptOrderUserDO> acceptOrderList = new ArrayList<>();
 
-        acceptOrderSubmitVO.getUserList().forEach(team->{
-            PipeAcceptOrderUserDO userDO = new PipeAcceptOrderUserDO();
-            userDO.setOrderId(acceptOrderSubmitVO.getId());
-            userDO.setType(100);
-            userDO.setUserId(team);
+        acceptOrderSubmitVO.getTeamList().forEach(team->{
+            PipeAcceptOrderUserDO leader = new PipeAcceptOrderUserDO();
+            leader.setOrderId(acceptOrderSubmitVO.getId());
+            leader.setType(100);
+            leader.setGroupTeamId(team.getGroupTeamId());
+            leader.setUserId(team.getLeaderId());
+
+            List<PipeAcceptOrderUserDO> memberList = team.getUserIds().stream().map(memberId -> {
+                PipeAcceptOrderUserDO member = new PipeAcceptOrderUserDO();
+                member.setOrderId(acceptOrderSubmitVO.getId());
+                member.setType(200);
+                member.setUserId(memberId);
+                member.setGroupTeamId(team.getGroupTeamId());
+                return member;
+            }).toList();
+
+            if(StringUtils.isNotBlank(team.getLeaderId())){
+                acceptOrderList.add(leader);
+            }
 
-            acceptOrderList.add(userDO);
+            acceptOrderList.addAll(memberList);
 
         });
 
@@ -475,10 +494,16 @@ public class PipeAcceptOrderServiceImpl implements PipeAcceptOrderService {
     }
 
     @Override
-    public String generateOrderNo(){
-        return redisService.generateAcceptanceNo(RedisKeyEnums.ACCEPT_ORDER.getKey());
-    }
+    public String generateOrderNo(LocalDate checkDate){
+        // 生成日期部分,优先使用检验时间,如果为空则使用当前时间
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy"); // 4位年
+        Date dateToUse = (checkDate != null) ?
+                Date.from(checkDate.atStartOfDay(ZoneId.systemDefault()).toInstant()) :
+                new Date();
+        String dateStr = simpleDateFormat.format(dateToUse);
+        return dateStr + redisService.generateAcceptanceNo(RedisKeyEnums.ACCEPT_ORDER_PIPE.getKey());
 
+    }
     @Override
     public Boolean audit(String id, Integer status,String reason) {
         log.info("开始审核,{},{},{}",id,status,reason);

+ 13 - 2
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/appointmentconfirmorder/AppointmentConfirmOrderServiceImpl.java

@@ -61,8 +61,10 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 
+import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.time.temporal.ChronoUnit;
 import java.util.*;
 import java.util.function.Function;
@@ -146,7 +148,16 @@ public class AppointmentConfirmOrderServiceImpl implements AppointmentConfirmOrd
 
     @Override
     public String create(AppointmentConfirmOrderDO appointmentConfirmOrderDO) {
-        String acceptNo = redisService.generateAcceptanceNo(RedisKeyEnums.APPOINTMENT_CONFIRM_ORDER.getKey());
+
+        // 生成日期部分,优先使用检验时间,如果为空则使用当前时间
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy"); // 4位年
+        Date dateToUse = (appointmentConfirmOrderDO.getAppointmentDate() != null) ?
+                Date.from(appointmentConfirmOrderDO.getAppointmentDate().atStartOfDay(ZoneId.systemDefault()).toInstant()) :
+                new Date();
+        String dateStr = simpleDateFormat.format(dateToUse);
+
+        String acceptNo = dateStr + redisService.generateAcceptanceNo(RedisKeyEnums.APPOINTMENT_CONFIRM_ORDER.getKey());
+
         appointmentConfirmOrderDO.setAppointmentNo(acceptNo);
         appointmentConfirmOrderMapper.insert(appointmentConfirmOrderDO);
 
@@ -651,7 +662,7 @@ public class AppointmentConfirmOrderServiceImpl implements AppointmentConfirmOrd
         // 清空ID,确保是新增操作
         acceptOrder.setId(null);
         // 生成受理单编号
-        String orderNo = acceptOrderService.generateOrderNo();
+        String orderNo = acceptOrderService.generateOrderNo(submitVO.getAppointmentDate());
         // 设置约检单ID
         acceptOrder.setAppointmentId(submitVO.getId());
         // 设置受理单编号

+ 12 - 2
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/appointmentconfirmorder/PipeAppointmentConfirmOrderServiceImpl.java

@@ -74,8 +74,10 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 
 import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.function.Function;
@@ -171,7 +173,15 @@ public class PipeAppointmentConfirmOrderServiceImpl implements PipeAppointmentCo
 
     @Override
     public String create(AppointmentConfirmOrderDO appointmentConfirmOrderDO) {
-        String acceptNo = redisService.generateAcceptanceNo(RedisKeyEnums.APPOINTMENT_CONFIRM_ORDER.getKey());
+
+        // 生成日期部分,优先使用检验时间,如果为空则使用当前时间
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy"); // 4位年
+        Date dateToUse = (appointmentConfirmOrderDO.getAppointmentDate() != null) ?
+                Date.from(appointmentConfirmOrderDO.getAppointmentDate().atStartOfDay(ZoneId.systemDefault()).toInstant()) :
+                new Date();
+        String dateStr = simpleDateFormat.format(dateToUse);
+        String acceptNo = dateStr + redisService.generateAcceptanceNo(RedisKeyEnums.APPOINTMENT_CONFIRM_ORDER_PIPE.getKey());
+
         appointmentConfirmOrderDO.setAppointmentNo(acceptNo);
         appointmentConfirmOrderMapper.insert(appointmentConfirmOrderDO);
 
@@ -688,7 +698,7 @@ public class PipeAppointmentConfirmOrderServiceImpl implements PipeAppointmentCo
         // 清空ID,确保是新增操作
         acceptOrder.setId(null);
         // 生成受理单编号
-        String orderNo = acceptOrderService.generateOrderNo();
+        String orderNo = acceptOrderService.generateOrderNo(submitVO.getAppointmentDate() );
         // 设置约检单ID
         acceptOrder.setAppointmentId(submitVO.getId());
         // 设置受理单编号

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

@@ -105,8 +105,6 @@ public interface BoilerTaskOrderService extends IService<BoilerTaskOrderDO>  {
 
     BoilerTaskOrderDO createTaskOrder(AcceptOrderDO acceptOrderDO, List<BoilerAcceptOrderUserDO> orderUserDOS, List<BoilerAcceptOrderItemDO> acceptOrderItemDOS);
 
-    String generateOrderNo();
-
     void updateTaskOrderItemReportUser(BoilerTaskOrderReportUserVO updateReqVO);
 
     void orderItemCancel(@Valid BoilerOrderItemUpdateByIdVO orderItemRatifyVO);

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

@@ -33,6 +33,7 @@ import cn.start.tz.module.pressure2.controller.admin.equipboilerscheduling.vo.Bo
 import cn.start.tz.module.pressure2.controller.admin.pipetaskorder.vo.PipeRecheckUserPageReqVO;
 import cn.start.tz.module.pressure2.controller.admin.pipetaskorder.vo.PipeTaskOrderSyncReportVO;
 import cn.start.tz.module.pressure2.dal.dataobject.businessmemberrelation.BusinessMemberRelationDO;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorder.PipeTaskOrderDO;
 import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemreport.PipeTaskOrderItemReportDO;
 import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderuser.PipeTaskOrderUserDO;
 import cn.start.tz.module.pressure2.dal.mysql.boilerconnectrecordreport.BoilerConnectRecordReportMapper;
@@ -144,6 +145,7 @@ import cn.start.tz.module.pressure2.util.*;
 import cn.start.tz.module.system.api.clientunit.ClientUnitApi;
 import cn.start.tz.module.system.api.clientunit.dto.ClientUnitDTO;
 import cn.start.tz.module.system.api.dept.DeptApi;
+import cn.start.tz.module.system.api.dept.dto.DeptRespDTO;
 import cn.start.tz.module.system.api.dict.DictDataApi;
 import cn.start.tz.module.system.api.dict.dto.DictDataRespDTO;
 import cn.start.tz.module.system.api.orgcontact.OrgContactApi;
@@ -184,6 +186,7 @@ import org.springframework.beans.BeanWrapperImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Lazy;
+import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.stereotype.Service;
 import jakarta.annotation.Resource;
 import org.springframework.transaction.annotation.Transactional;
@@ -196,8 +199,10 @@ import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
@@ -427,7 +432,6 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
     @Resource
     private DictDataApi dictDataApi;
 
-
     @Resource
     private TemplateSendLogApi templateSendLogApi;
 
@@ -473,7 +477,7 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
 
         BoilerTaskOrderDO boilerTaskOrderDO = boilerTaskOrderMapper.selectById(id);
         BoilerTaskOrderRespVO boilerTaskOrderRespVO = BeanUtils.toBean(boilerTaskOrderDO, BoilerTaskOrderRespVO.class);
-
+        boilerTaskOrderRespVO.setPayAmount(boilerTaskOrderDO.getActualAmount());
         // 邮箱
         boilerTaskOrderRespVO.setUnitEmail(boilerTaskOrderDO.getEmail());
 
@@ -711,17 +715,21 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
                 if (count != 0) {
                     return;
                 }
-                boilerPartType.forEach(partType -> {
+                // 用于保存部件类型和创建后的部件ID映射
+                Map<String, String> partIdMap = new HashMap<>();
+                for (DictDataRespDTO partType : boilerPartType) {
                     BoilerTaskOrderItemPartSaveReqVO boilerTaskOrderItemPartSaveReqVO = new BoilerTaskOrderItemPartSaveReqVO();
                     boilerTaskOrderItemPartSaveReqVO.setOrderId(item.getOrderId());
                     boilerTaskOrderItemPartSaveReqVO.setOrderItemId(item.getId());
                     boilerTaskOrderItemPartSaveReqVO.setPartName(partType.getLabel());
                     boilerTaskOrderItemPartSaveReqVO.setPartType(partType.getValue());
-                    boilerTaskOrderItemPartService.createBoilerTaskOrderItemPart(boilerTaskOrderItemPartSaveReqVO);
-                });
+                    String partId = boilerTaskOrderItemPartService.createBoilerTaskOrderItemPart(boilerTaskOrderItemPartSaveReqVO);
+                    // 保存部件类型和ID的映射关系
+                    partIdMap.put(partType.getValue(), partId);
+                }
 
                 // 部件自动带出检验项目
-                boilerTaskOrderItemPartService.addCheckReport(item);
+                boilerTaskOrderItemPartService.addCheckReport(item,partIdMap);
             }
         });
     }
@@ -735,109 +743,22 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
             return;
         }
 
-        //log.info("确认任务单,新增报告");
-        // 创建报告 默认年检
-//        int inspectionNature = 200;
-//        if (taskOrderDO.getCheckType() != null) {
-//            if (taskOrderDO.getCheckType() == 100) {
-//                inspectionNature = 100;
-//            } else if (taskOrderDO.getCheckType() == 300) {
-//                inspectionNature = 300;
-//            }
-//        }
-
-        String reportNo = generateOrderItemSubReportNo();
-
-//        List<InspectionNatureTemplateDetailRespVO> templateDetailRespVOS = inspectionNatureTemplateService.selectTemplate(inspectionNature, 1,300);
-//        List<BoilerOrderItemReportVO> orderItemReportVOS = new ArrayList<>();
-//        if (templateDetailRespVOS == null) {
-//            templateDetailRespVOS = new ArrayList<>();
-//        }
-//        String reportNo = generateOrderItemSubReportNo();
-//        //按报告类型排序
-//        templateDetailRespVOS.sort(Comparator.comparing(InspectionNatureTemplateDetailRespVO::getReportType));
-//        for (int i = 0; i < templateDetailRespVOS.size(); i++) {
-//            InspectionNatureTemplateDetailRespVO inspectionNatureTemplateDetailRespVO = templateDetailRespVOS.get(i);
-//            if (!"1".equals(inspectionNatureTemplateDetailRespVO.getIsDefault())) {
-//                continue;
-//            }
-//            // 检查模版上架状态
-//            if(inspectionNatureTemplateDetailRespVO.getStatus() != null && inspectionNatureTemplateDetailRespVO.getStatus() != 200){
-//                continue;
-//            }
-//
-//            // 没有匹配模版
-//            if (StringUtils.isBlank(inspectionNatureTemplateDetailRespVO.getTemplateName())) {
-//                continue;
-//            }
-//
-//            BoilerOrderItemReportVO orderItemReportVO = BeanUtils.toBean(templateDetailRespVOS.get(i), BoilerOrderItemReportVO.class);
-//            orderItemReportVO.setReportName(inspectionNatureTemplateDetailRespVO.getTemplateName());
-//            orderItemReportVO.setTemplateId(orderItemReportVO.getTemplateId());
-//            orderItemReportVO.setTaskStatus(taskOrderDO.getTaskStatus());
-//            orderItemReportVO.setReportNo(reportNo);
-//
-//            orderItemReportVOS.add(orderItemReportVO);
-//        }
-//
-//        if (!orderItemReportVOS.isEmpty()) {
-//            AtomicReference<Integer> index = new AtomicReference<>(1);
-//            List<BoilerTaskOrderItemReportDO> list = orderItemReportVOS.stream().map(item -> {
-//                BoilerTaskOrderItemReportDO taskOrderItemReportDO = new BoilerTaskOrderItemReportDO();
-//
-//                taskOrderItemReportDO.setReportNo(item.getReportNo());
-//                taskOrderItemReportDO.setOrderItemId(id);
-//                taskOrderItemReportDO.setOrderId(taskOrderDO.getId());
-//                taskOrderItemReportDO.setTemplateId(item.getTemplateId());
-//                taskOrderItemReportDO.setReportName(item.getReportName());
-//                taskOrderItemReportDO.setCheckDate(item.getCheckDate());
-//                //taskOrderItemReportDO.setTaskStatus(taskOrderDO.getTaskStatus());
-//                taskOrderItemReportDO.setTaskStatus(400); //400 待录入
-//                taskOrderItemReportDO.setReportType(item.getReportType());
-//                taskOrderItemReportDO.setIsApproval(item.getIsApproval());
-//                taskOrderItemReportDO.setIsRecheck(item.getIsRecheck());
-//                taskOrderItemReportDO.setIsRatify(item.getIsRatify());
-//                taskOrderItemReportDO.setSort(index.getAndSet(index.get() + 1));
-//                taskOrderItemReportDO.setPrepareJson(item.getPrepareJson());
-//                taskOrderItemReportDO.setIsAutoAmount(item.getIsAutoAmount());
-//                //taskOrderItemReportDO.setTaskStatus(TaskOrderStatusEnum.PRE_CONFIRM.getStatus());
-//
-//                return taskOrderItemReportDO;
-//            }).toList();
-//            taskOrderItemReportMapper.insertBatch(list);
-//
-//            list.forEach(item -> {
-//
-//                //添加报告检验员
-//                BoilerTaskOrderItemReportUserDO userDO = new BoilerTaskOrderItemReportUserDO();
-//                userDO.setUserId(getLoginUserId());
-//                userDO.setReportId(item.getId());
-//                boilerTaskOrderItemReportUserMapper.insert(userDO);
-//
-//                //生成 报表数据
-//                BoilerTaskOrderSyncReportVO syncReportVO = new BoilerTaskOrderSyncReportVO();
-//                syncReportVO.setRefId(item.getId());
-//                syncReportVO.setReportType("record");
-//                com.alibaba.fastjson2.JSONObject params = new com.alibaba.fastjson2.JSONObject();
-//                params.put("checkUserId",getLoginUserId());
-//                syncReportVO.setParams(params);
-//                syncReportData(syncReportVO);
-//
-//            });
-//        }
-
         //根据前台约检勾选的检验项目生成数据
         List<EquipBoilerSchedulingCheckDO> checkDOList = equipBoilerSchedulingCheckService.lambdaQuery().eq(EquipBoilerSchedulingCheckDO::getTaskOrderId, taskOrderDO.getId()).list();
         AtomicReference<Integer> index = new AtomicReference<>(1);
         List<BoilerTaskOrderItemReportDO> insertList = new ArrayList<>();
         if (!checkDOList.isEmpty()){
 
+            String projectCode = getProjectCodeByTaskOrderId(taskOrderDO.getId());
+            String reportNo = generateOrderItemSubReportNo(taskOrderDO.getDeptId(),taskOrderDO.getCheckDate(),projectCode);
+
             checkDOList.forEach(item -> {
                 //生成检验项目
                 if (item.getCheckId() != null){
 
                     //checkId是记录和报告关联的主键ID
                     BoilerConnectRecordReportDO recordReportDO = boilerConnectRecordReportMapper.selectById(item.getCheckId());
+
                     if (recordReportDO != null){
                         if (recordReportDO.getRecordTemplateId()!=null){
 
@@ -847,7 +768,9 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
                         addReport1.setOrderItemId(id);
                         addReport1.setTemplateId(dynamicTbDO.getId());
                         // 将 String 类型的 fee 转换为 BigDecimal
-                        addReport1.setFee(ConversionUtil.convert(recordReportDO.getFee()));
+//                      addReport1.setFee(ConversionUtil.convert(recordReportDO.getFee()));
+                        addReport1.setFee(item.getFee());
+                        addReport1.setFeeType(item.getType());
                         addReport1.setOrderId(taskOrderDO.getId());
                         addReport1.setTaskStatus(500);
                         addReport1.setReportNo(reportNo);
@@ -868,7 +791,9 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
 //                            addReport1.setTemplateId(dynamicTbDO.getId());
                             addReport1.setReportTemplateId(dynamicTbDO.getId());
                             // 将 String 类型的 fee 转换为 BigDecimal
-                            addReport1.setFee(ConversionUtil.convert(recordReportDO.getFee()));
+//                            addReport1.setFee(ConversionUtil.convert(recordReportDO.getFee()));
+                            addReport1.setFee(item.getFee());
+                            addReport1.setFeeType(item.getType());
                             addReport1.setOrderId(taskOrderDO.getId());
                             addReport1.setTaskStatus(520);
                             addReport1.setReportNo(reportNo);
@@ -1136,6 +1061,14 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
                     .map(templateDO -> {
                         // 3. 使用构建器模式创建对象(避免重复set调用)
                         BoilerOrderItemCostInfoRepsVO repsVO = createBaseVO(reqVO, templateDO);
+                        natureTemplateDOList.stream()
+                                .filter(natureTemplateDO -> natureTemplateDO.getTemplateId().equals(templateDO.getId()))
+                                .findFirst()
+                                .ifPresent(natureTemplateDO -> {
+                                    // 找到匹配的检验性质模版
+                                    repsVO.setUse("1".equals(natureTemplateDO.getIsDefault()));
+                                });
+                        repsVO.setUse(repsVO.getUse() || "1".equals(templateDO.getIsMainProject()));
                         // 4. 从Map中直接查找匹配项
                         BoilerTaskOrderItemReportDO matchedReport = reportMap.get(templateDO.getId());
                         if (matchedReport != null) {
@@ -1152,7 +1085,17 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
             List<BoilerOrderItemCostInfoRepsVO> resultList = templateDOList.stream()
                     .map(templateDO -> {
                         // 3. 使用构建器模式创建对象(避免重复set调用)
-                        return createBaseVO(reqVO, templateDO);
+                        BoilerOrderItemCostInfoRepsVO baseVO = createBaseVO(reqVO, templateDO);
+                        natureTemplateDOList.stream()
+                                .filter(natureTemplateDO -> natureTemplateDO.getTemplateId().equals(templateDO.getId()))
+                                .findFirst()
+                                .ifPresent(natureTemplateDO -> {
+                                    // 找到匹配的检验性质模版
+                                    baseVO.setUse("1".equals(natureTemplateDO.getIsDefault()));
+                                });
+                        baseVO.setUse(baseVO.getUse() || "1".equals(templateDO.getIsMainProject()));
+
+                        return baseVO;
                     })
                     .collect(Collectors.toCollection(ArrayList::new)); // 预分配空间
             // 外部结果集引用
@@ -1259,7 +1202,7 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
         Map<String, BoilerTaskOrderItemDO> itemDOMap = orderItemDOS.stream()
                 .collect(Collectors.toMap(BoilerTaskOrderItemDO::getId, Function.identity()));
 
-        addReportVo(orderItemEnterVO,orderItemDOS,itemDOMap,orderItemEnterVO.getPartType());
+        addReportVo(orderItemEnterVO,orderItemDOS,itemDOMap,orderItemEnterVO.getItemPartId());
         this.updateOrderFee(orderItemDOS.get(0).getOrderId());
 
     }
@@ -1980,7 +1923,7 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
                     taskOrderItemDO.setBoilerType(equipContainerDO.getType());
                 }
 
-                String reportNo = generateOrderItemReportNo();
+                String reportNo = generateOrderItemReportNo(taskOrderDO.getDeptId(),taskOrderDO.getCheckDate());
                 taskOrderItemDO.setReportNo(reportNo);
                 addOrderItems.add(taskOrderItemDO);
             }
@@ -2105,24 +2048,9 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
                 }
             }
 
-//            if (CollUtil.isNotEmpty(reportDOList) && vo.getReportType() != null) {
-//                List<BoilerTaskOrderItemReportDO> reportCheck = new ArrayList<>();
-//                reportDOList.forEach(v -> {
-//                    if (v.getReportType().equals(vo.getReportType()) && !Integer.valueOf(900).equals(vo.getReportType())) {
-//                        //todo 后续需要更改为支持多份作业指导书
-////                    if (v.getReportType().equals(vo.getReportType()) && !Arrays.asList(700, 900).contains(vo.getReportType())) {
-//                        reportCheck.add(v);
-//                    }
-//                });
-//                if (CollUtil.isNotEmpty(reportCheck)) {
-//                    throw new ServiceException(500, "该设备项已有该类型的报告");
-//                }
-//            }
-
             BoilerTaskOrderItemReportDO addReport = new BoilerTaskOrderItemReportDO();
             addReport.setOrderItemId(vo.getOrderItemId());
             addReport.setTemplateId(vo.getTemplateId());
-//            addReport.setFee(vo.getFee());
             addReport.setOrderId(orderItemDOS.get(0).getOrderId());
             addReport.setTaskStatus(TaskOrderStatusEnum.ENTER.getStatus());
             addReport.setSort(count + 1);
@@ -2135,7 +2063,11 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
                 BoilerConnectRecordReportDO connectDO = boilerConnectRecordReportMapper.selectById(vo.getConnectId());
                 if (connectDO !=  null){
                     addReport.setReportName(connectDO.getProjectName());
-                    addReport.setFee(ConversionUtil.convert(connectDO.getFee()));
+                    if (vo.getFee() == null || vo.getFee().compareTo(BigDecimal.ZERO) == 0) {
+                        addReport.setFee(ConversionUtil.convert(connectDO.getFee()));
+                    } else {
+                        addReport.setFee(vo.getFee());
+                    }
                 }
                 addReport.setReportType(reportTemplateDO.getTbType());
 //                addReport.setIsApproval(reportTemplateDO.getIsApproval());
@@ -2477,16 +2409,22 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
                 boilerTaskOrderItemMapper.updateById(taskOrderItem);
             }
 
-
+            BoilerTaskOrderDO boilerTaskOrderDO = boilerTaskOrderMapper.selectById(id);
+            // 免征
+            boolean isExempt = 300 == boilerTaskOrderDO.getFeeNature();
             BigDecimal orderFee = new BigDecimal(0);
             for (BoilerTaskOrderItemReportDO reportDO : reportDOList) {
                 if (reportDO.getFee() != null) {
+                    // 免征不收法定收费
+                    if (isExempt && "1".equals(reportDO.getFeeType())) {
+                        continue;
+                    }
                     orderFee = orderFee.add(reportDO.getFee());
                 }
             }
             BoilerTaskOrderDO taskOrderDO = new BoilerTaskOrderDO();
             taskOrderDO.setId(id);
-            taskOrderDO.setServiceAmount(orderFee);
+            taskOrderDO.setActualAmount(orderFee);
             boilerTaskOrderMapper.updateById(taskOrderDO);
         }
     }
@@ -2754,7 +2692,7 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
         updateObj.setTaskStatus(TaskOrderStatusEnum.CANCEL.getStatus());
         updateObj.setStatus(400);
         updateObj.setReturnReason(orderItemRatifyVO.getReason());
-
+        String boilerTaskOrderReportDOId = taskOrderItemReportMapper.selectById(orderItemRatifyVO.getId()).getOrderId();
         if (orderItemRatifyVO.getReportType() != null && orderItemRatifyVO.getReportType() == TaskOrderItemReportTypeEnum.INSPECTION_PLAN.getType().intValue()) {
             BoilerTaskOrderReportDO reportDO = taskOrderReportMapper.selectById(orderItemRatifyVO.getId());
             BoilerTaskOrderReportDO bean = BeanUtils.toBean(updateObj, BoilerTaskOrderReportDO.class);
@@ -2798,6 +2736,7 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
         taskOrderItemReportRecordDO.setResult(100);
         taskOrderItemReportRecordDO.setRemark(orderItemRatifyVO.getReason());
         taskOrderItemReportRecordMapper.insert(taskOrderItemReportRecordDO);
+        this.updateOrderFee(boilerTaskOrderReportDOId);
     }
 
     @Override
@@ -2805,10 +2744,11 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
 
         BoilerTaskOrderDO taskOrderDO = BeanUtils.toBean(acceptOrderDO, BoilerTaskOrderDO.class);
         taskOrderDO.setId(null);
-        taskOrderDO.setOrderNo(generateOrderNo());
+        taskOrderDO.setOrderNo(generateOrderNo(taskOrderDO.getCheckDate()));
         taskOrderDO.setCheckDate(acceptOrderDO.getAppointmentDate());
         taskOrderDO.setAcceptOrderId(acceptOrderDO.getId());
         taskOrderDO.setEquipMainType(200); //200锅炉
+        taskOrderDO.setActualAmount(acceptOrderDO.getShouldAmount().add(acceptOrderDO.getServiceAmount()));
         //获取约检确认单计划id
         AppointmentConfirmOrderDO appointmentConfirmOrderDO = appointmentConfirmOrderMapper.selectById(acceptOrderDO.getAppointmentId());
         if (ObjectUtil.isNotEmpty(appointmentConfirmOrderDO)) {
@@ -2836,7 +2776,7 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
             item.setBoilerType(equipBoilerDO.getType());
 
             if (itemMap.get(item.getEquipCode()) == null) {
-                String reportNo = generateOrderItemReportNo();
+                String reportNo = generateOrderItemReportNo(taskOrderDO.getDeptId(), taskOrderDO.getCheckDate());
                 item.setReportNo(reportNo);
                 taskOrderItemDOListV2.add(item);
             }
@@ -2906,20 +2846,79 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
 
     }
 
-    @Override
-    public String generateOrderNo() {
-        String acceptNo = "RW" + redisService.generateAcceptanceNo(RedisKeyEnums.TASK_ORDER.getKey());
+    public String generateOrderNo(LocalDate checkDate) {
+
+        // 生成日期部分,优先使用检验时间,如果为空则使用当前时间
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy"); // 4位年
+        Date dateToUse = (checkDate != null) ?
+                Date.from(checkDate.atStartOfDay(ZoneId.systemDefault()).toInstant()) :
+                new Date();
+        String dateStr = simpleDateFormat.format(dateToUse);
+
+        String acceptNo = "RW" + dateStr + redisService.generateAcceptanceNo(RedisKeyEnums.TASK_ORDER.getKey());
         return acceptNo;
     }
 
-    private String generateOrderItemReportNo() {
-        String acceptNo = "0714-" + redisService.generateAcceptanceNo(RedisKeyEnums.TASK_ORDER_ITEM.getKey());
+    private String generateOrderItemReportNo(String deptId, LocalDate checkDate) {
+
+        // 获取部门代码
+        CommonResult<DeptRespDTO> deptResult = deptApi.getDept(deptId);
+        String deptCode = deptResult.getCheckedData().getCode();
+        // 取前两位作为部门代码
+        deptCode = deptCode.substring(0, 2);
+
+        // 生成日期部分,优先使用检验时间,如果为空则使用当前时间
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy"); // 4位年
+        Date dateToUse = (checkDate != null) ?
+                Date.from(checkDate.atStartOfDay(ZoneId.systemDefault()).toInstant()) :
+                new Date();
+        String dateStr = simpleDateFormat.format(dateToUse);
+
+        // 生成Redis键:TASK_ORDER + 部门代码 + 日期
+        String redisKey = RedisKeyEnums.TASK_ORDER_ITEM.getKey() + deptCode + dateStr;
+
+        String acceptNo = deptCode + "05-" + dateStr + redisService.generateAcceptanceNo(redisKey);
         return acceptNo;
     }
 
-    private String generateOrderItemSubReportNo() {
-        String acceptNo = "0714-" + redisService.generateAcceptanceNo(RedisKeyEnums.TASK_ORDER_ITEM_SUB.getKey());
-        return acceptNo;
+    private String generateOrderItemSubReportNo(String deptId, LocalDate checkDate,String projectCode) {
+
+        // 获取部门代码
+        CommonResult<DeptRespDTO> deptResult = deptApi.getDept(deptId);
+        String deptCode = deptResult.getCheckedData().getCode();
+        // 取前两位作为部门代码
+        deptCode = deptCode.substring(0, 2);
+
+        // 生成日期部分,优先使用检验时间,如果为空则使用当前时间
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy"); // 4位年
+        Date dateToUse = (checkDate != null) ?
+                Date.from(checkDate.atStartOfDay(ZoneId.systemDefault()).toInstant()) :
+                new Date();
+        String dateStr = simpleDateFormat.format(dateToUse);
+
+        // 生成Redis键:TASK_ORDER + 部门代码 + 日期
+        String redisKey = RedisKeyEnums.TASK_ORDER_ITEM_SUB.getKey() + deptCode + dateStr;
+
+        int maxAttempts = 10; // 最大尝试次数,防止死循环
+        int attemptCount = 0;
+        while (attemptCount < maxAttempts) {
+            attemptCount++;
+
+            String reportNo = deptCode + projectCode + "-" + dateStr + redisService.generateAcceptanceNo(redisKey);
+            log.info("生成报告编号:" + reportNo);
+            Long count = taskOrderItemReportMapper.selectCount(new LambdaQueryWrapperX<BoilerTaskOrderItemReportDO>().
+                    eq(BoilerTaskOrderItemReportDO::getReportNo,reportNo)
+            );
+
+            if (count == 0) {
+                // 生成报告编号不存在,可以使用
+                return reportNo;
+            }
+        }
+
+        String reportNo = deptCode + projectCode + "-" + dateStr + redisService.generateAcceptanceNo(redisKey);
+        log.info("生成报告编号:" + reportNo);
+        return reportNo;
     }
 
     private BoilerOrderItemCostInfoRepsVO createBaseVO(BoilerOrderItemCostInfoReqVO reqVO, BoilerConnectRecordReportDO templateDO) {
@@ -2936,6 +2935,12 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
         //vo.setFormulaTemplateUrl(templateDO.getFormulaTemplateUrl());
         vo.setReportType(recordDO.getTbType());
         vo.setUse(Boolean.FALSE); // 默认值
+            // 将 String 类型的 fee 转换为 BigDecimal
+            if (StringUtils.isNotBlank(templateDO.getFee())) {
+                vo.setFee(new BigDecimal(templateDO.getFee()));
+            } else {
+                vo.setFee(BigDecimal.ZERO);
+            }
         //vo.setRecordTemplateUrl(templateDO.getRecordTemplateUrl());
         //vo.setReportTemplateUrl(templateDO.getReportTemplateUrl());
         }else if (templateDO.getReportTemplateId() != null){
@@ -2947,6 +2952,12 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
             vo.setIsAutoAmount("0");
             vo.setReportType(recordDO.getTbType());
             vo.setUse(Boolean.FALSE); // 默认值
+            // 将 String 类型的 fee 转换为 BigDecimal
+            if (StringUtils.isNotBlank(templateDO.getFee())) {
+                vo.setFee(new BigDecimal(templateDO.getFee()));
+            } else {
+                vo.setFee(BigDecimal.ZERO);
+            }
         }
         return vo;
     }
@@ -3153,75 +3164,7 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
         }
 
         if (itemReportDOS == null || itemReportDOS.isEmpty()) {
-            // 创建报告 默认年检
-            int inspectionNature = 200;
-
-            if (taskOrderDO.getCheckType() != null) {
-                if (taskOrderDO.getCheckType() == 100) {
-                    inspectionNature = 100;
-                } else if (taskOrderDO.getCheckType() == 300) {
-                    inspectionNature = 300;
-                }
-            }
-
-            List<InspectionNatureTemplateDetailRespVO> templateDetailRespVOS = inspectionNatureTemplateService.selectTemplate(inspectionNature, 1,300);
-            List<BoilerOrderItemReportVO> orderItemReportVOS = new ArrayList<>();
-            if (templateDetailRespVOS == null) {
-                templateDetailRespVOS = new ArrayList<>();
-            }
-            String reportNo = generateOrderItemSubReportNo();
-            for (int i = 0; i < templateDetailRespVOS.size(); i++) {
-                InspectionNatureTemplateDetailRespVO inspectionNatureTemplateDetailRespVO = templateDetailRespVOS.get(i);
-                if (!"1".equals(inspectionNatureTemplateDetailRespVO.getIsDefault())) {
-                    continue;
-                }
-                // 没有匹配模版
-                if (StringUtils.isBlank(inspectionNatureTemplateDetailRespVO.getTemplateName())) {
-                    continue;
-                }
-
-                BoilerOrderItemReportVO orderItemReportVO = BeanUtils.toBean(templateDetailRespVOS.get(i), BoilerOrderItemReportVO.class);
-                orderItemReportVO.setCheckUsers(checkUsers);
-                orderItemReportVO.setReportName(inspectionNatureTemplateDetailRespVO.getTemplateName());
-                orderItemReportVO.setTemplateId(orderItemReportVO.getTemplateId());
-                orderItemReportVO.setTaskStatus(taskOrderDO.getTaskStatus());
-                orderItemReportVO.setReportNo(reportNo);
-
-                if (orderItemReportVO.getReportType() != null && orderItemReportVO.getReportType() == 100 && orderItemRespVO.getMainCheckerUser() != null) {
-                    ArrayList<AdminUserRespDTO> adminUserRespDTOS = new ArrayList<>();
-                    adminUserRespDTOS.add(orderItemRespVO.getMainCheckerUser());
-                    orderItemReportVO.setCheckUsers(adminUserRespDTOS);
-                }
-                orderItemReportVOS.add(orderItemReportVO);
-            }
-            orderItemDetailVO.setReportList(orderItemReportVOS);
 
-            if (!orderItemReportVOS.isEmpty()) {
-                AtomicReference<Integer> index = new AtomicReference<>(1);
-                List<BoilerTaskOrderItemReportDO> list = orderItemReportVOS.stream().map(item -> {
-                    BoilerTaskOrderItemReportDO taskOrderItemReportDO = new BoilerTaskOrderItemReportDO();
-
-                    taskOrderItemReportDO.setReportNo(item.getReportNo());
-                    taskOrderItemReportDO.setOrderItemId(id);
-                    taskOrderItemReportDO.setOrderId(taskOrderDO.getId());
-
-                    taskOrderItemReportDO.setTemplateId(item.getTemplateId());
-                    taskOrderItemReportDO.setReportName(item.getReportName());
-                    taskOrderItemReportDO.setTaskStatus(taskOrderDO.getTaskStatus());
-                    taskOrderItemReportDO.setReportType(item.getReportType());
-                    taskOrderItemReportDO.setIsApproval(item.getIsApproval());
-                    taskOrderItemReportDO.setIsRecheck(item.getIsRecheck());
-                    taskOrderItemReportDO.setIsRatify(item.getIsRatify());
-                    taskOrderItemReportDO.setSort(index.getAndSet(index.get() + 1));
-                    taskOrderItemReportDO.setPrepareJson(item.getPrepareJson());
-                    taskOrderItemReportDO.setIsAutoAmount(item.getIsAutoAmount());
-                    taskOrderItemReportDO.setFee(item.getFee());
-
-
-                    return taskOrderItemReportDO;
-                }).toList();
-                taskOrderItemReportMapper.insertBatch(list);
-            }
         } else {
             List<BoilerOrderItemReportVO> orderItemReportVOS = itemReportDOS.stream().map(itemReportDO -> {
                 BoilerOrderItemReportVO orderItemReportVO = BeanUtils.toBean(itemReportDO, BoilerOrderItemReportVO.class);
@@ -3697,6 +3640,12 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
         addReport.setPrepareJson(taskOrderMajorIssuesVO.getPrepareJson());
         addReport.setReportUrl(taskOrderMajorIssuesVO.getReportUrl());
 
+        String reportNo = "";
+        BoilerTaskOrderItemReportDO mainReport = taskOrderItemReportMapper.selectOne(new LambdaQueryWrapperX<BoilerTaskOrderItemReportDO>().
+                eq(BoilerTaskOrderItemReportDO::getOrderId, taskOrderMajorIssuesVO.getOrderId()), false);
+        if (mainReport != null) {
+            reportNo = mainReport.getReportNo();
+        }
 
         // 检验方案
         if (dynamicTbDO.getTbType() != null && TaskOrderItemReportTypeEnum.INSPECTION_PLAN.getType().intValue() == dynamicTbDO.getTbType()) {
@@ -3709,7 +3658,7 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
             if (StringUtils.isNotEmpty(taskOrderMajorIssuesVO.getReportName())) {
                 taskOrderReportDO.setReportName(taskOrderMajorIssuesVO.getReportName());
             }
-//            taskOrderReportDO.setReportNo(generateOrderItemInspectionPlanReportNo(addReport.getOrderId()));
+            taskOrderReportDO.setReportNo(reportNo);
             taskOrderReportMapper.insert(taskOrderReportDO);
 
             //生成报表数据 -- 检验方案表不同暂不通用
@@ -3734,7 +3683,6 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
             return taskOrderReportDO.getId();
         }
 
-        String reportNo = generateOrderItemSubReportNo();
         addReport.setReportNo(reportNo);
         taskOrderItemReportMapper.insert(addReport);
 
@@ -6132,4 +6080,38 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
         return null;
     }
 
+    /**
+     * 根据任务单ID获取项目代码
+     * 查询满足checkid和BoilerConnectRecordReportDO的ID相同且isMainProject为1的记录,返回其projectCode
+     * 如果没有找到主项目,则返回默认值"05"
+     *
+     * @param taskOrderId 任务单ID
+     * @return 项目代码
+     */
+    private String getProjectCodeByTaskOrderId(String taskOrderId) {
+        List<EquipBoilerSchedulingCheckDO> checkDOList = equipBoilerSchedulingCheckService.lambdaQuery()
+                .eq(EquipBoilerSchedulingCheckDO::getTaskOrderId, taskOrderId)
+                .list();
+        
+        if (!checkDOList.isEmpty()) {
+            List<String> checkIds = checkDOList.stream()
+                    .map(EquipBoilerSchedulingCheckDO::getCheckId)
+                    .filter(Objects::nonNull)
+                    .toList();
+
+            if (!checkIds.isEmpty()) {
+                List<BoilerConnectRecordReportDO> mainProjectList = boilerConnectRecordReportService.lambdaQuery()
+                        .in(BoilerConnectRecordReportDO::getId, checkIds)
+                        .eq(BoilerConnectRecordReportDO::getIsMainProject, true)
+                        .list();
+
+                if (!mainProjectList.isEmpty()) {
+                    return mainProjectList.get(0).getProjectCode();
+                }
+            }
+        }
+
+        return "05";
+    }
+
 }

+ 1 - 1
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorderitempart/BoilerTaskOrderItemPartService.java

@@ -61,5 +61,5 @@ public interface BoilerTaskOrderItemPartService extends IService<BoilerTaskOrder
      * 添加检验项目
      * @param item
      */
-    void addCheckReport(BoilerTaskOrderItemDO item);
+    void addCheckReport(BoilerTaskOrderItemDO item,Map<String, String> partIdMap);
 }

+ 2 - 1
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorderitempart/BoilerTaskOrderItemPartServiceImpl.java

@@ -100,7 +100,7 @@ public class BoilerTaskOrderItemPartServiceImpl extends ServiceImpl<BoilerTaskOr
     }
 
     @Override
-    public void addCheckReport(BoilerTaskOrderItemDO item) {
+    public void addCheckReport(BoilerTaskOrderItemDO item,Map<String, String> partIdMap) {
         InspectionNatureDO inspectionNatureDO = inspectionNatureService.getOne(new LambdaQueryWrapper<InspectionNatureDO>()
                 .eq(InspectionNatureDO::getInspectionNature,"100")
                 .eq(InspectionNatureDO::getEquipmentCategory,"300")
@@ -114,6 +114,7 @@ public class BoilerTaskOrderItemPartServiceImpl extends ServiceImpl<BoilerTaskOr
                 for (String part : parts) {
                     BoilerOrderItemAddReportV2VO boilerOrderItemAddReportV2VO = new BoilerOrderItemAddReportV2VO();
                     boilerOrderItemAddReportV2VO.setPartType(part);
+                    boilerOrderItemAddReportV2VO.setItemPartId(partIdMap.get(part));
                     boilerOrderItemAddReportV2VO.setType(200);
                     BoilerOrderItemAddReportVO boilerOrderItemAddReportVO = new BoilerOrderItemAddReportVO();
                     String templateId = templateDetailRespVO.getTemplateId();

+ 10 - 5
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/common/RedisServiceImpl.java

@@ -16,13 +16,12 @@ public class RedisServiceImpl implements RedisService{
 
     @Override
     public String generateAcceptanceNo(String redisKey) {
-        //获取当天的流水号
+
         String value = stringRedisTemplate.opsForValue().get(redisKey);
-        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy");
-        String format = simpleDateFormat.format(new Date());
+
         if (StringUtils.isBlank(value)) {
             stringRedisTemplate.opsForValue().set(redisKey, "000001");
-            return format + "-000001";
+            return "-000001";
         } else {
             Integer numberValue = Integer.valueOf(value) + 1;
             String serialNum = "";
@@ -32,10 +31,16 @@ public class RedisServiceImpl implements RedisService{
                 serialNum = "0000" + numberValue;
             } else if ((numberValue + "").length() == 3) {
                 serialNum = "000" + numberValue;
+            } else if ((numberValue + "").length() == 4) {
+                serialNum = "00" + numberValue;
+            } else if ((numberValue + "").length() == 5) {
+                serialNum = "0" + numberValue;
+            } else {
+                serialNum = "" + numberValue;
             }
 
             stringRedisTemplate.opsForValue().set(redisKey, serialNum);
-            return format + "-" + serialNum;
+            return "-" + serialNum;
         }
     }
 

+ 13 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamictb/DynamicTbServiceImpl.java

@@ -76,6 +76,8 @@ public class DynamicTbServiceImpl extends ServiceImpl<DynamicTbMapper, DynamicTb
 
     @Override
     public String createDynamicTb(DynamicTbSaveReqVO createReqVO) {
+        // 校验tbCode唯一性
+        validateTbCodeUnique(createReqVO.getTbCode());
         // 插入
         DynamicTbDO dynamicTb = BeanUtils.toBean(createReqVO, DynamicTbDO.class);
         dynamicTbMapper.insert(dynamicTb);
@@ -154,6 +156,17 @@ public class DynamicTbServiceImpl extends ServiceImpl<DynamicTbMapper, DynamicTb
         }
     }
 
+    private void validateTbCodeUnique(String tbCode) {
+        if (StrUtil.isEmpty(tbCode)) {
+            return;
+        }
+        Long count = dynamicTbMapper.selectCount(new LambdaQueryWrapperX<DynamicTbDO>()
+                .eq(DynamicTbDO::getTbCode, tbCode));
+        if (count > 0) {
+            throw exception(DYNAMIC_TB_CODE_EXISTS);
+        }
+    }
+
     @Override
     public DynamicTbRespVO getDynamicTb(String id) {
         DynamicTbDO dynamicTbDO = dynamicTbMapper.selectById(id);

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

@@ -272,6 +272,11 @@ public class EquipBoilerSchedulingServiceImpl extends ServiceImpl<EquipBoilerSch
                         .setFeeType(taskVO.getFeeType())
                         .setFeeNature(taskVO.getFeeNature())
                         .setActualAmount(taskVO.getActualAmount())
+                        .setChargeType(taskVO.getChargeType())
+                        .setIsExempt(taskVO.getIsExempt())
+                        .setShouldAmount(taskVO.getShouldAmount())
+                        .setServiceAmount(taskVO.getServiceAmount())
+                        .setReduceFee(taskVO.getReduceFee())
                 );
             }
         }
@@ -334,6 +339,7 @@ public class EquipBoilerSchedulingServiceImpl extends ServiceImpl<EquipBoilerSch
                     EquipBoilerSchedulingCheckDO checkDO = new EquipBoilerSchedulingCheckDO();
                     checkDO.setEquipId(taskVO.getEquipIds());
                     checkDO.setSchedulingId(item.getId());
+                    checkDO.setType(checkItem.getType());
                     checkDO.setCheckId(checkItem.getReportId());
                     if (checkItem.getNewAmount() != null){
                         checkDO.setFee(BigDecimal.valueOf(checkItem.getNewAmount()));
@@ -683,9 +689,21 @@ public class EquipBoilerSchedulingServiceImpl extends ServiceImpl<EquipBoilerSch
 
             // 获取检验收费
             EquipBoilerSchedulingFeeDO equipBoilerSchedulingFeeDO = equipBoilerSchedulingFeeMapper.getBySchedulingId(schedulingDO.getId());
-            appointmentConfirmOrderDO.setFeeType(equipBoilerSchedulingFeeDO.getFeeType());
-            appointmentConfirmOrderDO.setActualAmount(equipBoilerSchedulingFeeDO.getActualAmount());
-            appointmentConfirmOrderDO.setFeeNature(equipBoilerSchedulingFeeDO.getFeeNature());
+            if (equipBoilerSchedulingFeeDO.getChargeType() != null){
+                appointmentConfirmOrderDO.setFeeType(Integer.valueOf(equipBoilerSchedulingFeeDO.getChargeType() + "00"));
+            }
+            appointmentConfirmOrderDO.setShouldAmount(equipBoilerSchedulingFeeDO.getShouldAmount());
+            appointmentConfirmOrderDO.setServiceAmount(equipBoilerSchedulingFeeDO.getServiceAmount());
+            appointmentConfirmOrderDO.setReduceFee(equipBoilerSchedulingFeeDO.getReduceFee());
+//            appointmentConfirmOrderDO.setFeeNature(equipBoilerSchedulingFeeDO.getFeeNature());
+            if (equipBoilerSchedulingFeeDO.getIsExempt() != null){
+                appointmentConfirmOrderDO.setFeeNature(switch (equipBoilerSchedulingFeeDO.getIsExempt()){
+                    case "0" -> 200;
+                    case "1" -> 300;
+                    default ->
+                            null;
+                });
+            }
 
             // 不需要前台约检确认
             if (!schedulingDO.getHasOrderConfirm()){

+ 21 - 3
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/equippipescheduling/EquipPipeSchedulingServiceImpl.java

@@ -362,6 +362,11 @@ public class EquipPipeSchedulingServiceImpl extends ServiceImpl<EquipPipeSchedul
                         .setFeeType(taskVO.getFeeType())
                         .setFeeNature(taskVO.getFeeNature())
                         .setActualAmount(taskVO.getActualAmount())
+                        .setChargeType(taskVO.getChargeType())
+                        .setIsExempt(taskVO.getIsExempt())
+                        .setShouldAmount(taskVO.getShouldAmount())
+                        .setServiceAmount(taskVO.getServiceAmount())
+                        .setReduceFee(taskVO.getReduceFee())
                 );
             }
         }
@@ -431,6 +436,7 @@ public class EquipPipeSchedulingServiceImpl extends ServiceImpl<EquipPipeSchedul
                     checkDO.setEquipId(taskVO.getEquipIds());
                     checkDO.setSchedulingId(item.getId());
                     checkDO.setCheckId(checkItem.getReportId());
+                    checkDO.setType(checkItem.getType());
                     if (checkItem.getNewAmount() != null){
                         checkDO.setFee(BigDecimal.valueOf(checkItem.getNewAmount()));
                     }else {
@@ -704,9 +710,21 @@ public class EquipPipeSchedulingServiceImpl extends ServiceImpl<EquipPipeSchedul
 
             // 获取检验收费
             EquipPipeSchedulingFeeDO equipPipeSchedulingFeeDO = equipPipeSchedulingFeeMapper.getBySchedulingId(schedulingDO.getId());
-            appointmentConfirmOrderDO.setFeeType(equipPipeSchedulingFeeDO.getFeeType());
-            appointmentConfirmOrderDO.setActualAmount(equipPipeSchedulingFeeDO.getActualAmount());
-            appointmentConfirmOrderDO.setFeeNature(equipPipeSchedulingFeeDO.getFeeNature());
+            if (equipPipeSchedulingFeeDO.getChargeType() != null){
+                appointmentConfirmOrderDO.setFeeType(Integer.valueOf(equipPipeSchedulingFeeDO.getChargeType() + "00"));
+            }
+            appointmentConfirmOrderDO.setShouldAmount(equipPipeSchedulingFeeDO.getShouldAmount());
+            appointmentConfirmOrderDO.setServiceAmount(equipPipeSchedulingFeeDO.getServiceAmount());
+            appointmentConfirmOrderDO.setReduceFee(equipPipeSchedulingFeeDO.getReduceFee());
+//            appointmentConfirmOrderDO.setFeeNature(equipPipeSchedulingFeeDO.getFeeNature());
+            if (equipPipeSchedulingFeeDO.getIsExempt() != null){
+                appointmentConfirmOrderDO.setFeeNature(switch (equipPipeSchedulingFeeDO.getIsExempt()){
+                    case "0" -> 200;
+                    case "1" -> 300;
+                    default ->
+                            null;
+                });
+            }
             appointmentConfirmOrderDO.setEquipNumBoiler(equipPipeSchedulingItemDOS.size());
             // 创建约检确认单
             String confirmOrderId = appointmentConfirmOrderService.create(appointmentConfirmOrderDO);

+ 56 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/inspectionnaturetype/InspectionNatureTypeService.java

@@ -0,0 +1,56 @@
+package cn.start.tz.module.pressure2.service.inspectionnaturetype;
+
+import java.util.*;
+import jakarta.validation.*;
+import cn.start.tz.module.pressure2.controller.admin.inspectionnaturetype.vo.*;
+import cn.start.tz.module.pressure2.dal.dataobject.inspectionnaturetype.InspectionNatureTypeDO;
+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 InspectionNatureTypeService extends IService<InspectionNatureTypeDO>  {
+
+    /**
+     * 创建检验性质类型关联
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    String createInspectionNatureType(@Valid InspectionNatureTypeSaveReqVO createReqVO);
+
+    /**
+     * 更新检验性质类型关联
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateInspectionNatureType(@Valid InspectionNatureTypeSaveReqVO updateReqVO);
+
+    /**
+     * 删除检验性质类型关联
+     *
+     * @param id 编号
+     */
+    void deleteInspectionNatureType(String id);
+
+    /**
+     * 获得检验性质类型关联
+     *
+     * @param id 编号
+     * @return 检验性质类型关联
+     */
+    InspectionNatureTypeDO getInspectionNatureType(String id);
+
+    /**
+     * 获得检验性质类型关联分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 检验性质类型关联分页
+     */
+    PageResult<InspectionNatureTypeDO> getInspectionNatureTypePage(InspectionNatureTypePageReqVO pageReqVO);
+
+}

+ 75 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/inspectionnaturetype/InspectionNatureTypeServiceImpl.java

@@ -0,0 +1,75 @@
+package cn.start.tz.module.pressure2.service.inspectionnaturetype;
+
+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.inspectionnaturetype.vo.*;
+import cn.start.tz.module.pressure2.dal.dataobject.inspectionnaturetype.InspectionNatureTypeDO;
+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.inspectionnaturetype.InspectionNatureTypeMapper;
+
+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 InspectionNatureTypeServiceImpl extends ServiceImpl<InspectionNatureTypeMapper, InspectionNatureTypeDO> implements InspectionNatureTypeService {
+
+    @Resource
+    private InspectionNatureTypeMapper inspectionNatureTypeMapper;
+
+    @Override
+    public String createInspectionNatureType(InspectionNatureTypeSaveReqVO createReqVO) {
+        // 插入
+        InspectionNatureTypeDO inspectionNatureType = BeanUtils.toBean(createReqVO, InspectionNatureTypeDO.class);
+        inspectionNatureTypeMapper.insert(inspectionNatureType);
+        // 返回
+        return inspectionNatureType.getId();
+    }
+
+    @Override
+    public void updateInspectionNatureType(InspectionNatureTypeSaveReqVO updateReqVO) {
+        // 校验存在
+        validateInspectionNatureTypeExists(updateReqVO.getId());
+        // 更新
+        InspectionNatureTypeDO updateObj = BeanUtils.toBean(updateReqVO, InspectionNatureTypeDO.class);
+        inspectionNatureTypeMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteInspectionNatureType(String id) {
+        // 校验存在
+        validateInspectionNatureTypeExists(id);
+        // 删除
+        inspectionNatureTypeMapper.deleteById(id);
+    }
+
+    private void validateInspectionNatureTypeExists(String id) {
+        if (inspectionNatureTypeMapper.selectById(id) == null) {
+            throw exception(INSPECTION_NATURE_TYPE_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public InspectionNatureTypeDO getInspectionNatureType(String id) {
+        return inspectionNatureTypeMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<InspectionNatureTypeDO> getInspectionNatureTypePage(InspectionNatureTypePageReqVO pageReqVO) {
+        return inspectionNatureTypeMapper.selectPage(pageReqVO);
+    }
+
+}

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

@@ -91,8 +91,6 @@ public interface PipeTaskOrderService extends IService<PipeTaskOrderDO>  {
 
     PipeTaskOrderDO createTaskOrder(AcceptOrderDO acceptOrderDO, List<PipeAcceptOrderUserDO> orderUserDOS, List<PipeAcceptOrderItemDO> acceptOrderItemDOS, List<PipeAcceptOrderItemDetailDO> pipeAcceptOrderItemDetailDOS);
 
-    String generateOrderNo();
-
     void updateTaskOrderItemReportUser(PipeTaskOrderReportUserVO updateReqVO);
 
     void orderItemCancel(@Valid BoilerOrderItemUpdateByIdVO orderItemRatifyVO);

Plik diff jest za duży
+ 392 - 424
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorder/PipeTaskOrderServiceImpl.java


Plik diff jest za duży
+ 90 - 573
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/util/WordToPdfUtils.java


+ 14 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/resources/license.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<License>
+    <Data>
+        <Products>
+            <Product>Aspose.Total for Java</Product>
+            <Product>Aspose.Words for Java</Product>
+        </Products>
+        <EditionType>Enterprise</EditionType>
+        <SubscriptionExpiry>20991231</SubscriptionExpiry>
+        <LicenseExpiry>20991231</LicenseExpiry>
+        <SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber>
+    </Data>
+    <Signature>sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=</Signature>
+</License>

+ 2 - 1
tz-module-pressure2/tz-module-pressure2-biz/src/main/resources/mapper/boilertaskorder/BoilerTaskOrderMapper.xml

@@ -13,7 +13,7 @@
         select rownum,a.* from (
             select bto.* from PRESSURE_TASK_ORDER bto
             <where>
-                bto.DELETED = 0
+                bto.DELETED = 0 and bto.EQUIP_MAIN_TYPE = 200
                 <if test="orderNo != null and orderNo != ''">
                     AND bto.ORDER_NO LIKE CONCAT('%',#{orderNo},'%')
                 </if>
@@ -206,6 +206,7 @@
         ,bto.ID as ORDER_ID
         ,bto.ORDER_NO
         ,eb.EQUIP_CODE
+        ,eb.EQUIP_NAME
         ,eb.UNIT_NAME
         ,bto.CHECK_TYPE
         ,btoir.TASK_STATUS

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