From c459808efab29dc1b8439fbb90556bdb16f4c88b Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期三, 01 四月 2026 22:40:59 +0800
Subject: [PATCH] feat: 优化支付时显示任务ID
---
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/LegacyTransferSyncServiceImpl.java | 184 +++++++++++++++++++++++++++------------------
1 files changed, 110 insertions(+), 74 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 55d2337..78d9033 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,7 @@
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.LongUtil;
-import com.ruoyi.common.utils.MapValueUtils;
-import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.*;
import com.ruoyi.system.domain.SysTaskEmergency;
import com.ruoyi.system.domain.VehicleInfo;
import com.ruoyi.system.domain.enums.TaskStatus;
@@ -79,7 +76,7 @@
*/
@Override
public int syncLegacyTransferOrders(int daysAgo) {
- log.info("寮�濮嬪悓姝}澶╁墠鐨勬棫绯荤粺杞繍鍗曟暟鎹�", daysAgo);
+// log.info("寮�濮嬪悓姝}澶╁墠鐨勬棫绯荤粺杞繍鍗曟暟鎹�", daysAgo);
try {
// 鍙傛暟楠岃瘉
@@ -91,64 +88,81 @@
// 璁$畻鏃ユ湡鑼冨洿
Date startDate = DateUtils.addDays(new Date(), -daysAgo);
String startDateStr = DateUtils.parseDateToStr("yyyy-MM-dd", startDate);
+ String endDateStr = DateUtils.parseDateToStr("yyyy-MM-dd", new Date());
- // 浠嶴QL Server鏌ヨ杞繍鍗曟暟鎹�
- List<Map<String, Object>> transferOrders = legacyTransferSyncMapper.selectTransferOrders(startDateStr);
-
- if (transferOrders == null || transferOrders.isEmpty()) {
- log.info("鏈煡璇㈠埌{}澶╁墠鐨勮浆杩愬崟鏁版嵁", daysAgo);
- return 0;
- }
-
- log.info("鏌ヨ鍒皗}鏉¤浆杩愬崟鏁版嵁锛屽紑濮嬪悓姝�...", transferOrders.size());
-
+ // Keyset娓告爣鍒嗛〉浠� SQL Server 鎷夊彇杞繍鍗曟暟鎹紝姣忛〉 10 鏉★紝璧颁富閿储寮曞交搴曡閬胯秴鏃�
+ final int PAGE_SIZE = 10;
+ long lastId = 0L; // 娓告爣锛氳褰曚笂涓�椤垫渶鍚庝竴鏉$殑 ServiceOrdID锛岄娆′紶 0
int successCount = 0;
- int totalCount = transferOrders.size();
- int processedCount = 0;
-
- for (Map<String, Object> order : transferOrders) {
- processedCount++;
- try {
- Long serviceOrdID = MapValueUtils.getLongValue(order, "ServiceOrdID");
- Long dispatchOrdID = MapValueUtils.getLongValue(order, "DispatchOrdID");
-
- // 妫�鏌ュ弬鏁版湁鏁堟��
- if (serviceOrdID==null || serviceOrdID<=0) {
- 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();
+
+ while (true) {
+ List<Map<String, Object>> transferOrders = legacyTransferSyncMapper.selectTransferOrders(startDateStr, endDateStr, lastId, PAGE_SIZE);
+
+ if (transferOrders == null || transferOrders.isEmpty()) {
break;
- } catch (Exception e) {
- log.error("鍚屾鍗曚釜杞繍鍗曞け璐�: ServiceOrdID={}, DispatchOrdID={}",
- MapValueUtils.getStringValue(order, "ServiceOrdID"),
- MapValueUtils.getStringValue(order, "DispatchOrdID"), e);
+ }
+
+ int totalCount = transferOrders.size();
+ int processedCount = 0;
+
+ for (Map<String, Object> order : transferOrders) {
+ processedCount++;
+ try {
+ Long serviceOrdID = MapValueUtils.getLongValue(order, "ServiceOrdID");
+ Long dispatchOrdID = MapValueUtils.getLongValue(order, "DispatchOrdID");
+
+ // 妫�鏌ュ弬鏁版湁鏁堟��
+ if (serviceOrdID == null || serviceOrdID <= 0) {
+ 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={}",
+ 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("鍚屾瀹屾垚锛屽叡澶勭悊{}鏉¤浆杩愬崟锛屾垚鍔熷悓姝}鏉¤浆杩愬崟鏁版嵁", totalCount, successCount);
+
+// log.info("鍚屾瀹屾垚锛屾垚鍔熷悓姝}鏉¤浆杩愬崟鏁版嵁", successCount);
return successCount;
} catch (Exception e) {
@@ -348,13 +362,13 @@
createTaskVo.setDeptId(deptId);
- int result = sysTaskService.insertTask(createTaskVo,serviceOrdID,dispatchOrdID, serviceOrdNo, taskCreatorId,createUserName, deptId, ServiceOrd_CC_Time, ServiceOrd_CC_Time);
+ Long taskId = 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);
+ 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);
}
@@ -461,9 +475,9 @@
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 = MapValueUtils.getStringValue(order, "ServiceOrdType");
@@ -471,8 +485,21 @@
createTaskVo.setTaskTypeId(serviceOrdType);
}
- // 璁剧疆鍖哄煙绫诲瀷
- String serviceOrdAreaType = MapValueUtils.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 = MapValueUtils.getLongValue(order, "ServiceOrdUserID");
@@ -494,11 +521,20 @@
}
}
createTaskVo.setPatient(patientInfo);
- //1000鍏噷锛屾彁鍙栨暟瀛�
+ //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));
+ }
}
@@ -588,7 +624,7 @@
String carLicense = legacyTransferSyncMapper.selectCarLicenseByCarID(carID);
if (StringUtils.isNotEmpty(carLicense)) {
// 鏍规嵁杞︾墝鍙锋煡璇㈡柊绯荤粺涓殑杞﹁締ID
- log.info("杞繍浠诲姟,ServiceOrdID:{},杞﹁締杞︾墝:{}",serviceOrdID,carLicense);
+// log.info("杞繍浠诲姟,ServiceOrdID:{},杞﹁締杞︾墝:{}",serviceOrdID,carLicense);
// log.debug("杞﹁締杞︾墝鍙�: {}", carLicense);
// 棣栧厛灏濊瘯閫氳繃VehicleInfoMapper鏌ヨ杞﹁締淇℃伅
@@ -609,7 +645,7 @@
List<Long> vehicleIds = new ArrayList<>();
vehicleIds.add(vehicleInfo.getVehicleId());
createTaskVo.setVehicleIds(vehicleIds);
- log.debug("杞繍浠诲姟,ServiceOrdID:{} 閫氳繃杞︾墝鍙锋壘鍒拌溅杈嗕俊鎭�: vehicle_id={}, vehicle_no={}",serviceOrdID, vehicleInfo.getVehicleId(), vehicleInfo.getVehicleNo());
+// log.debug("杞繍浠诲姟,ServiceOrdID:{} 閫氳繃杞︾墝鍙锋壘鍒拌溅杈嗕俊鎭�: vehicle_id={}, vehicle_no={}",serviceOrdID, vehicleInfo.getVehicleId(), vehicleInfo.getVehicleNo());
} else {
log.warn("杞繍浠诲姟,ServiceOrdID:{} 鏈壘鍒板搴旂殑杞﹁締淇℃伅: car_id={}, vehicle_no={}",serviceOrdID, carID, carLicense);
}
@@ -622,7 +658,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);
}
@@ -819,7 +855,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);
--
Gitblit v1.9.1