|
@ -1,296 +0,0 @@
|
|
|
package com.yihu.ehr.standard.service.adapter;
|
|
|
|
|
|
|
|
|
import com.fasterxml.jackson.databind.JsonNode;
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
import com.yihu.ehr.framework.common.dao.SQLGeneralDAO;
|
|
|
import com.yihu.ehr.framework.constrant.ErrorCode;
|
|
|
import com.yihu.ehr.framework.exception.ApiException;
|
|
|
import com.yihu.ehr.framework.util.operator.CollectionUtil;
|
|
|
import com.yihu.ehr.framework.util.operator.StringUtil;
|
|
|
import com.yihu.ehr.framework.util.sql.SqlCreator;
|
|
|
import com.yihu.ehr.standard.model.adapter.AdapterDictModel;
|
|
|
import com.yihu.ehr.standard.model.adapter.AdapterDictEntryModel;
|
|
|
import com.yihu.ehr.standard.model.adapter.AdapterSchemeModel;
|
|
|
import com.yihu.ehr.standard.model.adapter.resultModel.AdapterDictEntryResultDetailModel;
|
|
|
import com.yihu.ehr.standard.model.standard.StdDictionaryModel;
|
|
|
import com.yihu.ehr.standard.service.bo.AdapterVersion;
|
|
|
import com.yihu.ehr.standard.service.bo.StandardVersion;
|
|
|
import org.hibernate.Query;
|
|
|
import org.hibernate.Session;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
import java.util.*;
|
|
|
@Transactional
|
|
|
@Service("AdapterDictEntryService")
|
|
|
public class AdapterDictEntryService extends SQLGeneralDAO {
|
|
|
|
|
|
public static final String BEAN_ID = "AdapterDictEntryService";
|
|
|
|
|
|
public AdapterDictEntryService() {
|
|
|
}
|
|
|
|
|
|
public void finalize() throws Throwable {
|
|
|
super.finalize();
|
|
|
}
|
|
|
|
|
|
public AdapterDictEntryModel add(String adapterVersion, String dictentry) {
|
|
|
try {
|
|
|
AdapterVersion version = new AdapterVersion(adapterVersion);
|
|
|
ObjectMapper objectMapper = new ObjectMapper();
|
|
|
AdapterDictEntryModel adapterDictEntryModel = objectMapper.readValue(dictentry, AdapterDictEntryModel.class);
|
|
|
Session session = getCurrentSession();
|
|
|
String sql = "select max(id) from " + version.getDictEntryTableName();
|
|
|
Query query = session.createSQLQuery(sql);
|
|
|
Object object = query.uniqueResult();
|
|
|
adapterDictEntryModel.setId(object == null ? 1 : Integer.parseInt(object.toString()) + 1);
|
|
|
|
|
|
JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(adapterDictEntryModel));
|
|
|
SqlCreator sqlCreator = new SqlCreator(AdapterDictEntryModel.class);
|
|
|
sql = sqlCreator.insertData(version.getDictEntryTableName(), jsonNode);
|
|
|
query = getExeuteQuery(sqlCreator, sql);
|
|
|
query.executeUpdate();
|
|
|
return adapterDictEntryModel;
|
|
|
} catch (Exception e) {
|
|
|
throw new ApiException(ErrorCode.saveDictEntryFailed);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public void delete(String adapterVersion, Integer dictentryId) {
|
|
|
try {
|
|
|
if (adapterVersion == null || adapterVersion.length() == 0) throw new IllegalArgumentException("无效版本");
|
|
|
AdapterVersion version = new AdapterVersion(adapterVersion);
|
|
|
Session session = getCurrentSession();
|
|
|
String sql = "delete from " + version.getDictEntryTableName() + " where id = :id";
|
|
|
Query query = session.createSQLQuery(sql);
|
|
|
query.setInteger("id", dictentryId);
|
|
|
query.executeUpdate();
|
|
|
} catch (Exception e) {
|
|
|
throw new ApiException(ErrorCode.DeleteDictEntryFailed);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public AdapterDictEntryModel modify(String adapterVersion, String dictentry) {
|
|
|
try {
|
|
|
AdapterVersion version = new AdapterVersion(adapterVersion);
|
|
|
ObjectMapper objectMapper = new ObjectMapper();
|
|
|
AdapterDictEntryModel adapterDictEntryModel = objectMapper.readValue(dictentry, AdapterDictEntryModel.class);
|
|
|
JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(adapterDictEntryModel));
|
|
|
SqlCreator sqlCreator = new SqlCreator(AdapterDictEntryModel.class);
|
|
|
String sql = sqlCreator.updateDataByTableKey(version.getDictEntryTableName(), jsonNode);
|
|
|
Query query = getExeuteQuery(sqlCreator, sql);
|
|
|
query.executeUpdate();
|
|
|
return adapterDictEntryModel;
|
|
|
} catch (Exception e) {
|
|
|
throw new ApiException(ErrorCode.UpdateDictEntryFailed);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public List getDictEntryList(Class tClass, String adapterVersion, String condition, String order, Integer limit, Integer offset) {
|
|
|
AdapterVersion version = new AdapterVersion(adapterVersion);
|
|
|
String tableName = version.getDictEntryTableName();
|
|
|
SqlCreator sqlCreator = new SqlCreator(tClass);
|
|
|
ObjectMapper objectMapper = new ObjectMapper();
|
|
|
if (!StringUtil.isEmpty(condition)) {
|
|
|
try {
|
|
|
JsonNode jsonNode = objectMapper.readTree(condition);
|
|
|
String name = jsonNode.get("name").asText();
|
|
|
sqlCreator.equalCondition("stdDictId", jsonNode.get("stdDictId").asInt());
|
|
|
sqlCreator.likeOrCondition("stdEntryCode", "stdEntryValue", name);
|
|
|
} catch (IOException e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
try {
|
|
|
if (!StringUtil.isEmpty(order)) {
|
|
|
JsonNode jsonNode = objectMapper.readTree(order);
|
|
|
Iterator<String> fieldNames = jsonNode.fieldNames();
|
|
|
while (fieldNames.hasNext()) {
|
|
|
String fieldName = fieldNames.next();
|
|
|
String value = jsonNode.get(fieldName).asText().toUpperCase();
|
|
|
sqlCreator.order(fieldName, value);
|
|
|
}
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
|
|
|
String sql = sqlCreator.selectData(tableName);
|
|
|
Query query = getQuery(sqlCreator, sql);
|
|
|
if (limit != null) {
|
|
|
query.setMaxResults(limit);
|
|
|
if (offset != null) {
|
|
|
query.setFirstResult(offset * limit);
|
|
|
}
|
|
|
}
|
|
|
List<AdapterDictEntryModel> modelList = query.list();
|
|
|
List<Integer> idList = new ArrayList<>();
|
|
|
Map<Integer, StdDictionaryModel> stdDictModelMap = new HashMap<>();
|
|
|
Integer schemeId = null;
|
|
|
for (AdapterDictEntryModel model : modelList) {
|
|
|
if (model.getAdapterDictId() != null) {
|
|
|
schemeId = model.getSchemeId();
|
|
|
idList.add(model.getAdapterDictId());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if (!CollectionUtil.isEmpty(idList)) {
|
|
|
AdapterSchemeModel scheme = getEntity(AdapterSchemeModel.class, schemeId);
|
|
|
StandardVersion standardVersion = new StandardVersion(scheme.getAdapterStdVersion());
|
|
|
tableName = standardVersion.getDictTableName();
|
|
|
sqlCreator = new SqlCreator(StdDictionaryModel.class);
|
|
|
sqlCreator.inCondition("id", idList);
|
|
|
sql = sqlCreator.selectData(tableName);
|
|
|
query = getQuery(sqlCreator, sql);
|
|
|
List<StdDictionaryModel> stdDictModelList = query.list();
|
|
|
for (StdDictionaryModel model : stdDictModelList) {
|
|
|
stdDictModelMap.put(model.getId(), model);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
List<AdapterDictEntryResultDetailModel> detailModelList = new ArrayList<>();
|
|
|
for (AdapterDictEntryModel model : modelList) {
|
|
|
AdapterDictEntryResultDetailModel detailModel = new AdapterDictEntryResultDetailModel();
|
|
|
detailModel.setId(model.getId());
|
|
|
detailModel.setSchemeId(model.getSchemeId());
|
|
|
detailModel.setAdapterDictId(model.getAdapterDictId());
|
|
|
detailModel.setAdapterEntryId(model.getAdapterEntryId());
|
|
|
detailModel.setAdapterEntryCode(model.getAdapterEntryCode());
|
|
|
detailModel.setAdapterEntryValue(model.getAdapterEntryValue());
|
|
|
detailModel.setStdDictId(model.getStdDictId());
|
|
|
detailModel.setStdEntryId(model.getStdEntryId());
|
|
|
detailModel.setStdEntryCode(model.getStdEntryCode());
|
|
|
detailModel.setStdEntryValue(model.getStdEntryValue());
|
|
|
if (stdDictModelMap.get(model.getAdapterDictId()) != null) {
|
|
|
detailModel.setAdapterDictCode(stdDictModelMap.get(model.getAdapterDictId()).getCode());
|
|
|
detailModel.setAdapterDictName(stdDictModelMap.get(model.getAdapterDictId()).getName());
|
|
|
}
|
|
|
detailModelList.add(detailModel);
|
|
|
}
|
|
|
return detailModelList;
|
|
|
}
|
|
|
|
|
|
public Integer getDictEntryInt(Class tClass, String adapterVersion, String condition) {
|
|
|
AdapterVersion version = new AdapterVersion(adapterVersion);
|
|
|
String tableName = version.getDictEntryTableName();
|
|
|
SqlCreator sqlCreator = new SqlCreator(tClass);
|
|
|
ObjectMapper objectMapper = new ObjectMapper();
|
|
|
if (!StringUtil.isEmpty(condition)) {
|
|
|
try {
|
|
|
JsonNode jsonNode = objectMapper.readTree(condition);
|
|
|
String name = jsonNode.get("name").asText();
|
|
|
sqlCreator.equalCondition("stdDictId", jsonNode.get("stdDictId").asInt());
|
|
|
sqlCreator.likeOrCondition("stdEntryCode", "stdEntryValue", name);
|
|
|
} catch (IOException e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
String sql = sqlCreator.countData(tableName);
|
|
|
Query query = getCurrentSession().createSQLQuery(sql);
|
|
|
for (String key : sqlCreator.getKeyValueMap().keySet()) {
|
|
|
query.setParameter(key, sqlCreator.getKeyValueMap().get(key));
|
|
|
}
|
|
|
Integer count = Integer.parseInt(StringUtil.toString(query.list().get(0)));
|
|
|
return count;
|
|
|
}
|
|
|
|
|
|
public List<AdapterDictEntryResultDetailModel> updateDictEntrys(String adapterVersion, String list) {
|
|
|
try {
|
|
|
AdapterVersion version = new AdapterVersion(adapterVersion);
|
|
|
ObjectMapper objectMapper = new ObjectMapper();
|
|
|
List<AdapterDictEntryResultDetailModel> adapterDictEntryList = Arrays.asList(objectMapper.readValue(list, AdapterDictEntryResultDetailModel[].class));
|
|
|
List<Integer> idList = new ArrayList<>();
|
|
|
Map<Integer, AdapterDictEntryResultDetailModel> dictEntryResultMap = new HashMap<>();
|
|
|
Integer maxId = null;
|
|
|
for (AdapterDictEntryResultDetailModel dictEntryModel : adapterDictEntryList) {
|
|
|
AdapterDictEntryModel adapterDictEntryModel = new AdapterDictEntryModel();
|
|
|
adapterDictEntryModel.setId(dictEntryModel.getId());
|
|
|
adapterDictEntryModel.setSchemeId(dictEntryModel.getSchemeId());
|
|
|
adapterDictEntryModel.setAdapterDictId(dictEntryModel.getAdapterDictId());
|
|
|
adapterDictEntryModel.setAdapterEntryId(dictEntryModel.getAdapterEntryId());
|
|
|
adapterDictEntryModel.setAdapterEntryCode(dictEntryModel.getAdapterEntryCode());
|
|
|
adapterDictEntryModel.setAdapterEntryValue(dictEntryModel.getAdapterEntryValue());
|
|
|
adapterDictEntryModel.setStdDictId(dictEntryModel.getStdDictId());
|
|
|
adapterDictEntryModel.setStdEntryId(dictEntryModel.getStdEntryId());
|
|
|
adapterDictEntryModel.setStdEntryCode(dictEntryModel.getStdEntryCode());
|
|
|
adapterDictEntryModel.setStdEntryValue(dictEntryModel.getStdEntryValue());
|
|
|
idList.add(dictEntryModel.getStdDictId());
|
|
|
dictEntryResultMap.put(dictEntryModel.getStdDictId(), dictEntryModel);
|
|
|
SqlCreator sqlCreator = new SqlCreator(AdapterDictEntryModel.class);
|
|
|
String sql;
|
|
|
if (dictEntryModel.getId() == null) {
|
|
|
if (maxId == null) {
|
|
|
sql = "select max(id) from " + version.getDictEntryTableName();
|
|
|
Query query = getCurrentSession().createSQLQuery(sql);
|
|
|
Object object = query.uniqueResult();
|
|
|
maxId = object == null ? 1 : Integer.parseInt(object.toString()) + 1;
|
|
|
}
|
|
|
adapterDictEntryModel.setId(maxId++);
|
|
|
JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(adapterDictEntryModel));
|
|
|
sql = sqlCreator.insertData(version.getDictEntryTableName(), jsonNode);
|
|
|
} else {
|
|
|
JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(adapterDictEntryModel));
|
|
|
sql = sqlCreator.updateDataByTableKey(version.getDictEntryTableName(), jsonNode);
|
|
|
}
|
|
|
|
|
|
Query query = getExeuteQuery(sqlCreator, sql);
|
|
|
query.executeUpdate();
|
|
|
}
|
|
|
if (!CollectionUtil.isEmpty(idList)) {
|
|
|
String tableName = version.getDictTableName();
|
|
|
SqlCreator sqlCreator = new SqlCreator(AdapterDictModel.class);
|
|
|
sqlCreator.inCondition("stdDictId", idList);
|
|
|
String sql = sqlCreator.selectData(tableName);
|
|
|
Query query = getQuery(sqlCreator, sql);
|
|
|
List<AdapterDictModel> adapterDictModelList = query.list();
|
|
|
for (AdapterDictModel model : adapterDictModelList) {
|
|
|
AdapterDictEntryResultDetailModel dictentryModel = dictEntryResultMap.get(model.getStdDictId());
|
|
|
model.setAdapterDictId(dictentryModel.getAdapterDictId());
|
|
|
model.setAdapterDictCode(dictentryModel.getAdapterDictCode());
|
|
|
model.setAdapterDictName(dictentryModel.getAdapterDictName());
|
|
|
JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(model));
|
|
|
sqlCreator = new SqlCreator(AdapterDictModel.class);
|
|
|
sql = sqlCreator.updateDataByTableKey(version.getDictTableName(), jsonNode);
|
|
|
query = getExeuteQuery(sqlCreator, sql);
|
|
|
query.executeUpdate();
|
|
|
}
|
|
|
}
|
|
|
return adapterDictEntryList;
|
|
|
} catch (Exception e) {
|
|
|
throw new ApiException(ErrorCode.saveDictEntryFailed);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public void deleteMultiple(String adapterVersion, Integer dictEntryId, Integer stdDictId, Integer adapterDictId) {
|
|
|
try {
|
|
|
if (adapterVersion == null || adapterVersion.length() == 0) {
|
|
|
throw new ApiException(ErrorCode.InvalidStdVersion);
|
|
|
}
|
|
|
AdapterVersion version = new AdapterVersion(adapterVersion);
|
|
|
Session session = getCurrentSession();
|
|
|
|
|
|
String sql = "delete from " + version.getDictEntryTableName() + " where id = :id";
|
|
|
Query query = session.createSQLQuery(sql);
|
|
|
query.setInteger("id", dictEntryId);
|
|
|
query.executeUpdate();
|
|
|
|
|
|
SqlCreator sqlCreator = new SqlCreator(AdapterDictEntryModel.class);
|
|
|
sqlCreator.equalCondition("stdDictId", stdDictId);
|
|
|
sqlCreator.equalCondition("adapterDictId", adapterDictId);
|
|
|
sql = sqlCreator.countData(version.getDictEntryTableName());
|
|
|
query = getExeuteQuery(sqlCreator, sql);
|
|
|
Integer count = Integer.parseInt(StringUtil.toString(query.list().get(0)));
|
|
|
if (count == 0) {
|
|
|
sql = "delete from " + version.getDictTableName() + " where std_dict_id = :stdDictId and adapter_dict_id = :adapterDictId";
|
|
|
query = session.createSQLQuery(sql);
|
|
|
query.setInteger("stdDictId", stdDictId);
|
|
|
query.setInteger("adapterDictId", adapterDictId);
|
|
|
query.executeUpdate();
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
throw new ApiException(ErrorCode.DeleteDictEntryFailed);
|
|
|
}
|
|
|
}
|
|
|
}
|