From 9d8a1b35124fc1ede1ea2cd503217775ed2dbe5c Mon Sep 17 00:00:00 2001 From: 戈灵虎 <50576256@qq.com> Date: Sun, 4 Jan 2026 16:23:08 +0800 Subject: [PATCH] feat:树小程序 --- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/tree/TreeController.java | 14 -------------- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/tree/AppTreeController.java | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/treechangelog/AppTreeChangeLogController.java | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/tree/TreeMapper.java | 113 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/tree/TreeServiceImpl.java | 140 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------------------------------- urbanops-module-garden/src/main/resources/mapper/tree/TreeMapper.xml | 7 +++---- 6 files changed, 372 insertions(+), 89 deletions(-) create mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/tree/AppTreeController.java create mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/treechangelog/AppTreeChangeLogController.java diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/tree/TreeController.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/tree/TreeController.java index cc0e8cd..6153fe3 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/tree/TreeController.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/tree/TreeController.java @@ -118,20 +118,6 @@ public class TreeController { BeanUtils.toBean(list, TreeRespVO.class)); } - @GetMapping("/dept/list") - @PreAuthorize("@ss.hasPermission('garden:tree:list')") - public CommonResult> list(@RequestParam Long companyId,@RequestParam(required = false) String roadName) { - LoginUser user = SecurityFrameworkUtils.getLoginUser(); - if (null == user) { - return null; - } - TreeVO tree = new TreeVO(); - tree.setBelongCompanyId(companyId); - tree.setRoadName(roadName); - tree.setDeptId(null); - return success(treeService.getCompanyDeptRoadTreeData(tree)); - } - @GetMapping("/road/list") @PreAuthorize("@ss.hasPermission('garden:tree:list')") public CommonResult> listTreesByRoad(@RequestParam(required = false) Long road) { diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/tree/AppTreeController.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/tree/AppTreeController.java new file mode 100644 index 0000000..95b1880 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/tree/AppTreeController.java @@ -0,0 +1,115 @@ +package com.zteits.urbanops.module.garden.controller.app.tree; + +import com.fhs.core.trans.anno.TransMethodResult; +import com.zteits.urbanops.framework.apilog.core.annotation.ApiAccessLog; +import com.zteits.urbanops.framework.common.pojo.CommonResult; +import com.zteits.urbanops.framework.common.pojo.PageParam; +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.framework.common.util.object.BeanUtils; +import com.zteits.urbanops.framework.dict.core.DictFrameworkUtils; +import com.zteits.urbanops.framework.excel.core.util.ExcelUtils; +import com.zteits.urbanops.framework.security.core.LoginUser; +import com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils; +import com.zteits.urbanops.module.garden.controller.admin.tree.vo.*; +import com.zteits.urbanops.module.garden.dal.dataobject.tree.TreeDO; +import com.zteits.urbanops.module.garden.service.tree.TreeService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.time.LocalDateTime; +import java.util.List; + +import static com.zteits.urbanops.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static com.zteits.urbanops.framework.common.pojo.CommonResult.success; + +@Tag(name = "App - 一树一档案") +@RestController +@RequestMapping({"/garden/tree","/business/tree"}) +@Validated +public class AppTreeController { + + @Resource + private TreeService treeService; + + @PostMapping({"/create",""}) + @Operation(summary = "创建一树一档案") + public CommonResult createTree(@Valid @RequestBody TreeSaveReqVO createReqVO) { + Long userId = SecurityFrameworkUtils.getLoginUserId(); + Long loginUserDeptId = SecurityFrameworkUtils.getLoginUserDeptId(); + createReqVO.setCreateby(String.valueOf(userId)); + createReqVO.setCreatetime(LocalDateTime.now()); + createReqVO.setUpdateby(String.valueOf(userId)); + createReqVO.setUpdatetime(LocalDateTime.now()); + createReqVO.setDeptId(loginUserDeptId); + return success(treeService.createTree(createReqVO)); + } + + @PutMapping({"/update",""}) + @Operation(summary = "更新一树一档案") + public CommonResult updateTree(@Valid @RequestBody TreeSaveReqVO updateReqVO) { + updateReqVO.setUpdateby(String.valueOf(SecurityFrameworkUtils.getLoginUserId())); + updateReqVO.setUpdatetime(LocalDateTime.now()); + treeService.updateTree(updateReqVO); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得一树一档案") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @TransMethodResult + public CommonResult getTree(@RequestParam("id") Long id) { + TreeDO tree = treeService.getTree(id); + return success(BeanUtils.toBean(tree, TreeRespVO.class)); + } + + + @GetMapping("/dept/list") + @PreAuthorize("@ss.hasPermission('garden:tree:list')") + public CommonResult> list(@RequestParam Long companyId,@RequestParam(required = false) String roadName) { + LoginUser user = SecurityFrameworkUtils.getLoginUser(); + if (null == user) { + return null; + } + TreeVO tree = new TreeVO(); + tree.setBelongCompanyId(companyId); + tree.setRoadName(roadName); + tree.setDeptId(null); + return success(treeService.getCompanyDeptRoadTreeData(tree)); + } + + @GetMapping("/road/list") + @PreAuthorize("@ss.hasPermission('garden:tree:list')") + public CommonResult> listTreesByRoad(@RequestParam(required = false) Long road) { + TreePageReqVO pageReqVO = new TreePageReqVO(); + pageReqVO.setRoad(road); + PageResult pageResult = treeService.getTreesByRoadId(pageReqVO); + return success(pageResult); + } + + + private void fillDictData(List list) { + for (TreeDO gardenTree : list) { + String street = DictFrameworkUtils.parseDictDataLabel("street_belong", gardenTree.getStreet()); + gardenTree.setStreet(street); + + String ownership = DictFrameworkUtils.parseDictDataLabel("tree_ownership", gardenTree.getOldtreeownership()); + gardenTree.setOldtreeownership(ownership); + + String growthVigor = DictFrameworkUtils.parseDictDataLabel("growth_vigor", gardenTree.getGrowthvigor()); + gardenTree.setGrowthvigor(growthVigor); + String treeLevel = DictFrameworkUtils.parseDictDataLabel("tree_level", gardenTree.getTreelevel()); + gardenTree.setTreelevel(treeLevel); + String dataState = DictFrameworkUtils.parseDictDataLabel("data_state", gardenTree.getDatastate()); + gardenTree.setDatastate(dataState); + } + } + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/treechangelog/AppTreeChangeLogController.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/treechangelog/AppTreeChangeLogController.java new file mode 100644 index 0000000..93469db --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/treechangelog/AppTreeChangeLogController.java @@ -0,0 +1,72 @@ +package com.zteits.urbanops.module.garden.controller.app.treechangelog; + +import com.fhs.core.trans.anno.TransMethodResult; +import com.zteits.urbanops.framework.apilog.core.annotation.ApiAccessLog; +import com.zteits.urbanops.framework.common.pojo.CommonResult; +import com.zteits.urbanops.framework.common.pojo.PageParam; +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.framework.common.util.object.BeanUtils; +import com.zteits.urbanops.framework.excel.core.util.ExcelUtils; +import com.zteits.urbanops.module.garden.controller.admin.treechangelog.vo.TreeChangeLogPageReqVO; +import com.zteits.urbanops.module.garden.controller.admin.treechangelog.vo.TreeChangeLogRespVO; +import com.zteits.urbanops.module.garden.controller.admin.treechangelog.vo.TreeChangeLogSaveReqVO; +import com.zteits.urbanops.module.garden.dal.dataobject.treechangelog.TreeChangeLogDO; +import com.zteits.urbanops.module.garden.service.treechangelog.TreeChangeLogService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.List; + +import static com.zteits.urbanops.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static com.zteits.urbanops.framework.common.pojo.CommonResult.success; + +@Tag(name = "App - 一树一档案修改记录") +@RestController +@RequestMapping({"/garden/tree-change-log","/gardentree/logs"}) +@Validated +public class AppTreeChangeLogController { + + @Resource + private TreeChangeLogService treeChangeLogService; + + + + @GetMapping("/get") + @Operation(summary = "获得一树一档案修改记录") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('garden:tree-change-log:query')") + @TransMethodResult + public CommonResult getTreeChangeLog(@RequestParam("id") Long id) { + TreeChangeLogDO treeChangeLog = treeChangeLogService.getTreeChangeLog(id); + return success(BeanUtils.toBean(treeChangeLog, TreeChangeLogRespVO.class)); + } + + @GetMapping({"/page","/list"}) + @Operation(summary = "查询一树一档案修改记录列表") + public CommonResult> getTreeChangeLogPage(@Valid TreeChangeLogPageReqVO pageReqVO) { + PageResult pageResult = treeChangeLogService.getTreeChangeLogPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, TreeChangeLogRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出一树一档案修改记录 Excel") + @PreAuthorize("@ss.hasPermission('garden:tree-change-log:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportTreeChangeLogExcel(@Valid TreeChangeLogPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = treeChangeLogService.getTreeChangeLogPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "一树一档案修改记录.xls", "数据", TreeChangeLogRespVO.class, + BeanUtils.toBean(list, TreeChangeLogRespVO.class)); + } + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/tree/TreeMapper.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/tree/TreeMapper.java index b3376b3..cf5a5d8 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/tree/TreeMapper.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/tree/TreeMapper.java @@ -7,9 +7,12 @@ import com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX; import com.zteits.urbanops.framework.mybatis.core.mapper.BaseMapperX; import com.zteits.urbanops.framework.mybatis.core.query.MPJLambdaWrapperX; import com.zteits.urbanops.module.garden.dal.dataobject.tree.TreeDO; +import com.zteits.urbanops.module.garden.dal.dataobject.road.RoadDO; import com.zteits.urbanops.module.system.dal.dataobject.dept.DeptDO; import org.apache.ibatis.annotations.Mapper; import com.zteits.urbanops.module.garden.controller.admin.tree.vo.*; +import com.baomidou.mybatisplus.extension.toolkit.Db; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; /** * 一树一档案 Mapper @@ -71,4 +74,112 @@ public interface TreeMapper extends BaseMapperX { } List selectCompanyDeptRoadTreeData(TreeVO tree); -} \ No newline at end of file + +// default List selectCompanyDeptRoadTreeData(TreeVO tree) { +// List companies = Db.lambdaQuery(DeptDO.class) +// .eq(DeptDO::getStatus, 0) +// .eq(DeptDO::getParentId, 100L) +// .list(); +// Long belongCompanyId = tree.getBelongCompanyId(); +// if (belongCompanyId != null) { +// companies.removeIf(c -> !Objects.equals(c.getId(), belongCompanyId)); +// } +// if (companies.isEmpty()) { +// return Collections.emptyList(); +// } +// List companyIds = new ArrayList<>(); +// for (DeptDO c : companies) { +// companyIds.add(c.getId()); +// } +// Long deptIdFilter = tree.getDeptId(); +// List depts; +// if (deptIdFilter != null) { +// depts = Db.lambdaQuery(DeptDO.class) +// .eq(DeptDO::getStatus, 0) +// .eq(DeptDO::getId, deptIdFilter) +// .list(); +// depts.removeIf(d -> !companyIds.contains(d.getParentId())); +// } else { +// depts = Db.lambdaQuery(DeptDO.class) +// .eq(DeptDO::getStatus, 0) +// .in(DeptDO::getParentId, companyIds) +// .list(); +// } +// List deptIds = new ArrayList<>(); +// for (DeptDO d : depts) { +// deptIds.add(d.getId()); +// } +// String roadNameFilter = tree.getRoadName(); +// List roads = deptIds.isEmpty() ? Collections.emptyList() +// : Db.lambdaQuery(RoadDO.class) +// .in(RoadDO::getDeptId, deptIds) +// .like(roadNameFilter != null && !roadNameFilter.isEmpty(), RoadDO::getRoadName, roadNameFilter) +// .list(); +// List roadIds = new ArrayList<>(); +// for (RoadDO r : roads) { +// roadIds.add(r.getId()); +// } +// Map recordedCountMap = new HashMap<>(); +// if (!roadIds.isEmpty()) { +// List> countMaps = selectMaps(new QueryWrapper() +// .select("road", "COUNT(id) AS cnt") +// .in("road", roadIds) +// .eq("deleted", 0) +// .groupBy("road")); +// for (Map m : countMaps) { +// Object roadVal = m.get("road"); +// Object cntVal = m.get("cnt"); +// if (roadVal != null && cntVal != null) { +// Long rid = ((Number) roadVal).longValue(); +// Integer cnt = ((Number) cntVal).intValue(); +// recordedCountMap.put(rid, cnt); +// } +// } +// } +// Map> deptsByCompany = new HashMap<>(); +// for (DeptDO d : depts) { +// List list = deptsByCompany.computeIfAbsent(d.getParentId(), k -> new ArrayList<>()); +// list.add(d); +// } +// Map> roadsByDept = new HashMap<>(); +// for (RoadDO r : roads) { +// List list = roadsByDept.computeIfAbsent(r.getDeptId(), k -> new ArrayList<>()); +// list.add(r); +// } +// List result = new ArrayList<>(); +// for (DeptDO company : companies) { +// CompanyDeptRoadVO companyVO = new CompanyDeptRoadVO(); +// companyVO.setCompanyId(company.getId()); +// companyVO.setCompanyName(company.getName()); +// List companyDepts = deptsByCompany.getOrDefault(company.getId(), Collections.emptyList()); +// List deptVOs = new ArrayList<>(); +// for (DeptDO dept : companyDepts) { +// CompanyDeptRoadVO.DeptVO deptVO = new CompanyDeptRoadVO.DeptVO(); +// deptVO.setDeptId(dept.getId()); +// deptVO.setDeptName(dept.getName()); +// List deptRoads = roadsByDept.getOrDefault(dept.getId(), Collections.emptyList()); +// List roadVOs = new ArrayList<>(); +// for (RoadDO road : deptRoads) { +// CompanyDeptRoadVO.RoadVO roadVO = new CompanyDeptRoadVO.RoadVO(); +// roadVO.setRoadId(road.getId()); +// roadVO.setRoadName(road.getRoadName()); +// roadVO.setStartRemark(road.getStartingRemark()); +// roadVO.setEndRemark(road.getEndRemark()); +// Integer treeCount = road.getTreeArea() == null ? 0 : road.getTreeArea().intValue(); +// roadVO.setTreeCount(treeCount); +// Integer recordedCount = recordedCountMap.getOrDefault(road.getId(), 0); +// roadVO.setRecordedCount(recordedCount); +// roadVOs.add(roadVO); +// } +// roadVOs.sort(Comparator +// .comparing(CompanyDeptRoadVO.RoadVO::getTreeCount, Comparator.nullsFirst(Comparator.naturalOrder())).reversed() +// .thenComparing(CompanyDeptRoadVO.RoadVO::getRecordedCount, Comparator.nullsFirst(Comparator.naturalOrder())).reversed()); +// deptVO.setRoads(roadVOs); +// deptVOs.add(deptVO); +// } +// companyVO.setDepts(deptVOs); +// result.add(companyVO); +// } +// return result; +// } +} diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/tree/TreeServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/tree/TreeServiceImpl.java index 9f6d2ef..33ad7a0 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/tree/TreeServiceImpl.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/tree/TreeServiceImpl.java @@ -176,80 +176,80 @@ public class TreeServiceImpl implements TreeService { @Override public List getCompanyDeptRoadTreeData(TreeVO tree) { - List sysDepts = deptMapper.selectList(); +// List sysDepts = deptMapper.selectList(); List companyDeptRoadVOS = treeMapper.selectCompanyDeptRoadTreeData(tree); - // 按公司分组所有部门 - Map> companyDeptsMap = sysDepts.stream() - .filter(d -> d.getParentId() != null) - .collect(Collectors.groupingBy(DeptDO::getParentId)); - - // 过滤出叶子部门(没有子部门的部门) - Map> companyLeafDeptsMap = new HashMap<>(); - for (Map.Entry> entry : companyDeptsMap.entrySet()) { - Long companyId = entry.getKey(); - List depts = entry.getValue(); - - // 构建部门ID到部门的映射 - Map deptMap = depts.stream() - .collect(Collectors.toMap(DeptDO::getId, d -> d)); - - // 找出叶子部门(其parentId不在deptMap中的部门,或者其parentId为0的部门) - List leafDepts = depts.stream() - .filter(d -> d.getParentId() == 0 || !deptMap.containsKey(d.getParentId())) - .collect(Collectors.toList()); - - companyLeafDeptsMap.put(companyId, leafDepts); - } - - // 建立现有结果的映射: 公司ID -> CompanyDeptRoadVO - Map existingCompanyMap = companyDeptRoadVOS.stream() - .collect(Collectors.toMap( - CompanyDeptRoadVO::getCompanyId, - vo -> vo, - (existing, replacement) -> existing - )); - - // 遍历所有公司,补充缺失的公司和部门 - for (Map.Entry> entry : companyLeafDeptsMap.entrySet()) { - Long companyId = entry.getKey(); - List depts = entry.getValue(); - - CompanyDeptRoadVO companyVO; - if (!existingCompanyMap.containsKey(companyId)) { - // 如果公司不存在,创建新的公司对象 - companyVO = new CompanyDeptRoadVO(); - companyVO.setCompanyId(companyId); - companyVO.setCompanyName(DictFrameworkUtils.parseDictDataValue("belongCompanyId", companyId + "")); - companyVO.setDepts(new ArrayList<>()); - companyDeptRoadVOS.add(companyVO); - } else { - companyVO = existingCompanyMap.get(companyId); - } - - // 建立该公司下已存在的部门映射: 部门ID -> DeptVO - Map existingDeptMap = companyVO.getDepts().stream() - .collect(Collectors.toMap( - deptVO -> Long.valueOf(deptVO.getDeptId()), - deptVO -> deptVO, - (existing, replacement) -> existing - )); - - // 补充缺失的部门(仅叶子部门) - for (DeptDO sysDept : depts) { - Long deptId = sysDept.getId(); - if (!existingDeptMap.containsKey(deptId)) { - // 创建缺失的部门对象 - CompanyDeptRoadVO.DeptVO missingDept = new CompanyDeptRoadVO.DeptVO(); - missingDept.setDeptId(deptId); - missingDept.setDeptName(sysDept.getName()); - missingDept.setRoads(new ArrayList<>()); - companyVO.getDepts().add(missingDept); - } - } - } +// // 按公司分组所有部门 +// Map> companyDeptsMap = sysDepts.stream() +// .filter(d -> d.getParentId() != null) +// .collect(Collectors.groupingBy(DeptDO::getParentId)); +// +// // 过滤出叶子部门(没有子部门的部门) +// Map> companyLeafDeptsMap = new HashMap<>(); +// for (Map.Entry> entry : companyDeptsMap.entrySet()) { +// Long companyId = entry.getKey(); +// List depts = entry.getValue(); +// +// // 构建部门ID到部门的映射 +// Map deptMap = depts.stream() +// .collect(Collectors.toMap(DeptDO::getId, d -> d)); +// +// // 找出叶子部门(其parentId不在deptMap中的部门,或者其parentId为0的部门) +// List leafDepts = depts.stream() +// .filter(d -> d.getParentId() == 0 || !deptMap.containsKey(d.getParentId())) +// .collect(Collectors.toList()); +// +// companyLeafDeptsMap.put(companyId, leafDepts); +// } +// +// // 建立现有结果的映射: 公司ID -> CompanyDeptRoadVO +// Map existingCompanyMap = companyDeptRoadVOS.stream() +// .collect(Collectors.toMap( +// CompanyDeptRoadVO::getCompanyId, +// vo -> vo, +// (existing, replacement) -> existing +// )); +// +// // 遍历所有公司,补充缺失的公司和部门 +// for (Map.Entry> entry : companyLeafDeptsMap.entrySet()) { +// Long companyId = entry.getKey(); +// List depts = entry.getValue(); +// +// CompanyDeptRoadVO companyVO; +// if (!existingCompanyMap.containsKey(companyId)) { +// // 如果公司不存在,创建新的公司对象 +// companyVO = new CompanyDeptRoadVO(); +// companyVO.setCompanyId(companyId); +// companyVO.setCompanyName(DictFrameworkUtils.parseDictDataValue("belongCompanyId", companyId + "")); +// companyVO.setDepts(new ArrayList<>()); +// companyDeptRoadVOS.add(companyVO); +// } else { +// companyVO = existingCompanyMap.get(companyId); +// } +// +// // 建立该公司下已存在的部门映射: 部门ID -> DeptVO +// Map existingDeptMap = companyVO.getDepts().stream() +// .collect(Collectors.toMap( +// deptVO -> Long.valueOf(deptVO.getDeptId()), +// deptVO -> deptVO, +// (existing, replacement) -> existing +// )); +// +// // 补充缺失的部门(仅叶子部门) +// for (DeptDO sysDept : depts) { +// Long deptId = sysDept.getId(); +// if (!existingDeptMap.containsKey(deptId)) { +// // 创建缺失的部门对象 +// CompanyDeptRoadVO.DeptVO missingDept = new CompanyDeptRoadVO.DeptVO(); +// missingDept.setDeptId(deptId); +// missingDept.setDeptName(sysDept.getName()); +// missingDept.setRoads(new ArrayList<>()); +// companyVO.getDepts().add(missingDept); +// } +// } +// } return companyDeptRoadVOS; } diff --git a/urbanops-module-garden/src/main/resources/mapper/tree/TreeMapper.xml b/urbanops-module-garden/src/main/resources/mapper/tree/TreeMapper.xml index bc89b70..f70f9d3 100644 --- a/urbanops-module-garden/src/main/resources/mapper/tree/TreeMapper.xml +++ b/urbanops-module-garden/src/main/resources/mapper/tree/TreeMapper.xml @@ -43,8 +43,7 @@ LEFT JOIN garden_road r ON d.id = r.dept_id LEFT JOIN garden_tree t ON r.id = t.road AND t.deleted = 0 WHERE - c.status = 0 - AND d.id NOT IN (SELECT DISTINCT parent_id FROM system_dept WHERE parent_id IS NOT NULL) + c.status = 0 and c.parent_id = 100 AND d.parent_id = #{belongCompanyId} @@ -54,8 +53,8 @@ AND d.id = #{deptId} - GROUP BY c.id, d.id, + GROUP BY c.id, c.name, d.id, d.name, r.id, r.road_name, r.starting_remark, r.end_remark, r.tree_area - ORDER BY treeCount DESC, recordedCount DESC; + ORDER BY treeCount DESC, recordedCount DESC \ No newline at end of file -- libgit2 0.21.4