java实现树形层级结构数据

java实现树形层级结构数据

处理两种数据
1.包括数据是父子等级的数据
2.还有单列数据变成层级结构数据
@PostMapping(value = “/getOrgCodeList/{organCode}”)
public String getOrgCodeList(@PathVariable(value = “organCode”) String organCode ) {
try {
//超级用户登录战士全部的机构层级 //采用递归算法
if (organCode == “80” || organCode == “admin” || organCode.equals(“admin”) ) {
List sysList = new ArrayList<>();
List list = orgCodeService.getOrgCodeList();
for (OrgCode orgCode : list) {
if (orgCode.getParentCode() == null || orgCode.getParentCode() == " ") {
sysList.add(orgCode);
}
}
findChildren(sysList, list);
return BaseResponse.resultSuccess(sysList);
}else if(organCode.length() ==8){
//单独判断最后层级的机构编码
List res = orgCodeService.getOrgCode(organCode);
List orgCodes1 = new ArrayList<>();
for(int i = 0; i < res.size(); i++){
res.get(i).setList(orgCodes1);
}
return BaseResponse.resultSuccess(res);
}else if(organCode.length() ==6) {
List res = orgCodeService.getOrgCode(organCode);
List orgCodes1 = new ArrayList<>();
List orgCodes2 = new ArrayList<>();
List orgCodes3 = new ArrayList<>();
List orgCodes4 = new ArrayList<>();
OrgCode orgCode1 = new OrgCode();
OrgCode orgCode2 ;
for (int i = 0; i < res.size(); i++) {
if (res.get(i).getOrganCode().length() == 6) {
orgCode1.setOrganCode(res.get(i).getOrganCode());
orgCode1.setOrganName(res.get(i).getOrganName());
orgCodes1.add(orgCode1);
orgCode1.setList(orgCodes1);
}
if (res.get(i).getOrganCode().length() == 8) {
orgCode2 = new OrgCode();
orgCode2.setOrganCode(res.get(i).getOrganCode());
orgCode2.setOrganName(res.get(i).getOrganName());
orgCodes2.add(orgCode2);
orgCode1.setList(orgCodes2);
orgCode2.setList(orgCodes3);
}
}
orgCodes4.add(orgCode1);
return BaseResponse.resultSuccess(orgCodes4);
} else {
List res = orgCodeService.getOrgCode(organCode);
List orgCodes1 = new ArrayList<>();
List orgCodes2 = new ArrayList<>();
List orgCodes3 = new ArrayList<>();
List orgCodes4 = new ArrayList<>();
List orgCodes5 = new ArrayList<>();
OrgCode orgCode1 = new OrgCode();
OrgCode orgCode2 = new OrgCode();
OrgCode orgCode3 = new OrgCode();
for(int i = 0; i<res.size();i++){
if(res.get(i).getOrganCode().length()==4){
orgCode1.setOrganCode(res.get(i).getOrganCode());
orgCode1.setOrganName(res.get(i).getOrganName());
orgCodes1.add(orgCode1);
orgCode1.setList(orgCodes1);
}
if(res.get(i).getOrganCode().length()==6){
orgCode2 = new OrgCode();
orgCode2.setOrganCode(res.get(i).getOrganCode());
orgCode2.setOrganName(res.get(i).getOrganName());
orgCodes2.add(orgCode2);
orgCode1.setList(orgCodes2);
}
if (res.get(i).getOrganCode().length() == 8) {
orgCode3 = new OrgCode();
orgCode3.setOrganCode(res.get(i).getOrganCode());
orgCode3.setOrganName(res.get(i).getOrganName());
orgCodes3.add(orgCode3);
orgCode2.setList(orgCodes3);
orgCode3.setList(orgCodes5);
}
}
orgCodes4.add(orgCode1);
return BaseResponse.resultSuccess(orgCodes4);
}
} catch (Exception e) {
log.error(“error”, e);
return BaseResponse.resultError(“500”, “未知异常”);
}
}

private void findChildren(List sysList, List list) {
for (OrgCode org : sysList) {
List children = new ArrayList<>();
for (OrgCode orgCode : list) {
if (org.getOrganCode() != null && org.getOrganCode().equals(orgCode.getParentCode())) {
children.add(orgCode);
}
}
org.setList(children);
findChildren(children, list);
}
}

注:由于需求比较急,逻辑还有可以进一步优化的地方,请各位路过的大佬进行 指教!!!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
树形结构数据导出成 Excel 可以使用 Java 的 POI 库来实现。POI 是一组用于处理 Microsoft Office 文档的 Java 库,包括 Excel、Word、PowerPoint 等文档格式。 具体实现如下: 1. 在 pom.xml 中添加以下依赖: ```xml <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.2</version> </dependency> ``` 2. 创建 Excel 文件并写入数据。这里以树形结构数据为例,假设已经从数据库中查询到了树形结构数据,可以使用递归的方式将数据写入 Excel 表格中。 ```java public void exportToExcel(List<Node> nodeList, String filePath) throws IOException { Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet(); int rowIndex = 0; for (Node node : nodeList) { rowIndex = writeNodeToExcel(sheet, node, rowIndex, 0); } FileOutputStream outputStream = new FileOutputStream(filePath); workbook.write(outputStream); workbook.close(); } private int writeNodeToExcel(Sheet sheet, Node node, int rowIndex, int level) { Row row = sheet.createRow(rowIndex++); Cell cell = row.createCell(level); cell.setCellValue(node.getName()); for (Node child : node.getChildren()) { rowIndex = writeNodeToExcel(sheet, child, rowIndex, level + 1); } return rowIndex; } ``` 以上代码中,`Node` 表示树形结构中的一个节点,包含了节点名称和子节点列表。`exportToExcel` 方法接收一个节点列表和一个文件路径作为参数,将节点列表写入 Excel 文件中。`writeNodeToExcel` 方法递归地将节点和子节点写入 Excel 表格中,其中 `level` 参数表示节点的层级。 3. 调用 `exportToExcel` 方法将数据导出成 Excel 文件。 ```java List<Node> nodeList = // 从数据库中查询树形结构数据 String filePath = "/path/to/excel.xlsx"; exportToExcel(nodeList, filePath); ``` 以上就是将树形结构数据导出成 Excel 的方法,代码中省略了异常处理等细节,请根据实际情况进行补充。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值