Kaynağa Gözat

Merge remote-tracking branch 'origin/dev' into dev

yangguanjin 6 gün önce
ebeveyn
işleme
d26d0bde2d
20 değiştirilmiş dosya ile 190 ekleme ve 190 silme
  1. 4 0
      build-uat/update.sql
  2. 3 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/pipetaskorderissuereport/vo/PipeTaskOrderIssueReportPageReqVO.java
  3. 2 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/pipetaskorderissuereport/vo/PipeTaskOrderIssueReportVO.java
  4. 9 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/dataobject/businessmemberrelation/BusinessMemberRelationDO.java
  5. 4 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/dataobject/pipetaskorderissuereport/PipeTaskOrderIssueReportDO.java
  6. 1 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/mysql/pipetaskorderissuereport/PipeTaskOrderIssueReportMapper.java
  7. 2 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorder/BoilerTaskOrderInspectionServiceImpl.java
  8. 13 13
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorder/BoilerTaskOrderServiceImpl.java
  9. 27 24
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorderissuereport/BoilerTaskOrderIssueReportServiceImpl.java
  10. 4 40
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QR0405_202402ReportOFData.java
  11. 5 39
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QR0413_0415ReportOFData.java
  12. 3 38
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QR0424_202404ReportOFData.java
  13. 63 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/util/AmountConvertUtil.java
  14. 2 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorder/PipeTaskOrderInspectionServiceImpl.java
  15. 8 3
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorder/PipeTaskOrderServiceImpl.java
  16. 31 24
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorderissuereport/PipeTaskOrderIssueReportServiceImpl.java
  17. 1 1
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/taskordernontaxrecord/TaskOrderNonTaxRecordServiceImpl.java
  18. 1 1
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/thirdparty/financialsystem/FinancialSystemServiceImpl.java
  19. 6 6
      tz-module-pressure2/tz-module-pressure2-biz/src/main/resources/mapper/equipboilerscheduling/EquipBoilerSchedulingMapper.xml
  20. 1 1
      tz-module-pressure2/tz-module-pressure2-biz/src/main/resources/mapper/pipetaskorderitem/PipeTaskOrderItemQueryMapper.xml

+ 4 - 0
build-uat/update.sql

@@ -1550,4 +1550,7 @@ ALTER TABLE "PRESSURE_TASK_ORDER" ADD COLUMN "IS_SYNC" VARCHAR(50);
 COMMENT ON COLUMN "PRESSURE_TASK_ORDER"."IS_SYNC" IS '是否是同步数据';
 
 INSERT INTO "INFRA_CONFIG" ("ID","CATEGORY","TYPE","NAME","CONFIG_KEY","VALUE","VISIBLE","REMARK","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED" ) VALUES ('f4f25ba4fa087abf9c67d75ba4a6c0ab','定时任务开关','2','是否定时查询非税记录的缴费状态并更新','is_enable_update_no_tax_status','false',1,'true:开启 false:关闭','1','2026-06-02 18:40:46','1','2026-06-02 19:05:59',0);
+-- 已加
+
+ALTER TABLE "PRESSURE2_PIPE_TASK_ORDER_ISSUE_REPORT" ADD COLUMN "EQUIP_ID" VARCHAR(64);
+COMMENT ON COLUMN "PRESSURE2_PIPE_TASK_ORDER_ISSUE_REPORT"."EQUIP_ID" IS '设备ID';

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

@@ -85,4 +85,7 @@ public class PipeTaskOrderIssueReportPageReqVO extends PageParam {
     @Schema(description = "业务类型(0=出具报告,1=打印发证)", example = "1")
     private Boolean businessType;
 
+    @Schema(description = "设备id")
+    private String equipId;
+
 }

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

@@ -95,4 +95,6 @@ public class PipeTaskOrderIssueReportVO implements Serializable {
 
     @Schema(description = "发放原因", example = "1")
     private String reasonDist;
+
+    private String equipId;
 }

+ 9 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/dataobject/businessmemberrelation/BusinessMemberRelationDO.java

