Ver Fonte

测试签名

xuzhancheng há 1 semana atrás
pai
commit
662d34eaec

+ 46 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/appapi/boilertaskorder/AppApiBoilerTaskOrderController.java

@@ -3,14 +3,19 @@ package cn.start.tz.module.pressure2.controller.appapi.boilertaskorder;
 import cn.start.tz.framework.common.exception.ErrorCode;
 import cn.start.tz.framework.common.pojo.CommonResult;
 import cn.start.tz.framework.common.pojo.PageResult;
+import cn.start.tz.framework.ratelimiter.core.annotation.RateLimiter;
 import cn.start.tz.module.pressure2.controller.admin.boilertaskorder.vo.*;
 import cn.start.tz.module.pressure2.controller.admin.boilertaskorderoperation.vo.BoilerTaskOrderOperationSaveReqVO;
+import cn.start.tz.module.pressure2.controller.admin.boilertaskordersignfile.vo.BoilerTaskOrderSignFileSaveReqVO;
 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.appapi.boilertaskorder.vo.OrderFromPdfReqVO;
+import cn.start.tz.module.pressure2.controller.appapi.boilertaskorder.vo.TaskOrderPushReqVO;
 import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorderitemreport.BoilerTaskOrderItemReportDO;
 import cn.start.tz.module.pressure2.service.boilertaskorder.BoilerTaskOrderService;
 import cn.start.tz.module.pressure2.service.boilertaskorderitemreport.BoilerTaskOrderItemReportService;
 import cn.start.tz.module.pressure2.service.boilertaskorderoperation.BoilerTaskOrderOperationService;
+import cn.start.tz.module.pressure2.service.tasksign.TaskSignService;
 import cn.start.tz.module.system.api.user.dto.AdminUserRespDTO;
 import com.alibaba.fastjson.JSONObject;
 import com.fasterxml.jackson.core.JsonProcessingException;
@@ -23,6 +28,7 @@ import jakarta.validation.Valid;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.util.List;
 
@@ -551,4 +557,44 @@ public class AppApiBoilerTaskOrderController {
         boilerTaskOrderService.majorIssuesRecovery(taskOrderMajorIssuesVO);
         return success(true);
     }
+
+    @Resource
+    TaskSignService taskSignService;
+
+    @GetMapping("/order-sign/submit")
+    @Operation(summary = "服务单签名提交(app)")
+    public CommonResult<Boolean> orderSignSubmit(@Valid TaskOrderPushReqVO reqVO)  throws Exception {
+        taskSignService.orderSignSubmit(reqVO);
+        return success(true);
+    }
+//
+//    @PostMapping("/service-from/adminPrintFromAndSign")
+//    @Operation(summary = "服务单签名图片流(app)")
+//    @RateLimiter
+//    public void adminPrintFromAndSign(@Valid @RequestBody OrderFromPdfReqVO reqVO,
+//                                      HttpServletResponse response) throws Exception {
+//        ByteArrayOutputStream byteArrayOutputStream = taskSignService.printAppFrom(reqVO);
+//        response.getOutputStream().write(byteArrayOutputStream.toByteArray());
+//    }
+//    @GetMapping("/order-sign/page")
+//    @Operation(summary = "服务单签名分页")
+//    public CommonResult<PageResult<BoilerTaskOrderSignFileSaveReqVO>> getOrderSignPage(@Valid TaskOrderSignFilePageReqVO pageReqVO) {
+//        //pageReqVO.setIsPush("1");
+//        PageResult<BoilerTaskOrderSignFileSaveReqVO> pageResult = taskSignService.getOrderSignAllPage(pageReqVO);
+//        return success(pageResult);
+//    }
+//    @PostMapping("/orderItemSpecialSend")
+//    @Operation(summary = "特殊项目签名消息推送")
+//    public CommonResult<Boolean> orderItemSpecialSend(@Valid @RequestBody TaskOrderItemSpecialSendReqVO taskOrderItemSpecialSendReqVO) {
+//        taskSignService.orderItemSpecialSend(taskOrderItemSpecialSendReqVO);
+//        return success(true);
+//    }
+//
+//    @PutMapping("/appOrderItemSign")
+//    @Operation(summary = "任务单检验项目签名")
+//    @RateLimiter
+//    public CommonResult<Boolean> appOrderItemSign(@Valid @RequestBody TaskOrderItemReportSignReqVO reqVO) {
+//        taskSignService.appOrderItemSign(reqVO);
+//        return success(true);
+//    }
 }

