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 |   46 ++++++++++++++++++++--------------------------
 1 files changed, 20 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 07c68f0..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();
@@ -267,7 +279,6 @@
         task.setRemark(createVO.getRemark());
         task.setDelFlag("0");
 
-//        task.setIsHeadPush(isTaskHeaderPush(userId,task.getDeptId())?"1":"0");
         
         // 璁剧疆鍦板潃鍜屽潗鏍囦俊鎭�
         setAddressAndCoordinatesFromVO(task, createVO);
@@ -345,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){
@@ -371,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);
@@ -456,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(
@@ -480,7 +481,6 @@
      * @return 缁撴灉
      */
     @Override
-    @Transactional
     public int updateSysTask(TaskUpdateVO updateVO, Boolean updateFromLegacy) {
         SysTask task = sysTaskMapper.selectSysTaskByTaskId(updateVO.getTaskId());
         if (task == null) {
@@ -520,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) && 
@@ -723,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
@@ -820,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) {
@@ -1200,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