You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
homework/VPApprover.java

40 lines
1.6 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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;
}
}