From faff7314b240922d20fdd2fbc455c61dbc297cd5 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期一, 29 十二月 2025 23:38:00 +0800
Subject: [PATCH] feat: 优化变更状态

---
 ruoyi-system/src/main/java/com/ruoyi/system/file/FileUploadServiceImpl.java               |    8 ++--
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/SysTaskController.java            |   27 ++++++++-----
 app/pagesTask/detail.vue                                                                  |   56 +++++++++++++++-------------
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/DispatchOrdMapper.java                 |    3 +
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TaskStatusPushServiceImpl.java   |    9 ++--
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/WechatTaskNotifyServiceImpl.java |    8 ++--
 6 files changed, 62 insertions(+), 49 deletions(-)

diff --git a/app/pagesTask/detail.vue b/app/pagesTask/detail.vue
index 9077526..3f64594 100644
--- a/app/pagesTask/detail.vue
+++ b/app/pagesTask/detail.vue
@@ -7,6 +7,7 @@
       <view class="title">浠诲姟璇︽儏</view>
       <view class="edit-btn" @click="handleEdit" v-if="taskDetail && !isTaskFinished">
         <uni-icons type="compose" size="20" color="#007AFF"></uni-icons>
+        <text class="edit-text">淇敼</text>
       </view>
     </view>
     
@@ -456,27 +457,26 @@
     <view class="action-buttons" v-if="taskDetail">
       <!-- 寰呭鐞嗙姸鎬�: 鏄剧ず鍑哄彂銆佸彇娑堛�佸己鍒跺畬鎴� -->
       <template v-if="taskDetail.taskStatus === 'PENDING'">
-        <template v-if="isCurrentUserAssignee()">
-          <button 
-            class="action-btn primary" 
-            @click="handleDepartAction()"
-          >
-            鍑哄彂
-          </button>
-          <button 
-            class="action-btn cancel" 
-            @click="handleTaskAction('cancel')"
-          >
-            鍙栨秷
-          </button>
-          <button 
-            v-if="showForceCompleteFeature() && taskDetail.taskStatus === 'PENDING'"
-            class="action-btn force-complete" 
-            @click="showForceCompleteTimeDialog()"
-          >
-            寮哄埗瀹屾垚
-          </button>
-        </template>
+        <button 
+          v-if="isCurrentUserAssignee()"
+          class="action-btn primary" 
+          @click="handleDepartAction()"
+        >
+          鍑哄彂
+        </button>
+        <button 
+          class="action-btn cancel" 
+          @click="handleTaskAction('cancel')"
+        >
+          鍙栨秷
+        </button>
+        <button 
+          v-if="isCurrentUserAssignee() && showForceCompleteFeature()"
+          class="action-btn force-complete" 
+          @click="showForceCompleteTimeDialog()"
+        >
+          寮哄埗瀹屾垚
+        </button>
       </template>
       
       <!-- 鍑哄彂涓姸鎬�: 鏄剧ず宸插埌杈俱�佸己鍒剁粨鏉� -->
@@ -914,10 +914,8 @@
             break;
             
           case 'forceCancel':
-            // 寮哄埗缁撴潫 -> 鐘舵�佸彉涓哄凡鍙栨秷
-            this.$modal.confirm('纭畾瑕佸己鍒剁粨鏉熸浠诲姟鍚楋紵').then(() => {
-              this.updateTaskStatus('CANCELLED', '浠诲姟宸插己鍒剁粨鏉�')
-            }).catch(() => {});
+            // 寮哄埗缁撴潫 -> 鏄剧ず鍙栨秷鍘熷洜閫夋嫨瀵硅瘽妗�
+            this.showCancelReasonDialog();
             break;
             
           case 'return':
@@ -1877,12 +1875,18 @@
       }
       
       .edit-btn {
-        width: 60rpx;
+        width: 120rpx;
         height: 60rpx;
         display: flex;
         align-items: center;
         justify-content: center;
         cursor: pointer;
+        
+        .edit-text {
+          margin-left: 8rpx;
+          font-size: 28rpx;
+          color: #007AFF;
+        }
       }
     }
     
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 09db629..fe67735 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
@@ -331,17 +331,7 @@
         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());
-            locationLog.setLocationAddress(request.getLocationAddress());
-            locationLog.setLocationProvince(request.getLocationProvince());
-            locationLog.setLocationCity(request.getLocationCity());
-            locationLog.setLocationDistrict(request.getLocationDistrict());
-            locationLog.setGpsAccuracy(request.getGpsAccuracy());
-            locationLog.setAltitude(request.getAltitude());
-            locationLog.setSpeed(request.getSpeed());
-            locationLog.setHeading(request.getHeading());
+            SysTaskLog locationLog = getLocationLog(request);
 
             return toAjax(sysTaskService.changeTaskStatusWithLocation(taskId, newStatus, request.getRemark(), locationLog));
         }