@@ -35,6 +35,15 @@ public class BusinessMemberRelationDO extends BaseDO {
      * 平台用户id
      */
     private String memberId;
+    /**
+     * 接收人名称
+     */
+    private String memberName;
+    /**
+     * 接收人电话
+     */
+    private String memberPhone;
+
     /**
      * 业务类型(0=报告,1=任务单,2=受理单)
      */

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

@@ -115,5 +115,9 @@ public class PipeTaskOrderIssueReportDO extends BaseDO {
      * 业务类型(0=出具报告,1=打印发证)
      */
     private Boolean businessType;
+    /**
+     * 设备ID
+     */
+    private String equipId;
 
 }

+ 1 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/mysql/pipetaskorderissuereport/PipeTaskOrderIssueReportMapper.java

@@ -52,6 +52,7 @@ public interface PipeTaskOrderIssueReportMapper extends BaseMapperX<PipeTaskOrde
                 .eqIfPresent(PipeTaskOrderIssueReportDO::getRecipientMemberUserId, reqVO.getRecipientMemberUserId())
                 .eqIfPresent(PipeTaskOrderIssueReportDO::getOrderItemReportId, reqVO.getOrderItemReportId())
                 .eqIfPresent(PipeTaskOrderIssueReportDO::getBusinessType, reqVO.getBusinessType())
+                .eqIfPresent(PipeTaskOrderIssueReportDO::getEquipId, reqVO.getEquipId())
                 .orderByDesc(PipeTaskOrderIssueReportDO::getCreateTime));
     }
 

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

@@ -218,6 +218,8 @@ public class BoilerTaskOrderInspectionServiceImpl implements BoilerTaskOrderInsp
                         BusinessMemberRelationDO relationDO = new BusinessMemberRelationDO();
                         relationDO.setBusinessType(0);
                         relationDO.setBusinessId(taskOrderItemReportDO.getId());
+                        relationDO.setMemberName(inspectionOpinionSendVo.getRecipient());
+                        relationDO.setMemberPhone(inspectionOpinionSendVo.getRecipientPhone());
                         relationDO.setMemberId(memberId);
                         businessMemberRelationMapper.insert(relationDO);
                     }

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

@@ -5806,9 +5806,9 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
                         .toList();
             }
 
-            AdminUserRespDTO userRespDTO = adminUserApi.getUser("b5369aeb73954430eef53a9c8b7586ee").getCheckedData();
+//            AdminUserRespDTO userRespDTO = adminUserApi.getUser("b5369aeb73954430eef53a9c8b7586ee").getCheckedData();
             ArrayList<AdminUserRespDTO> adminUserRespDTOS = new ArrayList<>(userList);
