| | |
| | | public class TaskStatusPushConverter { |
| | | |
| | | private static final Logger log = LoggerFactory.getLogger(TaskStatusPushConverter.class); |
| | | |
| | | /** 服务单状态 |
| | | * 1 咨询单 |
| | | * 2 未调度 |
| | | * 3 已调度 |
| | | * 4 取消单 |
| | | */ |
| | | /** |
| | | * 1 1 - 完全未确认 |
| | | * 2 2 - 部分已确认 |
| | | * 3 未出车 |
| | | * 4 3 - 已出车(去接患者途中) |
| | | * 5 已出车(等待患者) |
| | | * 6 4 - 已出车(服务中) |
| | | * 7 5 - 已送达(回程中) |
| | | * 8 已返回 |
| | | * 9 跑空单,已返回 |
| | | * 10 取消 |
| | | * 0 0 - 新调度单(未下发) |
| | | * 11 已提交,等待审核 |
| | | * 12 审核完成 |
| | | * 13 审核不通过 |
| | | * 14 已驻点 |
| | | */ |
| | | /** |
| | | * 将新系统TaskStatus转换为旧系统状态码 |
| | | * |
| | |
| | | return 8; |
| | | case CANCELLED: // 已取消 |
| | | return 10; |
| | | case ARRIVED: // 已到达 |
| | | return 6; |
| | | case PENDING: // 待处理 - 不同步 |
| | | case ARRIVED: // 已到达 - 不同步 |
| | | default: |
| | | log.debug("新系统状态不需要同步到旧系统: {}", taskStatus.getInfo()); |
| | | // log.debug("新系统状态不需要同步到旧系统: {}", taskStatus.getInfo()); |
| | | return null; |
| | | } |
| | | } |
| | |
| | | */ |
| | | public static boolean shouldUpdateLegacyStatus(Integer newStatusCode, Integer oldStatusCode) { |
| | | if (newStatusCode == null || oldStatusCode == null) { |
| | | log.warn("状态码为空,跳过更新,新状态码: {}, 旧状态码: {}", newStatusCode, oldStatusCode); |
| | | // log.warn("状态码为空,跳过更新,新状态码: {}, 旧状态码: {}", newStatusCode, oldStatusCode); |
| | | return false; |
| | | } |
| | | |
| | | // 防止状态倒退:旧系统状态 >= 新系统要推送的状态时,不更新 |
| | | // 原因:可能是旧系统已经处理了更新的状态,而新系统由于时间差还没有同步到 |
| | | if (oldStatusCode >= newStatusCode) { |
| | | log.info("旧系统状态({}) >= 新系统目标状态({}),跳过推送,防止状态倒退," + |
| | | "旧系统: {} ({}), 新系统目标: {} ({})", |
| | | oldStatusCode, newStatusCode, |
| | | oldStatusCode, getLegacyStatusDescription(oldStatusCode), |
| | | newStatusCode, getLegacyStatusDescription(newStatusCode)); |
| | | // log.info("旧系统状态({}) >= 新系统目标状态({}),跳过推送,防止状态倒退," + |
| | | // "旧系统: {} ({}), 新系统目标: {} ({})", |
| | | // oldStatusCode, newStatusCode, |
| | | // oldStatusCode, getLegacyStatusDescription(oldStatusCode), |
| | | // newStatusCode, getLegacyStatusDescription(newStatusCode)); |
| | | return false; |
| | | } |
| | | |
| | |
| | | if (oldStatusCode >= 8) { |
| | | // 旧系统已经是完成态(8,9,10),不应该被任何中间状态覆盖 |
| | | if (newStatusCode < 8) { |
| | | log.warn("旧系统已是终态({})(:{}),拒绝推送中间状态({})(:{})", |
| | | oldStatusCode, getLegacyStatusDescription(oldStatusCode), |
| | | newStatusCode, getLegacyStatusDescription(newStatusCode)); |
| | | // log.warn("旧系统已是终态({})(:{}),拒绝推送中间状态({})(:{})", |
| | | // oldStatusCode, getLegacyStatusDescription(oldStatusCode), |
| | | // newStatusCode, getLegacyStatusDescription(newStatusCode)); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | log.debug("允许推送状态,旧系统: {} ({}), 新系统目标: {} ({})", |
| | | oldStatusCode, getLegacyStatusDescription(oldStatusCode), |
| | | newStatusCode, getLegacyStatusDescription(newStatusCode)); |
| | | |
| | | // log.debug("允许推送状态,旧系统: {} ({}), 新系统目标: {} ({})", |
| | | // oldStatusCode, getLegacyStatusDescription(oldStatusCode), |
| | | // newStatusCode, getLegacyStatusDescription(newStatusCode)); |
| | | // |
| | | return true; |
| | | } |
| | | |