Переглянути джерело

检验意见通知书调整

xy 4 днів тому
батько
коміт
1aced7c5ce

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

@@ -1485,12 +1485,12 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
             LoginUser loginUser = getLoginUser();
             if (loginUser != null) {
                 String nickname = loginUser.getInfo().get("nickname");
-                itemReportDO.setApprovalId(loginUser.getId());
-                itemReportDO.setApprovalName(nickname);
+//                itemReportDO.setApprovalId(loginUser.getId());
+//                itemReportDO.setApprovalName(nickname);
                 itemReportDO.setRatifyId(loginUser.getId());
                 itemReportDO.setRatifyName(nickname);
             }
-            itemReportDO.setApprovalTime(LocalDateTime.now());
+//            itemReportDO.setApprovalTime(LocalDateTime.now());
             itemReportDO.setRatifyTime(LocalDateTime.now());
         }
         if (Objects.equals(AcceptOrderStatusEnum.AUDIT.getStatus(), status)) {
@@ -1563,6 +1563,13 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
             itemReportDO.setTaskStatus(TaskOrderStatusEnum.ENTER.getStatus());
         }
         taskOrderItemReportMapper.updateById(itemReportDO);
+
+        //更新 报表数据
+        BoilerTaskOrderSyncReportVO syncReportVO = new BoilerTaskOrderSyncReportVO();
+        syncReportVO.setRefId(id);
+        syncReportVO.setReportType("record");
+        syncReportData(syncReportVO);
+
         return true;
     }
 
@@ -1586,7 +1593,7 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
     }
 
     @Override
