案例组织机构切换基础服务字典

This commit is contained in:
于继存
2023-05-18 12:23:26 +08:00
parent f53fa9781b
commit 72aebb831d
2 changed files with 99 additions and 3 deletions

View File

@@ -38,9 +38,8 @@ public class DictItem implements java.io.Serializable{
private Boolean deleted;
/**
* 二级
* 二级 和三级
* */
@Transient
private List<DictItem> list;
}

View File

@@ -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<DictItem> findByKey(String key) {
if ("org_domain".equals(key)) {
return this.findCaseOrgFromDict();
}
return dao.findByKey(key);
}
private List<DictItem> findCaseOrgFromDict() {
List<DictItem> 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<DictItem> formatDict(JsonNode dictItemsJson) {
List<DictItem> items=new ArrayList<>();
Iterator<JsonNode> 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<JsonNode> 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<DictItem>());
dict1.getList().add(dict2);
} else {
dict1.getList().add(dict2);
}
continue;
}
Iterator<JsonNode> 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<DictItem>());
dict2.getList().add(dict3);
} else {
dict2.getList().add(dict3);
}
}
if (dict1.getList() == null || dict1.getList().isEmpty()) {
dict1.setList(new ArrayList<DictItem>());
dict1.getList().add(dict2);
} else {
dict1.getList().add(dict2);
}
}
items.add(dict1);
}
return items;
}
@Override