xy 5 日 前
コミット
35900f2349

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

@@ -105,4 +105,11 @@ public class OrderReportController {
         orderReportService.generatePipeOrderReport(acceptOrderId);
         return success(true);
     }
+
+    @PostMapping("/serviceFromSendEmail")
+    @Operation(summary = "锅炉服务单/受理单/检验告知书邮箱发送")
+    public CommonResult<Boolean> serviceFromSendEmail(@Valid @RequestBody TaskOrderSignFilePageReqVO pageReqVO) {
+        return success(orderReportService.serviceFromSendEmail(pageReqVO));
+    }
+
 }

+ 71 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/orderreport/vo/TaskOrderSignFilePageReqVO.java

@@ -0,0 +1,71 @@
+package cn.start.tz.module.pressure2.controller.admin.orderreport.vo;
+
+import cn.start.tz.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDate;
+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 TaskOrderSignFilePageReqVO extends PageParam {
+
+    @Schema(description = "签名文件id")
+    private String id;
+
+    @Schema(description = "任务单ID", example = "8318")
+    private String orderId;
+
+    @Schema(description = "业务类型(100=任务单,200=检验结果告知,300=安全检查记录,400=重大问题线索)", example = "2")
+    private Integer businessType;
+
+    @Schema(description = "签名日期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDate[] signDate;
+
+    @Schema(description = "是否签名")
+    private String isSignature;
+
+    @Schema(description = "是否推送")
+    private String isPush;
+
+    @Schema(description = "用户签名url", example = "https://www.iocoder.cn")
+    private String signUrl;
+
+    @Schema(description = "接收人")
+    private String receiver;
+
+    @Schema(description = "接收人电话")
+    private String receiverPhone;
+
+    @Schema(description = "签名盖章后的文件pdf")
+    private String signFilePdf;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+    @Schema(description = "邮箱")
+    private String email;
+
+    @Schema(description = "任务单设备id")
+    private String orderItemId;
+
+    @Schema(description = "安全检查记录id")
+    private String securityCheckId;
+
+    private String templateId;
+
+    private String insId;
+
+    private String reportId;
+
+}

+ 21 - 23
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/mysql/taskordernontaxapply/TaskOrderLeftJoinMapper.java

@@ -17,6 +17,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -118,30 +119,27 @@ public interface TaskOrderLeftJoinMapper extends BaseMapperX<BoilerTaskOrderDO>
         return selectJoinPage(reqVO,BoilerTaskOrderDetailsVO.class,recordDOMPJLambdaWrapper);
     }
 
-    default PageResult<PlanSchedulingRespVO> selectPageGroupBy(PlanSchedulingPageVO reqVO) {
-        MPJLambdaWrapperX<BoilerTaskOrderDO> recordDOMPJLambdaWrapper = new MPJLambdaWrapperX<>();
-        recordDOMPJLambdaWrapper = (MPJLambdaWrapperX<BoilerTaskOrderDO>) recordDOMPJLambdaWrapper.
-                selectAll(BoilerTaskOrderDO.class).
-//                leftJoin(TaskOrderItemDO.class,TaskOrderItemDO::getOrderId,TaskOrderDO::getId).
-                groupBy(BoilerTaskOrderDO::getUnitCode).
-                orderByDesc(BoilerTaskOrderDO::getCreateTime);
+    /**
+     * 根据equipMainType关联不同表查询计划排期
+     * equipMainType=200时关联BoilerTaskOrderItemDO
+     * equipMainType=300时关联PipeTaskOrderItemDO
+     */
+    List<PlanSchedulingRespVO> selectPageGroupByXml(@Param("reqVO") PlanSchedulingPageVO reqVO);
 
-        recordDOMPJLambdaWrapper.
-                likeIfPresent(BoilerTaskOrderDO::getUnitName, reqVO.getUnitName()).
-                likeIfPresent(BoilerTaskOrderDO::getUnitAddress, reqVO.getUnitAddress()).
-                inIfPresent(BoilerTaskOrderDO::getUnitCode, reqVO.getUnitCodes()).
-                likeIfPresent(BoilerTaskOrderDO::getOrderNo, reqVO.getOrderNo());
+    /**
+     * 查询总数
+     */
+    Long selectPageGroupByCount(@Param("reqVO") PlanSchedulingPageVO reqVO);
 
-//        if(StringUtils.isNotBlank(reqVO.getEquipCode())){
-//            recordDOMPJLambdaWrapper.like(TaskOrderItemDO::getEquipCode,reqVO.getEquipCode());
-//        }
-//
-//        if(StringUtils.isNotBlank(reqVO.getUseRegisterNo())){
-//            recordDOMPJLambdaWrapper.like(TaskOrderItemDO::getUseRegisterNo,reqVO.getUseRegisterNo());
-//        }
-
-        recordDOMPJLambdaWrapper.in(BoilerTaskOrderDO::getEquipMainType, 200,300);
+    default PageResult<PlanSchedulingRespVO> selectPageGroupBy(PlanSchedulingPageVO reqVO) {
+        // 查询总数
+        Long total = selectPageGroupByCount(reqVO);
+        if (total == null || total == 0) {
+            return new PageResult<>(Collections.emptyList(), 0L);
+        }
 
-        return selectJoinPage(reqVO, PlanSchedulingRespVO.class, recordDOMPJLambdaWrapper);
+        // 查询数据
+        List<PlanSchedulingRespVO> list = selectPageGroupByXml(reqVO);
+        return new PageResult<>(list, total);
     }
-}
+}

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

