package policy.rule.action; import foundation.dao.DataWriter; import policy.OrderEvent; import policy.rule.CheckLevel; import policy.rule.CheckResult; import policy.rule.OnsiteRecord; import policy.rule.OnsiteRecords; import policy.rule.OrderCalculator; import policy.rule.RuleAction; public class OnsiteCountSameTimeCheck extends RuleAction { public static String remark = "优惠政策只能选择一个的限制"; public OnsiteCountSameTimeCheck() { super(); } @Override public void createBoard(OrderCalculator calculator, CheckResult result) { OnsiteRecords onsiteRecords = calculator.getOnsiteRecords(); int cnt = onsiteRecords.size(); //1. 计算结果 boolean success = cnt <= 1; result.setSuccess(success); if (!success) { for (OnsiteRecord record: onsiteRecords) { result.writeOneRemark("使用多个优惠政策:[" + record.getNo() + "]" + record.getName()); } } } @Override public boolean check(OrderCalculator calculator, OrderEvent event, DataWriter dataWriter) { OnsiteRecords onsiteRecords = calculator.getOnsiteRecords(); int cnt = onsiteRecords.size(); boolean success = cnt <= 1; if (!success) { for (OnsiteRecord record: onsiteRecords) { dataWriter.reportOneError("OnsiteCountSameTimeCheck", "使用多个优惠政策:[" + record.getNo() + "]" + record.getName()); } } if (CheckLevel.Info.equals(meta.getLevel())) { success = true; } return success; } }