diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/GasFlowHomeController.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/GasFlowHomeController.java index 9d8e8c0..d442386 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/GasFlowHomeController.java +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/GasFlowHomeController.java @@ -54,7 +54,7 @@ } @ApiOperation("用气量超量报警统计占比") - @RequestMapping("/statistics/rate") + @RequestMapping("/alarm/rate") public Object statisticsRate(@RequestParam(required = false) String beginTime, @RequestParam(required = false) String endTime) { return gasFlowHomeService.statisticsRate(beginTime, endTime); diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/GasFlowHomeController.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/GasFlowHomeController.java index 9d8e8c0..d442386 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/GasFlowHomeController.java +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/GasFlowHomeController.java @@ -54,7 +54,7 @@ } @ApiOperation("用气量超量报警统计占比") - @RequestMapping("/statistics/rate") + @RequestMapping("/alarm/rate") public Object statisticsRate(@RequestParam(required = false) String beginTime, @RequestParam(required = false) String endTime) { return gasFlowHomeService.statisticsRate(beginTime, endTime); diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/GasFlowHomeMapper.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/GasFlowHomeMapper.java index c846a76..2c49743 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/GasFlowHomeMapper.java +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/GasFlowHomeMapper.java @@ -26,7 +26,7 @@ List> countGasByDay( @Param("deviceType") Long deviceType, @Param("IntervalDay") Integer IntervalDay); - List> totalGasByDay( @Param("deviceType") Long deviceType, @Param("IntervalDay") Integer IntervalDay); + List> totalGasByDay( @Param("deviceType") Long deviceType,@Param("totalName")String totalName, @Param("IntervalDay") Integer IntervalDay); /** * 设备用气量统计 diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/GasFlowHomeController.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/GasFlowHomeController.java index 9d8e8c0..d442386 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/GasFlowHomeController.java +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/GasFlowHomeController.java @@ -54,7 +54,7 @@ } @ApiOperation("用气量超量报警统计占比") - @RequestMapping("/statistics/rate") + @RequestMapping("/alarm/rate") public Object statisticsRate(@RequestParam(required = false) String beginTime, @RequestParam(required = false) String endTime) { return gasFlowHomeService.statisticsRate(beginTime, endTime); diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/GasFlowHomeMapper.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/GasFlowHomeMapper.java index c846a76..2c49743 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/GasFlowHomeMapper.java +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/GasFlowHomeMapper.java @@ -26,7 +26,7 @@ List> countGasByDay( @Param("deviceType") Long deviceType, @Param("IntervalDay") Integer IntervalDay); - List> totalGasByDay( @Param("deviceType") Long deviceType, @Param("IntervalDay") Integer IntervalDay); + List> totalGasByDay( @Param("deviceType") Long deviceType,@Param("totalName")String totalName, @Param("IntervalDay") Integer IntervalDay); /** * 设备用气量统计 diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataGasHomeMapper.xml b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataGasHomeMapper.xml index 72174d6..3e5092d 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataGasHomeMapper.xml +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataGasHomeMapper.xml @@ -92,7 +92,7 @@ SELECT COUNT(*) - FROM data_gasflow dg + FROM data_gas dg JOIN bus_device bd ON bd.devcode = dg.devcode WHERE bd.VALID = '1' AND bd.device_type = #{deviceType} AND UPTIME = ]]> - TO_CHAR(#{beginTime},'yyyy-MM-dd HH24:mi:ss') + str_to_date(#{beginTime},'%Y-%m-%d %H:%i') AND UPTIME - TO_CHAR(#{endTime},'yyyy-MM-dd HH24:mi:ss') + str_to_date(#{endTime},'%Y-%m-%d %H:%i') @@ -154,26 +154,25 @@ WHERE bd.VALID = '1' AND bd.device_type = #{deviceType} AND alarm_time = ]]> - TO_CHAR(#{beginTime},'yyyy-MM-dd HH24:mi:ss') + str_to_date(#{beginTime},'%Y-%m-%d %H:%i') AND alarm_time - TO_CHAR(#{endTime},'yyyy-MM-dd HH24:mi:ss') + str_to_date(#{endTime},'%Y-%m-%d %H:%i') diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/GasFlowHomeController.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/GasFlowHomeController.java index 9d8e8c0..d442386 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/GasFlowHomeController.java +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/GasFlowHomeController.java @@ -54,7 +54,7 @@ } @ApiOperation("用气量超量报警统计占比") - @RequestMapping("/statistics/rate") + @RequestMapping("/alarm/rate") public Object statisticsRate(@RequestParam(required = false) String beginTime, @RequestParam(required = false) String endTime) { return gasFlowHomeService.statisticsRate(beginTime, endTime); diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/GasFlowHomeMapper.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/GasFlowHomeMapper.java index c846a76..2c49743 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/GasFlowHomeMapper.java +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/GasFlowHomeMapper.java @@ -26,7 +26,7 @@ List> countGasByDay( @Param("deviceType") Long deviceType, @Param("IntervalDay") Integer IntervalDay); - List> totalGasByDay( @Param("deviceType") Long deviceType, @Param("IntervalDay") Integer IntervalDay); + List> totalGasByDay( @Param("deviceType") Long deviceType,@Param("totalName")String totalName, @Param("IntervalDay") Integer IntervalDay); /** * 设备用气量统计 diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataGasHomeMapper.xml b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataGasHomeMapper.xml index 72174d6..3e5092d 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataGasHomeMapper.xml +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataGasHomeMapper.xml @@ -92,7 +92,7 @@ SELECT COUNT(*) - FROM data_gasflow dg + FROM data_gas dg JOIN bus_device bd ON bd.devcode = dg.devcode WHERE bd.VALID = '1' AND bd.device_type = #{deviceType} AND UPTIME = ]]> - TO_CHAR(#{beginTime},'yyyy-MM-dd HH24:mi:ss') + str_to_date(#{beginTime},'%Y-%m-%d %H:%i') AND UPTIME - TO_CHAR(#{endTime},'yyyy-MM-dd HH24:mi:ss') + str_to_date(#{endTime},'%Y-%m-%d %H:%i') @@ -154,26 +154,25 @@ WHERE bd.VALID = '1' AND bd.device_type = #{deviceType} AND alarm_time = ]]> - TO_CHAR(#{beginTime},'yyyy-MM-dd HH24:mi:ss') + str_to_date(#{beginTime},'%Y-%m-%d %H:%i') AND alarm_time - TO_CHAR(#{endTime},'yyyy-MM-dd HH24:mi:ss') + str_to_date(#{endTime},'%Y-%m-%d %H:%i') diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/service/impl/GasFlowAlarmProvider.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/service/impl/GasFlowAlarmProvider.java index c72c913..2a2e099 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/service/impl/GasFlowAlarmProvider.java +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/service/impl/GasFlowAlarmProvider.java @@ -12,8 +12,6 @@ @Service public class GasFlowAlarmProvider { private SimpleDateFormat dayFormate = new SimpleDateFormat("yyyy-MM-dd"); - private SimpleDateFormat dayFormate2 = new SimpleDateFormat("yyyy/MM/dd"); - private SimpleDateFormat monthFormate = new SimpleDateFormat("yyyy-MM"); @Resource private GasFlowHomeMapper gasFlowHomeMapper; @@ -25,25 +23,28 @@ } private List>> alarmDayBuilder(List deviceList, List> gasDayList, Integer intervalDay) { - Map> gasDayMap = gasDayList.stream().collect( - Collectors.groupingBy(e -> e.get("typeName"), - Collectors.toMap(e -> String.valueOf(e.get("alarmTime")), e -> String.valueOf(e.get("count"))) - )); + Map>> gasDayMap = gasDayList.stream().collect( + Collectors.groupingBy(e -> e.get("deviceType"), + Collectors.toMap(e -> String.valueOf(e.get("alarmTime")), e -> e)) + ); List>> devcodeTrendList = new ArrayList<>(); Calendar beginDate = Calendar.getInstance(); beginDate.setTime(new Date()); - beginDate.add(Calendar.DAY_OF_MONTH, 0 - intervalDay+1); + beginDate.add(Calendar.DAY_OF_MONTH, 0 - intervalDay + 1); Calendar endDate = Calendar.getInstance(); endDate.setTime(new Date()); deviceList.stream().forEach( - devcode -> { + deviceType -> { List> mapList = new ArrayList<>(); - Map gasDayDeviceMap = gasDayMap.get(devcode); + Map> gasDayDeviceMap = gasDayMap.get(deviceType); while (beginDate.getTime().compareTo(endDate.getTime()) <= 0) { Map dataMap = new HashMap(); - dataMap.put("date", dayFormate2.format(beginDate.getTime())); - dataMap.put("count", !ObjectUtils.isEmpty(gasDayDeviceMap)&&gasDayDeviceMap.containsKey(dayFormate.format(beginDate.getTime())) ? gasDayDeviceMap.get(dayFormate.format(beginDate.getTime())) : "0.00"); - dataMap.put("typeTime", devcode); + dataMap.put("date", dayFormate.format(beginDate.getTime())); + Boolean flag = !ObjectUtils.isEmpty(gasDayDeviceMap) && gasDayDeviceMap.containsKey(dayFormate.format(beginDate.getTime())) && gasDayDeviceMap.containsKey(dayFormate.format(beginDate.getTime())); + dataMap.put("count", flag ? gasDayDeviceMap.get(dayFormate.format(beginDate.getTime())).get("count") : "0.00"); + dataMap.put("alarm", flag ? gasDayDeviceMap.get(dayFormate.format(beginDate.getTime())).get("alarm") : "0.00"); + dataMap.put("warning", flag ? gasDayDeviceMap.get(dayFormate.format(beginDate.getTime())).get("warning") : "0.00"); + dataMap.put("typeName", getAlarmName(String.valueOf(deviceType))); mapList.add(dataMap); beginDate.add(Calendar.DAY_OF_MONTH, 1); } @@ -53,4 +54,17 @@ ); return devcodeTrendList; } + + private String getAlarmName(String deviceType) { + switch (deviceType) { + case "15": + return "CO2用量报警"; + case "16": + return "O2用气报警"; + case "17": + return "燃气用气报警"; + default: + return "未知气体用气报警"; + } + } } diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/GasFlowHomeController.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/GasFlowHomeController.java index 9d8e8c0..d442386 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/GasFlowHomeController.java +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/GasFlowHomeController.java @@ -54,7 +54,7 @@ } @ApiOperation("用气量超量报警统计占比") - @RequestMapping("/statistics/rate") + @RequestMapping("/alarm/rate") public Object statisticsRate(@RequestParam(required = false) String beginTime, @RequestParam(required = false) String endTime) { return gasFlowHomeService.statisticsRate(beginTime, endTime); diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/GasFlowHomeMapper.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/GasFlowHomeMapper.java index c846a76..2c49743 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/GasFlowHomeMapper.java +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/GasFlowHomeMapper.java @@ -26,7 +26,7 @@ List> countGasByDay( @Param("deviceType") Long deviceType, @Param("IntervalDay") Integer IntervalDay); - List> totalGasByDay( @Param("deviceType") Long deviceType, @Param("IntervalDay") Integer IntervalDay); + List> totalGasByDay( @Param("deviceType") Long deviceType,@Param("totalName")String totalName, @Param("IntervalDay") Integer IntervalDay); /** * 设备用气量统计 diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataGasHomeMapper.xml b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataGasHomeMapper.xml index 72174d6..3e5092d 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataGasHomeMapper.xml +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataGasHomeMapper.xml @@ -92,7 +92,7 @@ SELECT COUNT(*) - FROM data_gasflow dg + FROM data_gas dg JOIN bus_device bd ON bd.devcode = dg.devcode WHERE bd.VALID = '1' AND bd.device_type = #{deviceType} AND UPTIME = ]]> - TO_CHAR(#{beginTime},'yyyy-MM-dd HH24:mi:ss') + str_to_date(#{beginTime},'%Y-%m-%d %H:%i') AND UPTIME - TO_CHAR(#{endTime},'yyyy-MM-dd HH24:mi:ss') + str_to_date(#{endTime},'%Y-%m-%d %H:%i') @@ -154,26 +154,25 @@ WHERE bd.VALID = '1' AND bd.device_type = #{deviceType} AND alarm_time = ]]> - TO_CHAR(#{beginTime},'yyyy-MM-dd HH24:mi:ss') + str_to_date(#{beginTime},'%Y-%m-%d %H:%i') AND alarm_time - TO_CHAR(#{endTime},'yyyy-MM-dd HH24:mi:ss') + str_to_date(#{endTime},'%Y-%m-%d %H:%i') diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/service/impl/GasFlowAlarmProvider.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/service/impl/GasFlowAlarmProvider.java index c72c913..2a2e099 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/service/impl/GasFlowAlarmProvider.java +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/service/impl/GasFlowAlarmProvider.java @@ -12,8 +12,6 @@ @Service public class GasFlowAlarmProvider { private SimpleDateFormat dayFormate = new SimpleDateFormat("yyyy-MM-dd"); - private SimpleDateFormat dayFormate2 = new SimpleDateFormat("yyyy/MM/dd"); - private SimpleDateFormat monthFormate = new SimpleDateFormat("yyyy-MM"); @Resource private GasFlowHomeMapper gasFlowHomeMapper; @@ -25,25 +23,28 @@ } private List>> alarmDayBuilder(List deviceList, List> gasDayList, Integer intervalDay) { - Map> gasDayMap = gasDayList.stream().collect( - Collectors.groupingBy(e -> e.get("typeName"), - Collectors.toMap(e -> String.valueOf(e.get("alarmTime")), e -> String.valueOf(e.get("count"))) - )); + Map>> gasDayMap = gasDayList.stream().collect( + Collectors.groupingBy(e -> e.get("deviceType"), + Collectors.toMap(e -> String.valueOf(e.get("alarmTime")), e -> e)) + ); List>> devcodeTrendList = new ArrayList<>(); Calendar beginDate = Calendar.getInstance(); beginDate.setTime(new Date()); - beginDate.add(Calendar.DAY_OF_MONTH, 0 - intervalDay+1); + beginDate.add(Calendar.DAY_OF_MONTH, 0 - intervalDay + 1); Calendar endDate = Calendar.getInstance(); endDate.setTime(new Date()); deviceList.stream().forEach( - devcode -> { + deviceType -> { List> mapList = new ArrayList<>(); - Map gasDayDeviceMap = gasDayMap.get(devcode); + Map> gasDayDeviceMap = gasDayMap.get(deviceType); while (beginDate.getTime().compareTo(endDate.getTime()) <= 0) { Map dataMap = new HashMap(); - dataMap.put("date", dayFormate2.format(beginDate.getTime())); - dataMap.put("count", !ObjectUtils.isEmpty(gasDayDeviceMap)&&gasDayDeviceMap.containsKey(dayFormate.format(beginDate.getTime())) ? gasDayDeviceMap.get(dayFormate.format(beginDate.getTime())) : "0.00"); - dataMap.put("typeTime", devcode); + dataMap.put("date", dayFormate.format(beginDate.getTime())); + Boolean flag = !ObjectUtils.isEmpty(gasDayDeviceMap) && gasDayDeviceMap.containsKey(dayFormate.format(beginDate.getTime())) && gasDayDeviceMap.containsKey(dayFormate.format(beginDate.getTime())); + dataMap.put("count", flag ? gasDayDeviceMap.get(dayFormate.format(beginDate.getTime())).get("count") : "0.00"); + dataMap.put("alarm", flag ? gasDayDeviceMap.get(dayFormate.format(beginDate.getTime())).get("alarm") : "0.00"); + dataMap.put("warning", flag ? gasDayDeviceMap.get(dayFormate.format(beginDate.getTime())).get("warning") : "0.00"); + dataMap.put("typeName", getAlarmName(String.valueOf(deviceType))); mapList.add(dataMap); beginDate.add(Calendar.DAY_OF_MONTH, 1); } @@ -53,4 +54,17 @@ ); return devcodeTrendList; } + + private String getAlarmName(String deviceType) { + switch (deviceType) { + case "15": + return "CO2用量报警"; + case "16": + return "O2用气报警"; + case "17": + return "燃气用气报警"; + default: + return "未知气体用气报警"; + } + } } diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/service/impl/GasFlowDataProvider.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/service/impl/GasFlowDataProvider.java index af6ff01..be040b7 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/service/impl/GasFlowDataProvider.java +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/service/impl/GasFlowDataProvider.java @@ -17,7 +17,6 @@ @Service public class GasFlowDataProvider { private SimpleDateFormat dayFormate = new SimpleDateFormat("yyyy-MM-dd"); - private SimpleDateFormat dayFormate2 = new SimpleDateFormat("yyyy/MM/dd"); private SimpleDateFormat monthFormate = new SimpleDateFormat("yyyy-MM"); @Resource private GasFlowHomeMapper gasFlowHomeMapper; @@ -36,11 +35,11 @@ /** * 1、取设备基础数据 2、取各设备近七日数据、总数据 3、构建返回结构 */ - public List>> trendBuilder(String deviceType, Integer intervalDay) { + public List>> trendBuilder(String deviceType, Integer intervalDay,String totalName) { List deviceList = gasFlowHomeMapper.getDevice(Long.valueOf(deviceType)); - deviceList.add("total"); + deviceList.add(totalName); List> gasDayList = gasFlowHomeMapper.countGasByDay(Long.valueOf(deviceType), intervalDay); - List> totalGasDayList = gasFlowHomeMapper.totalGasByDay(Long.valueOf(deviceType), intervalDay); + List> totalGasDayList = gasFlowHomeMapper.totalGasByDay(Long.valueOf(deviceType),totalName, intervalDay); gasDayList.addAll(totalGasDayList); List>> devcodeTrendList = devcodeDataBuilder(deviceList, gasDayList, intervalDay); return devcodeTrendList; @@ -73,9 +72,9 @@ Map gasDayDeviceMap = gasDayMap.get(devcode); while (beginDate.getTime().compareTo(endDate.getTime()) <= 0) { Map dataMap = new HashMap(); - dataMap.put("date", dayFormate2.format(beginDate.getTime())); + dataMap.put("date", dayFormate.format(beginDate.getTime())); dataMap.put("count", !ObjectUtils.isEmpty(gasDayDeviceMap)&&gasDayDeviceMap.containsKey(dayFormate.format(beginDate.getTime())) ? gasDayDeviceMap.get(dayFormate.format(beginDate.getTime())) : "0.00"); - dataMap.put("typeTime", devcode); + dataMap.put("typeName", devcode); mapList.add(dataMap); beginDate.add(Calendar.DAY_OF_MONTH, 1); } diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/GasFlowHomeController.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/GasFlowHomeController.java index 9d8e8c0..d442386 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/GasFlowHomeController.java +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/GasFlowHomeController.java @@ -54,7 +54,7 @@ } @ApiOperation("用气量超量报警统计占比") - @RequestMapping("/statistics/rate") + @RequestMapping("/alarm/rate") public Object statisticsRate(@RequestParam(required = false) String beginTime, @RequestParam(required = false) String endTime) { return gasFlowHomeService.statisticsRate(beginTime, endTime); diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/GasFlowHomeMapper.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/GasFlowHomeMapper.java index c846a76..2c49743 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/GasFlowHomeMapper.java +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/GasFlowHomeMapper.java @@ -26,7 +26,7 @@ List> countGasByDay( @Param("deviceType") Long deviceType, @Param("IntervalDay") Integer IntervalDay); - List> totalGasByDay( @Param("deviceType") Long deviceType, @Param("IntervalDay") Integer IntervalDay); + List> totalGasByDay( @Param("deviceType") Long deviceType,@Param("totalName")String totalName, @Param("IntervalDay") Integer IntervalDay); /** * 设备用气量统计 diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataGasHomeMapper.xml b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataGasHomeMapper.xml index 72174d6..3e5092d 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataGasHomeMapper.xml +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataGasHomeMapper.xml @@ -92,7 +92,7 @@ SELECT COUNT(*) - FROM data_gasflow dg + FROM data_gas dg JOIN bus_device bd ON bd.devcode = dg.devcode WHERE bd.VALID = '1' AND bd.device_type = #{deviceType} AND UPTIME = ]]> - TO_CHAR(#{beginTime},'yyyy-MM-dd HH24:mi:ss') + str_to_date(#{beginTime},'%Y-%m-%d %H:%i') AND UPTIME - TO_CHAR(#{endTime},'yyyy-MM-dd HH24:mi:ss') + str_to_date(#{endTime},'%Y-%m-%d %H:%i') @@ -154,26 +154,25 @@ WHERE bd.VALID = '1' AND bd.device_type = #{deviceType} AND alarm_time = ]]> - TO_CHAR(#{beginTime},'yyyy-MM-dd HH24:mi:ss') + str_to_date(#{beginTime},'%Y-%m-%d %H:%i') AND alarm_time - TO_CHAR(#{endTime},'yyyy-MM-dd HH24:mi:ss') + str_to_date(#{endTime},'%Y-%m-%d %H:%i') diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/service/impl/GasFlowAlarmProvider.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/service/impl/GasFlowAlarmProvider.java index c72c913..2a2e099 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/service/impl/GasFlowAlarmProvider.java +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/service/impl/GasFlowAlarmProvider.java @@ -12,8 +12,6 @@ @Service public class GasFlowAlarmProvider { private SimpleDateFormat dayFormate = new SimpleDateFormat("yyyy-MM-dd"); - private SimpleDateFormat dayFormate2 = new SimpleDateFormat("yyyy/MM/dd"); - private SimpleDateFormat monthFormate = new SimpleDateFormat("yyyy-MM"); @Resource private GasFlowHomeMapper gasFlowHomeMapper; @@ -25,25 +23,28 @@ } private List>> alarmDayBuilder(List deviceList, List> gasDayList, Integer intervalDay) { - Map> gasDayMap = gasDayList.stream().collect( - Collectors.groupingBy(e -> e.get("typeName"), - Collectors.toMap(e -> String.valueOf(e.get("alarmTime")), e -> String.valueOf(e.get("count"))) - )); + Map>> gasDayMap = gasDayList.stream().collect( + Collectors.groupingBy(e -> e.get("deviceType"), + Collectors.toMap(e -> String.valueOf(e.get("alarmTime")), e -> e)) + ); List>> devcodeTrendList = new ArrayList<>(); Calendar beginDate = Calendar.getInstance(); beginDate.setTime(new Date()); - beginDate.add(Calendar.DAY_OF_MONTH, 0 - intervalDay+1); + beginDate.add(Calendar.DAY_OF_MONTH, 0 - intervalDay + 1); Calendar endDate = Calendar.getInstance(); endDate.setTime(new Date()); deviceList.stream().forEach( - devcode -> { + deviceType -> { List> mapList = new ArrayList<>(); - Map gasDayDeviceMap = gasDayMap.get(devcode); + Map> gasDayDeviceMap = gasDayMap.get(deviceType); while (beginDate.getTime().compareTo(endDate.getTime()) <= 0) { Map dataMap = new HashMap(); - dataMap.put("date", dayFormate2.format(beginDate.getTime())); - dataMap.put("count", !ObjectUtils.isEmpty(gasDayDeviceMap)&&gasDayDeviceMap.containsKey(dayFormate.format(beginDate.getTime())) ? gasDayDeviceMap.get(dayFormate.format(beginDate.getTime())) : "0.00"); - dataMap.put("typeTime", devcode); + dataMap.put("date", dayFormate.format(beginDate.getTime())); + Boolean flag = !ObjectUtils.isEmpty(gasDayDeviceMap) && gasDayDeviceMap.containsKey(dayFormate.format(beginDate.getTime())) && gasDayDeviceMap.containsKey(dayFormate.format(beginDate.getTime())); + dataMap.put("count", flag ? gasDayDeviceMap.get(dayFormate.format(beginDate.getTime())).get("count") : "0.00"); + dataMap.put("alarm", flag ? gasDayDeviceMap.get(dayFormate.format(beginDate.getTime())).get("alarm") : "0.00"); + dataMap.put("warning", flag ? gasDayDeviceMap.get(dayFormate.format(beginDate.getTime())).get("warning") : "0.00"); + dataMap.put("typeName", getAlarmName(String.valueOf(deviceType))); mapList.add(dataMap); beginDate.add(Calendar.DAY_OF_MONTH, 1); } @@ -53,4 +54,17 @@ ); return devcodeTrendList; } + + private String getAlarmName(String deviceType) { + switch (deviceType) { + case "15": + return "CO2用量报警"; + case "16": + return "O2用气报警"; + case "17": + return "燃气用气报警"; + default: + return "未知气体用气报警"; + } + } } diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/service/impl/GasFlowDataProvider.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/service/impl/GasFlowDataProvider.java index af6ff01..be040b7 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/service/impl/GasFlowDataProvider.java +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/service/impl/GasFlowDataProvider.java @@ -17,7 +17,6 @@ @Service public class GasFlowDataProvider { private SimpleDateFormat dayFormate = new SimpleDateFormat("yyyy-MM-dd"); - private SimpleDateFormat dayFormate2 = new SimpleDateFormat("yyyy/MM/dd"); private SimpleDateFormat monthFormate = new SimpleDateFormat("yyyy-MM"); @Resource private GasFlowHomeMapper gasFlowHomeMapper; @@ -36,11 +35,11 @@ /** * 1、取设备基础数据 2、取各设备近七日数据、总数据 3、构建返回结构 */ - public List>> trendBuilder(String deviceType, Integer intervalDay) { + public List>> trendBuilder(String deviceType, Integer intervalDay,String totalName) { List deviceList = gasFlowHomeMapper.getDevice(Long.valueOf(deviceType)); - deviceList.add("total"); + deviceList.add(totalName); List> gasDayList = gasFlowHomeMapper.countGasByDay(Long.valueOf(deviceType), intervalDay); - List> totalGasDayList = gasFlowHomeMapper.totalGasByDay(Long.valueOf(deviceType), intervalDay); + List> totalGasDayList = gasFlowHomeMapper.totalGasByDay(Long.valueOf(deviceType),totalName, intervalDay); gasDayList.addAll(totalGasDayList); List>> devcodeTrendList = devcodeDataBuilder(deviceList, gasDayList, intervalDay); return devcodeTrendList; @@ -73,9 +72,9 @@ Map gasDayDeviceMap = gasDayMap.get(devcode); while (beginDate.getTime().compareTo(endDate.getTime()) <= 0) { Map dataMap = new HashMap(); - dataMap.put("date", dayFormate2.format(beginDate.getTime())); + dataMap.put("date", dayFormate.format(beginDate.getTime())); dataMap.put("count", !ObjectUtils.isEmpty(gasDayDeviceMap)&&gasDayDeviceMap.containsKey(dayFormate.format(beginDate.getTime())) ? gasDayDeviceMap.get(dayFormate.format(beginDate.getTime())) : "0.00"); - dataMap.put("typeTime", devcode); + dataMap.put("typeName", devcode); mapList.add(dataMap); beginDate.add(Calendar.DAY_OF_MONTH, 1); } diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/service/impl/GasFlowHomeServiceImpl.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/service/impl/GasFlowHomeServiceImpl.java index b773de8..2da390a 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/service/impl/GasFlowHomeServiceImpl.java +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/service/impl/GasFlowHomeServiceImpl.java @@ -5,8 +5,10 @@ import com.casic.missiles.modular.system.service.GasFlowHomeService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; import java.util.HashMap; import java.util.List; @@ -46,7 +48,7 @@ ResponseData responseData = new ResponseData(); if (CheckType(deviceType)) { try { - List>> dataMap = gasFlowDataProvider.trendBuilder(deviceType, intervalDay); + List>> dataMap = gasFlowDataProvider.trendBuilder(deviceType, intervalDay, getTotalName(deviceType)); responseData.setCode(ResponseData.DEFAULT_SUCCESS_CODE); responseData.setMessage("查询成功"); responseData.setData(dataMap); @@ -75,7 +77,15 @@ ResponseData responseData = new ResponseData(); try { List> dataList = gasFlowHomeMapper.gasUsedByDevice(beginTime, endTime); - Map dataMap = dataList.stream().collect( + + Map dataMap = dataList.stream().map( + data -> { + if (ObjectUtils.isEmpty(data.get("count"))) { + data.put("count", "0.0"); + } + return data; + } + ).collect( Collectors.toMap(e -> String.valueOf(e.get("devcode")), e -> String.valueOf(e.get("count"))) ); responseData.setCode(ResponseData.DEFAULT_SUCCESS_CODE); @@ -109,25 +119,25 @@ public Object leakRate(String deviceType, String beginTime, String endTime) { ResponseData responseData = new ResponseData(); - if (CheckType(deviceType)) { - try { - Map resultMap = new HashMap<>(); - Integer total = gasFlowHomeMapper.countRecData(beginTime, endTime, Long.valueOf(deviceType)); - Integer leakNum = gasFlowHomeMapper.countRecAlarm(beginTime, endTime, Long.valueOf(deviceType)); - resultMap.put("leakage", leakNum); - resultMap.put("normal", total - leakNum); - responseData.setCode(ResponseData.DEFAULT_SUCCESS_CODE); - responseData.setMessage("查询成功"); - responseData.setData(resultMap); - responseData.setSuccess(true); - } catch (DataAccessException dae) { - responseData.setCode(ResponseData.DEFAULT_ERROR_CODE); - responseData.setMessage(ResponseData.DEFAULT_ERROR_MESSAGE); - log.error("主题:气体用量查询异常,异常信息{}", dae.getMessage()); - } - } else { - responseData.setCode(ResponseData.DEFAULT_ERROR_CODE); + if (!deviceType.equals("4")) { responseData.setMessage("设备类型不正确"); + responseData.setCode(500); + return responseData; + } + try { + Map resultMap = new HashMap<>(); + Integer total = gasFlowHomeMapper.countRecData(beginTime, endTime, Long.valueOf(deviceType)); + Integer leakNum = gasFlowHomeMapper.countRecAlarm(beginTime, endTime, Long.valueOf(deviceType)); + resultMap.put("leakage", leakNum); + resultMap.put("normal", total - leakNum); + responseData.setCode(ResponseData.DEFAULT_SUCCESS_CODE); + responseData.setMessage("查询成功"); + responseData.setData(resultMap); + responseData.setSuccess(true); + } catch (DataAccessException dae) { + responseData.setCode(ResponseData.DEFAULT_ERROR_CODE); + responseData.setMessage(ResponseData.DEFAULT_ERROR_MESSAGE); + log.error("主题:气体用量查询异常,异常信息{}", dae.getMessage()); } return responseData; } @@ -136,6 +146,12 @@ ResponseData responseData = new ResponseData(); try { List> resultList = gasFlowHomeMapper.statisticsRate(beginTime, endTime); + resultList.forEach( + result -> { + String deviceName = String.valueOf(result.get("deviceName")); + result.put("deviceName", getAlarmName(deviceName)); + } + ); responseData.setCode(ResponseData.DEFAULT_SUCCESS_CODE); responseData.setMessage("查询成功"); responseData.setData(resultList); @@ -152,4 +168,29 @@ return "15,16,17".contains(deviceType); } + private String getTotalName(String deviceType) { + switch (deviceType) { + case "15": + return "CO2用气总量"; + case "16": + return "O2用气总量"; + case "17": + return "燃气用气总量"; + default: + return "未知气体用气总量"; + } + } + + private String getAlarmName(String deviceType) { + switch (deviceType) { + case "15": + return "CO2用量报警"; + case "16": + return "O2用气报警"; + case "17": + return "燃气用气报警"; + default: + return "未知气体用气报警"; + } + } }