package org.dromara.common.core.enums; import cn.hutool.core.util.StrUtil; import lombok.AllArgsConstructor; import lombok.Getter; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.StringUtils; import java.util.Arrays; /** * 业务状态枚举 * * @author may */ @Getter @AllArgsConstructor public enum BusinessStatusEnum { /** * 已撤销 */ CANCEL("cancel", "已撤销"), /** * 草稿 */ DRAFT("draft", "草稿"), /** * 待审核 */ WAITING("waiting", "待审核"), /** * 已完成 */ FINISH("finish", "已完成"), /** * 已作废 */ INVALID("invalid", "已作废"), /** * 已退回 */ BACK("back", "已退回"), /** * 已终止 */ TERMINATION("termination", "已终止"); /** * 状态 */ private final String status; /** * 描述 */ private final String desc; /** * 获取业务状态 * * @param status 状态 */ public static String findByStatus(String status) { if (StringUtils.isBlank(status)) { return StrUtil.EMPTY; } return Arrays.stream(BusinessStatusEnum.values()) .filter(statusEnum -> statusEnum.getStatus().equals(status)) .findFirst() .map(BusinessStatusEnum::getDesc) .orElse(StrUtil.EMPTY); } /** * 启动流程校验 * * @param status 状态 */ public static void checkStartStatus(String status) { if (WAITING.getStatus().equals(status)) { throw new ServiceException("该单据已提交过申请,正在审批中!"); } else if (FINISH.getStatus().equals(status)) { throw new ServiceException("该单据已完成申请!"); } else if (INVALID.getStatus().equals(status)) { throw new ServiceException("该单据已作废!"); } else if (TERMINATION.getStatus().equals(status)) { throw new ServiceException("该单据已终止!"); } else if (StringUtils.isBlank(status)) { throw new ServiceException("流程状态为空!"); } } /** * 撤销流程校验 * * @param status 状态 */ public static void checkCancelStatus(String status) { if (CANCEL.getStatus().equals(status)) { throw new ServiceException("该单据已撤销!"); } else if (FINISH.getStatus().equals(status)) { throw new ServiceException("该单据已完成申请!"); } else if (INVALID.getStatus().equals(status)) { throw new ServiceException("该单据已作废!"); } else if (TERMINATION.getStatus().equals(status)) { throw new ServiceException("该单据已终止!"); } else if (BACK.getStatus().equals(status)) { throw new ServiceException("该单据已退回!"); } else if (StringUtils.isBlank(status)) { throw new ServiceException("流程状态为空!"); } } /** * 驳回流程校验 * * @param status 状态 */ public static void checkBackStatus(String status) { if (BACK.getStatus().equals(status)) { throw new ServiceException("该单据已退回!"); } else if (FINISH.getStatus().equals(status)) { throw new ServiceException("该单据已完成申请!"); } else if (INVALID.getStatus().equals(status)) { throw new ServiceException("该单据已作废!"); } else if (TERMINATION.getStatus().equals(status)) { throw new ServiceException("该单据已终止!"); } else if (CANCEL.getStatus().equals(status)) { throw new ServiceException("该单据已撤销!"); } else if (StringUtils.isBlank(status)) { throw new ServiceException("流程状态为空!"); } } /** * 作废,终止流程校验 * * @param status 状态 */ public static void checkInvalidStatus(String status) { if (FINISH.getStatus().equals(status)) { throw new ServiceException("该单据已完成申请!"); } else if (INVALID.getStatus().equals(status)) { throw new ServiceException("该单据已作废!"); } else if (TERMINATION.getStatus().equals(status)) { throw new ServiceException("该单据已终止!"); } else if (StringUtils.isBlank(status)) { throw new ServiceException("流程状态为空!"); } } }