-            adminUserRespDTOS.add(userRespDTO);
+//            adminUserRespDTOS.add(userRespDTO);
 
             //主检人
             if (pageReqVO.getOrderItemId() != null){
@@ -6111,12 +6111,12 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
         List<BusinessMemberRelationDO> businessMemberRelations = businessMemberRelationMapper.selectList(queryRelation);
 
         //获取发送记录人员信息
-        Map<String, MemberUserRespDTO> userMap = Map.of();
-        if (CollUtil.isNotEmpty(businessMemberRelations)) {
-            List<String> memberIds = businessMemberRelations.stream().map(BusinessMemberRelationDO::getMemberId).distinct().toList();
-            userMap = memberUserApi.getUserMap(memberIds);
-        }
-        Map<String, MemberUserRespDTO> finalUserMap = userMap;
+//        Map<String, MemberUserRespDTO> userMap = Map.of();
+//        if (CollUtil.isNotEmpty(businessMemberRelations)) {
+//            List<String> memberIds = businessMemberRelations.stream().map(BusinessMemberRelationDO::getMemberId).distinct().toList();
+//            userMap = memberUserApi.getUserMap(memberIds);
+//        }
+//        Map<String, MemberUserRespDTO> finalUserMap = userMap;
 
         //获取任务单关联部门信息
         List<String> deptIds = new ArrayList<>(pageResult.getList().stream().map(BoilerOrderItemPageRespVO::getDeptId).filter(Objects::nonNull).toList());
@@ -6188,11 +6188,11 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
                         .filter(x -> x.getBusinessId().equals(item.getReportId()))
                         .max(Comparator.comparing(BusinessMemberRelationDO::getCreateTime));
                 max.ifPresent(businessMemberRelationDO -> {
-                    MemberUserRespDTO memberUserRespDTO = finalUserMap.get(businessMemberRelationDO.getMemberId());
-                    if (ObjectUtil.isNotEmpty(memberUserRespDTO)) {
-                        item.setRecipient(memberUserRespDTO.getName());
-                        item.setRecipientPhone(memberUserRespDTO.getMobile());
-                    }
+//                    MemberUserRespDTO memberUserRespDTO = finalUserMap.get(businessMemberRelationDO.getMemberId());
+//                    if (ObjectUtil.isNotEmpty(memberUserRespDTO)) {
+                        item.setRecipient(businessMemberRelationDO.getMemberName());
+                        item.setRecipientPhone(businessMemberRelationDO.getMemberPhone());
+//                    }
                 });
             }
             if (StringUtils.isNotEmpty(item.getPrepareJson()) && !"{}".equals(item.getPrepareJson())) {

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

@@ -72,6 +72,7 @@ import cn.start.tz.module.pressure2.dal.mysql.equipboiler.EquipBoilerMapper;
 import cn.start.tz.module.pressure2.dal.mysql.orderreport.OrderReportMapper;
 import cn.start.tz.module.pressure2.dal.mysql.reporttemplate.ReportTemplateMapper;
 import cn.start.tz.module.pressure2.dal.mysql.usesignreport.UseSignReportMapper;
+import cn.start.tz.module.pressure2.enums.EnvConstants;
 import cn.start.tz.module.pressure2.framework.thread.CommonThread;
 import cn.start.tz.module.pressure2.service.boilertaskorder.BoilerTaskOrderService;
 import cn.start.tz.module.pressure2.service.boilertaskorderitemreportrecord.BoilerTaskOrderItemReportRecordService;
@@ -947,30 +948,32 @@ public class BoilerTaskOrderIssueReportServiceImpl extends ServiceImpl<BoilerTas
         byteArrayOutputStream.write(pdf);
 
         byte[] resultByte = pdf;
-//        try {
-//            List<SignValuesDTO> valuesDTOList = Lists.newArrayList();
-//            SignValuesDTO valuesDTO1 = new SignValuesDTO();
-//            valuesDTO1.setSealType("JYZ");
-//            valuesDTO1.setTextonce(0);
-//            valuesDTO1.setText("机构公章或");
-//            valuesDTOList.add(valuesDTO1);
-//
-//            QrCodeValuesDTO qrCodeValuesDTO = new QrCodeValuesDTO();
-//            qrCodeValuesDTO.setMetaname("特检院相关二维码");
-//            qrCodeValuesDTO.setTextval(qrcode);
-//            qrCodeValuesDTO.setPageno("1");
-//            qrCodeValuesDTO.setWidth(71);
-//            qrCodeValuesDTO.setHeight(71);
-//            qrCodeValuesDTO.setX("441");
-//            qrCodeValuesDTO.setY("568");
-//
-//            resultByte = this.sign(pdf, valuesDTOList, qrCodeValuesDTO);
-//            log.info("签章成功");
-//            byteArrayOutputStream = new ByteArrayOutputStream();
-//            byteArrayOutputStream.write(resultByte);
-//        } catch (Exception e) {
-//            log.error("签章异常, 记录ID: {}, 错误信息: {}", id, e.getMessage(), e);
-//        }
+        try {
+            if(EnvConstants.ENV_UAT.equals(env) || EnvConstants.ENV_PROD.equals(env)){
+                List<SignValuesDTO> valuesDTOList = Lists.newArrayList();
+                SignValuesDTO valuesDTO1 = new SignValuesDTO();
+                valuesDTO1.setSealType("JYZ");
+                valuesDTO1.setTextonce(0);
+                valuesDTO1.setText("机构公章或");
+                valuesDTOList.add(valuesDTO1);
+
+                QrCodeValuesDTO qrCodeValuesDTO = new QrCodeValuesDTO();
+                qrCodeValuesDTO.setMetaname("特检院相关二维码");
+                qrCodeValuesDTO.setTextval(qrcode);
+                qrCodeValuesDTO.setPageno("1");
+                qrCodeValuesDTO.setWidth(71);
+                qrCodeValuesDTO.setHeight(71);
+                qrCodeValuesDTO.setX("441");
+                qrCodeValuesDTO.setY("568");
+
+                resultByte = this.sign(pdf, valuesDTOList, qrCodeValuesDTO);
+                log.info("签章成功");
+                byteArrayOutputStream = new ByteArrayOutputStream();
+                byteArrayOutputStream.write(resultByte);
+            }
+        } catch (Exception e) {
+            log.error("签章异常, 记录ID: {}, 错误信息: {}", id, e.getMessage(), e);
+        }
 
         if(fileType == 100){
             String filePath = fileApi.createFile(resultByte);

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

@@ -16,6 +16,7 @@ import cn.start.tz.module.pressure2.dal.mysql.equipboiler.EquipBoilerMapper;
 import cn.start.tz.module.pressure2.service.boilertaskorder.BoilerTaskOrderService;
 import cn.start.tz.module.pressure2.service.boilertaskordersignfile.BoilerTaskOrderSignFileService;
 import cn.start.tz.module.pressure2.service.dynamicOFData.IDynamicOFData;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.AmountConvertUtil;
 import cn.start.tz.module.pressure2.service.orderreport.OrderReportService;
 import cn.start.tz.module.system.api.dict.DictDataApi;
 import cn.start.tz.module.system.api.dict.dto.DictDataRespDTO;
@@ -184,50 +185,13 @@ public class QR0405_202402ReportOFData implements IDynamicOFData {
             result.put("recipientPhone", taskOrderDO.getRecipientPhone());
             result.put("recipientEmail", taskOrderDO.getRecipientEmail());
 
-            result.put("totalAmount", taskOrderDO.getShouldAmount().setScale(2, java.math.RoundingMode.HALF_UP));
-            // 将金额转换为中文数字并按位存储
             if (taskOrderDO.getShouldAmount() != null) {
-                convertAmountToChineseDigits(taskOrderDO.getShouldAmount(), result);
+                result.put("totalAmount", taskOrderDO.getShouldAmount().setScale(2, java.math.RoundingMode.HALF_UP));
+                // 将金额转换为中文大写金额
+                result.put("money1", AmountConvertUtil.convertAmountToChineseDigits(taskOrderDO.getShouldAmount()));
             }
         }
 
         return result;
     }
-
-    /**
-     * 将金额转换为中文数字并按位存储到result中
-     * money1: 百万位, money2: 十万位, money3: 万位, money4: 千位, money5: 百位, money6: 十位, money7: 个位
-     * @param amount 金额
-     * @param result 结果对象
-     */
-    private void convertAmountToChineseDigits(BigDecimal amount, JSONObject result) {
-        // 中文数字数组
-        String[] chineseDigits = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
-        
-        // 获取整数部分
-        long integerPart = amount.longValue();
-        
-        // 确保不超过百万(9999999)
-        if (integerPart > 9999999) {
-            integerPart = 9999999;
-        }
-        
-        // 提取每一位数字
-        int million = (int)(integerPart / 1000000) % 10;      // 百万位
-        int hundredThousand = (int)(integerPart / 100000) % 10; // 十万位
-        int tenThousand = (int)(integerPart / 10000) % 10;      // 万位
-        int thousand = (int)(integerPart / 1000) % 10;          // 千位
-        int hundred = (int)(integerPart / 100) % 10;            // 百位
-        int ten = (int)(integerPart / 10) % 10;                 // 十位
-        int one = (int)(integerPart % 10);                      // 个位
-        
-        // 存入result
-        result.put("money1", chineseDigits[million]);           // 百万位
-        result.put("money2", chineseDigits[hundredThousand]);   // 十万位
-        result.put("money3", chineseDigits[tenThousand]);       // 万位
-        result.put("money4", chineseDigits[thousand]);          // 千位
-        result.put("money5", chineseDigits[hundred]);           // 百位
-        result.put("money6", chineseDigits[ten]);               // 十位
-        result.put("money7", chineseDigits[one]);               // 个位
-    }
 }

