From 40a8157440e3b906da8f52e07d939d78c3f4c313 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期日, 12 四月 2026 16:14:06 +0800
Subject: [PATCH] feat: 任务增加统计、同步增加通知
---
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.java | 93 ++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 88 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 9c69173..f5708fe 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
@@ -27,6 +27,7 @@
import com.ruoyi.system.domain.SysTaskVehicle;
import com.ruoyi.system.domain.SysTaskAttachment;
import com.ruoyi.system.domain.SysTaskLog;
+import com.ruoyi.system.domain.SysTaskStatusHistory;
import com.ruoyi.system.domain.SysTaskEmergency;
import com.ruoyi.system.domain.SysTaskWelfare;
import com.ruoyi.system.domain.SysTaskAssignee;
@@ -56,6 +57,9 @@
@Autowired
private SysTaskLogMapper sysTaskLogMapper;
+
+ @Autowired
+ private SysTaskStatusHistoryMapper sysTaskStatusHistoryMapper;
@Autowired
private SysTaskEmergencyMapper sysTaskEmergencyMapper;
@@ -321,10 +325,11 @@
final Long finalTaskId = task.getTaskId();
new Thread(() -> {
try {
- Thread.sleep(2000); // 绛夊緟2绉掞紝纭繚浜嬪姟宸叉彁浜�
+ Thread.sleep(200); // 绛夊緟2绉掞紝纭繚浜嬪姟宸叉彁浜�
legacySystemSyncService.syncEmergencyTaskToLegacy(finalTaskId);
} catch (Exception e) {
// 鍚屾澶辫触涓嶅奖鍝嶄富娴佺▼锛屼粎璁板綍鏃ュ織
+ log.error("鍚屾鎬ユ晳杞繍浠诲姟鍒版棫绯荤粺澶辫触", e);
}
}).start();
}
@@ -951,6 +956,15 @@
recordTaskLog(task.getTaskId(), "FORCE_COMPLETE", "寮哄埗瀹屾垚浠诲姟",
oldStatus, task.getTaskStatus(),
SecurityUtils.getUserId(), SecurityUtils.getUsername());
+ // 鍐欏叆鐘舵�佸彉鏇村巻鍙茶褰�
+ recordStatusHistory(oldTask, oldStatus,
+ oldTaskStatus != null ? oldTaskStatus.getInfo() : oldStatus,
+ task.getTaskStatus(),
+ TaskStatus.getByCode(task.getTaskStatus()) != null ? TaskStatus.getByCode(task.getTaskStatus()).getInfo() : task.getTaskStatus(),
+ task.getRemark(),
+ SysTaskStatusHistory.SOURCE_APP,
+ SecurityUtils.getUserId(), SecurityUtils.getUsername(),
+ null);
// 鍙戝竷浠诲姟鐘舵�佸彉鏇翠簨浠�
TaskStatus newTaskStatus = TaskStatus.getByCode(task.getTaskStatus());
@@ -1023,6 +1037,12 @@
"鐘舵�侊細" + newStatus.getInfo() + "锛屽娉細" + remark,
SecurityUtils.getUserId(), SecurityUtils.getUsername(),
locationLog);
+ // 鍐欏叆鐘舵�佸彉鏇村巻鍙茶褰�
+ recordStatusHistory(oldTask, oldTaskStatus.getCode(), oldTaskStatus.getInfo(),
+ newStatus.getCode(), newStatus.getInfo(), remark,
+ SysTaskStatusHistory.SOURCE_APP,
+ SecurityUtils.getUserId(), SecurityUtils.getUsername(),
+ locationLog);
}
// 鍙戝竷浠诲姟鐘舵�佸彉鏇翠簨浠�
@@ -1486,6 +1506,51 @@
}
/**
+ * 璁板綍浠诲姟鐘舵�佸彉鏇村巻鍙�
+ *
+ * @param task 浠诲姟瀵硅薄锛堝彇 task_id / task_code锛�
+ * @param fromStatus 鍙樻洿鍓嶇姸鎬佺爜
+ * @param fromStatusName 鍙樻洿鍓嶇姸鎬佸悕绉�
+ * @param toStatus 鍙樻洿鍚庣姸鎬佺爜
+ * @param toStatusName 鍙樻洿鍚庣姸鎬佸悕绉�
+ * @param changeReason 鍙樻洿鍘熷洜/澶囨敞
+ * @param changeSource 瑙﹀彂鏉ユ簮锛圓PP / ADMIN / SYSTEM / LEGACY锛�
+ * @param operatorId 鎿嶄綔浜� ID
+ * @param operatorName 鎿嶄綔浜哄鍚�
+ * @param locationLog GPS 浣嶇疆淇℃伅锛堝彲涓� null锛�
+ */
+ private void recordStatusHistory(SysTask task,
+ String fromStatus, String fromStatusName,
+ String toStatus, String toStatusName,
+ String changeReason, String changeSource,
+ Long operatorId, String operatorName,
+ SysTaskLog locationLog) {
+ try {
+ SysTaskStatusHistory history = new SysTaskStatusHistory();
+ history.setTaskId(task.getTaskId());
+ history.setTaskCode(task.getTaskCode());
+ history.setFromStatus(fromStatus);
+ history.setFromStatusName(fromStatusName);
+ history.setToStatus(toStatus);
+ history.setToStatusName(toStatusName);
+ history.setChangeReason(changeReason);
+ history.setChangeSource(changeSource != null ? changeSource : SysTaskStatusHistory.SOURCE_APP);
+ history.setOperatorId(operatorId);
+ history.setOperatorName(operatorName);
+ history.setChangeTime(DateUtils.getNowDate());
+ history.setIpAddress("127.0.0.1");
+ if (locationLog != null) {
+ history.setLongitude(locationLog.getLongitude());
+ history.setLatitude(locationLog.getLatitude());
+ history.setLocationAddress(locationLog.getLocationAddress());
+ }
+ sysTaskStatusHistoryMapper.insert(history);
+ } catch (Exception e) {
+ log.error("璁板綍浠诲姟鐘舵�佸彉鏇村巻鍙插け璐�, taskId={}", task.getTaskId(), e);
+ }
+ }
+
+ /**
* 鏋勫缓浠诲姟鎻忚堪
*
* @param task 浠诲姟瀵硅薄
@@ -1635,6 +1700,13 @@
}
}
+ private AjaxResult getCheckCanSuccess(){
+ List<Map<String, Object>> conflicts = new ArrayList<>();
+ Map<String, Object> result = new HashMap<>();
+ result.put("valid", conflicts.isEmpty());
+ result.put("conflicts", conflicts);
+ return AjaxResult.success(result);
+ }
/**
* 妫�鏌ヤ换鍔℃槸鍚﹀彲浠ュ嚭鍙�
* 妫�鏌ワ細
@@ -1646,13 +1718,18 @@
*/
@Override
public AjaxResult checkTaskCanDepart(Long taskId) {
+ return getCheckCanSuccess();
+ }
+
+ public AjaxResult checkTaskCanDepartOld(Long taskId) {
+ List<Map<String, Object>> conflicts = new ArrayList<>();
+ Map<String, Object> result = new HashMap<>();
+
// 鑾峰彇浠诲姟璇︽儏
SysTask task = this.getTaskDetail(taskId);
if (task == null) {
return AjaxResult.error("浠诲姟涓嶅瓨鍦�");
}
-
- List<Map<String, Object>> conflicts = new ArrayList<>();
// 1. 妫�鏌ヨ溅杈嗘槸鍚︽湁鏈畬鎴愮殑浠诲姟
List<SysTaskVehicle> taskVehicles = task.getAssignedVehicles();
@@ -1728,8 +1805,7 @@
}
}
- // 杩斿洖缁撴灉
- Map<String, Object> result = new HashMap<>();
+
result.put("valid", conflicts.isEmpty());
result.put("conflicts", conflicts);
@@ -1775,6 +1851,13 @@
return count > 0;
}
+ @Override
+ public List<DeptOrderStatVO> selectDeptOrderStat(List<Long> deptIds, String startDate, String endDate) {
+ return sysTaskMapper.selectDeptOrderStat(
+ (deptIds != null && !deptIds.isEmpty()) ? deptIds : null,
+ startDate, endDate);
+ }
+
}
--
Gitblit v1.9.1