public class CEOApprover extends BaseApprover { private static final double MIN_APPROVAL_AMOUNT = 50000.01; // 大于VP的审批上限 public CEOApprover(String approverName, Logger logger) { super(approverName, ApprovalLevel.CEO, logger); } @Override protected boolean canApprove(Order order) { // CEO审批金额超过50000的特大订单 return order.getAmount() > MIN_APPROVAL_AMOUNT; } @Override protected boolean performApproval(Order order, ApprovalContext context) { // CEO审批逻辑:最高级别的审批,通常需要完整的审批链和严格的条件 OrderValidator validator = new OrderValidator(); boolean basicValid = validator.validateOrder(order); // CEO审批前必须确保有所有低级别的审批记录 if (context.getApprovalHistory().size() < 3) { // 至少需要经理、总监、VP的审批 getLogger().error("缺少必要的前置审批,CEO无法审批"); return false; } // 检查所有前置审批是否都已通过 boolean allPreviousApproved = context.getApprovalHistory().stream() .allMatch(record -> record.approved); if (!allPreviousApproved) { getLogger().warn("存在未通过的前置审批,CEO审批被拒绝"); return false; } // 特大订单的特殊处理 getLogger().info("CEO审批特大订单: " + order.getOrderId() + ",金额: " + order.getAmount()); // 可以在这里添加更复杂的业务逻辑,如检查公司预算等 return basicValid; } }