|
@ -15,6 +15,7 @@ import com.yihu.ehr.framework.util.operator.StringUtil;
|
|
|
import com.yihu.ehr.framework.util.sql.BeanTransformer;
|
|
|
import com.yihu.ehr.framework.util.sql.SqlCreator;
|
|
|
import com.yihu.ehr.standard.model.adapter.AdapterDatasetModel;
|
|
|
import com.yihu.ehr.standard.model.adapter.AdapterDictModel;
|
|
|
import com.yihu.ehr.standard.model.adapter.AdapterMetadataModel;
|
|
|
import com.yihu.ehr.standard.model.standard.StdDataSetModel;
|
|
|
import com.yihu.ehr.standard.model.standard.StdMetaDataModel;
|
|
@ -26,6 +27,7 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.*;
|
|
|
|
|
|
@Transactional
|
|
|
@Service("AdapterDatasetService")
|
|
|
public class AdapterDatasetService extends SQLGeneralDAO {
|
|
@ -78,7 +80,7 @@ public class AdapterDatasetService extends SQLGeneralDAO {
|
|
|
public Result modify(String adapterVersion, String dataset) {
|
|
|
try {
|
|
|
AdapterVersion version = new AdapterVersion(adapterVersion);
|
|
|
ObjectMapper objectMapper = new ObjectMapper();
|
|
|
ObjectMapper objectMapper = new ObjectMapper();
|
|
|
AdapterDatasetModel adapterDatasetModel = objectMapper.readValue(dataset, AdapterDatasetModel.class);
|
|
|
JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(adapterDatasetModel));
|
|
|
SqlCreator sqlCreator = new SqlCreator(AdapterDatasetModel.class);
|
|
@ -123,7 +125,7 @@ public class AdapterDatasetService extends SQLGeneralDAO {
|
|
|
AdapterVersion adapterVersion = new AdapterVersion(version);
|
|
|
String tableName = adapterVersion.getDataSetTableName();
|
|
|
SqlCreator sqlCreator = new SqlCreator(tClass);
|
|
|
ObjectMapper objectMapper = new ObjectMapper();
|
|
|
ObjectMapper objectMapper = new ObjectMapper();
|
|
|
if (!StringUtil.isEmpty(condition)) {
|
|
|
JsonNode jsonNode = objectMapper.readTree(condition);
|
|
|
String name = jsonNode.get("name").asText();
|
|
@ -149,11 +151,11 @@ public class AdapterDatasetService extends SQLGeneralDAO {
|
|
|
return query.list();
|
|
|
}
|
|
|
|
|
|
public Integer getDatasetInt(Class tClass, AdapterVersion adapterVersion, String condition) {
|
|
|
public Integer getDatasetInt(Class tClass, AdapterVersion adapterVersion, String condition) {
|
|
|
try {
|
|
|
String tableName = adapterVersion.getDataSetTableName();
|
|
|
SqlCreator sqlCreator = new SqlCreator(tClass);
|
|
|
ObjectMapper objectMapper = new ObjectMapper();
|
|
|
ObjectMapper objectMapper = new ObjectMapper();
|
|
|
if (!StringUtil.isEmpty(condition)) {
|
|
|
JsonNode jsonNode = objectMapper.readTree(condition);
|
|
|
String name = jsonNode.get("name").asText();
|
|
@ -218,11 +220,11 @@ public class AdapterDatasetService extends SQLGeneralDAO {
|
|
|
boolean check; //是否勾选
|
|
|
boolean std = false; //标准是否添加根节点
|
|
|
long childCheckCount;
|
|
|
long datasetCount=0;
|
|
|
long datasetCount = 0;
|
|
|
|
|
|
//获取所有标准数据集
|
|
|
StandardVersion sVersion = new StandardVersion(stdVersion);
|
|
|
List<StdDataSetModel> dataSetList = getList(StdDataSetModel.class, sVersion.getDataSetTableName(), "", "", null, null);
|
|
|
List<StdDataSetModel> dataSetList = getList(StdDataSetModel.class, sVersion.getDataSetTableName(), "", "", null, null);
|
|
|
String idListStr = Constants.EMPTY;
|
|
|
for (StdDataSetModel dataSet : dataSetList) {
|
|
|
idListStr += dataSet.getId() + Constants.COMMA;
|
|
@ -288,9 +290,9 @@ public class AdapterDatasetService extends SQLGeneralDAO {
|
|
|
stdRoot.setId("S0");
|
|
|
stdRoot.setPid("-1");
|
|
|
stdRoot.setText("数据集");
|
|
|
if(datasetCount==dataSetList.size()){
|
|
|
if (datasetCount == dataSetList.size()) {
|
|
|
stdRoot.setIschecked(true);
|
|
|
}else {
|
|
|
} else {
|
|
|
stdRoot.setIschecked(false);
|
|
|
}
|
|
|
|
|
@ -315,7 +317,7 @@ public class AdapterDatasetService extends SQLGeneralDAO {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public Result updateCustomize(Integer schemeId, String adapterVersion, String stdVersion, String datasetIdStr,String metaDataIdStr) {
|
|
|
public Result updateCustomize(Integer schemeId, String adapterVersion, String stdVersion, String datasetIdStr, String metaDataIdStr) {
|
|
|
AdapterVersion aVersion = new AdapterVersion(adapterVersion);
|
|
|
StandardVersion sVersion = new StandardVersion(stdVersion);
|
|
|
try {
|
|
@ -325,40 +327,39 @@ public class AdapterDatasetService extends SQLGeneralDAO {
|
|
|
List<Integer> newMetadataIdList = new ArrayList<>();
|
|
|
|
|
|
for (String datasetId : datasetIdList) {
|
|
|
if(!StringUtil.isStrEmpty(datasetId)){
|
|
|
if (!StringUtil.isStrEmpty(datasetId)) {
|
|
|
Integer newDatasetId = Integer.parseInt(datasetId);
|
|
|
newDatasetIdList.add(newDatasetId);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
for (String metadataId : metadataIdList) {
|
|
|
if(!StringUtil.isStrEmpty(metadataId)){
|
|
|
if (!StringUtil.isStrEmpty(metadataId)) {
|
|
|
Integer newMetadataId = Integer.parseInt(metadataId);
|
|
|
newMetadataIdList.add(newMetadataId);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if (newDatasetIdList.size() == 0) {
|
|
|
return Result.error("定制内容为空");
|
|
|
}
|
|
|
|
|
|
updateDatasetCustomizeData(schemeId, aVersion, sVersion, newDatasetIdList, newMetadataIdList);
|
|
|
return Result.success("定制数据集成功");
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
return Result.error("定制数据集失败");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public void updateDatasetCustomizeData(Integer schemeId, AdapterVersion aVersion, StandardVersion sVersion, List<Integer> newDatasetIdList, List<Integer> newMetadataIdList) {
|
|
|
List<String> insertSqlList = new ArrayList<>();
|
|
|
insertSqlList.add(Constants.DELETE + Constants.FROM + aVersion.getDataSetTableName());
|
|
|
insertSqlList.add(Constants.DELETE + Constants.FROM + aVersion.getMetaDataTableName());
|
|
|
insertSqlList.add(Constants.DELETE + Constants.FROM + aVersion.getDictTableName());
|
|
|
insertSqlList.add(Constants.DELETE + Constants.FROM + aVersion.getDictEntryTableName());
|
|
|
|
|
|
public void updateDatasetCustomizeData(Integer schemeId, AdapterVersion aVersion, StandardVersion sVersion, List<Integer> newDatasetIdList, List<Integer> newMetadataIdList) throws Exception {
|
|
|
List<StdMetaDataModel> metadataList = new ArrayList<StdMetaDataModel>();
|
|
|
if(newMetadataIdList.size()>0){
|
|
|
if (newMetadataIdList.size() > 0) {
|
|
|
SqlCreator sqlCreator = new SqlCreator(StdMetaDataModel.class);
|
|
|
sqlCreator.inCondition("id", newMetadataIdList);
|
|
|
String sql = sqlCreator.selectData(sVersion.getMetaDataTableName());
|
|
|
Query query = getQuery(sqlCreator, sql);
|
|
|
metadataList = query.list();
|
|
|
metadataList = query.list();
|
|
|
}
|
|
|
|
|
|
List<Integer> newDictdList = new ArrayList<>();
|
|
@ -368,44 +369,148 @@ public class AdapterDatasetService extends SQLGeneralDAO {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if(newDatasetIdList.size()>0){
|
|
|
List<String> insertSqlList = new ArrayList<>();
|
|
|
// 找出新增 删除 modify by cyj
|
|
|
List<AdapterDatasetModel> datasetModels = selectData(aVersion.getDataSetTableName(), AdapterDatasetModel.class);
|
|
|
List<AdapterMetadataModel> metadataModels = selectData(aVersion.getMetaDataTableName(), AdapterMetadataModel.class);
|
|
|
List<AdapterDictModel> dictModels = selectData(aVersion.getDictTableName(), AdapterDictModel.class);
|
|
|
// List<AdapterDictEntryModel> dictEntryModels = selectData(aVersion.getDictEntryTableName(), AdapterDictEntryModel.class);
|
|
|
List<Integer> oldDatasetIdList = new ArrayList<>();
|
|
|
for (AdapterDatasetModel datasetModel : datasetModels) {
|
|
|
oldDatasetIdList.add(datasetModel.getId());
|
|
|
}
|
|
|
List<Integer> oldMetadataIdList = new ArrayList<>();
|
|
|
for (AdapterMetadataModel metadataModel : metadataModels) {
|
|
|
oldMetadataIdList.add(metadataModel.getId());
|
|
|
}
|
|
|
List<Integer> oldDictIdList = new ArrayList<>();
|
|
|
for (AdapterDictModel dictModel : dictModels) {
|
|
|
oldDictIdList.add(dictModel.getId());
|
|
|
}
|
|
|
// List<Integer> oldDictEntryIdList = new ArrayList<>();
|
|
|
// for (AdapterDictEntryModel entryModel : dictEntryModels) {
|
|
|
// oldDictEntryIdList.add(entryModel.getStdDictId());
|
|
|
// }
|
|
|
Map<String, List<Integer>> datasetMap = getDiffId(newDatasetIdList, oldDatasetIdList);
|
|
|
Map<String, List<Integer>> metaMap = getDiffId(newMetadataIdList, oldMetadataIdList);
|
|
|
Map<String, List<Integer>> dicMap = getDiffId(newDictdList, oldDictIdList);
|
|
|
// Map<String,List<Integer>> dicEntryMap = getDiffId(newDictdList,oldDictEntryIdList);
|
|
|
// add del
|
|
|
List<Integer> delDatasetList = datasetMap.get("del");
|
|
|
if (delDatasetList.size() > 0) {
|
|
|
insertSqlList.add(delData(aVersion.getDataSetTableName(), "id", delDatasetList));
|
|
|
}
|
|
|
List<Integer> delMetaList = metaMap.get("del");
|
|
|
if (delMetaList.size() > 0) {
|
|
|
insertSqlList.add(delData(aVersion.getMetaDataTableName(), "id", delMetaList));
|
|
|
}
|
|
|
List<Integer> delDicList = dicMap.get("del");
|
|
|
if (delDicList.size() > 0) {
|
|
|
insertSqlList.add(delData(aVersion.getDictTableName(), "id", delDicList));
|
|
|
insertSqlList.add(delData(aVersion.getDictEntryTableName(), "std_dict_id", delDicList));
|
|
|
}
|
|
|
/* insertSqlList.add(Constants.DELETE + Constants.FROM + aVersion.getDataSetTableName());
|
|
|
insertSqlList.add(Constants.DELETE + Constants.FROM + aVersion.getMetaDataTableName());
|
|
|
insertSqlList.add(Constants.DELETE + Constants.FROM + aVersion.getDictTableName());
|
|
|
insertSqlList.add(Constants.DELETE + Constants.FROM + aVersion.getDictEntryTableName());*/
|
|
|
|
|
|
List<Integer> addDataSetList = datasetMap.get("add");
|
|
|
if (addDataSetList.size() > 0) {
|
|
|
insertSqlList.add(insertData(aVersion.getDataSetTableName(), sVersion.getDataSetTableName(),
|
|
|
new String[]{"id,std_dataset_id,std_dataset_code,std_dataset_name"},
|
|
|
new String[]{"id,id,code,name"},
|
|
|
schemeId,
|
|
|
"id",
|
|
|
newDatasetIdList));
|
|
|
addDataSetList));
|
|
|
}
|
|
|
if(newMetadataIdList.size()>0){
|
|
|
List<Integer> addMetaList = metaMap.get("add");
|
|
|
if (addMetaList.size() > 0) {
|
|
|
insertSqlList.add(insertData(aVersion.getMetaDataTableName(), sVersion.getMetaDataTableName(),
|
|
|
new String[]{"id,std_metadata_id,std_metadata_code,std_metadata_name,std_dataset_id,std_dict_id"},
|
|
|
new String[]{"id,id,code,name,dataset_id,dict_id"},
|
|
|
schemeId,
|
|
|
"id",
|
|
|
newMetadataIdList));
|
|
|
addMetaList));
|
|
|
}
|
|
|
|
|
|
if(newDictdList.size()>0){
|
|
|
List<Integer> addDicList = dicMap.get("add");
|
|
|
if (addDicList.size() > 0) {
|
|
|
insertSqlList.add(insertData(aVersion.getDictTableName(), sVersion.getDictTableName(),
|
|
|
new String[] {"id,std_dict_id,std_dict_code,std_dict_name"},
|
|
|
new String[] {"id,id,code,name"},
|
|
|
new String[]{"id,std_dict_id,std_dict_code,std_dict_name"},
|
|
|
new String[]{"id,id,code,name"},
|
|
|
schemeId,
|
|
|
"id",
|
|
|
newDictdList));
|
|
|
addDicList));
|
|
|
insertSqlList.add(insertData(aVersion.getDictEntryTableName(), sVersion.getDictEntryTableName(),
|
|
|
new String[] {"id,std_entry_id,std_entry_code,std_entry_value,std_dict_id"},
|
|
|
new String[] {"id,id,code,value,dict_id"},
|
|
|
new String[]{"id,std_entry_id,std_entry_code,std_entry_value,std_dict_id"},
|
|
|
new String[]{"id,id,code,value,dict_id"},
|
|
|
schemeId,
|
|
|
"dict_id",
|
|
|
newDictdList));
|
|
|
addDicList));
|
|
|
}
|
|
|
|
|
|
if(insertSqlList.size()>0){
|
|
|
if (insertSqlList.size() > 0) {
|
|
|
insertBatch(insertSqlList);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
private String delData(String adapterTableName, String item, List<Integer> idList) {
|
|
|
StringBuffer sql = new StringBuffer();
|
|
|
String idStr = Constants.EMPTY;
|
|
|
for (Integer id : idList) {
|
|
|
idStr += id + Constants.COMMA;
|
|
|
}
|
|
|
if (!StringUtil.isEmpty(idStr)) {
|
|
|
idStr = Constants.LEFT_BRACKET + idStr.substring(0, idStr.length() - 1) + Constants.RIGHT_BRACKET;
|
|
|
}
|
|
|
sql.append(Constants.DELETE + Constants.FROM).append(adapterTableName).append(Constants.WHERE).append(item).append(Constants.IN).append(idStr);
|
|
|
return sql.toString();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 将第一个数组放入map(id,1) 然后循环第二个数组,如果map中找到对应键值就+1 不存在设置 1
|
|
|
*
|
|
|
* @param firtList new
|
|
|
* @param secondList old
|
|
|
*/
|
|
|
private Map<String, List<Integer>> getDiffId(List<Integer> firtList, List<Integer> secondList) {
|
|
|
Map<Integer, Integer> map = new HashMap<>();
|
|
|
for (Integer id : firtList) {
|
|
|
map.put(id, 1);
|
|
|
}
|
|
|
|
|
|
for (Integer id1 : secondList) {
|
|
|
Integer flag = map.get(id1);
|
|
|
if (flag != null) {
|
|
|
map.put(id1, ++flag);
|
|
|
} else {
|
|
|
map.put(id1, 1);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
List<Integer> diffLs = new ArrayList<>();
|
|
|
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
|
|
|
if (entry.getValue() == 1) {
|
|
|
diffLs.add(entry.getKey());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
List<Integer> delIDLs = new ArrayList<>();
|
|
|
List<Integer> addIDLs = new ArrayList<>();
|
|
|
for (Integer diffL : diffLs) {
|
|
|
if (firtList.contains(diffL)) {
|
|
|
addIDLs.add(diffL);
|
|
|
} else if (secondList.contains(diffL)) {
|
|
|
delIDLs.add(diffL);
|
|
|
}
|
|
|
}
|
|
|
Map<String, List<Integer>> listMap = new HashMap<>();
|
|
|
listMap.put("del", delIDLs);
|
|
|
listMap.put("add", addIDLs);
|
|
|
return listMap;
|
|
|
}
|
|
|
|
|
|
private String insertData(String adapterTableName, String stdTableName, String[] item1, String[] item2, Integer schemeId, String item, List<Integer> idList) {
|
|
|
StringBuffer sql = new StringBuffer();
|
|
|
String idStr = Constants.EMPTY;
|
|
@ -413,14 +518,14 @@ public class AdapterDatasetService extends SQLGeneralDAO {
|
|
|
idStr += id + Constants.COMMA;
|
|
|
}
|
|
|
if (!StringUtil.isEmpty(idStr)) {
|
|
|
idStr = Constants.LEFT_BRACKET + idStr.substring(0, idStr.length() - 1) + Constants.RIGHT_BRACKET;
|
|
|
idStr = Constants.LEFT_BRACKET + idStr.substring(0, idStr.length() - 1) + Constants.RIGHT_BRACKET;
|
|
|
}
|
|
|
|
|
|
sql.append(Constants.INSERT_INTO + adapterTableName + Constants.LEFT_BRACKET);
|
|
|
for (String it : item1) {
|
|
|
sql.append(it + Constants.COMMA);
|
|
|
}
|
|
|
sql.append("scheme_id" + Constants.RIGHT_BRACKET + Constants.LEFT_BRACKET + Constants.SELECT );
|
|
|
sql.append("scheme_id" + Constants.RIGHT_BRACKET + Constants.LEFT_BRACKET + Constants.SELECT);
|
|
|
for (String it : item2) {
|
|
|
sql.append(it + Constants.COMMA);
|
|
|
}
|
|
@ -428,6 +533,12 @@ public class AdapterDatasetService extends SQLGeneralDAO {
|
|
|
return sql.toString();
|
|
|
}
|
|
|
|
|
|
public List selectData(String adapterTableName, Class clazz) throws Exception {
|
|
|
StringBuffer sql = new StringBuffer();
|
|
|
sql.append("SELECT * FROM ").append(adapterTableName);
|
|
|
return queryListBySql(sql.toString(), clazz);
|
|
|
}
|
|
|
|
|
|
public List getAdapterDatasetNotNullList(AdapterVersion adapterVersion, String condition) {
|
|
|
try {
|
|
|
StringBuffer sql = new StringBuffer();
|
|
@ -463,16 +574,16 @@ public class AdapterDatasetService extends SQLGeneralDAO {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public AdapterDatasetModel getAdapterDatasetByCode(String version,String datasetCode) {
|
|
|
public AdapterDatasetModel getAdapterDatasetByCode(String version, String datasetCode) {
|
|
|
try {
|
|
|
if (StringUtil.isEmpty(datasetCode)) {
|
|
|
return null;
|
|
|
}
|
|
|
SqlCreator sqlCreator = new SqlCreator(AdapterDatasetModel.class);
|
|
|
sqlCreator.equalCondition("stdDatasetCode", datasetCode);
|
|
|
String sql = sqlCreator.selectData("adapter_dataset_"+version);
|
|
|
String sql = sqlCreator.selectData("adapter_dataset_" + version);
|
|
|
Query query = getQuery(sqlCreator, sql);
|
|
|
return (AdapterDatasetModel)query.uniqueResult();
|
|
|
return (AdapterDatasetModel) query.uniqueResult();
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
return null;
|