+ 5 - 39
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QR0413_0415ReportOFData.java

@@ -13,6 +13,7 @@ import cn.start.tz.module.pressure2.dal.mysql.pipeacceptorderitem.PipeAcceptOrde
 import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitem.PipeTaskOrderItemMapper;
 import cn.start.tz.module.pressure2.service.boilertaskordersignfile.BoilerTaskOrderSignFileService;
 import cn.start.tz.module.pressure2.service.dynamicOFData.IDynamicOFData;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.AmountConvertUtil;
 import cn.start.tz.module.pressure2.service.orderreport.OrderReportService;
 import cn.start.tz.module.pressure2.service.pipetaskorder.PipeTaskOrderService;
 import cn.start.tz.module.pressure2.service.pipetaskorderitemreportuser.PipeTaskOrderItemReportUserService;
@@ -164,50 +165,15 @@ public class QR0413_0415ReportOFData implements IDynamicOFData {
             result.put("recipientPhone", taskOrderDO.getRecipientPhone());
             result.put("recipientEmail", taskOrderDO.getRecipientEmail());
 
-            result.put("totalAmount", taskOrderDO.getShouldAmount().setScale(2, java.math.RoundingMode.HALF_UP));
-            // 将金额转换为中文数字并按位存储
             if (taskOrderDO.getShouldAmount() != null) {
-                convertAmountToChineseDigits(taskOrderDO.getShouldAmount(), result);
+                result.put("totalAmount", taskOrderDO.getShouldAmount().setScale(2, java.math.RoundingMode.HALF_UP));
+                // 将金额转换为中文大写金额
+                result.put("money1", AmountConvertUtil.convertAmountToChineseDigits(taskOrderDO.getShouldAmount()));
             }
+
         }
 
         return result;
     }
 
