From 0a3eed02e78dfeeb7763a4b62992eefcd1f5a0ca Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期二, 23 十二月 2025 23:33:34 +0800
Subject: [PATCH] feat: 优化状态变更时实时推送
---
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.java | 47 +++++++++++++++++++++--------------------------
1 files changed, 21 insertions(+), 26 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 0159840..461aae1 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
@@ -101,6 +101,10 @@
@Autowired
private ISysTaskVehicleService sysTaskVehicleService;
+ @Autowired
+ private ISysTaskAssigneeService assigneeService;
+
+
@Override
public Boolean dispatchSyncEvent(Long taskId) {
SysTask task= sysTaskMapper.selectSysTaskByTaskId(taskId);
@@ -124,7 +128,7 @@
public SysTask selectSysTaskByTaskId(Long taskId) {
SysTask task = sysTaskMapper.selectSysTaskByTaskId(taskId);
if (task != null) {
-
+ bindTaskAssign(task);
// 鍔犺浇鎬ユ晳杞繍鎵╁睍淇℃伅
if ("EMERGENCY_TRANSFER".equals(task.getTaskType())) {
SysTaskEmergency emergencyInfo = sysTaskEmergencyMapper.selectSysTaskEmergencyByTaskId(taskId);
@@ -139,6 +143,13 @@
return task;
}
+
+ private void bindTaskAssign(SysTask task){
+ List<SysTaskAssignee> assignees= assigneeService.getAssigneesByTaskId(task.getTaskId());
+ if(assignees!=null && !assignees.isEmpty()) {
+ task.setAssignees(assignees);
+ }
+ }
/**
* 鏌ヨ浠诲姟绠$悊鍒楄〃
*
@@ -149,7 +160,7 @@
public List<SysTask> selectSysTaskList(TaskQueryVO queryVO) {
List<SysTask> tasks= sysTaskMapper.selectSysTaskList(queryVO);
tasks.forEach(task -> {
-
+ bindTaskAssign( task);
if ("EMERGENCY_TRANSFER".equals(task.getTaskType())) {
SysTaskEmergency emergencyInfo = sysTaskEmergencyMapper.selectSysTaskEmergencyByTaskId(task.getTaskId());
task.setEmergencyInfo(emergencyInfo);
@@ -220,6 +231,7 @@
if (task.getTaskCode() != null && task.getTaskCode().contains(taskCode)) {
return true;
}
+ bindTaskAssign(task);
if ("EMERGENCY_TRANSFER".equals(task.getTaskType()) && task.getEmergencyInfo() != null) {
String dispatchCode = task.getEmergencyInfo().getDispatchCode();
@@ -256,6 +268,7 @@
task.setPlannedStartTime(createVO.getPlannedStartTime());
task.setPlannedEndTime(createVO.getPlannedEndTime());
task.setAssigneeId(createVO.getAssigneeId());
+
task.setCreatorId(userId);
// 浼樺厛浣跨敤鍓嶇浼犲叆鐨勯儴闂↖D锛屽鏋滄病鏈夊垯浣跨敤褰撳墠鐢ㄦ埛鐨勯儴闂↖D
task.setDeptId(createVO.getDeptId() != null ? createVO.getDeptId() : SecurityUtils.getDeptId());
@@ -266,7 +279,6 @@
task.setRemark(createVO.getRemark());
task.setDelFlag("0");
- task.setIsHeadPush(isTaskHeaderPush(userId,task.getDeptId())?"1":"0");
// 璁剧疆鍦板潃鍜屽潗鏍囦俊鎭�
setAddressAndCoordinatesFromVO(task, createVO);
@@ -344,7 +356,6 @@
* @return 缁撴灉
*/
@Override
- @Transactional
public int insertTask(TaskCreateVO createVO,Long serviceOrderId,Long dispatchOrderId, String serviceOrdNo, Long userId,String userName, Long deptId, Date createTime, Date updateTime) {
SysTask task = new SysTask();
if(createVO.getTaskCode()!=null){
@@ -370,15 +381,6 @@
task.setUpdateBy(userName);
task.setRemark(createVO.getRemark());
task.setDelFlag("0");
-
- Boolean isHeadPush=this.isTaskHeaderPush(userId, deptId);
- if(isHeadPush){
- task.setIsHeadPush("1");
- }else{
- task.setIsHeadPush("0");
- }
-
-
// 璁剧疆鍦板潃鍜屽潗鏍囦俊鎭�
setAddressAndCoordinatesFromVO(task, createVO);
@@ -455,10 +457,10 @@
private void sendTaskAssigneeEvent(TaskCreateVO createVO,SysTask task,Long userId,String userName){
List<Long> assigneeIds = createVO.getAssignees().stream()
- .map(assignee -> assignee.getUserId())
+ .map(TaskCreateVO.AssigneeInfo::getUserId)
.collect(Collectors.toList());
List<String> assigneeNames = createVO.getAssignees().stream()
- .map(assignee -> assignee.getUserName())
+ .map(TaskCreateVO.AssigneeInfo::getUserName)
.collect(Collectors.toList());
eventPublisher.publishEvent(new TaskAssignedEvent(
@@ -479,7 +481,6 @@
* @return 缁撴灉
*/
@Override
- @Transactional
public int updateSysTask(TaskUpdateVO updateVO, Boolean updateFromLegacy) {
SysTask task = sysTaskMapper.selectSysTaskByTaskId(updateVO.getTaskId());
if (task == null) {
@@ -519,7 +520,7 @@
}
Boolean hasSetDepartureFlag=false;
//璁剧疆鎬婚儴鎺ㄩ��
- task.setIsHeadPush(this.isTaskHeaderPush(task.getCreatorId(), task.getDeptId())?"1":"0");
+
// 鑷姩鑾峰彇鍑哄彂鍦癎PS鍧愭爣锛堝鏋滄洿鏂颁簡鍦板潃浣嗙己澶卞潗鏍囷級
if (updateVO.getDepartureAddress() != null &&
(updateVO.getDepartureLongitude() == null || updateVO.getDepartureLatitude() == null) &&
@@ -722,13 +723,6 @@
task.setTaskCode(updateVO.getTaskCode());
}
-
-
-
-// task.setDepartureLongitude(updateVO.getDepartureLongitude());
-// task.setDepartureLatitude(updateVO.getDepartureLatitude());
-// task.setDestinationLongitude(updateVO.getDestinationLongitude());
-// task.setDestinationLatitude(updateVO.getDestinationLatitude());
Boolean modifyOutLongLat = false;
// 鑷姩鑾峰彇鍑哄彂鍦癎PS鍧愭爣锛堝鏋滃湴鍧�鍙樻洿涓旂己澶卞潗鏍囷級
if (task != null && updateVO.getDepartureAddress() != null
@@ -819,7 +813,8 @@
Boolean hasEmergencyInfo = updateVO.getHospitalOut() != null || updateVO.getHospitalIn() != null || updateVO.getPatient() != null
|| updateVO.getPrice() != null || updateVO.getDistance() != null;
-
+// Boolean isHeadPush=isTaskHeaderPush(task.getCreatorId(),task.getDeptId());
+// updateVO.setFromHQ2_is(isHeadPush?"1":"0");
// 浣跨敤TaskCreateVO鐨勫瓧娈垫潵鏇存柊鎬ユ晳杞繍淇℃伅
if (hasEmergencyInfo) {
@@ -1199,7 +1194,7 @@
public List<SysTask> selectMyTasks(Long userId) {
List<SysTask> list = sysTaskMapper.selectMyTasks(userId);
list.stream().forEach(task -> {
-
+ bindTaskAssign(task);
if(task.getTaskType().equals("EMERGENCY_TRANSFER")){
task.setEmergencyInfo(sysTaskEmergencyMapper.selectSysTaskEmergencyByTaskId(task.getTaskId()));
}
--
Gitblit v1.9.1