Ver Fonte

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

xuzhancheng há 1 dia atrás
pai
commit
0602e671d2
11 ficheiros alterados com 536 adições e 51 exclusões
  1. 49 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/platformEquip/PlatformEquipBoilerController.java
  2. 88 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/platformEquip/vo/BoilerTaskOrderItemDetailsVO.java
  3. 83 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/platformEquip/vo/PipeTaskOrderItemDetailsVO.java
  4. 8 5
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorder/BoilerTaskOrderService.java
  5. 140 31
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorder/BoilerTaskOrderServiceImpl.java
  6. 7 6
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorderissuereport/BoilerTaskOrderIssueReportServiceImpl.java
  7. 4 1
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorderitemreport/BoilerTaskOrderItemReportServiceImpl.java
  8. 9 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorder/PipeTaskOrderService.java
  9. 144 4
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorder/PipeTaskOrderServiceImpl.java
  10. 1 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorderissuereport/PipeTaskOrderIssueReportServiceImpl.java
  11. 3 4
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorderitemreport/PipeTaskOrderItemReportServiceImpl.java

+ 49 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/platformEquip/PlatformEquipBoilerController.java

@@ -0,0 +1,49 @@
+package cn.start.tz.module.pressure2.controller.admin.platformEquip;
+
+import cn.start.tz.framework.common.pojo.CommonResult;
+import cn.start.tz.module.pressure2.controller.admin.platformEquip.vo.BoilerTaskOrderItemDetailsVO;
+import cn.start.tz.module.pressure2.controller.admin.platformEquip.vo.PipeTaskOrderItemDetailsVO;
+import cn.start.tz.module.pressure2.service.boilertaskorder.BoilerTaskOrderService;
+import cn.start.tz.module.pressure2.service.pipetaskorder.PipeTaskOrderService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import jakarta.annotation.security.PermitAll;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import static cn.start.tz.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "服务平台 - 锅炉设备")
+@RestController
+@RequestMapping("/pressure2/platform/equip")
+@Validated
+@Slf4j
+public class PlatformEquipBoilerController {
+
+    @Resource
+    private BoilerTaskOrderService boilerTaskOrderService;
+
+    @Resource
+    private PipeTaskOrderService pipeTaskOrderService;
+
+    @GetMapping("/boiler/qrCodeReport")
+    @Operation(summary = "锅炉二维码报告信息")
+    @PermitAll
+    public CommonResult<BoilerTaskOrderItemDetailsVO> qrCodeReportBoiler(@Parameter(description = "任务单设备id") @RequestParam(value = "id") String id) {
+        return success(boilerTaskOrderService.getTaskOrderItemById(id));
+    }
+
+    @GetMapping("/pipe/qrCodeReport")
+    @Operation(summary = "管道二维码报告信息")
+    @PermitAll
+    public CommonResult<PipeTaskOrderItemDetailsVO> qrCodeReportPipe(@Parameter(description = "任务单设备id") @RequestParam(value = "id") String id) {
+        return success(pipeTaskOrderService.getTaskOrderItemById(id));
+    }
+
+}

+ 88 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/platformEquip/vo/BoilerTaskOrderItemDetailsVO.java

@@ -0,0 +1,88 @@
+package cn.start.tz.module.pressure2.controller.admin.platformEquip.vo;
+
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 任务单 Response VO")
+@Data
+public class BoilerTaskOrderItemDetailsVO {
+
+
+    @Schema(description = "id", example = "6948")
+    @ExcelProperty("id")
+    private String id;
+
+    /**
+     * 类型:固定式压力容器、氧舱、压力容器
+     * system_equip_container_type
+     * 枚举 {@link DictTypeConstants}
+     */
+    @Schema(description = "锅炉类别")
+    private String type;
+
+    @Schema(description = "锅炉类别名称")
+    private String typeName;
+
+    @Schema(description = "统一社会信用代码")
+    private String socialCreditCode;
+
+    @Schema(description = "使用单位名称")
+    private String useUnitName;
+
+    @Schema(description = "使用登记证编号")
+    private String useRegisterNo;
+
+    @Schema(description = "设备代码")
+    private String equipCode;
+
+    @Schema(description = "产品编号")
+    private String productNo;
+
+    @Schema(description = "报告编号")
+    private String reportNo;
+
+    @Schema(description = "主报告结论")
+    private String mainConclusion;
+
+    @Schema(description = "下次内部检验时间")
+    @JsonFormat(pattern = "yyyy年MM月dd日")
+    private LocalDate nextInCheckDate;
+
+    @Schema(description = "下次外部检验时间")
+    @JsonFormat(pattern = "yyyy年MM月dd日")
+    private LocalDate nextOutCheckDate;
+
+    @Schema(description = "约检日期")
+    @JsonFormat(pattern = "yyyy年MM月dd日")
+    private LocalDate checkDate;
+
+    @Schema(description = "检验(检查)机构")
+    private String checkOrganization;
+
+    @Schema(description = "检验性质(100=内部检验,200=外部检验,300=耐压检验)")
+    private Integer checkType;
+
+    @Schema(description = "检验性质(100=年度检验,200=法定检验)")
+    private String checkTypeName;
+
+    @Schema(description = "签发日期")
+    @JsonFormat(pattern = "yyyy年MM月dd日")
+    private LocalDateTime issueDate;
+
+    @Schema(description = "产品规格")
+    private String productSpec;
+
+    @Schema(description = "制造单位")
+    private String makeUnit;
+
+    @Schema(description = "设备名称")
+    private String equipName;
+
+
+}

+ 83 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/platformEquip/vo/PipeTaskOrderItemDetailsVO.java

