diff --git a/nursing-unit-admin/nu-admin-api/nu-admin-local-api/src/main/java/com/nu/modules/orgapplyinfo/entity/OrgApplyInfoApiEntity.java b/nursing-unit-admin/nu-admin-api/nu-admin-local-api/src/main/java/com/nu/modules/orgapplyinfo/entity/OrgApplyInfoApiEntity.java index 3929c88..76d9cda 100644 --- a/nursing-unit-admin/nu-admin-api/nu-admin-local-api/src/main/java/com/nu/modules/orgapplyinfo/entity/OrgApplyInfoApiEntity.java +++ b/nursing-unit-admin/nu-admin-api/nu-admin-local-api/src/main/java/com/nu/modules/orgapplyinfo/entity/OrgApplyInfoApiEntity.java @@ -1,6 +1,7 @@ package com.nu.modules.orgapplyinfo.entity; import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; @@ -104,8 +105,13 @@ public class OrgApplyInfoApiEntity implements Serializable { private Double orgBuildingArea; /**机构省份 sys_category.id*/ private java.lang.String orgProvince; + private java.lang.String orgProvince_dictText; /**机构城市 sys_category.id*/ private java.lang.String orgCity; + private java.lang.String orgCity_dictText; /**机构区域 sys_category.id*/ private java.lang.String orgDistrict; + private java.lang.String orgDistrict_dictText; + + } diff --git a/nursing-unit-admin/nu-admin-biz/pom.xml b/nursing-unit-admin/nu-admin-biz/pom.xml index d165514..3ed59fd 100644 --- a/nursing-unit-admin/nu-admin-biz/pom.xml +++ b/nursing-unit-admin/nu-admin-biz/pom.xml @@ -41,6 +41,11 @@ nursing-unit-common ${nursingunit.version} + + org.jeecgframework.boot + jeecg-boot-base-core + 3.7.2 + diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/orgapplyinfo/entity/OrgApplyInfo.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/orgapplyinfo/entity/OrgApplyInfo.java index 3632017..615b0cc 100644 --- a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/orgapplyinfo/entity/OrgApplyInfo.java +++ b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/orgapplyinfo/entity/OrgApplyInfo.java @@ -4,10 +4,8 @@ import java.io.Serializable; import java.io.UnsupportedEncodingException; import java.util.Date; import java.math.BigDecimal; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.annotation.TableLogic; + +import com.baomidou.mybatisplus.annotation.*; import org.jeecg.common.constant.ProvinceCityArea; import org.jeecg.common.util.SpringContextUtils; import lombok.Data; @@ -197,4 +195,11 @@ public class OrgApplyInfo implements Serializable { @Dict(dictTable = "sys_category",dicCode = "id",dicText = "name") private java.lang.String orgDistrict; + @TableField(exist = false) + private java.lang.String orgProvince_dictText; + @TableField(exist = false) + private java.lang.String orgCity_dictText; + @TableField(exist = false) + private java.lang.String orgDistrict_dictText; + } diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/orgapplyinfo/service/impl/OrgApplyInfoServiceImpl.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/orgapplyinfo/service/impl/OrgApplyInfoServiceImpl.java index 6949172..06319f9 100644 --- a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/orgapplyinfo/service/impl/OrgApplyInfoServiceImpl.java +++ b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/orgapplyinfo/service/impl/OrgApplyInfoServiceImpl.java @@ -1,20 +1,19 @@ package com.nu.modules.orgapplyinfo.service.impl; -import cn.hutool.core.bean.BeanUtil; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.nu.modules.orgapplyinfo.api.IOrgApplyInfoApi; import com.nu.modules.orgapplyinfo.entity.OrgApplyInfo; import com.nu.modules.orgapplyinfo.entity.OrgApplyInfoApiEntity; import com.nu.modules.orgapplyinfo.mapper.OrgApplyInfoMapper; import com.nu.modules.orgapplyinfo.service.IOrgApplyInfoService; -import org.apache.commons.compress.utils.Lists; +import com.nu.utils.DictUtils; import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; - import java.util.List; -import java.util.stream.Collectors; /** * @Description: 机构加盟申请信息表 @@ -25,6 +24,9 @@ import java.util.stream.Collectors; @Service public class OrgApplyInfoServiceImpl extends ServiceImpl implements IOrgApplyInfoService, IOrgApplyInfoApi { + @Autowired + private DictUtils dictUtils; + @Override public OrgApplyInfoApiEntity insert(OrgApplyInfoApiEntity orgApplyInfoApiEntity) { OrgApplyInfo orgApplyInfo = new OrgApplyInfo(); @@ -44,18 +46,19 @@ public class OrgApplyInfoServiceImpl extends ServiceImpl queryAuditInfo(String tel) { QueryWrapper qw = new QueryWrapper<>(); - qw.eq("tel",tel); -// qw.in("status",new String[]{"1","3"});//审核状态为审核中、驳回的 + qw.eq("tel", tel); qw.orderByDesc("create_time"); List list = baseMapper.selectList(qw); - List result = Lists.newArrayList(); - result = list.stream() - .map(item -> { - OrgApplyInfoApiEntity entity = new OrgApplyInfoApiEntity(); - BeanUtils.copyProperties(item, entity); - return entity; - }) - .collect(Collectors.toList()); + + for(OrgApplyInfo par:list){ + par.setOrgProvince_dictText(dictUtils.translateDictValue("id","name","sys_category",par.getOrgProvince())); + par.setOrgCity_dictText(dictUtils.translateDictValue("id","name","sys_category",par.getOrgCity())); + par.setOrgDistrict_dictText(dictUtils.translateDictValue("id","name","sys_category",par.getOrgDistrict())); + } + + String jsonStr = JSON.toJSONString(list); + List result = JSON.parseArray(jsonStr, OrgApplyInfoApiEntity.class); return result; + } } diff --git a/nursing-unit-api/src/main/java/com/nu/modules/common/CommonApi.java b/nursing-unit-api/src/main/java/com/nu/modules/common/NuCommonApi.java similarity index 78% rename from nursing-unit-api/src/main/java/com/nu/modules/common/CommonApi.java rename to nursing-unit-api/src/main/java/com/nu/modules/common/NuCommonApi.java index ea4c521..9b93d1f 100644 --- a/nursing-unit-api/src/main/java/com/nu/modules/common/CommonApi.java +++ b/nursing-unit-api/src/main/java/com/nu/modules/common/NuCommonApi.java @@ -16,7 +16,7 @@ import org.springframework.web.bind.annotation.RestController; */ @RestController @RequestMapping("/api/common") -public class CommonApi { +public class NuCommonApi { @Autowired private ISysBaseAPI sysBaseAPI; @@ -25,4 +25,9 @@ public class CommonApi { public Result queryAreaDict(@RequestParam("id") String id) { return Result.ok(sysBaseAPI.queryCategoryByPid(id)); } + + @GetMapping("/queryAreaNameById") + public Result queryAreaNameById(@RequestParam("id") String id) { + return Result.ok(sysBaseAPI.queryAreaNameById(id)); + } } diff --git a/nursing-unit-base-core/src/main/java/org/jeecg/common/api/CommonAPI.java b/nursing-unit-base-core/src/main/java/org/jeecg/common/api/CommonAPI.java index e087a61..3254f1a 100644 --- a/nursing-unit-base-core/src/main/java/org/jeecg/common/api/CommonAPI.java +++ b/nursing-unit-base-core/src/main/java/org/jeecg/common/api/CommonAPI.java @@ -18,7 +18,7 @@ public interface CommonAPI { * @return */ Set queryUserRoles(String username); - + /** * 1查询用户角色信息 * @param userId @@ -56,7 +56,7 @@ public interface CommonAPI { * @return */ public LoginUser getUserByName(String username); - + /** * 5根据用户账号查询用户Id * @param username @@ -142,6 +142,8 @@ public interface CommonAPI { * @return */ List translateDictFromTableByKeys(String table, String text, String code, String keys, String dataSource); + + Object queryAreaNameById(String id); //update-end---author:chenrui ---date:20231221 for:[issues/#5643]解决分布式下表字典跨库无法查询问题------------ } 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 0000000..d8a07d4 --- /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-system/nu-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java b/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java index 0a9ff4c..d8a7134 100644 --- a/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java +++ b/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java @@ -714,10 +714,17 @@ public class SysBaseApiImpl implements ISysBaseAPI { return res; } + /** + * 不要改排序 排序固定用first_letter asc + * @param pid + * @return + */ @Override public List queryCategoryByPid(String pid) { QueryWrapper qw = new QueryWrapper<>(); qw.eq("pid",pid); + //专门解决获取行政区排序问题的 + qw.orderByAsc("first_letter"); List list = categoryMapper.selectList(qw); return BeanUtil.copyToList(list, SysCategoryModel.class); } @@ -1914,4 +1921,11 @@ public class SysBaseApiImpl implements ISysBaseAPI { } } + @Override + public Object queryAreaNameById(String id) { + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("id",id); + return categoryMapper.selectOne(qw); + } + } diff --git a/nursing-unit-system/nu-system-start/src/main/resources/application-dev.yml b/nursing-unit-system/nu-system-start/src/main/resources/application-dev.yml index 7ce65a1..51c3f56 100644 --- a/nursing-unit-system/nu-system-start/src/main/resources/application-dev.yml +++ b/nursing-unit-system/nu-system-start/src/main/resources/application-dev.yml @@ -249,11 +249,11 @@ jeecg: app: http://localhost:8051 path: #服务指令上传目录 - directivepath: /opt/upFiles/directive + directivepath: /cache/nu//opt/upFiles/directive #文件上传根目录 设置 - upload: /opt/upFiles + upload: /cache/nu//opt/upFiles #webapp文件路径 - webapp: /opt/webapp + webapp: /cache/nu//opt/webapp shiro: excludeUrls: /test/jeecgDemo/demo3,/test/jeecgDemo/redisDemo/**,/bigscreen/category/**,/bigscreen/visual/**,/bigscreen/map/**,/jmreport/bigscreen2/** #阿里云oss存储和大鱼短信秘钥配置