@@ -3946,11 +3946,14 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
             BoilerConnectTbServiceDO tbServiceDO = boilerConnectTbServiceMapper.selectOne(BoilerConnectTbServiceDO::getTbId,dynamicTbDO.getId());
             if (tbServiceDO != null){
                 ruleVO.setServiceName(tbServiceDO.getInitServiceName());
-                dynamicTbInsService.createInstantiateWithRule(ruleVO);
+                DynamicTbInsDO instantiateWithRule = dynamicTbInsService.createInstantiateWithRule(ruleVO);
+                reportDO.setInsId(instantiateWithRule.getId());
             }else{
                 ruleVO.setServiceName("");
-                dynamicTbInsService.createInstantiateWithRule(ruleVO);
+                DynamicTbInsDO instantiateWithRule = dynamicTbInsService.createInstantiateWithRule(ruleVO);
+                reportDO.setInsId(instantiateWithRule.getId());
             }
+            notificationformReportMapper.updateById(reportDO);
 
             return reportDO.getId();
         }

+ 1 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/orderreport/OrderReportService.java

@@ -74,5 +74,6 @@ public interface OrderReportService extends IService<OrderReportDO>  {
      */
     void addPipeOrderReport(String acceptOrderId, String taskOrderId);
 
+    Boolean serviceFromSendEmail(@Valid TaskOrderSignFilePageReqVO pageReqVO);
 
 }

+ 136 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/orderreport/OrderReportServiceImpl.java

@@ -1,24 +1,38 @@
 package cn.start.tz.module.pressure2.service.orderreport;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.start.tz.framework.common.exception.ErrorCode;
 import cn.start.tz.framework.common.exception.ServiceException;
 import cn.start.tz.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.start.tz.module.infra.api.file.FileApi;
 import cn.start.tz.module.pressure2.controller.admin.dynamictbins.vo.CreateInstantiateWithRuleVO;
 import cn.start.tz.module.pressure2.dal.dataobject.boilerconnectrecordreport.BoilerConnectRecordReportDO;
 import cn.start.tz.module.pressure2.dal.dataobject.boilerconnecttbservice.BoilerConnectTbServiceDO;
+import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorder.BoilerTaskOrderDO;
 import cn.start.tz.module.pressure2.dal.dataobject.dynamictb.DynamicTbDO;
 import cn.start.tz.module.pressure2.dal.dataobject.dynamictbins.DynamicTbInsDO;
 import cn.start.tz.module.pressure2.dal.dataobject.equipboilerschedulingitem.EquipBoilerSchedulingCheckDO;
 import cn.start.tz.module.pressure2.dal.dataobject.equippipeschedulingitem.EquipPipeSchedulingCheckDO;
+import cn.start.tz.module.pressure2.dal.dataobject.notificationformreport.NotificationformReportDO;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorder.PipeTaskOrderDO;
 import cn.start.tz.module.pressure2.dal.mysql.boilerconnecttbservice.BoilerConnectTbServiceMapper;
