Преглед изворни кода

fix(repair): 修复维修申请拒绝功能中的数据缺失问题

- 移除检查作业查询中的多余排序条件
- 添加设备信息为空时的默认值处理,避免空指针异常
- 在拒绝订单时先查询完整记录,确保邮件通知能获取到完整字段
- 使用数据库完整记录构建邮件模板,修复拒单备注丢失问题
- 统一使用完整记录数据发送微信通知,保证数据一致性
dazhaxie пре 1 дан
родитељ
комит
697c91885d

+ 2 - 2
platform-dao/src/main/java/com/platform/dao/util/MessageTemplateUtil.java

@@ -196,8 +196,8 @@ public class MessageTemplateUtil {
             //构造填充数据的Map
             //构造填充数据的Map
             Map map = new HashMap();
             Map map = new HashMap();
             map.put("no", model.getNo());
             map.put("no", model.getNo());
-            map.put("sbName", vo.getName());
-            map.put("sbNo", vo.getNo());
+            map.put("sbName", vo == null ? "未知设备" : vo.getName());
+            map.put("sbNo", vo == null ? "无" : vo.getNo());
             map.put("sbCph", model.getSbCph()==null?"无":model.getSbCph());
             map.put("sbCph", model.getSbCph()==null?"无":model.getSbCph());
             map.put("actualUser", model.getActualUser()==null?"无":model.getActualUser());
             map.put("actualUser", model.getActualUser()==null?"无":model.getActualUser());
             if(StringUtils.isBlank(model.getContent())){
             if(StringUtils.isBlank(model.getContent())){

+ 0 - 9
platform-dao/src/main/resources/mapper/check/CheckJobMapper.xml

@@ -825,15 +825,6 @@
         <where>
         <where>
             <include refid="List_Condition_Inner"/>
             <include refid="List_Condition_Inner"/>
         </where>
         </where>
-        ORDER BY
-        checkjob_inner.status asc,
-        <if test="status==null or status==1 or status==2">
-            checkjob_inner.start_time asc,
-        </if>
-        sbinfo_inner.level asc,
-        sbinfo_inner.no asc,
-        standard_inner.period_type asc,
-        standard_inner.period asc
     </select>
     </select>
 
 
     <!-- 根据ID列表查询完整数据 -->
     <!-- 根据ID列表查询完整数据 -->

+ 10 - 3
platform-service/src/main/java/com/platform/service/repair/impl/RepairApplicationFormServiceImpl.java

@@ -87,6 +87,9 @@ public class RepairApplicationFormServiceImpl
 
 
     @Override
     @Override
     public void refuseOrder(RepairApplicationFormDTO repairApplicationFormDTO) {
     public void refuseOrder(RepairApplicationFormDTO repairApplicationFormDTO) {
+        // 先从数据库查询完整记录,确保通知邮件能获取到单号等完整字段
+        RepairApplicationForm fullForm = mapper.selectById(repairApplicationFormDTO.getId());
+
         repairApplicationFormDTO.setStatus(RepairApplicationFormStatusEnum.REFUSED.getValue());
         repairApplicationFormDTO.setStatus(RepairApplicationFormStatusEnum.REFUSED.getValue());
         mapper.updateByPrimaryKeySelective(
         mapper.updateByPrimaryKeySelective(
                 BeanConverterUtil.copyObjectProperties(repairApplicationFormDTO, RepairApplicationForm.class));
                 BeanConverterUtil.copyObjectProperties(repairApplicationFormDTO, RepairApplicationForm.class));
@@ -126,13 +129,17 @@ public class RepairApplicationFormServiceImpl
         if (!domain.endsWith("/")) {
         if (!domain.endsWith("/")) {
             domain = domain + "/";
             domain = domain + "/";
         }
         }
-        String repairUrl = domain + "repair/form?no=" + repairApplicationFormDTO.getNo();
+        String repairUrl = domain + "repair/form?no=" + fullForm.getNo();
+
+        // 使用数据库完整记录构建邮件模板,保留前端传入的拒单备注
+        fullForm.setRefuseRemark(repairApplicationFormDTO.getRefuseRemark());
+        RepairApplicationFormDTO fullDTO = BeanConverterUtil.copyObjectProperties(fullForm, RepairApplicationFormDTO.class);
 
 
         // 发送邮件给机台人员
         // 发送邮件给机台人员
         SpringContextHolder.publishEvent(new WorkplaceBacklogEvent(WorkplaceBacklogTypeEnum.REPAIR.getValue(),
         SpringContextHolder.publishEvent(new WorkplaceBacklogEvent(WorkplaceBacklogTypeEnum.REPAIR.getValue(),
                 WorkplaceBacklogDetailTypeEnum.REPAIR_APPLICATION.getValue(),
                 WorkplaceBacklogDetailTypeEnum.REPAIR_APPLICATION.getValue(),
                 repairApplicationFormDTO.getId(),
                 repairApplicationFormDTO.getId(),
-                MessageTemplateUtil.getFreemarkerHtmlContentRefuse(repairUrl, repairApplicationFormDTO, sbInfo),
+                MessageTemplateUtil.getFreemarkerHtmlContentRefuse(repairUrl, fullDTO, sbInfo),
                 repairApplicationFormDTO.getId(), userIds, mails));
                 repairApplicationFormDTO.getId(), userIds, mails));
 
 
         // 发送微信通知给所有维修人角色
         // 发送微信通知给所有维修人角色
@@ -147,7 +154,7 @@ public class RepairApplicationFormServiceImpl
             String mobileRepairUrl = mobileDomain + "pages/repair-detail/repair-detail?detailId="
             String mobileRepairUrl = mobileDomain + "pages/repair-detail/repair-detail?detailId="
                     + repairApplicationFormDTO.getId();
                     + repairApplicationFormDTO.getId();
             for (String openId : openIds) {
             for (String openId : openIds) {
-                WeChatMessageUtil.repairRefuseMessage(openId, mobileRepairUrl, repairApplicationFormDTO, sbInfo);
+                WeChatMessageUtil.repairRefuseMessage(openId, mobileRepairUrl, fullDTO, sbInfo);
             }
             }
         }
         }