package target;
|
|
import java.util.Calendar;
|
|
import foundation.action.ActionProvider;
|
import foundation.dao.DataPackage;
|
import foundation.dao.DataSource;
|
import foundation.dao.Filter;
|
import foundation.data.entity.Entity;
|
import foundation.data.entity.EntitySet;
|
import foundation.data.object.DataObject;
|
import foundation.io.IOContext;
|
import foundation.persist.NamedSQL;
|
import foundation.persist.SQLRunner;
|
|
public class TargetHandler extends ActionProvider {
|
|
@Override
|
protected void publishMethod() {
|
//1. 指标计算
|
addMethod("targetCalculate");
|
|
//2. 经销商指标汇总
|
addMethod("dealerTargetCollection");
|
}
|
|
public void targetCalculate() throws Exception {
|
String targetTypeCode = context.getParam();
|
TargetType targetType = TargetType.parse(targetTypeCode);
|
targetType.loadPackage();
|
SQLRunner.beginTrans();
|
|
try {
|
//1. 删除本年度指标计算
|
Calendar calendar = Calendar.getInstance();
|
|
DataObject dataObject = DataObject.getInstance("business_data_summary");
|
Filter filter = new Filter();
|
filter.add("title_code", targetType.getCode());
|
filter.add("year", calendar.get(Calendar.YEAR));
|
dataObject.deleteEntity(filter);
|
|
NamedSQL namedSQL = NamedSQL.getInstance("summaryMonthTarget");
|
namedSQL = setParams(namedSQL, targetType);
|
|
//1. 分岗位汇总月度(有指标)
|
for (int i = 1; i <= 12; i++) {
|
String month = "_m" + i;
|
namedSQL.setParam("monthAmtTarget", "amt" + month);
|
namedSQL.setParam("monthQtyTarget", "qty" + month);
|
namedSQL.setParam("month", i);
|
|
SQLRunner.execSQL(namedSQL);
|
|
}
|
|
//2. 分岗位汇总月度(无指标)
|
namedSQL = NamedSQL.getInstance("summaryMonthAchieveWithoutTarget");
|
namedSQL = setParams(namedSQL, targetType);
|
|
for (int i = 1; i <= 12; i++) {
|
String month = "_m" + i;
|
namedSQL.setParam("monthAmtTarget", "amt" + month);
|
namedSQL.setParam("monthQtyTarget", "qty" + month);
|
namedSQL.setParam("month", i);
|
|
SQLRunner.execSQL(namedSQL);
|
|
}
|
|
//3. 汇总季度
|
namedSQL = NamedSQL.getInstance("summarySeasonTarget");
|
namedSQL.setParam("code", targetType.getCode());
|
SQLRunner.execSQL(namedSQL);
|
|
//4. 汇总年度
|
namedSQL = NamedSQL.getInstance("summaryYearTarget");
|
namedSQL.setParam("code", targetType.getCode());
|
SQLRunner.execSQL(namedSQL);
|
}catch (Exception e) {
|
SQLRunner.rollback();
|
return ;
|
}
|
|
SQLRunner.commit();
|
}
|
|
public void dealerTargetCollection() throws Exception {
|
String targetTable;
|
DataObject dataObject;
|
TargetType targetType;
|
|
NamedSQL namedSQL = NamedSQL.getInstance("getAuthorizeDealer");
|
Filter filter = new Filter();
|
String operator = dataReader.getOperator();
|
|
if ("importData".equalsIgnoreCase(operator)) {
|
//2. from import
|
IOContext ioContext = context.getContext(IOContext.class);
|
String ioBatchId = ioContext.getIoBatchId();
|
filter.add("io_batch_id", ioBatchId);
|
|
targetTable = context.getDataName();
|
String tempDataName = "temp_" + targetTable;
|
dataObject = DataObject.getInstance(tempDataName);
|
|
|
targetType = TargetType.parseByTableName(targetTable);
|
|
NamedSQL checkImportError = NamedSQL.getInstance("importGetImportErrors");
|
checkImportError.setParam("ioBatchId", ioBatchId);
|
checkImportError.setParam("toTempTable", tempDataName);
|
EntitySet errorSet = checkImportError.getEntitySet();
|
|
if (!errorSet.isEmpty()) {
|
return;
|
}
|
}
|
else {
|
//1. from request
|
DataPackage dataPackage = dataReader.getDataPackage();
|
Entity master = dataPackage.getMasterEntity(DataSource.Request);
|
|
filter.add("temp_md_target_dealer_hospital.hospital_id", master.getString("hospital_id"));
|
filter.add("year", master.getString("year"));
|
|
dataObject = dataPackage.getMasterDataObject();
|
targetTable = dataObject.getTableName();
|
targetType = TargetType.parseByTableName(targetTable);
|
}
|
|
namedSQL.setFilter(filter);
|
namedSQL.setParam("targetTable", dataObject.getTableName());
|
EntitySet entitySet = SQLRunner.getEntitySet(namedSQL);
|
|
dataObject = DataObject.getInstance("md_target_dealer");
|
for (Entity entity: entitySet) {
|
SQLRunner.beginTrans();
|
|
try {
|
String orgId = entity.getString("org_id");
|
String buId = entity.getString("bu_id");
|
String companyId = entity.getString("company_id");
|
String year = entity.getString("year");
|
|
Filter deleteFilter = new Filter();
|
deleteFilter.add("org_id", orgId);
|
deleteFilter.add("bu_id", buId);
|
deleteFilter.add("company_id", companyId);
|
deleteFilter.add("year", year);
|
deleteFilter.add("type_code", targetType.getCode());
|
dataObject.deleteEntity(deleteFilter);
|
|
namedSQL = NamedSQL.getInstance("collectDealerTarget");
|
namedSQL.setParam("typeCode", targetType.getCode());
|
namedSQL.setParam("typeName", targetType.getName());
|
namedSQL.setParam("targetTable", targetTable);
|
namedSQL.setParam("orgId", orgId);
|
namedSQL.setParam("buId", buId);
|
namedSQL.setParam("companyId", companyId);
|
namedSQL.setParam("year", year);
|
EntitySet dealerTargets = SQLRunner.getEntitySet(namedSQL);
|
|
for (Entity oneDealerTarget: dealerTargets) {
|
dataObject.saveEntity(oneDealerTarget);
|
}
|
|
}catch (Exception e) {
|
SQLRunner.rollback();
|
}
|
|
SQLRunner.commit();
|
}
|
|
}
|
|
private NamedSQL setParams(NamedSQL namedSQL, TargetType targetType) throws Exception {
|
namedSQL.setParam("code", targetType.getCode());
|
namedSQL.setParam("name", targetType.getName());
|
namedSQL.setParam("joinSql", targetType.getJoinSql());
|
namedSQL.setParam("amtAchieve", targetType.getAmtField());
|
namedSQL.setParam("qtyAchieve", targetType.getQtyField());
|
namedSQL.setParam("targetTable", targetType.getTableName());
|
namedSQL.setParam("positionTable", targetType.getPositionTable());
|
namedSQL.setParam("document", targetType.getDocument());
|
namedSQL.setParam("documentDetail", targetType.getDocumentDetail());
|
namedSQL.setParam("documentPosition", targetType.getDocumentPosition());
|
|
return namedSQL;
|
}
|
|
}
|