+import cn.start.tz.module.pressure2.dal.mysql.boilertaskorder.BoilerTaskOrderMapper;
+import cn.start.tz.module.pressure2.dal.mysql.notificationformreport.NotificationformReportMapper;
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorder.PipeTaskOrderMapper;
 import cn.start.tz.module.pressure2.service.boilerconnectrecordreport.BoilerConnectRecordReportService;
 import cn.start.tz.module.pressure2.service.dynamictb.DynamicTbService;
 import cn.start.tz.module.pressure2.service.dynamictbins.DynamicTbInsService;
 import cn.start.tz.module.pressure2.service.equipboilerschedulingcheck.EquipBoilerSchedulingCheckService;
 import cn.start.tz.module.pressure2.service.equippipeschedulingcheck.EquipPipeSchedulingCheckService;
+import cn.start.tz.module.pressure2.service.pdf.PdfService;
+import cn.start.tz.module.system.api.mail.MailSendApi;
+import cn.start.tz.module.system.api.mail.dto.MailSendSingleToUserReqDTO;
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import jakarta.annotation.Resource;
 import org.springframework.validation.annotation.Validated;
@@ -36,6 +50,8 @@ import cn.start.tz.framework.common.util.object.BeanUtils;
 import cn.start.tz.module.pressure2.dal.mysql.orderreport.OrderReportMapper;
 
 import static cn.start.tz.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.start.tz.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
