package policy.price; import foundation.data.entity.Entity; import foundation.util.MapList; import foundation.util.Util; import policy.price.outline.DomainOnsiteResult; import policy.price.outline.DomainPriceResult; public class ProductLinePolicy { private String id; private String name; private DomainPolicyBucket domainBucket; private MapList products; public ProductLinePolicy() { domainBucket = new DomainPolicyBucket(); products = new MapList(); } public PriceLine loadOneStandardPriceLine(Entity entity) { PriceLine priceLine = new PriceLine(PriceLine.Type_Standard); priceLine.load(entity); domainBucket.loadOnePriceListLine(priceLine.getCustomerId(), priceLine); return priceLine; } public PriceLine loadPrice(Entity entity) { PriceLine priceLine = new PriceLine(PriceLine.Type_Customer_ProductLine); priceLine.load(entity); domainBucket.loadOnePriceListLine(priceLine.getCustomerId(), priceLine); return priceLine; } public OnsiteLine loadOneQtyOnsiteDiscount(Entity entity) { OnsiteLine onsiteLine = null; String productId = entity.getString("product_id"); //1. 产品数量 if (!Util.isEmpty(productId)) { ProductPolicy product = products.get(productId); if (product == null) { product = new ProductPolicy(this); products.add(productId, product); } onsiteLine = product.loadOneQtyOnsiteDiscount(entity); } //2. 产品线数量 else { OnsiteLine qtyLine = new OnsiteLine(OnsiteLine.Type_ProductLine_Qty); qtyLine.load(entity); domainBucket.loadOneQtyOnsiteDiscount(qtyLine.getCustomerId(), qtyLine); } return onsiteLine; } public OnsiteLine loadOnePriceOnsiteDiscount(Entity entity) { OnsiteLine qtyLine = null; String productId = entity.getString("product_id"); //1. 产品数量 if (!Util.isEmpty(productId)) { ProductPolicy product = products.get(productId); if (product == null) { product = new ProductPolicy(this); products.add(productId, product); } qtyLine = product.loadOnePriceOnsiteDiscount(entity); } //2. 产品线数量 else { qtyLine = new OnsiteLine(OnsiteLine.Type_ProductLine_Price); qtyLine.load(entity); domainBucket.loadOneQtyOnsiteDiscount(qtyLine.getCustomerId(), qtyLine); } return qtyLine; } public void removeOnePriceListLine(Entity entity) { String customerId = entity.getString("account_id"); String policyId = entity.getId(); domainBucket.removeOnePriceListLine(customerId, policyId); } public void removeOneOnsiteDiscount(Entity entity) { String customerId = entity.getString("account_id"); String policyId = entity.getId(); domainBucket.removeOneOnsiteDiscount(customerId, policyId); } public void getOnePrice(String customerId, PriceSelector selector) { DomainPolicy domainPolicy = domainBucket.get(customerId); if (domainPolicy != null) { domainPolicy.getOnePrice(selector); } } public void getPrice(String customerId, PriceResult result) { DomainPolicy domainPolicy = domainBucket.get(customerId); if (domainPolicy != null) { result.addPriceList(domainPolicy.getPriceList()); } } public void getOnsiteDiscounts(String customerId, OnsitesResult result) { //1. 产品线数量 DomainPolicy domainPolicy = domainBucket.get(customerId); if (domainPolicy != null) { result.addOnsiteDiscounts(domainPolicy.getOnsiteList()); } //2. 产品数量 for (ProductPolicy product: products) { product.getOnsiteDiscounts(customerId, result); } } public void load(Entity entity) { id = entity.getString("bu_id"); name = entity.getString("bu_name"); } public String getId() { return id; } public String getName() { return name; } public void getPriceList(DomainPriceResult result) { domainBucket.getPriceList(result); } public void getOnsiteList(DomainOnsiteResult result) { domainBucket.getOnsiteList(result); } }