package org.sxkj.gd.workorder.enums; /** * 工单状态枚举 * * @author lw * @since 2026-01-17 */ public enum WorkOrderStatusEnum { /** * 工单阶段:工单发布 */ STAGE_WORK_ORDER_RELEASE("工单发布", "1"), /** * 工单阶段:接单响应 */ STAGE_ORDER_RESPONSE("接单响应", "2"), /** * 工单阶段:执行中 */ STAGE_IN_EXECUTION("执行中", "3"), /** * 工单阶段:完成待验 */ STAGE_COMPLETED_PENDING_INSPECTION("完成待验", "4"), /** * 工单阶段:验收通过 */ STAGE_ACCEPTED("验收通过", "5"), /** * 工单阶段:结算完成 */ STAGE_SETTLEMENT_COMPLETED("结算完成", "6"), // ------------------ 以下是工单状态 ------------------ /** * 发布中_接单中 */ PUBLISHING_ACCEPTING("10", "1", "工单发布_接单中", "接单中"), /** * 发布中_拒绝接单 */ PUBLISHING_REJECTING("11", "1", "工单发布_拒绝接单", "拒绝接单"), /** * 响应中_待拆分 */ RESPONDING_TO_BE_SPLIT("20", "2", "接单响应_待拆分", "待拆分"), /** * 响应中_申请取消 */ RESPONDING_APPLY_CANCEL("21", "2", "接单响应_申请取消", "申请取消"), /** * 响应中_申请修改 */ RESPONDING_APPLY_MODIFY("22", "2", "接单响应_申请修改", "申请修改"), /** * 响应中_已取消 */ RESPONDING_CANCELED("23", "2", "接单响应_已取消", "已取消"), /** * 执行中_待全部完成 */ EXECUTING_TO_BE_COMPLETED("30", "3", "执行中_待全部完成", "待全部完成"), /** * 执行中_协商修改 */ EXECUTING_NEGOTIATE_MODIFY("31", "3", "执行中_协商修改", "协商修改"), /** * 完成待验_待全部验收 */ COMPLETED_TO_BE_INSPECTED("40", "4", "完成待验_待全部验收", "待全部验收"), /** * 验收通过_待结算 */ ACCEPTED_TO_BE_SETTLED("50", "5", "验收通过_待结算", "待结算"), /** * 结算完成_已结算 */ SETTLEMENT_COMPLETED("60", "6", "结算完成_已结算", "已结算"); private final String code; private final String maxCode; private final String desc; private final String stageDesc; private final boolean isStage; /** * 工单阶段构造函数 */ WorkOrderStatusEnum(String stageDesc, String maxCode) { this.code = null; this.maxCode = maxCode; this.desc = null; this.stageDesc = stageDesc; this.isStage = true; } /** * 工单状态构造函数 */ WorkOrderStatusEnum(String code, String maxCode, String desc, String stageDesc) { this.code = code; this.maxCode = maxCode; this.desc = desc; this.stageDesc = stageDesc; this.isStage = false; } /** * 获取状态码 * * @return 状态码 */ public String getCode() { return code; } /** * 获取状态描述 * * @return 状态描述 */ public String getDesc() { return desc; } /** * 获取工单阶段描述 * * @return 工单阶段描述 */ public String getStageDesc() { return stageDesc; } public String getMaxCode() { return maxCode; } /** * 是否为工单阶段 * * @return 是否为工单阶段 */ public boolean isStage() { return isStage; } /** * 是否为工单状态 * * @return 是否为工单状态 */ public boolean isStatus() { return !isStage; } /** * 根据状态码获取枚举对象 * * @param code 状态码 * @return 枚举对象 */ public static WorkOrderStatusEnum getByCode(String code) { if (code == null) { return null; } for (WorkOrderStatusEnum status : values()) { if (code.equals(status.getCode())) { return status; } } return null; } /** * 根据状态码获取状态描述 * * @param code 状态码 * @return 状态描述 */ public static String getDescByCode(String code) { WorkOrderStatusEnum status = getByCode(code); return status != null ? status.getDesc() : null; } /** * 判断状态码是否有效 * * @param code 状态码 * @return 是否有效 */ public static boolean isValid(String code) { return getByCode(code) != null; } /** * 检查当前状态是否允许指定的操作类型 * * @param operationType 操作类型:1接单,2拒接接单,3申请取消,4申请修改, 5同意取消 6不同意取消 7.同意修改 8.不同意修改 9.协商修改 10.同意修改 11.结算 * @return 是否允许操作 */ public boolean isAllowedOperation(Integer operationType) { if (operationType == null) { return false; } switch (this) { case PUBLISHING_ACCEPTING: // 发布中_接单中状态允许:1接单,2拒接接单 return operationType == 1 || operationType == 2; case RESPONDING_TO_BE_SPLIT: // 响应中_待拆分状态允许:3申请取消,4申请修改 return operationType == 3 || operationType == 4; case RESPONDING_APPLY_CANCEL: // 响应中_申请取消状态允许:5同意取消,6不同意取消 return operationType == 5 || operationType == 6; case RESPONDING_APPLY_MODIFY: // 响应中_申请修改状态允许:7同意修改,8不同意修改 return operationType == 7 || operationType == 8; // case RESPONDING_REJECT_CANCEL: // // 响应中_拒绝取消状态允许:3申请取消 // return operationType == 3; // case RESPONDING_REJECT_MODIFY: // // 响应中_拒绝修改状态允许:4申请修改 // return operationType == 4 || operationType == 3; case ACCEPTED_TO_BE_SETTLED: // 验收通过_待结算状态允许:11结算完成 return operationType == 11; case EXECUTING_TO_BE_COMPLETED: // 执行中_待全部完成状态允许:9.协商修改 return operationType == 9; case EXECUTING_NEGOTIATE_MODIFY: // 执行中_状态状态允许:10.同意协商修改 return operationType == 10; default: // 其他状态不允许操作 return false; } } }