From 62a079a15b46925283581f6caaf631b5a4558927 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期三, 24 九月 2025 11:00:10 +0800
Subject: [PATCH] feat: 初始化app

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.java |  110 ++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 105 insertions(+), 5 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 093a6a4..386cf99 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
@@ -5,6 +5,8 @@
 import java.util.ArrayList;
 import java.io.File;
 import java.io.IOException;
+
+import com.ruoyi.system.utils.TaskCodeGenerator;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -12,6 +14,7 @@
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.GpsDistanceUtils;
 import com.ruoyi.common.utils.file.FileUploadUtils;
 import com.ruoyi.common.utils.file.FileUtils;
 import com.ruoyi.system.domain.SysTask;
@@ -27,6 +30,8 @@
 import com.ruoyi.system.mapper.SysTaskVehicleMapper;
 import com.ruoyi.system.mapper.SysTaskAttachmentMapper;
 import com.ruoyi.system.mapper.SysTaskLogMapper;
+import com.ruoyi.system.mapper.VehicleInfoMapper;
+import com.ruoyi.system.domain.VehicleInfo;
 import com.ruoyi.system.service.ISysTaskService;
 
 /**
@@ -49,6 +54,9 @@
     
     @Autowired
     private SysTaskLogMapper sysTaskLogMapper;
+    
+    @Autowired
+    private VehicleInfoMapper vehicleInfoMapper;
 
     /**
      * 鏌ヨ浠诲姟绠$悊
@@ -88,6 +96,10 @@
         task.setTaskDescription(createVO.getTaskDescription());
         task.setDepartureAddress(createVO.getDepartureAddress());
         task.setDestinationAddress(createVO.getDestinationAddress());
+        task.setDepartureLongitude(createVO.getDepartureLongitude());
+        task.setDepartureLatitude(createVO.getDepartureLatitude());
+        task.setDestinationLongitude(createVO.getDestinationLongitude());
+        task.setDestinationLatitude(createVO.getDestinationLatitude());
         task.setPlannedStartTime(createVO.getPlannedStartTime());
         task.setPlannedEndTime(createVO.getPlannedEndTime());
         task.setAssigneeId(createVO.getAssigneeId());
@@ -95,10 +107,33 @@
         task.setDeptId(SecurityUtils.getDeptId());
         task.setCreateBy(SecurityUtils.getUsername());
         task.setCreateTime(DateUtils.getNowDate());
+        task.setUpdateBy(SecurityUtils.getUsername());
+        task.setUpdateTime(DateUtils.getNowDate());
         task.setRemark(createVO.getRemark());
         task.setDelFlag("0");
         
+        // 璁$畻棰勮鍏噷鏁�
+        calculateEstimatedDistance(task);
+        
         int result = sysTaskMapper.insertSysTask(task);
+        
+        // 淇濆瓨杞﹁締鍏宠仈淇℃伅
+        if (result > 0 && createVO.getVehicleIds() != null && !createVO.getVehicleIds().isEmpty()) {
+            for (Long vehicleId : createVO.getVehicleIds()) {
+                SysTaskVehicle taskVehicle = new SysTaskVehicle();
+                taskVehicle.setTaskId(task.getTaskId());
+                taskVehicle.setVehicleId(vehicleId);
+                taskVehicle.setAssignTime(DateUtils.getNowDate());
+                taskVehicle.setAssignBy(SecurityUtils.getUsername());
+                taskVehicle.setStatus("ASSIGNED");
+                taskVehicle.setCreateBy(SecurityUtils.getUsername());
+                taskVehicle.setCreateTime(DateUtils.getNowDate());
+                taskVehicle.setUpdateBy(SecurityUtils.getUsername());
+                taskVehicle.setUpdateTime(DateUtils.getNowDate());
+                
+                sysTaskVehicleMapper.insertSysTaskVehicle(taskVehicle);
+            }
+        }
         
         // 璁板綍鎿嶄綔鏃ュ織
         if (result > 0) {
@@ -128,12 +163,19 @@
         task.setTaskDescription(updateVO.getTaskDescription());
         task.setDepartureAddress(updateVO.getDepartureAddress());
         task.setDestinationAddress(updateVO.getDestinationAddress());
+        task.setDepartureLongitude(updateVO.getDepartureLongitude());
+        task.setDepartureLatitude(updateVO.getDepartureLatitude());
+        task.setDestinationLongitude(updateVO.getDestinationLongitude());
+        task.setDestinationLatitude(updateVO.getDestinationLatitude());
         task.setPlannedStartTime(updateVO.getPlannedStartTime());
         task.setPlannedEndTime(updateVO.getPlannedEndTime());
         task.setAssigneeId(updateVO.getAssigneeId());
         task.setUpdateBy(SecurityUtils.getUsername());
         task.setUpdateTime(DateUtils.getNowDate());
         task.setRemark(updateVO.getRemark());
+        
+        // 閲嶆柊璁$畻棰勮鍏噷鏁�
+        calculateEstimatedDistance(task);
         
         int result = sysTaskMapper.updateSysTask(task);
         
@@ -181,6 +223,7 @@
         task.setTaskId(taskId);
         task.setAssigneeId(assigneeId);
         task.setUpdateBy(SecurityUtils.getUsername());
+        task.setUpdateTime(DateUtils.getNowDate());
         
         int result = sysTaskMapper.assignTask(task);
         
@@ -220,6 +263,7 @@
         task.setTaskId(taskId);
         task.setTaskStatus(newStatus.getCode());
         task.setUpdateBy(SecurityUtils.getUsername());
+        task.setUpdateTime(DateUtils.getNowDate());
         
         // 鏍规嵁鐘舵�佽缃浉搴旂殑鏃堕棿
         if (newStatus == TaskStatus.IN_PROGRESS && oldTask.getActualStartTime() == null) {
@@ -437,9 +481,33 @@
      */
     @Override
     public List<SysTaskVehicle> getAvailableVehicles(Long deptId, String taskType) {
-        // 杩欓噷闇�瑕佹牴鎹笟鍔¢�昏緫鏌ヨ鍙敤杞﹁締
-        // 鏆傛椂杩斿洖绌哄垪琛紝瀹為檯瀹炵幇闇�瑕佹煡璇㈣溅杈嗚〃
-        return new ArrayList<>();
+        List<SysTaskVehicle> availableVehicles = new ArrayList<>();
+        
+        try {
+            // 鏌ヨ鎵�鏈夌姸鎬佷负姝e父鐨勮溅杈嗭紙涓嶉檺鍒堕儴闂級
+            VehicleInfo queryParam = new VehicleInfo();
+            queryParam.setStatus("0"); // 0琛ㄧず姝e父鐘舵��
+            // 涓嶈缃甦eptId锛屾煡璇㈡墍鏈夐儴闂ㄧ殑杞﹁締
+            
+            List<VehicleInfo> vehicles = vehicleInfoMapper.selectVehicleInfoList(queryParam);
+            
+            // 杞崲涓篠ysTaskVehicle瀵硅薄
+            for (VehicleInfo vehicle : vehicles) {
+                SysTaskVehicle taskVehicle = new SysTaskVehicle();
+                taskVehicle.setVehicleId(vehicle.getVehicleId());
+                taskVehicle.setVehicleNo(vehicle.getVehicleNo());
+                taskVehicle.setVehicleType(vehicle.getVehicleType());
+                taskVehicle.setVehicleBrand(vehicle.getVehicleBrand());
+                taskVehicle.setVehicleModel(vehicle.getVehicleModel());
+                taskVehicle.setDeptName(vehicle.getDeptName()); // 娣诲姞閮ㄩ棬鍚嶇О
+                availableVehicles.add(taskVehicle);
+            }
+        } catch (Exception e) {
+            // 濡傛灉鏌ヨ澶辫触锛岃褰曟棩蹇楀苟杩斿洖绌哄垪琛�
+            System.err.println("鏌ヨ鍙敤杞﹁締澶辫触: " + e.getMessage());
+        }
+        
+        return availableVehicles;
     }
 
     /**
@@ -493,14 +561,16 @@
         return task;
     }
 
+    @Autowired
+    private TaskCodeGenerator taskCodeGenerator;
+    
     /**
      * 鐢熸垚浠诲姟缂栧彿
      * 
      * @return 浠诲姟缂栧彿
      */
     private String generateTaskCode() {
-        String dateStr = DateUtils.dateTimeNow("yyyyMMdd");
-        return "TASK" + dateStr + "0001";
+        return taskCodeGenerator.generateTaskCode();
     }
 
     /**
@@ -564,4 +634,34 @@
         }
         return "";
     }
+
+    /**
+     * 璁$畻棰勮鍏噷鏁�
+     * 
+     * @param task 浠诲姟瀵硅薄
+     */
+    private void calculateEstimatedDistance(SysTask task) {
+        if (task.getDepartureLongitude() != null && task.getDepartureLatitude() != null &&
+            task.getDestinationLongitude() != null && task.getDestinationLatitude() != null) {
+            
+            // 楠岃瘉GPS鍧愭爣鏄惁鏈夋晥
+            if (GpsDistanceUtils.isValidCoordinate(task.getDepartureLatitude(), task.getDepartureLongitude()) &&
+                GpsDistanceUtils.isValidCoordinate(task.getDestinationLatitude(), task.getDestinationLongitude())) {
+                
+                // 璁$畻璺濈
+                java.math.BigDecimal distance = GpsDistanceUtils.calculateDistance(
+                    task.getDepartureLatitude(), task.getDepartureLongitude(),
+                    task.getDestinationLatitude(), task.getDestinationLongitude()
+                );
+                
+                task.setEstimatedDistance(distance);
+            } else {
+                // 鍧愭爣鏃犳晥锛岃缃负0
+                task.setEstimatedDistance(java.math.BigDecimal.ZERO);
+            }
+        } else {
+            // 鍧愭爣涓嶅畬鏁达紝璁剧疆涓�0
+            task.setEstimatedDistance(java.math.BigDecimal.ZERO);
+        }
+    }
 }

--
Gitblit v1.9.1