package biz.policy;
|
|
import java.util.Date;
|
|
import biz.policy.price.PolicyBucket;
|
import foundation.data.entity.Entity;
|
import foundation.data.entity.EntitySet;
|
import foundation.data.entity.Filter;
|
import foundation.data.entity.OrderBy;
|
import foundation.data.object.DataObject;
|
import foundation.persist.NamedSQL;
|
import foundation.server.Initializer;
|
|
public class PolicyLoader extends Initializer {
|
|
@Override
|
public void startUp() throws Exception {
|
load();
|
}
|
|
private void load() throws Exception {
|
PolicyBucket policyBucket = PolicyBucket.getInstance();
|
|
policyBucket.setStarting(true);
|
try {
|
//1. 加载产品
|
loadProduct(policyBucket);
|
|
//2. 加载标准价价格列表
|
loadStandardPriceLists(policyBucket);
|
|
//3. 加载经销商价格价格列表
|
// loadCustomerPriceLists(policyBucket);
|
|
//4. 加载买赠优惠(即时数量政策)
|
// loadQtyOnsiteDiscount(policyBucket);
|
|
//5. 加载价格优惠(即时价格政策)
|
// loadPriceOnsiteDiscount(policyBucket);
|
|
//6. 加载套包优惠(套包优惠政策)
|
// loadPricePackageDiscount(policyBucket);
|
|
//7. 记录当前时间
|
PolicyBucket.Now = new Date();
|
}
|
finally {
|
policyBucket.setStarting(false);
|
}
|
}
|
|
private void loadProduct(PolicyBucket policyBucket) throws Exception {
|
NamedSQL namedSQL = NamedSQL.getInstance("policyGetProduct");
|
EntitySet entitySet = namedSQL.getEntitySet();
|
|
for (Entity entity: entitySet) {
|
policyBucket.loadOnePolicy(entity);
|
}
|
}
|
|
private void loadStandardPriceLists(PolicyBucket policyBucket) throws Exception {
|
DataObject dataObject = DataObject.getInstance("md_prod_price_detail");
|
Filter filter = new Filter("type_code", "Standard").add("state_code", "Open");
|
EntitySet entitySet = dataObject.getTableEntitySet(filter, new OrderBy("type_code, product_id"));
|
|
for (Entity entity: entitySet) {
|
policyBucket.loadOneStandardPriceLine(entity);
|
}
|
}
|
|
private void loadCustomerPriceLists(PolicyBucket policyBucket) throws Exception {
|
DataObject dataObject = DataObject.getInstance("md_prod_price_list");
|
Filter filter = new Filter("type_code", "Customer").add("state_code", "Open");
|
EntitySet entitySet = dataObject.getBrowseEntitySet(filter, new OrderBy("type_code, md_prod_price_detail_spec.product_id"));
|
|
for (Entity entity: entitySet) {
|
policyBucket.loadOnePriceListLine(entity);
|
}
|
}
|
|
private void loadQtyOnsiteDiscount(PolicyBucket policyBucket) throws Exception {
|
DataObject dataObject = DataObject.getInstance("agm_record_gift");
|
Filter filter = new Filter("category_code", "Onsite").add("state_code", "Open");
|
|
EntitySet entitySet = dataObject.getTableEntitySet(filter, new OrderBy("type_code, product_id"));
|
|
for (Entity entity: entitySet) {
|
policyBucket.loadOneQtyOnsiteDiscount(entity);
|
}
|
}
|
|
private void loadPriceOnsiteDiscount(PolicyBucket policyBucket) throws Exception {
|
DataObject dataObject = DataObject.getInstance("md_prod_price_list");
|
Filter filter = new Filter("type_code", "Onsite").add("state_code", "Open");
|
EntitySet entitySet = dataObject.getBrowseEntitySet(filter, new OrderBy("type_code, md_prod_price_detail_spec.product_id"));
|
|
for (Entity entity: entitySet) {
|
policyBucket.loadOnePriceOnsiteDiscount(entity);
|
}
|
}
|
|
private void loadPricePackageDiscount(PolicyBucket policyBucket) throws Exception {
|
DataObject dataObject = DataObject.getInstance("agm_record_package_product");
|
Filter filter = new Filter("agm_record.state_code", "Open");
|
EntitySet entitySet = dataObject.getBrowseEntitySet(filter);
|
|
for (Entity entity: entitySet) {
|
policyBucket.loadOnePricePackageDiscount(entity);
|
}
|
}
|
|
public static int refreshPriceList() throws Exception {
|
PolicyBucket policyBucket = PolicyBucket.getInstance();
|
|
//1. 重新加载统一标准价
|
NamedSQL namedSQL = NamedSQL.getInstance("getUpdatedPrice");
|
namedSQL.setParam("loadTime", PolicyBucket.PriceTime, true);
|
EntitySet entitySet = namedSQL.getEntitySet();
|
|
for (Entity entity: entitySet) {
|
policyBucket.loadOneStandardPriceLine(entity);
|
logger.info("重新加载价格,id:{}, 状态:{}", entity.getId(), entity.getString("state_code"));
|
}
|
|
// //2. 重新加载经销商标准价
|
// DataObject dataObject = DataObject.getInstance("md_prod_price_list");
|
// Filter filter = new Filter("last_update_time", ">=", PolicyBucket.PriceTime)
|
// .add("state_code", "Open")
|
// .add("type_code", "Customer");
|
// entitySet = dataObject.getBrowseEntitySet(filter, new OrderBy("type_code, md_prod_price_detail_spec.product_id"));
|
//
|
// for (Entity entity: entitySet) {
|
// policyBucket.loadOnePriceListLine(entity);
|
// logger.info("重新加载价格,id:{}, 状态:{}", entity.getId(), entity.getString("md_prod_price_detail__state_code"));
|
// }
|
|
PolicyBucket.PriceTime = new Date();
|
return entitySet.size();
|
}
|
|
public static int refreshOnsiteList() throws Exception {
|
PolicyBucket policyBucket = PolicyBucket.getInstance();
|
|
NamedSQL namedSQL = NamedSQL.getInstance("getUpdatedQtyOnsiteDiscount");
|
namedSQL.setParam("loadTime", PolicyBucket.OnsiteTime, true);
|
EntitySet entitySet = namedSQL.getEntitySet();
|
|
for (Entity entity: entitySet) {
|
policyBucket.loadOneQtyOnsiteDiscount(entity);
|
}
|
|
DataObject dataObject = DataObject.getInstance("agm_record_package_product");
|
Filter filter = new Filter("last_update_time", ">", PolicyBucket.OnsiteTime);
|
entitySet = dataObject.getBrowseEntitySet(filter);
|
|
for (Entity entity: entitySet) {
|
policyBucket.loadOnePricePackageDiscount(entity);
|
}
|
|
dataObject = DataObject.getInstance("md_prod_price_list");
|
filter = new Filter("last_update_time", ">", PolicyBucket.OnsiteTime);
|
filter.add("type_code", "Onsite");
|
entitySet = dataObject.getBrowseEntitySet(filter);
|
|
for (Entity entity: entitySet) {
|
policyBucket.loadOnePriceOnsiteDiscount(entity);
|
}
|
|
PolicyBucket.OnsiteTime = new Date();
|
return entitySet.size();
|
}
|
|
@Override
|
public void shutDown() throws Exception {
|
|
}
|
|
}
|