@@ -0,0 +1,83 @@
+package cn.start.tz.module.pressure2.controller.admin.platformEquip.vo;
+
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 任务单 Response VO")
+@Data
+public class PipeTaskOrderItemDetailsVO {
+
+
+    @Schema(description = "id", example = "6948")
+    @ExcelProperty("id")
+    private String id;
+
+    @Schema(description = "管道类别")
+    private String type;
+
+    @Schema(description = "管道类别名称")
+    private String typeName;
+
+    @Schema(description = "统一社会信用代码")
+    private String socialCreditCode;
+
+    @Schema(description = "使用单位名称")
+    private String useUnitName;
+
+    @Schema(description = "使用登记证编号")
+    private String useRegisterNo;
+
+    @Schema(description = "设备代码")
+    private String equipCode;
+
+    @Schema(description = "产品编号")
+    private String productNo;
+
+    @Schema(description = "报告编号")
+    private String reportNo;
+
+    @Schema(description = "主报告结论")
+    private String mainConclusion;
+
+    @Schema(description = "下次法定检验时间")
+    @JsonFormat(pattern = "yyyy年MM月dd日")
+    private LocalDate nextLegalCheckDate;
+
+    @Schema(description = "下次年度检验时间")
+    @JsonFormat(pattern = "yyyy年MM月dd日")
+    private LocalDate nextYearCheckDate;
+
+    @Schema(description = "约检日期")
+    @JsonFormat(pattern = "yyyy年MM月dd日")
+    private LocalDate checkDate;
+
+    @Schema(description = "检验(检查)机构")
+    private String checkOrganization;
+
+    @Schema(description = "检验性质(100=年度检验,200=法定检验)")
+    private Integer checkType;
+
+    @Schema(description = "检验性质(100=年度检验,200=法定检验)")
+    private String checkTypeName;
+
+    @Schema(description = "签发日期")
+    @JsonFormat(pattern = "yyyy年MM月dd日")
+    private LocalDateTime issueDate;
+
+    @Schema(description = "产品规格")
+    private String productSpec;
+
+    @Schema(description = "制造单位")
+    private String makeUnit;
+
+    @Schema(description = "设备名称")
+    private String equipName;
+
+
+}

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

@@ -5,10 +5,7 @@ import cn.start.tz.module.pressure.api.taskorder.dto.NonTaxPayStatusDTO;
 import cn.start.tz.module.pressure2.api.taskorder.dto.UpdatePayStatusDTO;
 import cn.start.tz.module.pressure2.controller.admin.bpmtaskinfo.vo.BpmTaskRespVO;
 import cn.start.tz.module.pressure2.controller.admin.costfield.vo.CostFieldRespVO;
-import cn.start.tz.module.pressure2.controller.admin.equipboilerscheduling.vo.EquipBoilerSchedulingBoilersRespVO;
-import cn.start.tz.module.pressure2.controller.admin.equipboilerscheduling.vo.EquipBoilerSchedulingPageReqVO;
-import cn.start.tz.module.pressure2.controller.admin.pipetaskorder.vo.PipeOrderItemPageRespVO;
-import cn.start.tz.module.pressure2.controller.admin.pipetaskorder.vo.PipeRecheckUserPageReqVO;
+import cn.start.tz.module.pressure2.controller.admin.platformEquip.vo.BoilerTaskOrderItemDetailsVO;
 import cn.start.tz.module.pressure2.controller.appapi.boilertaskorder.vo.BoilerOrderItemBatchClaimVO;
 import cn.start.tz.module.pressure2.dal.dataobject.acceptorder.AcceptOrderDO;
 import cn.start.tz.module.pressure2.dal.dataobject.boileracceptorderitem.BoilerAcceptOrderItemDO;
@@ -22,7 +19,6 @@ import cn.start.tz.module.pressure2.controller.admin.boilertaskorder.vo.*;
 import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorder.BoilerTaskOrderDO;
 import cn.start.tz.framework.common.pojo.PageResult;
 import com.baomidou.mybatisplus.extension.service.IService;
-import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
@@ -220,4 +216,11 @@ public interface BoilerTaskOrderService extends IService<BoilerTaskOrderDO>  {
     CommonResult<Boolean> nonTaxPayStatus(NonTaxPayStatusDTO dto);
 
     List<BoilerInspectionOpinionReportedExcelVO> exportBoilerInspectionOpinionReportedExcel(@Valid BoilerTaskOrderPageReqVO pageReqVO);
+
+    /**
+     * 二维码查看设备报告信息
+     * @param orderItemId 任务单设备id
+     * @return 结果
+     */
+    BoilerTaskOrderItemDetailsVO getTaskOrderItemById(String orderItemId);
 }

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

@@ -1,7 +1,6 @@
 package cn.start.tz.module.pressure2.service.boilertaskorder;
 
 import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.thread.ThreadUtil;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
@@ -23,7 +22,6 @@ import cn.start.tz.module.bpm.enums.boiler.BoilerBpmModeConstantsEnum;
 import cn.start.tz.module.bpm.enums.boiler.BoilerBpmModelConstants;
 import cn.start.tz.module.bpm.enums.task.BpmModeConstantsEnum;
 import cn.start.tz.module.bpm.enums.task.BpmTaskStatusEnum;
-import cn.start.tz.module.grape.city.api.vo.GrapeCityReqDTO;
 import cn.start.tz.module.infra.api.file.FileApi;
 import cn.start.tz.module.member.api.templatesendlog.TemplateSendLogApi;
 import cn.start.tz.module.member.api.templatesendlog.dto.TemplateSendLogDto;
@@ -31,33 +29,24 @@ import cn.start.tz.module.member.api.templatesendlog.dto.TemplateSendLogRespDto;
 import cn.start.tz.module.member.api.user.MemberUserApi;
 import cn.start.tz.module.member.api.user.dto.MemberUserRespDTO;
 import cn.start.tz.module.pressure.api.taskorder.dto.NonTaxPayStatusDTO;
