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 9d81d37..4ba0a95 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 @@ -17,7 +17,6 @@ import java.io.IOException; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.*; -import java.util.stream.Collectors; import com.zteits.urbanops.framework.common.pojo.PageResult; import com.zteits.urbanops.framework.common.pojo.CommonResult; @@ -68,105 +67,38 @@ public class GisRoadController { @PreAuthorize("@ss.hasPermission('garden:gis-road:export')") @ApiAccessLog(operateType = EXPORT) public void exportGisRoadExcel(@Valid GisRoadPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { + HttpServletResponse response) throws IOException { pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); List list = gisRoadService.getGisRoadPage(pageReqVO).getList(); - - // 按道路名称分组 - Map> groupedByRoad = new LinkedHashMap<>(); - List unassociatedList = new ArrayList<>(); - for (GisRoadRespVO vo : list) { - if (vo.getRoadName() == null || vo.getRoadName().isEmpty()) { - unassociatedList.add(vo); - } else { - groupedByRoad.computeIfAbsent(vo.getRoadName(), k -> new ArrayList<>()).add(vo); - } - } - List exportList = new ArrayList<>(); - - // 未关联的记录:保持原样 - for (GisRoadRespVO vo : unassociatedList) { + for (GisRoadRespVO vo : list) { GisRoadExportVO exportVO = new GisRoadExportVO(); exportVO.setGisPlotName(vo.getGisPlotName()); exportVO.setRoadName(vo.getRoadName()); - exportVO.setGisPlotArea(vo.getGisPlotArea() != null ? String.format("%.2f", vo.getGisPlotArea()) : null); + exportVO.setGisPlotArea(vo.getGisPlotArea()); exportVO.setTotalArea(vo.getTotalArea()); - exportVO.setGisIsRelatedStr("未关联"); + exportVO.setGisIsRelatedStr(vo.getGisIsRelated() != null && vo.getGisIsRelated() == 1 ? "已关联" : "未关联"); exportVO.setGisDiffArea(vo.getGisDiffArea()); exportVO.setCompanyName(vo.getCompanyName()); exportVO.setDeptName(vo.getDeptName()); - String positionInfo = buildPositionInfo(vo); - exportVO.setPositionInfo(positionInfo.isEmpty() ? null : positionInfo); - exportList.add(exportVO); - } - - // 已关联的记录:按道路名称合并 - for (Map.Entry> entry : groupedByRoad.entrySet()) { - List group = entry.getValue(); - GisRoadRespVO first = group.get(0); - - GisRoadExportVO exportVO = new GisRoadExportVO(); - exportVO.setRoadName(entry.getKey()); - - // 十谱绿地名称:用顿号拼接 - exportVO.setGisPlotName(group.stream() - .map(GisRoadRespVO::getGisPlotName) - .filter(Objects::nonNull) - .collect(Collectors.joining("、"))); - - // 十谱绿地面积:一一对应拼接,不求和 - exportVO.setGisPlotArea(group.stream() - .map(v -> v.getGisPlotArea() != null ? String.format("%.2f", v.getGisPlotArea()) : "0.00") - .collect(Collectors.joining("、"))); - - // 道路面积:求和 - float sumTotalArea = 0; - for (GisRoadRespVO v : group) { - if (v.getTotalArea() != null) { - sumTotalArea += v.getTotalArea(); - } + // 位置信息:起点描述 ~ 终点描述 + String positionInfo = ""; + if (vo.getStartingRemark() != null) { + positionInfo += vo.getStartingRemark(); } - exportVO.setTotalArea(sumTotalArea); - - // 十谱绿地面积求和(用于计算差异面积) - float sumGisPlotArea = 0; - for (GisRoadRespVO v : group) { - if (v.getGisPlotArea() != null) { - sumGisPlotArea += v.getGisPlotArea(); + if (vo.getEndRemark() != null) { + if (!positionInfo.isEmpty()) { + positionInfo += " ~ "; } + positionInfo += vo.getEndRemark(); } - - // 差异面积:十谱绿地面积合计 - 道路面积合计 - exportVO.setGisDiffArea(sumGisPlotArea - sumTotalArea); - - exportVO.setGisIsRelatedStr("已关联"); - exportVO.setCompanyName(first.getCompanyName()); - exportVO.setDeptName(first.getDeptName()); - // 位置信息:起点描述 ~ 终点描述 - String positionInfo = buildPositionInfo(first); exportVO.setPositionInfo(positionInfo.isEmpty() ? null : positionInfo); exportList.add(exportVO); } - String filename = "十谱绿地核对" + LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")) + ".xls"; ExcelUtils.write(response, filename, "数据", GisRoadExportVO.class, exportList); } - private String buildPositionInfo(GisRoadRespVO vo) { - String positionInfo = ""; - if (vo.getStartingRemark() != null) { - positionInfo += vo.getStartingRemark(); - } - if (vo.getEndRemark() != null) { - if (!positionInfo.isEmpty()) { - positionInfo += " ~ "; - } - positionInfo += vo.getEndRemark(); - } - return positionInfo; - } - @PostMapping("/associate") @Operation(summary = "关联道路到 GIS 图斑") // @PreAuthorize("@ss.hasPermission('garden:gis-road:query')") @@ -193,3 +125,5 @@ public class GisRoadController { } } + + 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 c85336c..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 @@ -22,7 +22,8 @@ public class GisRoadExportVO { @Schema(description = "十谱绿地面积") @ExcelProperty("十谱绿地面积(㎡)") - private String gisPlotArea; + @JsonSerialize(using = TwoDecimalFloatSerializer.class) + private Float gisPlotArea; @Schema(description = "道路面积") @ExcelProperty("道路面积(㎡)")