package com.demo.jd;
/**
* 审批状态流程
* @author lhj
* @date 2023/12/07
*/
public enum ApprovalStatusFlow {
/**
* 待提交 0
*/
SUBMITTED {
@Override
public ApprovalStatusFlow nextState() {
return APPROVED;
}
@Override
public ApprovalStatusFlow rejectState() {
return null;
}
@Override
public int currentStatus() {
return 0;
}
@Override
public String statusName() {
return "待提交";
}
},
/**
* 待审批 1
*/
APPROVED {
@Override
public ApprovalStatusFlow nextState() {
return APPROVING;
}
@Override
public ApprovalStatusFlow rejectState() {
return null;
}
@Override
public int currentStatus() {
return 1;
}
@Override
public String statusName() {
return "待审批";
}
},
/**
* 审批中 2
*/
APPROVING {
@Override
public ApprovalStatusFlow nextState() {
return PASS;
}
/**
* 审批不通过
*/
@Override
public ApprovalStatusFlow rejectState() {
return REJECTED;
}
@Override
public int currentStatus() {
return 2;
}
@Override
public String statusName() {
return "审批中";
}
},
/**
* 审批通过 3
*/
PASS {
@Override
public ApprovalStatusFlow nextState() {
return null;
}
@Override
public ApprovalStatusFlow rejectState() {
return null;
}
@Override
public int currentStatus() {
return 3;
}
@Override
public String statusName() {
return "审批通过";
}
},
/**
* 审批不通过 4
*/
REJECTED {
@Override
public ApprovalStatusFlow nextState() {
return this;
}
@Override
public ApprovalStatusFlow rejectState() {
return this;
}
@Override
public int currentStatus() {
return 4;
}
@Override
public String statusName() {
return "审批不通过";
}
};
public static ApprovalStatusFlow get(int status) throws Exception {
for (ApprovalStatusFlow approvalStatusFlow : ApprovalStatusFlow.values()) {
if (approvalStatusFlow.currentStatus() == status) {
return approvalStatusFlow;
}
}
throw new MyException("无该状态");
}
/**
* 下一个状态
*
* @return 状态机
*///下一节点
public abstract ApprovalStatusFlow nextState();
/**
* 拒绝状态
*
* @return 状态机
*///拒绝节点
public abstract ApprovalStatusFlow rejectState();
/**
* 当前状态
*
* @return int
*///当前状态
public abstract int currentStatus();
/**
* 状态名字
*
* @return 字符串
*///状态名称
public abstract String statusName();
public static void main(String[] args) throws Exception {
ApprovalStatusFlow submitted = ApprovalStatusFlow.SUBMITTED;
System.out.println(ApprovalStatusFlow.SUBMITTED.statusName());
System.out.println(submitted.nextState().statusName());
System.out.println(submitted.nextState().nextState().statusName());
System.out.println(submitted.nextState().nextState().nextState().statusName());
System.out.println(ApprovalStatusFlow.APPROVING.rejectState().statusName());
System.out.println(ApprovalStatusFlow.REJECTED.nextState().statusName());
System.out.println(ApprovalStatusFlow.get(1).statusName());
}
}
枚举解决审批状态流转
最新推荐文章于 2024-08-13 16:04:04 发布