-import cn.start.tz.module.pressure.enums.EquipmentTypeEnum;
 import cn.start.tz.module.pressure2.api.taskorder.dto.UpdatePayStatusDTO;
 import cn.start.tz.module.pressure2.constant.TemplateIdConstants;
 import cn.start.tz.module.pressure2.controller.admin.boilertaskorderitempart.vo.BoilerTaskOrderItemPartSaveReqVO;
+import cn.start.tz.module.pressure2.controller.admin.platformEquip.vo.BoilerTaskOrderItemDetailsVO;
 import cn.start.tz.module.pressure2.controller.admin.equipboilerscheduling.vo.BoilerDeleteTask;
-import cn.start.tz.module.pressure2.controller.admin.pipetaskorder.vo.PipeOrderItemPageRespVO;
-import cn.start.tz.module.pressure2.controller.admin.pipetaskorder.vo.PipeRecheckUserPageReqVO;
-import cn.start.tz.module.pressure2.controller.admin.pipetaskorder.vo.PipeTaskOrderRespVO;
-import cn.start.tz.module.pressure2.controller.admin.pipetaskorder.vo.PipeTaskOrderSyncReportVO;
 import cn.start.tz.module.pressure2.controller.appapi.boilertaskorder.vo.BoilerOrderItemBatchClaimVO;
 import cn.start.tz.module.pressure2.dal.dataobject.businessmemberrelation.BusinessMemberRelationDO;
-import cn.start.tz.module.pressure2.dal.dataobject.indextodo.IndexTodoDO;
 import cn.start.tz.module.pressure2.dal.dataobject.notificationformreport.NotificationformReportDO;
 import cn.start.tz.module.pressure2.dal.dataobject.opinionnotificationfollowrecord.OpinionNotificationFollowRecordDO;
-import cn.start.tz.module.pressure2.dal.dataobject.orderreport.OrderReportDO;
 import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorder.PipeTaskOrderDO;
 import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitem.PipeTaskOrderItemDO;
 import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemreport.PipeTaskOrderItemReportDO;
-import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemreportuser.PipeTaskOrderItemReportUserDO;
-import cn.start.tz.module.pressure2.dal.dataobject.pipetaskordersecuritycheck.PipeTaskOrderSecurityCheckDO;
 import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderuser.PipeTaskOrderUserDO;
 import cn.start.tz.module.pressure2.dal.dataobject.taskordernontaxrecord.TaskOrderNonTaxRecordDO;
 import cn.start.tz.module.pressure2.dal.dataobject.taskordernontaxrecorditem.TaskOrderNonTaxRecordItemDO;
 import cn.start.tz.module.pressure2.dal.mysql.boileracceptorderuser.BoilerAcceptOrderUserMapper;
 import cn.start.tz.module.pressure2.dal.mysql.boilerconnectrecordreport.BoilerConnectRecordReportMapper;
 import cn.start.tz.module.pressure2.dal.mysql.businessmemberrelation.BusinessMemberRelationMapper;
-import cn.start.tz.module.pressure2.dal.mysql.indextodo.IndexTodoMapper;
 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.dal.mysql.pipetaskorderitem.PipeTaskOrderItemMapper;
@@ -73,10 +62,8 @@ import cn.start.tz.module.pressure2.controller.admin.boilertaskorderitem.vo.Boil
 import cn.start.tz.module.pressure2.controller.admin.boilertaskorderitemrecheck.vo.BoilerTaskOrderItemRecheckRespVO;
 import cn.start.tz.module.pressure2.controller.admin.boilertaskorderitemreport.vo.BoilerTaskOrderItemReportRespVO;
 import cn.start.tz.module.pressure2.controller.admin.bpmtaskinfo.vo.BpmTaskRespVO;
-import cn.start.tz.module.pressure2.controller.app.taskorder.vo.TaskOrderPaymentRespVo;
 import cn.start.tz.module.pressure2.controller.admin.costfield.vo.CostFieldRespVO;
 import cn.start.tz.module.pressure2.controller.admin.dynamictbins.vo.CreateInstantiateWithRuleVO;
-import cn.start.tz.module.pressure2.controller.admin.inspectionnature.vo.InspectionNatureTemplateDetailRespVO;
 import cn.start.tz.module.pressure2.controller.admin.reporttemplate.vo.ReportPreviewVO;
 import cn.start.tz.module.pressure2.dal.dataobject.acceptorder.AcceptOrderDO;
 import cn.start.tz.module.pressure2.dal.dataobject.appointmentconfirmorder.AppointmentConfirmOrderDO;
@@ -138,6 +125,7 @@ import cn.start.tz.module.pressure2.dal.mysql.equipboilercheckhistory.EquipBoile
 import cn.start.tz.module.pressure2.dal.mysql.equipboilerscheduling.EquipBoilerSchedulingRecordMapper;
 import cn.start.tz.module.pressure2.dal.mysql.equipboilerschedulingitem.EquipBoilerSchedulingCheckMapper;
 import cn.start.tz.module.pressure2.dal.mysql.reporttemplate.ReportTemplateMapper;
+import cn.start.tz.module.pressure2.framework.thread.CommonThread;
 import cn.start.tz.module.pressure2.service.boilerconnectrecordreport.BoilerConnectRecordReportService;
 import cn.start.tz.module.pressure2.service.boilertaskorderfileversion.BoilerTaskOrderFileVersionService;
 import cn.start.tz.module.pressure2.service.appointmentconfirmrefuseyearitem.AppointmentConfirmRefuseYearItemService;
@@ -163,12 +151,9 @@ import cn.start.tz.module.pressure2.service.inspectionnature.InspectionNatureTem
 import cn.start.tz.module.pressure2.service.opinionnotificationfollowrecord.OpinionNotificationFollowRecordService;
 import cn.start.tz.module.pressure2.service.orderreport.OrderReportService;
 import cn.start.tz.module.pressure2.service.pdf.PdfService;
