diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/WaterStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/WaterStaticsController.java index 0e9f752..5918107 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/WaterStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/WaterStaticsController.java @@ -140,6 +140,98 @@ } /** + * 查询二级分区7日用水量 + * + * @return + */ + @RequestMapping(value = "/countByDay") + @ResponseBody + public Object countByDaySecond(String areaId, String startTime, String endTime) { + List areaList = iAreaService.selectList(null); + List areaLevel2List = new ArrayList<>(); + List dateStrs = DateUtil.getBetweenTime(startTime, endTime); + areaList.forEach(area -> { + //过滤一级区域 + if ("3".equals(area.getLevel().toString()) && area.getPids() != null && area.getPids().contains("[" + areaId + "]")) { + areaLevel2List.add(area); + } + }); + // 二级区域 + List> sencodAreaCountList = new ArrayList<>(); + //寻找二级区域下的所有子区域的总用水量 按照天 + for (Area area2 : areaLevel2List) { + List childIdsList = new ArrayList<>(); + Map map = new HashMap<>(); + for (Area area : areaList) { + if (area.getPids() != null && area.getPids().contains("[" + area2.getId() + "]")) { + childIdsList.add(area.getId()); + } + } + if (ToolUtil.isNotEmpty(childIdsList)) { + List> retMap = statisticsService.countByDayFirst(startTime, endTime, StringUtils.join(childIdsList.toArray(), ",")); + map.put(area2.getAreaName(), retMap); + } + sencodAreaCountList.add(map); + } + //封装数据 + List> returnMapList = new ArrayList<>(); + for (String dateStr : dateStrs) { + // 返回数据中的每日各二级分区的用水量 + Map dateItemMap = new HashMap<>(); + dateItemMap.put("date", dateStr); + List> secondAreaDataList = new ArrayList<>(); + + // 遍历查询结果List中的各二级分许 + for (int i = 0; i < sencodAreaCountList.size(); i++) { + Map sencodAreaCountItem = sencodAreaCountList.get(i); + String areaName = areaLevel2List.get(i).getAreaName(); + String areaDayCount = "0"; + Map areaDayDataObj = new HashMap<>(); + List> areaDayCountList = (List) sencodAreaCountItem.get(areaName); + + // 不为空表示有数据 + if (areaDayCountList.size() > 0) { + for (Map dayMap : areaDayCountList) { + if (dayMap.containsKey("DATE") == true && dayMap.get("DATE").toString().equals(dateStr) == true) { + areaDayCount = dayMap.get("count").toString(); + } + } + } + + areaDayDataObj.put("areaName", areaName); + areaDayDataObj.put("count", areaDayCount); + + secondAreaDataList.add(areaDayDataObj); + } + + dateItemMap.put("data", secondAreaDataList); + returnMapList.add(dateItemMap); +/* + for (Area area2 : areaLevel2List) { + // 二级分区的日用水量数据对象{areaName, count} + List> secondAreaMapList = new ArrayList<>(); + Map countMap = new HashMap<>(); + countMap.put("areaName", area2.getAreaName()); +// countMap.put("count", "0"); + for (Map objectMap : sencodAreaCountList) { + if (ToolUtil.isNotEmpty(objectMap.get(area2.getAreaName()))) { + List> maps = (List>) objectMap.get(area2.getAreaName()); + for (Map map : maps) { + if (ToolUtil.isNotEmpty(map.get("DATE")) && (dateStr).equals(map.get("DATE").toString())) { + countMap.put("count", map.get("count").toString()); + } + } + } + } + secondAreaMapList.add(countMap); + dateItemMap.put("data", secondAreaMapList); + returnMapList.add(dateItemMap); + }*/ + } + return ResponseData.success(returnMapList); + } + + /** * 查询二级分区用水量 * * @return