Kaynağa Gözat

修改数据统计

wyyay 1 yıl önce
ebeveyn
işleme
2f8bc25112

+ 46 - 0
business-service/src/main/java/com/ozs/service/entity/vo/AlarmStatisticDayDto.java

@@ -0,0 +1,46 @@
+package com.ozs.service.entity.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ozs.common.annotation.Excel;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author wyy
+ * @subject
+ * @creat 2023/4/4
+ */
+@Data
+public class AlarmStatisticDayDto {
+
+    /**
+     * 报警类型编码
+     */
+    private String alarmType;
+
+    /**
+     * 报警类型
+     */
+    //@Excel(name = "报警类型")
+    private String alarmTypeValue;
+
+    /**
+     * 报警日期
+     */
+    @Excel(name = "报警日期")
+    private Integer daysta;
+
+    /**
+     * 报警次数
+     */
+    @Excel(name = "报警次数")
+    private Integer frequency;
+
+    /**
+     * 报警时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    //@Excel(name = "报警时间")
+    private Date alarmTime;
+}

+ 4 - 4
business-service/src/main/java/com/ozs/service/mapper/MsgAlarmMapper.java

@@ -3,11 +3,8 @@ package com.ozs.service.mapper;
 import com.ozs.common.core.domain.entity.SysUser;
 import com.ozs.service.entity.MsgAlarm;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.ozs.service.entity.vo.AlarmStatisticDto;
-import com.ozs.service.entity.vo.AlarmStatisticMonthDto;
-import com.ozs.service.entity.vo.AlarmStatisticVo;
+import com.ozs.service.entity.vo.*;
 
-import com.ozs.service.entity.vo.MsgAlarmVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -36,6 +33,9 @@ public interface MsgAlarmMapper extends BaseMapper<MsgAlarm> {
     //报警月统计数据导出数据集合
     List<AlarmStatisticMonthDto> listDtoMonth(@Param("railwayCode") String railwayCode, @Param("currentYear") Integer currentYear, @Param("currentMonth") Integer currentMonth, @Param("alarmType") String alarmType, @Param("userId") String userId);
 
+    //报警月统计数据导出数据集合(天)
+    List<AlarmStatisticDayDto> listDtoDay(@Param("railwayCode") String railwayCode, @Param("currentYear") Integer currentYear, @Param("currentMonth") Integer currentMonth, @Param("alarmType") String alarmType, @Param("userId") String userId);
+
     Integer selectCameraCode(@Param("cameraCode") String cameraCode);
 
     MsgAlarm selectByCameraCode(@Param("cameraCode") String cameraCode);

+ 8 - 5
business-service/src/main/java/com/ozs/service/service/MsgAlarmService.java

@@ -3,11 +3,7 @@ package com.ozs.service.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.ozs.service.entity.MsgAlarm;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.ozs.service.entity.vo.AlarmStatisticDto;
-import com.ozs.service.entity.vo.AlarmStatisticMonthDto;
-import com.ozs.service.entity.vo.AlarmStatisticResVo;
-import com.ozs.service.entity.vo.AlarmStatisticVo;
-import com.ozs.service.entity.vo.MsgAlarmVo;
+import com.ozs.service.entity.vo.*;
 
 import javax.servlet.http.HttpServletResponse;
 import java.util.List;
@@ -28,14 +24,21 @@ public interface MsgAlarmService extends IService<MsgAlarm> {
     //web数据统计 报警月统计数据
     List<AlarmStatisticMonthDto> getCount(String railwayCode, Integer currentYear, Integer currentMonth, String alarmType, String userId);
 
+    //web数据统计 报警月统计数据(天)
+    List<AlarmStatisticDayDto> getDayCount(String railwayCode, Integer currentYear, Integer currentMonth, String alarmType, String userId);
+
     //报警数据详情导出数据集合
     List<AlarmStatisticDto> exportExcel(AlarmStatisticResVo alarmStatisticResVo, String userId);
 
+    //报警数据详情导出数据集合(天)
+    List<AlarmStatisticDayDto> exportDayExcel(AlarmStatisticResVo alarmStatisticResVo, String userId);
+
     //web数据统计 报警月统计数据导出
     List<AlarmStatisticMonthDto> exportExcelMonth(AlarmStatisticResVo alarmStatisticResVo, String userId) throws Exception;
 
     /**
      * 通过相机编码查询未解除预警信息
+     *
      * @param cameraCode
      * @return
      */

+ 14 - 5
business-service/src/main/java/com/ozs/service/service/impl/MsgAlarmServiceImpl.java

@@ -6,11 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.pagehelper.PageHelper;
 import com.ozs.common.utils.AppendUtils;
 import com.ozs.service.entity.MsgAlarm;
-import com.ozs.service.entity.vo.AlarmStatisticDto;
-import com.ozs.service.entity.vo.AlarmStatisticMonthDto;
-import com.ozs.service.entity.vo.AlarmStatisticResVo;
-import com.ozs.service.entity.vo.AlarmStatisticVo;
-import com.ozs.service.entity.vo.MsgAlarmVo;
+import com.ozs.service.entity.vo.*;
 import com.ozs.service.mapper.BaseCameraManagementMapper;
 import com.ozs.service.mapper.MsgAlarmMapper;
 import com.ozs.service.service.MsgAlarmService;
@@ -68,6 +64,12 @@ public class MsgAlarmServiceImpl extends ServiceImpl<MsgAlarmMapper, MsgAlarm> i
         return list;
     }
 
