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 43e042e..0e9f752 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 @@ -3,19 +3,18 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; -import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.ToolUtil; -import com.casic.missiles.modular.system.dto.AlarmNowView; import com.casic.missiles.modular.system.model.Area; +import com.casic.missiles.modular.system.model.DeviceType; import com.casic.missiles.modular.system.service.IAlarmNowViewService; import com.casic.missiles.modular.system.service.IAreaService; +import com.casic.missiles.modular.system.service.IDeviceTypeService; import com.casic.missiles.modular.system.service.IStatisticsService; import com.casic.missiles.modular.system.util.DateUtil; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import java.util.ArrayList; @@ -28,15 +27,58 @@ public class WaterStaticsController extends BaseController { @Autowired private IStatisticsService statisticsService; - @Autowired - private IAlarmNowViewService alarmNowViewService; - @Autowired - private ICommonPermissionService permissionService; + @Autowired private IAreaService iAreaService; + @Autowired + private IDeviceTypeService iDeviceTypeService; + + + /** - * 根据权属单位统计闸井数量 + * 查询一级分区各区用水量 + * + * @return + */ + @RequestMapping(value = "/countByFirstArea") + @ResponseBody + public Object countByFirstArea(String startTime, String endTime) { + List areaList = iAreaService.selectList(null); + List areaLevel1List = new ArrayList<>(); + + areaList.forEach(area -> { + //过滤一级区域 + if ("2".equals(area.getLevel().toString())) { + areaLevel1List.add(area); + } + }); + List> mapList = new ArrayList<>(); + //寻找一级区域下的所有子区域的总用水量 按照天 + for (Area area1 : areaLevel1List) { + List childIdsList = new ArrayList<>(); + Map map = new HashMap<>(); + map.put("areaId", area1.getId()); + map.put("areaName", area1.getAreaName()); + map.put("count", 0); + for (Area area : areaList) { + if (area.getPids()!=null&&area.getPids().contains("[" + area1.getId() + "]")) { + childIdsList.add(area.getId()); + } + } + if (ToolUtil.isNotEmpty(childIdsList)) { + Long count = statisticsService.countByFirstArea(startTime, endTime, StringUtils.join(childIdsList.toArray(), ",")); + map.put("count", count); + } + mapList.add(map); + } + + return ResponseData.success(mapList); + } + + + /** + * 查询一级分区7日用水量 * * @return */ @@ -45,7 +87,6 @@ public Object countByDayFirst(String startTime, String endTime) { List areaList = iAreaService.selectList(null); List areaLevel1List = new ArrayList<>(); - List childIdsList = new ArrayList<>(); List dateStrs = DateUtil.getBetweenTime(startTime, endTime); areaList.forEach(area -> { //过滤一级区域 @@ -56,9 +97,10 @@ List> mapList = new ArrayList<>(); //寻找一级区域下的所有子区域的总用水量 按照天 for (Area area1 : areaLevel1List) { + List childIdsList = new ArrayList<>(); Map map = new HashMap<>(); for (Area area : areaList) { - if (area.getPids().contains("[" + area1.getPid() + "]")) { + if (area.getPids()!=null&&area.getPids().contains("[" + area1.getId() + "]")) { childIdsList.add(area.getId()); } } @@ -69,7 +111,7 @@ mapList.add(map); } //封装数据 - List>> returnMapList = new ArrayList<>(); + List> returnMapList = new ArrayList<>(); for (String dateStr : dateStrs) { Map retMap = new HashMap<>(); retMap.put("date", dateStr); @@ -90,127 +132,137 @@ } } returnMaps.add(countMap); - returnMapList.add(returnMaps); + retMap.put("data", returnMaps); + returnMapList.add(retMap); } - } return ResponseData.success(returnMapList); - } /** - * 根据井类型统计闸井数量 + * 查询二级分区用水量 + * + * @return */ - @RequestMapping(value = "/wellStaticsByType") + @RequestMapping(value = "/countBySecondArea") @ResponseBody - public Object wellStaticsByType() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.wellStaticsByType(dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); + public Object countBySecondArea(String areaId, String startTime, String endTime) { + List areaList = iAreaService.selectList(null); + List areaLevel2List = new ArrayList<>(); + + areaList.forEach(area -> { + //根据一级区域过滤二级区域 + if ("3".equals(area.getLevel().toString()) &&area.getPids()!=null&& area.getPids().contains("[" + areaId + "]")) { + areaLevel2List.add(area); + } + }); + List> mapList = new ArrayList<>(); + //寻找一级区域下的所有子区域的总用水量 按照天 + for (Area area2 : areaLevel2List) { + List childIdsList = new ArrayList<>(); + Map map = new HashMap<>(); + map.put("areaId", area2.getId()); + map.put("areaName", area2.getAreaName()); + map.put("count", 0); + for (Area area : areaList) { + if (area.getPids()!=null&&area.getPids().contains("[" + area2.getId() + "]")) { + childIdsList.add(area.getId()); + } + } + if (ToolUtil.isNotEmpty(childIdsList)) { + Long count = statisticsService.countByFirstArea(startTime, endTime, StringUtils.join(childIdsList.toArray(), ",")); + map.put("count", count); + } + mapList.add(map); } + + return ResponseData.success(mapList); } + /** - * 根据设备类型统计设备数量 + * 查询二级分区水表告警 + * + * @return */ - @RequestMapping(value = "/deviceStaticsByType") + @RequestMapping(value = "/alarmBySecondArea") @ResponseBody - public Object deviceStaticsByType() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.deviceStaticsByType(dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); + public Object alarmBySecondArea(String areaId, String startTime, String endTime) { + List areaList = iAreaService.selectList(null); + List areaLevel2List = new ArrayList<>(); + areaList.forEach(area -> { + //根据一级区域过滤二级区域 + if ("3".equals(area.getLevel().toString()) && area.getPids().contains("[" + areaId + "]")) { + areaLevel2List.add(area); + } + }); + List> mapList = new ArrayList<>(); + //寻找一级区域下的所有子区域的总用水量 按照天 + for (Area area2 : areaLevel2List) { + List childIdsList = new ArrayList<>(); + Map map = new HashMap<>(); + map.put("areaId", area2.getId()); + map.put("areaName", area2.getAreaName()); + map.put("alarm", 0); + map.put("warning", 0); + for (Area area : areaList) { + if (area.getPids()!=null&&area.getPids().contains("[" + area2.getId() + "]")) { + childIdsList.add(area.getId()); + } + } + if (ToolUtil.isNotEmpty(childIdsList)) { + Map objectMap = statisticsService.alarmBySecondArea(startTime, endTime, StringUtils.join(childIdsList.toArray(), ",")); + if (ToolUtil.isNotEmpty(objectMap) && ToolUtil.isNotEmpty(objectMap.get("alarm"))) + map.put("alarm", objectMap.get("alarm").toString()); + if (ToolUtil.isNotEmpty(objectMap) && ToolUtil.isNotEmpty(objectMap.get("warning"))) + map.put("warning", objectMap.get("warning").toString()); + } + mapList.add(map); } + + return ResponseData.success(mapList); } + /** - * 根据权属单位统计设备数量 + * 设备7日报警趋势 + * + * @return */ - @RequestMapping(value = "/deviceStaticsByDept") + @RequestMapping(value = "/alarmCountByDay") @ResponseBody - public Object deviceStaticsByDept(@RequestParam(value = "deviceType", required = false) String deviceType) { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.deviceStaticsByDept(dataScope, deviceType); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } + public Object alarmCountByDay(String startTime, String endTime) { + List deviceTypeList =iDeviceTypeService.getTypeList(); - /** - * 根据在线状态统计设备数量 - */ - @RequestMapping(value = "/deviceStaticsByStatus") - @ResponseBody - public Object deviceStaticsByStatus() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - Map res = statisticsService.deviceStaticsByStatus(dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } + List dateStrs = DateUtil.getBetweenTime(startTime, endTime); - /** - * 根据权属单位统计工单数 - */ - @RequestMapping(value = "/jobsByDept") - @ResponseBody - public Object jobsByDept(String beginTime, String endTime, String deviceType) { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.jobsByDept(dataScope, beginTime, endTime, deviceType); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } + List> objectMapList = statisticsService.alarmCountByDay(startTime, endTime); - /** - * 当前报警统计 - */ - @RequestMapping(value = "/alarmsNow") - @ResponseBody - public Object alarmsNow() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List alarmNowViews = alarmNowViewService.getNowAlarmRecords(dataScope); - Map res = new HashMap<>(); - res.put("total", alarmNowViews.size()); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); + //封装数据 + List> returnMapList = new ArrayList<>(); + for (String dateStr : dateStrs) { + Map retMap = new HashMap<>(); + retMap.put("date", dateStr); + retMap.put("data", new ArrayList<>()); + List> returnMaps = new ArrayList<>(); + for (DeviceType deviceType : deviceTypeList) { + Map countMap = new HashMap<>(); + countMap.put("name", deviceType.getTypeName()); + countMap.put("count", "0"); + for (Map objectMap : objectMapList) { + if (ToolUtil.isNotEmpty(objectMap.get("name"))) { + if(deviceType.getTypeName().equals(objectMap.get("name").toString())&& + dateStr.equals(objectMap.get("alarmDate").toString())){ + countMap.put("count", objectMap.get("count").toString()); + } + } + } + returnMaps.add(countMap); + } + retMap.put("data", returnMaps); + returnMapList.add(retMap); } + return ResponseData.success(returnMapList); } - /** - * 统计每日报警总数 - */ - @RequestMapping("/alarmsByDay") - @ResponseBody - public Object alarmsByDay(String beginTime, String endTime) { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.alarmsByDay(beginTime, endTime, dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } - - } 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 43e042e..0e9f752 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 @@ -3,19 +3,18 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; -import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.ToolUtil; -import com.casic.missiles.modular.system.dto.AlarmNowView; import com.casic.missiles.modular.system.model.Area; +import com.casic.missiles.modular.system.model.DeviceType; import com.casic.missiles.modular.system.service.IAlarmNowViewService; import com.casic.missiles.modular.system.service.IAreaService; +import com.casic.missiles.modular.system.service.IDeviceTypeService; import com.casic.missiles.modular.system.service.IStatisticsService; import com.casic.missiles.modular.system.util.DateUtil; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import java.util.ArrayList; @@ -28,15 +27,58 @@ public class WaterStaticsController extends BaseController { @Autowired private IStatisticsService statisticsService; - @Autowired - private IAlarmNowViewService alarmNowViewService; - @Autowired - private ICommonPermissionService permissionService; + @Autowired private IAreaService iAreaService; + @Autowired + private IDeviceTypeService iDeviceTypeService; + + + /** - * 根据权属单位统计闸井数量 + * 查询一级分区各区用水量 + * + * @return + */ + @RequestMapping(value = "/countByFirstArea") + @ResponseBody + public Object countByFirstArea(String startTime, String endTime) { + List areaList = iAreaService.selectList(null); + List areaLevel1List = new ArrayList<>(); + + areaList.forEach(area -> { + //过滤一级区域 + if ("2".equals(area.getLevel().toString())) { + areaLevel1List.add(area); + } + }); + List> mapList = new ArrayList<>(); + //寻找一级区域下的所有子区域的总用水量 按照天 + for (Area area1 : areaLevel1List) { + List childIdsList = new ArrayList<>(); + Map map = new HashMap<>(); + map.put("areaId", area1.getId()); + map.put("areaName", area1.getAreaName()); + map.put("count", 0); + for (Area area : areaList) { + if (area.getPids()!=null&&area.getPids().contains("[" + area1.getId() + "]")) { + childIdsList.add(area.getId()); + } + } + if (ToolUtil.isNotEmpty(childIdsList)) { + Long count = statisticsService.countByFirstArea(startTime, endTime, StringUtils.join(childIdsList.toArray(), ",")); + map.put("count", count); + } + mapList.add(map); + } + + return ResponseData.success(mapList); + } + + + /** + * 查询一级分区7日用水量 * * @return */ @@ -45,7 +87,6 @@ public Object countByDayFirst(String startTime, String endTime) { List areaList = iAreaService.selectList(null); List areaLevel1List = new ArrayList<>(); - List childIdsList = new ArrayList<>(); List dateStrs = DateUtil.getBetweenTime(startTime, endTime); areaList.forEach(area -> { //过滤一级区域 @@ -56,9 +97,10 @@ List> mapList = new ArrayList<>(); //寻找一级区域下的所有子区域的总用水量 按照天 for (Area area1 : areaLevel1List) { + List childIdsList = new ArrayList<>(); Map map = new HashMap<>(); for (Area area : areaList) { - if (area.getPids().contains("[" + area1.getPid() + "]")) { + if (area.getPids()!=null&&area.getPids().contains("[" + area1.getId() + "]")) { childIdsList.add(area.getId()); } } @@ -69,7 +111,7 @@ mapList.add(map); } //封装数据 - List>> returnMapList = new ArrayList<>(); + List> returnMapList = new ArrayList<>(); for (String dateStr : dateStrs) { Map retMap = new HashMap<>(); retMap.put("date", dateStr); @@ -90,127 +132,137 @@ } } returnMaps.add(countMap); - returnMapList.add(returnMaps); + retMap.put("data", returnMaps); + returnMapList.add(retMap); } - } return ResponseData.success(returnMapList); - } /** - * 根据井类型统计闸井数量 + * 查询二级分区用水量 + * + * @return */ - @RequestMapping(value = "/wellStaticsByType") + @RequestMapping(value = "/countBySecondArea") @ResponseBody - public Object wellStaticsByType() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.wellStaticsByType(dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); + public Object countBySecondArea(String areaId, String startTime, String endTime) { + List areaList = iAreaService.selectList(null); + List areaLevel2List = new ArrayList<>(); + + areaList.forEach(area -> { + //根据一级区域过滤二级区域 + if ("3".equals(area.getLevel().toString()) &&area.getPids()!=null&& area.getPids().contains("[" + areaId + "]")) { + areaLevel2List.add(area); + } + }); + List> mapList = new ArrayList<>(); + //寻找一级区域下的所有子区域的总用水量 按照天 + for (Area area2 : areaLevel2List) { + List childIdsList = new ArrayList<>(); + Map map = new HashMap<>(); + map.put("areaId", area2.getId()); + map.put("areaName", area2.getAreaName()); + map.put("count", 0); + for (Area area : areaList) { + if (area.getPids()!=null&&area.getPids().contains("[" + area2.getId() + "]")) { + childIdsList.add(area.getId()); + } + } + if (ToolUtil.isNotEmpty(childIdsList)) { + Long count = statisticsService.countByFirstArea(startTime, endTime, StringUtils.join(childIdsList.toArray(), ",")); + map.put("count", count); + } + mapList.add(map); } + + return ResponseData.success(mapList); } + /** - * 根据设备类型统计设备数量 + * 查询二级分区水表告警 + * + * @return */ - @RequestMapping(value = "/deviceStaticsByType") + @RequestMapping(value = "/alarmBySecondArea") @ResponseBody - public Object deviceStaticsByType() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.deviceStaticsByType(dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); + public Object alarmBySecondArea(String areaId, String startTime, String endTime) { + List areaList = iAreaService.selectList(null); + List areaLevel2List = new ArrayList<>(); + areaList.forEach(area -> { + //根据一级区域过滤二级区域 + if ("3".equals(area.getLevel().toString()) && area.getPids().contains("[" + areaId + "]")) { + areaLevel2List.add(area); + } + }); + List> mapList = new ArrayList<>(); + //寻找一级区域下的所有子区域的总用水量 按照天 + for (Area area2 : areaLevel2List) { + List childIdsList = new ArrayList<>(); + Map map = new HashMap<>(); + map.put("areaId", area2.getId()); + map.put("areaName", area2.getAreaName()); + map.put("alarm", 0); + map.put("warning", 0); + for (Area area : areaList) { + if (area.getPids()!=null&&area.getPids().contains("[" + area2.getId() + "]")) { + childIdsList.add(area.getId()); + } + } + if (ToolUtil.isNotEmpty(childIdsList)) { + Map objectMap = statisticsService.alarmBySecondArea(startTime, endTime, StringUtils.join(childIdsList.toArray(), ",")); + if (ToolUtil.isNotEmpty(objectMap) && ToolUtil.isNotEmpty(objectMap.get("alarm"))) + map.put("alarm", objectMap.get("alarm").toString()); + if (ToolUtil.isNotEmpty(objectMap) && ToolUtil.isNotEmpty(objectMap.get("warning"))) + map.put("warning", objectMap.get("warning").toString()); + } + mapList.add(map); } + + return ResponseData.success(mapList); } + /** - * 根据权属单位统计设备数量 + * 设备7日报警趋势 + * + * @return */ - @RequestMapping(value = "/deviceStaticsByDept") + @RequestMapping(value = "/alarmCountByDay") @ResponseBody - public Object deviceStaticsByDept(@RequestParam(value = "deviceType", required = false) String deviceType) { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.deviceStaticsByDept(dataScope, deviceType); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } + public Object alarmCountByDay(String startTime, String endTime) { + List deviceTypeList =iDeviceTypeService.getTypeList(); - /** - * 根据在线状态统计设备数量 - */ - @RequestMapping(value = "/deviceStaticsByStatus") - @ResponseBody - public Object deviceStaticsByStatus() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - Map res = statisticsService.deviceStaticsByStatus(dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } + List dateStrs = DateUtil.getBetweenTime(startTime, endTime); - /** - * 根据权属单位统计工单数 - */ - @RequestMapping(value = "/jobsByDept") - @ResponseBody - public Object jobsByDept(String beginTime, String endTime, String deviceType) { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.jobsByDept(dataScope, beginTime, endTime, deviceType); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } + List> objectMapList = statisticsService.alarmCountByDay(startTime, endTime); - /** - * 当前报警统计 - */ - @RequestMapping(value = "/alarmsNow") - @ResponseBody - public Object alarmsNow() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List alarmNowViews = alarmNowViewService.getNowAlarmRecords(dataScope); - Map res = new HashMap<>(); - res.put("total", alarmNowViews.size()); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); + //封装数据 + List> returnMapList = new ArrayList<>(); + for (String dateStr : dateStrs) { + Map retMap = new HashMap<>(); + retMap.put("date", dateStr); + retMap.put("data", new ArrayList<>()); + List> returnMaps = new ArrayList<>(); + for (DeviceType deviceType : deviceTypeList) { + Map countMap = new HashMap<>(); + countMap.put("name", deviceType.getTypeName()); + countMap.put("count", "0"); + for (Map objectMap : objectMapList) { + if (ToolUtil.isNotEmpty(objectMap.get("name"))) { + if(deviceType.getTypeName().equals(objectMap.get("name").toString())&& + dateStr.equals(objectMap.get("alarmDate").toString())){ + countMap.put("count", objectMap.get("count").toString()); + } + } + } + returnMaps.add(countMap); + } + retMap.put("data", returnMaps); + returnMapList.add(retMap); } + return ResponseData.success(returnMapList); } - /** - * 统计每日报警总数 - */ - @RequestMapping("/alarmsByDay") - @ResponseBody - public Object alarmsByDay(String beginTime, String endTime) { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.alarmsByDay(beginTime, endTime, dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } - - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/StatisticMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/StatisticMapper.java index 52746d6..7e30d95 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/StatisticMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/StatisticMapper.java @@ -15,4 +15,7 @@ List> jobsByDept(@Param("dataScope")DataScope dataScope,@Param("beginTime")String beginTime,@Param("endTime")String endTime,@Param("deviceType")String deviceType); Map jobsByDeptId(@Param("deptIds")String deptIds,@Param("beginTime")String beginTime,@Param("endTime")String endTime); List> countByDayFirst(@Param("startTime")String startTime,@Param("endTime")String endTime,@Param("areaIds")String areaIds); + List> alarmCountByDay(@Param("startTime")String startTime,@Param("endTime")String endTime); + Map alarmBySecondArea(@Param("startTime")String startTime,@Param("endTime")String endTime,@Param("areaIds")String areaIds); + Long countByFirstArea(@Param("startTime")String startTime,@Param("endTime")String endTime,@Param("areaIds")String areaIds); } 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 43e042e..0e9f752 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 @@ -3,19 +3,18 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; -import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.ToolUtil; -import com.casic.missiles.modular.system.dto.AlarmNowView; import com.casic.missiles.modular.system.model.Area; +import com.casic.missiles.modular.system.model.DeviceType; import com.casic.missiles.modular.system.service.IAlarmNowViewService; import com.casic.missiles.modular.system.service.IAreaService; +import com.casic.missiles.modular.system.service.IDeviceTypeService; import com.casic.missiles.modular.system.service.IStatisticsService; import com.casic.missiles.modular.system.util.DateUtil; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import java.util.ArrayList; @@ -28,15 +27,58 @@ public class WaterStaticsController extends BaseController { @Autowired private IStatisticsService statisticsService; - @Autowired - private IAlarmNowViewService alarmNowViewService; - @Autowired - private ICommonPermissionService permissionService; + @Autowired private IAreaService iAreaService; + @Autowired + private IDeviceTypeService iDeviceTypeService; + + + /** - * 根据权属单位统计闸井数量 + * 查询一级分区各区用水量 + * + * @return + */ + @RequestMapping(value = "/countByFirstArea") + @ResponseBody + public Object countByFirstArea(String startTime, String endTime) { + List areaList = iAreaService.selectList(null); + List areaLevel1List = new ArrayList<>(); + + areaList.forEach(area -> { + //过滤一级区域 + if ("2".equals(area.getLevel().toString())) { + areaLevel1List.add(area); + } + }); + List> mapList = new ArrayList<>(); + //寻找一级区域下的所有子区域的总用水量 按照天 + for (Area area1 : areaLevel1List) { + List childIdsList = new ArrayList<>(); + Map map = new HashMap<>(); + map.put("areaId", area1.getId()); + map.put("areaName", area1.getAreaName()); + map.put("count", 0); + for (Area area : areaList) { + if (area.getPids()!=null&&area.getPids().contains("[" + area1.getId() + "]")) { + childIdsList.add(area.getId()); + } + } + if (ToolUtil.isNotEmpty(childIdsList)) { + Long count = statisticsService.countByFirstArea(startTime, endTime, StringUtils.join(childIdsList.toArray(), ",")); + map.put("count", count); + } + mapList.add(map); + } + + return ResponseData.success(mapList); + } + + + /** + * 查询一级分区7日用水量 * * @return */ @@ -45,7 +87,6 @@ public Object countByDayFirst(String startTime, String endTime) { List areaList = iAreaService.selectList(null); List areaLevel1List = new ArrayList<>(); - List childIdsList = new ArrayList<>(); List dateStrs = DateUtil.getBetweenTime(startTime, endTime); areaList.forEach(area -> { //过滤一级区域 @@ -56,9 +97,10 @@ List> mapList = new ArrayList<>(); //寻找一级区域下的所有子区域的总用水量 按照天 for (Area area1 : areaLevel1List) { + List childIdsList = new ArrayList<>(); Map map = new HashMap<>(); for (Area area : areaList) { - if (area.getPids().contains("[" + area1.getPid() + "]")) { + if (area.getPids()!=null&&area.getPids().contains("[" + area1.getId() + "]")) { childIdsList.add(area.getId()); } } @@ -69,7 +111,7 @@ mapList.add(map); } //封装数据 - List>> returnMapList = new ArrayList<>(); + List> returnMapList = new ArrayList<>(); for (String dateStr : dateStrs) { Map retMap = new HashMap<>(); retMap.put("date", dateStr); @@ -90,127 +132,137 @@ } } returnMaps.add(countMap); - returnMapList.add(returnMaps); + retMap.put("data", returnMaps); + returnMapList.add(retMap); } - } return ResponseData.success(returnMapList); - } /** - * 根据井类型统计闸井数量 + * 查询二级分区用水量 + * + * @return */ - @RequestMapping(value = "/wellStaticsByType") + @RequestMapping(value = "/countBySecondArea") @ResponseBody - public Object wellStaticsByType() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.wellStaticsByType(dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); + public Object countBySecondArea(String areaId, String startTime, String endTime) { + List areaList = iAreaService.selectList(null); + List areaLevel2List = new ArrayList<>(); + + areaList.forEach(area -> { + //根据一级区域过滤二级区域 + if ("3".equals(area.getLevel().toString()) &&area.getPids()!=null&& area.getPids().contains("[" + areaId + "]")) { + areaLevel2List.add(area); + } + }); + List> mapList = new ArrayList<>(); + //寻找一级区域下的所有子区域的总用水量 按照天 + for (Area area2 : areaLevel2List) { + List childIdsList = new ArrayList<>(); + Map map = new HashMap<>(); + map.put("areaId", area2.getId()); + map.put("areaName", area2.getAreaName()); + map.put("count", 0); + for (Area area : areaList) { + if (area.getPids()!=null&&area.getPids().contains("[" + area2.getId() + "]")) { + childIdsList.add(area.getId()); + } + } + if (ToolUtil.isNotEmpty(childIdsList)) { + Long count = statisticsService.countByFirstArea(startTime, endTime, StringUtils.join(childIdsList.toArray(), ",")); + map.put("count", count); + } + mapList.add(map); } + + return ResponseData.success(mapList); } + /** - * 根据设备类型统计设备数量 + * 查询二级分区水表告警 + * + * @return */ - @RequestMapping(value = "/deviceStaticsByType") + @RequestMapping(value = "/alarmBySecondArea") @ResponseBody - public Object deviceStaticsByType() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.deviceStaticsByType(dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); + public Object alarmBySecondArea(String areaId, String startTime, String endTime) { + List areaList = iAreaService.selectList(null); + List areaLevel2List = new ArrayList<>(); + areaList.forEach(area -> { + //根据一级区域过滤二级区域 + if ("3".equals(area.getLevel().toString()) && area.getPids().contains("[" + areaId + "]")) { + areaLevel2List.add(area); + } + }); + List> mapList = new ArrayList<>(); + //寻找一级区域下的所有子区域的总用水量 按照天 + for (Area area2 : areaLevel2List) { + List childIdsList = new ArrayList<>(); + Map map = new HashMap<>(); + map.put("areaId", area2.getId()); + map.put("areaName", area2.getAreaName()); + map.put("alarm", 0); + map.put("warning", 0); + for (Area area : areaList) { + if (area.getPids()!=null&&area.getPids().contains("[" + area2.getId() + "]")) { + childIdsList.add(area.getId()); + } + } + if (ToolUtil.isNotEmpty(childIdsList)) { + Map objectMap = statisticsService.alarmBySecondArea(startTime, endTime, StringUtils.join(childIdsList.toArray(), ",")); + if (ToolUtil.isNotEmpty(objectMap) && ToolUtil.isNotEmpty(objectMap.get("alarm"))) + map.put("alarm", objectMap.get("alarm").toString()); + if (ToolUtil.isNotEmpty(objectMap) && ToolUtil.isNotEmpty(objectMap.get("warning"))) + map.put("warning", objectMap.get("warning").toString()); + } + mapList.add(map); } + + return ResponseData.success(mapList); } + /** - * 根据权属单位统计设备数量 + * 设备7日报警趋势 + * + * @return */ - @RequestMapping(value = "/deviceStaticsByDept") + @RequestMapping(value = "/alarmCountByDay") @ResponseBody - public Object deviceStaticsByDept(@RequestParam(value = "deviceType", required = false) String deviceType) { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.deviceStaticsByDept(dataScope, deviceType); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } + public Object alarmCountByDay(String startTime, String endTime) { + List deviceTypeList =iDeviceTypeService.getTypeList(); - /** - * 根据在线状态统计设备数量 - */ - @RequestMapping(value = "/deviceStaticsByStatus") - @ResponseBody - public Object deviceStaticsByStatus() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - Map res = statisticsService.deviceStaticsByStatus(dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } + List dateStrs = DateUtil.getBetweenTime(startTime, endTime); - /** - * 根据权属单位统计工单数 - */ - @RequestMapping(value = "/jobsByDept") - @ResponseBody - public Object jobsByDept(String beginTime, String endTime, String deviceType) { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.jobsByDept(dataScope, beginTime, endTime, deviceType); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } + List> objectMapList = statisticsService.alarmCountByDay(startTime, endTime); - /** - * 当前报警统计 - */ - @RequestMapping(value = "/alarmsNow") - @ResponseBody - public Object alarmsNow() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List alarmNowViews = alarmNowViewService.getNowAlarmRecords(dataScope); - Map res = new HashMap<>(); - res.put("total", alarmNowViews.size()); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); + //封装数据 + List> returnMapList = new ArrayList<>(); + for (String dateStr : dateStrs) { + Map retMap = new HashMap<>(); + retMap.put("date", dateStr); + retMap.put("data", new ArrayList<>()); + List> returnMaps = new ArrayList<>(); + for (DeviceType deviceType : deviceTypeList) { + Map countMap = new HashMap<>(); + countMap.put("name", deviceType.getTypeName()); + countMap.put("count", "0"); + for (Map objectMap : objectMapList) { + if (ToolUtil.isNotEmpty(objectMap.get("name"))) { + if(deviceType.getTypeName().equals(objectMap.get("name").toString())&& + dateStr.equals(objectMap.get("alarmDate").toString())){ + countMap.put("count", objectMap.get("count").toString()); + } + } + } + returnMaps.add(countMap); + } + retMap.put("data", returnMaps); + returnMapList.add(retMap); } + return ResponseData.success(returnMapList); } - /** - * 统计每日报警总数 - */ - @RequestMapping("/alarmsByDay") - @ResponseBody - public Object alarmsByDay(String beginTime, String endTime) { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.alarmsByDay(beginTime, endTime, dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } - - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/StatisticMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/StatisticMapper.java index 52746d6..7e30d95 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/StatisticMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/StatisticMapper.java @@ -15,4 +15,7 @@ List> jobsByDept(@Param("dataScope")DataScope dataScope,@Param("beginTime")String beginTime,@Param("endTime")String endTime,@Param("deviceType")String deviceType); Map jobsByDeptId(@Param("deptIds")String deptIds,@Param("beginTime")String beginTime,@Param("endTime")String endTime); List> countByDayFirst(@Param("startTime")String startTime,@Param("endTime")String endTime,@Param("areaIds")String areaIds); + List> alarmCountByDay(@Param("startTime")String startTime,@Param("endTime")String endTime); + Map alarmBySecondArea(@Param("startTime")String startTime,@Param("endTime")String endTime,@Param("areaIds")String areaIds); + Long countByFirstArea(@Param("startTime")String startTime,@Param("endTime")String endTime,@Param("areaIds")String areaIds); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/StatisticMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/StatisticMapper.xml index 8ad668b..127b676 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/StatisticMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/StatisticMapper.xml @@ -116,8 +116,8 @@ + + + + \ No newline at end of file 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 43e042e..0e9f752 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 @@ -3,19 +3,18 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; -import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.ToolUtil; -import com.casic.missiles.modular.system.dto.AlarmNowView; import com.casic.missiles.modular.system.model.Area; +import com.casic.missiles.modular.system.model.DeviceType; import com.casic.missiles.modular.system.service.IAlarmNowViewService; import com.casic.missiles.modular.system.service.IAreaService; +import com.casic.missiles.modular.system.service.IDeviceTypeService; import com.casic.missiles.modular.system.service.IStatisticsService; import com.casic.missiles.modular.system.util.DateUtil; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import java.util.ArrayList; @@ -28,15 +27,58 @@ public class WaterStaticsController extends BaseController { @Autowired private IStatisticsService statisticsService; - @Autowired - private IAlarmNowViewService alarmNowViewService; - @Autowired - private ICommonPermissionService permissionService; + @Autowired private IAreaService iAreaService; + @Autowired + private IDeviceTypeService iDeviceTypeService; + + + /** - * 根据权属单位统计闸井数量 + * 查询一级分区各区用水量 + * + * @return + */ + @RequestMapping(value = "/countByFirstArea") + @ResponseBody + public Object countByFirstArea(String startTime, String endTime) { + List areaList = iAreaService.selectList(null); + List areaLevel1List = new ArrayList<>(); + + areaList.forEach(area -> { + //过滤一级区域 + if ("2".equals(area.getLevel().toString())) { + areaLevel1List.add(area); + } + }); + List> mapList = new ArrayList<>(); + //寻找一级区域下的所有子区域的总用水量 按照天 + for (Area area1 : areaLevel1List) { + List childIdsList = new ArrayList<>(); + Map map = new HashMap<>(); + map.put("areaId", area1.getId()); + map.put("areaName", area1.getAreaName()); + map.put("count", 0); + for (Area area : areaList) { + if (area.getPids()!=null&&area.getPids().contains("[" + area1.getId() + "]")) { + childIdsList.add(area.getId()); + } + } + if (ToolUtil.isNotEmpty(childIdsList)) { + Long count = statisticsService.countByFirstArea(startTime, endTime, StringUtils.join(childIdsList.toArray(), ",")); + map.put("count", count); + } + mapList.add(map); + } + + return ResponseData.success(mapList); + } + + + /** + * 查询一级分区7日用水量 * * @return */ @@ -45,7 +87,6 @@ public Object countByDayFirst(String startTime, String endTime) { List areaList = iAreaService.selectList(null); List areaLevel1List = new ArrayList<>(); - List childIdsList = new ArrayList<>(); List dateStrs = DateUtil.getBetweenTime(startTime, endTime); areaList.forEach(area -> { //过滤一级区域 @@ -56,9 +97,10 @@ List> mapList = new ArrayList<>(); //寻找一级区域下的所有子区域的总用水量 按照天 for (Area area1 : areaLevel1List) { + List childIdsList = new ArrayList<>(); Map map = new HashMap<>(); for (Area area : areaList) { - if (area.getPids().contains("[" + area1.getPid() + "]")) { + if (area.getPids()!=null&&area.getPids().contains("[" + area1.getId() + "]")) { childIdsList.add(area.getId()); } } @@ -69,7 +111,7 @@ mapList.add(map); } //封装数据 - List>> returnMapList = new ArrayList<>(); + List> returnMapList = new ArrayList<>(); for (String dateStr : dateStrs) { Map retMap = new HashMap<>(); retMap.put("date", dateStr); @@ -90,127 +132,137 @@ } } returnMaps.add(countMap); - returnMapList.add(returnMaps); + retMap.put("data", returnMaps); + returnMapList.add(retMap); } - } return ResponseData.success(returnMapList); - } /** - * 根据井类型统计闸井数量 + * 查询二级分区用水量 + * + * @return */ - @RequestMapping(value = "/wellStaticsByType") + @RequestMapping(value = "/countBySecondArea") @ResponseBody - public Object wellStaticsByType() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.wellStaticsByType(dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); + public Object countBySecondArea(String areaId, String startTime, String endTime) { + List areaList = iAreaService.selectList(null); + List areaLevel2List = new ArrayList<>(); + + areaList.forEach(area -> { + //根据一级区域过滤二级区域 + if ("3".equals(area.getLevel().toString()) &&area.getPids()!=null&& area.getPids().contains("[" + areaId + "]")) { + areaLevel2List.add(area); + } + }); + List> mapList = new ArrayList<>(); + //寻找一级区域下的所有子区域的总用水量 按照天 + for (Area area2 : areaLevel2List) { + List childIdsList = new ArrayList<>(); + Map map = new HashMap<>(); + map.put("areaId", area2.getId()); + map.put("areaName", area2.getAreaName()); + map.put("count", 0); + for (Area area : areaList) { + if (area.getPids()!=null&&area.getPids().contains("[" + area2.getId() + "]")) { + childIdsList.add(area.getId()); + } + } + if (ToolUtil.isNotEmpty(childIdsList)) { + Long count = statisticsService.countByFirstArea(startTime, endTime, StringUtils.join(childIdsList.toArray(), ",")); + map.put("count", count); + } + mapList.add(map); } + + return ResponseData.success(mapList); } + /** - * 根据设备类型统计设备数量 + * 查询二级分区水表告警 + * + * @return */ - @RequestMapping(value = "/deviceStaticsByType") + @RequestMapping(value = "/alarmBySecondArea") @ResponseBody - public Object deviceStaticsByType() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.deviceStaticsByType(dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); + public Object alarmBySecondArea(String areaId, String startTime, String endTime) { + List areaList = iAreaService.selectList(null); + List areaLevel2List = new ArrayList<>(); + areaList.forEach(area -> { + //根据一级区域过滤二级区域 + if ("3".equals(area.getLevel().toString()) && area.getPids().contains("[" + areaId + "]")) { + areaLevel2List.add(area); + } + }); + List> mapList = new ArrayList<>(); + //寻找一级区域下的所有子区域的总用水量 按照天 + for (Area area2 : areaLevel2List) { + List childIdsList = new ArrayList<>(); + Map map = new HashMap<>(); + map.put("areaId", area2.getId()); + map.put("areaName", area2.getAreaName()); + map.put("alarm", 0); + map.put("warning", 0); + for (Area area : areaList) { + if (area.getPids()!=null&&area.getPids().contains("[" + area2.getId() + "]")) { + childIdsList.add(area.getId()); + } + } + if (ToolUtil.isNotEmpty(childIdsList)) { + Map objectMap = statisticsService.alarmBySecondArea(startTime, endTime, StringUtils.join(childIdsList.toArray(), ",")); + if (ToolUtil.isNotEmpty(objectMap) && ToolUtil.isNotEmpty(objectMap.get("alarm"))) + map.put("alarm", objectMap.get("alarm").toString()); + if (ToolUtil.isNotEmpty(objectMap) && ToolUtil.isNotEmpty(objectMap.get("warning"))) + map.put("warning", objectMap.get("warning").toString()); + } + mapList.add(map); } + + return ResponseData.success(mapList); } + /** - * 根据权属单位统计设备数量 + * 设备7日报警趋势 + * + * @return */ - @RequestMapping(value = "/deviceStaticsByDept") + @RequestMapping(value = "/alarmCountByDay") @ResponseBody - public Object deviceStaticsByDept(@RequestParam(value = "deviceType", required = false) String deviceType) { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.deviceStaticsByDept(dataScope, deviceType); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } + public Object alarmCountByDay(String startTime, String endTime) { + List deviceTypeList =iDeviceTypeService.getTypeList(); - /** - * 根据在线状态统计设备数量 - */ - @RequestMapping(value = "/deviceStaticsByStatus") - @ResponseBody - public Object deviceStaticsByStatus() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - Map res = statisticsService.deviceStaticsByStatus(dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } + List dateStrs = DateUtil.getBetweenTime(startTime, endTime); - /** - * 根据权属单位统计工单数 - */ - @RequestMapping(value = "/jobsByDept") - @ResponseBody - public Object jobsByDept(String beginTime, String endTime, String deviceType) { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.jobsByDept(dataScope, beginTime, endTime, deviceType); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } + List> objectMapList = statisticsService.alarmCountByDay(startTime, endTime); - /** - * 当前报警统计 - */ - @RequestMapping(value = "/alarmsNow") - @ResponseBody - public Object alarmsNow() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List alarmNowViews = alarmNowViewService.getNowAlarmRecords(dataScope); - Map res = new HashMap<>(); - res.put("total", alarmNowViews.size()); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); + //封装数据 + List> returnMapList = new ArrayList<>(); + for (String dateStr : dateStrs) { + Map retMap = new HashMap<>(); + retMap.put("date", dateStr); + retMap.put("data", new ArrayList<>()); + List> returnMaps = new ArrayList<>(); + for (DeviceType deviceType : deviceTypeList) { + Map countMap = new HashMap<>(); + countMap.put("name", deviceType.getTypeName()); + countMap.put("count", "0"); + for (Map objectMap : objectMapList) { + if (ToolUtil.isNotEmpty(objectMap.get("name"))) { + if(deviceType.getTypeName().equals(objectMap.get("name").toString())&& + dateStr.equals(objectMap.get("alarmDate").toString())){ + countMap.put("count", objectMap.get("count").toString()); + } + } + } + returnMaps.add(countMap); + } + retMap.put("data", returnMaps); + returnMapList.add(retMap); } + return ResponseData.success(returnMapList); } - /** - * 统计每日报警总数 - */ - @RequestMapping("/alarmsByDay") - @ResponseBody - public Object alarmsByDay(String beginTime, String endTime) { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.alarmsByDay(beginTime, endTime, dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } - - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/StatisticMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/StatisticMapper.java index 52746d6..7e30d95 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/StatisticMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/StatisticMapper.java @@ -15,4 +15,7 @@ List> jobsByDept(@Param("dataScope")DataScope dataScope,@Param("beginTime")String beginTime,@Param("endTime")String endTime,@Param("deviceType")String deviceType); Map jobsByDeptId(@Param("deptIds")String deptIds,@Param("beginTime")String beginTime,@Param("endTime")String endTime); List> countByDayFirst(@Param("startTime")String startTime,@Param("endTime")String endTime,@Param("areaIds")String areaIds); + List> alarmCountByDay(@Param("startTime")String startTime,@Param("endTime")String endTime); + Map alarmBySecondArea(@Param("startTime")String startTime,@Param("endTime")String endTime,@Param("areaIds")String areaIds); + Long countByFirstArea(@Param("startTime")String startTime,@Param("endTime")String endTime,@Param("areaIds")String areaIds); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/StatisticMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/StatisticMapper.xml index 8ad668b..127b676 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/StatisticMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/StatisticMapper.xml @@ -116,8 +116,8 @@ + + + + \ No newline at end of file diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/IStatisticsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/IStatisticsService.java index 3575cb3..66a4d88 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/IStatisticsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/IStatisticsService.java @@ -15,4 +15,7 @@ List> jobsByDept(DataScope dataScope,String beginTime, String endTime, String deviceType) throws ParseException; List> alarmsByDay(String beginTime,String endTime,DataScope dataScope); List> countByDayFirst(String startTime,String endTime,String areaIds); + List> alarmCountByDay(String startTime,String endTime); + Map alarmBySecondArea(String startTime,String endTime,String areaIds); + Long countByFirstArea(String startTime,String endTime,String areaIds); } 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 43e042e..0e9f752 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 @@ -3,19 +3,18 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; -import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.ToolUtil; -import com.casic.missiles.modular.system.dto.AlarmNowView; import com.casic.missiles.modular.system.model.Area; +import com.casic.missiles.modular.system.model.DeviceType; import com.casic.missiles.modular.system.service.IAlarmNowViewService; import com.casic.missiles.modular.system.service.IAreaService; +import com.casic.missiles.modular.system.service.IDeviceTypeService; import com.casic.missiles.modular.system.service.IStatisticsService; import com.casic.missiles.modular.system.util.DateUtil; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import java.util.ArrayList; @@ -28,15 +27,58 @@ public class WaterStaticsController extends BaseController { @Autowired private IStatisticsService statisticsService; - @Autowired - private IAlarmNowViewService alarmNowViewService; - @Autowired - private ICommonPermissionService permissionService; + @Autowired private IAreaService iAreaService; + @Autowired + private IDeviceTypeService iDeviceTypeService; + + + /** - * 根据权属单位统计闸井数量 + * 查询一级分区各区用水量 + * + * @return + */ + @RequestMapping(value = "/countByFirstArea") + @ResponseBody + public Object countByFirstArea(String startTime, String endTime) { + List areaList = iAreaService.selectList(null); + List areaLevel1List = new ArrayList<>(); + + areaList.forEach(area -> { + //过滤一级区域 + if ("2".equals(area.getLevel().toString())) { + areaLevel1List.add(area); + } + }); + List> mapList = new ArrayList<>(); + //寻找一级区域下的所有子区域的总用水量 按照天 + for (Area area1 : areaLevel1List) { + List childIdsList = new ArrayList<>(); + Map map = new HashMap<>(); + map.put("areaId", area1.getId()); + map.put("areaName", area1.getAreaName()); + map.put("count", 0); + for (Area area : areaList) { + if (area.getPids()!=null&&area.getPids().contains("[" + area1.getId() + "]")) { + childIdsList.add(area.getId()); + } + } + if (ToolUtil.isNotEmpty(childIdsList)) { + Long count = statisticsService.countByFirstArea(startTime, endTime, StringUtils.join(childIdsList.toArray(), ",")); + map.put("count", count); + } + mapList.add(map); + } + + return ResponseData.success(mapList); + } + + + /** + * 查询一级分区7日用水量 * * @return */ @@ -45,7 +87,6 @@ public Object countByDayFirst(String startTime, String endTime) { List areaList = iAreaService.selectList(null); List areaLevel1List = new ArrayList<>(); - List childIdsList = new ArrayList<>(); List dateStrs = DateUtil.getBetweenTime(startTime, endTime); areaList.forEach(area -> { //过滤一级区域 @@ -56,9 +97,10 @@ List> mapList = new ArrayList<>(); //寻找一级区域下的所有子区域的总用水量 按照天 for (Area area1 : areaLevel1List) { + List childIdsList = new ArrayList<>(); Map map = new HashMap<>(); for (Area area : areaList) { - if (area.getPids().contains("[" + area1.getPid() + "]")) { + if (area.getPids()!=null&&area.getPids().contains("[" + area1.getId() + "]")) { childIdsList.add(area.getId()); } } @@ -69,7 +111,7 @@ mapList.add(map); } //封装数据 - List>> returnMapList = new ArrayList<>(); + List> returnMapList = new ArrayList<>(); for (String dateStr : dateStrs) { Map retMap = new HashMap<>(); retMap.put("date", dateStr); @@ -90,127 +132,137 @@ } } returnMaps.add(countMap); - returnMapList.add(returnMaps); + retMap.put("data", returnMaps); + returnMapList.add(retMap); } - } return ResponseData.success(returnMapList); - } /** - * 根据井类型统计闸井数量 + * 查询二级分区用水量 + * + * @return */ - @RequestMapping(value = "/wellStaticsByType") + @RequestMapping(value = "/countBySecondArea") @ResponseBody - public Object wellStaticsByType() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.wellStaticsByType(dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); + public Object countBySecondArea(String areaId, String startTime, String endTime) { + List areaList = iAreaService.selectList(null); + List areaLevel2List = new ArrayList<>(); + + areaList.forEach(area -> { + //根据一级区域过滤二级区域 + if ("3".equals(area.getLevel().toString()) &&area.getPids()!=null&& area.getPids().contains("[" + areaId + "]")) { + areaLevel2List.add(area); + } + }); + List> mapList = new ArrayList<>(); + //寻找一级区域下的所有子区域的总用水量 按照天 + for (Area area2 : areaLevel2List) { + List childIdsList = new ArrayList<>(); + Map map = new HashMap<>(); + map.put("areaId", area2.getId()); + map.put("areaName", area2.getAreaName()); + map.put("count", 0); + for (Area area : areaList) { + if (area.getPids()!=null&&area.getPids().contains("[" + area2.getId() + "]")) { + childIdsList.add(area.getId()); + } + } + if (ToolUtil.isNotEmpty(childIdsList)) { + Long count = statisticsService.countByFirstArea(startTime, endTime, StringUtils.join(childIdsList.toArray(), ",")); + map.put("count", count); + } + mapList.add(map); } + + return ResponseData.success(mapList); } + /** - * 根据设备类型统计设备数量 + * 查询二级分区水表告警 + * + * @return */ - @RequestMapping(value = "/deviceStaticsByType") + @RequestMapping(value = "/alarmBySecondArea") @ResponseBody - public Object deviceStaticsByType() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.deviceStaticsByType(dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); + public Object alarmBySecondArea(String areaId, String startTime, String endTime) { + List areaList = iAreaService.selectList(null); + List areaLevel2List = new ArrayList<>(); + areaList.forEach(area -> { + //根据一级区域过滤二级区域 + if ("3".equals(area.getLevel().toString()) && area.getPids().contains("[" + areaId + "]")) { + areaLevel2List.add(area); + } + }); + List> mapList = new ArrayList<>(); + //寻找一级区域下的所有子区域的总用水量 按照天 + for (Area area2 : areaLevel2List) { + List childIdsList = new ArrayList<>(); + Map map = new HashMap<>(); + map.put("areaId", area2.getId()); + map.put("areaName", area2.getAreaName()); + map.put("alarm", 0); + map.put("warning", 0); + for (Area area : areaList) { + if (area.getPids()!=null&&area.getPids().contains("[" + area2.getId() + "]")) { + childIdsList.add(area.getId()); + } + } + if (ToolUtil.isNotEmpty(childIdsList)) { + Map objectMap = statisticsService.alarmBySecondArea(startTime, endTime, StringUtils.join(childIdsList.toArray(), ",")); + if (ToolUtil.isNotEmpty(objectMap) && ToolUtil.isNotEmpty(objectMap.get("alarm"))) + map.put("alarm", objectMap.get("alarm").toString()); + if (ToolUtil.isNotEmpty(objectMap) && ToolUtil.isNotEmpty(objectMap.get("warning"))) + map.put("warning", objectMap.get("warning").toString()); + } + mapList.add(map); } + + return ResponseData.success(mapList); } + /** - * 根据权属单位统计设备数量 + * 设备7日报警趋势 + * + * @return */ - @RequestMapping(value = "/deviceStaticsByDept") + @RequestMapping(value = "/alarmCountByDay") @ResponseBody - public Object deviceStaticsByDept(@RequestParam(value = "deviceType", required = false) String deviceType) { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.deviceStaticsByDept(dataScope, deviceType); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } + public Object alarmCountByDay(String startTime, String endTime) { + List deviceTypeList =iDeviceTypeService.getTypeList(); - /** - * 根据在线状态统计设备数量 - */ - @RequestMapping(value = "/deviceStaticsByStatus") - @ResponseBody - public Object deviceStaticsByStatus() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - Map res = statisticsService.deviceStaticsByStatus(dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } + List dateStrs = DateUtil.getBetweenTime(startTime, endTime); - /** - * 根据权属单位统计工单数 - */ - @RequestMapping(value = "/jobsByDept") - @ResponseBody - public Object jobsByDept(String beginTime, String endTime, String deviceType) { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.jobsByDept(dataScope, beginTime, endTime, deviceType); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } + List> objectMapList = statisticsService.alarmCountByDay(startTime, endTime); - /** - * 当前报警统计 - */ - @RequestMapping(value = "/alarmsNow") - @ResponseBody - public Object alarmsNow() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List alarmNowViews = alarmNowViewService.getNowAlarmRecords(dataScope); - Map res = new HashMap<>(); - res.put("total", alarmNowViews.size()); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); + //封装数据 + List> returnMapList = new ArrayList<>(); + for (String dateStr : dateStrs) { + Map retMap = new HashMap<>(); + retMap.put("date", dateStr); + retMap.put("data", new ArrayList<>()); + List> returnMaps = new ArrayList<>(); + for (DeviceType deviceType : deviceTypeList) { + Map countMap = new HashMap<>(); + countMap.put("name", deviceType.getTypeName()); + countMap.put("count", "0"); + for (Map objectMap : objectMapList) { + if (ToolUtil.isNotEmpty(objectMap.get("name"))) { + if(deviceType.getTypeName().equals(objectMap.get("name").toString())&& + dateStr.equals(objectMap.get("alarmDate").toString())){ + countMap.put("count", objectMap.get("count").toString()); + } + } + } + returnMaps.add(countMap); + } + retMap.put("data", returnMaps); + returnMapList.add(retMap); } + return ResponseData.success(returnMapList); } - /** - * 统计每日报警总数 - */ - @RequestMapping("/alarmsByDay") - @ResponseBody - public Object alarmsByDay(String beginTime, String endTime) { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.alarmsByDay(beginTime, endTime, dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } - - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/StatisticMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/StatisticMapper.java index 52746d6..7e30d95 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/StatisticMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/StatisticMapper.java @@ -15,4 +15,7 @@ List> jobsByDept(@Param("dataScope")DataScope dataScope,@Param("beginTime")String beginTime,@Param("endTime")String endTime,@Param("deviceType")String deviceType); Map jobsByDeptId(@Param("deptIds")String deptIds,@Param("beginTime")String beginTime,@Param("endTime")String endTime); List> countByDayFirst(@Param("startTime")String startTime,@Param("endTime")String endTime,@Param("areaIds")String areaIds); + List> alarmCountByDay(@Param("startTime")String startTime,@Param("endTime")String endTime); + Map alarmBySecondArea(@Param("startTime")String startTime,@Param("endTime")String endTime,@Param("areaIds")String areaIds); + Long countByFirstArea(@Param("startTime")String startTime,@Param("endTime")String endTime,@Param("areaIds")String areaIds); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/StatisticMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/StatisticMapper.xml index 8ad668b..127b676 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/StatisticMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/StatisticMapper.xml @@ -116,8 +116,8 @@ + + + + \ No newline at end of file diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/IStatisticsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/IStatisticsService.java index 3575cb3..66a4d88 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/IStatisticsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/IStatisticsService.java @@ -15,4 +15,7 @@ List> jobsByDept(DataScope dataScope,String beginTime, String endTime, String deviceType) throws ParseException; List> alarmsByDay(String beginTime,String endTime,DataScope dataScope); List> countByDayFirst(String startTime,String endTime,String areaIds); + List> alarmCountByDay(String startTime,String endTime); + Map alarmBySecondArea(String startTime,String endTime,String areaIds); + Long countByFirstArea(String startTime,String endTime,String areaIds); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java index 7290c37..bc54695 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java @@ -136,4 +136,19 @@ public List> countByDayFirst(String startTime, String endTime,String areaIds) { return statisticMapper.countByDayFirst(startTime,endTime,areaIds); } + + @Override + public Long countByFirstArea(String startTime, String endTime,String areaIds) { + return statisticMapper.countByFirstArea(startTime,endTime,areaIds); + } + + @Override + public Map alarmBySecondArea(String startTime, String endTime, String areaIds) { + return statisticMapper.alarmBySecondArea(startTime,endTime,areaIds); + } + + @Override + public List> alarmCountByDay(String startTime, String endTime) { + return statisticMapper.alarmCountByDay( startTime, endTime); + } } 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 43e042e..0e9f752 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 @@ -3,19 +3,18 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; -import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.ToolUtil; -import com.casic.missiles.modular.system.dto.AlarmNowView; import com.casic.missiles.modular.system.model.Area; +import com.casic.missiles.modular.system.model.DeviceType; import com.casic.missiles.modular.system.service.IAlarmNowViewService; import com.casic.missiles.modular.system.service.IAreaService; +import com.casic.missiles.modular.system.service.IDeviceTypeService; import com.casic.missiles.modular.system.service.IStatisticsService; import com.casic.missiles.modular.system.util.DateUtil; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import java.util.ArrayList; @@ -28,15 +27,58 @@ public class WaterStaticsController extends BaseController { @Autowired private IStatisticsService statisticsService; - @Autowired - private IAlarmNowViewService alarmNowViewService; - @Autowired - private ICommonPermissionService permissionService; + @Autowired private IAreaService iAreaService; + @Autowired + private IDeviceTypeService iDeviceTypeService; + + + /** - * 根据权属单位统计闸井数量 + * 查询一级分区各区用水量 + * + * @return + */ + @RequestMapping(value = "/countByFirstArea") + @ResponseBody + public Object countByFirstArea(String startTime, String endTime) { + List areaList = iAreaService.selectList(null); + List areaLevel1List = new ArrayList<>(); + + areaList.forEach(area -> { + //过滤一级区域 + if ("2".equals(area.getLevel().toString())) { + areaLevel1List.add(area); + } + }); + List> mapList = new ArrayList<>(); + //寻找一级区域下的所有子区域的总用水量 按照天 + for (Area area1 : areaLevel1List) { + List childIdsList = new ArrayList<>(); + Map map = new HashMap<>(); + map.put("areaId", area1.getId()); + map.put("areaName", area1.getAreaName()); + map.put("count", 0); + for (Area area : areaList) { + if (area.getPids()!=null&&area.getPids().contains("[" + area1.getId() + "]")) { + childIdsList.add(area.getId()); + } + } + if (ToolUtil.isNotEmpty(childIdsList)) { + Long count = statisticsService.countByFirstArea(startTime, endTime, StringUtils.join(childIdsList.toArray(), ",")); + map.put("count", count); + } + mapList.add(map); + } + + return ResponseData.success(mapList); + } + + + /** + * 查询一级分区7日用水量 * * @return */ @@ -45,7 +87,6 @@ public Object countByDayFirst(String startTime, String endTime) { List areaList = iAreaService.selectList(null); List areaLevel1List = new ArrayList<>(); - List childIdsList = new ArrayList<>(); List dateStrs = DateUtil.getBetweenTime(startTime, endTime); areaList.forEach(area -> { //过滤一级区域 @@ -56,9 +97,10 @@ List> mapList = new ArrayList<>(); //寻找一级区域下的所有子区域的总用水量 按照天 for (Area area1 : areaLevel1List) { + List childIdsList = new ArrayList<>(); Map map = new HashMap<>(); for (Area area : areaList) { - if (area.getPids().contains("[" + area1.getPid() + "]")) { + if (area.getPids()!=null&&area.getPids().contains("[" + area1.getId() + "]")) { childIdsList.add(area.getId()); } } @@ -69,7 +111,7 @@ mapList.add(map); } //封装数据 - List>> returnMapList = new ArrayList<>(); + List> returnMapList = new ArrayList<>(); for (String dateStr : dateStrs) { Map retMap = new HashMap<>(); retMap.put("date", dateStr); @@ -90,127 +132,137 @@ } } returnMaps.add(countMap); - returnMapList.add(returnMaps); + retMap.put("data", returnMaps); + returnMapList.add(retMap); } - } return ResponseData.success(returnMapList); - } /** - * 根据井类型统计闸井数量 + * 查询二级分区用水量 + * + * @return */ - @RequestMapping(value = "/wellStaticsByType") + @RequestMapping(value = "/countBySecondArea") @ResponseBody - public Object wellStaticsByType() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.wellStaticsByType(dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); + public Object countBySecondArea(String areaId, String startTime, String endTime) { + List areaList = iAreaService.selectList(null); + List areaLevel2List = new ArrayList<>(); + + areaList.forEach(area -> { + //根据一级区域过滤二级区域 + if ("3".equals(area.getLevel().toString()) &&area.getPids()!=null&& area.getPids().contains("[" + areaId + "]")) { + areaLevel2List.add(area); + } + }); + List> mapList = new ArrayList<>(); + //寻找一级区域下的所有子区域的总用水量 按照天 + for (Area area2 : areaLevel2List) { + List childIdsList = new ArrayList<>(); + Map map = new HashMap<>(); + map.put("areaId", area2.getId()); + map.put("areaName", area2.getAreaName()); + map.put("count", 0); + for (Area area : areaList) { + if (area.getPids()!=null&&area.getPids().contains("[" + area2.getId() + "]")) { + childIdsList.add(area.getId()); + } + } + if (ToolUtil.isNotEmpty(childIdsList)) { + Long count = statisticsService.countByFirstArea(startTime, endTime, StringUtils.join(childIdsList.toArray(), ",")); + map.put("count", count); + } + mapList.add(map); } + + return ResponseData.success(mapList); } + /** - * 根据设备类型统计设备数量 + * 查询二级分区水表告警 + * + * @return */ - @RequestMapping(value = "/deviceStaticsByType") + @RequestMapping(value = "/alarmBySecondArea") @ResponseBody - public Object deviceStaticsByType() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.deviceStaticsByType(dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); + public Object alarmBySecondArea(String areaId, String startTime, String endTime) { + List areaList = iAreaService.selectList(null); + List areaLevel2List = new ArrayList<>(); + areaList.forEach(area -> { + //根据一级区域过滤二级区域 + if ("3".equals(area.getLevel().toString()) && area.getPids().contains("[" + areaId + "]")) { + areaLevel2List.add(area); + } + }); + List> mapList = new ArrayList<>(); + //寻找一级区域下的所有子区域的总用水量 按照天 + for (Area area2 : areaLevel2List) { + List childIdsList = new ArrayList<>(); + Map map = new HashMap<>(); + map.put("areaId", area2.getId()); + map.put("areaName", area2.getAreaName()); + map.put("alarm", 0); + map.put("warning", 0); + for (Area area : areaList) { + if (area.getPids()!=null&&area.getPids().contains("[" + area2.getId() + "]")) { + childIdsList.add(area.getId()); + } + } + if (ToolUtil.isNotEmpty(childIdsList)) { + Map objectMap = statisticsService.alarmBySecondArea(startTime, endTime, StringUtils.join(childIdsList.toArray(), ",")); + if (ToolUtil.isNotEmpty(objectMap) && ToolUtil.isNotEmpty(objectMap.get("alarm"))) + map.put("alarm", objectMap.get("alarm").toString()); + if (ToolUtil.isNotEmpty(objectMap) && ToolUtil.isNotEmpty(objectMap.get("warning"))) + map.put("warning", objectMap.get("warning").toString()); + } + mapList.add(map); } + + return ResponseData.success(mapList); } + /** - * 根据权属单位统计设备数量 + * 设备7日报警趋势 + * + * @return */ - @RequestMapping(value = "/deviceStaticsByDept") + @RequestMapping(value = "/alarmCountByDay") @ResponseBody - public Object deviceStaticsByDept(@RequestParam(value = "deviceType", required = false) String deviceType) { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.deviceStaticsByDept(dataScope, deviceType); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } + public Object alarmCountByDay(String startTime, String endTime) { + List deviceTypeList =iDeviceTypeService.getTypeList(); - /** - * 根据在线状态统计设备数量 - */ - @RequestMapping(value = "/deviceStaticsByStatus") - @ResponseBody - public Object deviceStaticsByStatus() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - Map res = statisticsService.deviceStaticsByStatus(dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } + List dateStrs = DateUtil.getBetweenTime(startTime, endTime); - /** - * 根据权属单位统计工单数 - */ - @RequestMapping(value = "/jobsByDept") - @ResponseBody - public Object jobsByDept(String beginTime, String endTime, String deviceType) { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.jobsByDept(dataScope, beginTime, endTime, deviceType); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } + List> objectMapList = statisticsService.alarmCountByDay(startTime, endTime); - /** - * 当前报警统计 - */ - @RequestMapping(value = "/alarmsNow") - @ResponseBody - public Object alarmsNow() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List alarmNowViews = alarmNowViewService.getNowAlarmRecords(dataScope); - Map res = new HashMap<>(); - res.put("total", alarmNowViews.size()); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); + //封装数据 + List> returnMapList = new ArrayList<>(); + for (String dateStr : dateStrs) { + Map retMap = new HashMap<>(); + retMap.put("date", dateStr); + retMap.put("data", new ArrayList<>()); + List> returnMaps = new ArrayList<>(); + for (DeviceType deviceType : deviceTypeList) { + Map countMap = new HashMap<>(); + countMap.put("name", deviceType.getTypeName()); + countMap.put("count", "0"); + for (Map objectMap : objectMapList) { + if (ToolUtil.isNotEmpty(objectMap.get("name"))) { + if(deviceType.getTypeName().equals(objectMap.get("name").toString())&& + dateStr.equals(objectMap.get("alarmDate").toString())){ + countMap.put("count", objectMap.get("count").toString()); + } + } + } + returnMaps.add(countMap); + } + retMap.put("data", returnMaps); + returnMapList.add(retMap); } + return ResponseData.success(returnMapList); } - /** - * 统计每日报警总数 - */ - @RequestMapping("/alarmsByDay") - @ResponseBody - public Object alarmsByDay(String beginTime, String endTime) { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.alarmsByDay(beginTime, endTime, dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } - - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/StatisticMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/StatisticMapper.java index 52746d6..7e30d95 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/StatisticMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/StatisticMapper.java @@ -15,4 +15,7 @@ List> jobsByDept(@Param("dataScope")DataScope dataScope,@Param("beginTime")String beginTime,@Param("endTime")String endTime,@Param("deviceType")String deviceType); Map jobsByDeptId(@Param("deptIds")String deptIds,@Param("beginTime")String beginTime,@Param("endTime")String endTime); List> countByDayFirst(@Param("startTime")String startTime,@Param("endTime")String endTime,@Param("areaIds")String areaIds); + List> alarmCountByDay(@Param("startTime")String startTime,@Param("endTime")String endTime); + Map alarmBySecondArea(@Param("startTime")String startTime,@Param("endTime")String endTime,@Param("areaIds")String areaIds); + Long countByFirstArea(@Param("startTime")String startTime,@Param("endTime")String endTime,@Param("areaIds")String areaIds); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/StatisticMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/StatisticMapper.xml index 8ad668b..127b676 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/StatisticMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/StatisticMapper.xml @@ -116,8 +116,8 @@ + + + + \ No newline at end of file diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/IStatisticsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/IStatisticsService.java index 3575cb3..66a4d88 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/IStatisticsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/IStatisticsService.java @@ -15,4 +15,7 @@ List> jobsByDept(DataScope dataScope,String beginTime, String endTime, String deviceType) throws ParseException; List> alarmsByDay(String beginTime,String endTime,DataScope dataScope); List> countByDayFirst(String startTime,String endTime,String areaIds); + List> alarmCountByDay(String startTime,String endTime); + Map alarmBySecondArea(String startTime,String endTime,String areaIds); + Long countByFirstArea(String startTime,String endTime,String areaIds); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java index 7290c37..bc54695 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java @@ -136,4 +136,19 @@ public List> countByDayFirst(String startTime, String endTime,String areaIds) { return statisticMapper.countByDayFirst(startTime,endTime,areaIds); } + + @Override + public Long countByFirstArea(String startTime, String endTime,String areaIds) { + return statisticMapper.countByFirstArea(startTime,endTime,areaIds); + } + + @Override + public Map alarmBySecondArea(String startTime, String endTime, String areaIds) { + return statisticMapper.alarmBySecondArea(startTime,endTime,areaIds); + } + + @Override + public List> alarmCountByDay(String startTime, String endTime) { + return statisticMapper.alarmCountByDay( startTime, endTime); + } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java index a376ba8..ae94fc5 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -23,6 +23,7 @@ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("deviceType") String deviceType, @Param("deptid") String deptid, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("keywords") String keywords, @Param("isOnline") String isOnline, @Param("areaId") String areaId); DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode); + List getAreaIds(@Param("areaId") Long areaId); String getArea(@Param("id") String id); 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 43e042e..0e9f752 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 @@ -3,19 +3,18 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; -import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.ToolUtil; -import com.casic.missiles.modular.system.dto.AlarmNowView; import com.casic.missiles.modular.system.model.Area; +import com.casic.missiles.modular.system.model.DeviceType; import com.casic.missiles.modular.system.service.IAlarmNowViewService; import com.casic.missiles.modular.system.service.IAreaService; +import com.casic.missiles.modular.system.service.IDeviceTypeService; import com.casic.missiles.modular.system.service.IStatisticsService; import com.casic.missiles.modular.system.util.DateUtil; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import java.util.ArrayList; @@ -28,15 +27,58 @@ public class WaterStaticsController extends BaseController { @Autowired private IStatisticsService statisticsService; - @Autowired - private IAlarmNowViewService alarmNowViewService; - @Autowired - private ICommonPermissionService permissionService; + @Autowired private IAreaService iAreaService; + @Autowired + private IDeviceTypeService iDeviceTypeService; + + + /** - * 根据权属单位统计闸井数量 + * 查询一级分区各区用水量 + * + * @return + */ + @RequestMapping(value = "/countByFirstArea") + @ResponseBody + public Object countByFirstArea(String startTime, String endTime) { + List areaList = iAreaService.selectList(null); + List areaLevel1List = new ArrayList<>(); + + areaList.forEach(area -> { + //过滤一级区域 + if ("2".equals(area.getLevel().toString())) { + areaLevel1List.add(area); + } + }); + List> mapList = new ArrayList<>(); + //寻找一级区域下的所有子区域的总用水量 按照天 + for (Area area1 : areaLevel1List) { + List childIdsList = new ArrayList<>(); + Map map = new HashMap<>(); + map.put("areaId", area1.getId()); + map.put("areaName", area1.getAreaName()); + map.put("count", 0); + for (Area area : areaList) { + if (area.getPids()!=null&&area.getPids().contains("[" + area1.getId() + "]")) { + childIdsList.add(area.getId()); + } + } + if (ToolUtil.isNotEmpty(childIdsList)) { + Long count = statisticsService.countByFirstArea(startTime, endTime, StringUtils.join(childIdsList.toArray(), ",")); + map.put("count", count); + } + mapList.add(map); + } + + return ResponseData.success(mapList); + } + + + /** + * 查询一级分区7日用水量 * * @return */ @@ -45,7 +87,6 @@ public Object countByDayFirst(String startTime, String endTime) { List areaList = iAreaService.selectList(null); List areaLevel1List = new ArrayList<>(); - List childIdsList = new ArrayList<>(); List dateStrs = DateUtil.getBetweenTime(startTime, endTime); areaList.forEach(area -> { //过滤一级区域 @@ -56,9 +97,10 @@ List> mapList = new ArrayList<>(); //寻找一级区域下的所有子区域的总用水量 按照天 for (Area area1 : areaLevel1List) { + List childIdsList = new ArrayList<>(); Map map = new HashMap<>(); for (Area area : areaList) { - if (area.getPids().contains("[" + area1.getPid() + "]")) { + if (area.getPids()!=null&&area.getPids().contains("[" + area1.getId() + "]")) { childIdsList.add(area.getId()); } } @@ -69,7 +111,7 @@ mapList.add(map); } //封装数据 - List>> returnMapList = new ArrayList<>(); + List> returnMapList = new ArrayList<>(); for (String dateStr : dateStrs) { Map retMap = new HashMap<>(); retMap.put("date", dateStr); @@ -90,127 +132,137 @@ } } returnMaps.add(countMap); - returnMapList.add(returnMaps); + retMap.put("data", returnMaps); + returnMapList.add(retMap); } - } return ResponseData.success(returnMapList); - } /** - * 根据井类型统计闸井数量 + * 查询二级分区用水量 + * + * @return */ - @RequestMapping(value = "/wellStaticsByType") + @RequestMapping(value = "/countBySecondArea") @ResponseBody - public Object wellStaticsByType() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.wellStaticsByType(dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); + public Object countBySecondArea(String areaId, String startTime, String endTime) { + List areaList = iAreaService.selectList(null); + List areaLevel2List = new ArrayList<>(); + + areaList.forEach(area -> { + //根据一级区域过滤二级区域 + if ("3".equals(area.getLevel().toString()) &&area.getPids()!=null&& area.getPids().contains("[" + areaId + "]")) { + areaLevel2List.add(area); + } + }); + List> mapList = new ArrayList<>(); + //寻找一级区域下的所有子区域的总用水量 按照天 + for (Area area2 : areaLevel2List) { + List childIdsList = new ArrayList<>(); + Map map = new HashMap<>(); + map.put("areaId", area2.getId()); + map.put("areaName", area2.getAreaName()); + map.put("count", 0); + for (Area area : areaList) { + if (area.getPids()!=null&&area.getPids().contains("[" + area2.getId() + "]")) { + childIdsList.add(area.getId()); + } + } + if (ToolUtil.isNotEmpty(childIdsList)) { + Long count = statisticsService.countByFirstArea(startTime, endTime, StringUtils.join(childIdsList.toArray(), ",")); + map.put("count", count); + } + mapList.add(map); } + + return ResponseData.success(mapList); } + /** - * 根据设备类型统计设备数量 + * 查询二级分区水表告警 + * + * @return */ - @RequestMapping(value = "/deviceStaticsByType") + @RequestMapping(value = "/alarmBySecondArea") @ResponseBody - public Object deviceStaticsByType() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.deviceStaticsByType(dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); + public Object alarmBySecondArea(String areaId, String startTime, String endTime) { + List areaList = iAreaService.selectList(null); + List areaLevel2List = new ArrayList<>(); + areaList.forEach(area -> { + //根据一级区域过滤二级区域 + if ("3".equals(area.getLevel().toString()) && area.getPids().contains("[" + areaId + "]")) { + areaLevel2List.add(area); + } + }); + List> mapList = new ArrayList<>(); + //寻找一级区域下的所有子区域的总用水量 按照天 + for (Area area2 : areaLevel2List) { + List childIdsList = new ArrayList<>(); + Map map = new HashMap<>(); + map.put("areaId", area2.getId()); + map.put("areaName", area2.getAreaName()); + map.put("alarm", 0); + map.put("warning", 0); + for (Area area : areaList) { + if (area.getPids()!=null&&area.getPids().contains("[" + area2.getId() + "]")) { + childIdsList.add(area.getId()); + } + } + if (ToolUtil.isNotEmpty(childIdsList)) { + Map objectMap = statisticsService.alarmBySecondArea(startTime, endTime, StringUtils.join(childIdsList.toArray(), ",")); + if (ToolUtil.isNotEmpty(objectMap) && ToolUtil.isNotEmpty(objectMap.get("alarm"))) + map.put("alarm", objectMap.get("alarm").toString()); + if (ToolUtil.isNotEmpty(objectMap) && ToolUtil.isNotEmpty(objectMap.get("warning"))) + map.put("warning", objectMap.get("warning").toString()); + } + mapList.add(map); } + + return ResponseData.success(mapList); } + /** - * 根据权属单位统计设备数量 + * 设备7日报警趋势 + * + * @return */ - @RequestMapping(value = "/deviceStaticsByDept") + @RequestMapping(value = "/alarmCountByDay") @ResponseBody - public Object deviceStaticsByDept(@RequestParam(value = "deviceType", required = false) String deviceType) { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.deviceStaticsByDept(dataScope, deviceType); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } + public Object alarmCountByDay(String startTime, String endTime) { + List deviceTypeList =iDeviceTypeService.getTypeList(); - /** - * 根据在线状态统计设备数量 - */ - @RequestMapping(value = "/deviceStaticsByStatus") - @ResponseBody - public Object deviceStaticsByStatus() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - Map res = statisticsService.deviceStaticsByStatus(dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } + List dateStrs = DateUtil.getBetweenTime(startTime, endTime); - /** - * 根据权属单位统计工单数 - */ - @RequestMapping(value = "/jobsByDept") - @ResponseBody - public Object jobsByDept(String beginTime, String endTime, String deviceType) { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.jobsByDept(dataScope, beginTime, endTime, deviceType); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } + List> objectMapList = statisticsService.alarmCountByDay(startTime, endTime); - /** - * 当前报警统计 - */ - @RequestMapping(value = "/alarmsNow") - @ResponseBody - public Object alarmsNow() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List alarmNowViews = alarmNowViewService.getNowAlarmRecords(dataScope); - Map res = new HashMap<>(); - res.put("total", alarmNowViews.size()); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); + //封装数据 + List> returnMapList = new ArrayList<>(); + for (String dateStr : dateStrs) { + Map retMap = new HashMap<>(); + retMap.put("date", dateStr); + retMap.put("data", new ArrayList<>()); + List> returnMaps = new ArrayList<>(); + for (DeviceType deviceType : deviceTypeList) { + Map countMap = new HashMap<>(); + countMap.put("name", deviceType.getTypeName()); + countMap.put("count", "0"); + for (Map objectMap : objectMapList) { + if (ToolUtil.isNotEmpty(objectMap.get("name"))) { + if(deviceType.getTypeName().equals(objectMap.get("name").toString())&& + dateStr.equals(objectMap.get("alarmDate").toString())){ + countMap.put("count", objectMap.get("count").toString()); + } + } + } + returnMaps.add(countMap); + } + retMap.put("data", returnMaps); + returnMapList.add(retMap); } + return ResponseData.success(returnMapList); } - /** - * 统计每日报警总数 - */ - @RequestMapping("/alarmsByDay") - @ResponseBody - public Object alarmsByDay(String beginTime, String endTime) { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.alarmsByDay(beginTime, endTime, dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } - - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/StatisticMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/StatisticMapper.java index 52746d6..7e30d95 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/StatisticMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/StatisticMapper.java @@ -15,4 +15,7 @@ List> jobsByDept(@Param("dataScope")DataScope dataScope,@Param("beginTime")String beginTime,@Param("endTime")String endTime,@Param("deviceType")String deviceType); Map jobsByDeptId(@Param("deptIds")String deptIds,@Param("beginTime")String beginTime,@Param("endTime")String endTime); List> countByDayFirst(@Param("startTime")String startTime,@Param("endTime")String endTime,@Param("areaIds")String areaIds); + List> alarmCountByDay(@Param("startTime")String startTime,@Param("endTime")String endTime); + Map alarmBySecondArea(@Param("startTime")String startTime,@Param("endTime")String endTime,@Param("areaIds")String areaIds); + Long countByFirstArea(@Param("startTime")String startTime,@Param("endTime")String endTime,@Param("areaIds")String areaIds); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/StatisticMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/StatisticMapper.xml index 8ad668b..127b676 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/StatisticMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/StatisticMapper.xml @@ -116,8 +116,8 @@ + + + + \ No newline at end of file diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/IStatisticsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/IStatisticsService.java index 3575cb3..66a4d88 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/IStatisticsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/IStatisticsService.java @@ -15,4 +15,7 @@ List> jobsByDept(DataScope dataScope,String beginTime, String endTime, String deviceType) throws ParseException; List> alarmsByDay(String beginTime,String endTime,DataScope dataScope); List> countByDayFirst(String startTime,String endTime,String areaIds); + List> alarmCountByDay(String startTime,String endTime); + Map alarmBySecondArea(String startTime,String endTime,String areaIds); + Long countByFirstArea(String startTime,String endTime,String areaIds); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java index 7290c37..bc54695 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java @@ -136,4 +136,19 @@ public List> countByDayFirst(String startTime, String endTime,String areaIds) { return statisticMapper.countByDayFirst(startTime,endTime,areaIds); } + + @Override + public Long countByFirstArea(String startTime, String endTime,String areaIds) { + return statisticMapper.countByFirstArea(startTime,endTime,areaIds); + } + + @Override + public Map alarmBySecondArea(String startTime, String endTime, String areaIds) { + return statisticMapper.alarmBySecondArea(startTime,endTime,areaIds); + } + + @Override + public List> alarmCountByDay(String startTime, String endTime) { + return statisticMapper.alarmCountByDay( startTime, endTime); + } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java index a376ba8..ae94fc5 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -23,6 +23,7 @@ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("deviceType") String deviceType, @Param("deptid") String deptid, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("keywords") String keywords, @Param("isOnline") String isOnline, @Param("areaId") String areaId); DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode); + List getAreaIds(@Param("areaId") Long areaId); String getArea(@Param("id") String id); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml index eee62f1..de868cb 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -109,7 +109,7 @@ OR wellCode LIKE ) - and area LIKE + and area IN (${areaId}) ORDER BY INSTALLDATE DESC @@ -1060,4 +1060,14 @@ SELECT * FROM sys_area + + 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 43e042e..0e9f752 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 @@ -3,19 +3,18 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; -import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.ToolUtil; -import com.casic.missiles.modular.system.dto.AlarmNowView; import com.casic.missiles.modular.system.model.Area; +import com.casic.missiles.modular.system.model.DeviceType; import com.casic.missiles.modular.system.service.IAlarmNowViewService; import com.casic.missiles.modular.system.service.IAreaService; +import com.casic.missiles.modular.system.service.IDeviceTypeService; import com.casic.missiles.modular.system.service.IStatisticsService; import com.casic.missiles.modular.system.util.DateUtil; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import java.util.ArrayList; @@ -28,15 +27,58 @@ public class WaterStaticsController extends BaseController { @Autowired private IStatisticsService statisticsService; - @Autowired - private IAlarmNowViewService alarmNowViewService; - @Autowired - private ICommonPermissionService permissionService; + @Autowired private IAreaService iAreaService; + @Autowired + private IDeviceTypeService iDeviceTypeService; + + + /** - * 根据权属单位统计闸井数量 + * 查询一级分区各区用水量 + * + * @return + */ + @RequestMapping(value = "/countByFirstArea") + @ResponseBody + public Object countByFirstArea(String startTime, String endTime) { + List areaList = iAreaService.selectList(null); + List areaLevel1List = new ArrayList<>(); + + areaList.forEach(area -> { + //过滤一级区域 + if ("2".equals(area.getLevel().toString())) { + areaLevel1List.add(area); + } + }); + List> mapList = new ArrayList<>(); + //寻找一级区域下的所有子区域的总用水量 按照天 + for (Area area1 : areaLevel1List) { + List childIdsList = new ArrayList<>(); + Map map = new HashMap<>(); + map.put("areaId", area1.getId()); + map.put("areaName", area1.getAreaName()); + map.put("count", 0); + for (Area area : areaList) { + if (area.getPids()!=null&&area.getPids().contains("[" + area1.getId() + "]")) { + childIdsList.add(area.getId()); + } + } + if (ToolUtil.isNotEmpty(childIdsList)) { + Long count = statisticsService.countByFirstArea(startTime, endTime, StringUtils.join(childIdsList.toArray(), ",")); + map.put("count", count); + } + mapList.add(map); + } + + return ResponseData.success(mapList); + } + + + /** + * 查询一级分区7日用水量 * * @return */ @@ -45,7 +87,6 @@ public Object countByDayFirst(String startTime, String endTime) { List areaList = iAreaService.selectList(null); List areaLevel1List = new ArrayList<>(); - List childIdsList = new ArrayList<>(); List dateStrs = DateUtil.getBetweenTime(startTime, endTime); areaList.forEach(area -> { //过滤一级区域 @@ -56,9 +97,10 @@ List> mapList = new ArrayList<>(); //寻找一级区域下的所有子区域的总用水量 按照天 for (Area area1 : areaLevel1List) { + List childIdsList = new ArrayList<>(); Map map = new HashMap<>(); for (Area area : areaList) { - if (area.getPids().contains("[" + area1.getPid() + "]")) { + if (area.getPids()!=null&&area.getPids().contains("[" + area1.getId() + "]")) { childIdsList.add(area.getId()); } } @@ -69,7 +111,7 @@ mapList.add(map); } //封装数据 - List>> returnMapList = new ArrayList<>(); + List> returnMapList = new ArrayList<>(); for (String dateStr : dateStrs) { Map retMap = new HashMap<>(); retMap.put("date", dateStr); @@ -90,127 +132,137 @@ } } returnMaps.add(countMap); - returnMapList.add(returnMaps); + retMap.put("data", returnMaps); + returnMapList.add(retMap); } - } return ResponseData.success(returnMapList); - } /** - * 根据井类型统计闸井数量 + * 查询二级分区用水量 + * + * @return */ - @RequestMapping(value = "/wellStaticsByType") + @RequestMapping(value = "/countBySecondArea") @ResponseBody - public Object wellStaticsByType() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.wellStaticsByType(dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); + public Object countBySecondArea(String areaId, String startTime, String endTime) { + List areaList = iAreaService.selectList(null); + List areaLevel2List = new ArrayList<>(); + + areaList.forEach(area -> { + //根据一级区域过滤二级区域 + if ("3".equals(area.getLevel().toString()) &&area.getPids()!=null&& area.getPids().contains("[" + areaId + "]")) { + areaLevel2List.add(area); + } + }); + List> mapList = new ArrayList<>(); + //寻找一级区域下的所有子区域的总用水量 按照天 + for (Area area2 : areaLevel2List) { + List childIdsList = new ArrayList<>(); + Map map = new HashMap<>(); + map.put("areaId", area2.getId()); + map.put("areaName", area2.getAreaName()); + map.put("count", 0); + for (Area area : areaList) { + if (area.getPids()!=null&&area.getPids().contains("[" + area2.getId() + "]")) { + childIdsList.add(area.getId()); + } + } + if (ToolUtil.isNotEmpty(childIdsList)) { + Long count = statisticsService.countByFirstArea(startTime, endTime, StringUtils.join(childIdsList.toArray(), ",")); + map.put("count", count); + } + mapList.add(map); } + + return ResponseData.success(mapList); } + /** - * 根据设备类型统计设备数量 + * 查询二级分区水表告警 + * + * @return */ - @RequestMapping(value = "/deviceStaticsByType") + @RequestMapping(value = "/alarmBySecondArea") @ResponseBody - public Object deviceStaticsByType() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.deviceStaticsByType(dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); + public Object alarmBySecondArea(String areaId, String startTime, String endTime) { + List areaList = iAreaService.selectList(null); + List areaLevel2List = new ArrayList<>(); + areaList.forEach(area -> { + //根据一级区域过滤二级区域 + if ("3".equals(area.getLevel().toString()) && area.getPids().contains("[" + areaId + "]")) { + areaLevel2List.add(area); + } + }); + List> mapList = new ArrayList<>(); + //寻找一级区域下的所有子区域的总用水量 按照天 + for (Area area2 : areaLevel2List) { + List childIdsList = new ArrayList<>(); + Map map = new HashMap<>(); + map.put("areaId", area2.getId()); + map.put("areaName", area2.getAreaName()); + map.put("alarm", 0); + map.put("warning", 0); + for (Area area : areaList) { + if (area.getPids()!=null&&area.getPids().contains("[" + area2.getId() + "]")) { + childIdsList.add(area.getId()); + } + } + if (ToolUtil.isNotEmpty(childIdsList)) { + Map objectMap = statisticsService.alarmBySecondArea(startTime, endTime, StringUtils.join(childIdsList.toArray(), ",")); + if (ToolUtil.isNotEmpty(objectMap) && ToolUtil.isNotEmpty(objectMap.get("alarm"))) + map.put("alarm", objectMap.get("alarm").toString()); + if (ToolUtil.isNotEmpty(objectMap) && ToolUtil.isNotEmpty(objectMap.get("warning"))) + map.put("warning", objectMap.get("warning").toString()); + } + mapList.add(map); } + + return ResponseData.success(mapList); } + /** - * 根据权属单位统计设备数量 + * 设备7日报警趋势 + * + * @return */ - @RequestMapping(value = "/deviceStaticsByDept") + @RequestMapping(value = "/alarmCountByDay") @ResponseBody - public Object deviceStaticsByDept(@RequestParam(value = "deviceType", required = false) String deviceType) { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.deviceStaticsByDept(dataScope, deviceType); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } + public Object alarmCountByDay(String startTime, String endTime) { + List deviceTypeList =iDeviceTypeService.getTypeList(); - /** - * 根据在线状态统计设备数量 - */ - @RequestMapping(value = "/deviceStaticsByStatus") - @ResponseBody - public Object deviceStaticsByStatus() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - Map res = statisticsService.deviceStaticsByStatus(dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } + List dateStrs = DateUtil.getBetweenTime(startTime, endTime); - /** - * 根据权属单位统计工单数 - */ - @RequestMapping(value = "/jobsByDept") - @ResponseBody - public Object jobsByDept(String beginTime, String endTime, String deviceType) { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.jobsByDept(dataScope, beginTime, endTime, deviceType); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } + List> objectMapList = statisticsService.alarmCountByDay(startTime, endTime); - /** - * 当前报警统计 - */ - @RequestMapping(value = "/alarmsNow") - @ResponseBody - public Object alarmsNow() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List alarmNowViews = alarmNowViewService.getNowAlarmRecords(dataScope); - Map res = new HashMap<>(); - res.put("total", alarmNowViews.size()); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); + //封装数据 + List> returnMapList = new ArrayList<>(); + for (String dateStr : dateStrs) { + Map retMap = new HashMap<>(); + retMap.put("date", dateStr); + retMap.put("data", new ArrayList<>()); + List> returnMaps = new ArrayList<>(); + for (DeviceType deviceType : deviceTypeList) { + Map countMap = new HashMap<>(); + countMap.put("name", deviceType.getTypeName()); + countMap.put("count", "0"); + for (Map objectMap : objectMapList) { + if (ToolUtil.isNotEmpty(objectMap.get("name"))) { + if(deviceType.getTypeName().equals(objectMap.get("name").toString())&& + dateStr.equals(objectMap.get("alarmDate").toString())){ + countMap.put("count", objectMap.get("count").toString()); + } + } + } + returnMaps.add(countMap); + } + retMap.put("data", returnMaps); + returnMapList.add(retMap); } + return ResponseData.success(returnMapList); } - /** - * 统计每日报警总数 - */ - @RequestMapping("/alarmsByDay") - @ResponseBody - public Object alarmsByDay(String beginTime, String endTime) { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.alarmsByDay(beginTime, endTime, dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } - - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/StatisticMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/StatisticMapper.java index 52746d6..7e30d95 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/StatisticMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/StatisticMapper.java @@ -15,4 +15,7 @@ List> jobsByDept(@Param("dataScope")DataScope dataScope,@Param("beginTime")String beginTime,@Param("endTime")String endTime,@Param("deviceType")String deviceType); Map jobsByDeptId(@Param("deptIds")String deptIds,@Param("beginTime")String beginTime,@Param("endTime")String endTime); List> countByDayFirst(@Param("startTime")String startTime,@Param("endTime")String endTime,@Param("areaIds")String areaIds); + List> alarmCountByDay(@Param("startTime")String startTime,@Param("endTime")String endTime); + Map alarmBySecondArea(@Param("startTime")String startTime,@Param("endTime")String endTime,@Param("areaIds")String areaIds); + Long countByFirstArea(@Param("startTime")String startTime,@Param("endTime")String endTime,@Param("areaIds")String areaIds); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/StatisticMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/StatisticMapper.xml index 8ad668b..127b676 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/StatisticMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/StatisticMapper.xml @@ -116,8 +116,8 @@ + + + + \ No newline at end of file diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/IStatisticsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/IStatisticsService.java index 3575cb3..66a4d88 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/IStatisticsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/IStatisticsService.java @@ -15,4 +15,7 @@ List> jobsByDept(DataScope dataScope,String beginTime, String endTime, String deviceType) throws ParseException; List> alarmsByDay(String beginTime,String endTime,DataScope dataScope); List> countByDayFirst(String startTime,String endTime,String areaIds); + List> alarmCountByDay(String startTime,String endTime); + Map alarmBySecondArea(String startTime,String endTime,String areaIds); + Long countByFirstArea(String startTime,String endTime,String areaIds); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java index 7290c37..bc54695 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java @@ -136,4 +136,19 @@ public List> countByDayFirst(String startTime, String endTime,String areaIds) { return statisticMapper.countByDayFirst(startTime,endTime,areaIds); } + + @Override + public Long countByFirstArea(String startTime, String endTime,String areaIds) { + return statisticMapper.countByFirstArea(startTime,endTime,areaIds); + } + + @Override + public Map alarmBySecondArea(String startTime, String endTime, String areaIds) { + return statisticMapper.alarmBySecondArea(startTime,endTime,areaIds); + } + + @Override + public List> alarmCountByDay(String startTime, String endTime) { + return statisticMapper.alarmCountByDay( startTime, endTime); + } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java index a376ba8..ae94fc5 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -23,6 +23,7 @@ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("deviceType") String deviceType, @Param("deptid") String deptid, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("keywords") String keywords, @Param("isOnline") String isOnline, @Param("areaId") String areaId); DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode); + List getAreaIds(@Param("areaId") Long areaId); String getArea(@Param("id") String id); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml index eee62f1..de868cb 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -109,7 +109,7 @@ OR wellCode LIKE ) - and area LIKE + and area IN (${areaId}) ORDER BY INSTALLDATE DESC @@ -1060,4 +1060,14 @@ SELECT * FROM sys_area + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceTypeService.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceTypeService.java index 0560bb7..b81a804 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceTypeService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceTypeService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.service.IService; import java.io.Serializable; +import java.util.List; /** *

@@ -23,4 +24,6 @@ DeviceType selectDeviceTypeByName(String typeName); int countDeviceByType(Serializable typeId); + + List getTypeList(); } 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 43e042e..0e9f752 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 @@ -3,19 +3,18 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; -import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.ToolUtil; -import com.casic.missiles.modular.system.dto.AlarmNowView; import com.casic.missiles.modular.system.model.Area; +import com.casic.missiles.modular.system.model.DeviceType; import com.casic.missiles.modular.system.service.IAlarmNowViewService; import com.casic.missiles.modular.system.service.IAreaService; +import com.casic.missiles.modular.system.service.IDeviceTypeService; import com.casic.missiles.modular.system.service.IStatisticsService; import com.casic.missiles.modular.system.util.DateUtil; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import java.util.ArrayList; @@ -28,15 +27,58 @@ public class WaterStaticsController extends BaseController { @Autowired private IStatisticsService statisticsService; - @Autowired - private IAlarmNowViewService alarmNowViewService; - @Autowired - private ICommonPermissionService permissionService; + @Autowired private IAreaService iAreaService; + @Autowired + private IDeviceTypeService iDeviceTypeService; + + + /** - * 根据权属单位统计闸井数量 + * 查询一级分区各区用水量 + * + * @return + */ + @RequestMapping(value = "/countByFirstArea") + @ResponseBody + public Object countByFirstArea(String startTime, String endTime) { + List areaList = iAreaService.selectList(null); + List areaLevel1List = new ArrayList<>(); + + areaList.forEach(area -> { + //过滤一级区域 + if ("2".equals(area.getLevel().toString())) { + areaLevel1List.add(area); + } + }); + List> mapList = new ArrayList<>(); + //寻找一级区域下的所有子区域的总用水量 按照天 + for (Area area1 : areaLevel1List) { + List childIdsList = new ArrayList<>(); + Map map = new HashMap<>(); + map.put("areaId", area1.getId()); + map.put("areaName", area1.getAreaName()); + map.put("count", 0); + for (Area area : areaList) { + if (area.getPids()!=null&&area.getPids().contains("[" + area1.getId() + "]")) { + childIdsList.add(area.getId()); + } + } + if (ToolUtil.isNotEmpty(childIdsList)) { + Long count = statisticsService.countByFirstArea(startTime, endTime, StringUtils.join(childIdsList.toArray(), ",")); + map.put("count", count); + } + mapList.add(map); + } + + return ResponseData.success(mapList); + } + + + /** + * 查询一级分区7日用水量 * * @return */ @@ -45,7 +87,6 @@ public Object countByDayFirst(String startTime, String endTime) { List areaList = iAreaService.selectList(null); List areaLevel1List = new ArrayList<>(); - List childIdsList = new ArrayList<>(); List dateStrs = DateUtil.getBetweenTime(startTime, endTime); areaList.forEach(area -> { //过滤一级区域 @@ -56,9 +97,10 @@ List> mapList = new ArrayList<>(); //寻找一级区域下的所有子区域的总用水量 按照天 for (Area area1 : areaLevel1List) { + List childIdsList = new ArrayList<>(); Map map = new HashMap<>(); for (Area area : areaList) { - if (area.getPids().contains("[" + area1.getPid() + "]")) { + if (area.getPids()!=null&&area.getPids().contains("[" + area1.getId() + "]")) { childIdsList.add(area.getId()); } } @@ -69,7 +111,7 @@ mapList.add(map); } //封装数据 - List>> returnMapList = new ArrayList<>(); + List> returnMapList = new ArrayList<>(); for (String dateStr : dateStrs) { Map retMap = new HashMap<>(); retMap.put("date", dateStr); @@ -90,127 +132,137 @@ } } returnMaps.add(countMap); - returnMapList.add(returnMaps); + retMap.put("data", returnMaps); + returnMapList.add(retMap); } - } return ResponseData.success(returnMapList); - } /** - * 根据井类型统计闸井数量 + * 查询二级分区用水量 + * + * @return */ - @RequestMapping(value = "/wellStaticsByType") + @RequestMapping(value = "/countBySecondArea") @ResponseBody - public Object wellStaticsByType() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.wellStaticsByType(dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); + public Object countBySecondArea(String areaId, String startTime, String endTime) { + List areaList = iAreaService.selectList(null); + List areaLevel2List = new ArrayList<>(); + + areaList.forEach(area -> { + //根据一级区域过滤二级区域 + if ("3".equals(area.getLevel().toString()) &&area.getPids()!=null&& area.getPids().contains("[" + areaId + "]")) { + areaLevel2List.add(area); + } + }); + List> mapList = new ArrayList<>(); + //寻找一级区域下的所有子区域的总用水量 按照天 + for (Area area2 : areaLevel2List) { + List childIdsList = new ArrayList<>(); + Map map = new HashMap<>(); + map.put("areaId", area2.getId()); + map.put("areaName", area2.getAreaName()); + map.put("count", 0); + for (Area area : areaList) { + if (area.getPids()!=null&&area.getPids().contains("[" + area2.getId() + "]")) { + childIdsList.add(area.getId()); + } + } + if (ToolUtil.isNotEmpty(childIdsList)) { + Long count = statisticsService.countByFirstArea(startTime, endTime, StringUtils.join(childIdsList.toArray(), ",")); + map.put("count", count); + } + mapList.add(map); } + + return ResponseData.success(mapList); } + /** - * 根据设备类型统计设备数量 + * 查询二级分区水表告警 + * + * @return */ - @RequestMapping(value = "/deviceStaticsByType") + @RequestMapping(value = "/alarmBySecondArea") @ResponseBody - public Object deviceStaticsByType() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.deviceStaticsByType(dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); + public Object alarmBySecondArea(String areaId, String startTime, String endTime) { + List areaList = iAreaService.selectList(null); + List areaLevel2List = new ArrayList<>(); + areaList.forEach(area -> { + //根据一级区域过滤二级区域 + if ("3".equals(area.getLevel().toString()) && area.getPids().contains("[" + areaId + "]")) { + areaLevel2List.add(area); + } + }); + List> mapList = new ArrayList<>(); + //寻找一级区域下的所有子区域的总用水量 按照天 + for (Area area2 : areaLevel2List) { + List childIdsList = new ArrayList<>(); + Map map = new HashMap<>(); + map.put("areaId", area2.getId()); + map.put("areaName", area2.getAreaName()); + map.put("alarm", 0); + map.put("warning", 0); + for (Area area : areaList) { + if (area.getPids()!=null&&area.getPids().contains("[" + area2.getId() + "]")) { + childIdsList.add(area.getId()); + } + } + if (ToolUtil.isNotEmpty(childIdsList)) { + Map objectMap = statisticsService.alarmBySecondArea(startTime, endTime, StringUtils.join(childIdsList.toArray(), ",")); + if (ToolUtil.isNotEmpty(objectMap) && ToolUtil.isNotEmpty(objectMap.get("alarm"))) + map.put("alarm", objectMap.get("alarm").toString()); + if (ToolUtil.isNotEmpty(objectMap) && ToolUtil.isNotEmpty(objectMap.get("warning"))) + map.put("warning", objectMap.get("warning").toString()); + } + mapList.add(map); } + + return ResponseData.success(mapList); } + /** - * 根据权属单位统计设备数量 + * 设备7日报警趋势 + * + * @return */ - @RequestMapping(value = "/deviceStaticsByDept") + @RequestMapping(value = "/alarmCountByDay") @ResponseBody - public Object deviceStaticsByDept(@RequestParam(value = "deviceType", required = false) String deviceType) { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.deviceStaticsByDept(dataScope, deviceType); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } + public Object alarmCountByDay(String startTime, String endTime) { + List deviceTypeList =iDeviceTypeService.getTypeList(); - /** - * 根据在线状态统计设备数量 - */ - @RequestMapping(value = "/deviceStaticsByStatus") - @ResponseBody - public Object deviceStaticsByStatus() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - Map res = statisticsService.deviceStaticsByStatus(dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } + List dateStrs = DateUtil.getBetweenTime(startTime, endTime); - /** - * 根据权属单位统计工单数 - */ - @RequestMapping(value = "/jobsByDept") - @ResponseBody - public Object jobsByDept(String beginTime, String endTime, String deviceType) { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.jobsByDept(dataScope, beginTime, endTime, deviceType); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } + List> objectMapList = statisticsService.alarmCountByDay(startTime, endTime); - /** - * 当前报警统计 - */ - @RequestMapping(value = "/alarmsNow") - @ResponseBody - public Object alarmsNow() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List alarmNowViews = alarmNowViewService.getNowAlarmRecords(dataScope); - Map res = new HashMap<>(); - res.put("total", alarmNowViews.size()); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); + //封装数据 + List> returnMapList = new ArrayList<>(); + for (String dateStr : dateStrs) { + Map retMap = new HashMap<>(); + retMap.put("date", dateStr); + retMap.put("data", new ArrayList<>()); + List> returnMaps = new ArrayList<>(); + for (DeviceType deviceType : deviceTypeList) { + Map countMap = new HashMap<>(); + countMap.put("name", deviceType.getTypeName()); + countMap.put("count", "0"); + for (Map objectMap : objectMapList) { + if (ToolUtil.isNotEmpty(objectMap.get("name"))) { + if(deviceType.getTypeName().equals(objectMap.get("name").toString())&& + dateStr.equals(objectMap.get("alarmDate").toString())){ + countMap.put("count", objectMap.get("count").toString()); + } + } + } + returnMaps.add(countMap); + } + retMap.put("data", returnMaps); + returnMapList.add(retMap); } + return ResponseData.success(returnMapList); } - /** - * 统计每日报警总数 - */ - @RequestMapping("/alarmsByDay") - @ResponseBody - public Object alarmsByDay(String beginTime, String endTime) { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.alarmsByDay(beginTime, endTime, dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } - - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/StatisticMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/StatisticMapper.java index 52746d6..7e30d95 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/StatisticMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/StatisticMapper.java @@ -15,4 +15,7 @@ List> jobsByDept(@Param("dataScope")DataScope dataScope,@Param("beginTime")String beginTime,@Param("endTime")String endTime,@Param("deviceType")String deviceType); Map jobsByDeptId(@Param("deptIds")String deptIds,@Param("beginTime")String beginTime,@Param("endTime")String endTime); List> countByDayFirst(@Param("startTime")String startTime,@Param("endTime")String endTime,@Param("areaIds")String areaIds); + List> alarmCountByDay(@Param("startTime")String startTime,@Param("endTime")String endTime); + Map alarmBySecondArea(@Param("startTime")String startTime,@Param("endTime")String endTime,@Param("areaIds")String areaIds); + Long countByFirstArea(@Param("startTime")String startTime,@Param("endTime")String endTime,@Param("areaIds")String areaIds); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/StatisticMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/StatisticMapper.xml index 8ad668b..127b676 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/StatisticMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/StatisticMapper.xml @@ -116,8 +116,8 @@ + + + + \ No newline at end of file diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/IStatisticsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/IStatisticsService.java index 3575cb3..66a4d88 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/IStatisticsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/IStatisticsService.java @@ -15,4 +15,7 @@ List> jobsByDept(DataScope dataScope,String beginTime, String endTime, String deviceType) throws ParseException; List> alarmsByDay(String beginTime,String endTime,DataScope dataScope); List> countByDayFirst(String startTime,String endTime,String areaIds); + List> alarmCountByDay(String startTime,String endTime); + Map alarmBySecondArea(String startTime,String endTime,String areaIds); + Long countByFirstArea(String startTime,String endTime,String areaIds); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java index 7290c37..bc54695 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java @@ -136,4 +136,19 @@ public List> countByDayFirst(String startTime, String endTime,String areaIds) { return statisticMapper.countByDayFirst(startTime,endTime,areaIds); } + + @Override + public Long countByFirstArea(String startTime, String endTime,String areaIds) { + return statisticMapper.countByFirstArea(startTime,endTime,areaIds); + } + + @Override + public Map alarmBySecondArea(String startTime, String endTime, String areaIds) { + return statisticMapper.alarmBySecondArea(startTime,endTime,areaIds); + } + + @Override + public List> alarmCountByDay(String startTime, String endTime) { + return statisticMapper.alarmCountByDay( startTime, endTime); + } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java index a376ba8..ae94fc5 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -23,6 +23,7 @@ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("deviceType") String deviceType, @Param("deptid") String deptid, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("keywords") String keywords, @Param("isOnline") String isOnline, @Param("areaId") String areaId); DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode); + List getAreaIds(@Param("areaId") Long areaId); String getArea(@Param("id") String id); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml index eee62f1..de868cb 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -109,7 +109,7 @@ OR wellCode LIKE ) - and area LIKE + and area IN (${areaId}) ORDER BY INSTALLDATE DESC @@ -1060,4 +1060,14 @@ SELECT * FROM sys_area + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceTypeService.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceTypeService.java index 0560bb7..b81a804 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceTypeService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceTypeService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.service.IService; import java.io.Serializable; +import java.util.List; /** *

@@ -23,4 +24,6 @@ DeviceType selectDeviceTypeByName(String typeName); int countDeviceByType(Serializable typeId); + + List getTypeList(); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java index bf94a23..68632ce 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -16,6 +16,7 @@ import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.model.*; import com.casic.missiles.modular.system.service.*; +import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.BeanPropertyBindingResult; @@ -163,9 +164,22 @@ return super.updateById(entity); } + public List getAreaPids(Long areaId) { + List areaIds = null; + if (ToolUtil.isNotEmpty(areaId)) { + areaIds = this.baseMapper.getAreaIds(areaId); + areaIds.add(areaId); + } + return areaIds; + } @Override public List selectDataScopePage(DataScope dataScope, Page page, String deviceType, String deptid, String beginTime, String endTime, String keywords, String isOnline, String areaId) { - return this.baseMapper.selectDataScopePage(dataScope, page, deviceType, deptid, beginTime, endTime, keywords, isOnline, areaId); + String areaIds =""; + if(ToolUtil.isNotEmpty(areaId)){ + List areaIdList= getAreaPids(Long.valueOf(areaId)); + areaIds= StringUtils.join(areaIdList.toArray(),","); + } + return this.baseMapper.selectDataScopePage(dataScope, page, deviceType, deptid, beginTime, endTime, keywords, isOnline, areaIds); } @Override 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 43e042e..0e9f752 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 @@ -3,19 +3,18 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; -import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.ToolUtil; -import com.casic.missiles.modular.system.dto.AlarmNowView; import com.casic.missiles.modular.system.model.Area; +import com.casic.missiles.modular.system.model.DeviceType; import com.casic.missiles.modular.system.service.IAlarmNowViewService; import com.casic.missiles.modular.system.service.IAreaService; +import com.casic.missiles.modular.system.service.IDeviceTypeService; import com.casic.missiles.modular.system.service.IStatisticsService; import com.casic.missiles.modular.system.util.DateUtil; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import java.util.ArrayList; @@ -28,15 +27,58 @@ public class WaterStaticsController extends BaseController { @Autowired private IStatisticsService statisticsService; - @Autowired - private IAlarmNowViewService alarmNowViewService; - @Autowired - private ICommonPermissionService permissionService; + @Autowired private IAreaService iAreaService; + @Autowired + private IDeviceTypeService iDeviceTypeService; + + + /** - * 根据权属单位统计闸井数量 + * 查询一级分区各区用水量 + * + * @return + */ + @RequestMapping(value = "/countByFirstArea") + @ResponseBody + public Object countByFirstArea(String startTime, String endTime) { + List areaList = iAreaService.selectList(null); + List areaLevel1List = new ArrayList<>(); + + areaList.forEach(area -> { + //过滤一级区域 + if ("2".equals(area.getLevel().toString())) { + areaLevel1List.add(area); + } + }); + List> mapList = new ArrayList<>(); + //寻找一级区域下的所有子区域的总用水量 按照天 + for (Area area1 : areaLevel1List) { + List childIdsList = new ArrayList<>(); + Map map = new HashMap<>(); + map.put("areaId", area1.getId()); + map.put("areaName", area1.getAreaName()); + map.put("count", 0); + for (Area area : areaList) { + if (area.getPids()!=null&&area.getPids().contains("[" + area1.getId() + "]")) { + childIdsList.add(area.getId()); + } + } + if (ToolUtil.isNotEmpty(childIdsList)) { + Long count = statisticsService.countByFirstArea(startTime, endTime, StringUtils.join(childIdsList.toArray(), ",")); + map.put("count", count); + } + mapList.add(map); + } + + return ResponseData.success(mapList); + } + + + /** + * 查询一级分区7日用水量 * * @return */ @@ -45,7 +87,6 @@ public Object countByDayFirst(String startTime, String endTime) { List areaList = iAreaService.selectList(null); List areaLevel1List = new ArrayList<>(); - List childIdsList = new ArrayList<>(); List dateStrs = DateUtil.getBetweenTime(startTime, endTime); areaList.forEach(area -> { //过滤一级区域 @@ -56,9 +97,10 @@ List> mapList = new ArrayList<>(); //寻找一级区域下的所有子区域的总用水量 按照天 for (Area area1 : areaLevel1List) { + List childIdsList = new ArrayList<>(); Map map = new HashMap<>(); for (Area area : areaList) { - if (area.getPids().contains("[" + area1.getPid() + "]")) { + if (area.getPids()!=null&&area.getPids().contains("[" + area1.getId() + "]")) { childIdsList.add(area.getId()); } } @@ -69,7 +111,7 @@ mapList.add(map); } //封装数据 - List>> returnMapList = new ArrayList<>(); + List> returnMapList = new ArrayList<>(); for (String dateStr : dateStrs) { Map retMap = new HashMap<>(); retMap.put("date", dateStr); @@ -90,127 +132,137 @@ } } returnMaps.add(countMap); - returnMapList.add(returnMaps); + retMap.put("data", returnMaps); + returnMapList.add(retMap); } - } return ResponseData.success(returnMapList); - } /** - * 根据井类型统计闸井数量 + * 查询二级分区用水量 + * + * @return */ - @RequestMapping(value = "/wellStaticsByType") + @RequestMapping(value = "/countBySecondArea") @ResponseBody - public Object wellStaticsByType() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.wellStaticsByType(dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); + public Object countBySecondArea(String areaId, String startTime, String endTime) { + List areaList = iAreaService.selectList(null); + List areaLevel2List = new ArrayList<>(); + + areaList.forEach(area -> { + //根据一级区域过滤二级区域 + if ("3".equals(area.getLevel().toString()) &&area.getPids()!=null&& area.getPids().contains("[" + areaId + "]")) { + areaLevel2List.add(area); + } + }); + List> mapList = new ArrayList<>(); + //寻找一级区域下的所有子区域的总用水量 按照天 + for (Area area2 : areaLevel2List) { + List childIdsList = new ArrayList<>(); + Map map = new HashMap<>(); + map.put("areaId", area2.getId()); + map.put("areaName", area2.getAreaName()); + map.put("count", 0); + for (Area area : areaList) { + if (area.getPids()!=null&&area.getPids().contains("[" + area2.getId() + "]")) { + childIdsList.add(area.getId()); + } + } + if (ToolUtil.isNotEmpty(childIdsList)) { + Long count = statisticsService.countByFirstArea(startTime, endTime, StringUtils.join(childIdsList.toArray(), ",")); + map.put("count", count); + } + mapList.add(map); } + + return ResponseData.success(mapList); } + /** - * 根据设备类型统计设备数量 + * 查询二级分区水表告警 + * + * @return */ - @RequestMapping(value = "/deviceStaticsByType") + @RequestMapping(value = "/alarmBySecondArea") @ResponseBody - public Object deviceStaticsByType() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.deviceStaticsByType(dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); + public Object alarmBySecondArea(String areaId, String startTime, String endTime) { + List areaList = iAreaService.selectList(null); + List areaLevel2List = new ArrayList<>(); + areaList.forEach(area -> { + //根据一级区域过滤二级区域 + if ("3".equals(area.getLevel().toString()) && area.getPids().contains("[" + areaId + "]")) { + areaLevel2List.add(area); + } + }); + List> mapList = new ArrayList<>(); + //寻找一级区域下的所有子区域的总用水量 按照天 + for (Area area2 : areaLevel2List) { + List childIdsList = new ArrayList<>(); + Map map = new HashMap<>(); + map.put("areaId", area2.getId()); + map.put("areaName", area2.getAreaName()); + map.put("alarm", 0); + map.put("warning", 0); + for (Area area : areaList) { + if (area.getPids()!=null&&area.getPids().contains("[" + area2.getId() + "]")) { + childIdsList.add(area.getId()); + } + } + if (ToolUtil.isNotEmpty(childIdsList)) { + Map objectMap = statisticsService.alarmBySecondArea(startTime, endTime, StringUtils.join(childIdsList.toArray(), ",")); + if (ToolUtil.isNotEmpty(objectMap) && ToolUtil.isNotEmpty(objectMap.get("alarm"))) + map.put("alarm", objectMap.get("alarm").toString()); + if (ToolUtil.isNotEmpty(objectMap) && ToolUtil.isNotEmpty(objectMap.get("warning"))) + map.put("warning", objectMap.get("warning").toString()); + } + mapList.add(map); } + + return ResponseData.success(mapList); } + /** - * 根据权属单位统计设备数量 + * 设备7日报警趋势 + * + * @return */ - @RequestMapping(value = "/deviceStaticsByDept") + @RequestMapping(value = "/alarmCountByDay") @ResponseBody - public Object deviceStaticsByDept(@RequestParam(value = "deviceType", required = false) String deviceType) { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.deviceStaticsByDept(dataScope, deviceType); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } + public Object alarmCountByDay(String startTime, String endTime) { + List deviceTypeList =iDeviceTypeService.getTypeList(); - /** - * 根据在线状态统计设备数量 - */ - @RequestMapping(value = "/deviceStaticsByStatus") - @ResponseBody - public Object deviceStaticsByStatus() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - Map res = statisticsService.deviceStaticsByStatus(dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } + List dateStrs = DateUtil.getBetweenTime(startTime, endTime); - /** - * 根据权属单位统计工单数 - */ - @RequestMapping(value = "/jobsByDept") - @ResponseBody - public Object jobsByDept(String beginTime, String endTime, String deviceType) { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.jobsByDept(dataScope, beginTime, endTime, deviceType); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } + List> objectMapList = statisticsService.alarmCountByDay(startTime, endTime); - /** - * 当前报警统计 - */ - @RequestMapping(value = "/alarmsNow") - @ResponseBody - public Object alarmsNow() { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List alarmNowViews = alarmNowViewService.getNowAlarmRecords(dataScope); - Map res = new HashMap<>(); - res.put("total", alarmNowViews.size()); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); + //封装数据 + List> returnMapList = new ArrayList<>(); + for (String dateStr : dateStrs) { + Map retMap = new HashMap<>(); + retMap.put("date", dateStr); + retMap.put("data", new ArrayList<>()); + List> returnMaps = new ArrayList<>(); + for (DeviceType deviceType : deviceTypeList) { + Map countMap = new HashMap<>(); + countMap.put("name", deviceType.getTypeName()); + countMap.put("count", "0"); + for (Map objectMap : objectMapList) { + if (ToolUtil.isNotEmpty(objectMap.get("name"))) { + if(deviceType.getTypeName().equals(objectMap.get("name").toString())&& + dateStr.equals(objectMap.get("alarmDate").toString())){ + countMap.put("count", objectMap.get("count").toString()); + } + } + } + returnMaps.add(countMap); + } + retMap.put("data", returnMaps); + returnMapList.add(retMap); } + return ResponseData.success(returnMapList); } - /** - * 统计每日报警总数 - */ - @RequestMapping("/alarmsByDay") - @ResponseBody - public Object alarmsByDay(String beginTime, String endTime) { - DataScope dataScope = permissionService.getCurrUserDataScope(); - try { - List> res = statisticsService.alarmsByDay(beginTime, endTime, dataScope); - return ResponseData.success(res); - } catch (Exception e) { - e.printStackTrace(); - return ResponseData.error("faliure"); - } - } - - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/StatisticMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/StatisticMapper.java index 52746d6..7e30d95 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/StatisticMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/StatisticMapper.java @@ -15,4 +15,7 @@ List> jobsByDept(@Param("dataScope")DataScope dataScope,@Param("beginTime")String beginTime,@Param("endTime")String endTime,@Param("deviceType")String deviceType); Map jobsByDeptId(@Param("deptIds")String deptIds,@Param("beginTime")String beginTime,@Param("endTime")String endTime); List> countByDayFirst(@Param("startTime")String startTime,@Param("endTime")String endTime,@Param("areaIds")String areaIds); + List> alarmCountByDay(@Param("startTime")String startTime,@Param("endTime")String endTime); + Map alarmBySecondArea(@Param("startTime")String startTime,@Param("endTime")String endTime,@Param("areaIds")String areaIds); + Long countByFirstArea(@Param("startTime")String startTime,@Param("endTime")String endTime,@Param("areaIds")String areaIds); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/StatisticMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/StatisticMapper.xml index 8ad668b..127b676 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/StatisticMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/StatisticMapper.xml @@ -116,8 +116,8 @@ + + + + \ No newline at end of file diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/IStatisticsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/IStatisticsService.java index 3575cb3..66a4d88 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/IStatisticsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/IStatisticsService.java @@ -15,4 +15,7 @@ List> jobsByDept(DataScope dataScope,String beginTime, String endTime, String deviceType) throws ParseException; List> alarmsByDay(String beginTime,String endTime,DataScope dataScope); List> countByDayFirst(String startTime,String endTime,String areaIds); + List> alarmCountByDay(String startTime,String endTime); + Map alarmBySecondArea(String startTime,String endTime,String areaIds); + Long countByFirstArea(String startTime,String endTime,String areaIds); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java index 7290c37..bc54695 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java @@ -136,4 +136,19 @@ public List> countByDayFirst(String startTime, String endTime,String areaIds) { return statisticMapper.countByDayFirst(startTime,endTime,areaIds); } + + @Override + public Long countByFirstArea(String startTime, String endTime,String areaIds) { + return statisticMapper.countByFirstArea(startTime,endTime,areaIds); + } + + @Override + public Map alarmBySecondArea(String startTime, String endTime, String areaIds) { + return statisticMapper.alarmBySecondArea(startTime,endTime,areaIds); + } + + @Override + public List> alarmCountByDay(String startTime, String endTime) { + return statisticMapper.alarmCountByDay( startTime, endTime); + } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java index a376ba8..ae94fc5 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -23,6 +23,7 @@ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("deviceType") String deviceType, @Param("deptid") String deptid, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("keywords") String keywords, @Param("isOnline") String isOnline, @Param("areaId") String areaId); DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode); + List getAreaIds(@Param("areaId") Long areaId); String getArea(@Param("id") String id); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml index eee62f1..de868cb 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -109,7 +109,7 @@ OR wellCode LIKE ) - and area LIKE + and area IN (${areaId}) ORDER BY INSTALLDATE DESC @@ -1060,4 +1060,14 @@ SELECT * FROM sys_area + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceTypeService.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceTypeService.java index 0560bb7..b81a804 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceTypeService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceTypeService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.service.IService; import java.io.Serializable; +import java.util.List; /** *

@@ -23,4 +24,6 @@ DeviceType selectDeviceTypeByName(String typeName); int countDeviceByType(Serializable typeId); + + List getTypeList(); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java index bf94a23..68632ce 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -16,6 +16,7 @@ import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.model.*; import com.casic.missiles.modular.system.service.*; +import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.BeanPropertyBindingResult; @@ -163,9 +164,22 @@ return super.updateById(entity); } + public List getAreaPids(Long areaId) { + List areaIds = null; + if (ToolUtil.isNotEmpty(areaId)) { + areaIds = this.baseMapper.getAreaIds(areaId); + areaIds.add(areaId); + } + return areaIds; + } @Override public List selectDataScopePage(DataScope dataScope, Page page, String deviceType, String deptid, String beginTime, String endTime, String keywords, String isOnline, String areaId) { - return this.baseMapper.selectDataScopePage(dataScope, page, deviceType, deptid, beginTime, endTime, keywords, isOnline, areaId); + String areaIds =""; + if(ToolUtil.isNotEmpty(areaId)){ + List areaIdList= getAreaPids(Long.valueOf(areaId)); + areaIds= StringUtils.join(areaIdList.toArray(),","); + } + return this.baseMapper.selectDataScopePage(dataScope, page, deviceType, deptid, beginTime, endTime, keywords, isOnline, areaIds); } @Override diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceTypeServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceTypeServiceImpl.java index c71b3f6..f17b69c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceTypeServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceTypeServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.system.service.impl; +import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.casic.missiles.modular.system.dao.DeviceTypeMapper; import com.casic.missiles.modular.system.service.IDeviceTypeService; import com.casic.missiles.modular.system.model.DeviceType; @@ -7,6 +8,7 @@ import org.springframework.stereotype.Service; import java.io.Serializable; +import java.util.List; /** *

@@ -31,4 +33,10 @@ return this.baseMapper.countDeviceByType(typeId); } + @Override + public List getTypeList() { + EntityWrapper deviceTypeEntityWrapper = new EntityWrapper<>(); + deviceTypeEntityWrapper.eq("VALID","1"); + return this.baseMapper.selectList(deviceTypeEntityWrapper); + } }