+ 39 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/appapi/boilertaskorder/vo/OrderFromPdfReqVO.java

@@ -0,0 +1,39 @@
+package cn.start.tz.module.pressure2.controller.appapi.boilertaskorder.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotEmpty;
+import lombok.Data;
+
+@Data
+public class OrderFromPdfReqVO {
+
+
+    @Schema(description = "数据json")
+    @NotEmpty(message = "数据json不能为空")
+    private String dataStr;
+
+    @Schema(description = "文件url")
+    @NotEmpty(message = "文件url不能为空")
+    private String templateUrl;
+
+    @Schema(description = "模版id")
+    private String templateId;
+
+    @Schema(description = "任务单id")
+    private String orderId;
+
+    @Schema(description = "文件类型(100=图片流, 200=下载pdf)")
+    private Integer fileType;
+
+    @Schema(description = "业务类型(100=服务单,200=告知单,300=安全检查记录,400=重大问题线索)")
+    private Integer businessType;
+
+    @Schema(description = "任务单设备id")
+    private String orderItemId;
+
+    @Schema(description = "安全记录检查")
+    private String securityCheckId;
+
+    @Schema(description = "重大问题线索版本id")
+    private String fileVersionId;
+}

+ 41 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/appapi/boilertaskorder/vo/TaskOrderPushReqVO.java

@@ -0,0 +1,41 @@
+package cn.start.tz.module.pressure2.controller.appapi.boilertaskorder.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+@Data
+public class TaskOrderPushReqVO {
+
+    @Schema(description = "id")
+    @NotNull(message = "受理单id不能为空")
+    private String id;
+
+
+    /**
+     * 接收人
+     */
+    @Schema(description = "接收人")
+    private String receiver;
+
+    /**
+     * 服务单接收人电话
+     */
+    @Schema(description = "接收人电话")
+    private String receiverPhone;
+    @Schema(description = "接收人Email")
+    private String receiverEmail;
+
+    @Schema(description = "业务类型(100=任务单,200=检验结果告知,300=安全检查记录,400=重大问题线索)", example = "2")
+    @NotNull(message = "业务类型不能为空")
+    private Integer businessType;
+
+    @Schema(description = "用户签名url", example = "https://www.iocoder.cn")
+    private String signUrl;
+
+    @Schema(description = "设备id", example = "https://www.iocoder.cn")
+    private String orderItemId;
+
+    @Schema(description = "安全检查记录ID")
+    private String securityCheckId;
+}

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

@@ -15,8 +15,8 @@ import cn.start.tz.framework.mybatis.core.dataobject.BaseDO;
  *
  * @author 特种管理员
  */
