From 77b8624957ea9afafc81af72e52212c15b5f091e Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期四, 25 十二月 2025 01:34:32 +0800
Subject: [PATCH] feat: 优化新建 保存同步

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TaskStatusPushServiceImpl.java |   63 ++++++++++++++++++++++++++++++-
 1 files changed, 61 insertions(+), 2 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TaskStatusPushServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TaskStatusPushServiceImpl.java
index 98a4b8f..a9b79e8 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TaskStatusPushServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TaskStatusPushServiceImpl.java
@@ -1,11 +1,14 @@
 package com.ruoyi.system.service.impl;
 
 import com.ruoyi.common.config.LegacySystemConfig;
+import com.ruoyi.common.utils.LongUtil;
 import com.ruoyi.system.domain.SysTask;
 import com.ruoyi.system.domain.SysTaskEmergency;
 import com.ruoyi.system.domain.enums.TaskStatus;
 import com.ruoyi.system.mapper.SysTaskMapper;
 import com.ruoyi.system.service.IDispatchOrdService;
+import com.ruoyi.system.service.IServiceOrderService;
+import com.ruoyi.system.service.ISysDictDataService;
 import com.ruoyi.system.service.ISysTaskEmergencyService;
 import com.ruoyi.system.service.ITaskStatusPushService;
 import com.ruoyi.system.utils.TaskStatusPushConverter;
@@ -40,6 +43,12 @@
     
     @Autowired
     private IDispatchOrdService dispatchOrdService;
+    
+    @Autowired
+    private IServiceOrderService serviceOrderService;
+    
+    @Autowired
+    private ISysDictDataService sysDictDataService;
     
     /**
      * 灏嗗崟涓换鍔$姸鎬佹帹閫佸埌鏃х郴缁�
@@ -115,7 +124,12 @@
 //                    currentLegacyStatus, TaskStatusPushConverter.getLegacyStatusDescription(currentLegacyStatus));
                 return true; // 杩斿洖true锛屽洜涓鸿繖涓嶇畻澶辫触锛屽彧鏄笉闇�瑕佹帹閫�
             }
-            
+            if(newTaskStatus.equals(TaskStatus.CANCELLED)){
+                if(LongUtil.isNotEmpty(emergency.getLegacyServiceOrdId()) ) {
+                    log.info("鍙栨秷杞繍浠诲姟: {}", emergency.getLegacyServiceOrdId());
+                    cancelTask(emergency.getLegacyServiceOrdId(), emergency.getCancelReason(), emergency.getCancelBy());
+                }
+            }
             // 鎺ㄩ�佺姸鎬佸埌鏃х郴缁�
             boolean result = updateLegacyTaskStatus(emergency.getLegacyDispatchOrdId(), targetStatusCode);
             
@@ -204,7 +218,52 @@
             return 0;
         }
     }
-    
+
+
+    private void cancelTask(Long serviceOrderId, String cancelReason, String cancelBy){
+        // 鍙栨秷浠诲姟锛屾洿鏂癝QL Server涓殑ServiceOrder琛�
+        try {
+            if (serviceOrderId == null || serviceOrderId <= 0) {
+                log.warn("ServiceOrderID涓虹┖锛屾棤娉曞彇娑堜换鍔�");
+                return;
+            }
+            
+            // 瑙f瀽鍙栨秷鍘熷洜ID
+            Integer cancelReasonId = null;
+            String cancelReasonText = "";
+            
+            if (cancelReason != null && !cancelReason.isEmpty()) {
+                try {
+                    cancelReasonId = Integer.parseInt(cancelReason);
+                    // 浠庢暟鎹瓧鍏告煡璇㈠彇娑堝師鍥犳枃鏈�
+                    String dictLabel = sysDictDataService.selectDictLabel("task_cancel_reason", cancelReason);
+                    if (dictLabel != null && !dictLabel.isEmpty()) {
+                        cancelReasonText = "[鍙栨秷鎿嶄綔:" + (cancelBy != null ? cancelBy : "绯荤粺") + "] " + dictLabel;
+                    } else {
+                        cancelReasonText = "[鍙栨秷鎿嶄綔:" + (cancelBy != null ? cancelBy : "绯荤粺") + "]";
+                    }
+                } catch (NumberFormatException e) {
+                    log.warn("鍙栨秷鍘熷洜ID鏍煎紡閿欒: {}", cancelReason);
+                    cancelReasonText = "[鍙栨秷鎿嶄綔:" + (cancelBy != null ? cancelBy : "绯荤粺") + "] " + cancelReason;
+                }
+            } else {
+                cancelReasonText = "[鍙栨秷鎿嶄綔:" + (cancelBy != null ? cancelBy : "绯荤粺") + "]";
+            }
+            
+            // 璋冪敤Service鏇存柊ServiceOrder琛�
+            int rows = serviceOrderService.updateServiceOrderCancelInfo(serviceOrderId, cancelReasonId, cancelReasonText);
+            
+            if (rows > 0) {
+                log.info("鎴愬姛鏇存柊鏃х郴缁烻erviceOrder鍙栨秷淇℃伅锛孲erviceOrdID: {}, 鍙栨秷鍘熷洜ID: {}, 鍙栨秷鍘熷洜鏂囨湰: {}", 
+                    serviceOrderId, cancelReasonId, cancelReasonText);
+            } else {
+                log.warn("鏇存柊鏃х郴缁烻erviceOrder鍙栨秷淇℃伅澶辫触锛屾湭鎵惧埌瀵瑰簲璁㈠崟锛孲erviceOrdID: {}", serviceOrderId);
+            }
+            
+        } catch (Exception e) {
+            log.error("鏇存柊鏃х郴缁烻erviceOrder鍙栨秷淇℃伅寮傚父锛孲erviceOrdID: {}", serviceOrderId, e);
+        }
+    }
     /**
      * 鏇存柊鏃х郴缁熻皟搴﹀崟鐘舵�侊紙鐩存帴鎿嶄綔SQL Server鏁版嵁搴擄級
      * 

--
Gitblit v1.9.1