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<String, ProductPolicy> products;
|
|
|
public ProductLinePolicy() {
|
domainBucket = new DomainPolicyBucket();
|
products = new MapList<String, ProductPolicy>();
|
}
|
|
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);
|
}
|
|
}
|