-    public Boolean approveOpinionNotice(  TaskOrderAuditVO reqVO) {
+    public Boolean approveOpinionNotice(TaskOrderAuditVO reqVO) {
         String userId = getLoginUserId();
         AdminUserRespDTO userRespDTO = adminUserApi.getUser(userId).getData();
         List<String> ids = reqVO.getIds();
@@ -1630,7 +1637,51 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
         }
 
         if (reqVO.getReportType() != null && reqVO.getReportType() == TaskOrderItemReportTypeEnum.NOTICE_OF_OPINION.getType().intValue()){
+
             ids = reqVO.getReportIds();
+            for (String id : ids) {
+                BoilerTaskOrderItemReportDO itemReportDO = taskOrderItemReportMapper.selectById(id);
+                if (itemReportDO == null) {
+                    throw new ServiceException(404, "数据不存在");
+                }
+
+                BpmTaskApproveDTO bpmResVO = new BpmTaskApproveDTO();
+                bpmResVO.setProcessInstanceId(itemReportDO.getProcessInstanceId());
+                bpmResVO.setReason(reqVO.getReason());
+                CommonResult<Boolean> approve = bpmTaskApi.approve(bpmResVO);
+                if (approve.getCode() != 0) {
+                    throw new ServiceException(902, approve.getMsg());
+                }
+
+                if (StringUtils.isNotBlank(reqVO.getRatifyId())) {
+                    BpmTaskApproveDTO updateReqVO = new BpmTaskApproveDTO();
+                    updateReqVO.setProcessInstanceId(itemReportDO.getProcessInstanceId());
+                    updateReqVO.setTaskDefinitionKey("Activity_06zdbp5");
+                    updateReqVO.setRatifyId(reqVO.getRatifyId());
+                    bpmTaskApi.updateTaskCandidates(updateReqVO);
+                }
+
+                if (StringUtils.isBlank(itemReportDO.getApprovalId())) {
+                    BoilerTaskOrderItemReportDO updateReport = new BoilerTaskOrderItemReportDO();
+                    updateReport.setId(id);
+                    updateReport.setApprovalId(userId);
+                    updateReport.setApprovalTime(LocalDateTime.now());
+                    if (userRespDTO != null) {
+                        updateReport.setApprovalName(userRespDTO.getNickname());
+                    }
+                    taskOrderItemReportMapper.updateById(updateReport);
+
+                    //更新 报表数据
+                    BoilerTaskOrderSyncReportVO syncReportVO = new BoilerTaskOrderSyncReportVO();
+                    syncReportVO.setRefId(updateReport.getId());
+                    syncReportVO.setReportType("record");
+                    syncReportData(syncReportVO);
+
+                }
+
+                return true;
+            }
+
         }
 
         for (String id : ids) {
@@ -1652,6 +1703,14 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
                 updateReport.setApprovalId(userId);
                 updateReport.setApprovalTime(LocalDateTime.now());
 
+                if(StringUtils.isBlank(itemReportDO.getRatifyId())){
+                    updateReport.setRatifyId(userId);
+                    updateReport.setRatifyTime(LocalDateTime.now());
+                    if (userRespDTO != null) {
+                        updateReport.setRatifyName(userRespDTO.getNickname());
+                    }
+                }
+
                 if (userRespDTO != null) {
                     updateReport.setApprovalName(userRespDTO.getNickname());
                 }
@@ -4072,14 +4131,14 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
             processDefinitionKey = BoilerBpmModelConstants.PRESSURE2_BOILER_WORKING_INSTRUCTION;
         }
         String processInstanceId;
-        if (itemReportDO.getReportType() == 600 || itemReportDO.getReportType() == 700) {
+        if (itemReportDO.getReportType() == 400 || itemReportDO.getReportType() == 600 || itemReportDO.getReportType() == 700) {
 
             Map<String, List<String>> startUserSelectAssignees = new HashMap<>(Map.of());
             //审核
             startUserSelectAssignees.put("Activity_0zo8k1t", majorIssuesSubmitVO.getAuditUserIds());
-            if (itemReportDO.getReportType() == 600) {
-                //审批
-                startUserSelectAssignees.put("Activity_06zdbp5", majorIssuesSubmitVO.getApproveUserIds());
+            if (itemReportDO.getReportType() == 400 || itemReportDO.getReportType() == 600) {
+                //审批先默认审核员,审核通过后修改
+                startUserSelectAssignees.put("Activity_06zdbp5", majorIssuesSubmitVO.getAuditUserIds());
             }
 
             processInstanceId = bpmProcessInstanceApi.createProcessInstance(getLoginUserId(),

+ 181 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/comm/QC01006_202400OFData.java

@@ -0,0 +1,181 @@
+package cn.start.tz.module.pressure2.service.dynamicOFData.comm;
+
+import cn.start.tz.framework.ip.core.utils.AreaUtils;
+import cn.start.tz.module.pressure2.controller.admin.dynamictbins.vo.CreateInstantiateWithRuleVO;
+import cn.start.tz.module.pressure2.controller.admin.equipboiler.vo.EquipBoilerReportVO;
+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.equippipe.EquipPipeDO;
+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.mysql.boilertaskorder.BoilerTaskOrderMapper;
+import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitem.BoilerTaskOrderItemMapper;
+import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitemreport.BoilerTaskOrderItemReportMapper;
+import cn.start.tz.module.pressure2.dal.mysql.equipboiler.EquipBoilerMapper;
+import cn.start.tz.module.pressure2.dal.mysql.equippipe.EquipPipeMapper;
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitem.PipeTaskOrderItemMapper;
+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.dynamicOFData.IDynamicOFData;
+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.dict.DictDataApi;
+import cn.start.tz.module.system.api.dict.dto.DictDataRespDTO;
+import cn.start.tz.module.system.api.user.AdminUserApi;
+import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+
+import java.time.DayOfWeek;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+
+/**
+ * 特种设备检验意见通知书(1)
+ * */
+@Service("QC01006_202400OFData")
+public class QC01006_202400OFData implements IDynamicOFData {
+
+    @Resource
+    private EquipBoilerMapper equipBoilerMapper;
+
+    @Resource
+    private EquipPipeMapper equipPipeMapper;
+
+    @Resource
+    private BoilerTaskOrderItemReportMapper boilerTaskOrderItemReportMapper;
+
+    @Resource
+    private PipeTaskOrderItemReportMapper pipeTaskOrderItemReportMapper;
+
+    @Resource
+    private BoilerTaskOrderMapper boilerTaskOrderMapper;
+
+    @Resource
+    private BoilerTaskOrderItemMapper boilerTaskOrderItemMapper;
+
+    @Resource
+    private PipeTaskOrderItemMapper pipeTaskOrderItemMapper;
+
+    @Resource
+    private AdminUserApi adminUserApi;
+
+    @Resource
+    private ClientUnitApi clientUnitApi;
+
+    @Resource
+    private BoilerTaskOrderService boilerTaskOrderService;
+
+    @Resource
+    private BoilerTaskOrderSignFileService boilerTaskOrderSignFileService;
+
+    @Resource
+    private DictDataApi dictDataApi;
+
+    @Override
+    public JSONObject getOFData(JSONObject params) {
+        return null;
+    }
+
+    @Override
+    public JSONObject getOfDataByVO(CreateInstantiateWithRuleVO ruleVO) {
+
+        //日期格式
+        DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
+        //主设备类型
+        String equipMainTpe = ruleVO.getParams().getString("equipMainType");
+
+        //设备报表ID
+        String refId = ruleVO.getRefId();
+
+        JSONObject result = new JSONObject();
+
+        if (equipMainTpe.equals("boiler")){
+
+            BoilerTaskOrderItemReportDO itemReportDO = boilerTaskOrderItemReportMapper.selectById(refId);
+            if (itemReportDO != null){
+                // 填充签名
+                BoilerTaskOrderDO taskOrderDO = boilerTaskOrderService.getOne(new LambdaQueryWrapper<BoilerTaskOrderDO>().eq(BoilerTaskOrderDO::getId, itemReportDO.getOrderId()));
+                if (taskOrderDO != null){
+                    BoilerTaskOrderSignFileDO boilerTaskOrderSignFileDO = boilerTaskOrderSignFileService.selectLastOneByOrderIdAndBusinessType(taskOrderDO.getId(), 400);
+                    if (boilerTaskOrderSignFileDO != null){
+                        result.put("checkUnit", boilerTaskOrderSignFileDO.getSignUrl());
+                    }
+                }
+                result.put("checkName",itemReportDO.getSignUrl());
+
+                String orderItemId = itemReportDO.getOrderItemId();
+                BoilerTaskOrderItemDO itemDO = boilerTaskOrderItemMapper.selectById(orderItemId);
+                if (itemDO != null){
+                    EquipBoilerReportVO equipBoilerDO = equipBoilerMapper.selectDetailsById(itemDO.getEquipId());
+                    if (equipBoilerDO != null){
+                        //设备信息
+                        result.put("equipMainType", "锅炉");
+                        DictDataRespDTO boilerTypeDTO = dictDataApi.getDictData("system_equip_boiler_type", equipBoilerDO.getType()).getData();
+                        if (boilerTypeDTO != null){
+                            result.put("equipType", boilerTypeDTO.getLabel());
+                        }
+                        result.put("equipName",equipBoilerDO.getEquipName());
+                        result.put("equipVariety",equipBoilerDO.getBoilerModel());
+                        result.put("equipCode",equipBoilerDO.getEquipCode());
+                        result.put("useNo",equipBoilerDO.getUseRegisterNo());
+                        result.put("unitName",equipBoilerDO.getUnitName());
+                        if (taskOrderDO != null){
+                            result.put("checkDate",taskOrderDO.getCheckDate());
+                        }
+                        if (itemReportDO.getRatifyTime() != null){
+                            // 计算15个工作日后的日期
+                            LocalDate ratifyDate = LocalDate.from(itemReportDO.getRatifyTime());
+                            LocalDate after15WorkDays = addWorkingDays(ratifyDate, 15);
+                            result.put("ExpiryDate", after15WorkDays.format(dateFormat));
+                        }
+                        result.put("contact",equipBoilerDO.getContact());
+                        result.put("contactPhone",equipBoilerDO.getContactPhone());
+                        result.put("unitAddress",equipBoilerDO.getUnitAddress());
+                        result.put("zipCode",equipBoilerDO.getZipCode());
+                    }
+                }
+
+                result.put("reportNo",itemReportDO.getReportNo());
+
+            }
+
+        }else if (equipMainTpe.equals("pipe")){
+
+        }
+
+        return result;
+
+    }
+
+    /**
+     * 计算指定日期后N个工作日的日期
+     * @param startDate 起始日期
+     * @param workingDays 工作日天数
+     * @return N个工作日后的日期
+     */
+    private LocalDate addWorkingDays(LocalDate startDate, int workingDays) {
+        if (workingDays <= 0) {
+            return startDate;
+        }
+        
+        LocalDate resultDate = startDate;
+        int daysToAdd = workingDays;
+        
+        while (daysToAdd > 0) {
+            resultDate = resultDate.plusDays(1);
+            // 跳过周末(周六和周日)
+            if (resultDate.getDayOfWeek() != DayOfWeek.SATURDAY && 
+                resultDate.getDayOfWeek() != DayOfWeek.SUNDAY) {
+                daysToAdd--;
+            }
+        }
+        
+        return resultDate;
+    }
+}

+ 279 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/comm/QC01007_202400OFData.java

@@ -0,0 +1,279 @@
+package cn.start.tz.module.pressure2.service.dynamicOFData.comm;
+
+import cn.start.tz.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.start.tz.module.pressure2.controller.admin.dynamictbins.vo.CreateInstantiateWithRuleVO;
+import cn.start.tz.module.pressure2.controller.admin.equipboiler.vo.EquipBoilerReportVO;
+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.equippipe.EquipPipeDO;
+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.mysql.boilertaskorder.BoilerTaskOrderMapper;
+import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitem.BoilerTaskOrderItemMapper;
+import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitemreport.BoilerTaskOrderItemReportMapper;
+import cn.start.tz.module.pressure2.dal.mysql.equipboiler.EquipBoilerMapper;
+import cn.start.tz.module.pressure2.dal.mysql.equippipe.EquipPipeMapper;
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitem.PipeTaskOrderItemMapper;
+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.dynamicOFData.IDynamicOFData;
+import cn.start.tz.module.pressure2.service.pipetaskorder.PipeTaskOrderService;
+import cn.start.tz.module.system.api.clientunit.ClientUnitApi;
+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.user.AdminUserApi;
+import cn.start.tz.module.system.api.user.dto.AdminUserRespDTO;
+import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+
+import java.time.DayOfWeek;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+
+/**
+ * 特种设备检验意见通知书(2)
+ * */
+@Service("QC01007_202400OFData")
+public class QC01007_202400OFData implements IDynamicOFData {
+
+    @Resource
+    private EquipBoilerMapper equipBoilerMapper;
+
+    @Resource
+    private EquipPipeMapper equipPipeMapper;
+
+    @Resource
+    private BoilerTaskOrderItemReportMapper boilerTaskOrderItemReportMapper;
+
+    @Resource
+    private PipeTaskOrderItemReportMapper pipeTaskOrderItemReportMapper;
+
+    @Resource
+    private PipeTaskOrderService pipeTaskOrderService;
+
+    @Resource
+    private BoilerTaskOrderMapper boilerTaskOrderMapper;
+
+    @Resource
+    private BoilerTaskOrderItemMapper boilerTaskOrderItemMapper;
+
+    @Resource
+    private PipeTaskOrderItemMapper pipeTaskOrderItemMapper;
+
+    @Resource
+    private AdminUserApi adminUserApi;
+
+    @Resource
+    private ClientUnitApi clientUnitApi;
+
+    @Resource
+    private BoilerTaskOrderService boilerTaskOrderService;
+
+    @Resource
+    private BoilerTaskOrderSignFileService boilerTaskOrderSignFileService;
+
+    @Resource
+    private DictDataApi dictDataApi;
+
+    @Override
+    public JSONObject getOFData(JSONObject params) {
+        return null;
+    }
+
+    @Override
+    public JSONObject getOfDataByVO(CreateInstantiateWithRuleVO ruleVO) {
+
+        //日期格式
+        DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
+        //主设备类型
+        String equipMainTpe = ruleVO.getParams().getString("equipMainType");
+
+        //设备报表ID
+        String refId = ruleVO.getRefId();
+
+        JSONObject result = new JSONObject();
+
+        if (equipMainTpe.equals("boiler")){
+
+            BoilerTaskOrderItemReportDO itemReportDO = boilerTaskOrderItemReportMapper.selectById(refId);
+            if (itemReportDO != null){
+                // 填充签名
+                BoilerTaskOrderDO taskOrderDO = boilerTaskOrderService.getOne(new LambdaQueryWrapper<BoilerTaskOrderDO>().eq(BoilerTaskOrderDO::getId, itemReportDO.getOrderId()));
+                if (taskOrderDO != null){
+                    BoilerTaskOrderSignFileDO boilerTaskOrderSignFileDO = boilerTaskOrderSignFileService.selectLastOneByOrderIdAndBusinessType(taskOrderDO.getId(), 400);
+                    if (boilerTaskOrderSignFileDO != null){
+                        result.put("checkUnit", boilerTaskOrderSignFileDO.getSignUrl());
+                    }
+                }
+                result.put("checkName",itemReportDO.getSignUrl());
+                if (taskOrderDO != null){
+                    result.put("checkDate",taskOrderDO.getCheckDate());
+                }
+
+                String orderItemId = itemReportDO.getOrderItemId();
+                BoilerTaskOrderItemDO itemDO = boilerTaskOrderItemMapper.selectById(orderItemId);
+                if (itemDO != null){
+                    EquipBoilerReportVO equipBoilerDO = equipBoilerMapper.selectDetailsById(itemDO.getEquipId());
+                    if (equipBoilerDO != null){
+                        //设备信息
+                        result.put("unitName",equipBoilerDO.getUnitName());
+                        result.put("equipMainType", "锅炉");
+                        DictDataRespDTO boilerTypeDTO = dictDataApi.getDictData("system_equip_boiler_type", equipBoilerDO.getType()).getData();
+                        if (boilerTypeDTO != null){
+                            result.put("equipType1", boilerTypeDTO.getLabel());
+                        }
+                        result.put("equipName",equipBoilerDO.getEquipName());
+                        result.put("equipInCode",equipBoilerDO.getUnitInternalCode());
+                        result.put("useNo",equipBoilerDO.getUseRegisterNo());
+                        result.put("equipRegisterCode1",equipBoilerDO.getUseRegisterNo());
+                        if (itemReportDO.getRatifyTime() != null){
+                            // 计算15个工作日后的日期
+                            LocalDate ratifyDate = LocalDate.from(itemReportDO.getRatifyTime());
+                            LocalDate after15WorkDays = addWorkingDays(ratifyDate, 15);
+                            result.put("ExpiryDate", after15WorkDays.format(dateFormat));
+                        }
+                        result.put("contact",equipBoilerDO.getContact());
+                        result.put("contactPhone",equipBoilerDO.getContactPhone());
+                        result.put("unitAddress",equipBoilerDO.getUnitAddress());
+                        result.put("zipCode",equipBoilerDO.getZipCode());
+                    }
+                }
+
+                result.put("reportNo",itemReportDO.getReportNo());
+
+                //审核人员信息
+                AdminUserRespDTO userInfo = adminUserApi.getUser(itemReportDO.getApprovalId()).getData();
+                if (userInfo != null){
+                    result.put("approvalName",userInfo.getSignUrl());
+                }else{
+                    result.put("approvalName",itemReportDO.getApprovalName());
+                }
+                if (itemReportDO.getApprovalTime() != null){
+                    result.put("approvalTime",itemReportDO.getApprovalTime().format(dateFormat));
+                }
+
+                //审批人员信息
+                userInfo = adminUserApi.getUser(itemReportDO.getRatifyId()).getData();
+                if (userInfo != null){
+                    result.put("ratifyName",userInfo.getSignUrl());
+                }else{
+                    result.put("ratifyName",itemReportDO.getRatifyName());
+                }
+                if (itemReportDO.getRatifyTime() != null){
+                    result.put("ratifyTime",itemReportDO.getRatifyTime().format(dateFormat));
+                }
+
+            }
+
+        }else if (equipMainTpe.equals("pipe")){
+
+            PipeTaskOrderItemReportDO itemReportDO = pipeTaskOrderItemReportMapper.selectById(refId);
+            if (itemReportDO != null){
+                // 填充签名
+                PipeTaskOrderDO taskOrderDO = pipeTaskOrderService.getOne(new LambdaQueryWrapper<PipeTaskOrderDO>().eq(PipeTaskOrderDO::getId, itemReportDO.getOrderId()));
+                if (taskOrderDO != null){
+                    BoilerTaskOrderSignFileDO boilerTaskOrderSignFileDO = boilerTaskOrderSignFileService.selectLastOneByOrderIdAndBusinessType(taskOrderDO.getId(), 400);
+                    if (boilerTaskOrderSignFileDO != null){
+                        result.put("checkUnit", boilerTaskOrderSignFileDO.getSignUrl());
+                    }
+                }
+                result.put("checkName",itemReportDO.getSignUrl());
+
+                if (taskOrderDO != null){
+                    result.put("checkDate",taskOrderDO.getCheckDate());
+                    List<PipeTaskOrderItemDO> itemDOS = pipeTaskOrderItemMapper.selectList(new LambdaQueryWrapperX<PipeTaskOrderItemDO>()
+                            .eq(PipeTaskOrderItemDO::getOrderId, taskOrderDO.getId()));
+
+                    if (!itemDOS.isEmpty()){
+
+                        PipeTaskOrderItemDO pipeTaskOrderItemDO = itemDOS.get(0);
+                        EquipPipeDO equipPipeDO = equipPipeMapper.selectById(pipeTaskOrderItemDO.getEquipId());
+                        if (equipPipeDO != null){
+                            //设备信息
+                            result.put("unitName",equipPipeDO.getUnitName());
+                            result.put("equipMainType", "压力管道");
+                            result.put("equipName","压力管道");
+                            result.put("equipInCode","-");
+                            result.put("useNo",equipPipeDO.getCertificateNo());
+                            if (itemReportDO.getRatifyTime() != null){
+                                // 计算15个工作日后的日期
+                                LocalDate ratifyDate = LocalDate.from(itemReportDO.getRatifyTime());
+                                LocalDate after15WorkDays = addWorkingDays(ratifyDate, 15);
+                                result.put("ExpiryDate", after15WorkDays.format(dateFormat));
+                            }
+                            result.put("contact",equipPipeDO.getContact());
+                            result.put("contactPhone",equipPipeDO.getContactPhone());
+                            result.put("unitAddress",equipPipeDO.getUnitAddress());
+                            result.put("zipCode",equipPipeDO.getPostalCode());
+                        }
+                    }
+
+                    result.put("reportNo",itemReportDO.getReportNo());
+
+                    //审核人员信息
+                    AdminUserRespDTO userInfo = adminUserApi.getUser(itemReportDO.getApprovalId()).getData();
+                    if (userInfo != null){
+                        result.put("approvalName",userInfo.getSignUrl());
+                    }else{
+                        result.put("approvalName",itemReportDO.getApprovalName());
+                    }
+                    if (itemReportDO.getApprovalTime() != null){
+                        result.put("approvalTime",itemReportDO.getApprovalTime().format(dateFormat));
+                    }
+
+                    //审批人员信息
+                    userInfo = adminUserApi.getUser(itemReportDO.getRatifyId()).getData();
+                    if (userInfo != null){
+                        result.put("ratifyName",userInfo.getSignUrl());
+                    }else{
+                        result.put("ratifyName",itemReportDO.getRatifyName());
+                    }
+                    if (itemReportDO.getRatifyTime() != null){
+                        result.put("ratifyTime",itemReportDO.getRatifyTime().format(dateFormat));
+                    }
+
+
+
+                }
+
+            }
+
+        }
+
+        return result;
+
+    }
+
+    /**
+     * 计算指定日期后N个工作日的日期
+     * @param startDate 起始日期
+     * @param workingDays 工作日天数
+     * @return N个工作日后的日期
+     */
+    private LocalDate addWorkingDays(LocalDate startDate, int workingDays) {
+        if (workingDays <= 0) {
+            return startDate;
+        }
+        
+        LocalDate resultDate = startDate;
+        int daysToAdd = workingDays;
+        
+        while (daysToAdd > 0) {
+            resultDate = resultDate.plusDays(1);
+            // 跳过周末(周六和周日)
+            if (resultDate.getDayOfWeek() != DayOfWeek.SATURDAY && 
+                resultDate.getDayOfWeek() != DayOfWeek.SUNDAY) {
+                daysToAdd--;
+            }
+        }
+        
+        return resultDate;
+    }
+}

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

@@ -3260,12 +3260,12 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
             processDefinitionKey = PipeBpmModelConstants.PRESSURE2_PIPE_WORKING_INSTRUCTION;
         }
         String processInstanceId;
-        if (itemReportDO.getReportType() == 600 || itemReportDO.getReportType() == 700) {
+        if (itemReportDO.getReportType() == 400 || itemReportDO.getReportType() == 600 || itemReportDO.getReportType() == 700) {
 
             Map<String, List<String>> startUserSelectAssignees = new HashMap<>(Map.of());
             //审核
             startUserSelectAssignees.put("Activity_0f0yeat", majorIssuesSubmitVO.getAuditUserIds());
-            if (itemReportDO.getReportType() == 600) {
+            if (itemReportDO.getReportType() == 400 || itemReportDO.getReportType() == 600) {
                 //审批先默认审核员,审核通过后修改
                 startUserSelectAssignees.put("Activity_0akhfc1", majorIssuesSubmitVO.getAuditUserIds());
             }
@@ -4141,12 +4141,12 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
             LoginUser loginUser = getLoginUser();
             if (loginUser != null) {
                 String nickname = loginUser.getInfo().get("nickname");
-                itemReportDO.setApprovalId(loginUser.getId());
-                itemReportDO.setApprovalName(nickname);
+//                itemReportDO.setApprovalId(loginUser.getId());
+//                itemReportDO.setApprovalName(nickname);
                 itemReportDO.setRatifyId(loginUser.getId());
                 itemReportDO.setRatifyName(nickname);
             }
-            itemReportDO.setApprovalTime(LocalDateTime.now());
+//            itemReportDO.setApprovalTime(LocalDateTime.now());
             itemReportDO.setRatifyTime(LocalDateTime.now());
         }
         if (Objects.equals(AcceptOrderStatusEnum.AUDIT.getStatus(), status)) {
@@ -4219,6 +4219,13 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
             itemReportDO.setTaskStatus(TaskOrderStatusEnum.ENTER.getStatus());
         }
         taskOrderItemReportMapper.updateById(itemReportDO);
+
+        //更新 报表数据
+        BoilerTaskOrderSyncReportVO syncReportVO = new BoilerTaskOrderSyncReportVO();
+        syncReportVO.setRefId(id);
+        syncReportVO.setReportType("record");
+        syncReportData(syncReportVO);
+
         return true;
 
     }
@@ -4249,7 +4256,50 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
         List<String> ids = reqVO.getIds();
 
         if (reqVO.getReportType() != null && reqVO.getReportType() == TaskOrderItemReportTypeEnum.NOTICE_OF_OPINION.getType().intValue()){
+
             ids = reqVO.getReportIds();
+            for (String id : ids) {
+                PipeTaskOrderItemReportDO itemReportDO = taskOrderItemReportMapper.selectById(id);
+                if (itemReportDO == null) {
+                    throw new ServiceException(404, "数据不存在");
+                }
+
+                BpmTaskApproveDTO bpmResVO = new BpmTaskApproveDTO();
+                bpmResVO.setProcessInstanceId(itemReportDO.getProcessInstanceId());
+                bpmResVO.setReason(reqVO.getReason());
+                CommonResult<Boolean> approve = bpmTaskApi.approve(bpmResVO);
+                if (approve.getCode() != 0) {
+                    throw new ServiceException(902, approve.getMsg());
+                }
+
+                if (StringUtils.isNotBlank(reqVO.getRatifyId())) {
+                    BpmTaskApproveDTO updateReqVO = new BpmTaskApproveDTO();
+                    updateReqVO.setProcessInstanceId(itemReportDO.getProcessInstanceId());
+                    updateReqVO.setTaskDefinitionKey("Activity_0akhfc1");
+                    updateReqVO.setRatifyId(reqVO.getRatifyId());
+                    bpmTaskApi.updateTaskCandidates(updateReqVO);
+                }
+
+                if (StringUtils.isBlank(itemReportDO.getApprovalId())) {
+                    PipeTaskOrderItemReportDO updateReport = new PipeTaskOrderItemReportDO();
+                    updateReport.setId(id);
+                    updateReport.setApprovalId(userId);
+                    updateReport.setApprovalTime(LocalDateTime.now());
+                    if (userRespDTO != null) {
+                        updateReport.setApprovalName(userRespDTO.getNickname());
+                    }
+                    taskOrderItemReportMapper.updateById(updateReport);
+
+                    //更新 报表数据
+                    BoilerTaskOrderSyncReportVO syncReportVO = new BoilerTaskOrderSyncReportVO();
+                    syncReportVO.setRefId(updateReport.getId());
+                    syncReportVO.setReportType("record");
+                    syncReportData(syncReportVO);
+
+                }
+
+                return true;
+            }
         }
 
         for (String id : ids) {