package org.sxkj.gd.workorder.enums; /** * 工单状态枚举 * @author lw * @since 2026-01-17 */ public enum WorkOrderStatusEnum { /** * 工单阶段:工单发布 */ STAGE_WORK_ORDER_RELEASE("工单发布"), /** * 工单阶段:接单响应 */ STAGE_ORDER_RESPONSE("接单响应"), /** * 工单阶段:执行中 */ STAGE_IN_EXECUTION("执行中"), /** * 工单阶段:完成待验 */ STAGE_COMPLETED_PENDING_INSPECTION("完成待验"), /** * 工单阶段:验收通过 */ STAGE_ACCEPTED("验收通过"), /** * 工单阶段:结算完成 */ STAGE_SETTLEMENT_COMPLETED("结算完成"), // ------------------ 以下是工单状态 ------------------ /** * 草稿 */ DRAFT("0", "草稿", null), /** * 发布中_接单中 */ PUBLISHING_ACCEPTING("10", "发布中_接单中", "工单发布"), /** * 发布中_拒绝接单 */ PUBLISHING_REJECTING("11", "发布中_拒绝接单", "拒绝接单"), /** * 响应中_待拆分 */ RESPONDING_TO_BE_SPLIT("20", "响应中_待拆分", "接单响应"), /** * 响应中_申请取消 */ RESPONDING_APPLY_CANCEL("21", "响应中_申请取消", "申请取消"), /** * 响应中_申请修改 */ RESPONDING_APPLY_MODIFY("22", "响应中_申请修改", "申请修改"), /** * 响应中_已取消 */ RESPONDING_CANCELED("23", "响应中_已取消", "已取消"), /** * 响应中_拒绝取消 */ RESPONDING_REJECT_CANCEL("24", "响应中_拒绝取消", "拒绝取消"), /** * 响应中_拒绝修改 */ RESPONDING_REJECT_MODIFY("25", "响应中_拒绝修改", "拒绝修改"), /** * 执行中_待全部完成 */ EXECUTING_TO_BE_COMPLETED("30", "执行中_待全部完成", "执行中"), /** * 执行中_协商修改 */ EXECUTING_NEGOTIATE_MODIFY("31", "执行中_协商修改", "执行中"), /** * 完成待验_待全部验收 */ COMPLETED_TO_BE_INSPECTED("40", "完成待验_待全部验收", "完成待验"), /** * 验收通过_待结算 */ ACCEPTED_TO_BE_SETTLED("50", "验收通过_待结算", "验收通过"), /** * 结算完成_已结算 */ SETTLEMENT_COMPLETED("60", "结算完成_已结算", "结算完成"); private final String code; private final String desc; private final String stageDesc; private final boolean isStage; /** * 工单阶段构造函数 */ WorkOrderStatusEnum(String stageDesc) { this.code = null; this.desc = null; this.stageDesc = stageDesc; this.isStage = true; } /** * 工单状态构造函数 */ WorkOrderStatusEnum(String code, String desc, String stageDesc) { this.code = code; 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; } /** * 是否为工单阶段 * @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; default: // 其他状态不允许操作 return false; } } }