-import cn.start.tz.module.pressure2.service.pipetaskorder.PipeTaskOrderService;
-import cn.start.tz.module.pressure2.service.pipetaskorder.PipeTaskOrderServiceImpl;
 import cn.start.tz.module.pressure2.service.pipetaskorderissuereport.PipeTaskOrderIssueReportService;
 import cn.start.tz.module.pressure2.service.pushtaskorder.PushTaskOrderService;
 import cn.start.tz.module.pressure2.service.synchronization.SynchronizationService;
-import cn.start.tz.module.pressure2.service.synchronization.dto.ReportDto;
 import cn.start.tz.module.pressure2.service.userwallthicknesstemplate.UserWallThicknessTemplateService;
 import cn.start.tz.module.pressure2.util.*;
 import cn.start.tz.module.system.api.calendar.CalendarApi;
@@ -179,17 +164,13 @@ 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;
-import cn.start.tz.module.system.api.orgcontact.dto.OrgContactDTO;
 import cn.start.tz.module.system.api.standard.StandardTemplateApi;
-import cn.start.tz.module.system.api.standard.dto.StandardTemplateRespDTO;
 import cn.start.tz.module.system.api.template.TemplateInitDataApi;
 import cn.start.tz.module.pressure2.util.vo.FieldMetadata;
 import cn.start.tz.module.system.api.user.AdminUserApi;
 import cn.start.tz.module.system.api.user.dto.AdminUserRespDTO;
 import com.alibaba.fastjson.JSONArray;
-import cn.start.tz.module.system.enums.TemplateInitDataEnums;
 import com.alibaba.fastjson.JSONObject;
-import com.alibaba.fastjson2.JSON;
 import com.alibaba.nacos.client.naming.utils.CollectionUtils;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -198,25 +179,16 @@ import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.github.yulichang.query.MPJLambdaQueryWrapper;
 import com.google.common.collect.Lists;
-import com.grapecity.documents.excel.*;
-import com.grapecity.documents.excel.template.DataSource.JsonDataSource;
 import jodd.util.StringUtil;
-import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.pdfbox.multipdf.PDFMergerUtility;
-import org.apache.pdfbox.pdmodel.PDDocument;
-import org.apache.pdfbox.pdmodel.PDPage;
-import org.apache.pdfbox.pdmodel.PDPageContentStream;
-import org.apache.pdfbox.pdmodel.font.PDType0Font;
 import org.redisson.api.RLock;
 import org.redisson.api.RedissonClient;
 import org.springframework.beans.BeanWrapper;
 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;
@@ -227,7 +199,6 @@ import java.beans.PropertyDescriptor;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
-import java.io.InputStream;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.text.SimpleDateFormat;
@@ -313,6 +284,9 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
     @Resource
     private CostFieldService costFieldService;
 
+    @Resource
+    private CommonThread commonThread;
+
     @Resource
     private EquipBoilerService equipBoilerService;
 
@@ -1740,6 +1714,43 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
         }
         indexTodoService.deleteIndexToDO(typeName,null,reportDO.getId(),200);
 
+        commonThread.runWithOutResult(() -> {
+            try {
+                byte[] bytes = pdfService.pdfByRefId(reportDO.getTemplateId(), reportDO.getId());
+                //检验方案需要拼接附件
+                if (reportDO.getReportType() == 600){
+                    if (StringUtils.isNotEmpty(reportDO.getManualUrl())){
+
+                        String manualUrl = reportDO.getManualUrl();
+                        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);
+
+                        bytes = mergeOutputStream.toByteArray();
+                    }
+                }
+                String fileUrl = fileApi.createFile(bytes);
+                BoilerTaskOrderItemReportDO updateItemReportDO = new BoilerTaskOrderItemReportDO().setId(reportDO.getId()).setIssueUrl(fileUrl);
+                taskOrderItemReportMapper.updateById(updateItemReportDO);
+            } catch (Exception e) {
+                log.error("----生成PDF失败:{},{}----", reportDO.getId(), e.getMessage());
+            }
+        });
+
         return true;
     }
 
@@ -5854,6 +5865,23 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
             mergedPdfBytes = null;
             mergeOutputStream.close();
 
+            //如果报告办结且没有保存办结报告PDF则生成
+            if (taskOrderItemDO.getIssueUrl() == null || StringUtils.isEmpty(taskOrderItemDO.getIssueUrl())){
+                try {
+
+                    if (TaskOrderStatusEnum.REPORT_FINISH.getStatus().equals(taskOrderItemDO.getTaskStatus())){
+                        log.info("---生成报告办结PDF---");
+                        String fileUrl = fileApi.createFile(pdfWithPageNumbers);
+                        BoilerTaskOrderItemDO updateTaskOrderItemDO = new BoilerTaskOrderItemDO()
+                                .setId(taskOrderItemDO.getId()).setIssueUrl(fileUrl);
+                        boilerTaskOrderItemMapper.updateById(updateTaskOrderItemDO);
+                    }
+
+                } catch (Exception e) {
+                    log.error("---生成报告办结PDF失败---", e);
+                }
+            }
+
             return pdfWithPageNumbers;
 
         } catch (Exception e) {
@@ -6847,4 +6875,85 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
         });
         return list;
     }
