kgdxpr 1 year ago
commit c080935f45

@ -0,0 +1,117 @@
package com.dsideal.QingLong.Bean;
import java.util.ArrayList;
import java.util.List;
public class TZbdcTree {
private String id;
private String level_name;
private String pId;
private int sort_id;
private String code;
private int is_leaf;
private int level;
public int getLevel() {
return level;
}
public void setLevel(int level) {
this.level = level;
}
public List<TZbdcTree> getChildren() {
return children;
}
public void setChildren(List<TZbdcTree> children) {
this.children = children;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getpId() {
return pId;
}
public void setpId(String pId) {
this.pId = pId;
}
public int getSort_id() {
return sort_id;
}
public void setSort_id(int sort_id) {
this.sort_id = sort_id;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public int getIs_leaf() {
return is_leaf;
}
public void setIs_leaf(int is_leaf) {
this.is_leaf = is_leaf;
}
private List<TZbdcTree> children;
public TZbdcTree(String id, String level_name, String pId, int sort_id, String code, int is_leaf, int level) {
this.id = id;
this.level_name = level_name;
this.pId = pId;
this.sort_id = sort_id;
this.code = code;
this.is_leaf = is_leaf;
this.level = level;
this.children = new ArrayList<>();
}
public TZbdcTree() {
this.children = new ArrayList<>();
}
public void addChild(TZbdcTree child) {
this.children.add(child);
}
public TZbdcTree findNode(String targetId) {
if (this.id == targetId) {
return this;
}
for (TZbdcTree child : this.children) {
TZbdcTree result = child.findNode(targetId);
if (result != null) {
return result;
}
}
return null;
}
public String getLevel_name() {
return level_name;
}
public void setLevel_name(String level_name) {
this.level_name = level_name;
}
}

@ -1,6 +1,9 @@
package com.dsideal.QingLong.Zbdc.Controller;
import cn.hutool.core.date.DateTime;
import com.alibaba.fastjson.JSONObject;
import com.dsideal.QingLong.Bean.TBaseOrgTypePrincipalship;
import com.dsideal.QingLong.Bean.TZbdcTree;
import com.dsideal.QingLong.Interceptor.EmptyInterface;
import com.dsideal.QingLong.Interceptor.IsLoginInterface;
import com.dsideal.QingLong.Interceptor.IsNumericInterface;
@ -12,6 +15,7 @@ import com.jfinal.core.Controller;
import com.jfinal.ext.interceptor.GET;
import com.jfinal.ext.interceptor.POST;
import com.jfinal.kit.Kv;
import com.jfinal.kit.StrKit;
import com.jfinal.plugin.activerecord.Page;
import com.jfinal.plugin.activerecord.Record;
@ -224,6 +228,53 @@ public class ZbdcController extends Controller {
renderJson(CommonUtil.renderJsonForLayUI(list));
}
/**
*
* http://10.10.21.20:9000/QingLong/zbdc/getKmFeiLeiTree?km_code=xxty
* @param km_code
*/
@Before({GET.class})
@IsLoginInterface({})
@EmptyInterface({"km_code"})
public void getKmFeiLeiTree(String km_code) {
List<Record> list = zm.getKmFeiLeiTree(km_code);
// 构建根节点
Record record = list.get(0);
String pId = record.getStr("pId");
String id = record.getStr("id");
String level_name = record.getStr("level_name");
int is_leaf = record.getInt("is_leaf");
String code = record.getStr("code");
int sort_id = record.getInt("sort_id");
int level = record.getInt("level");
TZbdcTree rootNode = new TZbdcTree(id, level_name, pId, sort_id, code, is_leaf, level);
for (int i = 1; i < list.size(); i++) {
record = list.get(i);
pId = record.getStr("pId");
id = record.getStr("id");
level_name = record.getStr("level_name");
is_leaf = record.getInt("is_leaf");
code = record.getStr("code");
sort_id = record.getInt("sort_id");
level = record.getInt("level");
// 创建要添加的新节点
TZbdcTree newNode = new TZbdcTree(id, level_name, pId, sort_id, code, is_leaf, level);
// 添加新节点
TZbdcTree node = rootNode.findNode(pId);
if (node != null) {
node.addChild(newNode);
}
}
JSONObject jo = new JSONObject();
jo.put("code", 0);
jo.put("count", list.size());
jo.put("data", rootNode.getChildren());
renderJson(jo);
}
/**
*
*

@ -1,8 +1,10 @@
package com.dsideal.QingLong.Zbdc.Model;
import cn.hutool.core.date.DateTime;
import com.dsideal.QingLong.Interceptor.EmptyInterface;
import com.dsideal.QingLong.Interceptor.IsLoginInterface;
import com.jfinal.aop.Before;
import com.jfinal.ext.interceptor.GET;
import com.jfinal.ext.interceptor.POST;
import com.jfinal.kit.Kv;
import com.jfinal.kit.StrKit;
@ -11,9 +13,7 @@ import com.jfinal.plugin.activerecord.Page;
import com.jfinal.plugin.activerecord.Record;
import com.jfinal.plugin.activerecord.SqlPara;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
public class ZbdcModel {
/**
@ -361,4 +361,95 @@ public class ZbdcModel {
Db.update("t_zbdc_fill", "year,templet_id,bureau_id", record);
}
}
/**
*
*
* @param km_code
*/
public List<Record> getKmFeiLeiTree(String km_code) {
Kv kv = Kv.by("km_code", km_code);
SqlPara sqlPara = Db.getSqlPara("Zbdc.getKmFeiLeiTree", kv);
List<Record> list = Db.find(sqlPara);
String rootId = UUID.randomUUID().toString();
Map<String, String> _map = new LinkedHashMap<>();
Map<String, String> _parentMap = new HashMap<>();
// 记录每个父亲对应的儿子数量的 Map
Map<String, Integer> sonsCountMap = new LinkedHashMap<>();
//记录第个编码的级别
Map<String, Integer> levelMap = new HashMap<>();
//给一级类型编码
for (Record record : list) {
String level_1 = record.getStr("level_1");
if (!_map.containsKey(level_1)) {
String guid = UUID.randomUUID().toString();
_map.put(level_1, guid);
_parentMap.put(guid, rootId);
levelMap.put(guid, 1);
}
String level_2 = record.getStr("level_2");
if (!StrKit.isBlank(level_2) && !_map.containsKey(level_2)) {
//给类型2分编码
String guid = UUID.randomUUID().toString();
_map.put(level_2, guid);
//给类型2分父亲
_parentMap.put(guid, _map.get(level_1));
levelMap.put(guid, 2);
}
String level_3 = record.getStr("level_3");
if (!StrKit.isBlank(level_3) && !_map.containsKey(level_3)) {
//给类型3分编码
String guid = UUID.randomUUID().toString();
_map.put(level_3, guid);
//给类型3分父亲
_parentMap.put(guid, _map.get(level_2));
levelMap.put(guid, 3);
}
String level_4 = record.getStr("level_4");
if (!StrKit.isBlank(level_4) && !_map.containsKey(level_4)) {
String guid = UUID.randomUUID().toString();
//给类型4分编码
_map.put(level_4, guid);
//给类型4分父亲
_parentMap.put(guid, _map.get(level_3));
levelMap.put(guid, 4);
}
}
// 遍历父子关系的 Map
for (String son : _parentMap.keySet()) {
String father = _parentMap.get(son);
sonsCountMap.put(father, sonsCountMap.getOrDefault(father, 0) + 1);
}
List<Record> res = new ArrayList<>();
Record record = new Record();
record.set("pId", "-1");
record.set("id", rootId);
record.set("level_name", "类型");
record.set("is_leaf", 0);
record.set("code", UUID.randomUUID().toString());
record.set("sort_id", 1);
record.set("level", 0);
res.add(record);
// 遍历Map并打印键值对
for (Map.Entry<String, String> entry : _map.entrySet()) {
String id = entry.getValue();
record = new Record();
record.set("id", id);
record.set("pId", _parentMap.get(id));//查找此ID的父亲
record.set("level_name", entry.getKey());
record.set("is_leaf", sonsCountMap.getOrDefault(id, 0) > 0 ? 1 : 0);
record.set("code", UUID.randomUUID().toString());
record.set("sort_id", 1);
record.set("level", levelMap.get(id));
res.add(record);
}
return res;
}
}

@ -0,0 +1,28 @@
-- 装备调查命名空间
#namespace("Zbdc")
#sql("getKmFeiLeiTree")
WITH RankedTemplets AS (
SELECT
templet_id,
level_1,
level_2,
level_3,
level_4,
ROW_NUMBER() OVER (PARTITION BY level_1, level_2, level_3, level_4 ORDER BY templet_id) AS rn
FROM
t_zbdc_templet
WHERE
km_code = #para(km_code)
)
SELECT
templet_id,
level_1,
level_2,
level_3,
level_4
FROM
RankedTemplets
WHERE
rn = 1 order by templet_id;
#end
#end
Loading…
Cancel
Save