From 847a7773ef1a8ad418c6934d35b5f205a97c04d0 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期六, 06 十二月 2025 17:03:24 +0800
Subject: [PATCH] fix:在任务状态更新时,需要更新日志到旧系统
---
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.java | 117 +++++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 98 insertions(+), 19 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 233a8cf..b983222 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
@@ -633,11 +633,11 @@
}
}
}
-
+ // 鐢ㄤ簬璺熻釜鏄惁闇�瑕侀噸鏂板悓姝ワ紙杞﹁締銆佷汉鍛樸�佸湴鍧�銆佹垚浜や环鍙樻洿锛�
+ boolean needResync = true;
int result = sysTaskMapper.updateSysTask(task);
- // 鐢ㄤ簬璺熻釜鏄惁闇�瑕侀噸鏂板悓姝ワ紙杞﹁締銆佷汉鍛樸�佸湴鍧�銆佹垚浜や环鍙樻洿锛�
- boolean needResync = false;
+
// 鏇存柊杞﹁締鍏宠仈
if (result > 0 && updateVO.getVehicleIds() != null && !updateVO.getVehicleIds().isEmpty()) {
@@ -1024,7 +1024,6 @@
* @return 缁撴灉
*/
@Override
- @Transactional
public int changeTaskStatus(Long taskId, TaskStatus newStatus, String remark) {
return changeTaskStatusWithLocation(taskId, newStatus, remark, null);
}
@@ -1039,7 +1038,6 @@
* @return 缁撴灉
*/
@Override
- @Transactional
public int changeTaskStatusWithLocation(Long taskId, TaskStatus newStatus, String remark, SysTaskLog locationLog) {
SysTask oldTask = sysTaskMapper.selectSysTaskByTaskId(taskId);
if (oldTask == null) {
@@ -1091,7 +1089,10 @@
.map(SysTaskAssignee::getUserId)
.collect(Collectors.toList());
}
-
+ Long userId=SecurityUtils.getUserId();
+ Double lng=locationLog==null?null: locationLog.getLongitude();
+ Double lat=locationLog==null?null: locationLog.getLatitude();
+ String address=locationLog==null?null: locationLog.getLocationAddress();
eventPublisher.publishEvent(new TaskStatusChangedEvent(
this,
oldTask.getTaskId(),
@@ -1101,7 +1102,11 @@
oldTaskStatus.getInfo(),
newStatus.getInfo(),
assigneeIds,
- oldTask.getCreatorId()
+ oldTask.getCreatorId(),
+ userId,
+ lng, lat,
+ address
+
));
}
@@ -2037,12 +2042,7 @@
}
}
}
- if (createVO.getHospitalOut().getLongitude() != null) {
- existingInfo.setHospitalOutLongitude(createVO.getHospitalOut().getLongitude());
- }
- if (createVO.getHospitalOut().getLatitude() != null) {
- existingInfo.setHospitalOutLatitude(createVO.getHospitalOut().getLatitude());
- }
+
}
// 鏇存柊杞叆鍖婚櫌淇℃伅
@@ -2082,12 +2082,7 @@
}
}
}
- if (createVO.getHospitalIn().getLongitude() != null) {
- existingInfo.setHospitalInLongitude(createVO.getHospitalIn().getLongitude());
- }
- if (createVO.getHospitalIn().getLatitude() != null) {
- existingInfo.setHospitalInLatitude(createVO.getHospitalIn().getLatitude());
- }
+
}
// 鏇存柊璐圭敤淇℃伅
@@ -2272,5 +2267,89 @@
}
}
+ /**
+ * 妫�鏌ヤ换鍔℃槸鍚﹀彲浠ュ嚭鍙�
+ * 妫�鏌ワ細
+ * 1. 杞﹁締鏄惁鏈夋湭瀹屾垚鐨勪换鍔�
+ * 2. 鎵ц浜哄憳鏄惁鏈夋湭瀹屾垚鐨勪换鍔�
+ *
+ * @param taskId 浠诲姟ID
+ * @return AjaxResult 鏍¢獙缁撴灉
+ */
+ @Override
+ public com.ruoyi.common.core.domain.AjaxResult checkTaskCanDepart(Long taskId) {
+ // 鑾峰彇浠诲姟璇︽儏
+ SysTask task = this.getTaskDetail(taskId);
+ if (task == null) {
+ return com.ruoyi.common.core.domain.AjaxResult.error("浠诲姟涓嶅瓨鍦�");
+ }
+
+ List<Map<String, Object>> conflicts = new ArrayList<>();
+
+ // 1. 妫�鏌ヨ溅杈嗘槸鍚︽湁鏈畬鎴愮殑浠诲姟
+ List<SysTaskVehicle> taskVehicles = task.getAssignedVehicles();
+ if (taskVehicles != null && !taskVehicles.isEmpty()) {
+ for (SysTaskVehicle taskVehicle : taskVehicles) {
+ Long vehicleId = taskVehicle.getVehicleId();
+ List<SysTask> vehicleActiveTasks = this.checkVehicleActiveTasks(vehicleId);
+
+ // 杩囨护鎺夊綋鍓嶄换鍔℃湰韬�
+ vehicleActiveTasks = vehicleActiveTasks.stream()
+ .filter(t -> !t.getTaskId().equals(taskId))
+ .collect(Collectors.toList());
+
+ if (!vehicleActiveTasks.isEmpty()) {
+ for (SysTask activeTask : vehicleActiveTasks) {
+ Map<String, Object> conflict = new HashMap<>();
+ conflict.put("type", "vehicle");
+ conflict.put("vehicleNo", taskVehicle.getVehicleNo());
+ conflict.put("taskId", activeTask.getTaskId());
+ conflict.put("taskCode", activeTask.getTaskCode());
+ conflict.put("taskStatus", activeTask.getTaskStatus());
+ conflict.put("message", String.format("杞﹁締 %s 灏氭湁鏈畬鎴愮殑浠诲姟 %s锛岃鍏堝畬鎴�",
+ taskVehicle.getVehicleNo(), activeTask.getTaskCode()));
+ conflicts.add(conflict);
+ }
+ }
+ }
+ }
+
+ // 2. 妫�鏌ユ墽琛屼汉鍛樻槸鍚︽湁鏈畬鎴愮殑浠诲姟
+ List<SysTaskAssignee> assignees = task.getAssignees();
+ if (assignees != null && !assignees.isEmpty()) {
+ for (SysTaskAssignee assignee : assignees) {
+ Long userId = assignee.getUserId();
+
+ // 鏌ヨ璇ユ墽琛屼汉鐨勬墍鏈夋鍦ㄨ繘琛屼腑鐨勪换鍔★紙鎺掗櫎PENDING銆丆OMPLETED銆丆ANCELLED锛�
+ List<SysTask> userActiveTasks = this.selectMyTasks(userId).stream()
+ .filter(t -> !TaskStatus.PENDING.getCode().equals(t.getTaskStatus())
+ && !TaskStatus.COMPLETED.getCode().equals(t.getTaskStatus())
+ && !TaskStatus.CANCELLED.getCode().equals(t.getTaskStatus())
+ && !t.getTaskId().equals(taskId)) // 杩囨护鎺夊綋鍓嶄换鍔�
+ .collect(Collectors.toList());
+
+ if (!userActiveTasks.isEmpty()) {
+ for (SysTask activeTask : userActiveTasks) {
+ Map<String, Object> conflict = new HashMap<>();
+ conflict.put("type", "assignee");
+ conflict.put("userName", assignee.getUserName());
+ conflict.put("taskId", activeTask.getTaskId());
+ conflict.put("taskCode", activeTask.getTaskCode());
+ conflict.put("taskStatus", activeTask.getTaskStatus());
+ conflict.put("message", String.format("鎵ц浜� %s 灏氭湁姝e湪杩涜涓殑浠诲姟 %s锛岃鍏堝畬鎴�",
+ assignee.getUserName(), activeTask.getTaskCode()));
+ conflicts.add(conflict);
+ }
+ }
+ }
+ }
+
+ // 杩斿洖缁撴灉
+ Map<String, Object> result = new HashMap<>();
+ result.put("valid", conflicts.isEmpty());
+ result.put("conflicts", conflicts);
+
+ return com.ruoyi.common.core.domain.AjaxResult.success(result);
+ }
}
--
Gitblit v1.9.1