package biz.policy.rule.action;
|
|
import java.util.HashMap;
|
import java.util.Map.Entry;
|
|
import biz.policy.OrderEvent;
|
import biz.policy.price.PackagePolicy;
|
import biz.policy.price.PolicyBucket;
|
import biz.policy.rule.CheckLevel;
|
import biz.policy.rule.CheckResult;
|
import biz.policy.rule.OrderCalculator;
|
import biz.policy.rule.RuleAction;
|
import foundation.dao.DataWriter;
|
import foundation.util.ContentBuilder;
|
|
public class PackageMinQtyCheck extends RuleAction {
|
|
public static String remark = "套包最小购买数量检查";
|
|
public PackageMinQtyCheck() {
|
super();
|
}
|
|
@Override
|
public void createBoard(OrderCalculator calculator, CheckResult result) {
|
String packageId;
|
boolean success = true;
|
ContentBuilder builder = new ContentBuilder(";/n");
|
|
//1. 获取订单各套包数量
|
HashMap<String, PackagePolicy> packageList = calculator.getPackages();
|
|
//2. 套包行数量检查
|
for (Entry<String, PackagePolicy> onePackage : packageList.entrySet()) {
|
packageId = onePackage.getKey();
|
PackagePolicy orderPackagePolicy = onePackage.getValue();
|
|
int onePackageQty = orderPackagePolicy.getPackageQty();
|
|
PolicyBucket policyBucket = PolicyBucket.getInstance();
|
PackagePolicy packagePolicy = policyBucket.getPackagePolicy(packageId);
|
int minQty = packagePolicy.getPackageQty();
|
|
if (onePackageQty < minQty ) {
|
success = false;
|
builder.append("套包【" + packagePolicy.getCode() + "】最小套包数量为" + minQty + ",购买数量不足" + minQty + "套");
|
}
|
}
|
|
result.setSuccess(success);
|
|
if (!success) {
|
result.writeOneRemark("套包购买数量需大于最小套包数量:" + builder.toString());
|
}
|
}
|
|
@Override
|
public boolean check(OrderCalculator calculator, OrderEvent event, DataWriter dataWriter) {
|
String packageId;
|
boolean success = true;
|
ContentBuilder builder = new ContentBuilder(";/n");
|
|
//1. 获取订单各套包数量
|
HashMap<String, PackagePolicy> packageList = calculator.getPackages();
|
|
//2. 套包行数量检查
|
for (Entry<String, PackagePolicy> onePackage : packageList.entrySet()) {
|
packageId = onePackage.getKey();
|
PackagePolicy orderPackagePolicy = onePackage.getValue();
|
int onePackageQty = orderPackagePolicy.getPackageQty();
|
|
PolicyBucket policyBucket = PolicyBucket.getInstance();
|
PackagePolicy packagePolicy = policyBucket.getPackagePolicy(packageId);
|
int minQty = packagePolicy.getPackageQty();
|
|
if (onePackageQty < minQty ) {
|
success = false;
|
builder.append("套包【" + packagePolicy.getCode() + "】最小套包数量为" + minQty + ",购买数量不足" + minQty + "套");
|
}
|
}
|
|
if (!success) {
|
if(CheckLevel.Info.equals(meta.getLevel())) {
|
dataWriter.reportOneAlert("PackageMinQtyCheck", "订单检查不通过:" + meta.getTitle());
|
dataWriter.reportOneAlert("PackageMinQtyCheck", " " + builder.toString());
|
|
return true;
|
}
|
else {
|
dataWriter.reportOneError("PackageMinQtyCheck", "订单检查不通过:" + meta.getTitle());
|
dataWriter.reportOneError("PackageMinQtyCheck", " " + builder.toString());
|
}
|
}
|
|
return success;
|
}
|
|
}
|