From 847a7773ef1a8ad418c6934d35b5f205a97c04d0 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期六, 06 十二月 2025 17:03:24 +0800
Subject: [PATCH] fix:在任务状态更新时,需要更新日志到旧系统

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.java |  117 +++++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 98 insertions(+), 19 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.java
index 233a8cf..b983222 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.java
@@ -633,11 +633,11 @@
                 }
             }
         }
-        
+        // 鐢ㄤ簬璺熻釜鏄惁闇�瑕侀噸鏂板悓姝ワ紙杞﹁締銆佷汉鍛樸�佸湴鍧�銆佹垚浜や环鍙樻洿锛�
+        boolean needResync = true;
         int result = sysTaskMapper.updateSysTask(task);
         
-        // 鐢ㄤ簬璺熻釜鏄惁闇�瑕侀噸鏂板悓姝ワ紙杞﹁締銆佷汉鍛樸�佸湴鍧�銆佹垚浜や环鍙樻洿锛�
-        boolean needResync = false;
+
         
         // 鏇存柊杞﹁締鍏宠仈
         if (result > 0 && updateVO.getVehicleIds() != null && !updateVO.getVehicleIds().isEmpty()) {
@@ -1024,7 +1024,6 @@
      * @return 缁撴灉
      */
     @Override
-    @Transactional
     public int changeTaskStatus(Long taskId, TaskStatus newStatus, String remark) {
         return changeTaskStatusWithLocation(taskId, newStatus, remark, null);
     }
@@ -1039,7 +1038,6 @@
      * @return 缁撴灉
      */
     @Override
-    @Transactional
     public int changeTaskStatusWithLocation(Long taskId, TaskStatus newStatus, String remark, SysTaskLog locationLog) {
         SysTask oldTask = sysTaskMapper.selectSysTaskByTaskId(taskId);
         if (oldTask == null) {
@@ -1091,7 +1089,10 @@
                     .map(SysTaskAssignee::getUserId)
                     .collect(Collectors.toList());
             }
-            
+            Long userId=SecurityUtils.getUserId();
+            Double lng=locationLog==null?null: locationLog.getLongitude();
+            Double lat=locationLog==null?null: locationLog.getLatitude();
+            String address=locationLog==null?null: locationLog.getLocationAddress();
             eventPublisher.publishEvent(new TaskStatusChangedEvent(
                 this,
                 oldTask.getTaskId(),
@@ -1101,7 +1102,11 @@
                 oldTaskStatus.getInfo(),
                 newStatus.getInfo(),
                 assigneeIds,
-                oldTask.getCreatorId()
+                oldTask.getCreatorId(),
+                userId,
+                    lng, lat,
+                    address
+
             ));
         }
         
@@ -2037,12 +2042,7 @@
                     }
                 }
             }
-            if (createVO.getHospitalOut().getLongitude() != null) {
-                existingInfo.setHospitalOutLongitude(createVO.getHospitalOut().getLongitude());
-            }
-            if (createVO.getHospitalOut().getLatitude() != null) {
-                existingInfo.setHospitalOutLatitude(createVO.getHospitalOut().getLatitude());
-            }
+
         }
         
         // 鏇存柊杞叆鍖婚櫌淇℃伅
@@ -2082,12 +2082,7 @@
                     }
                 }
             }
-            if (createVO.getHospitalIn().getLongitude() != null) {
-                existingInfo.setHospitalInLongitude(createVO.getHospitalIn().getLongitude());
-            }
-            if (createVO.getHospitalIn().getLatitude() != null) {
-                existingInfo.setHospitalInLatitude(createVO.getHospitalIn().getLatitude());
-            }
+
         }
         
         // 鏇存柊璐圭敤淇℃伅
@@ -2272,5 +2267,89 @@
         }
     }
     