+
+    /**
+     * 二维码查看设备报告信息
+     *
+     * @param orderItemId 任务单设备id
+     * @return 结果
+     */
+    @Override
+    public BoilerTaskOrderItemDetailsVO getTaskOrderItemById(String orderItemId) {
+
+        BoilerTaskOrderItemDetailsVO taskOrderItemDetailsVO = new BoilerTaskOrderItemDetailsVO();
+        BoilerTaskOrderItemDO taskOrderItemDO = boilerTaskOrderItemMapper.selectById(orderItemId);
+        if (ObjectUtil.isNull(taskOrderItemDO)) {
+            throw exception(new ErrorCode(1001, "任务单设备不存在!"));
+        }
+
+        EquipBoilerDO equipBoilerDO = equipBoilerMapper.selectById(taskOrderItemDO.getEquipId());
+        if (ObjectUtil.isNull(equipBoilerDO)) {
+            throw exception(new ErrorCode(1001, "锅炉设备不存在!"));
+        }
+
+        BoilerTaskOrderDO taskOrderDO = boilerTaskOrderMapper.selectById(taskOrderItemDO.getOrderId());
+        if (ObjectUtil.isNull(taskOrderDO)) {
+            throw exception(new ErrorCode(1001, "承压任务单不存在!"));
+        }
+
+        List<BoilerTaskOrderItemReportDO> taskOrderItemReports = taskOrderItemReportMapper.selectList(new LambdaQueryWrapperX<BoilerTaskOrderItemReportDO>()
+                .eq(BoilerTaskOrderItemReportDO::getOrderItemId, taskOrderItemDO.getId())
+                .eq(BoilerTaskOrderItemReportDO::getReportType, 100).eq(BoilerTaskOrderItemReportDO::getTaskStatus, 800));
+        if (CollUtil.isEmpty(taskOrderItemReports)) {
+            throw exception(new ErrorCode(1001, "主报告数据丢失!"));
+        }
+
+        taskOrderItemDetailsVO.setId(taskOrderItemDO.getId());
+
+        DictDataRespDTO boilerTypeDTO = dictDataApi.getDictData("system_equip_boiler_type",equipBoilerDO.getType().toString()).getData();
+        if (boilerTypeDTO != null){
+            taskOrderItemDetailsVO.setType(equipBoilerDO.getType());
+            taskOrderItemDetailsVO.setTypeName(boilerTypeDTO.getLabel());
+        }
+        taskOrderItemDetailsVO.setUseRegisterNo(equipBoilerDO.getUseRegisterNo());
+        taskOrderItemDetailsVO.setProductNo(equipBoilerDO.getProductCode());
+        taskOrderItemDetailsVO.setEquipCode(equipBoilerDO.getEquipCode());
+        taskOrderItemDetailsVO.setEquipName(equipBoilerDO.getEquipName());
+        if (equipBoilerDO.getNextInCheckDate() != null){
+            taskOrderItemDetailsVO.setNextInCheckDate(LocalDate.from(equipBoilerDO.getNextInCheckDate()));
+        }
+        if (equipBoilerDO.getNextOutCheckDate() != null){
+            taskOrderItemDetailsVO.setNextOutCheckDate(LocalDate.from(equipBoilerDO.getNextOutCheckDate()));
+        }
+        taskOrderItemDetailsVO.setUseUnitName(taskOrderDO.getUseUnitName());
+        taskOrderItemDetailsVO.setCheckDate(taskOrderDO.getCheckDate());
+        taskOrderItemDetailsVO.setCheckType(taskOrderDO.getCheckType());
+        String checkTypeName = switch (taskOrderDO.getCheckType()) {
+            case 100 -> "内部检验";
+            case 200 -> "外部检验";
+            case 300 -> "耐压检验";
+            default -> "";
+        };
+        taskOrderItemDetailsVO.setCheckTypeName(checkTypeName);
+        //主报告检验结论
+        BoilerTaskOrderItemReportDO mainReport = taskOrderItemReportMapper.selectOne(new LambdaQueryWrapperX<BoilerTaskOrderItemReportDO>()
+                .eq(BoilerTaskOrderItemReportDO::getReportType, 100)
+                .eq(BoilerTaskOrderItemReportDO::getOrderId, taskOrderDO.getId())
+                .eq(BoilerTaskOrderItemReportDO::getTaskStatus, 800), false);
+        if (mainReport != null){
+            taskOrderItemDetailsVO.setMainConclusion(mainReport.getReportConclusion());
+            taskOrderItemDetailsVO.setReportNo(mainReport.getReportNo());
+        }
+        //社会统一信用代码socialCreditCode
+        if (equipBoilerDO.getUnitCode() != null){
+            ClientUnitDTO clientUnit = clientUnitApi.getClientUnitByCode(equipBoilerDO.getUnitCode()).getData();
+            if (clientUnit !=  null){
+                taskOrderItemDetailsVO.setSocialCreditCode(clientUnit.getSocialCreditCode());
+            }
+        }
+
+        return taskOrderItemDetailsVO;
+
+    }
+
 }

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

@@ -1937,11 +1937,12 @@ public class BoilerTaskOrderIssueReportServiceImpl extends ServiceImpl<BoilerTas
                         String useRegisterNo = equipBoilerDO.getUseRegisterNo();
 
                         if (StringUtils.isNotBlank(useRegisterNo) && useRegisterNo.length() > 5) {
-//                            ByteArrayOutputStream outputStream = getUseLogoOutputStream(taskOrderItemDO.getId(), 100);
-//                            String useLogoUrl = fileApi.createFile(outputStream.toByteArray());
-//                            if (taskOrderItemDO.getUseLogoTime() == null && StringUtils.isNotBlank(useLogoUrl)) {
-//                                updateOb.setUseLogoTime(LocalDateTime.now());
-//                            }
+                            ByteArrayOutputStream outputStream = getUseLogoOutputStream(taskOrderItemDO.getId(), 100);
+                            String useLogoUrl = fileApi.createFile(outputStream.toByteArray());
+                            if (taskOrderItemDO.getUseLogoTime() == null && StringUtils.isNotBlank(useLogoUrl)) {
+                                updateOb.setUseLogo(useLogoUrl);
+                                updateOb.setUseLogoTime(LocalDateTime.now());
+                            }
                         }
                     }
                     updateOb.setId(taskOrderItemDO.getId());
