diff --git a/nursing-unit-common/src/main/java/com/nu/utils/DictUtils.java b/nursing-unit-common/src/main/java/com/nu/utils/DictUtils.java
new file mode 100644
index 00000000..d8a07d47
--- /dev/null
+++ b/nursing-unit-common/src/main/java/com/nu/utils/DictUtils.java
@@ -0,0 +1,175 @@
+package com.nu.utils;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ReflectUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.jeecg.common.api.CommonAPI;
+import org.jeecg.common.aspect.DictAspect;
+import org.jeecg.common.aspect.annotation.Dict;
+import org.jeecg.common.util.oConvertUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
+
+import java.lang.reflect.Field;
+
+/**
+ * 字典翻译辅助工具类
+ */
+@Component
+public class DictUtils {
+
+ private static final Logger log = LoggerFactory.getLogger(DictAspect.class);
+
+ private CommonAPI commonAPI;
+
+ @Autowired
+ public void setCommonAPI(CommonAPI commonAPI) {
+ this.commonAPI = commonAPI;
+ }
+
+ /**
+ * 翻译字典,支持@Dict的翻译,翻译出的字段放在有@Dict字段的名字 + "_dictText"
+ * @param o 传入的是单个entity对象
+ * @return 返回的是json对象
+ */
+ public JSONObject translateDict(Object o){
+ Field[] fields = ReflectUtil.getFields(o.getClass());
+ ObjectMapper mapper = new ObjectMapper();
+ String json = "{}";
+ try {
+ json = mapper.writeValueAsString(o);
+ } catch (JsonProcessingException e) {
+ log.error("json解析失败" + e.getMessage(), e);
+ }
+ JSONObject item = JSONObject.parseObject(json);
+ for (Field field:fields){
+ if (field.getAnnotation(Dict.class) != null) {
+ String key = String.valueOf(item.get(field.getName()));
+ String textValue = getDictTxt(field,key);
+ item.put(field.getName() + "_dictText", textValue);
+ }
+ }
+ return item;
+ }
+
+ /**
+ * 翻译字典,支持@Dict的翻译,翻译出的字段放在有@Dict字段的名字 + "_dictText"
+ * 在clazz与o不是一种对象时使用
+ * 如果需要保持一致请使用{@link org.jeecg.modules.tools.DictUtils#translateDictSelf}
+ * @param o 传入的是单个entity对象
+ * @param clazz 返回对象的类型
+ * @return 传入的clazz类型的新对象
+ * @throws IllegalAccessException
+ */
+ public T translateDict(Object o,Class clazz) throws IllegalAccessException {
+ Field[] fields = ReflectUtil.getFields(clazz);
+ T rObject = ReflectUtil.newInstance(clazz);
+ //将所有内容转入新对象里
+ BeanUtil.copyProperties(o,rObject);
+ return translateDictSelf(rObject,clazz);
+ }
+
+ /**
+ * 翻译字典,支持@Dict的翻译,翻译出的字段放在有@Dict字段的名字 + "_dictText"
+ * 此方法返回自己,保证是同一个对象,以方便list使用
+ * 如果需要保持一致请使用{@link org.jeecg.modules.tools.DictUtils#translateDict}
+ * @param o 传入的是单个entity对象,也是返回的对象
+ * @param clazz 返回对象的类型
+ * @return 返回的是变量o这个对象
+ * @throws IllegalAccessException
+ */
+ public T translateDictSelf(T o,Class clazz) throws IllegalAccessException {
+ Field[] fields = ReflectUtil.getFields(clazz);
+ for (Field field:fields){
+ if (field.getAnnotation(Dict.class) != null) {
+ boolean accessible = field.isAccessible();
+ field.setAccessible(true);
+ String key = String.valueOf(field.get(o));
+ field.setAccessible(accessible);
+ String textValue = getDictTxt(field,key);
+ Field newField = ReflectUtil.getField(clazz,field.getName() + "_dictText");
+ //为空则赋值失败
+ if(newField != null){
+ boolean accessibleNew = newField.isAccessible();
+ newField.setAccessible(true);
+ newField.set(o,textValue);
+ newField.setAccessible(accessibleNew);
+ }else{
+ log.error("字段【{}{}】不存在!值为:{} ",field.getName(),"_dictText",textValue);
+ }
+ }
+ }
+ return o;
+ }
+
+ /**
+ * 获取根据属性和真实的值获取字典值
+ * @param field 反射出来的类属性
+ * @param key 查询的值
+ * @return 字典文本
+ */
+ private String getDictTxt(Field field,String key){
+ boolean accessible = field.isAccessible();
+ field.setAccessible(true);
+ String code = field.getAnnotation(Dict.class).dicCode();
+ String text = field.getAnnotation(Dict.class).dicText();
+ String table = field.getAnnotation(Dict.class).dictTable();
+ String textValue = translateDictValue(code, text, table, key);
+ log.debug(" 字典Val : " + textValue);
+ log.debug(" __翻译字典字段__ " + field.getName() + "_dictText" + ": " + textValue);
+ field.setAccessible(accessible);
+ return textValue;
+ }
+
+ /**
+ * 翻译字典
+ * @param code 字典code字段
+ * @param key 字典查询的值
+ * @return 字典文本
+ */
+ public String translateDictValue(String code, String key) {
+ return translateDictValue(code,"","",key);
+ }
+
+ /**
+ * 翻译字典
+ * @param code 字典code字段
+ * @param text 字典文字字段
+ * @param table 字典表名
+ * @param key 字典查询的值
+ * @return 字典文本
+ */
+ public String translateDictValue(String code, String text, String table, String key) {
+ if (oConvertUtils.isEmpty(key)) {
+ return null;
+ } else {
+ StringBuilder textValue = new StringBuilder();
+ String[] keys = key.split(",");
+ for(int i = 0; i < keys.length; ++i) {
+ String k = keys[i];
+ String tmpValue;
+ log.debug(" 字典 key : " + k);
+ if (k.trim().length() != 0) {
+ if (!StringUtils.isEmpty(table)) {
+ log.debug("--DictUtils------dicTable=" + table + " ,dicText= " + text + " ,dicCode=" + code);
+ tmpValue = this.commonAPI.translateDictFromTable(table, text, code, k.trim());
+ } else {
+ tmpValue = this.commonAPI.translateDict(code, k.trim());
+ }
+ if (tmpValue != null) {
+ if (!"".equals(textValue.toString())) {
+ textValue.append(",");
+ }
+ textValue.append(tmpValue);
+ }
+ }
+ }
+ return textValue.toString();
+ }
+ }
+}
diff --git a/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/eldertag/entity/ElderTag.java b/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/eldertag/entity/ElderTag.java
index f2ca3c65..aa1926f8 100644
--- a/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/eldertag/entity/ElderTag.java
+++ b/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/eldertag/entity/ElderTag.java
@@ -100,4 +100,13 @@ public class ElderTag implements Serializable {
/**需要同步的id */
@TableField(exist = false)
private String SyncIds;
+ /**对比的机构编码 */
+ @TableField(exist = false)
+ private String compareOrgCode;
+ //本平台是否存在该指令
+ @TableField(exist = false)
+ private boolean ownExist;
+ //目标平台是否存在该指令
+ @TableField(exist = false)
+ private boolean targetExist;
}
diff --git a/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/eldertag/mapper/ElderTagMapper.java b/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/eldertag/mapper/ElderTagMapper.java
index 630d6011..bfa04353 100644
--- a/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/eldertag/mapper/ElderTagMapper.java
+++ b/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/eldertag/mapper/ElderTagMapper.java
@@ -13,5 +13,5 @@ import java.util.List;
*/
public interface ElderTagMapper extends BaseMapper {
- List allData();
+ List allDataIds();
}
diff --git a/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/eldertag/mapper/xml/ElderTagMapper.xml b/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/eldertag/mapper/xml/ElderTagMapper.xml
index c2ae65e0..822ba2e7 100644
--- a/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/eldertag/mapper/xml/ElderTagMapper.xml
+++ b/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/eldertag/mapper/xml/ElderTagMapper.xml
@@ -2,7 +2,7 @@
-
diff --git a/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/eldertag/service/IElderTagService.java b/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/eldertag/service/IElderTagService.java
index d47fddda..c6c04040 100644
--- a/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/eldertag/service/IElderTagService.java
+++ b/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/eldertag/service/IElderTagService.java
@@ -19,7 +19,7 @@ public interface IElderTagService extends IService {
ElderTagMQDto syncElderTag(String sourceOrgCode, String syncIds);
- List allData();
+ List allDataIds();
void insertAllDirectives(List needAddETList);
diff --git a/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/eldertag/service/impl/ElderTagServiceImpl.java b/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/eldertag/service/impl/ElderTagServiceImpl.java
index 5f2e60e3..e4faf576 100644
--- a/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/eldertag/service/impl/ElderTagServiceImpl.java
+++ b/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/eldertag/service/impl/ElderTagServiceImpl.java
@@ -15,6 +15,7 @@ import com.nu.modules.eldertag.mapper.ElderTagMapper;
import com.nu.modules.eldertag.service.IElderTagService;
import com.nu.modules.mq.eldertag.listener.ElderTagMQListener;
import com.nu.modules.sysconfig.ISysConfigApi;
+import com.nu.utils.DictUtils;
import com.nu.utils.HttpRequestUtil;
import com.nu.utils.NuFileUtils;
import com.nu.utils.RabbitMQUtil;
@@ -52,6 +53,8 @@ public class ElderTagServiceImpl extends ServiceImpl i
private RabbitMQUtil rabbitMQUtil;
@Autowired
private ICanAddElderTagService canAddElderTagService;
+ @Autowired
+ private DictUtils dictUtils;
/**
* 将资源放到静态目录中
@@ -109,8 +112,8 @@ public class ElderTagServiceImpl extends ServiceImpl i
}
@Override
- public List allData() {
- return baseMapper.allData();
+ public List allDataIds() {
+ return baseMapper.allDataIds();
}
@Override
@@ -125,75 +128,78 @@ public class ElderTagServiceImpl extends ServiceImpl i
List result = Lists.newArrayList();
//查询本平台的已有指令
-// List ownList = baseMapper.queryAndTranslate(null);
-// String existIds = "";
-// if (ownList != null && ownList.size() > 0) {
-// existIds = ownList.stream()
-// .map(l -> l.getId())
-// .map(String::valueOf)
-// .collect(Collectors.joining(","));
-// }
-//
-// // 查询目标平台已有指令
-// //各平台api地址都存在管理系统中 管理系统api地址在系统参数配置中 “ope_open_url”
-// JSONObject opeOpenUrl = sysConfigApi.getByKeyByDS("master", "ope_open_url");
-// String opeApiAddress = opeOpenUrl.getString("configValue");
-// if (opeApiAddress.endsWith("/")) {
-// opeApiAddress = opeApiAddress.substring(0, opeApiAddress.length() - 1);
-// }
-// String apiAddress = opeApiAddress + "/api/services/directive/queryCompareDirectives?orgCode=" + configServiceDirective.getCompareOrgCode();
-// List targetList = Lists.newArrayList();
-// try {
-// String res = HttpRequestUtil.doGet(apiAddress, HttpRequestUtil.createDefaultHeaders());
-// JSONObject jsonResponse = JSON.parseObject(res);
-// JSONObject r_ = jsonResponse.getJSONObject("result");
-// targetList = r_.getJSONArray("list")
-// .toJavaList(ConfigServiceDirective.class);
-// } catch (Exception e) {
-// e.printStackTrace();
-// }
-//
-// Map merged = new LinkedHashMap<>();
-//
-// // 先把本平台的放进去,标记 ownExist = true, targetExist = false
-// if (ownList != null) {
-// for (ConfigServiceDirective o : ownList) {
-// if (o == null || o.getId() == null) continue;
-// String id = String.valueOf(o.getId());
-// // 直接在原对象上设置标志(如果不想修改原对象请复制对象)
-// o.setOwnExist(true);
-// o.setTargetExist(false);
-// merged.put(id, o);
-// }
-// }
-//
-// // 再处理目标平台的数据,若已存在则把 targetExist 置 true,否则加入并标记为仅 target
-// if (targetList != null) {
-// for (ConfigServiceDirective t : targetList) {
-// if (t == null || t.getId() == null) continue;
-// String id = String.valueOf(t.getId());
-// if (merged.containsKey(id)) {
-// // 本平台已有,标记目标平台也存在
-// merged.get(id).setTargetExist(true);
-// } else {
-// // 仅目标平台有
-// t.setOwnExist(false);
-// t.setTargetExist(true);
-// merged.put(id, t);
-// }
-// }
-// }
-//
-// // 把合并后的值放到列表,并按需求排序:both -> own only -> target only
-// result = new ArrayList<>(merged.values());
-// result.sort(Comparator.comparingInt(d -> {
-// boolean own = Boolean.TRUE.equals(d.isOwnExist());
-// boolean target = Boolean.TRUE.equals(d.isTargetExist());
-// if (own && target) return 0; // 两个平台都有 -> 最前
-// if (own) return 1; // 仅本平台有 -> 中间
-// return 2; // 仅目标平台有 -> 最后
-// }));
+ List ownList = baseMapper.selectList(null);
+ String existIds = "";
+ if (ownList != null && ownList.size() > 0) {
+ existIds = ownList.stream()
+ .map(l -> l.getId())
+ .map(String::valueOf)
+ .collect(Collectors.joining(","));
+ }
+ // 查询目标平台已有指令
+ //各平台api地址都存在管理系统中 管理系统api地址在系统参数配置中 “ope_open_url”
+ JSONObject opeOpenUrl = sysConfigApi.getByKeyByDS("master", "ope_open_url");
+ String opeApiAddress = opeOpenUrl.getString("configValue");
+ if (opeApiAddress.endsWith("/")) {
+ opeApiAddress = opeApiAddress.substring(0, opeApiAddress.length() - 1);
+ }
+ String apiAddress = opeApiAddress + "/api/services/elderTag/queryCompareElderTag?orgCode=" + elderTag.getCompareOrgCode();
+ List targetList = Lists.newArrayList();
+ try {
+ String res = HttpRequestUtil.doGet(apiAddress, HttpRequestUtil.createDefaultHeaders());
+ JSONObject jsonResponse = JSON.parseObject(res);
+ JSONObject r_ = jsonResponse.getJSONObject("result");
+ targetList = r_.getJSONArray("list")
+ .toJavaList(ElderTag.class);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ Map merged = new LinkedHashMap<>();
+
+ // 先把本平台的放进去,标记 ownExist = true, targetExist = false
+ if (ownList != null) {
+ for (ElderTag o : ownList) {
+ if (o == null || o.getId() == null) continue;
+ String id = String.valueOf(o.getId());
+ // 直接在原对象上设置标志(如果不想修改原对象请复制对象)
+ o.setOwnExist(true);
+ o.setTargetExist(false);
+ merged.put(id, o);
+ }
+ }
+
+ // 再处理目标平台的数据,若已存在则把 targetExist 置 true,否则加入并标记为仅 target
+ if (targetList != null) {
+ for (ElderTag t : targetList) {
+ if (t == null || t.getId() == null) continue;
+ String id = String.valueOf(t.getId());
+ if (merged.containsKey(id)) {
+ // 本平台已有,标记目标平台也存在
+ merged.get(id).setTargetExist(true);
+ } else {
+ // 仅目标平台有
+ t.setOwnExist(false);
+ t.setTargetExist(true);
+ merged.put(id, t);
+ }
+ }
+ }
+
+ // 把合并后的值放到列表,并按需求排序:both -> own only -> target only
+ result = new ArrayList<>(merged.values());
+ result.sort(Comparator.comparingInt(d -> {
+ boolean own = Boolean.TRUE.equals(d.isOwnExist());
+ boolean target = Boolean.TRUE.equals(d.isTargetExist());
+ if (own && target) return 0; // 两个平台都有 -> 最前
+ if (own) return 1; // 仅本平台有 -> 中间
+ return 2; // 仅目标平台有 -> 最后
+ }));
+
+ result.stream().forEach(et -> {
+ et.setType(dictUtils.translateDictValue("elder_tag_type",et.getType()));
+ });
return result;
}
diff --git a/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/mq/eldertag/listener/ElderTagMQListener.java b/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/mq/eldertag/listener/ElderTagMQListener.java
index 3b9d5067..69cab9b4 100644
--- a/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/mq/eldertag/listener/ElderTagMQListener.java
+++ b/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/mq/eldertag/listener/ElderTagMQListener.java
@@ -168,7 +168,7 @@ public class ElderTagMQListener {
private void handleIncremental(ElderTagMQDto dto) {
//增量:传过来的是已勾选的全部数据,需将重复部分去除
//先查出所有标签id 然后进行去重
- List tempList = elderTagService.allData();
+ List tempList = elderTagService.allDataIds();
Set existingIds = tempList.stream().map(ElderTag::getId).map(String::valueOf).collect(Collectors.toSet());
String idStr = dto.getIdStr();
@@ -274,7 +274,7 @@ public class ElderTagMQListener {
public void handleIncremental2(ElderTagMQDto dto) {
//增量:传过来的是已勾选的全部数据,需将重复部分去除
//先查出所有标签id 然后进行去重
- List tempList = elderTagService.allData();
+ List tempList = elderTagService.allDataIds();
Set existingIds = tempList.stream().map(ElderTag::getId).map(String::valueOf).collect(Collectors.toSet());
dto.setIzInc(true);