From 09faa36132c8cbada5327649875534ef01c1a3b1 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期四, 11 十二月 2025 20:44:31 +0800
Subject: [PATCH] feat: 优化任务里程统计
---
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/LegacyTransferSyncServiceImpl.java | 336 +++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 273 insertions(+), 63 deletions(-)
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/LegacyTransferSyncServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/LegacyTransferSyncServiceImpl.java
index abc7e5c..4bf8466 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/LegacyTransferSyncServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/LegacyTransferSyncServiceImpl.java
@@ -1,15 +1,14 @@
package com.ruoyi.system.service.impl;
-import com.ruoyi.common.annotation.DataSource;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysUser;
-import com.ruoyi.common.enums.DataSourceType;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.system.domain.SysTask;
import com.ruoyi.system.domain.SysTaskEmergency;
import com.ruoyi.system.domain.VehicleInfo;
+import com.ruoyi.system.domain.enums.TaskStatus;
import com.ruoyi.system.domain.vo.TaskCreateVO;
+import com.ruoyi.system.domain.vo.TaskUpdateVO;
import com.ruoyi.system.mapper.SysTaskEmergencyMapper;
import com.ruoyi.system.mapper.SysTaskMapper;
import com.ruoyi.system.service.ILegacyTransferSyncService;
@@ -18,8 +17,11 @@
import com.ruoyi.system.mapper.LegacyTransferSyncMapper;
import com.ruoyi.system.mapper.VehicleInfoMapper;
import com.ruoyi.system.service.ISysUserService;
+import com.ruoyi.system.service.IWechatTaskNotifyService;
+import com.ruoyi.system.utils.TaskStatusConverter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -61,7 +63,12 @@
@Autowired
private ISysUserService sysUserService;
-
+
+ @Autowired
+ private IWechatTaskNotifyService wechatTaskNotifyService;
+
+
+
/**
* 鍚屾鎸囧畾鏃ユ湡鑼冨洿鐨勬棫绯荤粺杞繍鍗曞埌鏂扮郴缁�
*
@@ -115,6 +122,8 @@
// 妫�鏌ユ槸鍚﹀凡鍚屾
if (isTransferOrderSynced(serviceOrdID, dispatchOrdID)) {
log.debug("杞繍鍗曞凡鍚屾锛岃烦杩�: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
+ //杩涜鏇存柊鎿嶄綔
+ updateTransferOrder(serviceOrdID, dispatchOrdID, order);
continue;
}
@@ -163,22 +172,24 @@
log.error("鏈嶅姟鍗旾D涓嶈兘涓虹┖");
return false;
}
-
+ // 鐩存帴鏌ヨ鎸囧畾鐨勮浆杩愬崟淇℃伅
+ List<Map<String, Object>> transferOrders = legacyTransferSyncMapper.selectTransferOrdersByIDs(serviceOrdID, dispatchOrdID);
+
+ Map<String, Object> order = transferOrders.get(0);
+
// 妫�鏌ユ槸鍚﹀凡鍚屾
if (isTransferOrderSynced(serviceOrdID, dispatchOrdID)) {
log.info("杞繍鍗曞凡鍚屾锛岃烦杩�: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
+ updateTransferOrder(serviceOrdID, dispatchOrdID, order);
return true;
}
- // 鐩存帴鏌ヨ鎸囧畾鐨勮浆杩愬崟淇℃伅
- List<Map<String, Object>> transferOrders = legacyTransferSyncMapper.selectTransferOrdersByIDs(serviceOrdID, dispatchOrdID);
-
+
if (transferOrders == null || transferOrders.isEmpty()) {
log.error("鏈煡璇㈠埌瀵瑰簲鐨勮浆杩愬崟淇℃伅: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
return false;
}
-
- Map<String, Object> order = transferOrders.get(0);
+
// 鍚屾鍗曚釜杞繍鍗�
return syncSingleTransferOrder(serviceOrdID, dispatchOrdID, order);
@@ -188,7 +199,87 @@
return false;
}
}
-
+
+ /**
+ * 鏇存柊鍗曚釜杞繍鍗�
+ * @param serviceOrdID
+ * @param dispatchOrdID
+ * @param order
+ * @return
+ */
+ private boolean updateTransferOrder(String serviceOrdID, String dispatchOrdID, Map<String, Object> order){
+ log.info("寮�濮嬪悓姝ュ崟涓浆杩愬崟: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
+ String sysTaskCode="";
+ try {
+ SysTaskEmergency emergency=sysTaskEmergencyMapper.selectByLegacyServiceOrdId(Long.parseLong(serviceOrdID));
+ if(emergency.getNeedResync().equals(1)){
+ log.info("鏂扮郴缁熼渶瑕佸悓姝ュ埌鏃х郴缁熼偅閲岋紝鎵�浠ヤ笉瑕佸悓姝ユ棫鏁版嵁鍒版柊绯荤粺,serviceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
+ return false;
+ }
+ // 鏋勯�燭askCreateVO瀵硅薄
+ TaskCreateVO createTaskVo = buildCreateTaskVo(serviceOrdID, dispatchOrdID, order);
+ if (createTaskVo == null) {
+ log.error("鏋勯�燭askCreateVO澶辫触: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
+ return false;
+ }
+ sysTaskCode = createTaskVo.getTaskCode();
+ // 璁板綍鍒涘缓鐨勪换鍔′俊鎭�
+ log.debug("鍑嗗鍒涘缓浠诲姟: ServiceOrdID={}, DispatchOrdID={}, 鎮h�呭鍚�={}, 杞嚭鍖婚櫌={}, 杞叆鍖婚櫌={}",
+ serviceOrdID, dispatchOrdID,
+ createTaskVo.getPatient() != null ? createTaskVo.getPatient().getName() : "鏈煡",
+ createTaskVo.getHospitalOut() != null ? createTaskVo.getHospitalOut().getName() : "鏈煡",
+ createTaskVo.getHospitalIn() != null ? createTaskVo.getHospitalIn().getName() : "鏈煡");
+ /**
+ * 寮�鍗曟椂闂�
+ */
+ Date ServiceOrd_CC_Time= getDateValue(order, "ServiceOrd_CC_Time");
+ // 璋冪敤sysTaskService鍒涘缓浠诲姟
+ String serviceOrdClass = getStringValue(order,"ServiceOrdClass");
+ String serviceOrdNo = getStringValue(order,"ServiceOrdNo");
+
+ Integer oauserId=getIntegerValue(order,"ServiceOrd_CC_ID");
+ if(oauserId==null){
+ oauserId=getIntegerValue(order,"ServiceOrd_NS_ID");
+ }
+ if(oauserId==null || oauserId==0){
+ log.error("鍒涘缓浠诲姟鏃讹紝鑾峰彇鍒涘缓浜轰俊鎭け璐ワ紝serviceOrdID={}, DispatchOrdID={} ServiceOrd_NS_ID={},ServiceOrd_CC_ID={}", serviceOrdID, dispatchOrdID, getIntegerValue(order,"ServiceOrd_NS_ID"),getIntegerValue(order,"ServiceOrd_CC_ID"));
+ return false;
+ }
+ SysUser sysUser=sysUserService.selectUserByOaUserId(oauserId);
+ Long taskCreatorId=sysUser==null?null:sysUser.getUserId();
+ String createUserName=sysUser==null?"system":sysUser.getUserName();
+ if(taskCreatorId==null || createUserName==null){
+ log.error("鍒涘缓浠诲姟鏃讹紝鑾峰彇鍒涘缓浜轰俊鎭け璐ワ紝serviceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
+ return false;
+ }
+ SysDept dept=sysDeptService.selectDeptByServiceClass(serviceOrdClass);
+ Long deptId=dept==null?null:dept.getDeptId();
+ TaskUpdateVO updateTaskVo = new TaskUpdateVO();
+ BeanUtils.copyProperties(createTaskVo, updateTaskVo);
+ log.info("寮�濮嬩繚瀛樿浆杩愪换鍔�,serviceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
+
+ int result = sysTaskService.updateTask(updateTaskVo,serviceOrdID,dispatchOrdID, serviceOrdNo, taskCreatorId,createUserName, deptId, ServiceOrd_CC_Time, ServiceOrd_CC_Time);
+
+ if (result > 0) {
+ log.info("杞繍鍗曞悓姝ユ垚鍔�: ServiceOrdID={}, DispatchOrdID={}, 鍒涘缓鐨勪换鍔D={}", serviceOrdID, dispatchOrdID, result);
+
+ try {
+ notifyTransferOrderByWechat((long) result, serviceOrdID, dispatchOrdID, serviceOrdNo, ServiceOrd_CC_Time, dept, order);
+ } catch (Exception e) {
+ log.error("杞繍鍗曞悓姝ユ垚鍔熷悗鍙戦�佸井淇¢�氱煡澶辫触: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID, e);
+ }
+
+ return true;
+ } else {
+ log.error("杞繍鍗曞悓姝ュけ璐�: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
+ return false;
+ }
+
+ } catch (Exception e) {
+ log.error("鍚屾鍗曚釜杞繍鍗曞紓甯�: ServiceOrdID={}, DispatchOrdID={},sysTaskCode:{}", serviceOrdID, dispatchOrdID,sysTaskCode, e);
+ return false;
+ }
+ }
/**
* 鍚屾鍗曚釜鏃х郴缁熻浆杩愬崟鍒版柊绯荤粺锛堝甫璇︾粏淇℃伅锛�
*
@@ -199,11 +290,11 @@
*/
private boolean syncSingleTransferOrder(String serviceOrdID, String dispatchOrdID, Map<String, Object> order) {
log.info("寮�濮嬪悓姝ュ崟涓浆杩愬崟: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
-
+ String sysTaskCode="";
try {
// 鏋勯�燭askCreateVO瀵硅薄
TaskCreateVO createTaskVo = buildCreateTaskVo(serviceOrdID, dispatchOrdID, order);
-
+ sysTaskCode = createTaskVo.getTaskCode();
if (createTaskVo == null) {
log.error("鏋勯�燭askCreateVO澶辫触: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
return false;
@@ -215,22 +306,43 @@
createTaskVo.getPatient() != null ? createTaskVo.getPatient().getName() : "鏈煡",
createTaskVo.getHospitalOut() != null ? createTaskVo.getHospitalOut().getName() : "鏈煡",
createTaskVo.getHospitalIn() != null ? createTaskVo.getHospitalIn().getName() : "鏈煡");
-
+ /**
+ * 寮�鍗曟椂闂�
+ */
Date ServiceOrd_CC_Time= getDateValue(order, "ServiceOrd_CC_Time");
// 璋冪敤sysTaskService鍒涘缓浠诲姟
String serviceOrdClass = getStringValue(order,"ServiceOrdClass");
+ String serviceOrdNo = getStringValue(order,"ServiceOrdNo");
- Integer oauserId=getIntegerValue(order,"ServiceOrd_NS_ID");
+ /**
+ * 鍒涘缓浜篒D
+ */
+ Integer oauserId=getIntegerValue(order,"ServiceOrd_CC_ID");
+ if(oauserId==null || oauserId==0) {
+ oauserId=getIntegerValue(order,"ServiceOrd_NS_ID");
+ }
SysUser sysUser=sysUserService.selectUserByOaUserId(oauserId);
- Long taskCreatorId=sysUser==null?null:sysUser.getUserId();
- String createUserName=sysUser==null?"system":sysUser.getUserName();
+ if(sysUser==null){
+ log.error("鍒涘缓浠诲姟鏃讹紝鑾峰彇鍒涘缓浜轰俊鎭け璐ワ紝serviceOrdID={}, DispatchOrdID={} ServiceOrd_CC_ID:{},ServiceOrd_NS_ID:{}", serviceOrdID, dispatchOrdID, getIntegerValue(order,"ServiceOrd_CC_ID"),getIntegerValue(order,"ServiceOrd_NS_ID"));
+ return false;
+ }
+ Long taskCreatorId= sysUser.getUserId();
+ String createUserName= sysUser.getUserName();
SysDept dept=sysDeptService.selectDeptByServiceClass(serviceOrdClass);
Long deptId=dept==null?null:dept.getDeptId();
- int result = sysTaskService.insertTask(createTaskVo,serviceOrdID,dispatchOrdID, taskCreatorId,createUserName, deptId, ServiceOrd_CC_Time, ServiceOrd_CC_Time);
+
+ int result = sysTaskService.insertTask(createTaskVo,serviceOrdID,dispatchOrdID, serviceOrdNo, taskCreatorId,createUserName, deptId, ServiceOrd_CC_Time, ServiceOrd_CC_Time);
if (result > 0) {
log.info("杞繍鍗曞悓姝ユ垚鍔�: ServiceOrdID={}, DispatchOrdID={}, 鍒涘缓鐨勪换鍔D={}", serviceOrdID, dispatchOrdID, result);
+
+ try {
+ notifyTransferOrderByWechat((long) result, serviceOrdID, dispatchOrdID, serviceOrdNo, ServiceOrd_CC_Time, dept, order);
+ } catch (Exception e) {
+ log.error("杞繍鍗曞悓姝ユ垚鍔熷悗鍙戦�佸井淇¢�氱煡澶辫触: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID, e);
+ }
+
return true;
} else {
log.error("杞繍鍗曞悓姝ュけ璐�: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
@@ -238,7 +350,7 @@
}
} catch (Exception e) {
- log.error("鍚屾鍗曚釜杞繍鍗曞紓甯�: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID, e);
+ log.error("鍚屾鍗曚釜杞繍鍗曞紓甯�: ServiceOrdID={}, DispatchOrdID={},sysTaskCode:{}", serviceOrdID, dispatchOrdID,sysTaskCode, e);
return false;
}
}
@@ -288,7 +400,16 @@
return false;
}
}
-
+
+ private String getServiceOrdCode(Date ServiceOrd_CC_Time,String serviceOrdClass,String serviceOrdNo){
+ //BF20251101-serviceOrdNo;
+ //灏� ServiceOrd_CC_Time 杞负 yyyyMMdd 鏍煎紡
+ String ServiceOrd_CC_Time_Str= DateUtils.parseDateToStr(DateUtils.YYYYMMDD,ServiceOrd_CC_Time);
+ //serviceOrdNo 杩欎釜鏄暟瀛楋紝鍥哄畾3浣嶆暟 锛屽皢32锛岃浆鎴�032锛涘皢1杞垚001
+ Integer intServiceNo=Integer.valueOf(serviceOrdNo);
+ String ServiceOrdNo_Str=String.format("%03d", intServiceNo);
+ return serviceOrdClass+ServiceOrd_CC_Time_Str+"-"+ServiceOrdNo_Str;
+ }
/**
* 鏋勯�燭askCreateVO瀵硅薄鐢ㄤ簬鍒涘缓浠诲姟
*
@@ -299,7 +420,7 @@
*/
@Override
public TaskCreateVO buildCreateTaskVo(String serviceOrdID, String dispatchOrdID, Map<String, Object> order) {
- log.info("鏋勯�燭askCreateVO: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
+// log.info("鏋勯�燭askCreateVO: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
try {
// 妫�鏌ュ弬鏁版湁鏁堟��
@@ -312,18 +433,17 @@
log.error("鏈嶅姟鍗旾D涓嶈兘涓虹┖");
return null;
}
-
+ String serviceOrdClass = getStringValue(order, "ServiceOrdClass");
+
TaskCreateVO createTaskVo = new TaskCreateVO();
- String Old_ServiceOrdID_TXT=getStringValue(order,"Old_ServiceOrdID_TXT");
- if(Old_ServiceOrdID_TXT!=null){
- createTaskVo.setTaskCode(Old_ServiceOrdID_TXT);
- }
-
+ String serviceOrdCode=this.getServiceOrdCode(getDateValue(order, "ServiceOrd_CC_Time"),serviceOrdClass,getStringValue(order, "ServiceOrdNo"));
+ createTaskVo.setTaskCode(serviceOrdCode);
+// log.info("鏋勯�燭askCreateVO: ServiceOrdID={}, DispatchOrdID={},taskCode:{}", serviceOrdID, dispatchOrdID,serviceOrdCode);
// 璁剧疆鍩烘湰淇℃伅
createTaskVo.setTaskType("EMERGENCY_TRANSFER"); // 鎬ユ晳杞繍浠诲姟
// 璁剧疆鍗曟嵁绫诲瀷鍜屼换鍔$被鍨婭D锛堜粠鏃х郴缁熷瓧娈垫槧灏勶級
- String serviceOrdClass = getStringValue(order, "ServiceOrdClass");
+
if (StringUtils.isNotEmpty(serviceOrdClass)) {
createTaskVo.setDocumentTypeId(serviceOrdClass);
}
@@ -335,18 +455,10 @@
// 璁剧疆鍖哄煙绫诲瀷
String serviceOrdAreaType = getStringValue(order, "ServiceOrdAreaType");
- if (StringUtils.isNotEmpty(serviceOrdAreaType)) {
- // 鍙互鏍规嵁闇�瑕佸皢鍖哄煙绫诲瀷鏄犲皠鍒癟askCreateVO鐨勫叾浠栧瓧娈�
- log.debug("鍖哄煙绫诲瀷: {}", serviceOrdAreaType);
- }
-
+
// 璁剧疆鐢ㄦ埛ID
Long serviceOrdUserID = getLongValue(order, "ServiceOrdUserID");
- if (serviceOrdUserID != null) {
- // 鍙互鏍规嵁闇�瑕佸皢鐢ㄦ埛ID鏄犲皠鍒癟askCreateVO鐨勫叾浠栧瓧娈�
- log.debug("鐢ㄦ埛ID: {}", serviceOrdUserID);
- }
-
+
// 璁剧疆鎮h�呬俊鎭�
TaskCreateVO.PatientInfo patientInfo = new TaskCreateVO.PatientInfo();
patientInfo.setName(getStringValue(order, "ServiceOrdPtName"));
@@ -390,9 +502,6 @@
String hospitalOutDeptId = getStringValue(order, "ServiceOrdPtServicesID");
-
- //杞嚭搴婁綅
- String serviceOrdPtServices=getStringValue(order, "ServiceOrdPtServices");
hospitalOutInfo.setDepartmentId(hospitalOutDeptId);
if (StringUtils.isNotEmpty(hospitalOutDeptId)) {
String hospitalOutDeptName = legacyTransferSyncMapper.selectDepartmentNameByDeptID(hospitalOutDeptId);
@@ -400,6 +509,8 @@
hospitalOutInfo.setDepartment(hospitalOutDeptName);
}
}
+ //杞嚭搴婁綅
+ String serviceOrdPtServices=getStringValue(order, "ServiceOrdPtServices");
if(serviceOrdPtServices!= null){
hospitalOutInfo.setBedNumber(serviceOrdPtServices);
}
@@ -415,9 +526,9 @@
hospitalInInfo.setName(hospitalInName);
}
}
- String DispatchOrdTraEnd = getStringValue(order, "DispatchOrdTraEnd");
- if(DispatchOrdTraEnd!= null){
- hospitalInInfo.setAddress(DispatchOrdTraEnd);
+ String serviceOrdTraEnd = getStringValue(order, "ServiceOrdTraEnd");
+ if(serviceOrdTraEnd!= null){
+ hospitalInInfo.setAddress(serviceOrdTraEnd);
}
//杞叆搴婁綅
String serviceOrdPtInServices =getStringValue(order, "ServiceOrdPtInServices");
@@ -437,17 +548,21 @@
createTaskVo.setHospitalIn(hospitalInInfo);
// 璁剧疆鍦板潃淇℃伅
- createTaskVo.setDepartureAddress(getStringValue(order, "ServiceOrdTraVia"));
+ createTaskVo.setDepartureAddress(getStringValue(order, "ServiceOrdTraStreet"));
createTaskVo.setDestinationAddress(getStringValue(order, "ServiceOrdTraEnd"));
// 璁剧疆浠锋牸鍜岃窛绂讳俊鎭�
createTaskVo.setPrice(getBigDecimalValue(order, "ServiceOrdTraTxnPrice"));
// 璺濈淇℃伅闇�瑕佷粠鍏朵粬瀛楁璁$畻鎴栬幏鍙�
-
- // 璁剧疆鎵ц浜轰俊鎭�
- List<TaskCreateVO.AssigneeInfo> assignees = queryAssignees(dispatchOrdID);
- createTaskVo.setAssignees(assignees);
-
+
+ if(dispatchOrdID!=null) {
+ // 璁剧疆鎵ц浜轰俊鎭�
+ List<TaskCreateVO.AssigneeInfo> assignees = queryAssignees(dispatchOrdID);
+ createTaskVo.setAssignees(assignees);
+ if (!assignees.isEmpty()) {
+ createTaskVo.setAssigneeId(assignees.get(0).getUserId());
+ }
+ }
// 璁剧疆杞﹁締淇℃伅
// 杞﹁締ID闇�瑕佹牴鎹瓺ispatchOrdCarID鏌ヨ鑾峰彇
String carID = getStringValue(order, "DispatchOrdCarID");
@@ -455,7 +570,8 @@
String carLicense = legacyTransferSyncMapper.selectCarLicenseByCarID(carID);
if (StringUtils.isNotEmpty(carLicense)) {
// 鏍规嵁杞︾墝鍙锋煡璇㈡柊绯荤粺涓殑杞﹁締ID
- log.debug("杞﹁締杞︾墝鍙�: {}", carLicense);
+ log.info("杞繍浠诲姟,ServiceOrdID:{},杞﹁締杞︾墝:{}",serviceOrdID,carLicense);
+// log.debug("杞﹁締杞︾墝鍙�: {}", carLicense);
// 棣栧厛灏濊瘯閫氳繃VehicleInfoMapper鏌ヨ杞﹁締淇℃伅
try {
@@ -467,7 +583,7 @@
List<Long> vehicleIds = new ArrayList<>();
vehicleIds.add(vehicleInfo.getVehicleId());
createTaskVo.setVehicleIds(vehicleIds);
- log.debug("閫氳繃car_id鎵惧埌杞﹁締淇℃伅: vehicle_id={}, vehicle_no={}", vehicleInfo.getVehicleId(), vehicleInfo.getVehicleNo());
+// log.debug("閫氳繃car_id鎵惧埌杞﹁締淇℃伅: vehicle_id={}, vehicle_no={}", vehicleInfo.getVehicleId(), vehicleInfo.getVehicleNo());
} else {
// 濡傛灉閫氳繃car_id鎵句笉鍒帮紝灏濊瘯閫氳繃杞︾墝鍙锋煡璇�
vehicleInfo = vehicleInfoMapper.selectVehicleInfoByVehicleNo(carLicense);
@@ -475,9 +591,9 @@
List<Long> vehicleIds = new ArrayList<>();
vehicleIds.add(vehicleInfo.getVehicleId());
createTaskVo.setVehicleIds(vehicleIds);
- log.debug("閫氳繃杞︾墝鍙锋壘鍒拌溅杈嗕俊鎭�: vehicle_id={}, vehicle_no={}", vehicleInfo.getVehicleId(), vehicleInfo.getVehicleNo());
+ log.debug("杞繍浠诲姟,ServiceOrdID:{} 閫氳繃杞︾墝鍙锋壘鍒拌溅杈嗕俊鎭�: vehicle_id={}, vehicle_no={}",serviceOrdID, vehicleInfo.getVehicleId(), vehicleInfo.getVehicleNo());
} else {
- log.warn("鏈壘鍒板搴旂殑杞﹁締淇℃伅: car_id={}, vehicle_no={}", carID, carLicense);
+ log.warn("杞繍浠诲姟,ServiceOrdID:{} 鏈壘鍒板搴旂殑杞﹁締淇℃伅: car_id={}, vehicle_no={}",serviceOrdID, carID, carLicense);
}
}
} catch (NumberFormatException e) {
@@ -496,6 +612,7 @@
}
}
+
// 璁剧疆鍏朵粬淇℃伅
createTaskVo.setTaskDescription("浠庢棫绯荤粺鍚屾鐨勮浆杩愬崟");
@@ -526,7 +643,7 @@
- // 璁剧疆鍒涘缓鏃堕棿
+ // 璁剧疆鍒涘缓鏃堕棿 寮�鍗曟棩鏈�
Date createTime = getDateValue(order, "ServiceOrd_CC_Time");
if (createTime != null) {
createTaskVo.setCreateTime(createTime);
@@ -546,8 +663,15 @@
}
createTaskVo.setDiseaseIds(diseaseIds);
}
+
+ Integer dispatchOrdStatus = getIntegerValue(order, "DispatchOrdStatus");
+ TaskStatus status= TaskStatusConverter.convertFromLegacyStatus(dispatchOrdStatus);
+ if(status!=null) {
+ createTaskVo.setTaskStatus(status.getCode());
+ }
+
- log.info("TaskCreateVO鏋勯�犲畬鎴�: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
+// log.info("TaskCreateVO鏋勯�犲畬鎴�: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
return createTaskVo;
} catch (Exception e) {
@@ -563,6 +687,7 @@
* @return 鎵ц浜轰俊鎭垪琛�
*/
private List<TaskCreateVO.AssigneeInfo> queryAssignees(String dispatchOrdID) {
+ long startTime = System.currentTimeMillis();
try {
// 妫�鏌ュ弬鏁版湁鏁堟��
if (StringUtils.isEmpty(dispatchOrdID)) {
@@ -570,15 +695,31 @@
return new ArrayList<>();
}
- // 浠嶴QL Server鏌ヨ鎵ц浜轰俊鎭�
- List<Map<String, Object>> assigneeList = legacyTransferSyncMapper.selectAssigneesByDispatchOrdID(dispatchOrdID);
+ // 灏哠tring杞崲涓篖ong锛岄伩鍏嶆暟鎹簱绫诲瀷涓嶅尮閰嶅鑷寸殑鎬ц兘闂
+ Long dispatchOrdIdLong;
+ try {
+ dispatchOrdIdLong = Long.valueOf(dispatchOrdID);
+ } catch (NumberFormatException e) {
+ log.error("璋冨害鍗旾D鏍煎紡涓嶆纭�: {}", dispatchOrdID, e);
+ return new ArrayList<>();
+ }
+
+ // 浠嶴QL Server鏌ヨ鎵ц浜轰俊鎭紙浣跨敤Long绫诲瀷锛屽尮閰岯IGINT瀛楁锛�
+ List<Map<String, Object>> assigneeList = legacyTransferSyncMapper.selectAssigneesByDispatchOrdID(dispatchOrdIdLong);
+ long queryTime = System.currentTimeMillis() - startTime;
+
+ // 璁板綍鎱㈡煡璇紙瓒呰繃500ms锛�
+ if (queryTime > 500) {
+ log.warn("鏌ヨ鎵ц浜轰俊鎭�楁椂杩囬暱: {}ms, 璋冨害鍗旾D: {}, 寤鸿鍦� DispatchOrd_Entourage 琛ㄧ殑 DispatchOrdIDDt 瀛楁涓婂垱寤虹储寮�",
+ queryTime, dispatchOrdID);
+ }
// 杞崲涓篢askCreateVO.AssigneeInfo瀵硅薄
List<TaskCreateVO.AssigneeInfo> assignees = new ArrayList<>();
if (assigneeList != null && !assigneeList.isEmpty()) {
for (Map<String, Object> assigneeMap : assigneeList) {
String entourageOAId = getStringValue(assigneeMap, "EntourageOAId");
- String entourageState = getStringValue(assigneeMap, "EntourageState");
+ String entourageState = getStringValue(assigneeMap, "EntourageID");
if (StringUtils.isNotEmpty(entourageOAId)) {
try {
@@ -589,7 +730,7 @@
if (sysUser != null) {
TaskCreateVO.AssigneeInfo assigneeInfo = new TaskCreateVO.AssigneeInfo();
assigneeInfo.setUserId(sysUser.getUserId()); // 浣跨敤绯荤粺鐢ㄦ埛ID
- assigneeInfo.setUserName(sysUser.getUserName());
+ assigneeInfo.setUserName(sysUser.getNickName());
// 鏍规嵁EntourageState纭畾瑙掕壊绫诲瀷
// 1,2 鍙告満锛�3,5 鍖荤敓锛�4,6 鎶ゅ+
if ("1".equals(entourageState) || "2".equals(entourageState)) {
@@ -613,10 +754,11 @@
}
}
- log.info("鏌ヨ鍒皗}涓墽琛屼汉锛岃皟搴﹀崟ID: {}", assignees.size(), dispatchOrdID);
+ log.debug("鏌ヨ鍒皗}涓墽琛屼汉锛岃皟搴﹀崟ID: {}, 鑰楁椂: {}ms", assignees.size(), dispatchOrdID, System.currentTimeMillis() - startTime);
return assignees;
} catch (Exception e) {
- log.error("鏌ヨ鎵ц浜轰俊鎭紓甯革紝璋冨害鍗旾D: {}", dispatchOrdID, e);
+ long totalTime = System.currentTimeMillis() - startTime;
+ log.error("鏌ヨ鎵ц浜轰俊鎭紓甯革紝璋冨害鍗旾D: {}, 鑰楁椂: {}ms", dispatchOrdID, totalTime, e);
return new ArrayList<>(); // 杩斿洖绌哄垪琛ㄨ�屼笉鏄痭ull
}
}
@@ -767,4 +909,72 @@
return false;
}
}
-}
\ No newline at end of file
+
+ private void notifyTransferOrderByWechat(Long taskId,
+ String serviceOrdID,
+ String dispatchOrdID,
+ String serviceOrdNo,
+ Date serviceOrdCcTime,
+ SysDept dept,
+ Map<String, Object> order) {
+ try {
+ // 鑾峰彇閫氱煡鎺ユ敹浜哄垪琛�
+ List<SysUser> receivers = getWechatNotifyUsers(dispatchOrdID, dept);
+ if (receivers == null || receivers.isEmpty()) {
+ log.info("鏃х郴缁熷悓姝ヨ浆杩愬崟鏃犲彲鐢ㄥ井淇℃帴鏀朵汉锛宼askId={}", taskId);
+ return;
+ }
+
+ // 鎻愬彇鎺ユ敹浜� ID 鍒楄〃
+ List<Long> userIds = new ArrayList<>();
+ for (SysUser user : receivers) {
+ if (user != null && user.getUserId() != null) {
+ userIds.add(user.getUserId());
+ }
+ }
+
+ // 璋冪敤缁熶竴鐨勫井淇¢�氱煡鏈嶅姟
+ int successCount = wechatTaskNotifyService.sendTaskNotifyMessage(taskId, userIds);
+ log.info("鏃х郴缁熷悓姝ヨ浆杩愬崟寰俊閫氱煡鍙戦�佸畬鎴愶紝taskId={}, 鎴愬姛={}", taskId, successCount);
+ } catch (Exception e) {
+ log.error("notifyTransferOrderByWechat鍙戠敓寮傚父, serviceOrdID={}, dispatchOrdID={}", serviceOrdID, dispatchOrdID, e);
+ }
+ }
+
+ private List<SysUser> getWechatNotifyUsers(String dispatchOrdID, SysDept dept) {
+ try {
+ List<SysUser> result = new ArrayList<>();
+
+ List<TaskCreateVO.AssigneeInfo> assignees = queryAssignees(dispatchOrdID);
+ if (assignees != null && !assignees.isEmpty()) {
+ for (TaskCreateVO.AssigneeInfo assigneeInfo : assignees) {
+ if (assigneeInfo == null || assigneeInfo.getUserId() == null) {
+ continue;
+ }
+ SysUser user = sysUserService.selectUserById(assigneeInfo.getUserId());
+ if (user != null && StringUtils.isNotEmpty(user.getOpenId())) {
+ result.add(user);
+ }
+ }
+ }
+
+ if (!result.isEmpty()) {
+ return result;
+ }
+
+ if (dept == null || StringUtils.isEmpty(dept.getPhone())) {
+ return result;
+ }
+
+ SysUser leader = sysUserService.selectUserByPhonenumber(dept.getPhone());
+ if (leader != null && StringUtils.isNotEmpty(leader.getOpenId())) {
+ result.add(leader);
+ }
+
+ return result;
+ } catch (Exception e) {
+ log.error("鑾峰彇鏃х郴缁熷悓姝ヨ浆杩愬崟寰俊閫氱煡鎺ユ敹浜哄け璐�, dispatchOrdID={}", dispatchOrdID, e);
+ return new ArrayList<>();
+ }
+ }
+}
--
Gitblit v1.9.1