|
|
|
|
@ -0,0 +1,40 @@
|
|
|
|
|
public class VPApprover extends BaseApprover {
|
|
|
|
|
private static final double MAX_APPROVAL_AMOUNT = 50000.0;
|
|
|
|
|
private static final double MIN_APPROVAL_AMOUNT = 10000.01; // 大于总监的审批上限
|
|
|
|
|
|
|
|
|
|
public VPApprover(String approverName, Logger logger) {
|
|
|
|
|
super(approverName, ApprovalLevel.VP, logger);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
protected boolean canApprove(Order order) {
|
|
|
|
|
// VP只能审批金额在10000.01到50000之间的订单
|
|
|
|
|
return order.getAmount() > MIN_APPROVAL_AMOUNT && order.getAmount() <= MAX_APPROVAL_AMOUNT;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
protected boolean performApproval(Order order, ApprovalContext context) {
|
|
|
|
|
// VP审批逻辑:更严格的审批条件
|
|
|
|
|
OrderValidator validator = new OrderValidator();
|
|
|
|
|
boolean basicValid = validator.validateOrder(order);
|
|
|
|
|
|
|
|
|
|
// 检查订单历史(如果有的话)
|
|
|
|
|
if (context.getApprovalHistory().size() > 0) {
|
|
|
|
|
// 确保所有前置审批都通过
|
|
|
|
|
boolean allPreviousApproved = context.getApprovalHistory().stream()
|
|
|
|
|
.allMatch(record -> record.approved);
|
|
|
|
|
if (!allPreviousApproved) {
|
|
|
|
|
getLogger().warn("存在未通过的前置审批,VP审批被拒绝");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 大额订单检查:超过25000的订单需要额外验证
|
|
|
|
|
if (order.getAmount() > 25000) {
|
|
|
|
|
getLogger().info("大额订单,执行额外验证");
|
|
|
|
|
// 假设这里会调用额外的验证服务
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return basicValid;
|
|
|
|
|
}
|
|
|
|
|
}
|