+import static cn.start.tz.module.pressure.enums.ErrorCodeConstants.TASK_ORDER_SIGN_FILE_NOT_EXISTS;
 import static cn.start.tz.module.pressure2.enums.ErrorCodeConstants.*;
 
 /**
@@ -46,6 +62,7 @@ import static cn.start.tz.module.pressure2.enums.ErrorCodeConstants.*;
 @Service
 @Validated
 @Transactional
+@Slf4j
 public class OrderReportServiceImpl extends ServiceImpl<OrderReportMapper, OrderReportDO> implements OrderReportService {
 
     @Resource
@@ -66,9 +83,36 @@ public class OrderReportServiceImpl extends ServiceImpl<OrderReportMapper, Order
     @Resource
     private BoilerConnectRecordReportService boilerConnectRecordReportService;
 
+    @Resource
+    private BoilerTaskOrderMapper boilerTaskOrderMapper;
+
+    @Resource
+    private NotificationformReportMapper notificationformReportMapper;
+
+    @Resource
+    private PdfService pdfService;
+
+    @Value("${tz.minio.hostouter}")
+    private String minioHostouter;
+
+    @Value("${tz.minio.host}")
+    private String minioHost;
+
+    @Value("${tz.env.name}")
+    private String env;
+
+    @Resource
+    private FileApi fileApi;
+
+    @Resource
+    private PipeTaskOrderMapper pipeTaskOrderMapper;
+
     @Resource
     private DynamicTbService dynamicTbService;
 
+    @Resource
+    private MailSendApi mailSendApi;
+
     private final String ACCEPT = "1";
     private final String TASK = "2";
 
@@ -250,4 +294,96 @@ public class OrderReportServiceImpl extends ServiceImpl<OrderReportMapper, Order
         updateById(one);
     }
 
+    @Override
+    public Boolean serviceFromSendEmail(TaskOrderSignFilePageReqVO pageReqVO) {
+
+        try {
+
+            String userId = getLoginUserId();
+            String reportUrl = "";
+            String fileUrl = "";
+            byte[] pdf = null;
+            //构建邮件发送参数
+            Map<String, Object> templateParams = new HashMap<>();
+            // 设置自定义附件名称
+            String attachmentName = "";
+            if (Integer.valueOf(100).equals(pageReqVO.getBusinessType())) {
+                BoilerTaskOrderDO taskOrderDO = boilerTaskOrderMapper.selectById(pageReqVO.getOrderId());
+                if (ObjectUtil.isEmpty(taskOrderDO)) {
+                    throw exception(new ErrorCode(1001, "任务单不存在"));
+                }
+                //区分是受理单还是服务单
+                if (taskOrderDO.getEquipMainType() == 200){
+                    if (Integer.valueOf(100).equals(taskOrderDO.getCheckType())) {
+                        templateParams.put("projectName", "锅炉定期检验受理单");
+                        attachmentName = "锅炉定期检验受理单.pdf";
+                    } else if (Integer.valueOf(200).equals(taskOrderDO.getCheckType())) {
+                        templateParams.put("projectName", "锅炉年度检查服务单");
+                        attachmentName = "锅炉年度检查服务单.pdf";
+                    }
+                }else{
+                    if (Integer.valueOf(100).equals(taskOrderDO.getCheckType())) {
+                        templateParams.put("projectName", "压力管道定期检验受理单");
+                        attachmentName = "压力管道定期检验受理单.pdf";
+                    } else if (Integer.valueOf(200).equals(taskOrderDO.getCheckType())) {
+                        templateParams.put("projectName", "压力管道年度检查服务单");
+                        attachmentName = "压力管道年度检查服务单.pdf";
+                    }
+                }
+                if (pageReqVO.getReportId() != null){
+                    OrderReportDO orderReportDO = orderReportMapper.selectById(pageReqVO.getReportId());
+                    if (orderReportDO != null){
+                        pdf = pdfService.pdf(orderReportDO.getTemplateId(), orderReportDO.getInsId());
+                    }
+                }
+            } else if (Integer.valueOf(200).equals(pageReqVO.getBusinessType())) {
+                templateParams.put("projectName", "承压类特种设备检验情况告知单");
+                attachmentName = "承压类特种设备检验情况告知单.pdf";
+                if (pageReqVO.getReportId() != null){
+                    NotificationformReportDO notificationformReportDO = notificationformReportMapper.selectById(pageReqVO.getReportId());
+                    if (notificationformReportDO != null){
+                        pdf = pdfService.pdf(notificationformReportDO.getTemplateId(), notificationformReportDO.getInsId());
+                    }
+                }
+            } else if (Integer.valueOf(400).equals(pageReqVO.getBusinessType())) {
+                templateParams.put("projectName", "重大问题线索告知单");
+                attachmentName = "重大问题线索告知单.pdf";
+                if (pageReqVO.getReportId() != null){
+                    DynamicTbInsDO dynamicTbIns = dynamicTbInsService.getDynamicRefId(pageReqVO.getReportId());
+                    pdf = pdfService.pdf(dynamicTbIns.getTbId(), dynamicTbIns.getId());
+                }
+            } else {
+                attachmentName = "检验文件.pdf";
+            }
+
+            if (pdf == null) {
+                throw exception(new ErrorCode(1001, "生成报表失败"));
+            }else{
+                fileUrl = fileApi.createFile(pdf);
+            }
+
+            if (Objects.equals(env, "uat")) {
+                reportUrl = minioHostouter + fileUrl;
+            } else {
+                reportUrl = minioHost + fileUrl;
+            }
+            log.info("报告url:{}", reportUrl);
+            // 发送邮件
+            MailSendSingleToUserReqDTO sendParam = new MailSendSingleToUserReqDTO();
+            sendParam.setMail(pageReqVO.getEmail());
+            sendParam.setTemplateCode("service-from-send-email");
+            sendParam.setUserId(userId);
+            sendParam.setTemplateParams(templateParams);
+
+            sendParam.setFilePath(List.of(reportUrl));
+            sendParam.setAttachmentNames(List.of(attachmentName));
+
+            mailSendApi.sendSingleMailToMember(sendParam);
+        } catch (Exception e) {
+            log.error("服务单/受理单/检验告知书邮箱发送失败:{}", e.getMessage());
+        }
+        return true;
+
+    }
+
 }

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

@@ -3150,11 +3150,14 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
             BoilerConnectTbServiceDO tbServiceDO = boilerConnectTbServiceMapper.selectOne(BoilerConnectTbServiceDO::getTbId,dynamicTbDO.getId());
             if (tbServiceDO != null){
                 ruleVO.setServiceName(tbServiceDO.getInitServiceName());
-                dynamicTbInsService.createInstantiateWithRule(ruleVO);
+                DynamicTbInsDO instantiateWithRule = dynamicTbInsService.createInstantiateWithRule(ruleVO);
+                reportDO.setInsId(instantiateWithRule.getId());
             }else{
                 ruleVO.setServiceName("");
-                dynamicTbInsService.createInstantiateWithRule(ruleVO);
+                DynamicTbInsDO instantiateWithRule = dynamicTbInsService.createInstantiateWithRule(ruleVO);
+                reportDO.setInsId(instantiateWithRule.getId());
             }
+            notificationformReportMapper.updateById(reportDO);
 
             return reportDO.getId();
         }

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

@@ -1272,17 +1272,10 @@ public class PipeTaskOrderIssueReportServiceImpl extends ServiceImpl<PipeTaskOrd
                     finalTaskOrderItemDOList.forEach(taskOrderItemDO -> {
                         try {
 
-                            String reportUrl = "reportUrl";
-                            String reportUrl1 = "reportUrl1";
-
-//                            String reportUrl;
-//                            String reportUrl1 = taskOrderService.generateIssueReportUrl(taskOrderItemDO.getId());
-//                            if (Objects.equals(env, "uat")) {
-//                                reportUrl = minioHostouter + reportUrl1;
-//                            } else {
-//                                reportUrl = minioHost + reportUrl1;
-//                            }
-                            log.info("报告url:{}", reportUrl1);
+                            ReportUrlInfo reportUrlInfo = generateReportUrl(taskOrderItemDO);
+                            String reportUrl = reportUrlInfo.getReportUrl();
+                            String fileUrl = reportUrlInfo.getFileUrl();
+                            log.info("报告url:{}", reportUrl);
 
                             //设备信息
                             EquipPipeDO equipPipeDO = equipPipeMapper.selectById(taskOrderItemDO.getEquipId());
@@ -1328,7 +1321,7 @@ public class PipeTaskOrderIssueReportServiceImpl extends ServiceImpl<PipeTaskOrd
 
                             PipeTaskOrderItemDO updateOb = new PipeTaskOrderItemDO();
                             updateOb.setId(taskOrderItemDO.getId());
-                            updateOb.setIssueUrl(reportUrl1);
+                            updateOb.setIssueUrl(fileUrl);
                             if (taskOrderItemDO.getUseLogoTime() == null && StringUtils.isNotBlank(useLogoUrl)) {
                                 updateOb.setUseLogoTime(LocalDateTime.now());
                             }

+ 134 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/resources/mapper/taskordernontaxapply/TaskOrderLeftJoinMapper.xml

@@ -148,4 +148,138 @@
             AND t.equip_main_type = #{reqVO.equipMainType}
         </if>
     </select>
+
+    <!-- 根据equipMainType关联不同表查询计划排期 -->
+    <select id="selectPageGroupByXml" resultType="cn.start.tz.module.pressure2.controller.admin.planscheduling.vo.PlanSchedulingRespVO">
+        SELECT *
+        FROM (
+            -- equipMainType = 200 时关联锅炉表
+            SELECT
+                t.*
+            FROM pressure_task_order t
+            LEFT JOIN pressure2_boiler_task_order_item bi ON t.id = bi.order_id AND bi.deleted = 0
+            WHERE t.deleted = 0
+              AND t.equip_main_type = 200
+
+            <if test="reqVO.unitName != null and reqVO.unitName != ''">
+                AND t.unit_name LIKE CONCAT('%', #{reqVO.unitName}, '%')
+            </if>
+            <if test="reqVO.unitAddress != null and reqVO.unitAddress != ''">
+                AND t.unit_address LIKE CONCAT('%', #{reqVO.unitAddress}, '%')
+            </if>
+            <if test="reqVO.unitCodes != null and reqVO.unitCodes.size() > 0">
+                AND t.unit_code IN
+                <foreach collection="reqVO.unitCodes" item="code" open="(" separator="," close=")">
+                    #{code}
+                </foreach>
+            </if>
+            <if test="reqVO.orderNo != null and reqVO.orderNo != ''">
+                AND t.order_no LIKE CONCAT('%', #{reqVO.orderNo}, '%')
+            </if>
+            <if test="reqVO.equipCode != null and reqVO.equipCode != ''">
+                AND bi.equip_code LIKE CONCAT('%', #{reqVO.equipCode}, '%')
+            </if>
+            <if test="reqVO.getUseRegisterNo() != null and reqVO.getUseRegisterNo != ''">
+                AND bi.use_register_no LIKE CONCAT('%', #{reqVO.getUseRegisterNo}, '%')
+            </if>
+
+            UNION ALL
+
+            -- equipMainType = 300 时关联管道表
+            SELECT
+                t.*
+            FROM pressure_task_order t
+            LEFT JOIN pressure2_pipe_task_order_item pi ON t.id = pi.order_id AND pi.deleted = 0
+            WHERE t.deleted = 0
+              AND t.equip_main_type = 300
+
+            <if test="reqVO.unitName != null and reqVO.unitName != ''">
+                AND t.unit_name LIKE CONCAT('%', #{reqVO.unitName}, '%')
+            </if>
+            <if test="reqVO.unitAddress != null and reqVO.unitAddress != ''">
+                AND t.unit_address LIKE CONCAT('%', #{reqVO.unitAddress}, '%')
+            </if>
+            <if test="reqVO.unitCodes != null and reqVO.unitCodes.size() > 0">
+                AND t.unit_code IN
+                <foreach collection="reqVO.unitCodes" item="code" open="(" separator="," close=")">
+                    #{code}
+                </foreach>
+            </if>
+            <if test="reqVO.orderNo != null and reqVO.orderNo != ''">
+                AND t.order_no LIKE CONCAT('%', #{reqVO.orderNo}, '%')
+            </if>
+            <if test="reqVO.equipCode != null and reqVO.equipCode != ''">
+                AND pi.equip_code LIKE CONCAT('%', #{reqVO.equipCode}, '%')
+            </if>
+            <if test="reqVO.getUseRegisterNo() != null and reqVO.getUseRegisterNo != ''">
+                AND pi.use_register_no LIKE CONCAT('%', #{reqVO.getUseRegisterNo}, '%')
+            </if>
+        ) combined_result
+        ORDER BY create_time DESC
+        OFFSET ${(reqVO.pageNo - 1) * reqVO.pageSize} ROWS FETCH NEXT #{reqVO.pageSize} ROWS ONLY
+    </select>
+
+    <!-- 查询总数 -->
+    <select id="selectPageGroupByCount" resultType="java.lang.Long">
+        SELECT COUNT(*)
+        FROM (
+            SELECT t.id
+            FROM pressure_task_order t
+            LEFT JOIN pressure2_boiler_task_order_item bi ON t.id = bi.order_id AND bi.deleted = 0
+            WHERE t.deleted = 0
+              AND t.equip_main_type = 200
+
+            <if test="reqVO.unitName != null and reqVO.unitName != ''">
+                AND t.unit_name LIKE CONCAT('%', #{reqVO.unitName}, '%')
+            </if>
+            <if test="reqVO.unitAddress != null and reqVO.unitAddress != ''">
+                AND t.unit_address LIKE CONCAT('%', #{reqVO.unitAddress}, '%')
+            </if>
+            <if test="reqVO.unitCodes != null and reqVO.unitCodes.size() > 0">
+                AND t.unit_code IN
+                <foreach collection="reqVO.unitCodes" item="code" open="(" separator="," close=")">
+                    #{code}
+                </foreach>
+            </if>
+            <if test="reqVO.orderNo != null and reqVO.orderNo != ''">
+                AND t.order_no LIKE CONCAT('%', #{reqVO.orderNo}, '%')
+            </if>
+            <if test="reqVO.equipCode != null and reqVO.equipCode != ''">
+                AND bi.equip_code LIKE CONCAT('%', #{reqVO.equipCode}, '%')
+            </if>
+            <if test="reqVO.getUseRegisterNo() != null and reqVO.getUseRegisterNo != ''">
+                AND bi.use_register_no LIKE CONCAT('%', #{reqVO.getUseRegisterNo}, '%')
+            </if>
+
+            UNION ALL
+
+            SELECT t.id
+            FROM pressure_task_order t
+            LEFT JOIN pressure2_pipe_task_order_item pi ON t.id = pi.order_id AND pi.deleted = 0
+            WHERE t.deleted = 0
+              AND t.equip_main_type = 300
+
+            <if test="reqVO.unitName != null and reqVO.unitName != ''">
+                AND t.unit_name LIKE CONCAT('%', #{reqVO.unitName}, '%')
+            </if>
+            <if test="reqVO.unitAddress != null and reqVO.unitAddress != ''">
+                AND t.unit_address LIKE CONCAT('%', #{reqVO.unitAddress}, '%')
+            </if>
+            <if test="reqVO.unitCodes != null and reqVO.unitCodes.size() > 0">
+                AND t.unit_code IN
+                <foreach collection="reqVO.unitCodes" item="code" open="(" separator="," close=")">
+                    #{code}
+                </foreach>
+            </if>
+            <if test="reqVO.orderNo != null and reqVO.orderNo != ''">
+                AND t.order_no LIKE CONCAT('%', #{reqVO.orderNo}, '%')
+            </if>
+            <if test="reqVO.equipCode != null and reqVO.equipCode != ''">
+                AND pi.equip_code LIKE CONCAT('%', #{reqVO.equipCode}, '%')
+            </if>
+            <if test="reqVO.getUseRegisterNo() != null and reqVO.getUseRegisterNo != ''">
+                AND pi.use_register_no LIKE CONCAT('%', #{reqVO.getUseRegisterNo}, '%')
+            </if>
+        ) count_result
+    </select>
 </mapper>