wlzboy
3 天以前 40a8157440e3b906da8f52e07d939d78c3f4c313
ruoyi-system/src/main/java/com/ruoyi/system/utils/TaskStatusPushConverter.java
@@ -13,7 +13,29 @@
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转换为旧系统状态码
     * 
@@ -37,10 +59,11 @@
                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;
        }
    }
@@ -55,18 +78,18 @@
     */
    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;
        }
        
@@ -74,17 +97,17 @@
        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;
    }