wangbo 4 years ago
parent
commit
59efb2339d

+ 31 - 0
sms_water/src/main/java/com/huaxu/controller/SceneController.java

@@ -315,6 +315,37 @@ public class SceneController {
     }
 
 
+    @RequestMapping(value = "/selectAlarmLable", method = RequestMethod.GET)
+    @ResponseBody
+    @ApiOperation(value = "报警标签")
+    public AjaxMessage<List<Map<String,Object>>> selectAlarmLable(
+            @ApiParam(value = "设备或场景ID", required = true) @RequestParam(required = true) int id,
+            @ApiParam(value = "统计类型:0-按月统计,1-按年统计,2-自定义统计", required = true) @RequestParam(required = true) int type,
+            @ApiParam(value = "统计时间:月格式(yyyy-MM),年格式(yyyy),自定义统计时间开始日期", required = true) @RequestParam(required = true) String startDate,
+            @ApiParam(value = "统计时间:年月统计不用传入此参数,自定义统计截至日期", required = false) @RequestParam(required = false) String endDate) throws ParseException {
+        SceneEntity sceneEntity = new SceneEntity();
+        sceneEntity.setId(Long.parseLong(String.valueOf(id)));
+        switch (type) {
+            case 0:
+                startDate = String.format("%s-01", startDate);
+                endDate = subMonth(startDate, 1);
+                break;
+            case 1:
+                startDate = String.format("%s-01-01", startDate);
+                endDate = subYear(startDate, 1);
+                break;
+            case 2:
+                startDate = String.format("%s-01", startDate);
+                endDate = String.format("%s-01", endDate);
+                break;
+        }
+        List<Map<String,Object>> list = sceneService.selectAlarmLable(sceneEntity,startDate,endDate);
+        return new AjaxMessage<>(ResultStatus.OK,list);
+    }
+
+
+
+
 
     /**
      * 获取一个月有多少天

+ 2 - 0
sms_water/src/main/java/com/huaxu/dao/SceneMapper.java

@@ -51,5 +51,7 @@ public interface SceneMapper extends BaseMapper<SceneEntity> {
     List<Map<String,Object>> selectMonthAlarmTimes(@Param("scene") SceneEntity sceneEntity, @Param("startDate") String startDate, @Param("endDate") String endDate,@Param("sort") int sort);
 
     List<Map<String,Object>> selectAlarmDeviceIdBySenceId(@Param("id") int id);
+
+    List<Map<String,Object>> selectAlarmLable(@Param("scene") SceneEntity sceneEntity, @Param("startDate") String startDate, @Param("endDate") String endDate);
     /**删除相关方法  使用mybatis-plus集成的 **/
 }

+ 4 - 0
sms_water/src/main/java/com/huaxu/service/SceneService.java

@@ -490,6 +490,10 @@ public class SceneService extends ServiceImpl<SceneMapper, SceneEntity> {
         return result;
     }
 
+    public List<Map<String,Object>> selectAlarmLable(@Param("scene") SceneEntity sceneEntity, @Param("startDate") String startDate, @Param("endDate") String endDate){
+        return sceneMapper.selectAlarmLable(sceneEntity,startDate,endDate);
+    }
+
     public List<Map<String,Object>> selectAlarmDeviceIdBySenceId(int id){
         return sceneMapper.selectAlarmDeviceIdBySenceId(id);
     }

+ 28 - 0
sms_water/src/main/resources/mapper/SceneMapper.xml

@@ -551,6 +551,34 @@
         group by DATE_FORMAT(c.DATE_CREATE,'%Y-%m')
     </select>
 
+    <select id="selectAlarmLable" resultType="map">
+        select amount 数量, label 标签 from
+            (
+                select count(1) amount, label from
+                    (
+                        select if(d.REMARK is null,e.NAME,d.REMARK) label
+                        <if test="sort == 2">
+                            from sms_scene a INNER JOIN sms_scene_type b on a.SCENE_TYPE_ID=b.ID
+                            INNER JOIN sms_alarm_details c on c.PARENT_SCENE_ID=a.ID
+                            LEFT JOIN sms_device_parm d on d.ATTRIBUTE_ID = c.ATTRIBUTE_ID and d.STATUS=1
+                            INNER JOIN sms_device_attribute e on e.ID = c.ATTRIBUTE_ID and e.STATUS=1
+                            where a.ID = #{scene.id}
+                        </if>
+                        <if test="sort == 1">
+                            from sms_alarm_details c
+                            LEFT JOIN sms_device_parm d on d.ATTRIBUTE_ID = c.ATTRIBUTE_ID and d.STATUS=1
+                            INNER JOIN sms_device_attribute e on e.ID = c.ATTRIBUTE_ID and e.STATUS=1
+                            where c.device_id = #{scene.id}
+                        </if>
+                        and c.date_create &gt;= date_format(#{startDate,jdbcType=VARCHAR},'%Y-%m-%d')
+                        and c.date_create &lt; date_format(#{endDate,jdbcType=VARCHAR},'%Y-%m-%d')
+                    ) t1
+                group by label
+            ) t2
+        order by amount desc
+    </select>
+
+
     <select id="selectAlarmDeviceIdBySenceId" resultType="map">
         select DISTINCT c.device_id from sms_scene a INNER JOIN sms_scene_type b on a.SCENE_TYPE_ID=b.ID
         INNER JOIN sms_alarm_details c on c.PARENT_SCENE_ID=a.ID