-@TableName("pressure2_boiler_task_order_sign_file")
-@KeySequence("pressure2_boiler_task_order_sign_file_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@TableName("pressure_task_order_sign_file")
+@KeySequence("pressure_task_order_sign_file_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
 @Data
 @EqualsAndHashCode(callSuper = true)
 @ToString(callSuper = true)
@@ -35,7 +35,7 @@ public class BoilerTaskOrderSignFileDO extends BaseDO {
      */
     private String orderId;
     /**
-     * 业务类型(100=任务单,200=检验结果告知)
+     * 业务类型(100=任务单,200=检验结果告知,300=安全检查记录,400=重大问题线索)
      */
     private Integer businessType;
     /**

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

@@ -62,6 +62,8 @@ public interface BoilerTaskOrderSignFileService extends IService<BoilerTaskOrder
      */
     BoilerTaskOrderSignFileDO selectLastOneByOrderIdAndBusinessType(String orderId, Integer businessType, String orderItemId, String securityCheckId);
 
+    BoilerTaskOrderSignFileDO selectLastOneByOrderIdAndBusinessType(String orderId, Integer businessType);
+
     PageResult<BoilerTaskOrderSignFileRespVO> getTaskOrderSignFilePage(BoilerTaskOrderSignFilePageReqVO pageReqVO);
 
 }

+ 11 - 2
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskordersignfile/BoilerTaskOrderSignFileServiceImpl.java

@@ -10,14 +10,12 @@ import cn.start.tz.module.pressure2.dal.mysql.equipboiler.EquipBoilerMapper;
 import org.springframework.stereotype.Service;
 import jakarta.annotation.Resource;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.transaction.annotation.Transactional;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
 import java.util.*;
 import cn.start.tz.module.pressure2.controller.admin.boilertaskordersignfile.vo.*;
 import cn.start.tz.module.pressure2.dal.dataobject.boilertaskordersignfile.BoilerTaskOrderSignFileDO;
 import cn.start.tz.framework.common.pojo.PageResult;
-import cn.start.tz.framework.common.pojo.PageParam;
 import cn.start.tz.framework.common.util.object.BeanUtils;
 
 import cn.start.tz.module.pressure2.dal.mysql.boilertaskordersignfile.BoilerTaskOrderSignFileMapper;
@@ -97,6 +95,17 @@ public class BoilerTaskOrderSignFileServiceImpl extends ServiceImpl<BoilerTaskOr
         lambdaQueryWrapperX.last("limit 1");
         return boilerTaskOrderSignFileMapper.selectOne(lambdaQueryWrapperX);
 
+    }
+    @Override
+    public BoilerTaskOrderSignFileDO selectLastOneByOrderIdAndBusinessType(String orderId, Integer businessType) {
+
+        LambdaQueryWrapperX<BoilerTaskOrderSignFileDO> lambdaQueryWrapperX = new LambdaQueryWrapperX<>();
+        lambdaQueryWrapperX.eqIfPresent(BoilerTaskOrderSignFileDO::getOrderId, orderId);
+        lambdaQueryWrapperX.eqIfPresent(BoilerTaskOrderSignFileDO::getBusinessType, businessType);
+        lambdaQueryWrapperX.orderByDesc(BoilerTaskOrderSignFileDO::getCreateTime);
+        lambdaQueryWrapperX.last("limit 1");
+        return boilerTaskOrderSignFileMapper.selectOne(lambdaQueryWrapperX);
+
     }
 
     @Override

+ 16 - 2
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QR0424_202403ReportOFData.java

@@ -3,6 +3,8 @@ package cn.start.tz.module.pressure2.service.dynamicOFData.pipe;
 import cn.start.tz.framework.common.pojo.CommonResult;
 import cn.start.tz.module.pressure2.controller.admin.dynamictbins.vo.CreateInstantiateWithRuleVO;
 import cn.start.tz.module.pressure2.dal.dataobject.acceptorder.AcceptOrderDO;
+import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorder.BoilerTaskOrderDO;
+import cn.start.tz.module.pressure2.dal.dataobject.boilertaskordersignfile.BoilerTaskOrderSignFileDO;
 import cn.start.tz.module.pressure2.dal.dataobject.equippipe.EquipPipeDO;
 import cn.start.tz.module.pressure2.dal.dataobject.pipeacceptorderitem.PipeAcceptOrderItemDO;
 import cn.start.tz.module.pressure2.dal.dataobject.pipeacceptorderuser.PipeAcceptOrderUserDO;
@@ -10,7 +12,10 @@ import cn.start.tz.module.pressure2.dal.mysql.acceptorder.AcceptOrderMapper;
 import cn.start.tz.module.pressure2.dal.mysql.equippipe.EquipPipeMapper;
 import cn.start.tz.module.pressure2.dal.mysql.pipeacceptorderitem.PipeAcceptOrderItemMapper;
 import cn.start.tz.module.pressure2.dal.mysql.pipeacceptorderuser.PipeAcceptOrderUserMapper;
+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.tasksign.TaskSignService;
 import cn.start.tz.module.system.api.user.AdminUserApi;
 import cn.start.tz.module.system.api.user.dto.AdminUserRespDTO;
 import com.alibaba.fastjson2.JSONObject;
@@ -43,7 +48,10 @@ public class QR0424_202403ReportOFData implements IDynamicOFData {
 
     @Resource
     private AdminUserApi adminUserApi;
-
+    @Resource
+    private BoilerTaskOrderSignFileService boilerTaskOrderSignFileService;
+    @Resource
+    private BoilerTaskOrderService boilerTaskOrderService;
     @Override
     public JSONObject getOFData(JSONObject params) {
         return null;
@@ -68,7 +76,13 @@ public class QR0424_202403ReportOFData implements IDynamicOFData {
         result.put("unitAddress", acceptOrderDO.getUnitAddress());
         result.put("unitCode", acceptOrderDO.getUnitCode());
         result.put("zipCode", acceptOrderDO.getZipCode());
-        result.put("contact", acceptOrderDO.getUnitContact());
+//        result.put("contact", acceptOrderDO.getUnitContact());
+        // 填充签名
+        BoilerTaskOrderDO one = boilerTaskOrderService.getOne(new LambdaQueryWrapper<BoilerTaskOrderDO>().eq(BoilerTaskOrderDO::getAcceptOrderId, refId));
+        if (one != null){
+            BoilerTaskOrderSignFileDO boilerTaskOrderSignFileDO = boilerTaskOrderSignFileService.selectLastOneByOrderIdAndBusinessType(one.getId(), 100);
+            result.put("contact", boilerTaskOrderSignFileDO.getSignUrl());
+        }
         result.put("contactPhone", acceptOrderDO.getUnitPhone());
         result.put("applicationDate", acceptOrderDO.getCreateTime().format(dateFormat));
         result.put("acceptDate", acceptOrderDO.getAppointmentDate().format(dateFormat));

+ 11 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/tasksign/TaskSignService.java

@@ -0,0 +1,11 @@
+package cn.start.tz.module.pressure2.service.tasksign;
+
+import cn.start.tz.module.pressure2.controller.appapi.boilertaskorder.vo.OrderFromPdfReqVO;
+import cn.start.tz.module.pressure2.controller.appapi.boilertaskorder.vo.TaskOrderPushReqVO;
+import jakarta.validation.Valid;
+
+public interface TaskSignService {
+    void orderSignSubmit(@Valid TaskOrderPushReqVO reqVO) throws Exception;
+
+    String printFromPdfDownload(OrderFromPdfReqVO reqVO);
+}

+ 275 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/tasksign/TaskSignServiceImpl.java

@@ -0,0 +1,275 @@
+package cn.start.tz.module.pressure2.service.tasksign;
+
+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.infra.api.sign.SignApi;
+import cn.start.tz.module.infra.api.sign.dto.CntSignReqDTO;
+import cn.start.tz.module.infra.api.sign.dto.CntSignResponseRepsDTO;
+import cn.start.tz.module.infra.api.sign.dto.QrCodeValuesDTO;
+import cn.start.tz.module.infra.api.sign.dto.SignValuesDTO;
+import cn.start.tz.module.pressure2.controller.admin.boilertaskorder.vo.MajorIssuesSubmitVO;
+import cn.start.tz.module.pressure2.controller.admin.pipetaskorderinput.vo.PipeTaskOrderInputPrintReqVO;
+import cn.start.tz.module.pressure2.controller.appapi.boilertaskorder.vo.OrderFromPdfReqVO;
+import cn.start.tz.module.pressure2.controller.appapi.boilertaskorder.vo.TaskOrderPushReqVO;
+import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorder.BoilerTaskOrderDO;
+import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorderitemreport.BoilerTaskOrderItemReportDO;
+import cn.start.tz.module.pressure2.dal.dataobject.boilertaskordersignfile.BoilerTaskOrderSignFileDO;
+import cn.start.tz.module.pressure2.dal.dataobject.orderreport.OrderReportDO;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemreport.PipeTaskOrderItemReportDO;
+import cn.start.tz.module.pressure2.dal.mysql.boilertaskorder.BoilerTaskOrderMapper;
+import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitemreport.BoilerTaskOrderItemReportMapper;
+import cn.start.tz.module.pressure2.dal.mysql.orderreport.OrderReportMapper;
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitemreport.PipeTaskOrderItemReportMapper;
+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.orderreport.OrderReportService;
+import cn.start.tz.module.pressure2.service.pipetaskorderinput.PipeTaskOrderInputService;
+import cn.start.tz.module.system.api.user.AdminUserApi;
+import cn.start.tz.module.system.api.user.dto.AdminUserRespDTO;
+import cn.start.tz.module.system.enums.common.IsYesOrNoEnum;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.google.common.collect.Lists;
+import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.io.ByteArrayOutputStream;
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Objects;
+
+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_NOT_EXISTS;
+import static java.time.LocalDate.now;
+
+@Service
+@Slf4j
+public class TaskSignServiceImpl implements TaskSignService {
+
+    @Value("${tz.env.name}")
+    private String env;
+    @Resource
+    private BoilerTaskOrderMapper boilerTaskOrderMapper;
+    @Resource
+    private BoilerTaskOrderItemReportMapper boilerTaskOrderItemReportMapper;
+    @Resource
+    private PipeTaskOrderItemReportMapper pipeTaskOrderItemReportMapper;
+    @Resource
+    private PipeTaskOrderInputService pipeTaskOrderInputService;
+
+    @Resource
+    private OrderReportMapper orderReportMapper;
+
+    @Resource
+    private OrderReportService orderReportService;
+
+    @Resource
+    private FileApi fileApi;
+    @Resource
+    private SignApi signApi;
+
+    @Resource
+    private AdminUserApi adminUserApi;
+
+    @Resource
+    private BoilerTaskOrderService boilerTaskOrderService;
+
+    @Resource
+    private BoilerTaskOrderSignFileService boilerTaskOrderSignFileService;
+
+
+
+    @Override
+    @Transactional
+    public void orderSignSubmit(TaskOrderPushReqVO reqVO) throws Exception {
+        // 根据id查询任务单
+        BoilerTaskOrderDO taskOrderDO = boilerTaskOrderMapper.selectById(reqVO.getId());
+        // 如果任务单不存在,抛出异常
+        if (taskOrderDO == null) {
+            throw new ServiceException(404, "任务单不存在");
+        }
+
+        BoilerTaskOrderSignFileDO taskOrderSignFileDO = boilerTaskOrderSignFileService
+                .selectLastOneByOrderIdAndBusinessType(taskOrderDO.getId(), reqVO.getBusinessType(), reqVO.getOrderItemId(), reqVO.getSecurityCheckId());
+        //存储签名后pdfUrl
+        OrderFromPdfReqVO orderFromPdfReqVO = new OrderFromPdfReqVO();
+        orderFromPdfReqVO.setDataStr("1");
+        orderFromPdfReqVO.setTemplateUrl("1");
+        orderFromPdfReqVO.setOrderId(taskOrderDO.getId());
+        orderFromPdfReqVO.setFileType(200);
+        orderFromPdfReqVO.setBusinessType(reqVO.getBusinessType());
+        orderFromPdfReqVO.setOrderItemId(reqVO.getOrderItemId());
+
+        if (ObjectUtil.isNotNull(taskOrderSignFileDO)) {
+            taskOrderSignFileDO.setReceiver(reqVO.getReceiver());
+            taskOrderSignFileDO.setReceiverPhone(reqVO.getReceiverPhone());
+            taskOrderSignFileDO.setIsPush(IsYesOrNoEnum.UNKNOWN.getKey());
+            taskOrderSignFileDO.setPushDateTime(LocalDateTime.now());
+            taskOrderSignFileDO.setIsSignature(IsYesOrNoEnum.YES.getKey());
+            taskOrderSignFileDO.setSignUrl(reqVO.getSignUrl());
+            taskOrderSignFileDO.setSignDate(now());
+
+            boilerTaskOrderSignFileService.updateById(taskOrderSignFileDO);
+        } else {
+            taskOrderSignFileDO = new BoilerTaskOrderSignFileDO();
+            taskOrderSignFileDO.setOrderId(taskOrderDO.getId());
+            taskOrderSignFileDO.setOrderItemId(reqVO.getOrderItemId());
+            taskOrderSignFileDO.setBusinessType(reqVO.getBusinessType());
+            taskOrderSignFileDO.setReceiver(reqVO.getReceiver());
+            taskOrderSignFileDO.setReceiverPhone(reqVO.getReceiverPhone());
+            taskOrderSignFileDO.setIsPush(IsYesOrNoEnum.UNKNOWN.getKey());
+            taskOrderSignFileDO.setPushDateTime(LocalDateTime.now());
+            taskOrderSignFileDO.setIsSignature(IsYesOrNoEnum.YES.getKey());
+            taskOrderSignFileDO.setSignUrl(reqVO.getSignUrl());
+            taskOrderSignFileDO.setSignDate(now());
+            taskOrderSignFileDO.setSecurityCheckId(reqVO.getSecurityCheckId());
+
+            boilerTaskOrderSignFileService.save(taskOrderSignFileDO);
+        }
+        if (taskOrderDO.getEquipMainType().equals(200)) {
+            orderReportService.generateBoilerOrderReport(taskOrderDO.getAcceptOrderId());
+        }else {
+            orderReportService.generatePipeOrderReport(taskOrderDO.getAcceptOrderId());
+        }
+
+//        String pdfUrl = printFromPdfDownload(orderFromPdfReqVO);
+//        if (StringUtils.isNotBlank(pdfUrl)) {
+//            taskOrderSignFileDO.setSignFilePdf(pdfUrl);
+//            boilerTaskOrderSignFileService.updateById(taskOrderSignFileDO);
+//        }
+        // 锅炉
+//        if (taskOrderDO.getEquipMainType().equals(200)) {
+//            //提交审批
+//            if (Integer.valueOf(400).equals(reqVO.getBusinessType())) {
+//                LambdaQueryWrapper<BoilerTaskOrderItemReportDO> queryWrapper = new LambdaQueryWrapperX<>();
+//                queryWrapper.eq(BoilerTaskOrderItemReportDO::getOrderItemId, reqVO.getOrderItemId());
+//                queryWrapper.eq(BoilerTaskOrderItemReportDO::getReportType, 500);
+//                List<BoilerTaskOrderItemReportDO> taskOrderItemReportDOS = boilerTaskOrderItemReportMapper.selectList(queryWrapper);
+//                if (CollUtil.isEmpty(taskOrderItemReportDOS)) {
+//                    throw exception(new ErrorCode(1000, "任务单设备文件不存在"));
+//                }
+//                MajorIssuesSubmitVO majorIssuesSubmitVO = new MajorIssuesSubmitVO();
+//                majorIssuesSubmitVO.setId(taskOrderItemReportDOS.get(0).getId());
+//                majorIssuesSubmitVO.setReportUrl(taskOrderItemReportDOS.get(0).getReportUrl());
+//                majorIssuesSubmitVO.setPrepareJson(taskOrderItemReportDOS.get(0).getPrepareJson());
+//                majorIssuesSubmitVO.setSubmitId(getLoginUserId());
+//                boilerTaskOrderService.opinionNotice(majorIssuesSubmitVO);
+//            }
+//        }
+//        // 管道
+//        if (taskOrderDO.getEquipMainType().equals(300)) {
+//            if (Integer.valueOf(400).equals(reqVO.getBusinessType())) {
+//                LambdaQueryWrapper<PipeTaskOrderItemReportDO> queryWrapper = new LambdaQueryWrapperX<>();
+//                queryWrapper.eq(PipeTaskOrderItemReportDO::getOrderItemId, reqVO.getOrderItemId());
+//                queryWrapper.eq(PipeTaskOrderItemReportDO::getReportType, 500);
+//                List<PipeTaskOrderItemReportDO> taskOrderItemReportDOS = pipeTaskOrderItemReportMapper.selectList(queryWrapper);
+//                if (CollUtil.isEmpty(taskOrderItemReportDOS)) {
+//                    throw exception(new ErrorCode(1000, "任务单设备文件不存在"));
+//                }
+//            }
+//        }
+    }
+
+    /**
+     * 服务单文件下载(小程序)
+     *
+     * @param reqVO 参数
+     * @return 结果
+     */
+    @Override
+    public String printFromPdfDownload(OrderFromPdfReqVO reqVO) {
+        String filePath = null;
+        try {
+            BoilerTaskOrderDO taskOrderDO = boilerTaskOrderMapper.selectById(reqVO.getOrderId());
+            if (ObjectUtil.isEmpty(taskOrderDO)) {
+                throw exception(TASK_ORDER_NOT_EXISTS);
+            }
+
+//            TaskOrderFileVersionDO taskOrderFileVersionDO = orderFileVersionService.selectLastOneByOrderIdAndBusinessType(reqVO.getOrderId(), reqVO.getBusinessType(), reqVO.getOrderItemId(), reqVO.getSecurityCheckId());
+//            if (ObjectUtil.isEmpty(taskOrderFileVersionDO)) {
+//                throw exception(new ErrorCode(1000, "任务单相关文件版本不存在"));
+//            }
+
+//            String notifierSignImageData = null;
+//            //业务类型=400并且告知人-签名人用户id不为空
+//            if (Integer.valueOf(400).equals(taskOrderFileVersionDO.getBusinessType()) && StringUtils.isNotEmpty(taskOrderFileVersionDO.getNotifierUserId())) {
+//                AdminUserRespDTO checkedData = adminUserApi.getUser(taskOrderFileVersionDO.getNotifierUserId()).getCheckedData();
+//                if (ObjectUtil.isNotEmpty(checkedData) && StringUtils.isNotEmpty(checkedData.getSignUrl())) {
+//                    notifierSignImageData = checkedData.getSignUrl();
+//                }
+//            }
+
+            //获取任务单签名文件信息
+            BoilerTaskOrderSignFileDO taskOrderSignFileDO = boilerTaskOrderSignFileService.selectLastOneByOrderIdAndBusinessType(taskOrderDO.getId(), reqVO.getBusinessType(), reqVO.getOrderItemId(), reqVO.getSecurityCheckId());
+            if (ObjectUtil.isNotEmpty(taskOrderSignFileDO) && StringUtils.isNotEmpty(taskOrderSignFileDO.getSignUrl())) {
+                ByteArrayOutputStream byteArrayOutputStream = null;
+                byte[] imageData = fileApi.getFileByPath(taskOrderSignFileDO.getSignUrl()).getData();
+                PipeTaskOrderInputPrintReqVO printReqVO = new PipeTaskOrderInputPrintReqVO();
+                if (Integer.valueOf(100).equals(taskOrderSignFileDO.getBusinessType())) {
+                    List<OrderReportDO> orderReportDOS = orderReportMapper.selectList(OrderReportDO::getTaskOrderId, taskOrderDO.getId());
+                    OrderReportDO orderReportDO = orderReportDOS.get(0);
+                    printReqVO.setId(orderReportDO.getId());
+                    printReqVO.setTemplateId(orderReportDO.getTemplateId());
+                } else if (Integer.valueOf(200).equals(taskOrderSignFileDO.getBusinessType())) {
+
+                } else if (Integer.valueOf(300).equals(taskOrderSignFileDO.getBusinessType()) || Integer.valueOf(400).equals(taskOrderSignFileDO.getBusinessType())) {
+                }
+                    byteArrayOutputStream = pipeTaskOrderInputService.printPipeTaskOrderInput(printReqVO);
+
+                if (Objects.equals(env, "uat") && Integer.valueOf(100).equals(taskOrderSignFileDO.getBusinessType())) {
+                    if (Integer.valueOf(100).equals(reqVO.getBusinessType())) {
+                        List<SignValuesDTO> valuesDTOList = Lists.newArrayList();
+                        SignValuesDTO valuesDTO1 = new SignValuesDTO();
+                        valuesDTO1.setTextonce(0);
+                        if (Integer.valueOf(200).equals(taskOrderDO.getCheckType())) {
+                            valuesDTO1.setSealType("6");
+                            valuesDTO1.setText("机构公章或");
+                        } else {
+                            valuesDTO1.setSealType("6");
+                            valuesDTO1.setText("机构公章或");
+                        }
+                        valuesDTOList.add(valuesDTO1);
+                        byte[] byteUrl = this.sign(byteArrayOutputStream.toByteArray(), valuesDTOList, null);
+                        //上传至资源服务器并获取url
+                        filePath = fileApi.createFile(byteUrl);
+                        LambdaUpdateWrapper<BoilerTaskOrderSignFileDO> updateWrapper = new LambdaUpdateWrapper<>();
+                        updateWrapper.eq(BoilerTaskOrderSignFileDO::getId, taskOrderSignFileDO.getId());
+                        updateWrapper.set(BoilerTaskOrderSignFileDO::getSignFilePdf, filePath);
+                        boilerTaskOrderSignFileService.update(updateWrapper);
+                    }
+                } else {
+                    filePath = fileApi.createFile(byteArrayOutputStream.toByteArray());
+                    LambdaUpdateWrapper<BoilerTaskOrderSignFileDO> updateWrapper = new LambdaUpdateWrapper<>();
+                    updateWrapper.eq(BoilerTaskOrderSignFileDO::getId, taskOrderSignFileDO.getId());
+                    updateWrapper.set(BoilerTaskOrderSignFileDO::getSignFilePdf, filePath);
+                    boilerTaskOrderSignFileService.update(updateWrapper);
+                }
+            } else {
+                throw exception(new ErrorCode(1000, "不存在签名信息pdf下载失败"));
+            }
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        return filePath;
+    }
+
+    private byte[] sign(byte[] bytes, List<SignValuesDTO> valuesDTOList, QrCodeValuesDTO qrCodeValuesDTO) throws Exception {
+        CntSignReqDTO signReqDTO = new CntSignReqDTO();
+        signReqDTO.setBytes(bytes);
+        signReqDTO.setValuesDTOList(valuesDTOList);
+        signReqDTO.setQrCodeValuesDTO(qrCodeValuesDTO);
+        CntSignResponseRepsDTO signRepsDTO = signApi.sign(signReqDTO).getCheckedData();
+        String signUrl = signRepsDTO.getRecord_saved_urls().get(0);
+        log.info("signUrl:" + signUrl);
+        return signApi.getSignFile(signUrl).getCheckedData();
+    }
+}