diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/dict/entity/DictItem.java b/servers/boe-server-all/src/main/java/com/xboe/module/dict/entity/DictItem.java index 6b91a126..d36e4bc4 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/dict/entity/DictItem.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/dict/entity/DictItem.java @@ -38,9 +38,8 @@ public class DictItem implements java.io.Serializable{ private Boolean deleted; /** - * 二级 + * 二级 和三级 * */ @Transient private List list; - } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/dict/service/impl/SysDictionaryServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/dict/service/impl/SysDictionaryServiceImpl.java index 017da29a..8140c4ac 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/dict/service/impl/SysDictionaryServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/dict/service/impl/SysDictionaryServiceImpl.java @@ -1,8 +1,12 @@ package com.xboe.module.dict.service.impl; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import com.xboe.common.PageList; import com.xboe.constants.CacheName; +import com.xboe.core.SysConstant; import com.xboe.core.orm.FieldFilters; +import com.xboe.core.utils.OkHttpUtil; import com.xboe.module.course.entity.Course; import com.xboe.module.dict.dao.SysDictionaryDao; import com.xboe.module.dict.entity.DictItem; @@ -16,7 +20,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; import static org.springframework.transaction.annotation.Propagation.REQUIRED; @@ -36,8 +40,101 @@ public class SysDictionaryServiceImpl implements ISysDictionaryService{ @Cacheable(value = CacheName.DICT,key = "'" + CacheName.KEY_DICT + "'+#key", unless = "#result == null") @Override public List findByKey(String key) { + if ("org_domain".equals(key)) { + return this.findCaseOrgFromDict(); + } return dao.findByKey(key); + } + private List findCaseOrgFromDict() { + List items=new ArrayList<>(); + try { + OkHttpUtil http = new OkHttpUtil(); + //调用基础服务获取字典数据 + String baseUrl= SysConstant.getConfigValue("xboe.old.base.url"); + String infrasUrl = baseUrl + "/infrasApi/dict/allList?code=case_org"; + String infrasRes = http.doGet(infrasUrl); + ObjectMapper mapper = new ObjectMapper(); + JsonNode infrasNode = mapper.readTree(infrasRes); + int infrasResCode = infrasNode.get("code").asInt(); + if (infrasResCode != 200) { + return items; + } + JsonNode dictItemsJson = infrasNode.get("data"); + return this.formatDict(dictItemsJson); + } catch (Exception e) { + return items; + } + } + + private List formatDict(JsonNode dictItemsJson) { + List items=new ArrayList<>(); + + Iterator list=dictItemsJson.iterator(); + while(list.hasNext()) { + JsonNode itemNode1 = list.next(); + DictItem dict1=new DictItem(); + dict1.setCode(itemNode1.get("code").asText()); + dict1.setName(itemNode1.get("name").asText()); + dict1.setFilter(itemNode1.get("code").asText()); + dict1.setNorder(itemNode1.get("sort").asInt()); + dict1.setDeletable(false); + dict1.setDeleted(false); + + JsonNode children1 = itemNode1.get("children"); + if (children1 == null || children1.isEmpty()) { + items.add(dict1); + continue; + } + Iterator childrenList1 = children1.iterator(); + while (childrenList1.hasNext()) { + JsonNode childrenNode1 = childrenList1.next(); + DictItem dict2=new DictItem(); + dict2.setCode(childrenNode1.get("code").asText()); + dict2.setName(childrenNode1.get("name").asText()); + dict2.setFilter(childrenNode1.get("code").asText()); + dict2.setNorder(childrenNode1.get("sort").asInt()); + dict2.setDeletable(false); + dict2.setDeleted(false); + + JsonNode children2 = childrenNode1.get("children"); + if (children2 == null || children2.isEmpty()) { + if (dict1.getList() == null || dict1.getList().isEmpty()) { + dict1.setList(new ArrayList()); + dict1.getList().add(dict2); + } else { + dict1.getList().add(dict2); + } + continue; + } + + Iterator childrenList2 = children2.iterator(); + while (childrenList2.hasNext()) { + JsonNode childrenNode2 = childrenList2.next(); + DictItem dict3=new DictItem(); + dict3.setCode(childrenNode2.get("code").asText()); + dict3.setName(childrenNode2.get("name").asText()); + dict3.setFilter(childrenNode2.get("code").asText()); + dict3.setNorder(childrenNode2.get("sort").asInt()); + dict3.setDeletable(false); + dict3.setDeleted(false); + if (dict2.getList() == null || dict2.getList().isEmpty()) { + dict2.setList(new ArrayList()); + dict2.getList().add(dict3); + } else { + dict2.getList().add(dict3); + } + } + if (dict1.getList() == null || dict1.getList().isEmpty()) { + dict1.setList(new ArrayList()); + dict1.getList().add(dict2); + } else { + dict1.getList().add(dict2); + } + } + items.add(dict1); + } + return items; } @Override