Bläddra i källkod

检验意见通知书调整

xy 2 veckor sedan
förälder
incheckning
8b10927865

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

@@ -2519,7 +2519,12 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
             addReport.setTemplateId(vo.getTemplateId());
             addReport.setOrderId(orderItemDOS.get(0).getOrderId());
             addReport.setTaskStatus(TaskOrderStatusEnum.ENTER.getStatus());
-            addReport.setSort(count + 1);
+            //检验意见通知书排序最后一个
+            if (reportTemplateDO.getTbType() != null && TaskOrderItemReportTypeEnum.NOTICE_OF_OPINION.getType().intValue() == reportTemplateDO.getTbType()) {
+                addReport.setSort(999);
+            }else{
+                addReport.setSort(count + 1);
+            }
             addReport.setItemPartId(itemPartId);
             addReport.setFeeType(vo.getType());
             // 非手动上传
@@ -4431,11 +4436,12 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
         addReport.setTaskStatus(TaskOrderStatusEnum.CONFIRM.getStatus());
 
         addReport.setReportType(dynamicTbDO.getTbType());
-        addReport.setSort(count.intValue() + 1);
-//        addReport.setIsApproval(reportTemplateDO.getIsApproval());
-//        addReport.setIsRatify(reportTemplateDO.getIsRatify());
-//        addReport.setIsRecheck(reportTemplateDO.getIsRecheck());
-//        addReport.setIsAutoAmount(reportTemplateDO.getIsAutoAmount());
+        //检验意见通知书排序最后一个
+        if (dynamicTbDO.getTbType() != null && TaskOrderItemReportTypeEnum.NOTICE_OF_OPINION.getType().intValue() == dynamicTbDO.getTbType()) {
+            addReport.setSort(999);
+        }else{
+            addReport.setSort(count.intValue() + 1);
+        }
         //重大线索 不需要审核
         if (dynamicTbDO.getTbType() != null && TaskOrderItemReportTypeEnum.MAJOR_CLUE.getType().intValue() == dynamicTbDO.getTbType()) {
             addReport.setStatus(200);

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

@@ -150,7 +150,7 @@ public class BoilerAppTaskOrderItemReportServiceImpl implements BoilerAppTaskOrd
                 boilerTaskOrderService.syncReportData(syncReportVO);
             }
         } catch (Exception e) {
-            throw exception(new ErrorCode(10071, "检验意见通知书整改-执行失败:" + e.getMessage()));
+            throw exception(new ErrorCode(500,"检验意见通知书整改-执行失败:" + e.getMessage()));
         } finally {
             lock.unlock();
         }

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

@@ -1,5 +1,6 @@
 package cn.start.tz.module.pressure2.service.dynamicOFData.comm;
 
+import cn.start.tz.framework.common.pojo.CommonResult;
 import cn.start.tz.framework.ip.core.utils.AreaUtils;
 import cn.start.tz.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.start.tz.module.pressure2.controller.admin.dynamictbins.vo.CreateInstantiateWithRuleVO;
@@ -23,6 +24,7 @@ import cn.start.tz.module.pressure2.service.boilertaskorder.BoilerTaskOrderServi
 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.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.dict.DictDataApi;
@@ -32,6 +34,7 @@ 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 lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
 import java.time.DayOfWeek;
@@ -42,6 +45,7 @@ import java.util.List;
 /**
  * 特种设备检验意见通知书(1)
  * */
