xzc 1 неделя назад
Родитель
Сommit
3cb1640738
9 измененных файлов с 143 добавлено и 8 удалено
  1. 7 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/boilertaskordersignfile/BoilerTaskOrderSignFileController.java
  2. 8 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/orderreport/OrderReportController.java
  3. 10 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/orderreport/vo/OrderReportRespVO.java
  4. 16 8
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorder/BoilerTaskOrderServiceImpl.java
  5. 8 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskordersignfile/BoilerTaskOrderSignFileService.java
  6. 11 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskordersignfile/BoilerTaskOrderSignFileServiceImpl.java
  7. 25 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/orderreport/OrderReportService.java
  8. 51 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/orderreport/OrderReportServiceImpl.java
  9. 7 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorder/PipeTaskOrderServiceImpl.java

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

@@ -99,4 +99,11 @@ public class BoilerTaskOrderSignFileController {
         return success(Boolean.TRUE);
     }
 
+    @GetMapping("/hasValidSign")
+    @Operation(summary = "检查任务单是否有有效签名")
+    @Parameter(name = "orderId", description = "任务单ID", required = true)
+    public CommonResult<Boolean> hasValidSignByOrderId(@RequestParam("orderId") String orderId) {
+        return success(boilerTaskOrderSignFileService.hasValidSignByOrderId(orderId));
+    }
+
 }

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

@@ -131,4 +131,12 @@ public class OrderReportController {
         return success(true);
     }
 
+    @GetMapping("/getByTaskOrderId")
+    @Operation(summary = "根据任务单ID查询关联报告列表")
+    @Parameter(name = "taskOrderId", description = "任务单ID", required = true)
+    public CommonResult<List<OrderReportRespVO>> getByTaskOrderId(@RequestParam("taskOrderId") String taskOrderId) {
+        List<OrderReportDO> list = orderReportService.getByTaskOrderId(taskOrderId);
+        return success(BeanUtils.toBean(list, OrderReportRespVO.class));
+    }
+
 }

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

@@ -3,6 +3,7 @@ package cn.start.tz.module.pressure2.controller.admin.orderreport.vo;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 import java.util.*;
+import java.time.LocalDate;
 import org.springframework.format.annotation.DateTimeFormat;
 import java.time.LocalDateTime;
 import com.alibaba.excel.annotation.*;
@@ -36,6 +37,15 @@ public class OrderReportRespVO {
     @ExcelProperty("报表实例id")
     private String insId;
 
+    @Schema(description = "签名图片地址")
+    private String signUrl;
+
+    @Schema(description = "签名时间")
+    private LocalDate signDate;
+
+    @Schema(description = "受理单/服务单编号")
+    private String acceptOrderNo;
+
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
     @ExcelProperty("创建时间")
     private LocalDateTime createTime;

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

@@ -44,6 +44,7 @@ import cn.start.tz.module.pressure2.controller.appapi.boilertaskorder.vo.BoilerO
 import cn.start.tz.module.pressure2.dal.dataobject.businessmemberrelation.BusinessMemberRelationDO;
 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.pipetaskorderuser.PipeTaskOrderUserDO;
@@ -3195,6 +3196,11 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
                     }
                 }
             }
+            // 金额发生变动,将受理单签名置空,判断全部金额都要和之前不一致
+            if (ObjectUtil.notEqual(shouldAmount, boilerTaskOrderDO.getShouldAmount()) || ObjectUtil.notEqual(serviceAmount, boilerTaskOrderDO.getServiceAmount()) || ObjectUtil.notEqual(reduceFee, boilerTaskOrderDO.getReduceFee()) || ObjectUtil.notEqual(orderFee, boilerTaskOrderDO.getActualAmount())) {
+                orderReportService.updateFeeBoiler(id);
+            }
+
             BoilerTaskOrderDO taskOrderDO = new BoilerTaskOrderDO();
             taskOrderDO.setId(id);
             taskOrderDO.setShouldAmount(shouldAmount);
@@ -3212,6 +3218,8 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
                 acceptOrderDO.setReduceFee(reduceFee);
                 acceptOrderMapper.updateById(acceptOrderDO);
             }
+            // 同步报表
+            orderReportService.syncReportByTaskOrder(id, "boiler");
         }
     }
 
@@ -4505,17 +4513,17 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
         log.info("发起oa审核");
         try {
             ExternalOACreateFlowRes externalOAFlow = createExternalOAFlow(taskOrderItemReportDO,updateObj);
-            
+
             // 判断是否是重新发送(已有summaryId)
             boolean isResend = taskOrderItemReportDO.getSummaryId() != null && !taskOrderItemReportDO.getSummaryId().isEmpty();
-            
+
             // 如果是重新发送,且返回code=0,即使data为null也认为成功
             if (isResend && "0".equals(externalOAFlow.getCode())) {
                 log.info("OA流程重新发送成功,使用原有summaryId: {}", taskOrderItemReportDO.getSummaryId());
                 // 保持原有的summaryId不变,不需要更新
                 return;
             }
-            
+
             // 首次发送,需要获取新的summaryId
             if (externalOAFlow.getData() == null){
                 log.error("OA流程发起失败: {}", externalOAFlow.getMessage());
@@ -6493,7 +6501,7 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
                     throw new RuntimeException(e);
                 }
             });