@@ -1950,7 +1951,7 @@ public class BoilerTaskOrderIssueReportServiceImpl extends ServiceImpl<BoilerTas
                 }
             }
         } catch (Exception e) {
-            log.error("生任务单设备报告失败", e);
+            log.error("生任务单设备报告失败", e);
             throw new RuntimeException(e);
         }
     }

+ 4 - 1
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorderitemreport/BoilerTaskOrderItemReportServiceImpl.java

@@ -899,7 +899,7 @@ public class BoilerTaskOrderItemReportServiceImpl extends ServiceImpl<BoilerTask
                 });
 
                 //生成任务单下所有设备报告
-                commonThread.runWithOutResult(() -> boilerTaskOrderIssueReportService.createIssueUrl(boilerTaskOrderDO.getId()));
+//                commonThread.runWithOutResult(() -> boilerTaskOrderIssueReportService.createIssueUrl(boilerTaskOrderDO.getId()));
 
                 //合同收费/属于免征则直接发送报告
                 if (Integer.valueOf(200).equals(boilerTaskOrderDO.getFeeType()) || Integer.valueOf(300).equals(boilerTaskOrderDO.getFeeNature())) {
@@ -925,6 +925,9 @@ public class BoilerTaskOrderItemReportServiceImpl extends ServiceImpl<BoilerTask
             syncReportVO.setOrderItemId(boilerTaskOrderItemReportDO.getOrderItemId());
             boilerTaskOrderService.syncAllReportDataByOrderItemId(syncReportVO);
 
+            //生成任务单下所有设备报告
+            commonThread.runWithOutResult(() -> boilerTaskOrderIssueReportService.createIssueUrl(boilerTaskOrderDO.getId()));
+
             //任务单办结后重置容器设备排期状态
             EquipBoilerDO equipBoilerDO = new EquipBoilerDO();
             equipBoilerDO.setId(taskOrderItemTmp.getEquipId());

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

@@ -7,6 +7,8 @@ import cn.start.tz.module.pressure2.controller.admin.bpmtaskinfo.vo.BpmTaskRespV
 import cn.start.tz.module.pressure2.controller.admin.costfield.vo.CostFieldRespVO;
 import cn.start.tz.module.pressure2.controller.admin.pipetaskorder.vo.*;
 import cn.start.tz.module.pressure2.controller.admin.pipetaskorderitemreport.vo.OrderItemReportUpdateVO;
+import cn.start.tz.module.pressure2.controller.admin.platformEquip.vo.BoilerTaskOrderItemDetailsVO;
+import cn.start.tz.module.pressure2.controller.admin.platformEquip.vo.PipeTaskOrderItemDetailsVO;
 import cn.start.tz.module.pressure2.dal.dataobject.acceptorder.AcceptOrderDO;
 import cn.start.tz.module.pressure2.dal.dataobject.pipeacceptorderitem.PipeAcceptOrderItemDO;
 import cn.start.tz.module.pressure2.dal.dataobject.pipeacceptorderitemdetail.PipeAcceptOrderItemDetailDO;
@@ -202,4 +204,11 @@ public interface PipeTaskOrderService extends IService<PipeTaskOrderDO>  {
     List<PipeInspectionOpinionReportedExcelVO> exportPipeInspectionOpinionReportedExcel(@Valid PipeTaskOrderPageReqVO pageReqVO);
 
     String getInputIdByEquipIdForApp(String equipId);
+
+    /**
+     * 二维码查看设备报告信息
+     * @param orderItemId 任务单设备id
+     * @return 结果
+     */
+    PipeTaskOrderItemDetailsVO getTaskOrderItemById(String orderItemId);
 }

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

@@ -34,6 +34,7 @@ import cn.start.tz.module.member.api.user.dto.MemberUserRespDTO;
 import cn.start.tz.module.pressure2.api.taskorder.dto.UpdatePayStatusDTO;
 import cn.start.tz.module.pressure2.controller.admin.appointmentconfirmorder.vo.TeamItemVO;
 import cn.start.tz.module.pressure2.controller.admin.equipboilerscheduling.vo.BoilerDeleteTask;
+import cn.start.tz.module.pressure2.controller.admin.platformEquip.vo.PipeTaskOrderItemDetailsVO;
 import cn.start.tz.module.pressure2.controller.app.taskorder.vo.TaskOrderPaymentRespVo;
 import cn.start.tz.module.pressure2.controller.admin.pipetaskorderitemreport.vo.OrderItemReportUpdateVO;
 import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorderitem.BoilerTaskOrderItemDO;
@@ -43,6 +44,7 @@ import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorderreport.BoilerT
 import cn.start.tz.module.pressure2.dal.dataobject.boilertaskordersignfile.BoilerTaskOrderSignFileDO;
 import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorderuser.BoilerTaskOrderUserDO;
 import cn.start.tz.module.pressure2.dal.dataobject.businessmemberrelation.BusinessMemberRelationDO;
+import cn.start.tz.module.pressure2.dal.dataobject.equipboiler.EquipBoilerDO;
 import cn.start.tz.module.pressure2.dal.dataobject.equipboilerschedulingitem.EquipBoilerSchedulingCheckDO;
 import cn.start.tz.module.pressure2.dal.dataobject.indextodo.IndexTodoDO;
 import cn.start.tz.module.pressure2.dal.dataobject.notificationformreport.NotificationformReportDO;
@@ -129,6 +131,7 @@ import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitemuser.PipeTaskOrde
 import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderreport.PipeTaskOrderReportMapper;
 import cn.start.tz.module.pressure2.dal.mysql.pipetaskordersecuritycheck.PipeTaskOrderSecurityCheckMapper;
 import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderuser.PipeTaskOrderUserMapper;
+import cn.start.tz.module.pressure2.framework.thread.CommonThread;
 import cn.start.tz.module.pressure2.service.boilerconnectrecordreport.BoilerConnectRecordReportService;
 import cn.start.tz.module.pressure2.service.boilertaskorderissuereport.BoilerTaskOrderIssueReportService;
 import cn.start.tz.module.pressure2.service.common.RedisService;
@@ -154,12 +157,10 @@ import cn.start.tz.module.pressure2.service.pipetaskorderoperation.PipeTaskOrder
 import cn.start.tz.module.pressure2.service.pipetaskordersecuritycheck.PipeTaskOrderSecurityCheckService;
 import cn.start.tz.module.pressure2.service.pushtaskorder.PushTaskOrderService;
 import cn.start.tz.module.pressure2.service.userwallthicknesstemplate.UserWallThicknessTemplateService;
-import cn.start.tz.module.pressure2.util.ConversionUtil;
-import cn.start.tz.module.pressure2.util.DeptDataPermissionUtil;
-import cn.start.tz.module.pressure2.util.JsonArrayUtil;
-import cn.start.tz.module.pressure2.util.JsonDiffTool;
+import cn.start.tz.module.pressure2.util.*;
 import cn.start.tz.module.system.api.calendar.CalendarApi;
 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;
@@ -258,6 +259,9 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
     @Resource
     private OrgContactApi orgContactApi;
 
+    @Resource
+    private CommonThread commonThread;
+
     @Resource
     private ClientUnitApi clientUnitApi;
 
@@ -4514,6 +4518,43 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
         }
         indexTodoService.deleteIndexToDO(typeName,null,reportDO.getId(),300);
 
