bootstrap-treeview后台动态生成目录树数据

 1、数据库表结构

bootstrap-treeview后台动态生成目录树数据_第1张图片

 

zone_code:地址编码

zone_name:地址名称

zong_type:地址级别

patent_code:父地址编码

zone_id:uuid

2、实体类

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
@Entity
@Table(name="T_DRG_DICT_ZONE")
public class Organization implements Serializable {

    private static final long serialVersionUID = -7796322324666598854L;
    @Id()
    @Column(name="ZONE_ID")
    @GenericGenerator(name = "uuidGenerator", strategy = "uuid")
    @GeneratedValue(generator = "uuidGenerator")
    private String zoneId;
    @Column(name="ZONE_CODE")
    private String zoneCode;
    @Column(name="ZONE_NAME")
    private String zoneName;
    @Column(name="ZONE_TYPE")
    private String zoneType;
    @Column(name="PARENT_CODE")
    private String parentCode;
    
}

2、java逻辑处理

// 初始化TREE。
    public void findByAll(BaseAbstractDto basedto) {
        OrganizationDto dto = super.getExactlyDto(basedto);
        // 调用对应的service查询某个实体的方法
        List<Organization> organizations = new ArrayList<Organization>();
        List<Organization> provinces = new ArrayList<Organization>();
        List<Organization> citys = new ArrayList<Organization>();
        List<Organization> countys = new ArrayList<Organization>();
        List<Organization> towns = new ArrayList<Organization>();
        // 加载Tree所有数据,按级别分成不同的list(可以在数据库中定义级别,然后排序,这样就不同在java中处理了)
        organizations = organizationService.findProvinceByAll(null);
        for (Organization organization : organizations) {
            if ("Province".equals(organization.getZoneType())) {
                provinces.add(organization);
            }
            if ("City".equals(organization.getZoneType())) {
                citys.add(organization);
            }
            if ("County".equals(organization.getZoneType())) {
                countys.add(organization);
            }
            if ("Town".equals(organization.getZoneType())) {
                towns.add(organization);
            }
        }
     //将各个级别的list合并成一个list,按照级别town->cotuntys->citys->privinces
        List<Organization> zones = new ArrayList<Organization>();
        for(Organization o : towns){
            zones.add(o);
        }
        for(Organization o : countys){
            zones.add(o);
        }
        for(Organization o : citys){
            zones.add(o);
        }
        for(Organization o : provinces){
            zones.add(o);
        }
        System.out.println(zones);
        
    //循环list,找到自己的"父亲",并加入到"父亲"的sunList中
        for(Organization sun : zones){
                for(int i=0;i<zones.size();i++){
                    if(sun.getParentCode().equals( zones.get(i).getZoneCode() )){
                        zones.get(i).getSuns().add(sun);
                        continue;
                    }
                }
        }
        
//去掉无用数据,只返回根级别数据即可,也就是返回省的就可以了,其他的都在省的list中包含了
        List<Organization> list = new ArrayList<Organization>();
        for(Organization o : zones){
            if ("Province".equals(o.getZoneType())) {
                list.add(o);
            }
        }
        dto.setOrganizations(list);
    }

3、返回json数据

    调用bootstrap-treeview数据加载方法就动态生成树

 

 

你可能感兴趣的:(bootstrap-treeview后台动态生成目录树数据)