+    @Override
+    public List<AlarmStatisticDayDto> getDayCount(String railwayCode, Integer currentYear, Integer currentMonth, String alarmType, String userId) {
+        List<AlarmStatisticDayDto> list = msgAlarmMapper.listDtoDay(railwayCode, currentYear, currentMonth, alarmType, userId);
+        return list;
+    }
+
     @Override
     public List<AlarmStatisticDto> exportExcel(AlarmStatisticResVo alarmStatisticResVo, String userId) {
         List<AlarmStatisticDto> listDto = msgAlarmMapper.listDto(alarmStatisticResVo.getRailwayCode(), alarmStatisticResVo.getCurrentYear(),
@@ -75,6 +77,13 @@ public class MsgAlarmServiceImpl extends ServiceImpl<MsgAlarmMapper, MsgAlarm> i
         return listDto;
     }
 
+    @Override
+    public List<AlarmStatisticDayDto> exportDayExcel(AlarmStatisticResVo alarmStatisticResVo, String userId) {
+        List<AlarmStatisticDayDto> listDto = msgAlarmMapper.listDtoDay(alarmStatisticResVo.getRailwayCode(), alarmStatisticResVo.getCurrentYear(),
+                alarmStatisticResVo.getCurrentMonth(), alarmStatisticResVo.getAlarmType(), userId);
+        return listDto;
+    }
+
     @Override
     public List<AlarmStatisticMonthDto> exportExcelMonth(AlarmStatisticResVo alarmStatisticResVo, String userId) throws Exception {
         List<AlarmStatisticMonthDto> listDto = msgAlarmMapper.listDtoMonth(alarmStatisticResVo.getRailwayCode(), alarmStatisticResVo.getCurrentYear(),

+ 39 - 0
business-service/src/main/resources/mapper/service/MsgAlarmMapper.xml

@@ -174,7 +174,46 @@
         </where>
         group by a.alarm_id) AS p group by p.monthsta
     </select>
+    <resultMap id="AlarmStatisticDayDtoResult" type="com.ozs.service.entity.vo.AlarmStatisticDayDto">
+        <id column="id" property="id"/>
+        <result column="daysta" property="daysta"/>
+        <result column="frequency" property="frequency"/>
+        <result column="alarm_type" property="alarmType"/>
+    </resultMap>
+    <select id="listDtoDay" resultMap="AlarmStatisticDayDtoResult">
+        SELECT p.daysta as daysta,sum(p.fre) as frequency
+        from
+        (SELECT
+        DAY(a.alarm_time) as daysta,
+        count(DISTINCT a.alarm_id) as fre
+        FROM
+        msg_alarm AS a inner join
+        base_camera_management AS b on a.camera_code=b.camera_code left join
+        msg_web_push m on a.alarm_id = m.alarm_id left join
+        base_railway_management c on b.railway_code=c.railway_code
 
+        <where>
+            <if test="railwayCode != null and railwayCode != ''">
+                and UPPER(b.railway_code) like UPPER(CONCAT('%',#{railwayCode},'%'))
+            </if>
+            <if test="currentYear != null and currentYear != 0">
+                and YEAR(a.alarm_time) like UPPER(CONCAT('%',#{currentYear},'%'))
+            </if>
+            <if test="currentYear == null or currentYear == ''">
+                and YEAR(a.alarm_time) = YEAR(SYSDATE())
+            </if>
+            <if test="currentMonth != null and currentMonth != 0">
+                and MONTH(a.alarm_time) =#{currentMonth}
+            </if>
+            <if test="alarmType != null and alarmType != ''">
+                and UPPER(a.alarm_type) like UPPER(CONCAT('%',#{alarmType},'%'))
+            </if>
+            <if test="userId != null and userId != ''">
+                and UPPER(m.receive_by) like UPPER(CONCAT('%',#{userId},'%'))
+            </if>
+        </where>
+        group by a.alarm_id) AS p group by p.daysta
+    </select>
     <select id="selectCameraCode" parameterType="java.lang.String" resultType="java.lang.Integer">
         select is_lock from msg_alarm where camera_code = #{cameraCode} ORDER BY alarm_time DESC LIMIT 1
     </select>

+ 123 - 30
hazard-admin/src/main/java/com/ozs/web/controller/accountmanagment/MsgAlarmController.java

@@ -388,34 +388,82 @@ public class MsgAlarmController extends BaseController {
         if (user.isAdmin(user.getId())) {
             userId = "";
         }
-        List<AlarmStatisticMonthDto> list = msgAlarmService.getCount(alarmStatisticResVo.getRailwayCode(), alarmStatisticResVo.getCurrentYear(),
-                alarmStatisticResVo.getCurrentMonth(), alarmStatisticResVo.getAlarmType(), userId);
-        List<Integer> numbs = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12));
-        List<Integer> list1 = new ArrayList<>();
-        if (!CollectionUtils.isEmpty(list) && Objects.nonNull(list.get(0))) {
-            list.forEach(l -> {
-                list1.add(l.getMonthsta());
-            });
-        }
-        AlarmStatisticMonthDto dto;
-        for (int i = 0; i < numbs.size(); i++) {
-            if (!list1.contains(numbs.get(i))) {
-                dto = new AlarmStatisticMonthDto();
-                dto.setMonthsta(numbs.get(i));
-                dto.setFrequency(0);
-                list.add(dto);
+        List<Integer> numbs = new ArrayList<>();
+        Integer listSize;
+        List<AlarmStatisticMonthDto> list = null;
+        List<AlarmStatisticDayDto> listDay = null;
+        if (ObjectUtils.isEmpty(alarmStatisticResVo.getCurrentMonth())) {
+            list = msgAlarmService.getCount(alarmStatisticResVo.getRailwayCode(), alarmStatisticResVo.getCurrentYear(),
+                    alarmStatisticResVo.getCurrentMonth(), alarmStatisticResVo.getAlarmType(), userId);
+            listSize = 12;
+        } else {
+            if (alarmStatisticResVo.getCurrentMonth().equals(2)) {//2
+                listSize = 28;
+            } else if (alarmStatisticResVo.getCurrentMonth().equals(4) || alarmStatisticResVo.getCurrentMonth().equals(6) ||
+                    alarmStatisticResVo.getCurrentMonth().equals(9) || alarmStatisticResVo.getCurrentMonth().equals(11)) {//4,6,9,11
+                listSize = 30;
+            } else {//1,3,5,7,8,10,12
+                listSize = 31;
             }
+            listDay = msgAlarmService.getDayCount(alarmStatisticResVo.getRailwayCode(), alarmStatisticResVo.getCurrentYear(),
+                    alarmStatisticResVo.getCurrentMonth(), alarmStatisticResVo.getAlarmType(), userId);
+        }
+        for (int i = 1; i <= listSize; i++) {
+            numbs.add(i);
         }
-        if (!CollectionUtils.isEmpty(list) && Objects.nonNull(list.get(0))) {
-            Collections.sort(list, new Comparator<AlarmStatisticMonthDto>() {
-                @Override
-                public int compare(AlarmStatisticMonthDto o1, AlarmStatisticMonthDto o2) {
 
-                    return o1.getMonthsta().compareTo(o2.getMonthsta());
+        List<Integer> list1 = new ArrayList<>();
+        if (ObjectUtils.isEmpty(alarmStatisticResVo.getCurrentMonth())) {
+            if (!CollectionUtils.isEmpty(list) && Objects.nonNull(list.get(0))) {
+                list.forEach(l -> {
+                    list1.add(l.getMonthsta());
+                });
+            }
+            AlarmStatisticMonthDto dto;
+            for (int i = 0; i < numbs.size(); i++) {
+                if (!list1.contains(numbs.get(i))) {
+                    dto = new AlarmStatisticMonthDto();
+                    dto.setMonthsta(numbs.get(i));
+                    dto.setFrequency(0);
+                    list.add(dto);
+                }
+            }
+            if (!CollectionUtils.isEmpty(list) && Objects.nonNull(list.get(0))) {
+                Collections.sort(list, new Comparator<AlarmStatisticMonthDto>() {
+                    @Override
+                    public int compare(AlarmStatisticMonthDto o1, AlarmStatisticMonthDto o2) {
+
+                        return o1.getMonthsta().compareTo(o2.getMonthsta());
+                    }
+                });
+            }
+            return AjaxResult.success(list);
+        } else {
+            if (!CollectionUtils.isEmpty(listDay) && Objects.nonNull(listDay.get(0))) {
+                listDay.forEach(l -> {
+                    list1.add(l.getDaysta());
+                });
+            }
+            AlarmStatisticDayDto dto;
+            for (int i = 0; i < numbs.size(); i++) {
+                if (!list1.contains(numbs.get(i))) {
+                    dto = new AlarmStatisticDayDto();
+                    dto.setDaysta(numbs.get(i));
+                    dto.setFrequency(0);
+                    listDay.add(dto);
                 }
-            });
+            }
+            if (!CollectionUtils.isEmpty(listDay) && Objects.nonNull(listDay.get(0))) {
+                Collections.sort(listDay, new Comparator<AlarmStatisticDayDto>() {
+                    @Override
+                    public int compare(AlarmStatisticDayDto o1, AlarmStatisticDayDto o2) {
+
+                        return o1.getDaysta().compareTo(o2.getDaysta());
+                    }
+                });
+            }
+            return AjaxResult.success(listDay);
         }
-        return AjaxResult.success(list);
     }
 
 
@@ -484,10 +532,32 @@ public class MsgAlarmController extends BaseController {
         if (user.isAdmin(user.getId())) {
             userId = "";
         }
-        try {
-            List<AlarmStatisticMonthDto> list = msgAlarmService.exportExcelMonth(alarmStatisticResVo, userId);
-            List<Integer> numbs = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12));
-            List<Integer> list1 = new ArrayList<>();
+        List<Integer> numbs = new ArrayList<>();
+        Integer listSize;
+        List<AlarmStatisticMonthDto> list = null;
+        List<AlarmStatisticDayDto> listDay = null;
+        if (ObjectUtils.isEmpty(alarmStatisticResVo.getCurrentMonth())) {
+            list = msgAlarmService.getCount(alarmStatisticResVo.getRailwayCode(), alarmStatisticResVo.getCurrentYear(),
+                    alarmStatisticResVo.getCurrentMonth(), alarmStatisticResVo.getAlarmType(), userId);
+            listSize = 12;
+        } else {
+            if (alarmStatisticResVo.getCurrentMonth().equals(2)) {//2
+                listSize = 28;
+            } else if (alarmStatisticResVo.getCurrentMonth().equals(4) || alarmStatisticResVo.getCurrentMonth().equals(6) ||
+                    alarmStatisticResVo.getCurrentMonth().equals(9) || alarmStatisticResVo.getCurrentMonth().equals(11)) {//4,6,9,11
+                listSize = 30;
+            } else {//1,3,5,7,8,10,12
+                listSize = 31;
+            }
+            listDay = msgAlarmService.getDayCount(alarmStatisticResVo.getRailwayCode(), alarmStatisticResVo.getCurrentYear(),
+                    alarmStatisticResVo.getCurrentMonth(), alarmStatisticResVo.getAlarmType(), userId);
+        }
+        for (int i = 1; i <= listSize; i++) {
+            numbs.add(i);
+        }
+
+        List<Integer> list1 = new ArrayList<>();
+        if (ObjectUtils.isEmpty(alarmStatisticResVo.getCurrentMonth())) {
             if (!CollectionUtils.isEmpty(list) && Objects.nonNull(list.get(0))) {
                 list.forEach(l -> {
                     list1.add(l.getMonthsta());
@@ -513,9 +583,32 @@ public class MsgAlarmController extends BaseController {
             }
             ExcelUtil<AlarmStatisticMonthDto> util = new ExcelUtil<>(AlarmStatisticMonthDto.class);
             util.exportExcel(response, list, "报警月统计数据");
-        } catch (Exception e) {
-            e.printStackTrace();
-            log.info(e.getMessage());
+        } else {
+            if (!CollectionUtils.isEmpty(listDay) && Objects.nonNull(listDay.get(0))) {
+                listDay.forEach(l -> {
+                    list1.add(l.getDaysta());
+                });
+            }
+            AlarmStatisticDayDto dto;
+            for (int i = 0; i < numbs.size(); i++) {
+                if (!list1.contains(numbs.get(i))) {
+                    dto = new AlarmStatisticDayDto();
+                    dto.setDaysta(numbs.get(i));
+                    dto.setFrequency(0);
+                    listDay.add(dto);
+                }
+            }
+            if (!CollectionUtils.isEmpty(listDay) && Objects.nonNull(listDay.get(0))) {
+                Collections.sort(listDay, new Comparator<AlarmStatisticDayDto>() {
+                    @Override
+                    public int compare(AlarmStatisticDayDto o1, AlarmStatisticDayDto o2) {
+
+                        return o1.getDaysta().compareTo(o2.getDaysta());
+                    }
+                });
+            }
+            ExcelUtil<AlarmStatisticDayDto> util = new ExcelUtil<>(AlarmStatisticDayDto.class);
+            util.exportExcel(response, listDay, "报警月统计数据");
         }
     }
 }