| | |
| | | package com.ruoyi.system.service.impl; |
| | | |
| | | import com.ruoyi.common.config.LegacySystemConfig; |
| | | import com.ruoyi.common.utils.LongUtil; |
| | | import com.ruoyi.system.domain.SysTask; |
| | | import com.ruoyi.system.domain.SysTaskEmergency; |
| | | import com.ruoyi.system.domain.enums.TaskStatus; |
| | | import com.ruoyi.system.mapper.SysTaskMapper; |
| | | import com.ruoyi.system.service.IDispatchOrdService; |
| | | import com.ruoyi.system.service.IServiceOrderService; |
| | | import com.ruoyi.system.service.ISysDictDataService; |
| | | import com.ruoyi.system.service.ISysTaskEmergencyService; |
| | | import com.ruoyi.system.service.ITaskStatusPushService; |
| | | import com.ruoyi.system.utils.TaskStatusPushConverter; |
| | |
| | | |
| | | @Autowired |
| | | private IDispatchOrdService dispatchOrdService; |
| | | |
| | | @Autowired |
| | | private IServiceOrderService serviceOrderService; |
| | | |
| | | @Autowired |
| | | private ISysDictDataService sysDictDataService; |
| | | |
| | | /** |
| | | * 将单个任务状态推送到旧系统 |
| | |
| | | // currentLegacyStatus, TaskStatusPushConverter.getLegacyStatusDescription(currentLegacyStatus)); |
| | | return true; // 返回true,因为这不算失败,只是不需要推送 |
| | | } |
| | | |
| | | if(newTaskStatus.equals(TaskStatus.CANCELLED)){ |
| | | if(LongUtil.isNotEmpty(emergency.getLegacyServiceOrdId()) ) { |
| | | log.info("取消转运任务: {}", emergency.getLegacyServiceOrdId()); |
| | | cancelTask(emergency.getLegacyServiceOrdId(), emergency.getCancelReason(), emergency.getCancelBy()); |
| | | } |
| | | if(LongUtil.isNotEmpty(emergency.getLegacyDispatchOrdId())){ |
| | | log.info("取消调度单: {}", emergency.getLegacyDispatchOrdId()); |
| | | cancelDispatch(emergency.getLegacyDispatchOrdId(), emergency.getCancelReason(), emergency.getCancelBy()); |
| | | } |
| | | } |
| | | // 推送状态到旧系统 |
| | | boolean result = updateLegacyTaskStatus(emergency.getLegacyDispatchOrdId(), targetStatusCode); |
| | | |
| | |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | |
| | | private void cancelDispatch(Long legacyDispatchOrdId, String cancelReason, String cancelReasonText) { |
| | | dispatchOrdService.cancelDispatchOrd(legacyDispatchOrdId, Integer.parseInt(cancelReason), cancelReasonText); |
| | | } |
| | | |
| | | /** |
| | | * 批量推送任务状态到旧系统 |
| | | * 使用分页查询,确保所有符合条件的任务都能被推送 |
| | |
| | | return 0; |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | private void cancelTask(Long serviceOrderId, String cancelReason, String cancelBy){ |
| | | // 取消任务,更新SQL Server中的ServiceOrder表 |
| | | try { |
| | | if (LongUtil.isEmpty(serviceOrderId)) { |
| | | log.warn("ServiceOrderID为空,无法取消任务"); |
| | | return; |
| | | } |
| | | |
| | | // 解析取消原因ID |
| | | Integer cancelReasonId = null; |
| | | String cancelReasonText = ""; |
| | | |
| | | if (cancelReason != null && !cancelReason.isEmpty()) { |
| | | try { |
| | | log.info("取消原因 cancelReason:{},取消人:{}", cancelReason, cancelBy); |
| | | cancelReasonId = Integer.parseInt(cancelReason); |
| | | // 从数据字典查询取消原因文本 |
| | | String dictLabel = sysDictDataService.selectDictLabel("task_cancel_reason", cancelReason); |
| | | if (dictLabel != null && !dictLabel.isEmpty()) { |
| | | cancelReasonText = "[取消操作:" + (cancelBy != null ? cancelBy : "系统") + "] " + dictLabel; |
| | | } else { |
| | | cancelReasonText = "[取消操作:" + (cancelBy != null ? cancelBy : "系统") + "]"; |
| | | } |
| | | } catch (NumberFormatException e) { |
| | | log.error("取消原因ID格式错误: {}", cancelReason,e); |
| | | cancelReasonText = "[取消操作:" + (cancelBy != null ? cancelBy : "系统") + "] " + cancelReason; |
| | | } |
| | | } else { |
| | | cancelReasonText = "[取消操作:" + (cancelBy != null ? cancelBy : "系统") + "]"; |
| | | } |
| | | |
| | | // 调用Service更新ServiceOrder表 |
| | | int rows = serviceOrderService.updateServiceOrderCancelInfo(serviceOrderId, cancelReasonId, cancelReasonText); |
| | | |
| | | if (rows > 0) { |
| | | log.info("成功更新旧系统ServiceOrder取消信息,ServiceOrdID: {}, 取消原因ID: {}, 取消原因文本: {}", |
| | | serviceOrderId, cancelReasonId, cancelReasonText); |
| | | } else { |
| | | log.warn("更新旧系统ServiceOrder取消信息失败,未找到对应订单,ServiceOrdID: {}", serviceOrderId); |
| | | } |
| | | |
| | | } catch (Exception e) { |
| | | log.error("更新旧系统ServiceOrder取消信息异常,ServiceOrdID: {}", serviceOrderId, e); |
| | | } |
| | | } |
| | | /** |
| | | * 更新旧系统调度单状态(直接操作SQL Server数据库) |
| | | * |
| | |
| | | try { |
| | | // 直接通过Service调用Mapper更新SQL Server数据库 |
| | | int rows = dispatchOrdService.updateDispatchOrdState(dispatchOrdId, statusCode); |
| | | // log.debug("更新旧系统状态,DispatchOrdID: {}, StateInt: {}", dispatchOrdId, statusCode); |
| | | log.debug("更新旧系统状态,DispatchOrdID: {}, statusCode: {}", dispatchOrdId, statusCode); |
| | | if (rows > 0) { |
| | | // log.debug("更新旧系统状态成功,DispatchOrdID: {}, StateInt: {}", |
| | | // dispatchOrdId, statusCode); |
| | | log.debug("更新旧系统状态成功,DispatchOrdID: {}, statusCode: {}", |
| | | dispatchOrdId, statusCode); |
| | | return true; |
| | | } else { |
| | | // log.warn("更新旧系统状态失败,未找到对应调度单,DispatchOrdID: {}", dispatchOrdId); |