From fd047fa7234dc11643dab8ecbf38e8d7a8ba0854 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期六, 22 十一月 2025 23:48:12 +0800
Subject: [PATCH] feat:修改任务

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.java |  164 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 160 insertions(+), 4 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 7e28b71..b939e42 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
@@ -2,10 +2,7 @@
 
 import java.io.*;
 import java.math.BigDecimal;
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
-import java.util.ArrayList;
+import java.util.*;
 import java.util.stream.Collectors;
 import java.net.HttpURLConnection;
 import java.net.URL;
@@ -490,10 +487,51 @@
         task.setUpdateTime(DateUtils.getNowDate());
         task.setRemark(updateVO.getRemark());
         
+        // 濡傛灉鏇存柊浜嗛儴闂↖D
+        if (updateVO.getDeptId() != null) {
+            task.setDeptId(updateVO.getDeptId());
+        }
+        
         // 閲嶆柊璁$畻棰勮鍏噷鏁�
         calculateEstimatedDistance(task);
         
         int result = sysTaskMapper.updateSysTask(task);
+        
+        // 鏇存柊杞﹁締鍏宠仈
+        if (result > 0 && updateVO.getVehicleIds() != null && !updateVO.getVehicleIds().isEmpty()) {
+            // 鏌ヨ鐜版湁鐨勮溅杈嗗叧鑱�
+            List<SysTaskVehicle> existingVehicles = sysTaskVehicleMapper.selectSysTaskVehicleByTaskId(updateVO.getTaskId());
+            List<Long> existingVehicleIds = existingVehicles.stream()
+                .map(SysTaskVehicle::getVehicleId)
+                .collect(Collectors.toList());
+            
+            // 姣旇緝鏂版棫杞﹁締ID鍒楄〃锛屽垽鏂槸鍚︽湁鍙樺寲
+            boolean vehiclesChanged = !new HashSet<>(existingVehicleIds).equals(new HashSet<>(updateVO.getVehicleIds()));
+            
+            // 鍙湁杞﹁締鍙戠敓鍙樺寲鏃舵墠鏇存柊
+            if (vehiclesChanged) {
+                // 鍒犻櫎鏃х殑杞﹁締鍏宠仈
+                sysTaskVehicleMapper.deleteSysTaskVehicleByTaskId(updateVO.getTaskId());
+                
+                // 娣诲姞鏂扮殑杞﹁締鍏宠仈
+                Date now = DateUtils.getNowDate();
+                String currentUser = SecurityUtils.getUsername();
+                for (Long vehicleId : updateVO.getVehicleIds()) {
+                    SysTaskVehicle taskVehicle = new SysTaskVehicle();
+                    taskVehicle.setTaskId(updateVO.getTaskId());
+                    taskVehicle.setVehicleId(vehicleId);
+                    taskVehicle.setAssignTime(now);
+                    taskVehicle.setAssignBy(currentUser);
+                    taskVehicle.setCreateTime(now);
+                    sysTaskVehicleMapper.insertSysTaskVehicle(taskVehicle);
+                }
+            }
+        }
+        
+        // 鏇存柊鎬ユ晳杞繍鎵╁睍淇℃伅
+        if (result > 0 && "EMERGENCY_TRANSFER".equals(oldTask.getTaskType()) && updateVO.getEmergencyInfo() != null) {
+            updateEmergencyInfo(updateVO.getTaskId(), updateVO);
+        }
         
         // 璁板綍鎿嶄綔鏃ュ織
         if (result > 0) {
@@ -1454,6 +1492,124 @@
     }
 
     /**
+     * 鏇存柊鎬ユ晳杞繍浠诲姟鎵╁睍淇℃伅
+     * 
+     * @param taskId 浠诲姟ID
+     * @param updateVO 浠诲姟鏇存柊瀵硅薄
+     */
+    private void updateEmergencyInfo(Long taskId, TaskUpdateVO updateVO) {
+        // 鏌ヨ鐜版湁鐨勬墿灞曚俊鎭�
+        SysTaskEmergency existingInfo = sysTaskEmergencyMapper.selectSysTaskEmergencyByTaskId(taskId);
+        if (existingInfo == null) {
+            // 濡傛灉涓嶅瓨鍦紝鍒欏垱寤烘柊鐨�
+            existingInfo = new SysTaskEmergency();
+            existingInfo.setTaskId(taskId);
+            existingInfo.setCreateTime(DateUtils.getNowDate());
+            existingInfo.setCreateBy(SecurityUtils.getUsername());
+        }
+        
+        TaskUpdateVO.EmergencyInfoVO emergencyInfo = updateVO.getEmergencyInfo();
+        
+        // 鏇存柊鎮h�呬俊鎭�
+        if (emergencyInfo.getPatientContact() != null) {
+            existingInfo.setPatientContact(emergencyInfo.getPatientContact());
+        }
+        if (emergencyInfo.getPatientPhone() != null) {
+            existingInfo.setPatientPhone(emergencyInfo.getPatientPhone());
+        }
+        if (emergencyInfo.getPatientName() != null) {
+            existingInfo.setPatientName(emergencyInfo.getPatientName());
+        }
+        if (emergencyInfo.getPatientGender() != null) {
+            existingInfo.setPatientGender(emergencyInfo.getPatientGender());
+        }
+        if (emergencyInfo.getPatientIdCard() != null) {
+            existingInfo.setPatientIdCard(emergencyInfo.getPatientIdCard());
+        }
+        if (emergencyInfo.getPatientCondition() != null) {
+            existingInfo.setPatientCondition(emergencyInfo.getPatientCondition());
+        }
+        
+        // 鏇存柊杞嚭鍖婚櫌淇℃伅
+        if (emergencyInfo.getHospitalOutId() != null) {
+            existingInfo.setHospitalOutId(emergencyInfo.getHospitalOutId());
+        }
+        if (emergencyInfo.getHospitalOutName() != null) {
+            existingInfo.setHospitalOutName(emergencyInfo.getHospitalOutName());
+        }
+        if (emergencyInfo.getHospitalOutDepartment() != null) {
+            existingInfo.setHospitalOutDepartment(emergencyInfo.getHospitalOutDepartment());
+        }
+        if (emergencyInfo.getHospitalOutDepartmentId() != null) {
+            existingInfo.setHospitalOutDepartmentId(emergencyInfo.getHospitalOutDepartmentId());
+        }
+        if (emergencyInfo.getHospitalOutBedNumber() != null) {
+            existingInfo.setHospitalOutBedNumber(emergencyInfo.getHospitalOutBedNumber());
+        }
+        if (emergencyInfo.getHospitalOutAddress() != null) {
+            existingInfo.setHospitalOutAddress(emergencyInfo.getHospitalOutAddress());
+        }
+        if (emergencyInfo.getHospitalOutLongitude() != null) {
+            existingInfo.setHospitalOutLongitude(emergencyInfo.getHospitalOutLongitude());
+        }
+        if (emergencyInfo.getHospitalOutLatitude() != null) {
+            existingInfo.setHospitalOutLatitude(emergencyInfo.getHospitalOutLatitude());
+        }
+        
+        // 鏇存柊杞叆鍖婚櫌淇℃伅
+        if (emergencyInfo.getHospitalInId() != null) {
+            existingInfo.setHospitalInId(emergencyInfo.getHospitalInId());
+        }
+        if (emergencyInfo.getHospitalInName() != null) {
+            existingInfo.setHospitalInName(emergencyInfo.getHospitalInName());
+        }
+        if (emergencyInfo.getHospitalInDepartment() != null) {
+            existingInfo.setHospitalInDepartment(emergencyInfo.getHospitalInDepartment());
+        }
+        if (emergencyInfo.getHospitalInDepartmentId() != null) {
+            existingInfo.setHospitalInDepartmentId(emergencyInfo.getHospitalInDepartmentId());
+        }
+        if (emergencyInfo.getHospitalInBedNumber() != null) {
+            existingInfo.setHospitalInBedNumber(emergencyInfo.getHospitalInBedNumber());
+        }
+        if (emergencyInfo.getHospitalInAddress() != null) {
+            existingInfo.setHospitalInAddress(emergencyInfo.getHospitalInAddress());
+        }
+        if (emergencyInfo.getHospitalInLongitude() != null) {
+            existingInfo.setHospitalInLongitude(emergencyInfo.getHospitalInLongitude());
+        }
+        if (emergencyInfo.getHospitalInLatitude() != null) {
+            existingInfo.setHospitalInLatitude(emergencyInfo.getHospitalInLatitude());
+        }
+        
+        // 鏇存柊璐圭敤淇℃伅
+        if (emergencyInfo.getTransferDistance() != null) {
+            existingInfo.setTransferDistance(emergencyInfo.getTransferDistance());
+        }
+        if (emergencyInfo.getTransferPrice() != null) {
+            existingInfo.setTransferPrice(emergencyInfo.getTransferPrice());
+        }
+        
+        // 鏇存柊鐥呮儏ID鍒楄〃
+        if (updateVO.getDiseaseIds() != null && !updateVO.getDiseaseIds().isEmpty()) {
+            String diseaseIdsStr = updateVO.getDiseaseIds().stream()
+                .map(String::valueOf)
+                .collect(Collectors.joining(","));
+            existingInfo.setDiseaseIds(diseaseIdsStr);
+        } else {
+            // 濡傛灉鐥呮儏ID鍒楄〃涓虹┖锛屾竻绌鸿瀛楁
+            existingInfo.setDiseaseIds(null);
+        }
+        
+        // 绯荤粺瀛楁
+        existingInfo.setUpdateTime(DateUtils.getNowDate());
+        existingInfo.setUpdateBy(SecurityUtils.getUsername());
+        
+        // 鎵ц鏇存柊
+        sysTaskEmergencyMapper.updateSysTaskEmergency(existingInfo);
+    }
+
+    /**
      * 淇濆瓨绂忕杞︿换鍔℃墿灞曚俊鎭�
      * 
      * @param taskId 浠诲姟ID

--
Gitblit v1.9.1