-    /**
-     * 将金额转换为中文数字并按位存储到result中
-     * money1: 百万位, money2: 十万位, money3: 万位, money4: 千位, money5: 百位, money6: 十位, money7: 个位
-     * @param amount 金额
-     * @param result 结果对象
-     */
-    private void convertAmountToChineseDigits(BigDecimal amount, JSONObject result) {
-        // 中文数字数组
-        String[] chineseDigits = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
-        
-        // 获取整数部分
-        long integerPart = amount.longValue();
-        
-        // 确保不超过百万(9999999)
-        if (integerPart > 9999999) {
-            integerPart = 9999999;
-        }
-        
-        // 提取每一位数字
-        int million = (int)(integerPart / 1000000) % 10;      // 百万位
-        int hundredThousand = (int)(integerPart / 100000) % 10; // 十万位
-        int tenThousand = (int)(integerPart / 10000) % 10;      // 万位
-        int thousand = (int)(integerPart / 1000) % 10;          // 千位
-        int hundred = (int)(integerPart / 100) % 10;            // 百位
-        int ten = (int)(integerPart / 10) % 10;                 // 十位
-        int one = (int)(integerPart % 10);                      // 个位
-        
-        // 存入result
-        result.put("money1", chineseDigits[million]);           // 百万位
-        result.put("money2", chineseDigits[hundredThousand]);   // 十万位
-        result.put("money3", chineseDigits[tenThousand]);       // 万位
-        result.put("money4", chineseDigits[thousand]);          // 千位
-        result.put("money5", chineseDigits[hundred]);           // 百位
-        result.put("money6", chineseDigits[ten]);               // 十位
-        result.put("money7", chineseDigits[one]);               // 个位
-    }
 }

+ 3 - 38
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QR0424_202404ReportOFData.java

@@ -16,6 +16,7 @@ import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitem.PipeTaskOrderIte
 import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitemreport.PipeTaskOrderItemReportMapper;
 import cn.start.tz.module.pressure2.service.boilertaskordersignfile.BoilerTaskOrderSignFileService;
 import cn.start.tz.module.pressure2.service.dynamicOFData.IDynamicOFData;
+import cn.start.tz.module.pressure2.service.dynamicOFData.util.AmountConvertUtil;
 import cn.start.tz.module.pressure2.service.orderreport.OrderReportService;
 import cn.start.tz.module.pressure2.service.pipetaskorder.PipeTaskOrderService;
 import cn.start.tz.module.system.api.dict.DictDataApi;
@@ -152,50 +153,14 @@ public class QR0424_202404ReportOFData implements IDynamicOFData {
             result.put("recipientPhone", taskOrderDO.getRecipientPhone());
             result.put("recipientEmail", taskOrderDO.getRecipientEmail());
 
-            // 将金额转换为中文数字并按位存储
+            // 将金额转换为中文大写金额
             if (taskOrderDO.getActualAmount() != null) {
                 result.put("totalAmount", taskOrderDO.getActualAmount().setScale(2, java.math.RoundingMode.HALF_UP));
-                convertAmountToChineseDigits(taskOrderDO.getActualAmount(), result);
+                result.put("money1", AmountConvertUtil.convertAmountToChineseDigits(taskOrderDO.getActualAmount()));
             }
         }
 
         return result;
     }
 
-    /**
-     * 将金额转换为中文数字并按位存储到result中
-     * money1: 百万位, money2: 十万位, money3: 万位, money4: 千位, money5: 百位, money6: 十位, money7: 个位
-     * @param amount 金额
-     * @param result 结果对象
-     */
-    private void convertAmountToChineseDigits(BigDecimal amount, JSONObject result) {
-        // 中文数字数组
-        String[] chineseDigits = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
-        
-        // 获取整数部分
-        long integerPart = amount.longValue();
-        
-        // 确保不超过百万(9999999)
-        if (integerPart > 9999999) {
-            integerPart = 9999999;
-        }
-        
-        // 提取每一位数字
-        int million = (int)(integerPart / 1000000) % 10;      // 百万位
-        int hundredThousand = (int)(integerPart / 100000) % 10; // 十万位
-        int tenThousand = (int)(integerPart / 10000) % 10;      // 万位
-        int thousand = (int)(integerPart / 1000) % 10;          // 千位
-        int hundred = (int)(integerPart / 100) % 10;            // 百位
-        int ten = (int)(integerPart / 10) % 10;                 // 十位
-        int one = (int)(integerPart % 10);                      // 个位
-        
-        // 存入result
-        result.put("money1", chineseDigits[million]);           // 百万位
-        result.put("money2", chineseDigits[hundredThousand]);   // 十万位
-        result.put("money3", chineseDigits[tenThousand]);       // 万位
-        result.put("money4", chineseDigits[thousand]);          // 千位
-        result.put("money5", chineseDigits[hundred]);           // 百位
-        result.put("money6", chineseDigits[ten]);               // 十位
-        result.put("money7", chineseDigits[one]);               // 个位
-    }
 }

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

