|
@ -0,0 +1,150 @@
|
|
|
package com.yihu.jw.basic.standard.task;
|
|
|
|
|
|
import com.yihu.jw.basic.redis.schema.AdapterDataSetKeySchema;
|
|
|
import com.yihu.jw.basic.redis.schema.AdapterDictEntryKeySchema;
|
|
|
import com.yihu.jw.basic.redis.schema.AdapterDictKeySchema;
|
|
|
import com.yihu.jw.basic.redis.schema.AdapterMetaDataKeySchema;
|
|
|
import com.yihu.jw.util.thread.ContextAttributes;
|
|
|
import com.yihu.jw.util.thread.LocalContext;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
import org.springframework.scheduling.annotation.Async;
|
|
|
import org.springframework.scheduling.annotation.AsyncResult;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.concurrent.Future;
|
|
|
|
|
|
@Component
|
|
|
public class AdapterRedisTask {
|
|
|
|
|
|
@Resource(name = "jdbcTemplate")
|
|
|
private JdbcTemplate jdbc;
|
|
|
|
|
|
@Autowired
|
|
|
private AdapterDataSetKeySchema adapterDataSetKeySchema;
|
|
|
@Autowired
|
|
|
private AdapterMetaDataKeySchema adapterMetaDataKeySchema;
|
|
|
@Autowired
|
|
|
private AdapterDictKeySchema adapterDictKeySchema;
|
|
|
@Autowired
|
|
|
private AdapterDictEntryKeySchema adapterDictEntryKeySchema;
|
|
|
|
|
|
/**
|
|
|
* 异步缓存适配的数据集和数据元
|
|
|
* @param dataSetList
|
|
|
* @param dataSetTable
|
|
|
* @param metaDataTable
|
|
|
* @return
|
|
|
*/
|
|
|
@Async
|
|
|
public Future<Boolean> cacheDatasetAndMetadata(List<Map<String,Object>> dataSetList, String dataSetTable, String metaDataTable,String schema){
|
|
|
System.out.println("开始缓存适配的数据集,数据元");
|
|
|
LocalContext.getContext().setAttachment(ContextAttributes.SCHEMA,schema);
|
|
|
Map<Long, String> map = new HashMap<>();//key 为adapter_dataset_id, value 为adapter_dataset_code
|
|
|
for (Map<String, Object> tempMap: dataSetList) {
|
|
|
String stdDatasetName = tempMap.get("std_dataset_name").toString();
|
|
|
String stdDatasetCode = tempMap.get("std_dataset_code").toString();
|
|
|
Integer stdDatasetId = (Integer)tempMap.get("std_dataset_id");
|
|
|
String adapterDatasetIds = (String) tempMap.get("adapter_dataset_id");
|
|
|
String adapterDatasetCodes = (String) tempMap.get("adapter_dataset_code");
|
|
|
String adapterDatasetNames = (String) tempMap.get("adapter_dataset_name");
|
|
|
if(!StringUtils.isEmpty(adapterDatasetIds)){
|
|
|
String[] adapterDatasetIdArray = adapterDatasetIds.split(",");
|
|
|
String[] adapterDatasetCodeArray = adapterDatasetCodes.split(",");
|
|
|
for(int i =0;i<adapterDatasetIdArray.length;i++){
|
|
|
map.put(Long.valueOf(adapterDatasetIdArray[i]),adapterDatasetCodeArray[i]);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//1. 缓存数据集
|
|
|
if(StringUtils.isEmpty(adapterDatasetCodes)){
|
|
|
adapterDatasetCodes="";
|
|
|
}
|
|
|
adapterDataSetKeySchema.setAdapterDataSetCode(dataSetTable, stdDatasetCode, adapterDatasetCodes);
|
|
|
adapterDataSetKeySchema.setAdapterDatasetName(dataSetTable, stdDatasetCode, adapterDatasetNames);
|
|
|
|
|
|
//获取数据元进行缓存
|
|
|
List<Map<String,Object>> metadataList = jdbc.queryForList("select * from "+metaDataTable+" t where t.std_dataset_id="+stdDatasetId);
|
|
|
for (Map<String, Object> tempMetadaMap: metadataList) {
|
|
|
String adapterCode = "";
|
|
|
String adapterName = "";
|
|
|
String stdName = "";
|
|
|
String stdMetadataCode = (String) tempMetadaMap.get("std_metadata_code");
|
|
|
String adapterDatasetId = String.valueOf(tempMetadaMap.get("adapter_dataset_id"));
|
|
|
if(!StringUtils.isEmpty(adapterDatasetId) && !"null".equals(adapterDatasetId)){
|
|
|
String adapterDatasetCode = map.get(Long.valueOf(adapterDatasetId));
|
|
|
String adapterMetadataCode = (String) tempMetadaMap.get("adapter_metadata_code");
|
|
|
String adapterMetadataName = (String) tempMetadaMap.get("adapter_metadata_name");
|
|
|
String stdMetadataName = (String) tempMetadaMap.get("std_metadata_name");
|
|
|
adapterCode = adapterDatasetCode + "." + adapterMetadataCode;
|
|
|
adapterName = adapterDatasetNames + "." + adapterMetadataName;
|
|
|
stdName = stdDatasetName + "." + stdMetadataName;
|
|
|
}
|
|
|
//缓存数据元
|
|
|
adapterMetaDataKeySchema.setAdapterMetaDataCode(metaDataTable, stdDatasetCode, stdMetadataCode, adapterCode);
|
|
|
adapterMetaDataKeySchema.setAdapterMetaDataName(metaDataTable, stdDatasetCode, stdMetadataCode, adapterName);
|
|
|
adapterMetaDataKeySchema.setStdMetaDataName(metaDataTable, stdDatasetCode, stdMetadataCode, stdName);
|
|
|
|
|
|
}
|
|
|
}
|
|
|
System.out.println("缓存适配的数据集,数据元完成");
|
|
|
return new AsyncResult<Boolean>(true);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 缓存适配的字典
|
|
|
* @param dictList
|
|
|
* @param dictTable
|
|
|
* @return
|
|
|
*/
|
|
|
@Async
|
|
|
public Future<Boolean> cacheDict(List<Map<String,Object>> dictList, String dictTable,String schema){
|
|
|
System.out.println("开始缓存适配的字典");
|
|
|
LocalContext.getContext().setAttachment(ContextAttributes.SCHEMA,schema);
|
|
|
for (Map<String, Object> temDictMap: dictList) {
|
|
|
String stdDictCode = (String) temDictMap.get("std_dict_code");
|
|
|
String adapterDictCode = (String) temDictMap.get("adapter_dict_code");
|
|
|
if(StringUtils.isEmpty(adapterDictCode)){
|
|
|
adapterDictCode="";
|
|
|
}
|
|
|
adapterDictKeySchema.setAdapterDictCode(dictTable,stdDictCode,adapterDictCode);
|
|
|
}
|
|
|
System.out.println("缓存适配的字典完成");
|
|
|
return new AsyncResult<Boolean>(true);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 缓存适配的字典项
|
|
|
* @param dictEntryList
|
|
|
* @param dictEntryTable
|
|
|
* @param stdDictMap
|
|
|
* @param adapterDictMap
|
|
|
* @return
|
|
|
*/
|
|
|
@Async
|
|
|
public Future<Boolean> cacheDictEntry(List<Map<String,Object>> dictEntryList, String dictEntryTable,Map<String, String> stdDictMap,Map<String, String> adapterDictMap,String schema){
|
|
|
System.out.println("开始缓存适配的字典项");
|
|
|
LocalContext.getContext().setAttachment(ContextAttributes.SCHEMA,schema);
|
|
|
for (Map<String, Object> temDictMap: dictEntryList) {
|
|
|
String value="";
|
|
|
String stdDictId = String.valueOf(temDictMap.get("std_dict_id"));
|
|
|
String stdDictCode = stdDictMap.get(stdDictId);
|
|
|
String adapterDictId = String.valueOf(temDictMap.get("adapter_dict_id"));
|
|
|
String adapterDictCode = adapterDictMap.get(adapterDictId);
|
|
|
String stdEntryCode = (String) temDictMap.get("std_entry_code");
|
|
|
if(!StringUtils.isEmpty(adapterDictCode)){//
|
|
|
String adapterEntryCode = (String) temDictMap.get("adapter_entry_code");
|
|
|
value=adapterDictCode+"."+adapterEntryCode;
|
|
|
}
|
|
|
adapterDictEntryKeySchema.setAdapterDictEntryCode(dictEntryTable,stdDictCode,stdEntryCode,value);
|
|
|
}
|
|
|
System.out.println("缓存适配的字典项完成");
|
|
|
return new AsyncResult<Boolean>(true);
|
|
|
}
|
|
|
|
|
|
}
|