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