|
@ -35,6 +35,9 @@ public class ConvertHelper {
|
|
|
@Autowired
|
|
|
private JdbcTemplate jdbcTemplate;
|
|
|
|
|
|
@Autowired
|
|
|
private BasicDictItemHelper basicDictItemHelper;
|
|
|
|
|
|
/**
|
|
|
* 进行具体标签生成转换
|
|
|
* @return
|
|
@ -46,9 +49,13 @@ public class ConvertHelper {
|
|
|
if(CollectionUtils.isEmpty(dataModels)){
|
|
|
return saveModels;
|
|
|
}
|
|
|
//标签job未配置
|
|
|
if(null == flLabelDictJob){
|
|
|
return saveModels;
|
|
|
}
|
|
|
//转换器为空表示不需要转换
|
|
|
if (flLabelDictJob == null || StringUtils.isEmpty(flLabelDictJob.getConvertClazz())) {
|
|
|
return generateSaveModleWithOutConvert(dataModels,sourceType,source);
|
|
|
if (StringUtils.isEmpty(flLabelDictJob.getConvertClazz())) {
|
|
|
return generateSaveModleWithOutConvert(dataModels,flLabelDictJob.getCategoryId(),sourceType,source);
|
|
|
}
|
|
|
List<FlLabelDict> flLabelDictList = jdbcTemplate.query(flLabelDictJob.getSql(), new BeanPropertyRowMapper(FlLabelDict.class));
|
|
|
//如果配置的字典为空
|
|
@ -61,7 +68,7 @@ public class ConvertHelper {
|
|
|
Method method = obj.getClass().getMethod("convert", List.class, List.class,String.class,String.class);
|
|
|
saveModels = (List<SaveModel>) method.invoke(obj, dataModels, flLabelDictList,sourceType,source);
|
|
|
} catch (Exception e) {
|
|
|
// logger.error("customized class or convert(List<DataModel> modelList,List<FlLabelDict> flLabelDictList,String sourceType,String source) method not found:" + flLabelDictJob.getConvertClazz());
|
|
|
logger.error("customized class or convert() method not found:" + flLabelDictJob.getConvertClazz());
|
|
|
e.printStackTrace();
|
|
|
return saveModels;
|
|
|
}
|
|
@ -71,26 +78,55 @@ public class ConvertHelper {
|
|
|
/**
|
|
|
* 无需转换器直接转换,此种情况为源数据已经分类好标签
|
|
|
* @param dataModels
|
|
|
* @param categoryId
|
|
|
* @param sourceType
|
|
|
* @param source
|
|
|
* @return
|
|
|
*/
|
|
|
public List<SaveModel> generateSaveModleWithOutConvert(List<DataModel> dataModels,String sourceType,String source){
|
|
|
public List<SaveModel> generateSaveModleWithOutConvert(List<DataModel> dataModels,Long categoryId,String sourceType,String source){
|
|
|
String dictCode = basicDictItemHelper.dictCategoryMap.get(String.valueOf(categoryId));
|
|
|
List<SaveModel> saveModels = new ArrayList<>();
|
|
|
//lambda无法跳出循环
|
|
|
for(DataModel dataModel:dataModels){
|
|
|
SaveModel saveModel = new SaveModel();
|
|
|
saveModel.setIdcard(dataModel.getIdcard());
|
|
|
saveModel.setId(MakeIDUtil.makeSaveModelID(dataModel,""));
|
|
|
saveModel.setLabelType(dataModel.getParentCode());
|
|
|
saveModel.setLabelCode(dataModel.getLabelCode());
|
|
|
saveModel.setLabelName(dataModel.getLabelName());
|
|
|
saveModel.setDictCode(dictCode);
|
|
|
//只有一种类别
|
|
|
if(null == basicDictItemHelper.labelDictMap.get(dictCode)){
|
|
|
logger.error("label dictCode not exist :【" + dictCode+"】");
|
|
|
return new ArrayList<>();
|
|
|
}
|
|
|
if(basicDictItemHelper.labelDictMap.get(dictCode).size() == 1){
|
|
|
List<FlLabelDict> flLabelDictList = basicDictItemHelper.labelDictMap.get(dictCode);
|
|
|
saveModel.setLabelType(flLabelDictList.get(0).getParentCode());
|
|
|
saveModel.setLabelCode(flLabelDictList.get(0).getLabelCode());
|
|
|
saveModel.setLabelName(flLabelDictList.get(0).getLabelName());
|
|
|
if(!StringUtils.isEmpty(dataModel.getLabelValue())){
|
|
|
if(StringUtils.endsWithIgnoreCase("height_dict",dictCode)){
|
|
|
saveModel.setLabelValue(dataModel.getLabelValue()+"cm");
|
|
|
}
|
|
|
else if(StringUtils.endsWithIgnoreCase("weight_dict",dictCode)){
|
|
|
saveModel.setLabelValue(dataModel.getLabelValue()+"kg");
|
|
|
}else{
|
|
|
saveModel.setLabelValue(dataModel.getLabelValue());
|
|
|
}
|
|
|
}
|
|
|
}else{
|
|
|
//当有多种类别,sql里构造好需要格式,例如不同code对应不同的label_name
|
|
|
saveModel.setLabelType(dataModel.getParentCode());
|
|
|
saveModel.setLabelCode(dataModel.getLabelCode());
|
|
|
saveModel.setLabelName(dataModel.getLabelName());
|
|
|
}
|
|
|
saveModel.setCreateTime(DateFormatUtils.format(new Date(), ConstantUtil.date_format));
|
|
|
this.generateDataSource(dataModel,saveModel,sourceType,source);
|
|
|
//如果fl_job_config表配置的id和数据来源不一致,则不保存数据,原子性,全部不保存,不然部分存了部分没存不好剔除数据
|
|
|
if(StringUtils.isEmpty(saveModel.getSource())){
|
|
|
return new ArrayList<>();
|
|
|
}
|
|
|
if(StringUtils.isEmpty(dataModel.getSourceTime())){
|
|
|
saveModel.setSourceTime(dataModel.getSourceTime());
|
|
|
}
|
|
|
saveModels.add(saveModel);
|
|
|
}
|
|
|
return saveModels;
|