-            
+
             // pdf 文件流合并
             mergerUtility.setDestinationStream(mergeOutputStream);
             mergerUtility.mergeDocuments(null);
@@ -6502,7 +6510,7 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
             byte[] mergedPdfBytes = mergeOutputStream.toByteArray();
             int skipPages = getMainReportSkipPageCount(taskOrderReportDOS);
             byte[] pdfWithPageNumbers = pdfService.addPageNumbersToPdf(mergedPdfBytes, skipPages);
-            
+
             // 及时释放大对象引用
             mergedPdfBytes = null;
             mergeOutputStream.close();
@@ -6621,7 +6629,7 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
                     throw new RuntimeException(e);
                 }
             });
-            
+
             // pdf 文件流合并
             mergerUtility.setDestinationStream(mergeOutputStream);
             mergerUtility.mergeDocuments(null);
@@ -6629,7 +6637,7 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
             // 重新生成页码
             byte[] mergedPdfBytes = mergeOutputStream.toByteArray();
             byte[] pdfWithPageNumbers = pdfService.addPageNumbersToPdf(mergedPdfBytes, 0);
-            
+
             // 及时释放大对象引用
             mergedPdfBytes = null;
             mergeOutputStream.close();
@@ -7356,7 +7364,7 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
         List<EquipBoilerSchedulingCheckDO> checkDOList = equipBoilerSchedulingCheckService.lambdaQuery()
                 .eq(EquipBoilerSchedulingCheckDO::getTaskOrderId, taskOrderId)
                 .list();
-        
+
         if (!checkDOList.isEmpty()) {
             List<String> checkIds = checkDOList.stream()
                     .map(EquipBoilerSchedulingCheckDO::getCheckId)

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

@@ -76,4 +76,12 @@ public interface BoilerTaskOrderSignFileService extends IService<BoilerTaskOrder
      * @param reqVO 入参
      */
     void serviceFromPush(TaskOrderPushReqVO reqVO) throws Exception;
+
+    /**
+     * 检查任务单是否有有效签名
+     *
+     * @param orderId 任务单ID
+     * @return true-签名有效,false-签名已失效
+     */
+    boolean hasValidSignByOrderId(String orderId);
 }

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

@@ -2,6 +2,7 @@ package cn.start.tz.module.pressure2.service.boilertaskordersignfile;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
 import cn.start.tz.framework.common.enums.TerminalEnum;
 import cn.start.tz.framework.common.exception.ErrorCode;
 import cn.start.tz.framework.common.exception.ServiceException;
@@ -401,4 +402,14 @@ public class BoilerTaskOrderSignFileServiceImpl extends ServiceImpl<BoilerTaskOr
 //
 //    }
 
+    @Override
+    public boolean hasValidSignByOrderId(String orderId) {
+        List<BoilerTaskOrderSignFileDO> signFiles = boilerTaskOrderSignFileMapper.selectList(
+                BoilerTaskOrderSignFileDO::getOrderId, orderId);
+        if (CollUtil.isEmpty(signFiles)) {
+            return false;
+        }
+        return signFiles.stream().anyMatch(f -> StrUtil.isNotBlank(f.getSignUrl()));
+    }
+
 }

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

@@ -98,4 +98,29 @@ public interface OrderReportService extends IService<OrderReportDO>  {
 
     String generateAcceptOrderNo(String acceptOrderId,Integer EquipMainType,String prefix);
 
+    /**
+     * 锅炉受理单签名置空
+     * @param id 任务单ID
+     */
+    void updateFeeBoiler(String id);
+
+    /**
+     * 管道受理单签名置空
+     * @param id 任务单ID
+     */
+    void updateFeePipe(String id);
+
+    /**
+     * 按任务单ID同步报表数据(金额变动后刷新报表实例)
+     * @param taskOrderId 任务单ID
+     * @param equipMainType 设备类型 (boiler/pipe)
+     */
+    void syncReportByTaskOrder(String taskOrderId, String equipMainType);
+
+    /**
+     * 根据任务单ID查询关联报告列表
+     * @param taskOrderId 任务单ID
+     * @return 报告列表
+     */
+    List<OrderReportDO> getByTaskOrderId(String taskOrderId);
 }

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

@@ -6,6 +6,7 @@ import cn.hutool.core.util.StrUtil;
 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 com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import cn.start.tz.module.infra.api.config.ConfigApi;
 import cn.start.tz.module.infra.api.file.FileApi;
 import cn.start.tz.module.pressure2.controller.admin.acceptorder.vo.AcceptOrderRespVO;
@@ -16,6 +17,7 @@ import cn.start.tz.module.pressure2.dal.dataobject.boilerconnecttbservice.Boiler
 import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorder.BoilerTaskOrderDO;
 import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorderitem.BoilerTaskOrderItemDO;
 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.dynamictb.DynamicTbDO;
 import cn.start.tz.module.pressure2.dal.dataobject.dynamictbins.DynamicTbInsDO;
 import cn.start.tz.module.pressure2.dal.dataobject.equipboilerschedulingitem.EquipBoilerSchedulingCheckDO;
