yxh
昨天 fce96ef468291fb9a0e6a4d34ab371315e9485d4
jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/ErrorCodeConstants.java
@@ -10,24 +10,88 @@
public interface ErrorCodeConstants {
    ErrorCode ECG_INNER_ERROR = new ErrorCode(1_010_000_000, "ECG内部错误");
    ErrorCode ECG_CONFIG_ERROR = new ErrorCode(1_010_000_001, "心电检查类型的最大准备人数配置不一致");
    ErrorCode APPOINTMENT_NOT_EXISTS = new ErrorCode(1_010_001_000, "预约不存在");
    ErrorCode APPOINTMENT_NOT_TODAY = new ErrorCode(1_010_001_001, "不是当天预约");
    ErrorCode APPOINTMENT_NOT_TODAY = new ErrorCode(1_010_001_010, "不是当天预约");
    ErrorCode APPOINTMENT_EXIST_TODAY = new ErrorCode(1_010_001_020, "当天预约已存在");
    ErrorCode APPOINTMENT_HAVE_QUEUED = new ErrorCode(1_010_001_030, "您已经在排队中了");
    ErrorCode APPOINTMENT_NOT_BILLING = new ErrorCode(1_010_001_040, "查询不到开单信息");
    ErrorCode APPOINTMENT_CREATE_FAIL = new ErrorCode(1_010_001_050, "申请单创建失败");
    ErrorCode APPOINTMENT_UPDATE_FAIL = new ErrorCode(1_010_001_060, "申请单更新失败");
    ErrorCode APPOINTMENT_STATUS_UPDATE_FAIL = new ErrorCode(1_010_001_070, "申请单状态更新失败");
    ErrorCode APPOINTMENT_STATUS_REGISTER_UPDATE_FAIL = new ErrorCode(1_010_001_080, "申请单登记状态更新失败");
    // ========== HIS 通用接口(/ecg/external/generalInterface)新增错误码 ==========
    // 目的:原实现把所有异常统一压成 APPOINTMENT_CREATE_FAIL,
    // 导致 HIS 侧无法区分问题类型(本次排障成本即来自此)。以下按时段细分。
    ErrorCode HIS_ACTION_NOT_SUPPORTED = new ErrorCode(1_010_001_090, "不支持的服务代码(action),请核对接口文档交易编号");
    ErrorCode HIS_MESSAGE_PARSE_FAIL = new ErrorCode(1_010_001_100, "报文解析失败,请核对报文结构与必填字段");
    ErrorCode HIS_APPLY_NO_MISSING = new ErrorCode(1_010_001_110, "报文缺少申请单号");
    ErrorCode HIS_APPOINTMENT_NOT_FOUND = new ErrorCode(1_010_001_120, "未找到对应的预约记录");
    ErrorCode HIS_STATUS_INVALID = new ErrorCode(1_010_001_130, "检查状态编码不在编码表范围内");
    ErrorCode HIS_NOT_ECG_ORDER = new ErrorCode(1_010_001_140, "非心电业务单,已跳过处理");
    ErrorCode ROOM_NOT_EXISTS = new ErrorCode(1_010_002_000, "诊室和诊疗床不存在");
    ErrorCode ROOM_NOT_SIT = new ErrorCode(1_010_002_001, "请重新就座");
    ErrorCode ROOM_INVALID_STATUS = new ErrorCode(1_010_002_001, "诊室和诊疗床状态异常");
    ErrorCode QUEUE_NOT_EXISTS = new ErrorCode(1_010_003_000, "排队不存在");
    ErrorCode QUEUE_BED_NOT_EXIST = new ErrorCode(1_010_003_001, "工位队列不存在");
    ErrorCode QUEUE_BED_EXIST = new ErrorCode(1_010_003_001, "工位队列已存在");
    ErrorCode QUEUE_HAVE_PATIENT = new ErrorCode(1_010_003_002, "队列中有患者");
    ErrorCode QUEUE_NOT_READY_PATIENT = new ErrorCode(1_010_003_003, "没有准备中的患者");
    ErrorCode QUEUE_BED_EXIST = new ErrorCode(1_010_003_002, "工位队列已存在");
    ErrorCode QUEUE_HAVE_PATIENT = new ErrorCode(1_010_003_003, "队列中有患者");
    ErrorCode QUEUE_NOT_READY_PATIENT = new ErrorCode(1_010_003_004, "没有准备中的患者");
    ErrorCode QUEUE_RECALL_INSTALL_NOT_CUR_ROOM = new ErrorCode(1_010_003_005, "不能召回其他诊室的安装患者");
    /**
     * 「停止候诊」功能未就绪。
     * <p>
     * 触发条件:数据库尚未执行 `_prep/11_需求升级_汇总SQL.sql`(缺 `clinic_room.stop_ready` 列)。
     * 用独立错误码而非把原始 SQL 异常抛给前端,便于现场快速定位部署遗漏。
     */
    ErrorCode QUEUE_STOP_READY_NOT_CONFIGURED = new ErrorCode(1_010_003_006,
            "停止候诊功能未配置,请先执行数据库升级脚本(clinic_room.stop_ready)");
    ErrorCode PATIENT_NOT_EXISTS = new ErrorCode(1_010_004_000, "患者不存在");
    ErrorCode DEV_MODEL_NOT_EXISTS = new ErrorCode(1_010_005_000, "设备型号不存在");
    ErrorCode DEVICE_NOT_EXISTS = new ErrorCode(1_010_005_001,  "设备不存在");
    ErrorCode DEV_RENT_NOT_EXISTS = new ErrorCode(1_010_005_002, "租借不存在");
    ErrorCode DEV_INSTALL_EXCEPTION = new ErrorCode(1_010_005_003, "装机内部错误");
    ErrorCode DEV_DISMANTLE_EXCEPTION = new ErrorCode(1_010_005_004, "拆机内部错误");
    ErrorCode DEVICE_NOT_FREE = new ErrorCode(1_010_005_002,  "设备非空闲或不存在");
    ErrorCode DEVICE_NOT_RECEIVED = new ErrorCode(1_010_005_003,  "设备未领用或不存在");
    ErrorCode DEVICE_NOT_PAT_RECEIVED = new ErrorCode(1_010_005_004,  "不是该患者领用的设备");
    ErrorCode JOB_RECORD_NOT_EXISTS = new ErrorCode(1_010_006_000, "工作记录不存在");
    ErrorCode DEV_INSTALL_NOT_EXISTS = new ErrorCode(1_010_006_000, "装机不存在");
    ErrorCode DEV_INSTALL_EXCEPTION = new ErrorCode(1_010_006_001, "装机内部错误");
    ErrorCode DEV_DISMANTLE_EXCEPTION = new ErrorCode(1_010_006_002, "拆机内部错误");
    ErrorCode ROUTINE_CANCEL_EXCEPTION = new ErrorCode(1_010_006_003, "常规检查取消错误");
    ErrorCode DEV_RECEIVE_CANCEL_EXCEPTION = new ErrorCode(1_010_006_004, "设备领用取消错误");
    ErrorCode DEV_INSTALL_CANCEL_EXCEPTION = new ErrorCode(1_010_006_005, "设备装机取消错误");
    ErrorCode DEV_LOSE_EXCEPTION = new ErrorCode(1_010_006_004, "遗失内部错误");
    ErrorCode DEV_INSTALL_EXIST = new ErrorCode(1_010_006_005, "当天已有装机");
    ErrorCode DEV_DISMANTLE_EXIST = new ErrorCode(1_010_006_006, "当天已有拆机");
    ErrorCode DEV_INSTALL_NOT_APPOINTMENT = new ErrorCode(1_010_006_014, "请先预约确认");
    ErrorCode DEV_INSTALL_NOT_RECEIVED = new ErrorCode(1_010_006_018, "请先领用设备");
    ErrorCode ROUTINE_CHECK_EXIST = new ErrorCode(1_010_006_022, "当天已有检查");
    ErrorCode JOB_RECORD_NOT_EXISTS = new ErrorCode(1_010_007_000, "工作记录不存在");
    ErrorCode CALL_NOT_EXISTS = new ErrorCode(1_010_008_000, "叫号不存在");
    ErrorCode CHECK_TYPE_NOT_EXISTS = new ErrorCode(1_010_009_000, "检查类型不存在");
    ErrorCode QUEUE_SEQUENCE_NOT_EXISTS = new ErrorCode(1_010_010_000, "当天序号不存在");
    ErrorCode QUEUE_SEQUENCE_TIMESLOT_FULL = new ErrorCode(1_010_010_002, "本时段序号已满");
    ErrorCode QUEUE_SEQUENCE_TIMESLOT_EXCEPTION = new ErrorCode(1_010_010_002, "本时段序号异常");
    ErrorCode QUEUE_SEQUENCE_TIMESLOT_VIP_FULL = new ErrorCode(1_010_010_003, "本时段VIP序号已满");
    ErrorCode QUEUE_SEQUENCE_TIMESLOT_VIP_EXCEPTION = new ErrorCode(1_010_010_003, "本时段VIP序号异常");
    /**
     * 预约时段重复:同一检查类型下同一个时段只能有一条规则。
     * <p>
     * 表上**没有** (check_type, time_slot) 唯一约束(历史遗留),而取号 SQL
     * {@code select queue_no ... where check_type=? and time_slot=? ... for update}
     * 期望只命中一行;若存在重复行,取号行为不可预期。故在维护入口处拦截。
     */
    ErrorCode QUEUE_SEQUENCE_TIMESLOT_DUPLICATE = new ErrorCode(1_010_010_004,
            "该检查类型的此时段规则已存在,请勿重复添加");
}