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