1.java 后台
package com.dsunsoft.cqhzz.blogic.java.I0202;html
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;java
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;node
import com.dsunsoft.cqhzz.bean.Tree;
import com.dsunsoft.cqhzz.bean.TreeValue;
import com.dsunsoft.cqhzz.blogic.dto.I0202.I0202F0009ReqtU001;
import com.dsunsoft.cqhzz.blogic.dto.I0202.I0202F0009RespU001;
import com.dsunsoft.cqhzz.sql.dto.I0202.I0202F0009SQL001DbcIU001;
import com.dsunsoft.cqhzz.sql.dto.I0202.I0202F0009SQL001DbcOU001;
import com.dsunsoft.cqhzz.sql.dto.I0202.I0202F0009SQL002DbcIU001;
import com.dsunsoft.cqhzz.sql.dto.I0202.I0202F0009SQL002DbcOU001;
import com.jinrate.dao.mybatis.QueryDAO;
import com.jinrate.service.BizLogic;
import com.jinrate.utils.BeanCopierEx;
import com.jinrate.utils.Pub;web
/**
* 描述:[TB_WR_ORG_B][机构基本信息表(区环保局、水务局、河长办)]根据行政区划获取组织机构树
* @version:1.0.0
* @author: zb
* @建立时间: 2017-05-24 19:43:21
*/
public class I0202F0009BLogic implements BizLogic<I0202F0009ReqtU001, I0202F0009RespU001> {
//日志
private final Logger log = LoggerFactory.getLogger(I0202F0009BLogic.class);
//收缩图标
private static String FA_FOLDER = "fa-folder";
//扩展图标
private static String FA_FOLDER_OPEN = "fa-folder";
//定义查询dao
protected QueryDAO queryDAO = null;
public void setQueryDAO(QueryDAO queryDAO) {
this.queryDAO = queryDAO;
}
/**
* [TB_WR_ORG_B][机构基本信息表(区环保局、水务局、河长办)]表的列表查询方法
* @param params 输入参数
* @return I0202F0009RespU001
**/
public I0202F0009RespU001 execute(I0202F0009ReqtU001 params) throws Exception {
//建立返回对象
I0202F0009RespU001 result = new I0202F0009RespU001();
//构造sql001的查询条件
I0202F0009SQL001DbcIU001 dbcIU001 = new I0202F0009SQL001DbcIU001();
//将http请求的参数赋值给sqlDTO
BeanCopierEx.copy(params, dbcIU001);
//从上下文中获取分页信息
//PageControllerInfo pageInput = (PageControllerInfo)BLContext.getValue(CommonConsts.PAGE_INFO);sql
//调用queryDAO进行查询
List<I0202F0009SQL001DbcOU001> i0202F0009SQL001DbcOU001List = queryDAO.executeForObjectList("I0202F0009SQL001", dbcIU001);
if(i0202F0009SQL001DbcOU001List == null || i0202F0009SQL001DbcOU001List.size() == 0) {
return result;
}
HashMap<String, String> addvcdMap = new HashMap<>();
ArrayList<String> addvcdList = new ArrayList<String>();
for(I0202F0009SQL001DbcOU001 i0202F0009SQL001DbcOU001 : i0202F0009SQL001DbcOU001List) {
//若是最后一个节点就是父节点,则不须要往上追述,
//好比 /500000000000/500100000000/500153000000,/重庆市/市辖区/荣昌区
//若是父节点是荣昌区,则/重庆市/市辖区不该该显示出来,只须要加载最后一个父节点便可
String addvcdPath = i0202F0009SQL001DbcOU001.getAddvcdPath();
int lastIndex = addvcdPath.lastIndexOf(params.getParentCode());
addvcdPath = addvcdPath.substring(lastIndex);
String[] addvcds = addvcdPath.split("/");
for(int i = 0; i < addvcds.length; i++) {
if(!addvcdMap.containsKey(addvcds[i])) {
addvcdList.add(addvcds[i]);
addvcdMap.put(addvcds[i], addvcds[i]);
}
}
}
I0202F0009SQL002DbcIU001 i0202F0009SQL002DbcIU001 = new I0202F0009SQL002DbcIU001();
i0202F0009SQL002DbcIU001.setAddvcdList(addvcdList);
List<I0202F0009SQL002DbcOU001> i0202F0009SQL002DbcOU001List = queryDAO.executeForObjectList("I0202F0009SQL002", i0202F0009SQL002DbcIU001);
//加载行政区划树
//将返回的数据转换为树节点
ArrayList<Tree> jsonList = new ArrayList<Tree>();
Map<TreeValue, Tree> parentAddvKey = new HashMap<TreeValue, Tree>();
for(int i=0; i < i0202F0009SQL002DbcOU001List.size(); i++) {
Tree tree = getAddvTree(i0202F0009SQL002DbcOU001List.get(i));
Tree parentTree = (Tree)parentAddvKey.get(new TreeValue(i0202F0009SQL002DbcOU001List.get(i).getFaddvcd()));
if(parentTree == null) {
jsonList.add(tree);
parentAddvKey.put(tree.getData(), tree);
}
else {
parentTree.getChildren().add(tree);
parentAddvKey.put(tree.getData(), tree);
}
}
//加载组织机构树
Map<TreeValue, Tree> parentOrgKey = new HashMap<TreeValue, Tree>();
for(int i=0; i < i0202F0009SQL001DbcOU001List.size(); i++) {
Tree tree = getOrgTree(i0202F0009SQL001DbcOU001List.get(i));
//若是组织机构父id是0或者空,则直接加到行政区划上
if(i0202F0009SQL001DbcOU001List.get(i).getOrgP() == null
|| "0".equals(i0202F0009SQL001DbcOU001List.get(i).getOrgP())) {
Tree parentTree = (Tree)parentAddvKey.get(new TreeValue(i0202F0009SQL001DbcOU001List.get(i).getAddvcd()));
if(parentTree == null) {
//未在行政区划找到,说明数据有问题
Pub.addSystemMessage("I0202F0009MSG001", "行政区划code:"+ i0202F0009SQL001DbcOU001List.get(i).getAddvcd() + "未在行政区划树上找到!", result);
return result;
}
parentTree.getChildren().add(tree);
//将当前节点加到组织机构树上
parentOrgKey.put(tree.getData(), tree);
}
else {
Tree parentTree = (Tree)parentOrgKey.get(new TreeValue(i0202F0009SQL001DbcOU001List.get(i).getOrgP()));
if(parentTree == null) {
//若是找不到,说明数据异常
Pub.addSystemMessage("I0202F0009MSG002", "组织机构父ID:"+ i0202F0009SQL001DbcOU001List.get(i).getOrgP() + "未在组织机构树上找到!", result);
return result;
}
parentTree.getChildren().add(tree);
parentOrgKey.put(tree.getData(), tree);
}
}
result.setTreeList(jsonList);
return result;
}
/**
* 获取数据库获取的内容建立子节点
* @param detail [HZZ.TB_ADDV_B][行政区划]查询方法的子记录DTO
* @return Tree 树的属性基本类
*/
private Tree getAddvTree(I0202F0009SQL002DbcOU001 detail) {
Tree tree = new Tree();
tree.setLabel(detail.getAddvnm());
TreeValue treeValue = new TreeValue();
treeValue.setAddvcdPath(detail.getAddvcdPath());
treeValue.setValue(detail.getAddvcd());
tree.setData(treeValue);
tree.setCollapsedIcon(FA_FOLDER);
tree.setExpandedIcon(FA_FOLDER_OPEN);
tree.setExpanded(true);
return tree;
}
/**
* 获取数据库获取的内容建立子节点
* @param detail [HZZ.TB_ADDV_B][行政区划]查询方法的子记录DTO
* @return Tree 树的属性基本类
*/
private Tree getOrgTree(I0202F0009SQL001DbcOU001 detail) {
Tree tree = new Tree();
tree.setLabel(detail.getOrgNm());
TreeValue treeValue = new TreeValue();
treeValue.setAddvcdPath(detail.getAddvcdPath());
treeValue.setOrgIdPath(detail.getIdPath());
treeValue.setValue(detail.getOrgId());
tree.setData(treeValue);
tree.setCollapsedIcon(FA_FOLDER);
tree.setExpandedIcon(FA_FOLDER_OPEN);
tree.setExpanded(true);
return tree;
}
}数据库
2.anguar ts文件json