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不同意修改
|
* @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;
|
default:
|
// 其他状态不允许操作
|
return false;
|
}
|
}
|
}
|