From 6b29bd596f8b48485d3506bfba4a1e0ea6c7df99 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期二, 14 四月 2026 22:45:40 +0800
Subject: [PATCH] feat: 优化统计及告急处理
---
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/LegacyTransferSyncServiceImpl.java | 797 ++++++++++++++++++++++++++++++++++----------------------
1 files changed, 479 insertions(+), 318 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 c2b98b1..6c11568 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
@@ -2,10 +2,11 @@
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysUser;
-import com.ruoyi.common.utils.DateUtils;
-import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.*;
+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;
@@ -17,6 +18,10 @@
import com.ruoyi.system.mapper.VehicleInfoMapper;
import com.ruoyi.system.service.ISysUserService;
import com.ruoyi.system.service.IWechatTaskNotifyService;
+import com.ruoyi.system.service.INotifyTaskService;
+import com.ruoyi.system.service.INotifyDispatchService;
+import com.ruoyi.system.domain.NotifyTask;
+import com.ruoyi.system.utils.TaskStatusConverter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
@@ -27,8 +32,10 @@
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
/**
* 鏃х郴缁熻浆杩愬崟鍚屾Service涓氬姟灞傚鐞�
@@ -65,92 +72,147 @@
@Autowired
private IWechatTaskNotifyService wechatTaskNotifyService;
+ @Autowired
+ private INotifyTaskService notifyTaskService;
+
+ @Autowired
+ private INotifyDispatchService notifyDispatchService;
+
/**
* 鍚屾鎸囧畾鏃ユ湡鑼冨洿鐨勬棫绯荤粺杞繍鍗曞埌鏂扮郴缁�
- *
- * @param daysAgo 澶氬皯澶╁墠鐨勬暟鎹紙濡�7琛ㄧず7澶╁墠鐨勬暟鎹級
+ * 浼樺寲锛氬皢澶氬ぉ鑼冨洿鎷嗗垎涓洪�愬ぉ寰幆锛屾瘡娆′粎鏌ヨ1澶╂暟鎹紝閬垮厤澶ф暟鎹噺瀵艰嚧SQL Server瓒呮椂
+ *
+ * @param daysAgo 澶氬皯澶╁墠鐨勬暟鎹紙濡�7琛ㄧず鍚屾鏈�杩�7澶╃殑鏁版嵁锛�
* @return 鎴愬姛鍚屾鐨勮浆杩愬崟鏁伴噺
*/
@Override
public int syncLegacyTransferOrders(int daysAgo) {
- log.info("寮�濮嬪悓姝}澶╁墠鐨勬棫绯荤粺杞繍鍗曟暟鎹�", daysAgo);
-
try {
// 鍙傛暟楠岃瘉
if (daysAgo <= 0) {
log.error("澶╂暟鍙傛暟蹇呴』澶т簬0");
return 0;
}
-
- // 璁$畻鏃ユ湡鑼冨洿
- Date startDate = DateUtils.addDays(new Date(), -daysAgo);
- String startDateStr = DateUtils.parseDateToStr("yyyy-MM-dd", startDate);
-
- // 浠嶴QL Server鏌ヨ杞繍鍗曟暟鎹�
- List<Map<String, Object>> transferOrders = legacyTransferSyncMapper.selectTransferOrders(startDateStr);
-
- if (transferOrders == null || transferOrders.isEmpty()) {
- log.info("鏈煡璇㈠埌{}澶╁墠鐨勮浆杩愬崟鏁版嵁", daysAgo);
- return 0;
+
+// log.info("[杞繍鍗曞悓姝 寮�濮嬪悓姝ワ紝鑼冨洿: 鏈�杩憑}澶�", daysAgo);
+ int totalSuccessCount = 0;
+ int totalDays = daysAgo + 1;
+
+ // 鎸夊ぉ鎷嗗垎锛屾瘡娆″彧鍚屾1澶╃殑鏁版嵁锛岄伩鍏嶅ぇ鑼冨洿鏌ヨ瓒呮椂
+ for (int i = daysAgo; i >= 0; i--) {
+ Date dayStart = DateUtils.addDays(new Date(), -i);
+ String dayStartStr = DateUtils.parseDateToStr("yyyy-MM-dd", dayStart) + " 00:00:00";
+ String dayEndStr = DateUtils.parseDateToStr("yyyy-MM-dd", dayStart) + " 23:59:59";
+
+ int dayIndex = totalDays - i;
+// log.info("[杞繍鍗曞悓姝 澶勭悊澶� {}/{}: {}", dayIndex, totalDays, dayStartStr);
+ int daySuccessCount = syncSingleDayOrders(dayStartStr, dayEndStr);
+ totalSuccessCount += daySuccessCount;
+// log.info("[杞繍鍗曞悓姝 {} 瀹屾垚锛屾柊澧炲悓姝�: {}鏉★紝绱: {}鏉�", dayStartStr, daySuccessCount, totalSuccessCount);
}
-
- log.info("鏌ヨ鍒皗}鏉¤浆杩愬崟鏁版嵁锛屽紑濮嬪悓姝�...", transferOrders.size());
-
- int successCount = 0;
- int totalCount = transferOrders.size();
- int processedCount = 0;
-
- for (Map<String, Object> order : transferOrders) {
- processedCount++;
- try {
- String serviceOrdID = getStringValue(order, "ServiceOrdID");
- String dispatchOrdID = getStringValue(order, "DispatchOrdID");
-
- // 妫�鏌ュ弬鏁版湁鏁堟��
- if (StringUtils.isEmpty(serviceOrdID)) {
- log.warn("绗瑊}鏉℃暟鎹湇鍔″崟ID涓虹┖锛岃烦杩囧鐞�", processedCount);
- continue;
- }
-
- log.debug("姝e湪澶勭悊绗瑊}/{}鏉¤浆杩愬崟: ServiceOrdID={}, DispatchOrdID={}",
- processedCount, totalCount, serviceOrdID, dispatchOrdID);
-
- // 妫�鏌ユ槸鍚﹀凡鍚屾
- if (isTransferOrderSynced(serviceOrdID, dispatchOrdID)) {
- log.debug("杞繍鍗曞凡鍚屾锛岃烦杩�: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
- //杩涜鏇存柊鎿嶄綔
- updateTransferOrder(serviceOrdID, dispatchOrdID, order);
- continue;
- }
-
- // 鍚屾鍗曚釜杞繍鍗�
- boolean success = syncSingleTransferOrder(serviceOrdID, dispatchOrdID, order);
- if (success) {
- successCount++;
- }
-
- // 鎺у埗鍚屾棰戠巼锛岄伩鍏嶈姹傝繃蹇�
- Thread.sleep(100);
- } catch (InterruptedException ie) {
- log.warn("鍚屾浠诲姟琚腑鏂�");
- Thread.currentThread().interrupt();
- break;
- } catch (Exception e) {
- log.error("鍚屾鍗曚釜杞繍鍗曞け璐�: ServiceOrdID={}, DispatchOrdID={}",
- getStringValue(order, "ServiceOrdID"),
- getStringValue(order, "DispatchOrdID"), e);
- }
- }
-
- log.info("鍚屾瀹屾垚锛屽叡澶勭悊{}鏉¤浆杩愬崟锛屾垚鍔熷悓姝}鏉¤浆杩愬崟鏁版嵁", totalCount, successCount);
- return successCount;
-
+
+// log.info("[杞繍鍗曞悓姝 鍏ㄩ儴瀹屾垚锛屽叡鏂板鍚屾 {}鏉�", totalSuccessCount);
+ return totalSuccessCount;
+
} catch (Exception e) {
log.error("鍚屾{}澶╁墠鐨勬棫绯荤粺杞繍鍗曟暟鎹紓甯�", daysAgo, e);
return 0;
}
+ }
+
+ /**
+ * 鍚屾鍗曞ぉ鐨勮浆杩愬崟鏁版嵁锛圞eyset娓告爣鍒嗛〉锛�
+ *
+ * @param startDateStr 寮�濮嬫棩鏈熷瓧绗︿覆锛坹yyy-MM-dd锛�
+ * @param endDateStr 缁撴潫鏃ユ湡瀛楃涓诧紙yyyy-MM-dd锛�
+ * @return 鎴愬姛鍚屾鐨勮浆杩愬崟鏁伴噺
+ */
+ private int syncSingleDayOrders(String startDateStr, String endDateStr) {
+ final int PAGE_SIZE = 5;
+ long lastId = 0L;
+ int successCount = 0;
+ int pageNum = 0;
+ int totalProcessed = 0;
+
+ try {
+ while (true) {
+ List<Map<String, Object>> transferOrders = legacyTransferSyncMapper.selectTransferOrders(startDateStr, endDateStr, lastId, PAGE_SIZE);
+
+ if (transferOrders == null || transferOrders.isEmpty()) {
+ break;
+ }
+
+ pageNum++;
+ int totalCount = transferOrders.size();
+ int processedCount = 0;
+
+// log.info("[杞繍鍗曞悓姝 {} 绗瑊}椤碉紝鑾峰彇{}.鏉℃暟鎹紝lastId={}", startDateStr, pageNum, totalCount, lastId);
+
+ for (Map<String, Object> order : transferOrders) {
+ processedCount++;
+ totalProcessed++;
+ try {
+ Long serviceOrdID = MapValueUtils.getLongValue(order, "ServiceOrdID");
+ Long dispatchOrdID = MapValueUtils.getLongValue(order, "DispatchOrdID");
+
+ if (serviceOrdID == null || serviceOrdID <= 0) {
+ log.warn("绗瑊}鏉℃暟鎹湇鍔″崟ID涓虹┖锛岃烦杩囧鐞�", processedCount);
+ continue;
+ }
+
+ // 妫�鏌ユ槸鍚﹀凡鍚屾
+ if (isTransferOrderSynced(serviceOrdID, dispatchOrdID)) {
+ log.debug("[杞繍鍗曞悓姝 宸插瓨鍦紝鎵ц鏇存柊: ServiceOrdID={}", serviceOrdID);
+ updateTransferOrder(serviceOrdID, dispatchOrdID, order);
+ continue;
+ }
+
+ // 鍚屾鍗曚釜杞繍鍗�
+ log.info("[杞繍鍗曞悓姝 鏂板鍚屾: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
+ boolean success = syncSingleTransferOrder(serviceOrdID, dispatchOrdID, order);
+ if (success) {
+ successCount++;
+ log.info("[杞繍鍗曞悓姝 鍚屾鎴愬姛: ServiceOrdID={}, 褰撳ぉ鏂板绱: {}", serviceOrdID, successCount);
+ } else {
+ log.warn("[杞繍鍗曞悓姝 鍚屾澶辫触: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
+ }
+
+ // 鎺у埗鍚屾棰戠巼锛岄伩鍏嶈姹傝繃蹇�
+ Thread.sleep(100);
+ } catch (InterruptedException ie) {
+ log.warn("鍚屾浠诲姟琚腑鏂�");
+ Thread.currentThread().interrupt();
+ return successCount;
+ } catch (Exception e) {
+ log.error("鍚屾鍗曚釜杞繍鍗曞け璐�: ServiceOrdID={}, DispatchOrdID={}",
+ MapValueUtils.getStringValue(order, "ServiceOrdID"),
+ MapValueUtils.getStringValue(order, "DispatchOrdID"), e);
+ }
+ }
+
+ // 鏇存柊娓告爣涓烘湰椤垫渶鍚庝竴鏉$殑 ServiceOrdID
+ Map<String, Object> lastOrder = transferOrders.get(transferOrders.size() - 1);
+ Long lastServiceOrdID = MapValueUtils.getLongValue(lastOrder, "ServiceOrdID");
+ if (lastServiceOrdID != null && lastServiceOrdID > 0) {
+ lastId = lastServiceOrdID;
+ } else {
+ break;
+ }
+
+ // 鏈〉鏈弧涓�椤碉紝璇存槑宸叉棤鏇村鏁版嵁
+ if (totalCount < PAGE_SIZE) {
+ break;
+ }
+ }
+
+// log.info("[杞繍鍗曞悓姝 {} 鍒嗛〉瀹屾垚锛屽叡澶勭悊: {}鏉★紝鏂板鍚屾: {}鏉�", startDateStr, totalProcessed, successCount);
+ } catch (Exception e) {
+ log.error("鍚屾鍗曞ぉ杞繍鍗曟暟鎹紓甯�: date={}", startDateStr, e);
+ }
+
+ return successCount;
}
/**
@@ -161,31 +223,35 @@
* @return 鏄惁鍚屾鎴愬姛
*/
@Override
- public boolean syncSingleTransferOrder(String serviceOrdID, String dispatchOrdID) {
- log.info("寮�濮嬪悓姝ュ崟涓浆杩愬崟: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
+ public boolean syncSingleTransferOrder(Long serviceOrdID, Long dispatchOrdID) {
+// log.info("寮�濮嬪悓姝ュ崟涓浆杩愬崟: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
try {
// 妫�鏌ュ弬鏁版湁鏁堟��
- if (StringUtils.isEmpty(serviceOrdID)) {
+ if (serviceOrdID == null || serviceOrdID <= 0) {
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);
+// 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);
@@ -196,55 +262,83 @@
}
}
- private boolean updateTransferOrder(String serviceOrdID, String dispatchOrdID, Map<String, Object> order){
- log.info("寮�濮嬪悓姝ュ崟涓浆杩愬崟: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
+ /**
+ * 鏇存柊鍗曚釜杞繍鍗�
+ * @param serviceOrdID
+ * @param dispatchOrdID
+ * @param order
+ * @return
+ */
+ private boolean updateTransferOrder(Long serviceOrdID, Long dispatchOrdID, Map<String, Object> order){
+// log.info("寮�濮嬪悓姝ュ崟涓浆杩愬崟: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
String sysTaskCode="";
try {
- SysTaskEmergency emergency=sysTaskEmergencyMapper.selectByLegacyServiceOrdId(Long.parseLong(serviceOrdID));
+ SysTaskEmergency emergency=sysTaskEmergencyMapper.selectByLegacyServiceOrdId(serviceOrdID);
if(emergency.getNeedResync().equals(1)){
log.info("鏂扮郴缁熼渶瑕佸悓姝ュ埌鏃х郴缁熼偅閲岋紝鎵�浠ヤ笉瑕佸悓姝ユ棫鏁版嵁鍒版柊绯荤粺,serviceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
return false;
}
// 鏋勯�燭askCreateVO瀵硅薄
TaskCreateVO createTaskVo = buildCreateTaskVo(serviceOrdID, dispatchOrdID, order);
-
- sysTaskCode = createTaskVo.getTaskCode();
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() : "鏈煡");
+// 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");
+ Date ServiceOrd_CC_Time= MapValueUtils.getDateValue(order, "ServiceOrd_CC_Time");
// 璋冪敤sysTaskService鍒涘缓浠诲姟
- String serviceOrdClass = getStringValue(order,"ServiceOrdClass");
- String serviceOrdNo = getStringValue(order,"ServiceOrdNo");
+ String serviceOrdClass = MapValueUtils.getStringValue(order,"ServiceOrdClass");
+ String serviceOrdNo = MapValueUtils.getStringValue(order,"ServiceOrdNo");
- Integer oauserId=getIntegerValue(order,"ServiceOrd_NS_ID");
+ Integer oauserId=MapValueUtils.getIntegerValue(order,"ServiceOrd_CC_ID");
+ if(oauserId==null){
+ oauserId=MapValueUtils.getIntegerValue(order,"ServiceOrd_NS_ID");
+ }
+ if(oauserId==null || oauserId==0) {
+ log.error("鍒涘缓浠诲姟鏃讹紝鑾峰彇鍒涘缓浜轰俊鎭け璐ワ紝serviceOrdID={}, DispatchOrdID={} ServiceOrd_NS_ID={},ServiceOrd_CC_ID={}", serviceOrdID, dispatchOrdID, MapValueUtils.getIntegerValue(order, "ServiceOrd_NS_ID"), MapValueUtils.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();
+ if(deptId==null){
+ log.error("鍒涘缓浠诲姟鏃讹紝鑾峰彇閮ㄩ棬淇℃伅澶辫触锛宻erviceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
+ return false;
+ }
+ createTaskVo.setDeptId(deptId);
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);
+// log.info("杞繍鍗曞悓姝ユ垚鍔�: ServiceOrdID={}, DispatchOrdID={}, 鍒涘缓鐨勪换鍔D={}", serviceOrdID, dispatchOrdID, result);
try {
- notifyTransferOrderByWechat((long) result, serviceOrdID, dispatchOrdID, serviceOrdNo, ServiceOrd_CC_Time, dept, order);
+ // 鐩存帴浣跨敤鏂规硶澶撮儴宸叉煡璇㈢殑 emergency 鑾峰彇 taskId
+ Long taskId = emergency.getTaskId();
+ if (taskId != null) {
+ notifyTransferOrderByWechat(taskId, serviceOrdID, dispatchOrdID, serviceOrdNo, ServiceOrd_CC_Time, dept, order);
+ } else {
+ log.warn("鏇存柊鍚庢壘涓嶅埌taskId锛岃烦杩囬�氱煡: ServiceOrdID={}", serviceOrdID);
+ }
} catch (Exception e) {
log.error("杞繍鍗曞悓姝ユ垚鍔熷悗鍙戦�佸井淇¢�氱煡澶辫触: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID, e);
}
@@ -268,46 +362,63 @@
* @param order 杞繍鍗曡缁嗕俊鎭�
* @return 鏄惁鍚屾鎴愬姛
*/
- private boolean syncSingleTransferOrder(String serviceOrdID, String dispatchOrdID, Map<String, Object> order) {
- log.info("寮�濮嬪悓姝ュ崟涓浆杩愬崟: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
+ private boolean syncSingleTransferOrder(Long serviceOrdID, Long 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;
}
-
+ 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() : "鏈煡");
+// 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");
+ Date ServiceOrd_CC_Time= MapValueUtils.getDateValue(order, "ServiceOrd_CC_Time");
// 璋冪敤sysTaskService鍒涘缓浠诲姟
- String serviceOrdClass = getStringValue(order,"ServiceOrdClass");
- String serviceOrdNo = getStringValue(order,"ServiceOrdNo");
+ String serviceOrdClass = MapValueUtils.getStringValue(order,"ServiceOrdClass");
+ String serviceOrdNo = MapValueUtils.getStringValue(order,"ServiceOrdNo");
- Integer oauserId=getIntegerValue(order,"ServiceOrd_NS_ID");
+ /**
+ * 鍒涘缓浜篒D
+ */
+ Integer oauserId=MapValueUtils.getIntegerValue(order,"ServiceOrd_CC_ID");
+ if(oauserId==null || oauserId==0) {
+ oauserId=MapValueUtils.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, MapValueUtils.getIntegerValue(order, "ServiceOrd_CC_ID"), MapValueUtils.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();
+ if(deptId==null){
+ log.error("鍒涘缓浠诲姟鏃讹紝鑾峰彇閮ㄩ棬淇℃伅澶辫触锛宻erviceOrdID={}, DispatchOrdID={} ServiceOrdClass:{}", serviceOrdID, dispatchOrdID, serviceOrdClass);
+ return false;
+ }
+ createTaskVo.setDeptId(deptId);
- 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);
+ Long taskId = sysTaskService.insertTask(createTaskVo,serviceOrdID,dispatchOrdID, serviceOrdNo, taskCreatorId,createUserName, deptId, ServiceOrd_CC_Time, ServiceOrd_CC_Time);
+
+ if (taskId != null && taskId > 0) {
+// log.info("杞繍鍗曞悓姝ユ垚鍔�: ServiceOrdID={}, DispatchOrdID={}, 鍒涘缓鐨勪换鍔D={}", serviceOrdID, dispatchOrdID, taskId);
try {
- notifyTransferOrderByWechat((long) result, serviceOrdID, dispatchOrdID, serviceOrdNo, ServiceOrd_CC_Time, dept, order);
+ notifyTransferOrderByWechat(taskId, serviceOrdID, dispatchOrdID, serviceOrdNo, ServiceOrd_CC_Time, dept, order);
} catch (Exception e) {
log.error("杞繍鍗曞悓姝ユ垚鍔熷悗鍙戦�佸井淇¢�氱煡澶辫触: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID, e);
}
@@ -332,10 +443,10 @@
* @return 鏄惁宸插悓姝�
*/
@Override
- public boolean isTransferOrderSynced(String serviceOrdID, String dispatchOrdID) {
+ public boolean isTransferOrderSynced(Long serviceOrdID, Long dispatchOrdID) {
try {
// 妫�鏌ュ弬鏁版湁鏁堟��
- if (StringUtils.isEmpty(serviceOrdID)) {
+ if (LongUtil.isEmpty(serviceOrdID)) {
log.warn("鏈嶅姟鍗旾D涓嶈兘涓虹┖");
return false;
}
@@ -344,7 +455,7 @@
// 鏉′欢锛歭egacy_service_ord_id = serviceOrdID 鎴� legacy_dispatch_ord_id = dispatchOrdID
try {
- SysTaskEmergency emergency = sysTaskEmergencyMapper.selectByLegacyServiceOrdId(Long.valueOf(serviceOrdID));
+ SysTaskEmergency emergency = sysTaskEmergencyMapper.selectByLegacyServiceOrdId(serviceOrdID);
if (emergency != null) {
return true;
}
@@ -352,9 +463,9 @@
log.warn("鏈嶅姟鍗旾D涓嶆槸鏈夋晥鏁板瓧: {}", serviceOrdID);
}
- if (StringUtils.isNotEmpty(dispatchOrdID)) {
+ if (LongUtil.isNotEmpty(dispatchOrdID)) {
try {
- SysTaskEmergency emergency = sysTaskEmergencyMapper.selectByLegacyDispatchOrdId(Long.valueOf(dispatchOrdID));
+ SysTaskEmergency emergency = sysTaskEmergencyMapper.selectByLegacyDispatchOrdId(dispatchOrdID);
if (emergency != null) {
return true;
}
@@ -379,6 +490,8 @@
String ServiceOrdNo_Str=String.format("%03d", intServiceNo);
return serviceOrdClass+ServiceOrd_CC_Time_Str+"-"+ServiceOrdNo_Str;
}
+
+
/**
* 鏋勯�燭askCreateVO瀵硅薄鐢ㄤ簬鍒涘缓浠诲姟
*
@@ -388,8 +501,8 @@
* @return TaskCreateVO瀵硅薄
*/
@Override
- public TaskCreateVO buildCreateTaskVo(String serviceOrdID, String dispatchOrdID, Map<String, Object> order) {
- log.info("鏋勯�燭askCreateVO: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
+ public TaskCreateVO buildCreateTaskVo(Long serviceOrdID, Long dispatchOrdID, Map<String, Object> order) {
+// log.info("鏋勯�燭askCreateVO: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
try {
// 妫�鏌ュ弬鏁版湁鏁堟��
@@ -398,45 +511,58 @@
return null;
}
- if (StringUtils.isEmpty(serviceOrdID)) {
+ if (LongUtil.isEmpty(serviceOrdID)) {
log.error("鏈嶅姟鍗旾D涓嶈兘涓虹┖");
return null;
}
- String serviceOrdClass = getStringValue(order, "ServiceOrdClass");
- //TODO
+ String serviceOrdClass = MapValueUtils.getStringValue(order, "ServiceOrdClass");
+
TaskCreateVO createTaskVo = new TaskCreateVO();
- String serviceOrdCode=this.getServiceOrdCode(getDateValue(order, "ServiceOrd_CC_Time"),serviceOrdClass,getStringValue(order, "ServiceOrdNo"));
+ String serviceOrdCode=this.getServiceOrdCode(MapValueUtils.getDateValue(order, "ServiceOrd_CC_Time"),serviceOrdClass,MapValueUtils.getStringValue(order, "ServiceOrdNo"));
createTaskVo.setTaskCode(serviceOrdCode);
- log.info("鏋勯�燭askCreateVO: ServiceOrdID={}, DispatchOrdID={},taskCode:{}", serviceOrdID, dispatchOrdID,serviceOrdCode);
+// log.info("鏋勯�燭askCreateVO: ServiceOrdID={}, DispatchOrdID={},taskCode:{}", serviceOrdID, dispatchOrdID,serviceOrdCode);
// 璁剧疆鍩烘湰淇℃伅
createTaskVo.setTaskType("EMERGENCY_TRANSFER"); // 鎬ユ晳杞繍浠诲姟
// 璁剧疆鍗曟嵁绫诲瀷鍜屼换鍔$被鍨婭D锛堜粠鏃х郴缁熷瓧娈垫槧灏勶級
-
- if (StringUtils.isNotEmpty(serviceOrdClass)) {
- createTaskVo.setDocumentTypeId(serviceOrdClass);
+ String ServiceOrdAreaType = MapValueUtils.getStringValue(order, "ServiceOrdAreaType");
+ if (StringUtils.isNotEmpty(ServiceOrdAreaType)) {
+ createTaskVo.setDocumentTypeId(ServiceOrdAreaType);
}
- String serviceOrdType = getStringValue(order, "ServiceOrdType");
+ String serviceOrdType = MapValueUtils.getStringValue(order, "ServiceOrdType");
if (StringUtils.isNotEmpty(serviceOrdType)) {
createTaskVo.setTaskTypeId(serviceOrdType);
}
- // 璁剧疆鍖哄煙绫诲瀷
- String serviceOrdAreaType = getStringValue(order, "ServiceOrdAreaType");
+
+
+ String serviceOrdVIP = MapValueUtils.getStringValue(order, "ServiceOrdVIP");
+ if(serviceOrdVIP!=null){
+ createTaskVo.setServiceOrdVIP(serviceOrdVIP);
+ }else{
+ createTaskVo.setServiceOrdVIP("0");
+ }
+
+ Integer FromHQ_is = MapValueUtils.getIntegerValue(order, "FromHQ_is");
+ if(IntegerUtil.isNotEmpty(FromHQ_is)){
+ createTaskVo.setFromHQ2_is("1");
+ }else{
+ createTaskVo.setFromHQ2_is("0");
+ }
// 璁剧疆鐢ㄦ埛ID
- Long serviceOrdUserID = getLongValue(order, "ServiceOrdUserID");
+ Long serviceOrdUserID = MapValueUtils.getLongValue(order, "ServiceOrdUserID");
// 璁剧疆鎮h�呬俊鎭�
TaskCreateVO.PatientInfo patientInfo = new TaskCreateVO.PatientInfo();
- patientInfo.setName(getStringValue(order, "ServiceOrdPtName"));
- patientInfo.setPhone(getStringValue(order, "ServiceOrdCoPhone"));
- patientInfo.setIdCard(getStringValue(order, "ServiceOrdPtIDCard"));
- patientInfo.setCondition(getStringValue(order, "ServiceOrdPtCondition"));
- patientInfo.setContact(getStringValue(order, "ServiceOrdCoName"));
+ patientInfo.setName(MapValueUtils.getStringValue(order, "ServiceOrdPtName"));
+ patientInfo.setPhone(MapValueUtils.getStringValue(order, "ServiceOrdCoPhone"));
+ patientInfo.setIdCard(MapValueUtils.getStringValue(order, "ServiceOrdPtIDCard"));
+ patientInfo.setCondition(MapValueUtils.getStringValue(order, "ServiceOrdPtCondition"));
+ patientInfo.setContact(MapValueUtils.getStringValue(order, "ServiceOrdCoName"));
- String serviceOrdPtSex = getStringValue(order, "ServiceOrdPtSex");
+ String serviceOrdPtSex = MapValueUtils.getStringValue(order, "ServiceOrdPtSex");
if(serviceOrdPtSex!=null){
if(serviceOrdPtSex.equals("鐢�")){
patientInfo.setGender("male");
@@ -445,18 +571,27 @@
}
}
createTaskVo.setPatient(patientInfo);
- //1000鍏噷锛屾彁鍙栨暟瀛�
- String ServiceOrdTraDistance=getStringValue(order, "ServiceOrdTraDistance");
+ //1000鍏噷锛屾彁鍙栨暟瀛楋紙鏀寔灏忔暟锛�
+ String ServiceOrdTraDistance=MapValueUtils.getStringValue(order, "ServiceOrdTraDistance");
if(ServiceOrdTraDistance!=null){
- ServiceOrdTraDistance=ServiceOrdTraDistance.replaceAll("[^0-9]", "");
- createTaskVo.setDistance(new BigDecimal(ServiceOrdTraDistance));
+ // 淇濈暀鏁板瓧鍜屽皬鏁扮偣锛岀Щ闄ゅ叾浠栧瓧绗�
+ ServiceOrdTraDistance=ServiceOrdTraDistance.replaceAll("[^0-9.]", "");
+ // 澶勭悊澶氫釜灏忔暟鐐圭殑鎯呭喌锛屽彧淇濈暀绗竴涓�
+ int firstDotIndex = ServiceOrdTraDistance.indexOf('.');
+ if (firstDotIndex != -1) {
+ ServiceOrdTraDistance = ServiceOrdTraDistance.substring(0, firstDotIndex + 1)
+ + ServiceOrdTraDistance.substring(firstDotIndex + 1).replace(".", "");
+ }
+ if (!ServiceOrdTraDistance.isEmpty() && !ServiceOrdTraDistance.equals(".")) {
+ createTaskVo.setTransferDistance(new BigDecimal(ServiceOrdTraDistance));
+ }
}
// 璁剧疆杞嚭鍖婚櫌淇℃伅
TaskCreateVO.HospitalInfo hospitalOutInfo = new TaskCreateVO.HospitalInfo();
- Long hospitalOutId = getLongValue(order, "ServiceOrdPtOutHospID");
+ Long hospitalOutId = MapValueUtils.getLongValue(order, "ServiceOrdPtOutHospID");
hospitalOutInfo.setId(hospitalOutId);
if (hospitalOutId != null) {
String hospitalOutName = legacyTransferSyncMapper.selectHospitalNameByHospID(hospitalOutId.toString());
@@ -464,13 +599,13 @@
hospitalOutInfo.setName(hospitalOutName);
}
}
- String ServiceOrdTraVia=getStringValue(order, "ServiceOrdTraVia");
+ String ServiceOrdTraVia=MapValueUtils.getStringValue(order, "ServiceOrdTraVia");
if(ServiceOrdTraVia!=null){
hospitalOutInfo.setAddress(ServiceOrdTraVia);
}
- String hospitalOutDeptId = getStringValue(order, "ServiceOrdPtServicesID");
+ String hospitalOutDeptId = MapValueUtils.getStringValue(order, "ServiceOrdPtServicesID");
hospitalOutInfo.setDepartmentId(hospitalOutDeptId);
if (StringUtils.isNotEmpty(hospitalOutDeptId)) {
String hospitalOutDeptName = legacyTransferSyncMapper.selectDepartmentNameByDeptID(hospitalOutDeptId);
@@ -479,7 +614,7 @@
}
}
//杞嚭搴婁綅
- String serviceOrdPtServices=getStringValue(order, "ServiceOrdPtServices");
+ String serviceOrdPtServices=MapValueUtils.getStringValue(order, "ServiceOrdPtServices");
if(serviceOrdPtServices!= null){
hospitalOutInfo.setBedNumber(serviceOrdPtServices);
}
@@ -487,7 +622,7 @@
// 璁剧疆杞叆鍖婚櫌淇℃伅
TaskCreateVO.HospitalInfo hospitalInInfo = new TaskCreateVO.HospitalInfo();
- Long hospitalInId = getLongValue(order, "ServiceOrdPtInHospID");
+ Long hospitalInId = MapValueUtils.getLongValue(order, "ServiceOrdPtInHospID");
hospitalInInfo.setId(hospitalInId);
if (hospitalInId != null) {
String hospitalInName = legacyTransferSyncMapper.selectHospitalNameByHospID(hospitalInId.toString());
@@ -495,18 +630,18 @@
hospitalInInfo.setName(hospitalInName);
}
}
- String DispatchOrdTraEnd = getStringValue(order, "DispatchOrdTraEnd");
- if(DispatchOrdTraEnd!= null){
- hospitalInInfo.setAddress(DispatchOrdTraEnd);
+ String serviceOrdTraEnd = MapValueUtils.getStringValue(order, "ServiceOrdTraEnd");
+ if(serviceOrdTraEnd!= null){
+ hospitalInInfo.setAddress(serviceOrdTraEnd);
}
//杞叆搴婁綅
- String serviceOrdPtInServices =getStringValue(order, "ServiceOrdPtInServices");
+ String serviceOrdPtInServices =MapValueUtils.getStringValue(order, "ServiceOrdPtInServices");
if(serviceOrdPtInServices!= null){
hospitalInInfo.setBedNumber(serviceOrdPtInServices);
}
- String hospitalInDeptId = getStringValue(order, "ServiceOrdPtInServicesID");
+ String hospitalInDeptId = MapValueUtils.getStringValue(order, "ServiceOrdPtInServicesID");
hospitalInInfo.setDepartmentId(hospitalInDeptId);
if (StringUtils.isNotEmpty(hospitalInDeptId)) {
String hospitalInDeptName = legacyTransferSyncMapper.selectDepartmentNameByDeptID(hospitalInDeptId);
@@ -517,28 +652,30 @@
createTaskVo.setHospitalIn(hospitalInInfo);
// 璁剧疆鍦板潃淇℃伅
- createTaskVo.setDepartureAddress(getStringValue(order, "ServiceOrdTraStreet"));
- createTaskVo.setDestinationAddress(getStringValue(order, "ServiceOrdTraEnd"));
+ createTaskVo.setDepartureAddress(MapValueUtils.getStringValue(order, "ServiceOrdTraStreet"));
+ createTaskVo.setDestinationAddress(MapValueUtils.getStringValue(order, "ServiceOrdTraEnd"));
// 璁剧疆浠锋牸鍜岃窛绂讳俊鎭�
- createTaskVo.setPrice(getBigDecimalValue(order, "ServiceOrdTraTxnPrice"));
+ createTaskVo.setPrice(MapValueUtils.getBigDecimalValue(order, "ServiceOrdTraTxnPrice"));
// 璺濈淇℃伅闇�瑕佷粠鍏朵粬瀛楁璁$畻鎴栬幏鍙�
-
- // 璁剧疆鎵ц浜轰俊鎭�
- List<TaskCreateVO.AssigneeInfo> assignees = queryAssignees(dispatchOrdID);
- createTaskVo.setAssignees(assignees);
- if(!assignees.isEmpty()){
- createTaskVo.setAssigneeId(assignees.get(0).getUserId());
+
+ if(LongUtil.isNotEmpty(dispatchOrdID)) {
+ // 璁剧疆鎵ц浜轰俊鎭�
+ 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");
+ String carID = MapValueUtils.getStringValue(order, "DispatchOrdCarID");
if (StringUtils.isNotEmpty(carID)) {
String carLicense = legacyTransferSyncMapper.selectCarLicenseByCarID(carID);
if (StringUtils.isNotEmpty(carLicense)) {
// 鏍规嵁杞︾墝鍙锋煡璇㈡柊绯荤粺涓殑杞﹁締ID
- log.debug("杞﹁締杞︾墝鍙�: {}", carLicense);
+// log.info("杞繍浠诲姟,ServiceOrdID:{},杞﹁締杞︾墝:{}",serviceOrdID,carLicense);
+// log.debug("杞﹁締杞︾墝鍙�: {}", carLicense);
// 棣栧厛灏濊瘯閫氳繃VehicleInfoMapper鏌ヨ杞﹁締淇℃伅
try {
@@ -550,7 +687,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);
@@ -558,9 +695,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) {
@@ -571,7 +708,7 @@
List<Long> vehicleIds = new ArrayList<>();
vehicleIds.add(vehicleInfo.getVehicleId());
createTaskVo.setVehicleIds(vehicleIds);
- log.debug("閫氳繃杞︾墝鍙锋壘鍒拌溅杈嗕俊鎭�: vehicle_id={}, vehicle_no={}", vehicleInfo.getVehicleId(), vehicleInfo.getVehicleNo());
+// log.debug("閫氳繃杞︾墝鍙锋壘鍒拌溅杈嗕俊鎭�: vehicle_id={}, vehicle_no={}", vehicleInfo.getVehicleId(), vehicleInfo.getVehicleNo());
} else {
log.warn("鏈壘鍒板搴旂殑杞﹁締淇℃伅: vehicle_no={}", carLicense);
}
@@ -580,29 +717,30 @@
}
+
// 璁剧疆鍏朵粬淇℃伅
createTaskVo.setTaskDescription("浠庢棫绯荤粺鍚屾鐨勮浆杩愬崟");
// 璁剧疆澶囨敞淇℃伅
String remark = "鏈嶅姟鍗旾D: " + serviceOrdID + ", 璋冨害鍗旾D: " + dispatchOrdID;
- String serviceOrdCoTies = getStringValue(order, "ServiceOrdCoTies");
+ String serviceOrdCoTies = MapValueUtils.getStringValue(order, "ServiceOrdCoTies");
if (StringUtils.isNotEmpty(serviceOrdCoTies)) {
remark += ", 鑱旂郴浜哄叧绯�: " + serviceOrdCoTies;
}
createTaskVo.setRemark(remark);
// 璁剧疆璁″垝寮�濮嬫椂闂�
- Date plannedStartTime = getDateValue(order, "ServiceOrdApptDate");
+ Date plannedStartTime = MapValueUtils.getDateValue(order, "ServiceOrdApptDate");
if (plannedStartTime != null) {
createTaskVo.setPlannedStartTime(plannedStartTime);
}
- Date actualStartTime = getDateValue(order, "DispatchOrdActualDate");
+ Date actualStartTime = MapValueUtils.getDateValue(order, "DispatchOrdActualDate");
if (actualStartTime != null) {
createTaskVo.setActualStartTime(actualStartTime);
}
- Date actualEndTime = getDateValue(order, "DispatchOrdReturnDate");
+ Date actualEndTime = MapValueUtils.getDateValue(order, "DispatchOrdReturnDate");
if (actualEndTime != null) {
createTaskVo.setActualEndTime(actualEndTime);
}
@@ -610,7 +748,7 @@
// 璁剧疆鍒涘缓鏃堕棿 寮�鍗曟棩鏈�
- Date createTime = getDateValue(order, "ServiceOrd_CC_Time");
+ Date createTime = MapValueUtils.getDateValue(order, "ServiceOrd_CC_Time");
if (createTime != null) {
createTaskVo.setCreateTime(createTime);
}
@@ -629,8 +767,37 @@
}
createTaskVo.setDiseaseIds(diseaseIds);
}
-
- log.info("TaskCreateVO鏋勯�犲畬鎴�: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
+
+ Integer dispatchOrdStatus = MapValueUtils.getIntegerValue(order, "DispatchOrdStatus");
+ TaskStatus status= TaskStatusConverter.convertFromLegacyStatus(dispatchOrdStatus);
+ if(status!=null) {
+ createTaskVo.setTaskStatus(status.getCode());
+ }
+
+ // 璁剧疆鏃х郴缁熷悓姝ュ瓧娈�
+ String dispatchOrdNo = MapValueUtils.getStringValue(order, "DispatchOrdNo");
+ if(dispatchOrdNo!=null) {
+ createTaskVo.setLegacyDispatchOrdNo(dispatchOrdNo);
+ }
+ Date ccTime=MapValueUtils.getDateValue(order, "ServiceOrd_CC_Time");
+
+ if(ccTime!=null) {
+ createTaskVo.setLegacyServiceNsTime(ccTime);
+ }
+ Date nsTime=MapValueUtils.getDateValue(order, "DispatchOrd_NS_Time");
+ if(nsTime!=null) {
+ createTaskVo.setLegacyDispatchNsTime(MapValueUtils.getDateValue(order, "DispatchOrd_NS_Time"));
+ }
+ String dispatchOrdClass=MapValueUtils.getStringValue(order, "DispatchOrdClass");
+ if(dispatchOrdClass!=null) {
+ createTaskVo.setLegacyDispatchOrdClass(dispatchOrdClass);
+ }
+
+// String serviceOrdClass=MapValueUtils.getStringValue(order, "ServiceOrdClass");
+ if(serviceOrdClass!=null) {
+ createTaskVo.setLegacyServiceOrdClass(serviceOrdClass);
+ }
+
return createTaskVo;
} catch (Exception e) {
@@ -645,23 +812,34 @@
* @param dispatchOrdID 璋冨害鍗旾D
* @return 鎵ц浜轰俊鎭垪琛�
*/
- private List<TaskCreateVO.AssigneeInfo> queryAssignees(String dispatchOrdID) {
+ private List<TaskCreateVO.AssigneeInfo> queryAssignees(Long dispatchOrdID) {
+ long startTime = System.currentTimeMillis();
try {
// 妫�鏌ュ弬鏁版湁鏁堟��
- if (StringUtils.isEmpty(dispatchOrdID)) {
+ if (LongUtil.isEmpty(dispatchOrdID)) {
log.warn("璋冨害鍗旾D涓嶈兘涓虹┖");
return new ArrayList<>();
}
- // 浠嶴QL Server鏌ヨ鎵ц浜轰俊鎭�
+ // 灏哠tring杞崲涓篖ong锛岄伩鍏嶆暟鎹簱绫诲瀷涓嶅尮閰嶅鑷寸殑鎬ц兘闂
+
+
+ // 浠嶴QL Server鏌ヨ鎵ц浜轰俊鎭紙浣跨敤Long绫诲瀷锛屽尮閰岯IGINT瀛楁锛�
List<Map<String, Object>> assigneeList = legacyTransferSyncMapper.selectAssigneesByDispatchOrdID(dispatchOrdID);
+ 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, "EntourageID");
+ String entourageOAId = MapValueUtils.getStringValue(assigneeMap, "EntourageOAId");
+ String entourageState = MapValueUtils.getStringValue(assigneeMap, "EntourageID");
if (StringUtils.isNotEmpty(entourageOAId)) {
try {
@@ -696,10 +874,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
}
}
@@ -710,10 +889,10 @@
* @param serviceOrdID 鏈嶅姟鍗旾D
* @return 鐥呮儏ID鍒楄〃
*/
- private String queryDiseaseIds(String serviceOrdID) {
+ private String queryDiseaseIds(Long serviceOrdID) {
try {
// 妫�鏌ュ弬鏁版湁鏁堟��
- if (StringUtils.isEmpty(serviceOrdID)) {
+ if (LongUtil.isEmpty(serviceOrdID) ) {
log.warn("鏈嶅姟鍗旾D涓嶈兘涓虹┖");
return null;
}
@@ -726,7 +905,7 @@
return String.join(",", diseaseIds);
}
- log.info("鏌ヨ鍒扮梾鎯呬俊鎭紝鏈嶅姟鍗旾D: {}, 鐥呮儏鏁伴噺: {}", serviceOrdID, diseaseIds != null ? diseaseIds.size() : 0);
+// log.info("鏌ヨ鍒扮梾鎯呬俊鎭紝鏈嶅姟鍗旾D: {}, 鐥呮儏鏁伴噺: {}", serviceOrdID, diseaseIds != null ? diseaseIds.size() : 0);
return null;
} catch (Exception e) {
log.error("鏌ヨ鐥呮儏淇℃伅寮傚父锛屾湇鍔″崟ID: {}", serviceOrdID, e);
@@ -734,160 +913,142 @@
}
}
- /**
- * 浠嶮ap涓幏鍙栧瓧绗︿覆鍊�
- *
- * @param map Map瀵硅薄
- * @param key 閿�
- * @return 瀛楃涓插��
- */
- private String getStringValue(Map<String, Object> map, String key) {
- Object value = map.get(key);
- return value != null ? value.toString() : null;
- }
-
- /**
- * 浠嶮ap涓幏鍙朆igDecimal鍊�
- *
- * @param map Map瀵硅薄
- * @param key 閿�
- * @return BigDecimal鍊�
- */
- private BigDecimal getBigDecimalValue(Map<String, Object> map, String key) {
- Object value = map.get(key);
- if (value == null) {
- return null;
- }
- if (value instanceof BigDecimal) {
- return (BigDecimal) value;
- }
- try {
- return new BigDecimal(value.toString());
- } catch (NumberFormatException e) {
- return null;
- }
- }
-
- /**
- * 浠嶮ap涓幏鍙朙ong鍊�
- *
- * @param map Map瀵硅薄
- * @param key 閿�
- * @return Long鍊�
- */
- private Long getLongValue(Map<String, Object> map, String key) {
- Object value = map.get(key);
- if (value == null) {
- return null;
- }
- if (value instanceof Long) {
- return (Long) value;
- }
- try {
- return Long.valueOf(value.toString());
- } catch (NumberFormatException e) {
- return null;
- }
- }
- private Integer getIntegerValue(Map<String, Object> map, String key) {
- Object value = map.get(key);
- if (value == null) {
- return null;
- }
- if (value instanceof Integer) {
- return (Integer) value;
- }
- try {
- return Integer.valueOf(value.toString());
- } catch (NumberFormatException e) {
- return null;
- }
- }
- /**
- * 浠嶮ap涓幏鍙朌ate鍊�
- *
- * @param map Map瀵硅薄
- * @param key 閿�
- * @return Date鍊�
- */
- private Date getDateValue(Map<String, Object> map, String key) {
- Object value = map.get(key);
- if (value == null) {
- return null;
- }
- if (value instanceof Date) {
- return (Date) value;
- }
- // 濡傛灉鏄瓧绗︿覆锛屽皾璇曡В鏋�
- if (value instanceof String) {
- try {
- return DateUtils.parseDate(value.toString());
- } catch (Exception e) {
- return null;
- }
- }
- return null;
- }
-
- /**
- * 楠岃瘉鏃ユ湡瀛楃涓叉牸寮忔槸鍚︽湁鏁�
- *
- * @param dateStr 鏃ユ湡瀛楃涓�
- * @param format 鏃ユ湡鏍煎紡
- * @return 鏄惁鏈夋晥
- */
- private boolean isValidDateFormat(String dateStr, String format) {
- if (StringUtils.isEmpty(dateStr)) {
- return false;
- }
-
- try {
- SimpleDateFormat sdf = new SimpleDateFormat(format);
- sdf.setLenient(false);
- sdf.parse(dateStr);
- return true;
- } catch (Exception e) {
- return false;
- }
- }
+
private void notifyTransferOrderByWechat(Long taskId,
- String serviceOrdID,
- String dispatchOrdID,
+ Long serviceOrdID,
+ Long 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);
+ // 1. 鑾峰彇鎵ц浜哄垪琛�
+ List<TaskCreateVO.AssigneeInfo> assignees = queryAssignees(dispatchOrdID);
+ if (assignees.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());
+ // 2. 鏌ヨ浠诲姟鑾峰彇showTaskCode
+ SysTask sysTask = sysTaskService.getTaskDetail(taskId);
+ String showTaskCode = sysTask != null ? sysTask.getShowTaskCode() : serviceOrdNo;
+
+ // 3. 鏋勫缓閫氱煡鍐呭
+ String notifyContent = buildLegacyNotifyContent(showTaskCode, serviceOrdCcTime, order);
+
+ // 4. 鏌ヨ璇askId宸叉湁鐨勯�氱煡璁板綍锛屾敹闆嗗凡瀛樺湪鐨剈serId闆嗗悎
+ List<NotifyTask> existingTasks = notifyTaskService.selectByTaskIdAndType(taskId, NotifyTask.NOTIFY_TYPE_TASK_ASSIGN);
+ Set<Long> existingUserIds = new HashSet<>();
+ List<NotifyTask> pendingTasks = new ArrayList<>();
+ if (existingTasks != null && !existingTasks.isEmpty()) {
+ for (NotifyTask t : existingTasks) {
+ existingUserIds.add(t.getUserId());
+ // 灏嗘湭瀹屾垚鐨勮褰曟敹闆嗙粰寰呭垎鍙戝垪琛�
+ if (!NotifyTask.STATUS_COMPLETED.equals(t.getStatus())) {
+ pendingTasks.add(t);
+ }
}
}
- // 璋冪敤缁熶竴鐨勫井淇¢�氱煡鏈嶅姟
- int successCount = wechatTaskNotifyService.sendTaskNotifyMessage(taskId, userIds);
- log.info("鏃х郴缁熷悓姝ヨ浆杩愬崟寰俊閫氱煡鍙戦�佸畬鎴愶紝taskId={}, 鎴愬姛={}", taskId, successCount);
+ // 5. 鍙鏂版墽琛屼汉鍒涘缓閫氱煡浠诲姟
+ List<NotifyTask> notifyTasks = new ArrayList<>(pendingTasks);
+ for (TaskCreateVO.AssigneeInfo assignee : assignees) {
+ if (assignee == null || assignee.getUserId() == null) {
+ continue;
+ }
+ // 璇ョ敤鎴峰凡鏈夐�氱煡璁板綍锛岃烦杩�
+ if (existingUserIds.contains(assignee.getUserId())) {
+// log.info("鐢ㄦ埛宸叉湁閫氱煡璁板綍锛岃烦杩囧垱寤猴紝taskId={}, userId={}", taskId, assignee.getUserId());
+ continue;
+ }
+
+ SysUser user = sysUserService.selectUserById(assignee.getUserId());
+ if (user == null) {
+ log.warn("鎵句笉鍒版墽琛屼汉鐢ㄦ埛淇℃伅锛寀serId={}", assignee.getUserId());
+ continue;
+ }
+
+ NotifyTask notifyTask = new NotifyTask();
+ notifyTask.setTaskId(taskId);
+ notifyTask.setTaskCode(showTaskCode);
+ notifyTask.setNotifyType(NotifyTask.NOTIFY_TYPE_TASK_ASSIGN);
+ notifyTask.setUserId(user.getUserId());
+ notifyTask.setUserName(user.getNickName());
+ notifyTask.setUserPhone(user.getPhonenumber());
+ notifyTask.setTitle("杞繍鍗曚换鍔℃淳鍗曢�氱煡");
+ notifyTask.setContent(notifyContent);
+ notifyTask.setCreateBy("绯荤粺鍚屾");
+
+ NotifyTask created = notifyTaskService.createNotifyTask(notifyTask);
+ if (created != null) {
+ notifyTasks.add(created);
+// log.info("鍒涘缓閫氱煡浠诲姟鎴愬姛锛宨d={}, userId={}", created.getId(), user.getUserId());
+ }
+ }
+
+ // 6. 鍒嗗彂閫氱煡浠诲姟
+ if (!notifyTasks.isEmpty()) {
+ int successCount = notifyDispatchService.dispatchNotifies(notifyTasks);
+// log.info("鏃х郴缁熷悓姝ヨ浆杩愬崟閫氱煡鍒嗗彂瀹屾垚锛宼askId={}, 鍒嗗彂鏁伴噺={}, 鎴愬姛鏁伴噺={}",
+// taskId, notifyTasks.size(), successCount);
+ }
+// else {
+// log.info("鏃х郴缁熷悓姝ヨ浆杩愬崟鏃犻渶鏂板閫氱煡锛宼askId={}", taskId);
+// }
+
+ // 5. 鍚屾椂淇濈暀鍘熸湁鐨勫井淇¢�氱煡鏈嶅姟锛堝吋瀹癸級
+ // List<Long> userIds = new ArrayList<>();
+ // for (TaskCreateVO.AssigneeInfo assignee : assignees) {
+ // if (assignee != null && assignee.getUserId() != null) {
+ // userIds.add(assignee.getUserId());
+ // }
+ // }
+ // if (!userIds.isEmpty()) {
+ // int wxCount = wechatTaskNotifyService.sendTaskNotifyMessage(taskId, userIds);
+ // log.info("鏃х郴缁熷悓姝ヨ浆杩愬崟寰俊閫氱煡鍙戦�佸畬鎴愶紝taskId={}, 鎴愬姛={}", taskId, wxCount);
+ // }
+
} catch (Exception e) {
log.error("notifyTransferOrderByWechat鍙戠敓寮傚父, serviceOrdID={}, dispatchOrdID={}", serviceOrdID, dispatchOrdID, e);
}
}
- private List<SysUser> getWechatNotifyUsers(String dispatchOrdID, SysDept dept) {
+ /**
+ * 鏋勫缓鏃х郴缁熷悓姝ヨ浆杩愬崟鐨勯�氱煡鍐呭
+ */
+ private String buildLegacyNotifyContent(String serviceOrdNo, Date serviceOrdCcTime, Map<String, Object> order) {
+ StringBuilder content = new StringBuilder();
+ content.append("鎮ㄦ湁鏂扮殑杞繍浠诲姟锛屼换鍔″崟鍙�:").append(serviceOrdNo);
+
+ // 鍑哄彂鏃堕棿
+ if (serviceOrdCcTime != null) {
+ SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+ content.append("锛屽嚭鍙戞椂闂�:").append(df.format(serviceOrdCcTime));
+ }
+
+ // 鍑哄彂鍦�
+ String departure = MapValueUtils.getStringValue(order, "ServiceOrdTraVia");
+ if (StringUtils.isNotEmpty(departure)) {
+ content.append("锛屽嚭鍙戝湴:").append(departure);
+ }
+
+ // 鐩殑鍦�
+ String destination = MapValueUtils.getStringValue(order, "ServiceOrdTraEnd");
+ if (StringUtils.isNotEmpty(destination)) {
+ content.append("锛岀洰鐨勫湴:").append(destination);
+ }
+
+ content.append("锛岃鍙婃椂澶勭悊銆�");
+ return content.toString();
+ }
+
+ private List<SysUser> getWechatNotifyUsers(Long dispatchOrdID, SysDept dept) {
try {
List<SysUser> result = new ArrayList<>();
List<TaskCreateVO.AssigneeInfo> assignees = queryAssignees(dispatchOrdID);
- if (assignees != null && !assignees.isEmpty()) {
+ if (!assignees.isEmpty()) {
for (TaskCreateVO.AssigneeInfo assigneeInfo : assignees) {
if (assigneeInfo == null || assigneeInfo.getUserId() == null) {
continue;
--
Gitblit v1.9.1