@@ -0,0 +1,63 @@
+package cn.start.tz.module.pressure2.service.dynamicOFData.util;
+
+import com.alibaba.fastjson2.JSONObject;
+
+import java.math.BigDecimal;
+
+/**
+ * 金额转换工具类
+ */
+public class AmountConvertUtil {
+
+    /**
+     * 将金额转换为中文大写金额字符串
+     * 例如:121 -> 壹佰贰拾壹
+     * 
+     * @param amount 金额
+     * @return 中文大写金额字符串
+     */
+    public static String convertAmountToChineseDigits(BigDecimal amount) {
+        // 中文数字数组
+        String[] chineseDigits = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
+        // 单位数组
+        String[] units = {"", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿"};
+        
+        // 获取整数部分
+        long integerPart = amount.longValue();
+        
+        // 特殊情况:金额为0
+        if (integerPart == 0) {
+            return "零";
+        }
+        
+        // 确保不超过亿(999999999)
+        if (integerPart > 999999999) {
+            integerPart = 999999999;
+        }
+        
+        StringBuilder result = new StringBuilder();
+        boolean zeroFlag = false; // 标记是否需要补零
+        
+        // 从高位到低位处理
+        int length = String.valueOf(integerPart).length();
+        for (int i = length - 1; i >= 0; i--) {
+            int digit = (int)(integerPart / Math.pow(10, i)) % 10;
+            int unitIndex = i;
+            
+            if (digit == 0) {
+                zeroFlag = true;
+            } else {
+                if (zeroFlag) {
+                    result.append("零");
+                    zeroFlag = false;
+                }
+                result.append(chineseDigits[digit]);
+                if (unitIndex < units.length) {
+                    result.append(units[unitIndex]);
+                }
+            }
+        }
+        
+        return result.toString();
+    }
+}

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

@@ -228,6 +228,8 @@ public class PipeTaskOrderInspectionServiceImpl implements PipeTaskOrderInspecti
                         BusinessMemberRelationDO relationDO = new BusinessMemberRelationDO();
                         relationDO.setBusinessType(0);
                         relationDO.setBusinessId(taskOrderItemReportDO.getId());
+                        relationDO.setMemberName(inspectionOpinionSendVo.getRecipient());
+                        relationDO.setMemberPhone(inspectionOpinionSendVo.getRecipientPhone());
                         relationDO.setMemberId(memberId);
                         businessMemberRelationMapper.insert(relationDO);
                     }

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

@@ -4993,9 +4993,9 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
                         .toList();
             }
 
-            AdminUserRespDTO userRespDTO = adminUserApi.getUser("b5369aeb73954430eef53a9c8b7586ee").getCheckedData();
+//            AdminUserRespDTO userRespDTO = adminUserApi.getUser("b5369aeb73954430eef53a9c8b7586ee").getCheckedData();
             ArrayList<AdminUserRespDTO> adminUserRespDTOS = new ArrayList<>(userList);
-            adminUserRespDTOS.add(userRespDTO);
+//            adminUserRespDTOS.add(userRespDTO);
 
             pageResult.setList(adminUserRespDTOS);
             pageResult.setTotal((long) adminUserRespDTOS.size());
@@ -5390,7 +5390,12 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
                 max.ifPresent(businessMemberRelationDO -> {
                     MemberUserRespDTO memberUserRespDTO = finalUserMap.get(businessMemberRelationDO.getMemberId());
                     if (ObjectUtil.isNotEmpty(memberUserRespDTO)) {
-                        item.setRecipient(memberUserRespDTO.getName());
+                        if (memberUserRespDTO.getName() != null && !memberUserRespDTO.getName().isEmpty()){
+                            item.setRecipient(memberUserRespDTO.getName());
+                        }else{
+                            item.setRecipient(memberUserRespDTO.getNickname());
+                        }
+
                         item.setRecipientPhone(memberUserRespDTO.getMobile());
                     }
                 });

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

@@ -29,6 +29,7 @@ import cn.start.tz.module.pressure2.controller.app.taskorder.vo.TaskOrderIssueRe
 import cn.start.tz.module.pressure2.controller.app.taskorder.vo.TaskOrderIssueReportPageReqVO;
 import cn.start.tz.module.pressure2.dal.dataobject.orderreport.OrderReportDO;
 import cn.start.tz.module.pressure2.dal.mysql.orderreport.OrderReportMapper;
+import cn.start.tz.module.pressure2.enums.EnvConstants;
 import cn.start.tz.module.pressure2.enums.TaskOrderItemReportTypeEnum;
 import cn.start.tz.module.pressure2.enums.TaskOrderStatusEnum;
 import cn.start.tz.module.pressure2.controller.admin.boilertaskorder.vo.BoilerTaskOrderArchiveDetailRespVO;
