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/TaskEmergencySyncServiceImpl.java | 174 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 174 insertions(+), 0 deletions(-)
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TaskEmergencySyncServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TaskEmergencySyncServiceImpl.java
new file mode 100644
index 0000000..91b1425
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TaskEmergencySyncServiceImpl.java
@@ -0,0 +1,174 @@
+package com.ruoyi.system.service.impl;
+
+import com.ruoyi.common.config.LegacySystemConfig;
+import com.ruoyi.common.utils.LongUtil;
+import com.ruoyi.common.utils.MapValueUtils;
+import com.ruoyi.system.domain.SysTask;
+import com.ruoyi.system.domain.SysTaskEmergency;
+import com.ruoyi.system.event.TaskServiceOrderSyncEvent;
+import com.ruoyi.system.mapper.LegacyTransferSyncMapper;
+import com.ruoyi.system.mapper.SysTaskMapper;
+import com.ruoyi.system.service.ISysTaskEmergencyService;
+import com.ruoyi.system.service.ISysTaskService;
+import com.ruoyi.system.service.TaskEmergencySyncService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationEventPublisher;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+@Slf4j
+@Service
+public class TaskEmergencySyncServiceImpl implements TaskEmergencySyncService {
+
+ @Autowired
+ private ApplicationEventPublisher eventPublisher;
+
+
+
+ @Autowired
+ private ISysTaskService sysTaskService;
+
+ @Autowired
+ private SysTaskMapper sysTaskMapper;
+
+ @Autowired
+ private ISysTaskEmergencyService sysTaskEmergencyService;
+
+ @Autowired
+ private LegacySystemConfig legacyConfig;
+
+ @Autowired
+ private LegacyTransferSyncMapper legacyTransferSyncMapper;
+
+ @Autowired
+ private TaskSyncUtilService taskSyncUtilService;
+
+ private Map<String,Object> getLegacyByServiceOrdId(Long serviceOrdId) {
+ List<Map<String, Object>> result = legacyTransferSyncMapper.selectByServiceOrdId(serviceOrdId);
+ if(!CollectionUtils.isEmpty(result)){
+ return result.get(0);
+ }else{
+ return null;
+ }
+ }
+
+ /**
+ * 鍚屾鎬ユ晳杞繍浠诲姟鍒版棫绯荤粺
+ */
+ public Long syncEmergencyTaskToLegacy(SysTask task,SysTaskEmergency emergency,Boolean isNew) {
+ Long taskId=task.getTaskId();
+ Long serviceOrderId = emergency.getLegacyServiceOrdId();
+ if (!legacyConfig.isEnabled()) {
+ log.info("鏃х郴缁熷悓姝ュ凡绂佺敤锛岃烦杩囦换鍔D: {}", taskId);
+ return null;
+ }
+
+ try {
+ // 鏇存柊鍚屾鐘舵�佷负鍚屾涓�
+ emergency.setSyncStatus(1);
+ sysTaskEmergencyService.updateSysTaskEmergency(emergency);
+
+ // 鏋勫缓璇锋眰鍙傛暟
+ Map<String, Object> params = taskSyncUtilService.buildSyncParams(task, emergency);
+ String updateUrl=legacyConfig.getEmergencyCreateUrl();
+ if(!isNew){
+ updateUrl=legacyConfig.getEmergencyUpdateUrl();
+ params.put("ServiceOrdID",serviceOrderId);
+ }
+ // 鍙戦�丠TTP璇锋眰
+ String response = taskSyncUtilService.sendHttpPost(updateUrl, params);
+
+ // 瑙f瀽鍝嶅簲
+ Long serviceOrdId = taskSyncUtilService.parseResponse(response);
+
+ if (LongUtil.isNotEmpty(serviceOrderId)) {
+ // 鍚屾鎴愬姛锛屾洿鏂拌褰�
+ emergency.setLegacyServiceOrdId(serviceOrdId);
+ emergency.setSyncStatus(2); // 鍚屾鎴愬姛
+ emergency.setSyncTime(new Date());
+ emergency.setSyncErrorMsg(null);
+ Map<String, Object> legacy = getLegacyByServiceOrdId(serviceOrdId);
+ String serviceOrdNo = MapValueUtils.getStringValue(legacy, "ServiceOrdNo");
+ if(serviceOrdNo!=null) {
+ emergency.setLegacyServiceOrdNo(serviceOrdNo);
+ }
+ String serviceOrdClass = MapValueUtils.getStringValue(legacy, "ServiceOrdClass");
+ if(serviceOrdClass!=null) {
+ emergency.setLegacyServiceOrdClass(serviceOrdClass);
+ }
+ Date serviceCCTime = MapValueUtils.getDateValue(legacy, "ServiceOrd_CC_Time");
+ if(serviceCCTime!=null) {
+ emergency.setLegacyServiceNsTime(serviceCCTime);
+ }
+ sysTaskEmergencyService.updateSysTaskEmergency(emergency);
+
+ // 鏇存柊浠诲姟涓昏〃鍚屾鏍囪
+ task.setLegacySynced(1);
+ sysTaskMapper.updateSysTask(task);
+
+ eventPublisher.publishEvent(new TaskServiceOrderSyncEvent(this, taskId, task.getTaskCode(), serviceOrdId,!isNew));
+// log.info("浠诲姟鍚屾鎴愬姛锛屼换鍔D: {}, ServiceOrdID: {}", taskId, serviceOrdId);
+ return serviceOrdId;
+ } else {
+ // 鍚屾澶辫触
+ emergency.setSyncStatus(3); // 鍚屾澶辫触
+ emergency.setSyncTime(new Date());
+ emergency.setSyncErrorMsg("鏃х郴缁熻繑鍥炴棤鏁堢殑ServiceOrdID: " + response);
+ sysTaskEmergencyService.updateSysTaskEmergency(emergency);
+
+ log.error("浠诲姟鍚屾澶辫触锛屼换鍔D: {}, 鍝嶅簲: {}", taskId, response);
+ return null;
+ }
+
+ } catch (Exception e) {
+ log.error("鍚屾浠诲姟鍒版棫绯荤粺寮傚父锛屼换鍔D: {}", taskId, e);
+
+ // 鏇存柊鍚屾鐘舵�佷负澶辫触
+ try {
+ emergency = sysTaskEmergencyService.selectSysTaskEmergencyByTaskId(taskId);
+ if (emergency != null) {
+ emergency.setSyncStatus(3); // 鍚屾澶辫触
+ emergency.setSyncTime(new Date());
+ emergency.setSyncErrorMsg("鍚屾寮傚父: " + e.getMessage());
+ sysTaskEmergencyService.updateSysTaskEmergency(emergency);
+ }
+ } catch (Exception ex) {
+ log.error("鏇存柊鍚屾鐘舵�佸け璐�", ex);
+ }
+
+ return null;
+ }
+ }
+ @Override
+ public Long syncEmergency(Long taskId) {
+ SysTask task=sysTaskService.selectSysTaskByTaskId(taskId);
+ SysTaskEmergency emergency = sysTaskEmergencyService.selectSysTaskEmergencyByTaskId(taskId);
+ if(emergency!=null){
+ Long dispatchOrderId=emergency.getLegacyDispatchOrdId();
+ Long serviceOrderId = emergency.getLegacyServiceOrdId();
+ if(LongUtil.isEmpty(dispatchOrderId) && LongUtil.isEmpty(serviceOrderId)){
+ //dispatch涓虹┖涓�
+ return syncNewEmergency(task,emergency);
+ }else if(LongUtil.isNotEmpty(serviceOrderId) && LongUtil.isEmpty(dispatchOrderId)){
+ //serviceId涓嶄负绌猴紝dispatchOrdId涓虹┖
+ return syncUpdateEmergency(task,emergency);
+ }
+ }
+ return 0L;
+ }
+
+
+ private Long syncNewEmergency(SysTask task,SysTaskEmergency emergency) {
+ return this.syncEmergencyTaskToLegacy(task,emergency,true);
+ }
+
+
+ private Long syncUpdateEmergency(SysTask task,SysTaskEmergency emergency) {
+ return this.syncEmergencyTaskToLegacy(task,emergency,false);
+ }
+}
--
Gitblit v1.9.1