+@Slf4j
 @Service("QC01006_202400OFData")
 public class QC01006_202400OFData implements IDynamicOFData {
 
@@ -84,6 +88,9 @@ public class QC01006_202400OFData implements IDynamicOFData {
     @Resource
     private DictDataApi dictDataApi;
 
+    @Resource
+    private CalendarApi calendarApi;
+
     @Override
     public JSONObject getOFData(JSONObject params) {
         return null;
@@ -209,7 +216,7 @@ public class QC01006_202400OFData implements IDynamicOFData {
     }
 
     /**
-     * 计算指定日期后N个工作日的日期
+     * 计算指定日期后N个工作日的日期(排除周末和节假日)
      * @param startDate 起始日期
      * @param workingDays 工作日天数
      * @return N个工作日后的日期
@@ -218,19 +225,25 @@ public class QC01006_202400OFData implements IDynamicOFData {
         if (workingDays <= 0) {
             return startDate;
         }
-        
+        try {
+            // 从起始日期的下一天开始计算,与原有逻辑保持一致
+            CommonResult<LocalDate> result = calendarApi.getCalendarDateByParam(startDate.plusDays(1), workingDays);
+            if (result != null && result.getData() != null) {
+                return result.getData();
+            }
+        } catch (Exception e) {
+            log.warn("调用日历API计算工作日失败,降级为仅排除周末: {}", e.getMessage());
+        }
+        // 降级逻辑:仅排除周末
         LocalDate resultDate = startDate;
         int daysToAdd = workingDays;
-        
         while (daysToAdd > 0) {
             resultDate = resultDate.plusDays(1);
-            // 跳过周末(周六和周日)
-            if (resultDate.getDayOfWeek() != DayOfWeek.SATURDAY && 
-                resultDate.getDayOfWeek() != DayOfWeek.SUNDAY) {
+            if (resultDate.getDayOfWeek() != DayOfWeek.SATURDAY &&
+                    resultDate.getDayOfWeek() != DayOfWeek.SUNDAY) {
                 daysToAdd--;
             }
         }
-        
         return resultDate;
     }
 }

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

@@ -22,6 +22,8 @@ import cn.start.tz.module.pressure2.service.boilertaskorder.BoilerTaskOrderServi
 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.framework.common.pojo.CommonResult;
+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.dict.DictDataApi;
 import cn.start.tz.module.system.api.dict.dto.DictDataRespDTO;
@@ -30,6 +32,7 @@ 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 lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
 import java.time.DayOfWeek;
@@ -40,6 +43,7 @@ import java.util.List;
 /**
  * 特种设备检验意见通知书(2)
  * */
+@Slf4j
 @Service("QC01007_202400OFData")
 public class QC01007_202400OFData implements IDynamicOFData {
 
@@ -82,6 +86,9 @@ public class QC01007_202400OFData implements IDynamicOFData {
     @Resource
     private DictDataApi dictDataApi;
 
+    @Resource
+    private CalendarApi calendarApi;
+
     @Override
     public JSONObject getOFData(JSONObject params) {
         return null;
@@ -263,7 +270,7 @@ public class QC01007_202400OFData implements IDynamicOFData {
     }
 
     /**
-     * 计算指定日期后N个工作日的日期
+     * 计算指定日期后N个工作日的日期(排除周末和节假日)
      * @param startDate 起始日期
      * @param workingDays 工作日天数
      * @return N个工作日后的日期
@@ -272,19 +279,25 @@ public class QC01007_202400OFData implements IDynamicOFData {
         if (workingDays <= 0) {
             return startDate;
         }
-        
+        try {
+            // 从起始日期的下一天开始计算,与原有逻辑保持一致
+            CommonResult<LocalDate> result = calendarApi.getCalendarDateByParam(startDate.plusDays(1), workingDays);
+            if (result != null && result.getData() != null) {
+                return result.getData();
+            }
+        } catch (Exception e) {
+            log.warn("调用日历API计算工作日失败,降级为仅排除周末: {}", e.getMessage());
+        }
+        // 降级逻辑:仅排除周末
         LocalDate resultDate = startDate;
         int daysToAdd = workingDays;
-        
         while (daysToAdd > 0) {
             resultDate = resultDate.plusDays(1);
-            // 跳过周末(周六和周日)
-            if (resultDate.getDayOfWeek() != DayOfWeek.SATURDAY && 
+            if (resultDate.getDayOfWeek() != DayOfWeek.SATURDAY &&
                 resultDate.getDayOfWeek() != DayOfWeek.SUNDAY) {
                 daysToAdd--;
             }
         }
-        
         return resultDate;
     }
 }

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

@@ -1560,7 +1560,12 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
                 addReport.setTemplateId(vo.getTemplateId());
                 addReport.setOrderId(orderId);
                 addReport.setTaskStatus(TaskOrderStatusEnum.ENTER.getStatus());
-                addReport.setSort(count + 1 + i);
+                //检验意见通知书排序最后一个
+                if (reportTemplateDO.getTbType() != null && TaskOrderItemReportTypeEnum.NOTICE_OF_OPINION.getType().intValue() == reportTemplateDO.getTbType()) {
+                    addReport.setSort(999);
+                }else{
+                    addReport.setSort(count + 1 + i);
+                }
                 addReport.setFeeType(vo.getType());
 
                 // 计算当前是第几个(从 1 开始)
@@ -3540,7 +3545,12 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
         addReport.setTaskStatus(TaskOrderStatusEnum.CONFIRM.getStatus());
 
         addReport.setReportType(dynamicTbDO.getTbType());
-        addReport.setSort(count.intValue() + 1);
+        //检验意见通知书排序最后一个
+        if (dynamicTbDO.getTbType() != null && TaskOrderItemReportTypeEnum.NOTICE_OF_OPINION.getType().intValue() == dynamicTbDO.getTbType()) {
+            addReport.setSort(999);
+        }else{
+            addReport.setSort(count.intValue() + 1);
+        }
         //重大线索 不需要审核
         if (dynamicTbDO.getTbType() != null && TaskOrderItemReportTypeEnum.MAJOR_CLUE.getType().intValue() == dynamicTbDO.getTbType()) {
             addReport.setStatus(200);

+ 1 - 1
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorderitemreport/PipeAppTaskOrderItemReportServiceImpl.java

@@ -145,7 +145,7 @@ public class PipeAppTaskOrderItemReportServiceImpl implements PipeAppTaskOrderIt
                 pipeTaskOrderService.syncReportData(syncReportVO);
             }
         } catch (Exception e) {
-            throw new RuntimeException("检验意见通知书整改-执行失败:" + e.getMessage());
+            throw exception(new ErrorCode(500,"检验意见通知书整改-执行失败:" + e.getMessage()));
         } finally {
             lock.unlock();
         }