diff --git a/pom.xml b/pom.xml index c316737..0850eca 100644 --- a/pom.xml +++ b/pom.xml @@ -32,6 +32,7 @@ 1.4 0.9.0 3.2.0 + 3.2.1 @@ -115,7 +116,12 @@ commons-fileupload ${commons.fileupload.version} - + + + com.alibaba + easyexcel + ${easyexcel.version} + @@ -140,12 +146,12 @@ - - - - - - + + + + + + diff --git a/xymanager_admin/src/main/java/com/shxy/xymanager_admin/controller/TerminalAlarmController.java b/xymanager_admin/src/main/java/com/shxy/xymanager_admin/controller/TerminalAlarmController.java index 97113e8..e0e3c74 100644 --- a/xymanager_admin/src/main/java/com/shxy/xymanager_admin/controller/TerminalAlarmController.java +++ b/xymanager_admin/src/main/java/com/shxy/xymanager_admin/controller/TerminalAlarmController.java @@ -101,7 +101,7 @@ public class TerminalAlarmController extends BaseController { @ApiOperation(value = "当日报警统计", notes = "当日报警统计", httpMethod = "POST") @ApiResponses({@ApiResponse(code = 200, message = "请求成功"), @ApiResponse(code = 400, message = "请求参数没填好"), @ApiResponse(code = 404, message = "请求路径没有或页面跳转路径不对")}) @RequestMapping("/getTodayAlarmStatistics") - @Log(title = "七天报警统计", type = "查询") + @Log(title = "当日报警统计", type = "查询") public ResponseReult getTodayAlarmStatistics(@Validated WeekAlarmVo vo) { ServiceBody serviceBody = terminalAlarmService.getTodayAlarmStatistics(vo); if (serviceBody.getCode() == ServiceStatus.SUCCESS) { diff --git a/xymanager_admin/src/main/java/com/shxy/xymanager_admin/controller/TerminalController.java b/xymanager_admin/src/main/java/com/shxy/xymanager_admin/controller/TerminalController.java index dc1babf..9e867a0 100644 --- a/xymanager_admin/src/main/java/com/shxy/xymanager_admin/controller/TerminalController.java +++ b/xymanager_admin/src/main/java/com/shxy/xymanager_admin/controller/TerminalController.java @@ -5,7 +5,9 @@ import com.shxy.xymanager_common.base.BaseController; import com.shxy.xymanager_common.base.ResponseReult; import com.shxy.xymanager_common.bean.ServiceBody; import com.shxy.xymanager_common.bean.ServiceStatus; +import com.shxy.xymanager_common.excelbean.TerminalListExcelModel; import com.shxy.xymanager_common.model.*; +import com.shxy.xymanager_common.util.EasyExcelUtil; import com.shxy.xymanager_common.util.xinyin.HeaderUtil; import com.shxy.xymanager_common.vo.*; import com.shxy.xymanager_service.service.TerminalService; @@ -19,6 +21,10 @@ import org.springframework.http.HttpHeaders; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.List; + @Api(value = "设备接口", tags = "设备接口相关") @RestController @@ -41,6 +47,15 @@ public class TerminalController extends BaseController { } } + @ApiOperation(value = "导出设备列表Excel", notes = "导出设备列表Excel", httpMethod = "POST") + @ApiResponses({@ApiResponse(code = 200, message = "请求成功"), @ApiResponse(code = 400, message = "请求参数没填好"), @ApiResponse(code = 404, message = "请求路径没有或页面跳转路径不对")}) + @RequestMapping("/getTerminalListExcel") + @Log(title = "获取设备列表", type = "查询") + public void getTerminalListExcel(HttpServletResponse response) throws IOException { + ServiceBody> serviceBody = terminalService.getTerminalListExcel(null); + EasyExcelUtil.createExcel(response,"设备表",serviceBody.getData(), TerminalListExcelModel.class); + } + @ApiOperation(value = "获取绘制图标", notes = "绘制坐标保存接口", httpMethod = "POST") @ApiResponses({@ApiResponse(code = 200, message = "请求成功"), @ApiResponse(code = 400, message = "请求参数没填好"), @ApiResponse(code = 404, message = "请求路径没有或页面跳转路径不对")}) @RequestMapping("/getCoordinate") diff --git a/xymanager_common/pom.xml b/xymanager_common/pom.xml index 496dca5..98e772f 100644 --- a/xymanager_common/pom.xml +++ b/xymanager_common/pom.xml @@ -127,6 +127,12 @@ org.springframework.boot spring-boot-starter-validation + + + com.alibaba + easyexcel + + diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/dto/TerminalsAndPositionDto.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/dto/TerminalsAndPositionDto.java new file mode 100644 index 0000000..3b2b77c --- /dev/null +++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/dto/TerminalsAndPositionDto.java @@ -0,0 +1,25 @@ +package com.shxy.xymanager_common.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigInteger; +import java.util.Date; + +@Data +public class TerminalsAndPositionDto implements Serializable { + private Integer id; + + private Integer towerId; + + private String cmdId; + + private Double latitude; + + private Double longitude; + + private Integer radius; + + private static final long serialVersionUID = 1L; + +} \ No newline at end of file diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/entity/TerminalPositions.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/entity/TerminalPositions.java index fd59256..99be6d5 100644 --- a/xymanager_common/src/main/java/com/shxy/xymanager_common/entity/TerminalPositions.java +++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/entity/TerminalPositions.java @@ -10,7 +10,7 @@ public class TerminalPositions implements Serializable { private Byte coordinateType; - private Short radius; + private Integer radius; private Double latitude; diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/excelbean/TerminalListExcelModel.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/excelbean/TerminalListExcelModel.java new file mode 100644 index 0000000..8797e3e --- /dev/null +++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/excelbean/TerminalListExcelModel.java @@ -0,0 +1,53 @@ +package com.shxy.xymanager_common.excelbean; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigInteger; +import java.util.Date; +import java.util.List; + +/** + * 设备信息列表 + */ +@Data +@ApiModel(value = "设备列表excel", description = "设备列表excel") +public class TerminalListExcelModel implements Serializable { + + + + @ColumnWidth(20) + @ExcelProperty("线路名称") + @ApiModelProperty(value = "线路名称", example = "123456") + private String lineName; + + @ColumnWidth(20) + @ExcelProperty("杆塔名称") + @ApiModelProperty(value = "杆塔名称", example = "123456") + private String towerName; + + @ColumnWidth(20) + @ExcelProperty("设备编号") + @ApiModelProperty(value = "设备编号", example = "123456") + private String cmdId; + + @ColumnWidth(20) + @ExcelProperty("纬度") + @ApiModelProperty(value = "纬度", example = "21321") + private Double latitude; + + @ColumnWidth(20) + @ExcelProperty("经度") + @ApiModelProperty(value = "经度", example = "213") + private Double longitude; + + @ColumnWidth(20) + @ExcelProperty("半径") + @ApiModelProperty(value = "经度", example = "123456") + private Integer radius; + +} diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/util/EasyExcelUtil.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/util/EasyExcelUtil.java new file mode 100644 index 0000000..b9166c9 --- /dev/null +++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/util/EasyExcelUtil.java @@ -0,0 +1,220 @@ +package com.shxy.xymanager_common.util; + +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.write.builder.ExcelWriterSheetBuilder; +import com.alibaba.excel.write.handler.RowWriteHandler; +import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; +import com.alibaba.excel.write.metadata.holder.WriteTableHolder; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.ss.util.CellRangeAddress; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.List; + +public class EasyExcelUtil implements RowWriteHandler { + + private int mergeRowIndex;//从哪一行开始合并 + private int[] mergeColumnIndex;//excel合并的列 + private int[] signNum;//合并的唯一标识 + private int total;//总行数 + private int lastRow; + private int firstCol; + private int lastCol; + private int firstRow; + private int mergeCount = 1; + + private EasyExcelUtil(){} + + private EasyExcelUtil(int mergeRowIndex, int[] mergeColumnIndex, int[] signNum, int total) { + this.mergeRowIndex = mergeRowIndex; + this.mergeColumnIndex = mergeColumnIndex; + this.signNum = signNum; + this.total = total; + } + + /** + * 导出excel + * @param response + * @param fileName 文件名称 + * @param exportList 导出数据 + * @param clazz 导出实体bean class对象 + * @param + * @throws IOException + */ + public static void createExcel(HttpServletResponse response, String fileName, List exportList, + Class clazz) + throws IOException { + createExcel(response,fileName,exportList,clazz,null); + } + + /** + * 导出excel + * @param response + * @param fileName 文件名称 + * @param exportList 导出数据 + * @param clazz 导出实体bean class对象 + * @param cellMerge 单元格合并规则 + * @param + * @throws IOException + */ + public static void createExcel(HttpServletResponse response, String fileName, List exportList, + Class clazz, CellMerge cellMerge) + throws IOException { + // 设置下载信息 + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("UTF-8"); + response.setHeader("Access-Control-Expose-Headers", "Content-Disposition"); + response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8") + ".xlsx"); + + //定义ExcelWriterSheetBuilder + ExcelWriterSheetBuilder excelWriterSheetBuilder = EasyExcel + .write(response.getOutputStream(), clazz) + .sheet(fileName); + + //合并单元格 + if (cellMerge != null) { + // 从那一行开始合并 + int mergeRowIndex = 1; + EasyExcelUtil + excelMergeRowByRowStrategy = new EasyExcelUtil(mergeRowIndex, cellMerge.getMergeColumIndex(), + cellMerge.getMergeRuleColumIndex(), exportList.size()); + excelWriterSheetBuilder.registerWriteHandler(excelMergeRowByRowStrategy); + } + + //设置头样式 + WriteCellStyle headWriteCellStyle = new WriteCellStyle(); + //设置内容格式 + WriteCellStyle contentWriteCellStyle = new WriteCellStyle(); + HorizontalCellStyleStrategy horizontalCellStyleStrategy = + new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle); + //设计内容居中 + contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER); + //设置内容自动换行 + contentWriteCellStyle.setWrapped(true); + excelWriterSheetBuilder.registerWriteHandler(horizontalCellStyleStrategy); + + //调用doWrite方法 + excelWriterSheetBuilder.doWrite(exportList); + } + + @Override + public void beforeRowCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Integer integer, Integer integer1, Boolean aBoolean) { + + } + + @Override + public void afterRowCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Integer integer, Boolean aBoolean) { + + } + + @Override + public void afterRowDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, + Integer relativeRowIndex, Boolean isHead) { + //当前行 + int curRowIndex = row.getRowNum(); + //每一行的最大列数 + short lastCellNum = row.getLastCellNum(); + + if (curRowIndex == 1) { + //赋初值 第一行 + firstRow = curRowIndex; + } + //开始合并位置 + if (curRowIndex > mergeRowIndex && !row.getCell(0).getStringCellValue().equals("")) { + for (int i = 0; i < lastCellNum; i++) { + if (i == mergeColumnIndex[i]) { + //当前行号 当前行对象 合并的标识位 + mergeWithPrevAnyRow(writeSheetHolder.getSheet(), curRowIndex, row, signNum); + break;//已经进入到合并单元格操作里面了,执行一次就行 + } + } + } + } + + public void mergeWithPrevAnyRow(Sheet sheet, int curRowIndex, Row row, int[] signNum) { + Row preRow = row.getSheet().getRow(curRowIndex - 1); + List rowDataList = new ArrayList<>(); + List preDataList = new ArrayList<>(); + + for (int i : signNum) { + Object currentData = + row.getCell(i).getCellTypeEnum() == CellType.STRING ? row.getCell(i).getStringCellValue() : + row.getCell(i).getNumericCellValue(); + Object preData = + preRow.getCell(i).getCellTypeEnum() == CellType.STRING ? preRow.getCell(i).getStringCellValue() : + preRow.getCell(i).getNumericCellValue(); + rowDataList.add(String.valueOf(currentData)); + preDataList.add(String.valueOf(preData)); + } + + String rowDataStr = String.join(",", rowDataList); + String preDataStr = String.join(",", preDataList); + + //判断是否合并单元格 + boolean curEqualsPre = rowDataStr.equals(preDataStr); + //判断前一个和后一个相同 并且 标识位相同 + if (curEqualsPre) { + lastRow = curRowIndex; + mergeCount++; + } + //excel过程中合并 + if (!curEqualsPre && mergeCount > 1) { + mergeSheet(firstRow, lastRow, mergeColumnIndex, sheet); + mergeCount = 1; + } + + //excel结尾处合并 + if (mergeCount > 1 && total == curRowIndex) { + mergeSheet(firstRow, lastRow, mergeColumnIndex, sheet); + mergeCount = 1; + } + + if (!curEqualsPre) { + firstRow = curRowIndex; + } + + } + + private void mergeSheet(int firstRow, int lastRow, int[] mergeColumnIndex, Sheet sheet) { + for (int colNum : mergeColumnIndex) { + firstCol = colNum; + lastCol = colNum; + CellRangeAddress cellRangeAddress = new CellRangeAddress(firstRow, lastRow, firstCol, lastCol); + sheet.addMergedRegion(cellRangeAddress); + } + } + + /** + * 单元格合并类 + */ + @Data + @AllArgsConstructor + @NoArgsConstructor + public class CellMerge { + private int[] mergeColumIndex; + private int[] mergeRuleColumIndex; + } + + /** + * 设置单元格合并规则 + * @param mergeColumIndex + * @param mergeRuleColumIndex + * @return + */ + public static CellMerge setCellMerge(int[] mergeColumIndex,int[] mergeRuleColumIndex){ + EasyExcelUtil excelUtil = new EasyExcelUtil(); + CellMerge cellMerge = excelUtil.new CellMerge(); + cellMerge.setMergeColumIndex(mergeColumIndex); + cellMerge.setMergeRuleColumIndex(mergeRuleColumIndex); + return cellMerge; + } +} diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/vo/LastTowerVo.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/vo/LastTowerVo.java index 07098a2..d13948c 100644 --- a/xymanager_common/src/main/java/com/shxy/xymanager_common/vo/LastTowerVo.java +++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/vo/LastTowerVo.java @@ -5,12 +5,15 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; @Data @ApiModel(value = "最新杆塔请求", description = "最新杆塔请求") public class LastTowerVo { @ApiModelProperty(value = "编号", example = "电压编号 线路编号") private Integer id; + + @NotNull(message = "查询类型不能缺少") @ApiModelProperty(value = "查询类型", example = "1--电压 2--线路 ") private Integer type; diff --git a/xymanager_dao/src/main/java/com/shxy/xymanager_dao/dao/TerminalsDao.java b/xymanager_dao/src/main/java/com/shxy/xymanager_dao/dao/TerminalsDao.java index 77c9e47..98029ee 100644 --- a/xymanager_dao/src/main/java/com/shxy/xymanager_dao/dao/TerminalsDao.java +++ b/xymanager_dao/src/main/java/com/shxy/xymanager_dao/dao/TerminalsDao.java @@ -2,6 +2,7 @@ package com.shxy.xymanager_dao.dao; import com.shxy.xymanager_common.dto.ChannelAndTermDto; import com.shxy.xymanager_common.dto.TerminalInfoDto; +import com.shxy.xymanager_common.dto.TerminalsAndPositionDto; import com.shxy.xymanager_common.dto.TerminalsAndStatusDto; import com.shxy.xymanager_common.entity.Terminals; import com.shxy.xymanager_common.vo.RelateTerminalListRuleIdVo; @@ -16,6 +17,8 @@ public interface TerminalsDao { List selectAll(@Param("status") Integer status); + List selectTermAndPosition(@Param("status") Integer status); + Terminals selectById(@Param("id") Integer id, @Param("status") Integer status); List selectTermAndStatusList(@Param("status") Integer status, @Param("dyid") Integer dyid, @Param("lineid") Integer lineid, @Param("towerid") Integer towerid, @Param("search") String search); diff --git a/xymanager_dao/src/main/resources/mappers/TerminalImgAlarmsDao.xml b/xymanager_dao/src/main/resources/mappers/TerminalImgAlarmsDao.xml index 7080ac4..ed6390d 100644 --- a/xymanager_dao/src/main/resources/mappers/TerminalImgAlarmsDao.xml +++ b/xymanager_dao/src/main/resources/mappers/TerminalImgAlarmsDao.xml @@ -118,7 +118,7 @@ count(*) as num, b.label as label, b.name as name, - b.en_name as en_name, + b.en_name as en_name from terminal_img_alarms a left join terminal_img_alarm_details b on a.id = b.alarm_id where a.alarm_time between #{starttime} and #{endtime} diff --git a/xymanager_dao/src/main/resources/mappers/TerminalPositionsDao.xml b/xymanager_dao/src/main/resources/mappers/TerminalPositionsDao.xml index e6f8442..4ddb877 100644 --- a/xymanager_dao/src/main/resources/mappers/TerminalPositionsDao.xml +++ b/xymanager_dao/src/main/resources/mappers/TerminalPositionsDao.xml @@ -4,7 +4,7 @@ - + diff --git a/xymanager_dao/src/main/resources/mappers/TerminalsDao.xml b/xymanager_dao/src/main/resources/mappers/TerminalsDao.xml index 43a1db3..dd72617 100644 --- a/xymanager_dao/src/main/resources/mappers/TerminalsDao.xml +++ b/xymanager_dao/src/main/resources/mappers/TerminalsDao.xml @@ -55,6 +55,15 @@ + + + + + + + + + id, line_id,tower_id,cmdid, org_id, equip_name, display_name, model, essential_info_version, has_pan, bs_manufacturer, bs_production_date, bs_identifier, latitude, longitude, create_time, @@ -220,6 +229,20 @@ + + insert into terminals diff --git a/xymanager_framework/src/main/java/com/shxy/xymanager_framework/interaction/JwtInterceptor.java b/xymanager_framework/src/main/java/com/shxy/xymanager_framework/interaction/JwtInterceptor.java index 526fb0c..df6acb2 100644 --- a/xymanager_framework/src/main/java/com/shxy/xymanager_framework/interaction/JwtInterceptor.java +++ b/xymanager_framework/src/main/java/com/shxy/xymanager_framework/interaction/JwtInterceptor.java @@ -43,37 +43,37 @@ public class JwtInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 忽略带JwtIgnore注解的请求, 不做后续token认证校验 -// if (handler instanceof HandlerMethod) { -// HandlerMethod handlerMethod = (HandlerMethod) handler; -// JwtIgnore jwtIgnore = handlerMethod.getMethodAnnotation(JwtIgnore.class); -// if (jwtIgnore != null) { -// return true; -// } -// } -// if (HttpMethod.GET.name().equals(request.getMethod())) { -// response.setStatus(HttpServletResponse.SC_OK); -// return true; -// } -// // 获取请求头信息authorization信息 -// final String sessionId = request.getHeader("sessionId"); -// if (StrUtil.isBlank(sessionId)) { -// log.info("sessionId为空登录过期"); -// Asserts.fail(401, "登录过期"); -// } else { -// SysUserSession user = sysUserService.selectUserById(sessionId); -// if (user != null) { -// BigInteger expireTime = user.getExpireTime(); -// -// long currentTime = MyDateUtils.TimeMillSecond2Second(new DateTime()); -// if ((currentTime - expireTime.longValue()) > time.longValue()) { -// user.setExpireTime(BigInteger.valueOf(currentTime).add(time)); -// sysUserService.updateUserSession(user); -// } -// } else { -// log.info("sessionId为空登录过期"); -// Asserts.fail(401, "登录过期"); -// } -// } + if (handler instanceof HandlerMethod) { + HandlerMethod handlerMethod = (HandlerMethod) handler; + JwtIgnore jwtIgnore = handlerMethod.getMethodAnnotation(JwtIgnore.class); + if (jwtIgnore != null) { + return true; + } + } + if (HttpMethod.GET.name().equals(request.getMethod())) { + response.setStatus(HttpServletResponse.SC_OK); + return true; + } + // 获取请求头信息authorization信息 + final String sessionId = request.getHeader("sessionId"); + if (StrUtil.isBlank(sessionId)) { + log.info("sessionId为空登录过期"); + Asserts.fail(401, "登录过期"); + } else { + SysUserSession user = sysUserService.selectUserById(sessionId); + if (user != null) { + BigInteger expireTime = user.getExpireTime(); + + long currentTime = MyDateUtils.TimeMillSecond2Second(new DateTime()); + if ((currentTime - expireTime.longValue()) > time.longValue()) { + user.setExpireTime(BigInteger.valueOf(currentTime).add(time)); + sysUserService.updateUserSession(user); + } + } else { + log.info("sessionId为空登录过期"); + Asserts.fail(401, "登录过期"); + } + } return true; } diff --git a/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/DyLevelServiceImpl.java b/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/DyLevelServiceImpl.java index 956d2b2..1bd7b7f 100644 --- a/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/DyLevelServiceImpl.java +++ b/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/DyLevelServiceImpl.java @@ -174,5 +174,4 @@ public class DyLevelServiceImpl implements DyLevelService { return Asserts.success(model); } - } diff --git a/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TerminalAlarmServiceImpl.java b/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TerminalAlarmServiceImpl.java index fef13df..a38ae96 100644 --- a/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TerminalAlarmServiceImpl.java +++ b/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TerminalAlarmServiceImpl.java @@ -1,5 +1,6 @@ package com.shxy.xymanager_service.impl; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateTime; import cn.hutool.core.util.StrUtil; @@ -376,15 +377,27 @@ public class TerminalAlarmServiceImpl implements TerminalAlarmService { long startTime = MyDateUtils.TimeMillSecond2Second(begin); long endTime = MyDateUtils.TimeMillSecond2Second(end); List groupAlarmTypes = terminalImgAlarmsDao.groupAlarmsDetails(labellist, BigInteger.valueOf(startTime), BigInteger.valueOf(endTime)); + HashMap typeHashMap = new HashMap<>(); if (CollectionUtil.isNotEmpty(groupAlarmTypes)) { for (GroupAlarmType item : groupAlarmTypes) { - TerminalTodayAlarmStatisticsModel.TodayAlarmItem todayAlarmItem = new TerminalTodayAlarmStatisticsModel.TodayAlarmItem(); + typeHashMap.put(item.getLabel(), item); + } + } + alarmParamMap.forEach((key, value) -> { + Integer label = value.getLabel(); + GroupAlarmType item = typeHashMap.get(label); + TerminalTodayAlarmStatisticsModel.TodayAlarmItem todayAlarmItem = new TerminalTodayAlarmStatisticsModel.TodayAlarmItem(); + if (BeanUtil.isEmpty(item)) { + todayAlarmItem.setNum(BigInteger.valueOf(0)); + todayAlarmItem.setEnname(value.getName()); + todayAlarmItem.setLabel(label); + } else { todayAlarmItem.setNum(item.getNum()); todayAlarmItem.setEnname(item.getEnname()); todayAlarmItem.setLabel(item.getLabel()); - list.add(todayAlarmItem); } - } + list.add(todayAlarmItem); + }); model.setList(list); return Asserts.success(model); } diff --git a/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TerminalServiceImpl.java b/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TerminalServiceImpl.java index 3a70265..63a9a31 100644 --- a/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TerminalServiceImpl.java +++ b/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TerminalServiceImpl.java @@ -15,6 +15,7 @@ import com.shxy.xymanager_common.entity.TerminalStatus; import com.shxy.xymanager_common.entity.Terminals; import com.shxy.xymanager_common.enums.CommonStatus; import com.shxy.xymanager_common.enums.GloableParamsType; +import com.shxy.xymanager_common.excelbean.TerminalListExcelModel; import com.shxy.xymanager_common.exception.Asserts; import com.shxy.xymanager_common.model.*; import com.shxy.xymanager_common.page.PageUtils; @@ -545,5 +546,29 @@ public class TerminalServiceImpl implements TerminalService { return Asserts.success(model); } + @Override + public ServiceBody> getTerminalListExcel(TerminalSelectVo vo) { + Map towerMap = cacheService.getTowerMap(); + List list = new ArrayList<>(); + List dtos = terminalsDao.selectTermAndPosition(null); + for (TerminalsAndPositionDto item : dtos) { + TerminalListExcelModel bean = new TerminalListExcelModel(); + bean.setCmdId(item.getCmdId()); + if (towerMap != null) { + Integer towerid = item.getTowerId(); + TowerDto towerDto = towerMap.get(towerid); + if (towerDto != null) { + bean.setLineName(towerDto.getLineName()); + bean.setTowerName(towerDto.getName()); + } + } + bean.setLatitude(item.getLatitude()); + bean.setLongitude(item.getLongitude()); + bean.setRadius(item.getRadius()); + list.add(bean); + } + return Asserts.success(list); + } + } diff --git a/xymanager_service/src/main/java/com/shxy/xymanager_service/service/TerminalService.java b/xymanager_service/src/main/java/com/shxy/xymanager_service/service/TerminalService.java index 12cc27d..4a84356 100644 --- a/xymanager_service/src/main/java/com/shxy/xymanager_service/service/TerminalService.java +++ b/xymanager_service/src/main/java/com/shxy/xymanager_service/service/TerminalService.java @@ -1,9 +1,12 @@ package com.shxy.xymanager_service.service; import com.shxy.xymanager_common.bean.ServiceBody; +import com.shxy.xymanager_common.excelbean.TerminalListExcelModel; import com.shxy.xymanager_common.model.*; import com.shxy.xymanager_common.vo.*; +import java.util.List; + /** * 设备接口 * @@ -112,4 +115,11 @@ public interface TerminalService { * @return */ ServiceBody getTermStatistics(); + + /** + * 导出设备列表的Excel + * @param vo + * @return + */ + ServiceBody> getTerminalListExcel(TerminalSelectVo vo); }