bootstrap-treeview后盾动态生成目录树数据
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数据加载方法就动态生成树