Browse Source

代码提交

main
chengjie 7 months ago
parent
commit
daea562267
  1. 118
      irbs.feature/src/main/java/irbs/feature/service/impl/CustFeatureCalcBatchServiceImpl.java
  2. 2
      irbs.frontend/src/menus/menus.json

118
irbs.feature/src/main/java/irbs/feature/service/impl/CustFeatureCalcBatchServiceImpl.java

@ -14,6 +14,7 @@ import io.sc.engine.rule.server.dictionary.entity.UserDefinedJavaClassDictionary
import io.sc.engine.rule.server.dictionary.entity.UserDefinedJavaClassFieldEntity; import io.sc.engine.rule.server.dictionary.entity.UserDefinedJavaClassFieldEntity;
import io.sc.engine.rule.server.dictionary.repository.UserDefinedJavaClassFieldRepository; import io.sc.engine.rule.server.dictionary.repository.UserDefinedJavaClassFieldRepository;
import io.sc.engine.rule.server.dictionary.service.UserDefinedJavaClassFieldService; import io.sc.engine.rule.server.dictionary.service.UserDefinedJavaClassFieldService;
import io.sc.platform.jdbc.DatabaseType;
import io.sc.platform.orm.service.support.OperatorType; import io.sc.platform.orm.service.support.OperatorType;
import io.sc.platform.orm.service.support.QueryParameter; import io.sc.platform.orm.service.support.QueryParameter;
import io.sc.platform.orm.service.support.criteria.Criteria; import io.sc.platform.orm.service.support.criteria.Criteria;
@ -50,6 +51,8 @@ public class CustFeatureCalcBatchServiceImpl implements CustFeatureCalcBatchServ
private JdbcTemplate jdbcTemplate; private JdbcTemplate jdbcTemplate;
@Autowired @Autowired
private ExecutorFactoryService executorFactoryService; private ExecutorFactoryService executorFactoryService;
@Autowired
private DataSource dataSource;
private GroovyScriptEngineService groovyScriptEngineService =new GroovyScriptEngineServiceImpl(); private GroovyScriptEngineService groovyScriptEngineService =new GroovyScriptEngineServiceImpl();
@ -67,6 +70,8 @@ public class CustFeatureCalcBatchServiceImpl implements CustFeatureCalcBatchServ
String sql = "SELECT ID_ as CUST_ID, CUSTOMER_ID as CUST_NO, CUSTOMER_CHINESE_NAME as CUST_NAME, CUSTOMER_TYPE AS CUST_TYPE FROM ESB_RATING_CUSTOMER"; String sql = "SELECT ID_ as CUST_ID, CUSTOMER_ID as CUST_NO, CUSTOMER_CHINESE_NAME as CUST_NAME, CUSTOMER_TYPE AS CUST_TYPE FROM ESB_RATING_CUSTOMER";
List<Map<String, Object>> list = jdbcTemplate.queryForList(sql); List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
if(list != null){ if(list != null){
DatabaseType type = DatabaseType.fromMetaData(dataSource);
String dbType = type.getProductName();
Executor executor =executorFactoryService.getExecutor(); Executor executor =executorFactoryService.getExecutor();
ResourceWrapper resourceWrapper =executor.getLoader().getResourceByCode(SHRCB_LIB_CODE,null); ResourceWrapper resourceWrapper =executor.getLoader().getResourceByCode(SHRCB_LIB_CODE,null);
SourceCode groovySourceCode =new GroovySourceCodeGenerator().generateSourceCodeByCode(SHRCB_LIB_CODE,null,resourceWrapper); SourceCode groovySourceCode =new GroovySourceCodeGenerator().generateSourceCodeByCode(SHRCB_LIB_CODE,null,resourceWrapper);
@ -102,7 +107,11 @@ public class CustFeatureCalcBatchServiceImpl implements CustFeatureCalcBatchServ
} }
//第一次需要创建表 //第一次需要创建表
if(i == 1){ if(i == 1){
bsu = generateShrcbCorpCreateSql(custFeatureParams, res); if(dbType.startsWith("DM")) {
bsu = generateShrcbCorpCreateSqlDm(custFeatureParams, res);
}else if(dbType.equals("MySQL")){
bsu = generateShrcbCorpCreateSqlMySql(custFeatureParams, res);
}
} }
//插入数据 //插入数据
insertShrcbCorpCustFeatureResult(custFeatureParams, res, bsu); insertShrcbCorpCustFeatureResult(custFeatureParams, res, bsu);
@ -117,7 +126,112 @@ public class CustFeatureCalcBatchServiceImpl implements CustFeatureCalcBatchServ
* @param custFeatureParams * @param custFeatureParams
* @param res * @param res
*/ */
private BatchSqlUpdate generateShrcbCorpCreateSql(CustFeatureParamsVo custFeatureParams, List<CustFeatureRet> res){ private BatchSqlUpdate generateShrcbCorpCreateSqlDm(CustFeatureParamsVo custFeatureParams, List<CustFeatureRet> res){
StringBuffer createSql = new StringBuffer("create table P_IRS_SHRCB_CORP_FEATURE_RET(\n");
createSql.append("id varchar(60),\n");
createSql.append("data_dt varchar(20),\n");
createSql.append("cust_id varchar(60),\n");
createSql.append("cust_no varchar(60),\n");
createSql.append("cust_name varchar(200),\n");
createSql.append("cust_type varchar(20),\n");
String columns = "id,data_dt,cust_id,cust_no,cust_name,cust_type,DATA_COME_FROM_,CREATOR_,CREATE_DATE_,LAST_MODIFIER_,LAST_MODIFYDATE_,CORP_CODE_,";
String colDataTypeStr = "varchar,varchar,varchar,varchar,varchar,varchar,varchar,varchar,date,varchar,date,varchar,";
for (CustFeatureRet r : res){
columns += r.getFeatureCode() + ",";
colDataTypeStr += "decimal,";
createSql.append(r.getFeatureCode()).append(" decimal(30,6),\n");
}
columns = columns.endsWith(",") ? columns.substring(0, columns.length() - 1) : columns;
colDataTypeStr = colDataTypeStr.endsWith(",") ? colDataTypeStr.substring(0, colDataTypeStr.length() - 1) : colDataTypeStr;
createSql.append("DATA_COME_FROM_ varchar(10),\n");
createSql.append("CREATOR_ varchar(255),\n");
createSql.append("CREATE_DATE_ date,\n");
createSql.append("LAST_MODIFIER_ varchar(255),\n");
createSql.append("LAST_MODIFYDATE_ date,\n");
createSql.append("CORP_CODE_ varchar(255)\n");
createSql.append(")");
StringBuffer commentSql = new StringBuffer();
commentSql.append("comment on column P_IRS_SHRCB_CORP_FEATURE_RET.id is 'id';");
commentSql.append("comment on column P_IRS_SHRCB_CORP_FEATURE_RET.data_dt is '数据日期';");
commentSql.append("comment on column P_IRS_SHRCB_CORP_FEATURE_RET.cust_id is '客户ID';");
commentSql.append("comment on column P_IRS_SHRCB_CORP_FEATURE_RET.cust_no is '客户编号';");
commentSql.append("comment on column P_IRS_SHRCB_CORP_FEATURE_RET.cust_name is '客户名称';");
commentSql.append("comment on column P_IRS_SHRCB_CORP_FEATURE_RET.cust_type is '客户类型';");
commentSql.append("comment on column P_IRS_SHRCB_CORP_FEATURE_RET.DATA_COME_FROM_ is '数据来源';");
commentSql.append("comment on column P_IRS_SHRCB_CORP_FEATURE_RET.CREATOR_ is '创建人';");
commentSql.append("comment on column P_IRS_SHRCB_CORP_FEATURE_RET.CREATE_DATE_ is '创建日期';");
commentSql.append("comment on column P_IRS_SHRCB_CORP_FEATURE_RET.LAST_MODIFIER_ is '最后修改人';");
commentSql.append("comment on column P_IRS_SHRCB_CORP_FEATURE_RET.LAST_MODIFYDATE_ is '最后修改日期';");
commentSql.append("comment on column P_IRS_SHRCB_CORP_FEATURE_RET.CORP_CODE_ is '所属法人代码';");
for (CustFeatureRet r : res){
commentSql.append("comment on column P_IRS_SHRCB_CORP_FEATURE_RET.").append(r.getFeatureCode()).append(" is '").append(r.getFeatureName()).append("';");
}
//判断表是否存在
try{
String querySql = "select count(1) from P_IRS_SHRCB_CORP_FEATURE_RET";
jdbcTemplate.execute(querySql);
}catch(Exception e){
log.error(MessageFormat.format("{0} 表未创建!", "P_IRS_SHRCB_CORP_FEATURE_RET"));
//创建表
jdbcTemplate.execute(createSql.toString());
//添加注释
jdbcTemplate.execute(commentSql.toString());
}
//判断表字段是否有变化
try{
String querySql = "select " + columns + " from P_IRS_SHRCB_CORP_FEATURE_RET";
jdbcTemplate.execute(querySql);
}catch(Exception e){
log.error(MessageFormat.format("{0} 表字段有变更,需要重建!", "P_IRS_SHRCB_CORP_FEATURE_RET"));
//重新创建表
jdbcTemplate.execute("drop table P_IRS_SHRCB_CORP_FEATURE_RET");
jdbcTemplate.execute(createSql.toString());
//添加注释
jdbcTemplate.execute(commentSql.toString());
}
//判断相同数据日期是否已存在数据
String querySql = "select count(1) as CNT from P_IRS_SHRCB_CORP_FEATURE_RET where data_dt = '" + custFeatureParams.getDataDt() + "'";
Map<String, Object> map = jdbcTemplate.queryForMap(querySql);
int cnt = map.get("CNT")==null? 0 : Integer.valueOf(map.get("CNT").toString());
if(cnt > 0){
//删除旧数据,避免插入重复数据
jdbcTemplate.execute("delete from P_IRS_SHRCB_CORP_FEATURE_RET");
}
//生成insert语句
StringBuffer insertSql = new StringBuffer("insert into P_IRS_SHRCB_CORP_FEATURE_RET(").append(columns).append(") values(");
String[] colArr = columns.split(",");
String cols = "";
for(int i = 0; i < colArr.length; i ++){
cols += "?,";
}
insertSql.append(cols.endsWith(",") ? cols.substring(0, cols.length() - 1) : cols).append(")");
//设置批量参数
DataSource dataSource = jdbcTemplate.getDataSource();
BatchSqlUpdate bsu = new BatchSqlUpdate(dataSource, insertSql.toString());
bsu.setBatchSize(1000);
String[] colDataTypeArr = colDataTypeStr.split(",");
int[] colDataTypes = new int[colDataTypeArr.length];
for(int i = 0; i < colDataTypeArr.length; i ++){
if(colDataTypeArr[i].equals("varchar")){
colDataTypes[i] = Types.VARCHAR;
}else if(colDataTypeArr[i].equals("decimal")){
colDataTypes[i] = Types.DECIMAL;
}else if(colDataTypeArr[i].equals("date") || colDataTypeArr[i].equals("datetime")){
colDataTypes[i] = Types.DATE;
}else{
colDataTypes[i] = Types.VARCHAR;
}
}
bsu.setTypes(colDataTypes);
return bsu;
}
/**
* 创建上农内评POC项目的客户特征库计算结果表
* @param custFeatureParams
* @param res
*/
private BatchSqlUpdate generateShrcbCorpCreateSqlMySql(CustFeatureParamsVo custFeatureParams, List<CustFeatureRet> res){
StringBuffer createSql = new StringBuffer("create table P_IRS_SHRCB_CORP_FEATURE_RET(\n"); StringBuffer createSql = new StringBuffer("create table P_IRS_SHRCB_CORP_FEATURE_RET(\n");
createSql.append("id varchar(60) comment 'ID',\n"); createSql.append("id varchar(60) comment 'ID',\n");
createSql.append("data_dt varchar(20) comment '数据日期',\n"); createSql.append("data_dt varchar(20) comment '数据日期',\n");

2
irbs.frontend/src/menus/menus.json

@ -63,7 +63,7 @@
/*/*/ /*/*/
{"type":"ROUTE", "order":600, "parentId":"menu.irbs.query", "id":"menu.irbs.query.pingAnLgdHist", "titleI18nKey":"menu.irbs.query.pingAnLgdHist", "icon":"eva-shake", "routeName":"route.irbs.query.pingAnLgdHist"}, {"type":"ROUTE", "order":600, "parentId":"menu.irbs.query", "id":"menu.irbs.query.pingAnLgdHist", "titleI18nKey":"menu.irbs.query.pingAnLgdHist", "icon":"eva-shake", "routeName":"route.irbs.query.pingAnLgdHist"},
/*/*/ /*/*/
{"type":"ROUTE", "order":700, "parentId":"menu.irbs.query", "id":"menu.irbs.config.shrcbCorpCustFeature", "titleI18nKey":"menu.irbs.config.shrcbCorpCustFeature", "icon":"bi-file-earmark-ruled-fill", "routeName":"route.sys.comm.page", "routeQuery": {"id": "1a50a840-0e62-41b5-b952-9bd77a3775c2"}}, {"type":"ROUTE", "order":700, "parentId":"menu.irbs.query", "id":"menu.irbs.query.shrcbCorpCustFeature", "titleI18nKey":"menu.irbs.query.shrcbCorpCustFeature", "icon":"bi-file-earmark-ruled-fill", "routeName":"route.sys.comm.page", "routeQuery": {"id": "1a50a840-0e62-41b5-b952-9bd77a3775c2"}},
{"type":"GROUP", "order":700, "parentId":"menu.irbs", "id":"menu.irbs.config", "titleI18nKey":"menu.irbs.config", "icon":"display_settings"}, {"type":"GROUP", "order":700, "parentId":"menu.irbs", "id":"menu.irbs.config", "titleI18nKey":"menu.irbs.config", "icon":"display_settings"},
/*/*/ /*/*/
{"type":"ROUTE", "order":100, "parentId":"menu.irbs.config", "id":"menu.irbs.config.ratingAdjustment", "titleI18nKey":"menu.irbs.config.ratingAdjustment", "icon":"eva-map", "routeName":"route.sys.comm.page", "routeQuery": {"id": "9a803997-ee15-47cc-bed2-872ec92be17e"}}, {"type":"ROUTE", "order":100, "parentId":"menu.irbs.config", "id":"menu.irbs.config.ratingAdjustment", "titleI18nKey":"menu.irbs.config.ratingAdjustment", "icon":"eva-map", "routeName":"route.sys.comm.page", "routeQuery": {"id": "9a803997-ee15-47cc-bed2-872ec92be17e"}},

Loading…
Cancel
Save