@@ -349,6 +339,21 @@
         return toAjax(sysTaskService.changeTaskStatus(taskId, newStatus, request.getRemark()));
     }
 
+    private static SysTaskLog getLocationLog(ChangeStatusRequest request) {
+        SysTaskLog locationLog = new SysTaskLog();
+        locationLog.setLatitude(request.getLatitude());
+        locationLog.setLongitude(request.getLongitude());
+        locationLog.setLocationAddress(request.getLocationAddress());
+        locationLog.setLocationProvince(request.getLocationProvince());
+        locationLog.setLocationCity(request.getLocationCity());
+        locationLog.setLocationDistrict(request.getLocationDistrict());
+        locationLog.setGpsAccuracy(request.getGpsAccuracy());
+        locationLog.setAltitude(request.getAltitude());
+        locationLog.setSpeed(request.getSpeed());
+        locationLog.setHeading(request.getHeading());
+        return locationLog;
+    }
+
     /**
      * 鏌ヨ浠诲姟缁熻淇℃伅锛圓PP绔級
      */
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/file/FileUploadServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/file/FileUploadServiceImpl.java
index ae26026..8b186b4 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/file/FileUploadServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/file/FileUploadServiceImpl.java
@@ -107,7 +107,7 @@
         try {
             // 浠嶶RL涓嬭浇鏂囦欢
             byte[] fileBytes = downloadFromUrl(fileUrl);
-            if (fileBytes == null || fileBytes.length == 0) {
+            if (fileBytes.length == 0) {
                 return FileUploadResponse.error("浠嶶RL涓嬭浇鏂囦欢澶辫触");
             }
             
@@ -258,7 +258,7 @@
         }
         
         try {
-            log.info("寮�濮嬭В鏋怭HP鍝嶅簲: {}", response);
+//            log.info("寮�濮嬭В鏋怭HP鍝嶅簲: {}", response);
             
             // 鏍规嵁PHP鎺ュ彛鐨勫疄闄呰繑鍥炴牸寮忚繘琛岃В鏋�
             // PHP杩斿洖鏍煎紡: {"success": true, "message": "鏂囦欢涓婁紶鎴愬姛", "data": {...}}
@@ -267,7 +267,7 @@
                 String filePath = extractFilePathFromResponse(response);
                 String thumbnailPath = extractThumbnailPathFromResponse(response);
                 
-                log.info("瑙f瀽缁撴灉 - filePath: {}, thumbnailPath: {}", filePath, thumbnailPath);
+//                log.info("瑙f瀽缁撴灉 - filePath: {}, thumbnailPath: {}", filePath, thumbnailPath);
                 
                 // 鍒涘缓鍝嶅簲瀵硅薄
                 FileUploadResponse uploadResponse = FileUploadResponse.success(filePath, "涓婁紶鎴愬姛");
@@ -475,7 +475,7 @@
                 return uploadResponse;
             }
             
-            log.info("涓婁紶鏂囦欢鎴愬姛 鏂囦欢:{} 缂╃暐:{}",uploadResponse.getFilePath(),uploadResponse.getThumbnailPath());
+//            log.info("涓婁紶鏂囦欢鎴愬姛 鏂囦欢:{} 缂╃暐:{}",uploadResponse.getFilePath(),uploadResponse.getThumbnailPath());
             return uploadResponse;
             
         } catch (Exception e) {
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DispatchOrdMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DispatchOrdMapper.java
index 17b116f..bf5be21 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DispatchOrdMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DispatchOrdMapper.java
@@ -1,5 +1,7 @@
 package com.ruoyi.system.mapper;
 
+import com.ruoyi.common.annotation.DataSource;
+import com.ruoyi.common.enums.DataSourceType;
 import com.ruoyi.system.domain.DictionaryCondition;
 import com.ruoyi.system.domain.DispatchOrd;
 import org.apache.ibatis.annotations.Param;
@@ -11,6 +13,7 @@
  * 
  * @author ruoyi
  */
+@DataSource(DataSourceType.SQLSERVER)
 public interface DispatchOrdMapper {
     /**
      * 鏍规嵁鏈嶅姟璁㈠崟ID鏌ヨ璋冨害璁㈠崟
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 72e4127..74bb2c6 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
@@ -242,6 +242,7 @@
             
             if (cancelReason != null && !cancelReason.isEmpty()) {
                 try {
+                    log.info("鍙栨秷鍘熷洜 cancelReason:{},鍙栨秷浜�:{}", cancelReason, cancelBy);
                     cancelReasonId = Integer.parseInt(cancelReason);
                     // 浠庢暟鎹瓧鍏告煡璇㈠彇娑堝師鍥犳枃鏈�
                     String dictLabel = sysDictDataService.selectDictLabel("task_cancel_reason", cancelReason);
@@ -251,7 +252,7 @@
                         cancelReasonText = "[鍙栨秷鎿嶄綔:" + (cancelBy != null ? cancelBy : "绯荤粺") + "]";
                     }
                 } catch (NumberFormatException e) {
-                    log.warn("鍙栨秷鍘熷洜ID鏍煎紡閿欒: {}", cancelReason);
+                    log.error("鍙栨秷鍘熷洜ID鏍煎紡閿欒: {}", cancelReason,e);
                     cancelReasonText = "[鍙栨秷鎿嶄綔:" + (cancelBy != null ? cancelBy : "绯荤粺") + "] " + cancelReason;
                 }
             } else {
@@ -283,10 +284,10 @@
         try {
             // 鐩存帴閫氳繃Service璋冪敤Mapper鏇存柊SQL Server鏁版嵁搴�
             int rows = dispatchOrdService.updateDispatchOrdState(dispatchOrdId, statusCode);
-//            log.debug("鏇存柊鏃х郴缁熺姸鎬侊紝DispatchOrdID: {}, StateInt: {}", dispatchOrdId, statusCode);
+            log.debug("鏇存柊鏃х郴缁熺姸鎬侊紝DispatchOrdID: {}, statusCode: {}", dispatchOrdId, statusCode);
             if (rows > 0) {
-//                log.debug("鏇存柊鏃х郴缁熺姸鎬佹垚鍔燂紝DispatchOrdID: {}, StateInt: {}",
-//                    dispatchOrdId, statusCode);
+                log.debug("鏇存柊鏃х郴缁熺姸鎬佹垚鍔燂紝DispatchOrdID: {}, statusCode: {}",
+                    dispatchOrdId, statusCode);
                 return true;
             } else {
 //                log.warn("鏇存柊鏃х郴缁熺姸鎬佸け璐ワ紝鏈壘鍒板搴旇皟搴﹀崟锛孌ispatchOrdID: {}", dispatchOrdId);
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/WechatTaskNotifyServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/WechatTaskNotifyServiceImpl.java
index 5b7273a..fc50c9b 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/WechatTaskNotifyServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/WechatTaskNotifyServiceImpl.java
@@ -84,18 +84,18 @@
     public int sendTaskNotifyMessage(Long taskId, List<Long> userIds, Long excludeUserId) {
         // 妫�鏌ヨ闃呮秷鎭紑鍏�
         if (!isSubscribeMessageEnabled()) {
-            log.info("璁㈤槄娑堟伅鍙戦�佸凡鍏抽棴锛岃烦杩囧彂閫侊紝taskId={}", taskId);
+//            log.info("璁㈤槄娑堟伅鍙戦�佸凡鍏抽棴锛岃烦杩囧彂閫侊紝taskId={}", taskId);
             return 0;
         }
         if (taskId == null || userIds == null || userIds.isEmpty()) {
-            log.warn("鍙戦�佸井淇′换鍔¢�氱煡鍙傛暟涓嶅畬鏁达紝taskId={}, userIds={}", taskId, userIds);
+//            log.warn("鍙戦�佸井淇′换鍔¢�氱煡鍙傛暟涓嶅畬鏁达紝taskId={}, userIds={}", taskId, userIds);
             return 0;
         }
         
         // 鏌ヨ浠诲姟淇℃伅
         SysTask task = sysTaskMapper.selectSysTaskByTaskId(taskId);
         if (task == null) {
-            log.warn("寰俊閫氱煡澶辫触锛屼换鍔′笉瀛樺湪锛宼askId={}", taskId);
+//            log.warn("寰俊閫氱煡澶辫触锛屼换鍔′笉瀛樺湪锛宼askId={}", taskId);
             return 0;
         }
         
@@ -136,7 +136,7 @@
             try {
                 WechatUtils.sendSubscribeMessage(accessToken, user.getOpenId(), templateId, page, data);
                 successCount++;
-                log.info("寰俊浠诲姟閫氱煡鍙戦�佹垚鍔燂紝taskId={}, userId={}, userName={}", taskId, userId, user.getUserName());
+//                log.info("寰俊浠诲姟閫氱煡鍙戦�佹垚鍔燂紝taskId={}, userId={}, userName={}", taskId, userId, user.getUserName());
             } catch (Exception e) {
                 log.error("寰俊浠诲姟閫氱煡鍙戦�佸け璐ワ紝taskId={}, userId={}", taskId, userId, e);
             }

--
Gitblit v1.9.1