+    /**
+     * 妫�鏌ヤ换鍔℃槸鍚﹀彲浠ュ嚭鍙�
+     * 妫�鏌ワ細
+     * 1. 杞﹁締鏄惁鏈夋湭瀹屾垚鐨勪换鍔�
+     * 2. 鎵ц浜哄憳鏄惁鏈夋湭瀹屾垚鐨勪换鍔�
+     * 
+     * @param taskId 浠诲姟ID
+     * @return AjaxResult 鏍¢獙缁撴灉
+     */
+    @Override
+    public com.ruoyi.common.core.domain.AjaxResult checkTaskCanDepart(Long taskId) {
+        // 鑾峰彇浠诲姟璇︽儏
+        SysTask task = this.getTaskDetail(taskId);
+        if (task == null) {
+            return com.ruoyi.common.core.domain.AjaxResult.error("浠诲姟涓嶅瓨鍦�");
+        }
+        
+        List<Map<String, Object>> conflicts = new ArrayList<>();
+        
+        // 1. 妫�鏌ヨ溅杈嗘槸鍚︽湁鏈畬鎴愮殑浠诲姟
+        List<SysTaskVehicle> taskVehicles = task.getAssignedVehicles();
+        if (taskVehicles != null && !taskVehicles.isEmpty()) {
+            for (SysTaskVehicle taskVehicle : taskVehicles) {
+                Long vehicleId = taskVehicle.getVehicleId();
+                List<SysTask> vehicleActiveTasks = this.checkVehicleActiveTasks(vehicleId);
+                
+                // 杩囨护鎺夊綋鍓嶄换鍔℃湰韬�
+                vehicleActiveTasks = vehicleActiveTasks.stream()
+                    .filter(t -> !t.getTaskId().equals(taskId))
+                    .collect(Collectors.toList());
+                
+                if (!vehicleActiveTasks.isEmpty()) {
+                    for (SysTask activeTask : vehicleActiveTasks) {
+                        Map<String, Object> conflict = new HashMap<>();
+                        conflict.put("type", "vehicle");
+                        conflict.put("vehicleNo", taskVehicle.getVehicleNo());
+                        conflict.put("taskId", activeTask.getTaskId());
+                        conflict.put("taskCode", activeTask.getTaskCode());
+                        conflict.put("taskStatus", activeTask.getTaskStatus());
+                        conflict.put("message", String.format("杞﹁締 %s 灏氭湁鏈畬鎴愮殑浠诲姟 %s锛岃鍏堝畬鎴�", 
+                            taskVehicle.getVehicleNo(), activeTask.getTaskCode()));
+                        conflicts.add(conflict);
+                    }
+                }
+            }
+        }
+        
+        // 2. 妫�鏌ユ墽琛屼汉鍛樻槸鍚︽湁鏈畬鎴愮殑浠诲姟
+        List<SysTaskAssignee> assignees = task.getAssignees();
+        if (assignees != null && !assignees.isEmpty()) {
+            for (SysTaskAssignee assignee : assignees) {
+                Long userId = assignee.getUserId();
+                
+                // 鏌ヨ璇ユ墽琛屼汉鐨勬墍鏈夋鍦ㄨ繘琛屼腑鐨勪换鍔★紙鎺掗櫎PENDING銆丆OMPLETED銆丆ANCELLED锛�
+                List<SysTask> userActiveTasks = this.selectMyTasks(userId).stream()
+                    .filter(t -> !TaskStatus.PENDING.getCode().equals(t.getTaskStatus())
+                              && !TaskStatus.COMPLETED.getCode().equals(t.getTaskStatus()) 
+                              && !TaskStatus.CANCELLED.getCode().equals(t.getTaskStatus())
+                              && !t.getTaskId().equals(taskId)) // 杩囨护鎺夊綋鍓嶄换鍔�
+                    .collect(Collectors.toList());
+                
+                if (!userActiveTasks.isEmpty()) {
+                    for (SysTask activeTask : userActiveTasks) {
+                        Map<String, Object> conflict = new HashMap<>();
+                        conflict.put("type", "assignee");
+                        conflict.put("userName", assignee.getUserName());
+                        conflict.put("taskId", activeTask.getTaskId());
+                        conflict.put("taskCode", activeTask.getTaskCode());
+                        conflict.put("taskStatus", activeTask.getTaskStatus());
+                        conflict.put("message", String.format("鎵ц浜� %s 灏氭湁姝e湪杩涜涓殑浠诲姟 %s锛岃鍏堝畬鎴�", 
+                            assignee.getUserName(), activeTask.getTaskCode()));
+                        conflicts.add(conflict);
+                    }
+                }
+            }
+        }
+        
+        // 杩斿洖缁撴灉
+        Map<String, Object> result = new HashMap<>();
+        result.put("valid", conflicts.isEmpty());
+        result.put("conflicts", conflicts);
+        
+        return com.ruoyi.common.core.domain.AjaxResult.success(result);
+    }
    
 }

--
Gitblit v1.9.1