@@ -25,6 +27,7 @@ import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorder.PipeTaskOrderDO
 import cn.start.tz.module.pressure2.dal.mysql.acceptorder.AcceptOrderMapper;
 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.boilertaskordersignfile.BoilerTaskOrderSignFileMapper;
 import cn.start.tz.module.pressure2.dal.mysql.dynamictb.DynamicTbMapper;
 import cn.start.tz.module.pressure2.dal.mysql.notificationformreport.NotificationformReportMapper;
 import cn.start.tz.module.pressure2.dal.mysql.pipetaskorder.PipeTaskOrderMapper;
@@ -115,6 +118,9 @@ public class OrderReportServiceImpl extends ServiceImpl<OrderReportMapper, Order
     @Resource
     private BoilerTaskOrderMapper boilerTaskOrderMapper;
 
+    @Resource
+    private BoilerTaskOrderSignFileMapper boilerTaskOrderSignFileMapper;
+
     @Resource
     private NotificationformReportMapper notificationformReportMapper;
 
@@ -755,6 +761,51 @@ public class OrderReportServiceImpl extends ServiceImpl<OrderReportMapper, Order
 
     }
 
+    @Override
+    public void updateFeeBoiler(String id) {
+        // 金额发生变动,将受理单签名置空
+        orderReportMapper.update(new LambdaUpdateWrapper<OrderReportDO>()
+                .eq(OrderReportDO::getTaskOrderId, id)
+                .set(OrderReportDO::getSignUrl, null)
+                .set(OrderReportDO::getSignDate, null));
+        // 清除签名文件表中的签名数据(报表模板从此表读取签名)
+        boilerTaskOrderSignFileMapper.update(new LambdaUpdateWrapper<BoilerTaskOrderSignFileDO>()
+                .eq(BoilerTaskOrderSignFileDO::getOrderId, id)
+                .set(BoilerTaskOrderSignFileDO::getSignUrl, null)
+                .set(BoilerTaskOrderSignFileDO::getSignDate, null));
+    }
+
+    @Override
+    public void updateFeePipe(String id) {
+        // 金额发生变动,将受理单签名置空
+        orderReportMapper.update(new LambdaUpdateWrapper<OrderReportDO>()
+                .eq(OrderReportDO::getTaskOrderId, id)
+                .set(OrderReportDO::getSignUrl, null)
+                .set(OrderReportDO::getSignDate, null));
+        // 清除签名文件表中的签名数据(报表模板从此表读取签名)
+        boilerTaskOrderSignFileMapper.update(new LambdaUpdateWrapper<BoilerTaskOrderSignFileDO>()
+                .eq(BoilerTaskOrderSignFileDO::getOrderId, id)
+                .set(BoilerTaskOrderSignFileDO::getSignUrl, null)
+                .set(BoilerTaskOrderSignFileDO::getSignDate, null));
+    }
+
+    @Override
+    public void syncReportByTaskOrder(String taskOrderId, String equipMainType) {
+        List<OrderReportDO> orderReportDOS = orderReportMapper.selectList(OrderReportDO::getTaskOrderId, taskOrderId);
+        if (CollUtil.isNotEmpty(orderReportDOS)) {
+            for (OrderReportDO orderReportDO : orderReportDOS) {
+                if (ObjectUtil.isNotNull(orderReportDO.getTemplateId())) {
+                    refreshSingleOrderReport(orderReportDO.getId(), equipMainType);
+                }
+            }
+        }
+    }
+
+    @Override
+    public List<OrderReportDO> getByTaskOrderId(String taskOrderId) {
+        return orderReportMapper.selectList(OrderReportDO::getTaskOrderId, taskOrderId);
+    }
+
     /**
      * 获取项目代码(2位)锅炉
      *

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

@@ -2282,6 +2282,11 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
                     }
                 }
             }
+            // 金额发生变动,将受理单签名置空,判断全部金额都要和之前不一致
+            if (ObjectUtil.notEqual(shouldAmount, pipeTaskOrderDO.getShouldAmount()) || ObjectUtil.notEqual(serviceAmount, pipeTaskOrderDO.getServiceAmount()) || ObjectUtil.notEqual(reduceFee, pipeTaskOrderDO.getReduceFee()) || ObjectUtil.notEqual(orderFee, pipeTaskOrderDO.getActualAmount())) {
+                orderReportService.updateFeePipe(id);
+            }
+
             PipeTaskOrderDO taskOrderDO = new PipeTaskOrderDO();
             taskOrderDO.setId(id);
             taskOrderDO.setShouldAmount(shouldAmount);
@@ -2298,6 +2303,8 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
                 acceptOrderDO.setReduceFee(reduceFee);
                 acceptOrderMapper.updateById(acceptOrderDO);
             }
+            // 同步报表
+            orderReportService.syncReportByTaskOrder(id, "pipe");
         }
 
     }