Procházet zdrojové kódy

refactor(repair): 调整维修通知时机与验收驳回逻辑

- 将维修完成通知从点"完成"时移至审核通过后发送
- 审核通过后停用单独通知设备使用人,统一走通知报修人
- 验收驳回状态从"已驳回"改为"维修中",维修人保持不变
- 驳回时复位 assistantStatus 为 init,允许重新计时维修
- 驳回不重置累计工时,保留历史维修时间记录
dazhaxie před 1 týdnem
rodič
revize
d18f3caa12

+ 25 - 8
platform-service/src/main/java/com/platform/service/repair/impl/RepairApplicationFormServiceImpl.java

@@ -1094,11 +1094,12 @@ public class RepairApplicationFormServiceImpl
         sbInfoService.updateStatus(sbInfoDTO);
 
         // 维修完成通知报修人:邮件+站内信+微信,任何异常不影响完成主流程
-        try {
-            sendFinishNoticeToReporter(applicationForm);
-        } catch (Exception e) {
-            log.error("维修完成通知报修人发送失败, 报修id: " + applicationForm.getId(), e);
-        }
+        // 已调整:改到审核通过(approve)后发送,点“完成”时不再通知
+        // try {
+        // sendFinishNoticeToReporter(applicationForm);
+        // } catch (Exception e) {
+        // log.error("维修完成通知报修人发送失败, 报修id: " + applicationForm.getId(), e);
+        // }
     }
 
     /**
@@ -1801,6 +1802,8 @@ public class RepairApplicationFormServiceImpl
         applicationForm.setCheckUserId(userInfo.getUserId());
         super.modModelByPrimaryKey(applicationForm);
         // 给设备使用人员发送消息通知
+        // 暂时停用:审核通过后不再单独通知设备使用人,改为统一走 sendFinishNoticeToReporter 通知报修人
+        /*
         if (StringUtils.isNotBlank(info.getSaveUser())) {
             List<String> userIds = ListUtils.newArrayList();
             List<String> openIds = ListUtils.newArrayList();
@@ -1831,6 +1834,14 @@ public class RepairApplicationFormServiceImpl
             // 发送短信
             sendCompleteSms(receiverList, info, applicationForm);
         }
+        */
+
+        // 审核通过后通知报修人:邮件+站内信+微信(原在 finish 点“完成”时发送,移至此处),任何异常不影响审核主流程
+        try {
+            sendFinishNoticeToReporter(applicationForm);
+        } catch (Exception e) {
+            log.error("审核通过维修完成通知报修人发送失败, 报修id: " + applicationForm.getId(), e);
+        }
     }
 
     private void sendCompleteWechat(List<String> openIds, RepairApplicationForm form, SbInfo info) {
@@ -1925,17 +1936,23 @@ public class RepairApplicationFormServiceImpl
     }
 
     /**
-     * 验收是主管验收,驳回到待审核状态
+     * 验收是主管验收,驳回后直接退回「维修中」,维修人保持不变,由其继续计时维修后重新提交审核。
+     * 说明:
+     * 1)不再置为「已驳回(5)」,避免需要重新接单/派工;
+     * 2)assistantStatus 复位为 init,使手机端「开始维修」按钮重新出现,可开启新一轮计时;
+     * 3)不动 RepairTimeRecord 计时明细,也不重置 repairMinutes(累计工时模型,历史工时保留、后续累加)。
      *
      * @param dto
      */
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void returnRepair(RepairApplicationFormDTO dto) {
-        // 1.修改验收单状态
+        // 1.修改验收单状态:驳回退回维修中,维修人不变
         RepairApplicationForm applicationForm = mapper.selectById(dto.getId());
         applicationForm.setCheckContent(dto.getCheckContent());
-        applicationForm.setStatus(RepairApplicationFormStatusEnum.REBACK.getValue());
+        applicationForm.setStatus(RepairApplicationFormStatusEnum.PROCESSING.getValue());
+        // 复位辅助状态,允许维修人重新「开始维修」计时
+        applicationForm.setAssistantStatus(RepairAssistantStatusEnum.init.getValue());
         applicationForm.setUpdateTime(LocalDateTime.now());
         super.modModelByPrimaryKey(applicationForm);