From 10354e63eb3298beb9ebcc029dd9f48d8936a272 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期五, 19 十二月 2025 23:15:05 +0800
Subject: [PATCH] feat:优化同步

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TaskDispatchSyncUtilService.java |  408 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 408 insertions(+), 0 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TaskDispatchSyncUtilService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TaskDispatchSyncUtilService.java
new file mode 100644
index 0000000..8300d98
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TaskDispatchSyncUtilService.java
@@ -0,0 +1,408 @@
+package com.ruoyi.system.service.impl;
+
+import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.system.domain.*;
+import com.ruoyi.system.domain.vo.TaskCreateVO;
+import com.ruoyi.system.mapper.*;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Service
+@Slf4j
+public class TaskDispatchSyncUtilService {
+
+    @Autowired
+    private SysUserMapper sysUserMapper;
+
+    @Autowired
+    private SysTaskMapper sysTaskMapper;
+    @Autowired
+    private SysTaskAssigneeMapper sysTaskAssigneeMapper;
+
+    @Autowired
+    private TaskSyncUtilService taskSyncUtilService;
+
+    @Autowired
+    private SysDeptMapper sysDeptMapper;
+    /**
+     * 鏋勫缓璋冨害鍗曞悓姝ュ弬鏁�
+     */
+    public Map<String, Object> buildDispatchOrderParams(SysTask task, SysTaskEmergency emergency) {
+        Map<String, Object> params = new HashMap<>();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+        // 鑾峰彇绠$悊鍛業D锛堝垱寤轰汉ID瀵瑰簲鐨凮A_UserID锛�
+        String adminID = taskSyncUtilService.getAdminID(task);
+
+        // 鑾峰彇璋冨害鍗曠被鍨嬶紙浠庝换鍔℃墍灞為儴闂ㄧ殑璋冨害鍗曠紪鐮佽幏鍙栵級
+        String dispatchOrdClass = "SA"; // 榛樿鍊�
+        if (task.getDeptId() != null) {
+            try {
+                SysDept dept = sysDeptMapper.selectDeptById(task.getDeptId());
+                if (dept != null && StringUtils.isNotEmpty(dept.getDispatchOrderClass())) {
+                    dispatchOrdClass = dept.getDispatchOrderClass();
+//                    log.info("鑾峰彇浠诲姟鎵�灞為儴闂ㄧ殑璋冨害鍗曠紪鐮佹垚鍔燂紝閮ㄩ棬ID: {}, 璋冨害鍗曠紪鐮�: {}", task.getDeptId(), dispatchOrdClass);
+                }
+            } catch (Exception e) {
+                log.error("鏌ヨ浠诲姟鎵�灞為儴闂ㄤ俊鎭紓甯革紝閮ㄩ棬ID: {}", task.getDeptId(), e);
+            }
+        }
+        params.put("AdminID", adminID);
+
+        // 鍩烘湰淇℃伅
+        params.put("DispatchOrdClass", dispatchOrdClass);
+        params.put("ServiceOrdID", emergency.getLegacyServiceOrdId().toString());
+        params.put("DispatchOrdState", "1"); // 璋冨害鍗曠姸鎬�
+
+        // 鏃堕棿淇℃伅
+        if (task.getPlannedStartTime() != null) {
+            params.put("DispatchOrdTraSDTime", sdf.format(task.getPlannedStartTime())); // 鎷熷嚭鍙戞椂闂�
+        } else {
+            params.put("DispatchOrdTraSDTime", "");
+        }
+        params.put("DispatchOrd_NS_Time", task.getCreateTime() != null ? sdf.format(task.getCreateTime()) : sdf.format(new Date())); // 寮�鍗曟椂闂�
+
+        // 杞﹁締淇℃伅 - 浠庝换鍔″叧鑱旂殑杞﹁締鑾峰彇CarID
+        Long carId = getTaskVehicleCarId(task.getTaskId());
+        params.put("DispatchOrdCarID", carId.toString());
+
+
+        // 鑱旂郴浜轰俊鎭�
+        params.put("DispatchOrdCoName", StringUtils.nvl(emergency.getPatientContact(), ""));
+        params.put("DispatchOrdCoPhone", StringUtils.nvl(emergency.getPatientPhone(), ""));
+        params.put("ServiceOrdCoName", StringUtils.nvl(emergency.getPatientContact(), ""));
+        params.put("ServiceOrdCoPhone", StringUtils.nvl(emergency.getPatientPhone(), ""));
+        params.put("ServiceOrdPtName", StringUtils.nvl(emergency.getPatientName(), ""));
+        params.put("ServiceOrdTraStreet",StringUtils.nvl(task.getDepartureAddress(), StringUtils.nvl(emergency.getHospitalOutAddress(), "")));
+        // 鍦板潃淇℃伅
+        params.put("DispatchOrdTraStreet", StringUtils.nvl(task.getDepartureAddress(), StringUtils.nvl(emergency.getHospitalOutAddress(), "")));
+        params.put("DispatchOrdTraEnd", StringUtils.nvl(task.getDestinationAddress(), StringUtils.nvl(emergency.getHospitalInAddress(), "")));
+        params.put("DispatchOrdTraVia", ""); // 瀹為檯閫旂粡鍦�
+
+        // 鎿嶄綔鍛戒护
+        params.put("DispatchOrd_Check", "0"); // 3=鐩存帴寮哄埗瀹屾垚
+
+        // 缁╂晥鍜岃垂鐢細纭繚鏁板�煎瓧娈典笉涓簄ull
+        String transferPrice = "0";
+        if (emergency.getTransferPrice() != null) {
+            try {
+                transferPrice = emergency.getTransferPrice().toString();
+                if (transferPrice.contains(".")) {
+                    transferPrice = new java.math.BigDecimal(transferPrice).stripTrailingZeros().toPlainString();
+                }
+            } catch (Exception e) {
+                log.warn("杞崲杞繍浠锋牸澶辫触锛屼换鍔D: {}, 浣跨敤榛樿鍊�0", task.getTaskId(), e);
+                transferPrice = "0";
+            }
+        }
+        params.put("DispatchOrdPerfomance", transferPrice);
+        params.put("StretcherMoney", "0"); // 鎶媴鏋惰垂
+        params.put("AddMoneyType", ""); // 闄勫姞椤圭洰
+        params.put("AddMoney", "0"); // 闄勫姞椤圭洰璐圭敤
+        params.put("AddMoneyExplain", ""); // 闄勫姞椤圭洰璇存槑
+
+        // 浜哄憳淇℃伅
+        params.put("EntourageName_aid1", ""); // 澶栨彺浜哄憳1
+        params.put("EntourageName_aid2", ""); // 澶栨彺浜哄憳2
+        params.put("DispatchOrd_NS_ID", adminID); // 璋冨害浜哄憳ID
+        params.put("RecommendedCar", ""); // 鎸囧畾杞﹀瀷
+        params.put("ServiceOrdTaskRemarks", StringUtils.nvl(task.getTaskDescription(), "")); // 鍖绘姢鍙稿娉�
+
+        // 鐢佃瘽淇℃伅
+        params.put("Phone", StringUtils.nvl(emergency.getPatientPhone(), ""));
+        params.put("TEL_Time", sdf.format(new Date()));
+        params.put("TEL_Remarks", "鏂扮郴缁熷悓姝ュ垱寤鸿皟搴﹀崟");
+
+        // 鏃堕暱淇℃伅
+        params.put("TimeLength_Program", "0"); // 澶у瀷娲诲姩淇濋殰鏃堕暱
+        params.put("TimeLength_ICU", "0"); // 灞呭ICU鏃堕暱
+        params.put("TimeLength_Wait", "0"); // 绛夊緟鏃堕暱
+
+        // 閲岀▼鏁�
+        params.put("DispatchOrdTraStreetMileage", ""); // 寮�濮嬮噷绋嬫暟
+        params.put("DispatchOrdTraEndMileage", ""); // 缁撴潫閲岀▼鏁�
+
+        // 鏈嶅姟鍗曠浉鍏充俊鎭紙浠巃dmin_save_24.gds 221-255琛岃ˉ鍏咃級
+        params.put("ServiceOrdPtCondition", StringUtils.nvl(emergency.getPatientCondition(), "")); // 鐥呮儏鎻忚堪
+        params.put("ServiceOrdPtDoctor", ""); // 鎮h�呭尰鐢�
+        params.put("ServiceOrdPtDoctorPhone", ""); // 鎮h�呭尰鐢熺數璇�
+        params.put("TransferModeID", ""); // 杞繍鏂瑰紡
+        params.put("ServiceOrdVIP", "0"); // VIP瀹㈡埛
+        // 浠锋牸瀛楁澶嶇敤锛岀‘淇濅竴鑷存��
+        params.put("ServiceOrdTraTxnPrice", transferPrice); // 鎴愪氦浠�
+        params.put("ServiceOrdTraPrePayment", "0"); // 闇�棰勪粯娆�
+        params.put("SettlementPrice", "0"); // 缁撶畻浠�
+        params.put("ServiceOrdTraPriceReason", ""); // 宸环鍘熷洜
+        params.put("ServiceOrd_CC_ID", ""); // 瀹㈡湇浜哄憳ID
+        params.put("ServiceOrd_Sale_ID", ""); // 閿�鍞汉鍛業D
+        params.put("ServiceOrdIntroducer", ""); // 浠嬬粛浜�
+        params.put("ServiceOrd_work_ID", ""); // 涓昏浼佸井瀹㈡湇ID
+        params.put("ServiceOrd_work_IDs", ""); // 鍏朵粬浼佸井瀹㈡湇ID
+        params.put("ServiceOrd_work_is", "0"); // 鏄惁浼佸井鎴愪氦
+        params.put("CommissionScenarioID", "0"); // 浼佸井缁╂晥鏂规
+        params.put("ServiceOrdApptDate", task.getPlannedStartTime() != null ? sdf.format(task.getPlannedStartTime()) : ""); // 棰勭害鏃堕棿
+        params.put("ServiceOrdPtDiagnosis", ""); // 璇婃柇
+        params.put("ServiceOrdOperationRemarks", "鏂扮郴缁熷悓姝ュ垱寤�"); // 鎿嶄綔澶囨敞
+        params.put("ServiceOrdEstimatedOrderDate", ""); // 棰勮娲惧崟鏃堕棿
+        params.put("ServiceOrdEstimatedOrderDateOld", ""); // 鍘熼璁℃淳鍗曟椂闂�
+        params.put("ServiceOrdViaDistance", "0"); // 涓�旇窛绂�
+        // 璺濈瀛楁锛氱‘淇濅笉涓虹┖锛岄伩鍏嶆棫绯荤粺鎺ュ彛鎶ラ敊
+        String transferDistance = "0";
+        if (emergency.getTransferDistance() != null) {
+            try {
+                transferDistance = emergency.getTransferDistance().toString();
+                // 鍘婚櫎鍙兘鐨勫皬鏁扮偣鍚庡浣欑殑0
+                if (transferDistance.contains(".")) {
+                    transferDistance = new java.math.BigDecimal(transferDistance).stripTrailingZeros().toPlainString();
+                }
+            } catch (Exception e) {
+                log.warn("杞崲杞繍璺濈澶辫触锛屼换鍔D: {}, 浣跨敤榛樿鍊�0", task.getTaskId(), e);
+                transferDistance = "0";
+            }
+        }
+//        log.info("杞繍璺濈:{}",transferDistance);
+        params.put("ServiceOrdTraDistance", transferDistance);
+        params.put("OrderLevel", "0"); // 鏌ョ湅绛夌骇
+        params.put("ServiceOrdDepartureType", "1"); // 棰勭害绫诲瀷
+        params.put("ConditionLevel", "0"); // 鐥呴噸绾у埆
+        params.put("DirectionType", "0"); // 杞繍鍘诲悜
+        params.put("ServiceOrdPtOutHospID", emergency.getHospitalOutId() != null ? emergency.getHospitalOutId().toString() : "0"); // 杞嚭鍖婚櫌ID
+        params.put("ServiceOrdPtServices", emergency.getHospitalOutBedNumber()==null?"":emergency.getHospitalOutBedNumber().toString()); // 杞嚭搴婁綅
+        params.put("ServiceOrdPtServicesID",emergency.getHospitalOutDepartmentId()==null?"":emergency.getHospitalOutDepartmentId().toString()); // 杞嚭绉戝ID
+        params.put("ServiceOrdPtInServicesID",emergency.getHospitalInDepartmentId()==null?"":emergency.getHospitalInDepartmentId().toString()); // 杞叆绉戝ID
+        params.put("ServiceOrdPtInServices", emergency.getHospitalInBedNumber()==null?"":emergency.getHospitalInBedNumber().toString());// 杞叆搴婁綅
+        params.put("ServiceOrdPtInHospID", emergency.getHospitalInId() != null ? emergency.getHospitalInId().toString() : "0"); // 杞叆鍖婚櫌ID
+        params.put("ServiceOrdPtOutHosp", StringUtils.nvl(emergency.getHospitalOutName(), "")); // 杞嚭鍖婚櫌
+        params.put("ServiceOrdTraVia", StringUtils.nvl(task.getDepartureAddress(), StringUtils.nvl(emergency.getHospitalOutAddress(), ""))); // 杞嚭鍦板潃
+        params.put("ServiceOrdPtInHosp", StringUtils.nvl(emergency.getHospitalInName(), "")); // 杞叆鍖婚櫌
+        params.put("ServiceOrdTraEnd", StringUtils.nvl(task.getDestinationAddress(), StringUtils.nvl(emergency.getHospitalInAddress(), ""))); // 杞叆鍦板潃
+        params.put("FromHQ2_is", "0"); // 骞垮窞鎬婚儴鎺ㄩ�佷换鍔℃爣璁�
+
+        // 鐥呮儏ID鍒楄〃锛圛CD-10鐤剧梾ID锛岀敤浜庤瘖鏂璉CD锛�
+        // 鏍煎紡锛氶�楀彿鍒嗛殧鐨処D鍒楄〃锛屽 ",1,2,3,"
+        String ordIcdId = "";
+        if (StringUtils.isNotEmpty(emergency.getDiseaseIds())) {
+            // 灏嗗瓨鍌ㄧ殑 "1,2,3" 鏍煎紡杞崲涓烘棫绯荤粺瑕佹眰鐨� ",1,2,3," 鏍煎紡
+            ordIcdId = "," + emergency.getDiseaseIds() + ",";
+            log.info("鐥呮儏ID鍒楄〃宸茶缃紝浠诲姟ID: {}, OrdICD_ID: {}", task.getTaskId(), ordIcdId);
+        }
+        params.put("OrdICD_ID", ordIcdId);
+        params.put("OrdICD_ID_old", ""); // 鏃х梾鎯匢D鍒楄〃锛堢敤浜庡姣旀槸鍚﹂渶瑕佹洿鏂帮級
+
+        // 鎵ц浜哄憳淇℃伅锛堥殢琛屼汉鍛橈級
+        syncTaskAssignees(task, params);
+
+        return params;
+    }
+
+
+    @Autowired
+    private SysTaskVehicleMapper sysTaskVehicleMapper;
+    @Autowired
+    private VehicleInfoMapper vehicleInfoMapper;
+
+
+    /**
+     * 鑾峰彇浠诲姟鍏宠仈杞﹁締鐨勬棫绯荤粺CarID
+     *
+     * @param taskId 浠诲姟ID
+     * @return CarID锛屽鏋滄湭鎵惧埌鍒欒繑鍥�0L
+     */
+    private Long getTaskVehicleCarId(Long taskId) {
+        try {
+            // 浠� sys_task_vehicle 琛ㄦ煡璇㈣溅杈咺D
+            List<SysTaskVehicle> taskVehicles = sysTaskVehicleMapper.selectSysTaskVehicleByTaskId(taskId);
+            if (taskVehicles != null && !taskVehicles.isEmpty()) {
+                // 鍙栫涓�涓叧鑱旂殑杞﹁締
+                Long vehicleId = taskVehicles.get(0).getVehicleId();
+                if (vehicleId != null) {
+                    // 浠� tb_vehicle_info 琛ㄨ幏鍙� car_id
+                    VehicleInfo vehicleInfo = vehicleInfoMapper.selectVehicleInfoById(vehicleId);
+                    if (vehicleInfo != null && vehicleInfo.getCarId() != null) {
+                        Long carId = vehicleInfo.getCarId().longValue();
+                        log.info("鑾峰彇浠诲姟鍏宠仈杞﹁締鐨凜arID鎴愬姛锛屼换鍔D: {}, 杞﹁締ID: {}, CarID: {}",
+                                taskId, vehicleId, carId);
+                        return carId;
+                    } else {
+                        log.warn("杞﹁締淇℃伅涓湭閰嶇疆CarID锛屼换鍔D: {}, 杞﹁締ID: {}", taskId, vehicleId);
+                    }
+                } else {
+                    log.warn("浠诲姟杞﹁締鍏宠仈璁板綍涓溅杈咺D涓虹┖锛屼换鍔D: {}", taskId);
+                }
+            } else {
+                log.warn("浠诲姟鏈叧鑱旇溅杈嗭紝浠诲姟ID: {}", taskId);
+            }
+        } catch (Exception e) {
+            log.error("鏌ヨ浠诲姟鍏宠仈杞﹁締鐨凜arID寮傚父锛屼换鍔D: {}", taskId, e);
+        }
+        return 0L;
+    }
+
+    /**
+     * 鑾峰彇浠诲姟鐨勬墽琛屼汉鍛樹俊鎭垪琛紙鍖呭惈瑙掕壊绫诲瀷锛�
+     *
+     * @param taskId 浠诲姟ID
+     * @return 鎵ц浜哄憳淇℃伅鍒楄〃
+     */
+    private List<TaskCreateVO.AssigneeInfo> getTaskAssignees(Long taskId) {
+        List<TaskCreateVO.AssigneeInfo> assignees = new java.util.ArrayList<>();
+
+        try {
+            // 浠庢暟鎹簱鏌ヨ鎵ц浜哄憳淇℃伅锛堟寜鎺掑簭椤哄簭锛�
+            List<SysTaskAssignee> taskAssignees = sysTaskAssigneeMapper.selectSysTaskAssigneeByTaskId(taskId);
+
+            if (taskAssignees != null && !taskAssignees.isEmpty()) {
+                // 灏嗘暟鎹簱涓殑鎵ц浜哄憳杞崲涓篈ssigneeInfo瀵硅薄
+                for (SysTaskAssignee taskAssignee : taskAssignees) {
+                    TaskCreateVO.AssigneeInfo assignee = new TaskCreateVO.AssigneeInfo();
+                    assignee.setUserId(taskAssignee.getUserId());
+                    assignee.setUserName(taskAssignee.getUserName());
+                    assignee.setUserType(taskAssignee.getUserType());
+                    assignees.add(assignee);
+                }
+
+                log.info("浠庢暟鎹簱鑾峰彇鎵ц浜哄憳淇℃伅鎴愬姛锛屼换鍔D: {}, 浜哄憳鏁伴噺: {}", taskId, assignees.size());
+                return assignees;
+            }
+
+            // 濡傛灉鏁版嵁搴撲腑娌℃湁鎵ц浜哄憳淇℃伅锛屽皾璇曚粠浠诲姟鐨勪富瑕佹墽琛屼汉鑾峰彇
+//            log.warn("鏁版嵁搴撲腑鏈壘鍒版墽琛屼汉鍛樹俊鎭紝灏濊瘯浠庝换鍔′富瑕佹墽琛屼汉鑾峰彇锛屼换鍔D: {}", taskId);
+            SysTask task = sysTaskMapper.selectSysTaskByTaskId(taskId);
+            if (task != null && task.getAssigneeId() != null) {
+                SysUser user = sysUserMapper.selectUserById(task.getAssigneeId());
+                if (user != null) {
+                    TaskCreateVO.AssigneeInfo assignee = new TaskCreateVO.AssigneeInfo();
+                    assignee.setUserId(user.getUserId());
+                    assignee.setUserName(user.getNickName());
+                    assignee.setUserType(taskSyncUtilService.getUserType(user)); // 閫氳繃瑙掕壊鍒ゆ柇绫诲瀷
+                    assignees.add(assignee);
+                }
+            }
+        } catch (Exception e) {
+            log.error("鑾峰彇浠诲姟鎵ц浜哄憳淇℃伅寮傚父锛屼换鍔D: {}", taskId, e);
+        }
+
+        return assignees;
+    }
+    /**
+     * 鍚屾浠诲姟鎵ц浜哄憳淇℃伅鍒拌皟搴﹀崟闅忚浜哄憳鍙傛暟
+     *
+     * @param task 浠诲姟淇℃伅
+     * @param params 璋冨害鍗曞弬鏁癕ap
+     */
+    private void syncTaskAssignees(SysTask task, Map<String, Object> params) {
+        try {
+            // 鑾峰彇浠诲姟鐨勬墽琛屼汉鍛樹俊鎭垪琛紙鍖呭惈瑙掕壊绫诲瀷锛� //TODO 濡傛灉鏈変袱涓徃鏈哄氨瑕� 璁剧疆銆�Entourage_1鍜孍ntourage_2
+            //涓や釜鎶ゅ+灏辫璁剧疆 Entourage_4鍜孍ntourage_6
+            //涓や釜鍖荤敓瑕佽缃� Entourage_3鍜孍ntourage_5
+            List<TaskCreateVO.AssigneeInfo> assignees = getTaskAssignees(task.getTaskId());
+
+            if (assignees == null || assignees.isEmpty()) {
+                log.warn("浠诲姟鏃犳墽琛屼汉鍛橈紝浠诲姟ID: {}", task.getTaskId());
+                // 璁剧疆榛樿绌哄��
+                params.put("EntourageLeadID", "");
+                params.put("Entourage_1", ""); // 鍙告満
+                params.put("Entourage_2", ""); //鍙告満
+                params.put("Entourage_3", ""); // 鍖荤敓
+                params.put("Entourage_5", ""); //鍖荤敓
+                params.put("Entourage_4", ""); // 鎶ゅ+
+                params.put("Entourage_6", ""); // 鎶ゅ+
+
+                return;
+            }
+
+            String leadEntourageId = ""; // 棰嗛槦鐨凟ntourageID
+            String driverOaId = "";      // 鍙告満鐨凮A_UserID
+            String doctorOaId = "";      // 鍖荤敓鐨凮A_UserID
+            String nurseOaId = "";       // 鎶ゅ+鐨凮A_UserID
+
+            // 閬嶅巻鎵ц浜哄憳锛屾牴鎹鑹茬被鍨嬪垎閰嶅埌瀵瑰簲鐨凟ntourage鍙傛暟
+            for (int i = 0; i < assignees.size(); i++) {
+                TaskCreateVO.AssigneeInfo assignee = assignees.get(i);
+                Long userId = assignee.getUserId();
+                String userType = assignee.getUserType(); // 鐩存帴浣跨敤鍓嶇浼犻�掔殑瑙掕壊绫诲瀷
+
+                if (userId == null) {
+                    continue;
+                }
+
+                // 鏌ヨ鐢ㄦ埛鐨凮A_UserID
+                SysUser user = sysUserMapper.selectUserById(userId);
+                if (user == null || user.getOaUserId() == null) {
+                    log.warn("鎵ц浜哄憳淇℃伅涓嶅瓨鍦ㄦ垨鏈厤缃甇A_UserID锛岀敤鎴稩D: {}", userId);
+                    continue;
+                }
+
+                String oaUserId = user.getOaUserId().toString();
+
+                // 鏍规嵁鐢ㄦ埛绫诲瀷鍒嗛厤鍒板搴旂殑Entourage鍙傛暟
+                if ("driver".equals(userType)) {
+                    if (driverOaId.isEmpty()) {
+                        driverOaId = oaUserId;
+                        if(params.get("Entourage_1")==null) {
+                            params.put("Entourage_1", oaUserId);
+                        }else{
+                            params.put("Entourage_2", oaUserId);
+                        }
+                        // 濡傛灉鏄涓�涓墽琛屼汉鍛橈紝璁剧疆涓洪闃�
+                        if (i == 0 && leadEntourageId.isEmpty()) {
+                            leadEntourageId = "1"; // 鍙告満瀵瑰簲Entourage_1
+                        }
+                    }
+                } else if ("doctor".equals(userType)) {
+                    if (doctorOaId.isEmpty()) {
+                        doctorOaId = oaUserId;
+                        if(params.get("Entourage_3")==null) {
+                            params.put("Entourage_3", oaUserId);
+                        }else{
+                            params.put("Entourage_5", oaUserId);
+                        }
+                        // 濡傛灉鏄涓�涓墽琛屼汉鍛橈紝璁剧疆涓洪闃�
+                        if (i == 0 && leadEntourageId.isEmpty()) {
+                            leadEntourageId = "3"; // 鍖荤敓瀵瑰簲Entourage_3
+                        }
+                    }
+                } else if ("nurse".equals(userType)) {
+                    if (nurseOaId.isEmpty()) {
+                        nurseOaId = oaUserId;
+                        if(params.get("Entourage_4")==null) {
+                            params.put("Entourage_4", oaUserId);
+                        }else{
+                            params.put("Entourage_6", oaUserId);
+                        }
+                        // 濡傛灉鏄涓�涓墽琛屼汉鍛橈紝璁剧疆涓洪闃�
+                        if (i == 0 && leadEntourageId.isEmpty()) {
+                            leadEntourageId = "4"; // 鎶ゅ+瀵瑰簲Entourage_4
+                        }
+                    }
+                }
+            }
+
+            // 璁剧疆鍙傛暟
+            params.put("EntourageLeadID", leadEntourageId);
+//            params.put("Entourage_1", driverOaId);  // 鍙告満
+//            params.put("Entourage_3", doctorOaId);  // 鍖荤敓
+//            params.put("Entourage_4", nurseOaId);   // 鎶ゅ+
+
+//            log.info("浠诲姟鎵ц浜哄憳鍚屾鎴愬姛锛屼换鍔D: {}, 棰嗛槦ID: {}, 鍙告満: {}, 鍖荤敓: {}, 鎶ゅ+: {}",
+//                task.getTaskId(), leadEntourageId, driverOaId, doctorOaId, nurseOaId);
+
+        } catch (Exception e) {
+            log.error("鍚屾浠诲姟鎵ц浜哄憳寮傚父锛屼换鍔D: {}", task.getTaskId(), e);
+            // 璁剧疆榛樿绌哄��
+            params.put("EntourageLeadID", "");
+            params.put("Entourage_1", "");
+            params.put("Entourage_3", "");
+            params.put("Entourage_4", "");
+        }
+    }
+}

--
Gitblit v1.9.1