1. 如图所以,完成以下内容对应
2. 代码示例如下, 动态生成树形结构列名称,并将表格中存在的值与其对应起来
@Override
public Map<String, Object> selectResourcePlanList(ResourcePlan resourcePlan) {
List<ResourceDictTreeResponse> levelTreeByTwo = relationService.getLevelTreeByTwo();
List<ResourcePlan> resourcePlans = resourcePlanMapper.selectResourcePlanList(resourcePlan);
Map<String, String> columnMap = new HashMap<>();
AtomicInteger columnIndex = new AtomicInteger(1);
generateColumnMappings(levelTreeByTwo, columnMap, columnIndex);
Map<String, Object> result = new HashMap<>();
result.put("treeData", levelTreeByTwo);
result.put("planList", processPlansToRows(resourcePlans, columnMap));
return result;
}
private void generateColumnMappings(List<ResourceDictTreeResponse> treeData, Map<String, String> columnMap, AtomicInteger columnIndex) {
for (ResourceDictTreeResponse node : treeData) {
String columnName = "column" + columnIndex.getAndIncrement();
columnMap.put(node.getDictLabel(), columnName);
node.setKey(columnName);
if (node.getChild() != null && !node.getChild().isEmpty()) {
generateColumnMappings(node.getChild(), columnMap, columnIndex);
}
}
}
private List<Map<String, Object>> processPlansToRows(List<ResourcePlan> resourcePlans, Map<String, String> columnMap) {
List<Map<String, Object>> rows = new ArrayList<>();
for (ResourcePlan plan : resourcePlans) {
Map<String, Object> row = new HashMap<>();
row.put("id", plan.getId());
row.put("planStartTime", plan.getPlanStartTime());
row.put("planEndTime", plan.getPlanEndTime());
row.put("projectId", plan.getProjectId());
row.put("projectName", plan.getProjectName());
row.put("taskId", plan.getTaskId());
row.put("taskName", plan.getTaskName());
row.put("workContent", plan.getWorkContent());
String dictLabel = plan.getDictLabel();
if (dictLabel != null && columnMap.containsKey(dictLabel)) {
String column = columnMap.get(dictLabel);
row.put(column, plan.getPlanPersonDay());
}
rows.add(row);
}
return rows;
}