wyyay 2 years ago
parent
commit
24b2d6bc8c

+ 12 - 12
.idea/jarRepositories.xml

@@ -2,8 +2,8 @@
 <project version="4">
   <component name="RemoteRepositoriesConfiguration">
     <remote-repository>
-      <option name="id" value="public" />
-      <option name="name" value="aliyun nexus" />
+      <option name="id" value="central" />
+      <option name="name" value="Central Repository" />
       <option name="url" value="https://maven.aliyun.com/repository/public" />
     </remote-repository>
     <remote-repository>
@@ -11,6 +11,16 @@
       <option name="name" value="Central Repository" />
       <option name="url" value="https://repo.maven.apache.org/maven2" />
     </remote-repository>
+    <remote-repository>
+      <option name="id" value="public" />
+      <option name="name" value="aliyun nexus" />
+      <option name="url" value="https://maven.aliyun.com/repository/public" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Maven Central repository" />
+      <option name="url" value="https://repo1.maven.org/maven2" />
+    </remote-repository>
     <remote-repository>
       <option name="id" value="central" />
       <option name="name" value="Central Repository" />
@@ -26,11 +36,6 @@
       <option name="name" value="Central Repository" />
       <option name="url" value="http://maven.aliyun.com/nexus/content/repositories/central/" />
     </remote-repository>
-    <remote-repository>
-      <option name="id" value="central" />
-      <option name="name" value="Maven Central repository" />
-      <option name="url" value="https://repo1.maven.org/maven2" />
-    </remote-repository>
     <remote-repository>
       <option name="id" value="custom_group" />
       <option name="name" value="Nexus Repository" />
@@ -41,10 +46,5 @@
       <option name="name" value="JBoss Community repository" />
       <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
     </remote-repository>
-    <remote-repository>
-      <option name="id" value="central" />
-      <option name="name" value="Central Repository" />
-      <option name="url" value="https://maven.aliyun.com/repository/public" />
-    </remote-repository>
   </component>
 </project>

+ 0 - 16
business-service/src/main/java/com/ozs/service/entity/vo/AlarmStatistic.java

@@ -1,16 +0,0 @@
-package com.ozs.service.entity.vo;
-
-import lombok.Data;
-
-/**统计管理页面强求参数
- * @author wyy
- * @subject
- * @creat 2023/3/6
- */
-@Data
-public class AlarmStatistic {
-    /**
-     * 报警线路
-     */
-    private String alarmLine;
-}

+ 36 - 0
business-service/src/main/java/com/ozs/service/entity/vo/AlarmStatisticResVo.java

@@ -0,0 +1,36 @@
+package com.ozs.service.entity.vo;
+
+import com.ozs.common.vo.PageVo;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 统计管理页面强求参数
+ *
+ * @author wyy
+ * @subject
+ * @creat 2023/3/6
+ */
+@Data
+public class AlarmStatisticResVo extends PageVo implements Serializable {
+    /**
+     * 线路
+     */
+    private String railwayCode;
+
+    /**
+     * 起始月份
+     */
+    private Integer startMonth;
+
+    /**
+     * 结束月份
+     */
+    private Integer endMonth;
+
+    /**
+     * 灾害类型
+     */
+    private String alarmType;
+}

+ 1 - 8
business-service/src/main/java/com/ozs/service/entity/vo/MsgAlarmVo.java

@@ -1,15 +1,8 @@
 package com.ozs.service.entity.vo;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.ozs.common.annotation.Excel;
-import com.ozs.common.core.domain.BaseEntity;
+
 import com.ozs.common.vo.PageVo;
-import io.swagger.annotations.ApiModel;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
 import lombok.Data;
-import lombok.NoArgsConstructor;
 
 import java.io.Serializable;
 import java.util.Date;

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

@@ -2,8 +2,12 @@ package com.ozs.service.mapper;
 
 import com.ozs.service.entity.MsgAlarm;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ozs.service.entity.vo.AlarmStatisticVo;
+import io.lettuce.core.dynamic.annotation.Param;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.List;
+
 /**
  * <p>
  * 报警信息表 Mapper 接口
@@ -14,5 +18,5 @@ import org.apache.ibatis.annotations.Mapper;
  */
 @Mapper
 public interface MsgAlarmMapper extends BaseMapper<MsgAlarm> {
-
+    List<AlarmStatisticVo> list(@Param("railwayCode") String railwayCode, @Param("startMonth") Integer startMonth, @Param("endMonth") Integer endMonth, @Param("alarmType") String alarmType);
 }

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

