Преглед на файлове

机构树形结构修改

LiTaohong преди 6 години
родител
ревизия
8f8482b7b1

+ 1 - 1
svr/svr-base/doc/es/服务包执行日志记录索引.txt

@ -55,7 +55,7 @@ POST http://172.19.103.68:9200/base_service_package_log/base_service_package_log
}
字段说明:
"id": uuid
"id": code
"createTime": 时间
"saasId": saasid
"sevicePackageId": 服务包id

+ 34 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/dao/org/OrgTreeDao.java

@ -0,0 +1,34 @@
package com.yihu.jw.base.dao.org;
import com.yihu.jw.base.service.org.OrgTree;
import com.yihu.jw.base.service.org.tree.TreeNode;
import com.yihu.jw.entity.base.org.BaseOrgDO;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
import java.util.Map;
/**
 * 
 * 机构树形结构信息 数据库访问层
 * 
 * @version 
 * <pre>
 * Author	Version		Date		Changes
 * litaohong 	1.0  		2018年08月31日 	Created
 *
 * </pre>
 * @since 1.
 */
public interface OrgTreeDao extends PagingAndSortingRepository<OrgTree, Integer>, JpaSpecificationExecutor<OrgTree>  {
    @Query("select id as id,code as code,name as name,case del when 1 then '有效' else '失效' end as status,concat(provinceName,cityName,townName,streetName) as address from BaseOrgDO where code like ?1")
    List<Map<String,Object>> findByCode(String code, Pageable pageable);
    @Override
    List<OrgTree> findAll();
}

+ 22 - 56
svr/svr-base/src/main/java/com/yihu/jw/base/service/org/BaseOrgService.java

@ -3,8 +3,14 @@ package com.yihu.jw.base.service.org;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SimplePropertyPreFilter;
import com.google.gson.JsonObject;
import com.yihu.jw.base.dao.org.BaseOrgDao;
import com.yihu.jw.base.dao.org.OrgTreeDao;
import com.yihu.jw.base.service.org.tree.SimpleTree;
import com.yihu.jw.base.service.org.tree.SimpleTreeNode;
import com.yihu.jw.base.service.org.tree.Tree;
import com.yihu.jw.base.service.org.tree.TreeNode;
import com.yihu.jw.rm.base.BaseRequestMapping;
import com.yihu.mysql.query.BaseJpaService;
import org.springframework.beans.factory.annotation.Autowired;
@ -12,10 +18,7 @@ import org.springframework.stereotype.Service;
import com.yihu.jw.entity.base.org.BaseOrgDO;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
 * 
