package policy.price;
|
|
import foundation.dao.preload.Bucket;
|
import foundation.json.IJSONWriter;
|
import foundation.util.MapList;
|
import foundation.util.Util;
|
import policy.price.outline.DomainOnsiteResult;
|
import policy.price.outline.DomainPriceResult;
|
|
public class DomainPolicyBucket {
|
|
private DomainPolicy normalPolicy;
|
private MapList<String, DomainPolicy> customerPolicys;
|
|
|
public DomainPolicyBucket() {
|
normalPolicy = new DomainPolicy();
|
customerPolicys = new MapList<String, DomainPolicy>();
|
}
|
|
public void loadOnePriceListLine(String customerId, PriceLine priceLine) {
|
DomainPolicy domainPolicy = null;
|
|
if (Util.isEmpty(customerId)) {
|
domainPolicy = normalPolicy;
|
}
|
else {
|
domainPolicy = customerPolicys.get(customerId);
|
|
if (domainPolicy == null) {
|
domainPolicy = new DomainPolicy(customerId);
|
|
customerPolicys.add(customerId, domainPolicy);
|
}
|
}
|
|
domainPolicy.loadOnePriceListLine(priceLine);
|
}
|
|
|
public void loadOneQtyOnsiteDiscount(String customerId, OnsiteLine qtyLine) {
|
DomainPolicy domainPolicy = null;
|
|
if (Util.isEmpty(customerId)) {
|
domainPolicy = normalPolicy;
|
}
|
else {
|
domainPolicy = customerPolicys.get(customerId);
|
|
if (domainPolicy == null) {
|
domainPolicy = new DomainPolicy();
|
|
customerPolicys.add(customerId, domainPolicy);
|
}
|
}
|
|
domainPolicy.loadOneOnsiteDiscount(qtyLine);
|
}
|
|
public void loadOnePriceOnsiteDiscount(String customerId, OnsiteLine onsiteLine) {
|
DomainPolicy domainPolicy = null;
|
|
if (Util.isEmpty(customerId)) {
|
domainPolicy = normalPolicy;
|
}
|
else {
|
domainPolicy = customerPolicys.get(customerId);
|
|
if (domainPolicy == null) {
|
domainPolicy = new DomainPolicy();
|
|
customerPolicys.add(customerId, domainPolicy);
|
}
|
}
|
|
domainPolicy.loadOneOnsiteDiscount(onsiteLine);
|
}
|
|
public void removeOnePriceListLine(String customerId, String policyId) {
|
DomainPolicy domainPolicy = customerPolicys.get(customerId);
|
|
if (domainPolicy == null) {
|
return ;
|
}
|
|
domainPolicy.removeOnePriceListLine(policyId);
|
|
}
|
|
public void removeOneOnsiteDiscount(String customerId, String policyId) {
|
DomainPolicy domainPolicy = customerPolicys.get(customerId);
|
|
if (domainPolicy == null) {
|
return ;
|
}
|
|
domainPolicy.removeOneOnsiteDiscount(policyId);
|
|
}
|
|
|
public DomainPolicy get(String customerId) {
|
DomainPolicy result = customerPolicys.get(customerId);
|
|
if (result == null) {
|
result = normalPolicy;
|
}
|
|
return result;
|
}
|
|
public void getPriceList(DomainPriceResult result) {
|
//1. 添加 national 价格列表
|
Bucket<PriceLine> nationalBucket = normalPolicy.getPriceBucket();
|
result.setNationalPriceList(nationalBucket);
|
|
//2. 添加客户价格列表
|
for (DomainPolicy customerPolicy: customerPolicys) {
|
String customerId = customerPolicy.getCustomerId();
|
Bucket<PriceLine> bucket = customerPolicy.getPriceBucket();
|
|
result.addCustomerPriceList(customerId, bucket);
|
}
|
}
|
|
public void getOnsiteList(DomainOnsiteResult result) {
|
//1. 添加 national 政策 列表
|
Bucket<OnsiteLine> nationalBucket = normalPolicy.getOnsiteBucket();
|
result.setNationalOnsiteList(nationalBucket);
|
|
//2. 添加客户价格列表
|
for (DomainPolicy customerPolicy: customerPolicys) {
|
String customerId = customerPolicy.getCustomerId();
|
Bucket<OnsiteLine> bucket = customerPolicy.getOnsiteBucket();
|
|
if(Util.isEmpty(bucket) || bucket.size() == 0) {
|
continue;
|
}
|
|
result.addCustomerOnsiteList(customerId, bucket);
|
}
|
}
|
|
public void writeJSONOnsiteBody(IJSONWriter writer) {
|
//1. 通过价格/政策
|
writer.beginArray("national");
|
normalPolicy.writeJSONOnsiteBody(writer);
|
writer.endArray();
|
|
//2. 客户价格/政策
|
writer.beginArray("customer");
|
for (DomainPolicy policy: customerPolicys) {
|
policy.writeJSONOnsiteBody(writer);
|
}
|
writer.endArray();
|
}
|
|
}
|