+        commonThread.runWithOutResult(() -> {
+            try {
+                byte[] bytes = pdfService.pdfByRefId(reportDO.getTemplateId(), reportDO.getId());
+                //检验方案需要拼接附件
+                if (reportDO.getReportType() == 600){
+                    if (StringUtils.isNotEmpty(reportDO.getManualUrl())){
+
+                        String manualUrl = reportDO.getManualUrl();
+                        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);
+
+                        bytes = mergeOutputStream.toByteArray();
+                    }
+                }
+                String fileUrl = fileApi.createFile(bytes);
+                PipeTaskOrderItemReportDO updateItemReportDO = new PipeTaskOrderItemReportDO().setId(reportDO.getId()).setIssueUrl(fileUrl);
+                taskOrderItemReportMapper.updateById(updateItemReportDO);
+            } catch (Exception e) {
+                log.error("----生成PDF失败:{},{}----", reportDO.getId(), e.getMessage());
+            }
+        });
+
         return true;
 
     }
@@ -5079,6 +5120,28 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
             mergedPdfBytes = null;
             mergeOutputStream.close();
 
+            //如果报告办结且没有保存办结报告PDF则生成
+            if (taskOrderDO.getIssueUrl() == null || StringUtils.isEmpty(taskOrderDO.getIssueUrl())){
+                try {
+
+                    if (TaskOrderStatusEnum.REPORT_FINISH.getStatus().equals(taskOrderDO.getTaskStatus())){
+                        log.info("---生成报告办结PDF---");
+                        String fileUrl = fileApi.createFile(pdfWithPageNumbers);
+                        PipeTaskOrderDO updateTaskOrderDO = new PipeTaskOrderDO()
+                                .setId(taskOrderDO.getId()).setIssueUrl(fileUrl);
+                        pipeTaskOrderMapper.updateById(updateTaskOrderDO);
+                        //更新设备的IssueUrl
+                        LambdaUpdateWrapper<PipeTaskOrderItemDO> updateWrapper = new LambdaUpdateWrapper<>();
+                        updateWrapper.eq(PipeTaskOrderItemDO::getOrderId, taskOrderDO.getId());
+                        updateWrapper.set(PipeTaskOrderItemDO::getIssueUrl, fileUrl);
+                        pipeTaskOrderItemMapper.update(updateWrapper);
+                    }
+
+                } catch (Exception e) {
+                    log.error("---生成报告办结PDF失败---", e);
+                }
+            }
+
             return pdfWithPageNumbers;
 
         } catch (Exception e) {
@@ -6022,4 +6085,81 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
         return pipeTaskOrderMapper.selectInputIdByEquipId(equipId);
     }
 
