From c51873ef1e24319cc7439da42bfc2cc18f31ba48 Mon Sep 17 00:00:00 2001 From: 王彪总 Date: Fri, 29 May 2026 16:12:09 +0800 Subject: [PATCH] feat(garden): 添加GIS道路管理和坐标转换功能 --- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/gis/GisRoadController.java | 17 +++++++++++++++-- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/gis/vo/GisRoadExportVO.java | 22 +++++++++++++++++----- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/gis/GisRoadServiceImpl.java | 12 ++---------- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/problemtype/GardenProblemTypeServiceImpl.java | 41 +++++++++++++++++++++++++++++++---------- 4 files changed, 65 insertions(+), 27 deletions(-) diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/gis/GisRoadController.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/gis/GisRoadController.java index cb7cc6a..ed2c487 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/gis/GisRoadController.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/gis/GisRoadController.java @@ -70,7 +70,6 @@ public class GisRoadController { HttpServletResponse response) throws IOException { pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); List list = gisRoadService.getGisRoadPage(pageReqVO).getList(); - // 只导出表格展示的 6 列数据 List exportList = new ArrayList<>(); for (GisRoadRespVO vo : list) { GisRoadExportVO exportVO = new GisRoadExportVO(); @@ -80,9 +79,23 @@ public class GisRoadController { exportVO.setTotalArea(vo.getTotalArea()); exportVO.setGisIsRelatedStr(vo.getGisIsRelated() != null && vo.getGisIsRelated() == 1 ? "已关联" : "未关联"); exportVO.setGisDiffArea(vo.getGisDiffArea()); + exportVO.setCompanyName(vo.getCompanyName()); + exportVO.setDeptName(vo.getDeptName()); + // 位置信息:起点描述 ~ 终点描述 + String positionInfo = ""; + if (vo.getStartingRemark() != null) { + positionInfo += vo.getStartingRemark(); + } + if (vo.getEndRemark() != null) { + if (!positionInfo.isEmpty()) { + positionInfo += " ~ "; + } + positionInfo += vo.getEndRemark(); + } + exportVO.setPositionInfo(positionInfo.isEmpty() ? null : positionInfo); exportList.add(exportVO); } - String filename = "GIS核对" + LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")) + ".xls"; + String filename = "十谱绿地核对" + LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")) + ".xls"; ExcelUtils.write(response, filename, "数据", GisRoadExportVO.class, exportList); } diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/gis/vo/GisRoadExportVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/gis/vo/GisRoadExportVO.java index ce178a9..cb91a6c 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/gis/vo/GisRoadExportVO.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/gis/vo/GisRoadExportVO.java @@ -7,21 +7,21 @@ import lombok.Data; import cn.idev.excel.annotation.ExcelIgnoreUnannotated; import cn.idev.excel.annotation.ExcelProperty; -@Schema(description = "GIS 道路核对导出 VO") +@Schema(description = "十谱绿地核对导出 VO") @Data @ExcelIgnoreUnannotated public class GisRoadExportVO { - @Schema(description = "图斑名称") - @ExcelProperty("图斑名称") + @Schema(description = "十谱绿地名称") + @ExcelProperty("十谱绿地名称") private String gisPlotName; @Schema(description = "道路名称") @ExcelProperty("道路名称") private String roadName; - @Schema(description = "图斑面积") - @ExcelProperty("图斑面积(㎡)") + @Schema(description = "十谱绿地面积") + @ExcelProperty("十谱绿地面积(㎡)") @JsonSerialize(using = TwoDecimalFloatSerializer.class) private Float gisPlotArea; @@ -39,4 +39,16 @@ public class GisRoadExportVO { @JsonSerialize(using = TwoDecimalFloatSerializer.class) private Float gisDiffArea; + @Schema(description = "归属单位") + @ExcelProperty("归属单位") + private String companyName; + + @Schema(description = "归属班组") + @ExcelProperty("归属班组") + private String deptName; + + @Schema(description = "位置信息") + @ExcelProperty("位置信息") + private String positionInfo; + } diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/gis/GisRoadServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/gis/GisRoadServiceImpl.java index 4d05507..4687d58 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/gis/GisRoadServiceImpl.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/gis/GisRoadServiceImpl.java @@ -124,19 +124,11 @@ public class GisRoadServiceImpl implements GisRoadService { .set(RoadDO::getGisIsRelated, 0)); } - // 清空 garden_gis_road 的道路关联信息 + // 取消关联:仅将关联状态置为 0,其他字段因数据库 NOT NULL 约束保留原值 gisRoadMapper.update(null, new LambdaUpdateWrapper() .eq(GisRoadDO::getId, gisRoad.getId()) - .set(GisRoadDO::getGisRoadId, null) - .set(GisRoadDO::getRoadName, null) - .set(GisRoadDO::getTotalArea, null) - .set(GisRoadDO::getCompanyId, null) - .set(GisRoadDO::getDeptId, null) - .set(GisRoadDO::getGisDiffArea, null) - .set(GisRoadDO::getGisIsRelated, 0) - .set(GisRoadDO::getGisRelatedUser, null) - .set(GisRoadDO::getGisRelatedTime, null)); + .set(GisRoadDO::getGisIsRelated, 0)); } @Override diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/problemtype/GardenProblemTypeServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/problemtype/GardenProblemTypeServiceImpl.java index 7089996..f9edb4c 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/problemtype/GardenProblemTypeServiceImpl.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/problemtype/GardenProblemTypeServiceImpl.java @@ -98,12 +98,33 @@ public class GardenProblemTypeServiceImpl implements GardenProblemTypeService { @Override public List getProblemTypeTree(String parentCode) { - List allList = gardenProblemTypeMapper.selectList( - new com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX() - .eq(GardenProblemTypeDO::getStatus, 1) - .eq(GardenProblemTypeDO::getParentCode, parentCode) - .orderByAsc(GardenProblemTypeDO::getSort) - .orderByAsc(GardenProblemTypeDO::getId)); + List allList; + + if (parentCode == null) { + allList = gardenProblemTypeMapper.selectList( + new com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX() + .eq(GardenProblemTypeDO::getStatus, 1) + .orderByAsc(GardenProblemTypeDO::getSort) + .orderByAsc(GardenProblemTypeDO::getId)); + } else { + List level2List = gardenProblemTypeMapper.selectByParentCodeAndLevel(parentCode, 2); + + List level2Codes = level2List.stream() + .map(GardenProblemTypeDO::getTypeCode) + .collect(Collectors.toList()); + + List level3List = new ArrayList<>(); + if (!level2Codes.isEmpty()) { + level3List = gardenProblemTypeMapper.selectList( + new com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX() + .eq(GardenProblemTypeDO::getStatus, 1) + .in(GardenProblemTypeDO::getParentCode, level2Codes)); + } + + allList = new ArrayList<>(); + allList.addAll(level2List); + allList.addAll(level3List); + } Map> childrenMap = allList.stream() .filter(item -> item.getParentCode() != null && !item.getParentCode().equals(item.getTypeCode())) @@ -119,11 +140,11 @@ public class GardenProblemTypeServiceImpl implements GardenProblemTypeService { result.add(vo); } } else { - List parentList = allList.stream() - .filter(item -> parentCode.equals(item.getTypeCode())) + List childrenList = allList.stream() + .filter(item -> parentCode.equals(item.getParentCode())) .collect(Collectors.toList()); - for (GardenProblemTypeDO parent : parentList) { - ProblemTypeCascadeRespVO vo = buildTreeNode(parent, childrenMap); + for (GardenProblemTypeDO child : childrenList) { + ProblemTypeCascadeRespVO vo = buildTreeNode(child, childrenMap); result.add(vo); } } -- libgit2 0.21.4