吉安感知网项目-后端
linwei
100 mins ago caf9d837bc7b2bb6de6b7ba0aac72c3ab7ae93a8
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/enums/WorkOrderStatusEnum.java
@@ -2,249 +2,257 @@
/**
 * 工单状态枚举
 *
 * @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;
      }
   }
}