+    /**
+     * 二维码查看设备报告信息
+     *
+     * @param orderItemId 任务单设备id
+     * @return 结果
+     */
+    @Override
+    public PipeTaskOrderItemDetailsVO getTaskOrderItemById(String orderItemId) {
+
+        PipeTaskOrderItemDetailsVO taskOrderItemDetailsVO = new PipeTaskOrderItemDetailsVO();
+        PipeTaskOrderItemDO taskOrderItemDO = pipeTaskOrderItemMapper.selectById(orderItemId);
+        if (ObjectUtil.isNull(taskOrderItemDO)) {
+            throw exception(new ErrorCode(1001, "任务单设备不存在!"));
+        }
+
+        EquipPipeDO equipPipeDO = equipPipeMapper.selectById(taskOrderItemDO.getEquipId());
+        if (ObjectUtil.isNull(equipPipeDO)) {
+            throw exception(new ErrorCode(1001, "管道设备不存在!"));
+        }
+
+        PipeTaskOrderDO taskOrderDO = pipeTaskOrderMapper.selectById(taskOrderItemDO.getOrderId());
+        if (ObjectUtil.isNull(taskOrderDO)) {
+            throw exception(new ErrorCode(1001, "承压任务单不存在!"));
+        }
+
+        List<PipeTaskOrderItemReportDO> taskOrderItemReports = taskOrderItemReportMapper.selectList(new LambdaQueryWrapperX<PipeTaskOrderItemReportDO>()
+                .eq(PipeTaskOrderItemReportDO::getOrderId, taskOrderDO.getId())
+                .eq(PipeTaskOrderItemReportDO::getReportType, 100).eq(PipeTaskOrderItemReportDO::getTaskStatus, 800));
+        if (CollUtil.isEmpty(taskOrderItemReports)) {
+            throw exception(new ErrorCode(1001, "主报告数据丢失!"));
+        }
+
+        taskOrderItemDetailsVO.setId(taskOrderItemDO.getId());
+        DictDataRespDTO dictDataRespDTO = dictDataApi.getDictData("PIPE_TYPE", equipPipeDO.getPipeCategory()).getData();
+        if (dictDataRespDTO != null) {
+            taskOrderItemDetailsVO.setType(equipPipeDO.getPipeCategory());
+            taskOrderItemDetailsVO.setTypeName(dictDataRespDTO.getLabel());
+        }
+//        taskOrderItemDetailsVO.setUseRegisterNo(equipPipeDO.getUseRegisterNo());
+        taskOrderItemDetailsVO.setProductNo(equipPipeDO.getCertificateNo());
+        taskOrderItemDetailsVO.setEquipCode(equipPipeDO.getProjectNo());
+        taskOrderItemDetailsVO.setEquipName(equipPipeDO.getProjectName());
+        if (equipPipeDO.getNextLegalCheckDate() != null){
+            taskOrderItemDetailsVO.setNextLegalCheckDate(LocalDate.from(equipPipeDO.getNextLegalCheckDate()));
+        }
+        if (equipPipeDO.getNextYearCheckDate() != null){
+            taskOrderItemDetailsVO.setNextYearCheckDate(LocalDate.from(equipPipeDO.getNextYearCheckDate()));
+        }
+        taskOrderItemDetailsVO.setUseUnitName(taskOrderDO.getUseUnitName());
+        taskOrderItemDetailsVO.setCheckDate(taskOrderDO.getCheckDate());
+        taskOrderItemDetailsVO.setCheckType(taskOrderDO.getCheckType());
+        String checkTypeName = switch (taskOrderDO.getCheckType()) {
+            case 100 -> "定期检验";
+            case 200 -> "年度检查";
+            default -> "";
+        };
+        taskOrderItemDetailsVO.setCheckTypeName(checkTypeName);
+        //主报告检验结论
+        PipeTaskOrderItemReportDO mainReport = taskOrderItemReportMapper.selectOne(new LambdaQueryWrapperX<PipeTaskOrderItemReportDO>()
+                .eq(PipeTaskOrderItemReportDO::getReportType, 100)
+                .eq(PipeTaskOrderItemReportDO::getOrderId, taskOrderDO.getId())
+                .eq(PipeTaskOrderItemReportDO::getTaskStatus, 800), false);
+        if (mainReport != null){
+            taskOrderItemDetailsVO.setMainConclusion(mainReport.getReportConclusion());
+            taskOrderItemDetailsVO.setReportNo(mainReport.getReportNo());
+        }
+        //社会统一信用代码socialCreditCode
+        if (equipPipeDO.getUnitCode() != null){
+            ClientUnitDTO clientUnit = clientUnitApi.getClientUnitByCode(equipPipeDO.getUnitCode()).getData();
+            if (clientUnit !=  null){
+                taskOrderItemDetailsVO.setSocialCreditCode(clientUnit.getSocialCreditCode());
+            }
+        }
+
+        return taskOrderItemDetailsVO;
+
+    }
 }

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

@@ -1969,6 +1969,7 @@ public class PipeTaskOrderIssueReportServiceImpl extends ServiceImpl<PipeTaskOrd
                             ByteArrayOutputStream outputStream = getUseLogoOutputStream(taskOrderItemDO.getId(), 100);
                             String useLogoUrl = fileApi.createFile(outputStream.toByteArray());
                             if (taskOrderItemDO.getUseLogoTime() == null && StringUtils.isNotBlank(useLogoUrl)) {
+                                updateOb.setUseLogo(useLogoUrl);
                                 updateOb.setUseLogoTime(LocalDateTime.now());
                             }
                         }

+ 3 - 4
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorderitemreport/PipeTaskOrderItemReportServiceImpl.java

@@ -803,15 +803,11 @@ public class PipeTaskOrderItemReportServiceImpl extends ServiceImpl<PipeTaskOrde
                 pushTaskOrderService.pushFinanceSystem(pipeTaskOrderDO);
             });
 
-            //生成任务单下所有设备报告
-            commonThread.runWithOutResult(() -> pipeTaskOrderIssueReportService.createIssueUrl(pipeTaskOrderDO.getId()));
-
             //合同收费/属于免征则直接发送报告
             if (Integer.valueOf(200).equals(pipeTaskOrderDO.getFeeType()) || Integer.valueOf(300).equals(pipeTaskOrderDO.getFeeNature())) {
                 pipeTaskOrderIssueReportService.autoIssueTaskOrderReport(pipeTaskOrderDO, pipeTaskOrderItemDOList);
             }
 
-
             //当主报告完成审批后更新所有子报告的审批人员
             LambdaUpdateWrapper<PipeTaskOrderItemReportDO> updateBySubReport = new LambdaUpdateWrapper<>();
             String taskOrderItemReportDOId = taskOrderItemReportDO.getId();
@@ -829,6 +825,9 @@ public class PipeTaskOrderItemReportServiceImpl extends ServiceImpl<PipeTaskOrde
             syncReportVO.setOrderId(taskOrderItemReportDO.getOrderId());
             pipeTaskOrderService.syncAllReportDataByOrderId(syncReportVO);
 
+            //生成任务单下所有设备报告
+            commonThread.runWithOutResult(() -> pipeTaskOrderIssueReportService.createIssueUrl(pipeTaskOrderDO.getId()));
+
             //定检需要生成使用登记表
             if (EquipmentCheckTypeEnum.PERIODICAL_SURVEY.getType().equals(pipeTaskOrderDO.getCheckType())) {
                 pipeUseRegistrationReportService.generatePipeUseRegistrationReport(pipeTaskOrderDO.getId());