@ -35,6 +38,11 @@ public class BaseOrgService extends BaseJpaService<BaseOrgDO, BaseOrgDao> {
    @Autowired
    private BaseOrgDao baseOrgDao;
    @Autowired
    private OrgTreeDao orgTreeDao;
    /**
     * 机构基础信息列表
     * @param orgCode
@ -43,7 +51,6 @@ public class BaseOrgService extends BaseJpaService<BaseOrgDO, BaseOrgDao> {
     * @return
     */
    public List<Map<String,Object>> queryOrgBaseInfoList(String orgCode,String orgName,String orgStatus,int page,int size,String sorts){
        getOrgByArea();
        List<Map<String,Object>> result = new ArrayList<>();
        if(StringUtils.endsWithIgnoreCase("1",orgStatus)){
            if(!StringUtils.isEmpty(orgCode) ){
@ -70,58 +77,17 @@ public class BaseOrgService extends BaseJpaService<BaseOrgDO, BaseOrgDao> {
     * 构建机构区域树形结构
     * @return
     */
    public JSONObject getOrgByArea(){
        JSONObject result = new JSONObject();
        JSONArray provinceArray = new JSONArray();
        JSONArray cityArray = new JSONArray();
        JSONArray townArray = new JSONArray();
        JSONArray orgArray = new JSONArray();
        JSONObject proJson = new JSONObject();
        JSONObject cityJson = new JSONObject();
        JSONObject townJson = new JSONObject();
        JSONObject orgJson = new JSONObject();
        List<BaseOrgDO> list = baseOrgDao.findOrgByArea();
        for(BaseOrgDO baseOrgDO : list){
          /*  if(!proJson.containsKey(baseOrgDO.getProvinceCode())){
                provinceArray.add(proJson);
            }
            if(!cityJson.containsKey(baseOrgDO.getCityCode())){
                proJson.put("city",cityJson);
                cityArray.add(cityJson);
                cityJson.put("town", townJson);
            }
            if(!townJson.containsKey(baseOrgDO.getTownCode())){
                townArray.add(townJson);
            }
            if(!orgJson.containsKey(baseOrgDO.getCode())){
                townJson.put("org",orgJson);
                orgArray.add(orgJson);
            }*/
            proJson.put("provinceCode",baseOrgDO.getProvinceCode());
            proJson.put("provinceName",baseOrgDO.getProvinceName());
            cityJson.put("cityCode",baseOrgDO.getCityCode());
            cityJson.put("cityName",baseOrgDO.getCityName());
            townJson.put("townCode",baseOrgDO.getTownCode());
            townJson.put("townName",baseOrgDO.getTownName());
    public String getOrgAreaTree(){
            orgJson.put("orgCode",baseOrgDO.getCode());
            orgJson.put("orgName",baseOrgDO.getName());
        List<TreeNode> treeNodes = new ArrayList<>();
        treeNodes.addAll(orgTreeDao.findAll());
        SimpleTree tree = new SimpleTree(treeNodes);
        List<SimpleTreeNode> treeNode = tree.getRoot();
        SimplePropertyPreFilter filter = new SimplePropertyPreFilter();
        filter.getExcludes().add("parent");
        filter.getExcludes().add("allChildren");
            provinceArray.add(proJson);
            cityArray.add(cityJson);
            townArray.add(townJson);
            orgArray.add(orgJson);
            proJson.put("city",cityJson);
            cityJson.put("town", townJson);
            townJson.put("org",orgJson);
        }
        result.put("province",provinceArray);
        return result;
        return JSONObject.toJSONString(treeNode, filter);
    }
}

+ 75 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/service/org/OrgTree.java

@ -0,0 +1,75 @@
package com.yihu.jw.base.service.org;
import com.yihu.jw.base.service.org.tree.TreeNode;
public class OrgTree implements TreeNode {
    private Integer id;
    private String code;
    private String parentCode;
    private String name;
    private Integer orderNum;
    public OrgTree(){}
    public OrgTree(String code, String parentCode, String name, Integer orderNum){
        this.code = code;
        this.parentCode = parentCode;
        this.name = name;
        this.orderNum = orderNum;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    @Override
    public String getNodeId() {
        return this.code;
    }
    @Override
    public String getNodeName() {
        return this.name;
    }
    @Override
    public String getNodeParentId() {
        return this.parentCode;
    }
    @Override
    public Integer getOrderNum() {
        return this.orderNum;
    }
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public String getParentCode() {
        return parentCode;
    }
    public void setParentCode(String parentCode) {
        this.parentCode = parentCode;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void setOrderNum(Integer orderNum) {
        this.orderNum = orderNum;
    }
}

+ 80 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/service/org/tree/SimpleTree.java

@ -0,0 +1,80 @@
package com.yihu.jw.base.service.org.tree;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
public class SimpleTree implements Tree{
    private HashMap<String, SimpleTreeNode> treeNodesMap = new HashMap<String, SimpleTreeNode>();
    private List<SimpleTreeNode> treeNodesList = new ArrayList<SimpleTreeNode>();
    public SimpleTree(List<TreeNode> list){
        initTreeNodeMap(list);
        initTreeNodeList();
    }
    private void initTreeNodeMap(List<TreeNode> list){
        SimpleTreeNode treeNode = null;
        for(TreeNode item : list){
            treeNode = new SimpleTreeNode(item);
            treeNodesMap.put(treeNode.getNodeId(), treeNode);
        }
        Iterator<SimpleTreeNode> iter = treeNodesMap.values().iterator();
        SimpleTreeNode parentTreeNode = null;
        while(iter.hasNext()){
            treeNode = iter.next();
            if(treeNode.getParentNodeId() == null || treeNode.getParentNodeId() == ""){
                continue;
            }
            parentTreeNode = treeNodesMap.get(treeNode.getParentNodeId());
            if(parentTreeNode != null){
                treeNode.setParent(parentTreeNode);
                parentTreeNode.addChild(treeNode);
            }
        }
    }
    private void initTreeNodeList(){
        if(treeNodesList.size() > 0){
            return;
        }
        if(treeNodesMap.size() == 0){
            return;
        }
        Iterator<SimpleTreeNode> iter = treeNodesMap.values().iterator();
        SimpleTreeNode treeNode = null;
        while(iter.hasNext()){
            treeNode = iter.next();
            if(treeNode.getParent() == null){
                this.treeNodesList.add(treeNode);
                this.treeNodesList.addAll(treeNode.getAllChildren());
            }
        }
    }
    @Override
    public List<SimpleTreeNode> getTree() {
        return this.treeNodesList;
    }
    @Override
    public List<SimpleTreeNode> getRoot() {
        List<SimpleTreeNode> rootList = new ArrayList<>();
        if (this.treeNodesList.size() > 0) {
            for (SimpleTreeNode node : treeNodesList) {
                if (node.getParent() == null)
                    rootList.add(node);
            }
        }
        return rootList;
    }
    @Override
    public SimpleTreeNode getTreeNode(String nodeId) {
        return this.treeNodesMap.get(nodeId);
    }
}

+ 96 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/service/org/tree/SimpleTreeNode.java

@ -0,0 +1,96 @@
package com.yihu.jw.base.service.org.tree;
import com.alibaba.fastjson.annotation.JSONField;
import java.util.ArrayList;
import java.util.List;
public class SimpleTreeNode {
    //树节点ID
    @JSONField(ordinal=1)
    private String nodeId;
    //树节点名称
    @JSONField(ordinal=2)
    private String nodeName;
    //父节点ID
    @JSONField(ordinal=3)
    private String parentNodeId;
    //节点在树中的排序号
    @JSONField(ordinal=4)
    private int orderNum;
    //节点所在的层级
    @JSONField(ordinal=5)
    private int level;
    private SimpleTreeNode parent;
    //当前节点的二子节点
    @JSONField(ordinal=6)
    private List<SimpleTreeNode> children = new ArrayList<>();
    //当前节点的子孙节点
    private List<SimpleTreeNode> allChildren = new ArrayList<>();
    public SimpleTreeNode(TreeNode obj){
        this.nodeId = obj.getNodeId();
        this.nodeName = obj.getNodeName();
        this.parentNodeId = obj.getNodeParentId();
        this.orderNum = obj.getOrderNum();
    }
    public void addChild(SimpleTreeNode treeNode){
        this.children.add(treeNode);
    }
    public void removeChild(TreeNode treeNode){
        this.children.remove(treeNode);
    }
    public String getNodeId() {
        return nodeId;
    }
    public void setNodeId(String nodeId) {
        this.nodeId = nodeId;
    }
    public String getNodeName() {
        return nodeName;
    }
    public void setNodeName(String nodeName) {
        this.nodeName = nodeName;
    }
    public String getParentNodeId() {
        return parentNodeId;
    }
    public void setParentNodeId(String parentNodeId) {
        this.parentNodeId = parentNodeId;
    }
    public int getLevel() {
        return level;
    }
    public void setLevel(int level) {
        this.level = level;
    }
    public SimpleTreeNode getParent() {
        return parent;
    }
    public void setParent(SimpleTreeNode parent) {
        this.parent = parent;
    }
    public List<SimpleTreeNode> getChildren() {
        return children;
    }
    public void setChildren(List<SimpleTreeNode> children) {
        this.children = children;
    }
    public int getOrderNum() {
        return orderNum;
    }
    public void setOrderNum(int orderNum) {
        this.orderNum = orderNum;
    }
    public List<SimpleTreeNode> getAllChildren() {
        if(this.allChildren.isEmpty()){
            for(SimpleTreeNode treeNode : this.children){
                this.allChildren.add(treeNode);
                this.allChildren.addAll(treeNode.getAllChildren());
            }
        }
        return this.allChildren;
    }
}

+ 11 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/service/org/tree/Tree.java

@ -0,0 +1,11 @@
package com.yihu.jw.base.service.org.tree;
import java.util.List;
public interface Tree {
    public List<SimpleTreeNode> getTree();
    public List<SimpleTreeNode> getRoot();
    public SimpleTreeNode getTreeNode(String nodeId);
}

+ 8 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/service/org/tree/TreeNode.java

@ -0,0 +1,8 @@
package com.yihu.jw.base.service.org.tree;
public interface TreeNode {
    String getNodeId();
    String getNodeName();
    String getNodeParentId();
    Integer getOrderNum();
}