新增装置统计

hunan
liuguijing 2 years ago
parent 4a586fc9de
commit 05c1f4e40b

@ -32,6 +32,7 @@
<commons.fileupload.version>1.4</commons.fileupload.version>
<jwt.version>0.9.0</jwt.version>
<mybatisplus.version>3.2.0</mybatisplus.version>
<easyexcel.version>3.2.1</easyexcel.version>
</properties>
<dependencyManagement>
@ -115,7 +116,12 @@
<artifactId>commons-fileupload</artifactId>
<version>${commons.fileupload.version}</version>
</dependency>
<!-- 阿里excel表格工具-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>${easyexcel.version}</version>
</dependency>
<!--一个开源工具类 一个Java基础工具类对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装组成各种Util工具类-->
<dependency>
@ -140,12 +146,12 @@
</dependency>
<!-- <dependency>-->
<!-- <groupId>javax.servlet</groupId>-->
<!-- <artifactId>javax.servlet-api</artifactId>-->
<!-- <version>4.0.1</version>-->
<!-- <scope>provided</scope>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>javax.servlet</groupId>-->
<!-- <artifactId>javax.servlet-api</artifactId>-->
<!-- <version>4.0.1</version>-->
<!-- <scope>provided</scope>-->
<!-- </dependency>-->
<dependency>

@ -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<TerminalTodayAlarmStatisticsModel> getTodayAlarmStatistics(@Validated WeekAlarmVo vo) {
ServiceBody<TerminalTodayAlarmStatisticsModel> serviceBody = terminalAlarmService.getTodayAlarmStatistics(vo);
if (serviceBody.getCode() == ServiceStatus.SUCCESS) {

@ -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<List<TerminalListExcelModel>> 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")

@ -127,6 +127,12 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
</dependency>
<!-- &lt;!&ndash;shiro&ndash;&gt;-->
<!-- <dependency>-->
<!-- <groupId>org.apache.shiro</groupId>-->

@ -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;
}

@ -10,7 +10,7 @@ public class TerminalPositions implements Serializable {
private Byte coordinateType;
private Short radius;
private Integer radius;
private Double latitude;

@ -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;
}

@ -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 <T>
* @throws IOException
*/
public static <T> void createExcel(HttpServletResponse response, String fileName, List<T> exportList,
Class<T> clazz)
throws IOException {
createExcel(response,fileName,exportList,clazz,null);
}
/**
* excel
* @param response
* @param fileName
* @param exportList
* @param clazz bean class
* @param cellMerge
* @param <T>
* @throws IOException
*/
public static <T> void createExcel(HttpServletResponse response, String fileName, List<T> exportList,
Class<T> 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<String> rowDataList = new ArrayList<>();
List<String> 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;
}
}

@ -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;

@ -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<Terminals> selectAll(@Param("status") Integer status);
List<TerminalsAndPositionDto> selectTermAndPosition(@Param("status") Integer status);
Terminals selectById(@Param("id") Integer id, @Param("status") Integer status);
List<TerminalsAndStatusDto> selectTermAndStatusList(@Param("status") Integer status, @Param("dyid") Integer dyid, @Param("lineid") Integer lineid, @Param("towerid") Integer towerid, @Param("search") String search);

@ -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}

@ -4,7 +4,7 @@
<resultMap id="BaseResultMap" type="com.shxy.xymanager_common.entity.TerminalPositions">
<id column="term_id" jdbcType="INTEGER" property="termId"/>
<result column="coordinate_type" jdbcType="TINYINT" property="coordinateType"/>
<result column="radius" jdbcType="SMALLINT" property="radius"/>
<result column="radius" jdbcType="INTEGER" property="radius"/>
<result column="latitude" jdbcType="DOUBLE" property="latitude"/>
<result column="longitude" jdbcType="DOUBLE" property="longitude"/>
<result column="update_time" jdbcType="BIGINT" property="updateTime"/>

@ -55,6 +55,15 @@
<result column="display_name" jdbcType="VARCHAR" property="displayname"/>
</resultMap>
<resultMap id="TermAndPositionMap" type="com.shxy.xymanager_common.dto.TerminalsAndPositionDto">
<id column="id" jdbcType="INTEGER" property="id"/>
<result column="tower_id" jdbcType="INTEGER" property="towerId"/>
<result column="cmdid" jdbcType="VARCHAR" property="cmdId"/>
<result column="latitude" jdbcType="DOUBLE" property="latitude"/>
<result column="longitude" jdbcType="DOUBLE" property="longitude"/>
<result column="radius" jdbcType="INTEGER" property="radius"/>
</resultMap>
<sql id="Base_Column_List">
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 @@
</if>
</select>
<select id="selectTermAndPosition" resultMap="TermAndPositionMap">
select
a.id,
a.tower_id,
a.cmdid,
b.latitude,
b.longitude,
b.radius
from terminals a left join terminal_positions b on a.id = b.term_id
<if test="status != null">
where status = #{status}
</if>
</select>
<insert id="insertSelective" parameterType="com.shxy.xymanager_common.entity.Terminals">
insert into terminals
<trim prefix="(" suffix=")" suffixOverrides=",">

@ -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;
}

@ -174,5 +174,4 @@ public class DyLevelServiceImpl implements DyLevelService {
return Asserts.success(model);
}
}

@ -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<GroupAlarmType> groupAlarmTypes = terminalImgAlarmsDao.groupAlarmsDetails(labellist, BigInteger.valueOf(startTime), BigInteger.valueOf(endTime));
HashMap<Integer, GroupAlarmType> 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);
}

@ -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<List<TerminalListExcelModel>> getTerminalListExcel(TerminalSelectVo vo) {
Map<Integer, TowerDto> towerMap = cacheService.getTowerMap();
List<TerminalListExcelModel> list = new ArrayList<>();
List<TerminalsAndPositionDto> 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);
}
}

@ -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<TerminalStatisticsModel> getTermStatistics();
/**
* Excel
* @param vo
* @return
*/
ServiceBody<List<TerminalListExcelModel>> getTerminalListExcel(TerminalSelectVo vo);
}

Loading…
Cancel
Save