@@ -1,7 +1,11 @@
 package com.ozs.service.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ozs.service.entity.MsgAlarm;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ozs.service.entity.vo.AlarmStatisticVo;
+import io.lettuce.core.dynamic.annotation.Param;
 
 /**
  * <p>
@@ -12,5 +16,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * @since 2023-02-22
  */
 public interface MsgAlarmService extends IService<MsgAlarm> {
-
+    IPage<AlarmStatisticVo> list(String railwayCode, Integer startMonth, Integer endMonth, String alarmType, Integer pageNum, Integer pageSize);
 }

+ 34 - 0
business-service/src/main/java/com/ozs/service/service/impl/MsgAlarmServiceImpl.java

@@ -1,11 +1,21 @@
 package com.ozs.service.service.impl;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ozs.service.entity.MsgAlarm;
+import com.ozs.service.entity.vo.AlarmStatisticVo;
 import com.ozs.service.mapper.MsgAlarmMapper;
 import com.ozs.service.service.MsgAlarmService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 /**
  * <p>
  * 报警信息表 服务实现类
@@ -16,5 +26,29 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class MsgAlarmServiceImpl extends ServiceImpl<MsgAlarmMapper, MsgAlarm> implements MsgAlarmService {
+    @Autowired
+    MsgAlarmMapper msgAlarmMapper;
+
+    public static IPage listToPage(List list, int pageNum, int pageSize) {
+        List pageList = new ArrayList<>();
+        int curIdx = pageNum > 1 ? (pageNum - 1) * pageSize : 0;
+        for (int i = 0; i < pageSize && curIdx + i < list.size(); i++) {
+            pageList.add(list.get(curIdx + i));
+        }
+        IPage page = new Page<>(pageNum, pageSize);
+        page.setRecords(pageList);
+        page.setTotal(list.size());
+        return page;
+    }
+
+    @Override
+    public IPage<AlarmStatisticVo> list(String railwayCode, Integer startMonth, Integer endMonth, String alarmType, Integer pageNum, Integer pageSize) {
+        List<AlarmStatisticVo> list = msgAlarmMapper.list(railwayCode, startMonth, endMonth, alarmType);
+        HashMap<String, Object> map = new HashMap<>();
+        IPage listPage = listToPage(list, pageNum, pageSize);
+        map.put("page", listPage);
+        map.put("length", listPage);
+        return listPage;
+    }
 
 }

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

@@ -2,4 +2,47 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ozs.service.mapper.MsgAlarmMapper">
 
+
+    <select id="list" resultType="com.ozs.service.entity.vo.AlarmStatisticVo">
+        SELECT
+        a.alarm_id AS alarmId,
+        a.camera_code AS cameraCode,
+        a.alarm_time AS alarmTime,
+        a.alarm_mile AS alarmMile,
+        a.content AS content,
+        a.alarm_confidence AS alarmConfidence,
+        a.line_dir AS lineDir,
+        a.alarm_type AS alarmType,
+        a.alarm_attr AS alarmAttr,
+        a.image_url AS imageUrl,
+        a.released_by AS releasedBy,
+        a.released_time AS releasedTime,
+        a.is_lock AS isLock,
+        b.railway_code AS railwayCode,
+        b.channel AS channel,
+        b.install_mile AS installMile,
+        b.begin_mile AS beginMile,
+        b.end_mile AS endMile,
+        b.install_longitude AS installLongitude,
+        b.install_latitude AS installLatitude
+        FROM
+        msg_alarm AS a left join
+        base_camera_management AS b on a.camera_code=b.camera_code
+
+        <where>
+            <if test="railwayCode != null and railwayCode != ''">
+                and UPPER(b.railway_code) like UPPER(CONCAT('%',#{railwayCode},'%'))
+            </if>
+            <if test="startMonth != null and startMonth != ''">
+                and MONTH(a.alarm_time) >=#{startMonth}
+            </if>
+            <if test="endMonth != null and endMonth != ''">
+                and MONTH(a.alarm_time) >=#{endMonth}
+            </if>
+            <if test="alarmType != null and alarmType != ''">
+                and UPPER(a.alarm_type) like UPPER(CONCAT('%',#{alarmType},'%'))
+            </if>
+        </where>
+
+    </select>
 </mapper>

+ 163 - 0
hazard-admin/src/main/java/com/ozs/web/controller/accountmanagment/MsgAlarmController.java

@@ -7,18 +7,31 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ozs.common.core.controller.BaseController;
 import com.ozs.common.core.domain.AjaxResult;
+import com.ozs.common.core.domain.entity.SysDept;
 import com.ozs.common.utils.AppendUtils;
+import com.ozs.common.utils.StringUtils;
 import com.ozs.service.entity.BaseCameraManagement;
 import com.ozs.service.entity.BaseRailwayManagement;
 import com.ozs.service.entity.MsgAlarm;
 import com.ozs.service.entity.MsgAlarmFrequency;
+import com.ozs.service.entity.vo.AlarmStatisticResVo;
+import com.ozs.service.entity.vo.AlarmStatisticVo;
 import com.ozs.service.entity.vo.MsgAlarmResp;
 import com.ozs.service.entity.vo.MsgAlarmVo;
+import com.ozs.service.mapper.MsgAlarmMapper;
 import com.ozs.service.service.BaseCameraManagementService;
 import com.ozs.service.service.BaseRailwayManagementService;
 import com.ozs.service.service.MsgAlarmFrequencyService;
 import com.ozs.service.service.MsgAlarmService;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+import org.apache.poi.hssf.usermodel.HSSFCell;
+import org.apache.poi.hssf.usermodel.HSSFRow;
+import org.apache.poi.hssf.usermodel.HSSFSheet;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.util.CellRangeAddress;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.ObjectUtils;
@@ -31,6 +44,10 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.OutputStream;
+import java.net.URLEncoder;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -50,6 +67,8 @@ public class MsgAlarmController extends BaseController {
     @Resource
     MsgAlarmService msgAlarmService;
     @Resource
+    MsgAlarmMapper msgAlarmMapper;
+    @Resource
     MsgAlarmFrequencyService msgAlarmFrequencyService;
     @Autowired
     BaseCameraManagementService baseCameraManagementService;
@@ -208,5 +227,149 @@ public class MsgAlarmController extends BaseController {
         List<MsgAlarm> list = msgAlarmService.list(wrapper);
         return AjaxResult.success(list);
     }
+
+    /**
+     * web数据统计
+     *
+     * @param alarmStatisticResVo
+     * @return
+     */
+    @PostMapping("/dataStatistic")
+    @ApiOperation(value = "web数据统计")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(paramType = "query", name = "railwayCode", value = "线路编码"),
+            @ApiImplicitParam(paramType = "query", name = "startMonth", value = "起始月份"),
+            @ApiImplicitParam(paramType = "query", name = "endMonth", value = "结束月份"),
+            @ApiImplicitParam(paramType = "query", name = "alarmType", value = "灾害类型"),
+    })
+    public AjaxResult dataStatistic(@RequestBody AlarmStatisticResVo alarmStatisticResVo) {
+        Integer pageNum = alarmStatisticResVo.getPageNum().intValue();
+        Integer pageSize = alarmStatisticResVo.getPageSize().intValue();
+        IPage<AlarmStatisticVo> page = msgAlarmService.list(alarmStatisticResVo.getRailwayCode(), alarmStatisticResVo.getStartMonth(),
+                alarmStatisticResVo.getEndMonth(), alarmStatisticResVo.getAlarmType(), pageNum, pageSize);
+        return AjaxResult.success(page);
+    }
+
+    /**
+     * web数据统计 数据导出
+     *
+     * @param
+     * @return
+     */
+    @PostMapping("/exportDataStatistic")
+    @ApiOperation(value = "web数据统计")
+    public void exportDataStatistic(HttpServletRequest request, HttpServletResponse response, @RequestBody AlarmStatisticResVo alarmStatisticResVo) {
+        //创建Excel文件
+        Workbook wb = new HSSFWorkbook();
+        //生成sheet
+        Sheet sheet = wb.createSheet("报警数据详情");
+        //创建行
+        Row row = null;
+        //创建列
+        Cell cell = null;
+        //创建表头单元格样式
+        CellStyle cs_header = wb.createCellStyle();
+        //设置字体样式
+        Font boldFont = wb.createFont();
+        //设置文字类型
+        boldFont.setFontName("宋体");
+        //设置加粗
+        boldFont.setBold(true);
+        //设置文字大小
+        boldFont.setFontHeightInPoints((short) 16);
+        //应用设置的字体
+        cs_header.setFont(boldFont);
+        //设置边框下、左、右、上
+        cs_header.setBorderBottom(BorderStyle.THIN);
+        cs_header.setBorderLeft(BorderStyle.THIN);
+        cs_header.setBorderRight(BorderStyle.THIN);
+        cs_header.setBorderTop(BorderStyle.THIN);
+        //水平居中
+        cs_header.setAlignment(HorizontalAlignment.CENTER);
+        //垂直居中
+        cs_header.setVerticalAlignment(VerticalAlignment.CENTER);
+        //前景填充色
+        cs_header.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.index);
+        //设置前景填充样式
+        cs_header.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+        //设置标题
+        row = sheet.createRow(0);
+        //设置单元格行高
+        row.setHeightInPoints(24);
+        //设置标题
+        String[] headers = new String[]{
+                "线路", "时间", "行别", "报警类型", "里程位置", "里程起始范围km", "里程结束范围km"
+        };
+        //逐个设置标题样式
+        for (int i = 0; i < headers.length; i++) {
+            //创建单元格
+            cell = row.createCell(i);
+            //设置单元格内容
+            cell.setCellValue(headers[i]);
+            //设置单元格样式
+            cell.setCellStyle(cs_header);
+        }
+        //创建文本单元格样式
+        CellStyle cs_text = wb.createCellStyle();
+        //创建文字设置
+        Font textFont = wb.createFont();
+        //设置文字类型
+        textFont.setFontName("Consolas");
+        //设置文字大小
+        textFont.setFontHeightInPoints((short) 10);
+        //应用设置
+        cs_text.setFont(textFont);
+        //设置边框
+        cs_text.setBorderBottom(BorderStyle.THIN);
+        cs_text.setBorderLeft(BorderStyle.THIN);
+        cs_text.setBorderRight(BorderStyle.THIN);
+        cs_text.setBorderTop(BorderStyle.THIN);
+        //水平居中
+        cs_text.setAlignment(HorizontalAlignment.CENTER);
+        //垂直居中
+        cs_text.setVerticalAlignment(VerticalAlignment.CENTER);
+        //调取数据
+        List<AlarmStatisticVo> list = msgAlarmMapper.list(alarmStatisticResVo.getRailwayCode(), alarmStatisticResVo.getStartMonth(),
+                alarmStatisticResVo.getEndMonth(), alarmStatisticResVo.getAlarmType());
+        //记录总共多少列(由于接口查询出来的实体类集合,所以不好循环,使用)
+        Integer cellSum = 0;
+        //将数据写入表格
+        for (int i = 0; i < list.size(); i++) {
+            //将实体类集合转成string数组,通过‘,’,获取总共多少列
+            String[] split = list.get(i).toString().split(",");
+            cellSum = split.length;
+            //创建行,由于0行是标题,所以+1
+            row = sheet.createRow(i + 1);
+            //实体类集合不太好循环,所以逐一设置,如果是其他则可使用for循环
+            AlarmStatisticVo wpa = (AlarmStatisticVo) list.get(i);
+            //row.createCell(0).setCellValue(.get!=null?wpa.getType():'1');
+            //为每一个单元格设置样式
+            for (int j = 0; j < cellSum; j++) {
+                row.getCell(j).setCellStyle(cs_text);
+            }
+        }
+        //设置单元格宽度自适应
+        for (int i = 0; i <= cellSum; i++) {
+            sheet.autoSizeColumn((short) i, true); //自动调整列宽
+        }
+        //设置中文文件名称
+        String fileName = "POIExcel下载测试";//URLEncoder.encode("POIExcel下载测试","UTF-8");
+        //浏览器默认服务器传过去的是html,不是excel文件
+        //设置响应类型:传输内容是流,并支持中文
+        response.setContentType("application/octet-stream;charset=UTF-8");
+        //设置响应头信息header,下载时以文件附件下载
+        response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xls");
+        //输出流对象
+        OutputStream os;
+        try {
+            os = response.getOutputStream();
+            //强制刷新
+            os.flush();
+            os.close();
+            wb.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
 }