From 5d75fcaea0a3774052b7484a4ffe755258502363 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期六, 06 十二月 2025 20:49:11 +0800
Subject: [PATCH] fix:开始执行人员就绪按钮

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/SysTaskController.java |  123 +++++++++++++++++++++++++++++++++++-----
 1 files changed, 107 insertions(+), 16 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/SysTaskController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/SysTaskController.java
index e9b439b..4181398 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/SysTaskController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/SysTaskController.java
@@ -1,7 +1,11 @@
 package com.ruoyi.web.controller.task;
 
 import java.util.List;
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
+
+import com.ruoyi.system.service.*;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -16,6 +20,8 @@
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.system.domain.SysTask;
 import com.ruoyi.system.domain.SysTaskLog;
@@ -25,10 +31,9 @@
 import com.ruoyi.system.domain.vo.TaskUpdateVO;
 import com.ruoyi.system.domain.vo.TaskStatisticsVO;
 import com.ruoyi.system.domain.enums.TaskStatus;
-import com.ruoyi.system.service.ISysTaskService;
-import com.ruoyi.system.service.IVehicleInfoService;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.utils.StringUtils;
 
 /**
  * 浠诲姟绠$悊Controller
@@ -45,6 +50,17 @@
     
     @Autowired
     private IVehicleInfoService vehicleInfoService;
+    
+    @Autowired
+    private ISysUserService userService;
+    
+    @Autowired
+    private ISysDeptService deptService;
+
+
+    @Autowired
+    @Qualifier("tiandituMapService")
+    private IMapService mapService;
 
     /**
      * 鏌ヨ浠诲姟绠$悊鍒楄〃锛堝悗鍙扮鐞嗙锛�
@@ -60,21 +76,52 @@
 
     /**
      * 鏌ヨ浠诲姟鍒楄〃锛圓PP绔級
-     * 浠呮樉绀哄綋鍓嶇敤鎴风浉鍏崇殑浠诲姟锛�
-     * 1. 褰撳墠鐢ㄦ埛鎵�鍦ㄦ満鏋勭殑浠诲姟
-     * 2. 褰撳墠鐢ㄦ埛鍒涘缓鐨勪换鍔�
-     * 3. 鍒嗛厤缁欏綋鍓嶇敤鎴风殑浠诲姟
+     * 鏍规嵁鐢ㄦ埛鏉冮檺杩斿洖涓嶅悓鑼冨洿鐨勪换鍔★細
+     * 1. 鏈夋煡鐪嬫墍鏈夊挩璇㈠崟鏉冮檺锛坈anViewAllConsult='1'锛夛細杩斿洖璇ョ敤鎴风鐞嗘墍鏈夊垎鍏徃涓嬬殑鎵�鏈変换鍔″崟
+     * 2. 鏃犳潈闄愶紙canViewAllConsult='0'锛夛細鍙繑鍥炲垎閰嶇粰璇ョ敤鎴风殑鍗曟垨璇ョ敤鎴峰垱寤虹殑鍗�
      */
     @GetMapping("/list")
     public TableDataInfo appList(TaskQueryVO queryVO) {
-        // 鍦ㄥ悗绔嚜鍔ㄨ幏鍙栧綋鍓嶇敤鎴蜂俊鎭紝瀹炵幇缁煎悎鏌ヨ
+        // 鑾峰彇褰撳墠鐢ㄦ埛淇℃伅
         Long currentUserId = getUserId();
-        Long currentDeptId = getDeptId();
+        SysUser currentUser = userService.selectUserById(currentUserId);
         
-        // APP绔己鍒朵娇鐢ㄥ綋鍓嶇櫥褰曠敤鎴蜂俊鎭繘琛岃繃婊�
-        queryVO.setDeptId(currentDeptId);
-        queryVO.setCreatorId(currentUserId);
-        queryVO.setAssigneeId(currentUserId);
+        if (currentUser == null) {
+            return getDataTable(new java.util.ArrayList<>());
+        }
+        
+        // 鍒ゆ柇鐢ㄦ埛鏄惁鏈夋煡鐪嬫墍鏈夊挩璇㈠崟鐨勬潈闄�
+        String canViewAllConsult = currentUser.getCanViewAllConsult();
+        
+        if ("1".equals(canViewAllConsult)) {
+            // 鏈夋潈闄愶細杩斿洖璇ョ敤鎴风鐞嗘墍鏈夊垎鍏徃涓嬬殑鎵�鏈変换鍔″崟
+            // 1. 鑾峰彇鐢ㄦ埛绠$悊鐨勫垎鍏徃鍒楄〃
+            List<SysDept> branchCompanies = deptService.computeBranchCompaniesForUser(currentUser);
+            
+            if (branchCompanies != null && !branchCompanies.isEmpty()) {
+                // 2. 鎻愬彇鎵�鏈夊垎鍏徃ID
+                List<Long> deptIds = new java.util.ArrayList<>();
+                for (SysDept dept : branchCompanies) {
+                    deptIds.add(dept.getDeptId());
+                }
+                
+                // 3. 璁剧疆鏌ヨ鏉′欢涓哄垎鍏徃ID鍒楄〃锛圫QL浼氳嚜鍔ㄥ寘鍚墍鏈夊瓙閮ㄩ棬锛�
+                queryVO.setDeptIds(deptIds);
+                // 娓呯┖鍒涘缓浜哄拰鎵ц浜鸿繃婊ゆ潯浠讹紝杩斿洖杩欎簺鍒嗗叕鍙镐笅鐨勬墍鏈変换鍔�
+                queryVO.setCreatorId(null);
+                queryVO.setAssigneeId(null);
+            } else {
+                // 濡傛灉娌℃湁鎵惧埌鍒嗗叕鍙革紝杩斿洖绌哄垪琛�
+                return getDataTable(new java.util.ArrayList<>());
+            }
+        } else {
+            // 鏃犳潈闄愶細鍙繑鍥炲垎閰嶇粰璇ョ敤鎴风殑鍗曟垨璇ョ敤鎴峰垱寤虹殑鍗�
+            // 娓呯┖deptId鍜宒eptIds锛屼娇鐢╟reatorId鍜宎ssigneeId杩涜OR鏌ヨ
+            queryVO.setDeptId(null);
+            queryVO.setDeptIds(null);
+            queryVO.setCreatorId(currentUserId);
+            queryVO.setAssigneeId(currentUserId);
+        }
         
         startPage();
         List<SysTask> list = sysTaskService.selectSysTaskList(queryVO);
@@ -136,7 +183,7 @@
     @Log(title = "浠诲姟绠$悊", businessType = BusinessType.UPDATE)
     @PutMapping("/admin")
     public AjaxResult adminEdit(@RequestBody TaskUpdateVO updateVO) {
-        return toAjax(sysTaskService.updateSysTask(updateVO));
+        return toAjax(sysTaskService.updateSysTask(updateVO,false));
     }
 
     /**
@@ -145,7 +192,7 @@
     @Log(title = "浠诲姟淇敼", businessType = BusinessType.UPDATE)
     @PutMapping
     public AjaxResult appEdit(@RequestBody TaskUpdateVO updateVO) {
-        return toAjax(sysTaskService.updateSysTask(updateVO));
+        return toAjax(sysTaskService.updateSysTask(updateVO,false));
     }
 
     /**
@@ -214,6 +261,8 @@
         
         // 濡傛灉鍖呭惈GPS浣嶇疆淇℃伅锛屼娇鐢ㄥ甫浣嶇疆鐨勬柟娉�
         if (request.getLatitude() != null && request.getLongitude() != null) {
+           String address= mapService.reverseGeocoding(request.getLongitude(), request.getLatitude());
+           request.setLocationAddress(address);
             SysTaskLog locationLog = new SysTaskLog();
             locationLog.setLatitude(request.getLatitude());
             locationLog.setLongitude(request.getLongitude());
@@ -225,10 +274,10 @@
             locationLog.setAltitude(request.getAltitude());
             locationLog.setSpeed(request.getSpeed());
             locationLog.setHeading(request.getHeading());
-            
+
             return toAjax(sysTaskService.changeTaskStatusWithLocation(taskId, newStatus, request.getRemark(), locationLog));
         }
-        
+
         return toAjax(sysTaskService.changeTaskStatus(taskId, newStatus, request.getRemark()));
     }
 
@@ -280,6 +329,48 @@
     }
 
     /**
+     * 妫�鏌ヨ溅杈嗘槸鍚︽湁姝e湪杩涜涓殑浠诲姟锛圓PP绔級
+     * 姝e湪杩涜涓殑浠诲姟鏄寚鐘舵�佷笉涓猴細PENDING锛堝緟澶勭悊锛夈�丆OMPLETED锛堝凡瀹屾垚锛夈�丆ANCELLED锛堝凡鍙栨秷锛夌殑浠诲姟
+     */
+    @GetMapping("/vehicle/{vehicleId}/active")
+    public AjaxResult checkVehicleActiveTasks(@PathVariable Long vehicleId) {
+        List<SysTask> activeTasks = sysTaskService.checkVehicleActiveTasks(vehicleId);
+        return success(activeTasks);
+    }
+
+    /**
+     * 妫�鏌ヤ换鍔℃槸鍚﹀彲浠ュ嚭鍙戯紙APP绔級
+     * 妫�鏌ワ細
+     * 1. 杞﹁締鏄惁鏈夋湭瀹屾垚鐨勪换鍔�
+     * 2. 鎵ц浜哄憳鏄惁鏈夋湭瀹屾垚鐨勪换鍔�
+     * 
+     * @param taskId 浠诲姟ID
+     * @return 鏍¢獙缁撴灉
+     */
+    @GetMapping("/{taskId}/check-depart")
+    public AjaxResult checkTaskCanDepart(@PathVariable Long taskId) {
+        return sysTaskService.checkTaskCanDepart(taskId);
+    }
+
+    /**
+     * 鎵ц浜虹偣鍑诲氨缁紙APP绔級
+     */
+    @PostMapping("/{taskId}/assignee/ready")
+    public AjaxResult setAssigneeReady(@PathVariable Long taskId) {
+        Long userId = getUserId();
+        return sysTaskService.setAssigneeReady(taskId, userId);
+    }
+
+    /**
+     * 鎵ц浜哄彇娑堝氨缁紙APP绔級
+     */
+    @PostMapping("/{taskId}/assignee/cancel-ready")
+    public AjaxResult cancelAssigneeReady(@PathVariable Long taskId) {
+        Long userId = getUserId();
+        return sysTaskService.cancelAssigneeReady(taskId, userId);
+    }
+
+    /**
      * 鍒嗛厤浠诲姟璇锋眰瀵硅薄
      */
     public static class AssignTaskRequest {

--
Gitblit v1.9.1