@@ -905,30 +906,32 @@ public class PipeTaskOrderIssueReportServiceImpl extends ServiceImpl<PipeTaskOrd
 
         byte[] resultByte = pdf;
 
-//        try {
-//            List<SignValuesDTO> valuesDTOList = Lists.newArrayList();
-//            SignValuesDTO valuesDTO1 = new SignValuesDTO();
-//            valuesDTO1.setSealType("JYZ");
-//            valuesDTO1.setTextonce(0);
-//            valuesDTO1.setText("机构公章或");
-//            valuesDTOList.add(valuesDTO1);
-//
-//            QrCodeValuesDTO qrCodeValuesDTO = new QrCodeValuesDTO();
-//            qrCodeValuesDTO.setMetaname("特检院相关二维码");
-//            qrCodeValuesDTO.setTextval(qrcode);
-//            qrCodeValuesDTO.setPageno("1");
-//            qrCodeValuesDTO.setWidth(71);
-//            qrCodeValuesDTO.setHeight(71);
-//            qrCodeValuesDTO.setX("441");
-//            qrCodeValuesDTO.setY("568");
-//
-//            resultByte = this.sign(pdf, valuesDTOList, qrCodeValuesDTO);
-//            log.info("签章成功");
-//            byteArrayOutputStream = new ByteArrayOutputStream();
-//            byteArrayOutputStream.write(resultByte);
-//        } catch (Exception e) {
-//            log.error("签章异常, 记录ID: {}, 错误信息: {}", id, e.getMessage(), e);
-//        }
+        try {
+            if(EnvConstants.ENV_UAT.equals(env) || EnvConstants.ENV_PROD.equals(env)){
+                List<SignValuesDTO> valuesDTOList = Lists.newArrayList();
+                SignValuesDTO valuesDTO1 = new SignValuesDTO();
+                valuesDTO1.setSealType("JYZ");
+                valuesDTO1.setTextonce(0);
+                valuesDTO1.setText("机构公章或");
+                valuesDTOList.add(valuesDTO1);
+
+                QrCodeValuesDTO qrCodeValuesDTO = new QrCodeValuesDTO();
+                qrCodeValuesDTO.setMetaname("特检院相关二维码");
+                qrCodeValuesDTO.setTextval(qrcode);
+                qrCodeValuesDTO.setPageno("1");
+                qrCodeValuesDTO.setWidth(71);
+                qrCodeValuesDTO.setHeight(71);
+                qrCodeValuesDTO.setX("441");
+                qrCodeValuesDTO.setY("568");
+
+                resultByte = this.sign(pdf, valuesDTOList, qrCodeValuesDTO);
+                log.info("签章成功");
+                byteArrayOutputStream = new ByteArrayOutputStream();
+                byteArrayOutputStream.write(resultByte);
+            }
+        } catch (Exception e) {
+            log.error("签章异常, 记录ID: {}, 错误信息: {}", id, e.getMessage(), e);
+        }
 
         if(fileType == 100){
             String filePath = fileApi.createFile(resultByte);
@@ -1504,6 +1507,10 @@ public class PipeTaskOrderIssueReportServiceImpl extends ServiceImpl<PipeTaskOrd
     @Transactional
     public void taskOrderBatchIssueReport(@Valid List<PipeTaskOrderIssueReportVO> taskOrderIssueReportVO) {
         taskOrderIssueReportVO.forEach(taskOrderIssueReport -> {
+            if (CollUtil.isEmpty(taskOrderIssueReport.getItemList())) {
+                throw exception(new ErrorCode(1001,"设备id不能为空"));
+            }
+            taskOrderIssueReport.setEquipId(taskOrderIssueReport.getItemList().get(0));
             taskOrderIssueReport.setIsIssueReportFlag(1);
             this.taskOrderIssueReport(taskOrderIssueReport);
         });

+ 1 - 1
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/taskordernontaxrecord/TaskOrderNonTaxRecordServiceImpl.java

@@ -677,7 +677,7 @@ public class TaskOrderNonTaxRecordServiceImpl extends ServiceImpl<TaskOrderNonTa
 
         // 添加盖章功能
         if(EnvConstants.ENV_UAT.equals(env) || EnvConstants.ENV_PROD.equals(env)){
-//            bytes = addSignToPdf(bytes, taskOrderNonTaxRecordDO);
+            bytes = addSignToPdf(bytes, taskOrderNonTaxRecordDO);
         }
 
         ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

+ 1 - 1
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/thirdparty/financialsystem/FinancialSystemServiceImpl.java

@@ -593,7 +593,7 @@ public class FinancialSystemServiceImpl implements FinancialSystemService {
             String year = fullYear.substring(2, 4);
             String seriNumber = redisService.generateSerialNum("FINANCIAL_NOTICE_NO", 7);
             // 6+2+3+8
-            // 机电0+7自增; 容器1+7位自增;锅炉管道暂定2+7位自增,待确认
+            // 机电0+7自增; 容器1+7位自增;锅炉管道2+7位自增
             noticeNo = districtNO + year + unitNumber + "2" + seriNumber;
             String jym = getBillNumVerifyCode(noticeNo);//校验码
             noticeNo = noticeNo + jym;

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

@@ -121,13 +121,13 @@
                 OR (eb.NEXT_PRESSURE_CHECK_DATE BETWEEN #{nextDate[0]} AND #{nextDate[1]})
                 )
             </if>
-            <if test="nextDate != null and nextDate.size() >= 2 and sort == 'nextInCheckDate' and order != null or order != ''">
+            <if test="nextDate != null and nextDate.size() >= 2 and sort == 'nextInCheckDate' and order != null and order != ''">
                 AND eb.NEXT_IN_CHECK_DATE BETWEEN #{nextDate[0]} AND #{nextDate[1]}
             </if>
-            <if test="nextDate != null and nextDate.size() >= 2 and sort == 'nextOutCheckDate' and order != null or order != ''">
+            <if test="nextDate != null and nextDate.size() >= 2 and sort == 'nextOutCheckDate' and order != null and order != ''">
                 AND eb.NEXT_OUT_CHECK_DATE BETWEEN #{nextDate[0]} AND #{nextDate[1]}
             </if>
-            <if test="nextDate != null and nextDate.size() >= 2 and sort == 'nextPressureCheckDate' and order != null or order != ''">
+            <if test="nextDate != null and nextDate.size() >= 2 and sort == 'nextPressureCheckDate' and order != null and order != ''">
                 AND eb.NEXT_PRESSURE_CHECK_DATE BETWEEN #{nextDate[0]} AND #{nextDate[1]}
             </if>
             <if test="typeList != null and typeList.size() > 0">
@@ -250,13 +250,13 @@
                 OR (eb.NEXT_PRESSURE_CHECK_DATE BETWEEN #{nextDate[0]} AND #{nextDate[1]})
                 )
             </if>
-            <if test="nextDate != null and nextDate.size() >= 2 and sort == 'nextInCheckDate' and order != null or order != ''">
+            <if test="nextDate != null and nextDate.size() >= 2 and sort == 'nextInCheckDate' and order != null and order != ''">
                 AND eb.NEXT_IN_CHECK_DATE BETWEEN #{nextDate[0]} AND #{nextDate[1]}
             </if>
-            <if test="nextDate != null and nextDate.size() >= 2 and sort == 'nextOutCheckDate' and order != null or order != ''">
+            <if test="nextDate != null and nextDate.size() >= 2 and sort == 'nextOutCheckDate' and order != null and order != ''">
                 AND eb.NEXT_OUT_CHECK_DATE BETWEEN #{nextDate[0]} AND #{nextDate[1]}
             </if>
-            <if test="nextDate != null and nextDate.size() >= 2 and sort == 'nextPressureCheckDate' and order != null or order != ''">
+            <if test="nextDate != null and nextDate.size() >= 2 and sort == 'nextPressureCheckDate' and order != null and order != ''">
                 AND eb.NEXT_PRESSURE_CHECK_DATE BETWEEN #{nextDate[0]} AND #{nextDate[1]}
             </if>
             <if test="typeList != null and typeList.size() > 0">

+ 1 - 1
tz-module-pressure2/tz-module-pressure2-biz/src/main/resources/mapper/pipetaskorderitem/PipeTaskOrderItemQueryMapper.xml

@@ -62,7 +62,7 @@
         FROM pressure2_pipe_task_order_item t1
         LEFT JOIN pressure2_pipe_task_order_item_report t3 ON t3.ORDER_ID = t1.ORDER_ID AND t3.deleted = 0
         LEFT JOIN pressure_task_order t2 ON t2.id = t1.order_id AND t2.deleted = 0
-        LEFT JOIN pressure2_pipe_task_order_issue_report t4 ON t4.order_item_report_id = t3.id AND t4.deleted = 0 and t4.business_type = 1
+        LEFT JOIN pressure2_pipe_task_order_issue_report t4 ON t4.order_item_report_id = t3.id AND t4.equip_id = t1.equip_id AND t4.deleted = 0 and t4.business_type = 1
         LEFT JOIN PRESSURE2_PIPE_TASK_ORDER_ITEM_PRINT t5 ON t5.item_id = t1.id AND t5.deleted = 0
         LEFT JOIN PRESSURE2_EQUIP_PIPE t6 on t6.ID = t1.equip_id
         <where>