提交 3bbfc8e1 作者: 涂茂林

feat:历史轨迹

上级 1fbfdcde
......@@ -12,4 +12,9 @@ public interface RedisKey {
* STOMP 在线用户关键数据
*/
String STOMP_ONLINE_USERS = "STOMP_ONLINE_USERS";
/**
* 地图信息
*/
String ZY_MAP_AREAS = "ZY_MAP_AREAS";
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.excel.analysis.history;
import com.github.liaochong.myexcel.core.annotation.ExcelColumn;
import com.github.liaochong.myexcel.core.annotation.ExcelModel;
import com.yiring.app.vo.analysis.history.HistoryRouteVo;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.Builder;
import lombok.Data;
import org.locationtech.jts.geom.Point;
/**
* @author tml
* @version 1.0
* @date 2022/5/6 15:23
*/
@ExcelModel
@Data
@Builder
public class HistoryRouteExcel implements Serializable {
@Serial
private static final long serialVersionUID = 3021760052313853701L;
@ExcelColumn(title = "姓名")
private String name;
@ExcelColumn(title = "工号")
private String uuid;
@ExcelColumn(title = "经度")
private Double x;
@ExcelColumn(title = "纬度")
private Double y;
@ExcelColumn(title = "地图名称")
private String mapName;
@ExcelColumn(title = "记录时间", width = 20)
private LocalDateTime writeTime;
public static HistoryRouteExcel transform(HistoryRouteVo historyRouteVo) {
HistoryRouteExcel routeExcel = HistoryRouteExcel
.builder()
.name(historyRouteVo.getName())
.uuid(historyRouteVo.getUuid())
.mapName(historyRouteVo.getMapName())
.writeTime(historyRouteVo.getWriteTime())
.build();
Point point = historyRouteVo.getPoint();
if (point != null) {
routeExcel.setX(point.getX());
routeExcel.setY(point.getY());
}
return routeExcel;
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.excel.location;
import com.github.liaochong.myexcel.core.annotation.ExcelColumn;
import com.github.liaochong.myexcel.core.annotation.ExcelModel;
import com.yiring.app.vo.location.rule.LocationAlarmRuleVo;
import java.io.Serial;
import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author tml
* @version 1.0
* @date 2022/5/6 11:11
*/
@ExcelModel
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class LocationAlarmRuleExcel implements Serializable {
@Serial
private static final long serialVersionUID = -898420880457790036L;
@ExcelColumn(title = "地图名称")
private String mapName;
@ExcelColumn(title = "电子围栏名称")
private String fenceName;
@ExcelColumn(title = "接收人", width = 20)
private String users;
@ExcelColumn(title = "通知方式", width = 18)
private String informManner;
public static LocationAlarmRuleExcel transform(LocationAlarmRuleVo locationAlarmRuleVo) {
StringBuilder users = new StringBuilder();
StringBuilder informManner = new StringBuilder();
for (int i = 0; i < locationAlarmRuleVo.getUsers().size(); i++) {
if (i != 0) {
users.append(", ");
}
users.append(locationAlarmRuleVo.getUsers().get(i).getRealName());
}
for (int i = 0; i < locationAlarmRuleVo.getInformManner().size(); i++) {
if (i != 0) {
informManner.append(", ");
}
informManner.append(locationAlarmRuleVo.getInformManner().get(i).getName());
}
return LocationAlarmRuleExcel
.builder()
.mapName(locationAlarmRuleVo.getMapName())
.fenceName(locationAlarmRuleVo.getFenceName())
.users(users.toString())
.informManner(informManner.toString())
.build();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.analysis.history;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author tml
* @version 1.0
* @date 2022/5/6 10:53
*/
@ApiModel("HistoryRoute(历史轨迹的条件param)")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class HistoryRouteConditionParam implements Serializable {
@Serial
private static final long serialVersionUID = 2386493816691457426L;
@ApiModelProperty(value = "地图id", example = "1", required = true)
@NotNull(message = "请选择地图")
private Long mapId;
@ApiModelProperty(value = "用户id", example = "1", required = true)
@NotNull(message = "请选择员工")
private Long userId;
@ApiModelProperty(value = "开始时间", example = "2022-05-06 14:00:00", required = true)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@NotNull(message = "请选择开始时间")
private LocalDateTime beginTime;
@ApiModelProperty(value = "结束时间", example = "2022-05-06 14:05:00", required = true)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@NotNull(message = "请选择结束时间")
private LocalDateTime endTime;
}
......@@ -53,7 +53,7 @@ public class LocationAlarmRuleAddParam implements Serializable {
@NotNull(message = "报警类型id不能为空")
private Long alarmId;
@ApiModelProperty(value = "接收人集合", required = true)
@ApiModelProperty(value = "接收人集合(id)", required = true)
@NotNull(message = "接收人id不能为空")
private Set<Long> users;
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.analysis.history;
import com.yiring.app.param.analysis.history.HistoryRouteConditionParam;
import com.yiring.app.vo.analysis.history.HistoryRouteVo;
import com.yiring.common.core.Result;
import com.yiring.common.vo.PageVo;
import javax.servlet.http.HttpServletResponse;
/**
* @author tml
* @version 1.0
* @date 2022/5/6 14:39
*/
public interface HistoryRouteService {
/**
* 根据条件查询历史轨迹信息
* @param param 地图、员工和时间条件
* @return 历史轨迹信息
*/
Result<PageVo<HistoryRouteVo>> findByCondition(HistoryRouteConditionParam param);
/**
* 导出历史轨迹信息
* @param param 地图、员工和时间条件
* @param response 历史轨迹信息
*/
void exportHistoryRoute(HistoryRouteConditionParam param, HttpServletResponse response);
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.analysis.history.impl;
import com.alibaba.fastjson.JSONArray;
import com.github.liaochong.myexcel.core.DefaultStreamExcelBuilder;
import com.yiring.app.constant.RedisKey;
import com.yiring.app.domain.location.LocationLog;
import com.yiring.app.domain.location.LocationLogRepository;
import com.yiring.app.excel.analysis.history.HistoryRouteExcel;
import com.yiring.app.param.analysis.history.HistoryRouteConditionParam;
import com.yiring.app.service.analysis.history.HistoryRouteService;
import com.yiring.app.vo.analysis.history.HistoryRouteVo;
import com.yiring.app.vo.map.MapVo;
import com.yiring.common.core.Redis;
import com.yiring.common.core.Result;
import com.yiring.common.core.Status;
import com.yiring.common.vo.PageVo;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Executors;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.persistence.criteria.Predicate;
import javax.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* @author tml
* @version 1.0
* @date 2022/5/6 14:41
*/
@Slf4j
@Service
@Transactional(rollbackFor = Exception.class)
public class HistoryRouteServiceImpl implements HistoryRouteService {
@Resource
private LocationLogRepository locationLogRepository;
@Resource
private Redis redis;
@Override
public Result<PageVo<HistoryRouteVo>> findByCondition(HistoryRouteConditionParam param) {
Specification<LocationLog> specification = getSpecification(param);
ArrayList<MapVo.MapVoReuslt> list1 = new ArrayList<>();
Object map = redis.get(RedisKey.ZY_MAP_AREAS);
String mapString = JSONArray.toJSONString(map);
List<MapVo.MapVoReuslt> mapVo = JSONArray.parseArray(mapString, MapVo.MapVoReuslt.class);
List<LocationLog> list = locationLogRepository.findAll(specification);
List<HistoryRouteVo> voList = list
.stream()
.map(e -> {
HistoryRouteVo routeVo = HistoryRouteVo.transform(e);
for (MapVo.MapVoReuslt item : mapVo) {
if (item.getId().equals(e.getAreaId().intValue())) {
routeVo.setMapName(item.getName());
break;
}
}
return routeVo;
})
.collect(Collectors.toList());
PageVo<HistoryRouteVo> pageVo = PageVo.build(voList, voList.size());
return Result.ok(pageVo);
}
@Override
public void exportHistoryRoute(HistoryRouteConditionParam param, HttpServletResponse response) {
Result<PageVo<HistoryRouteVo>> result = findByCondition(param);
if (Status.OK.value() != result.getStatus()) {
return;
}
List<HistoryRouteExcel> excelList = result
.getBody()
.getData()
.stream()
.map(HistoryRouteExcel::transform)
.collect(Collectors.toList());
try (
DefaultStreamExcelBuilder<HistoryRouteExcel> streamExcelBuilder = DefaultStreamExcelBuilder
.of(HistoryRouteExcel.class)
.threadPool(Executors.newFixedThreadPool(2))
.rowHeight(14)
.titleRowHeight(14)
.style(
"cell->vertical-align:center;text-align:center",
"title->vertical-align:center;text-align:center;font-weight:bold;font-family:等线"
)
.start()
) {
streamExcelBuilder.append(excelList);
String fileName = URLEncoder.encode("历史轨迹表.xlsx", StandardCharsets.UTF_8);
response.setContentType("application/octet-stream");
response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
OutputStream out = response.getOutputStream();
Workbook workbook = streamExcelBuilder.fixedTitles().build();
workbook.write(out);
workbook.close();
out.flush();
out.close();
} catch (Exception e) {
log.error(e.getMessage(), e);
throw new RuntimeException("报警类型列表导出失败: " + e.getMessage());
}
}
private Specification<LocationLog> getSpecification(HistoryRouteConditionParam param) {
return (root, query, criteriaBuilder) -> {
ArrayList<Predicate> list = new ArrayList<>();
if (param.getMapId() != null) {
list.add(criteriaBuilder.equal(root.get("areaId"), param.getMapId()));
}
if (param.getUserId() != null) {
list.add(criteriaBuilder.equal(root.get("user"), param.getUserId()));
}
if (param.getBeginTime() != null) {
list.add(criteriaBuilder.greaterThanOrEqualTo(root.get("locationTime"), param.getBeginTime()));
}
if (param.getEndTime() != null) {
list.add(criteriaBuilder.lessThanOrEqualTo(root.get("locationTime"), param.getEndTime()));
}
Predicate[] array = list.toArray(new Predicate[0]);
return criteriaBuilder.and(array);
};
}
}
......@@ -4,11 +4,13 @@ package com.yiring.app.service.location.rule;
import com.yiring.app.param.location.rule.LocationAlarmRuleAddParam;
import com.yiring.app.param.location.rule.LocationAlarmRuleModifyParam;
import com.yiring.app.param.location.rule.LocationAlarmRuleParam;
import com.yiring.app.vo.IdNameVo;
import com.yiring.app.vo.location.rule.LocationAlarmRuleVo;
import com.yiring.common.core.Result;
import com.yiring.common.param.IdParam;
import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo;
import javax.servlet.http.HttpServletResponse;
/**
* @author tml
......@@ -51,4 +53,25 @@ public interface LocationAlarmRuleService {
* @return 规则信息
*/
Result<PageVo<LocationAlarmRuleVo>> findByCondition(LocationAlarmRuleParam param, PageParam pageParam);
/**
* 导出电子围栏规则
* @param param 条件
* @param response response
* @param pageParam 分页参数
*/
void exportAlarmRule(LocationAlarmRuleParam param, HttpServletResponse response, PageParam pageParam);
/**
* 根据电子围栏名称模糊查询围栏id和名称
* @param name 名称
* @return 围栏id和名称
*/
Result<PageVo<IdNameVo>> findFenceList(String name);
/**
* 查询报警类型下拉框
* @return 报警类型列表
*/
Result<PageVo<IdNameVo>> findAlarmTypeList();
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.location.rule.impl;
import com.github.liaochong.myexcel.core.DefaultStreamExcelBuilder;
import com.yiring.app.domain.alarm.AlarmType;
import com.yiring.app.domain.alarm.AlarmTypeRepository;
import com.yiring.app.domain.location.LocationAlarmRule;
import com.yiring.app.domain.location.LocationAlarmRuleRepository;
import com.yiring.app.domain.location.LocationFence;
import com.yiring.app.domain.location.LocationFenceRepository;
import com.yiring.app.excel.location.LocationAlarmRuleExcel;
import com.yiring.app.param.location.rule.LocationAlarmRuleAddParam;
import com.yiring.app.param.location.rule.LocationAlarmRuleModifyParam;
import com.yiring.app.param.location.rule.LocationAlarmRuleParam;
import com.yiring.app.service.location.rule.LocationAlarmRuleService;
import com.yiring.app.util.JpaUtil;
import com.yiring.app.vo.IdNameVo;
import com.yiring.app.vo.location.rule.LocationAlarmRuleVo;
import com.yiring.common.core.Result;
import com.yiring.common.core.Status;
import com.yiring.common.param.IdParam;
import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.concurrent.Executors;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.persistence.criteria.Predicate;
import javax.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.domain.Specification;
......@@ -42,6 +55,12 @@ public class LocationAlarmRuleServiceImpl implements LocationAlarmRuleService {
@Resource
private LocationAlarmRuleRepository locationAlarmRuleRepository;
@Resource
private LocationFenceRepository locationFenceRepository;
@Resource
private AlarmTypeRepository alarmTypeRepository;
@Override
public Result<String> addRule(LocationAlarmRuleAddParam param) {
LocationAlarmRule locationAlarmRule = param.transform();
......@@ -83,17 +102,7 @@ public class LocationAlarmRuleServiceImpl implements LocationAlarmRuleService {
@Override
public Result<PageVo<LocationAlarmRuleVo>> findByCondition(LocationAlarmRuleParam param, PageParam pageParam) {
Pageable pageable = PageParam.toPageable(pageParam);
Specification<LocationAlarmRule> specification = (root, query, criteriaBuilder) -> {
List<Predicate> list = new ArrayList<>();
if (param.getMapId() != null) {
list.add(criteriaBuilder.equal(root.get("mapId"), param.getMapId()));
}
if (param.getFenceId() != null) {
list.add(criteriaBuilder.equal(root.get("locationFence"), param.getFenceId()));
}
Predicate[] array = list.toArray(new Predicate[0]);
return criteriaBuilder.and(array);
};
Specification<LocationAlarmRule> specification = getSpecification(param);
Set<Integer> informManner = param.getInformManner();
if (CollectionUtils.isEmpty(informManner)) {
Page<LocationAlarmRule> rulePage = locationAlarmRuleRepository.findAll(specification, pageable);
......@@ -133,4 +142,83 @@ public class LocationAlarmRuleServiceImpl implements LocationAlarmRuleService {
PageVo<LocationAlarmRuleVo> pageVo = PageVo.build(page, ruleList.size());
return Result.ok(pageVo);
}
@Override
public void exportAlarmRule(LocationAlarmRuleParam param, HttpServletResponse response, PageParam pageParam) {
Result<PageVo<LocationAlarmRuleVo>> result = findByCondition(param, pageParam);
if (Status.OK.value() != result.getStatus()) {
return;
}
List<LocationAlarmRuleExcel> excelList = result
.getBody()
.getData()
.stream()
.map(LocationAlarmRuleExcel::transform)
.collect(Collectors.toList());
try (
DefaultStreamExcelBuilder<LocationAlarmRuleExcel> streamExcelBuilder = DefaultStreamExcelBuilder
.of(LocationAlarmRuleExcel.class)
.threadPool(Executors.newFixedThreadPool(2))
.rowHeight(14)
.titleRowHeight(14)
.style(
"cell->vertical-align:center;text-align:center",
"title->vertical-align:center;text-align:center;font-weight:bold;font-family:等线"
)
.start()
) {
streamExcelBuilder.append(excelList);
String fileName = URLEncoder.encode("电子围栏报警规则表.xlsx", StandardCharsets.UTF_8);
response.setContentType("application/octet-stream");
response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
OutputStream out = response.getOutputStream();
Workbook workbook = streamExcelBuilder.fixedTitles().build();
workbook.write(out);
workbook.close();
out.flush();
out.close();
} catch (Exception e) {
log.error(e.getMessage(), e);
throw new RuntimeException("报警类型列表导出失败: " + e.getMessage());
}
}
@Override
public Result<PageVo<IdNameVo>> findFenceList(String name) {
List<LocationFence> likeName = locationFenceRepository.findLikeName(name);
List<IdNameVo> voList = likeName
.stream()
.map(e -> new IdNameVo(e.getId(), e.getName()))
.collect(Collectors.toList());
PageVo<IdNameVo> pageVo = PageVo.build(voList, voList.size());
return Result.ok(pageVo);
}
@Override
public Result<PageVo<IdNameVo>> findAlarmTypeList() {
List<AlarmType> all = alarmTypeRepository.findAll();
List<IdNameVo> voList = all
.stream()
.map(e -> new IdNameVo(e.getId(), e.getName()))
.collect(Collectors.toList());
PageVo<IdNameVo> pageVo = PageVo.build(voList, voList.size());
return Result.ok(pageVo);
}
private Specification<LocationAlarmRule> getSpecification(LocationAlarmRuleParam param) {
return (root, query, criteriaBuilder) -> {
List<Predicate> list = new ArrayList<>();
if (param.getMapId() != null) {
list.add(criteriaBuilder.equal(root.get("mapId"), param.getMapId()));
}
if (param.getFenceId() != null) {
list.add(criteriaBuilder.equal(root.get("locationFence"), param.getFenceId()));
}
Predicate[] array = list.toArray(new Predicate[0]);
return criteriaBuilder.and(array);
};
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author tml
* @version 1.0
* @date 2022/5/6 13:43
*/
@ApiModel("IdNameVo")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class IdNameVo implements Serializable {
@Serial
private static final long serialVersionUID = -8990274383112436122L;
@ApiModelProperty(value = "id", example = "1", required = true)
private Long id;
@ApiModelProperty(value = "name", example = "名称", required = true)
private String name;
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.vo.analysis.history;
import com.yiring.app.domain.location.LocationLog;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.locationtech.jts.geom.Point;
/**
* @author tml
* @version 1.0
* @date 2022/5/6 14:18
*/
@Data
@Builder
@ApiModel("历史轨迹信息VO")
@NoArgsConstructor
@AllArgsConstructor
public class HistoryRouteVo implements Serializable {
@Serial
private static final long serialVersionUID = -5915541034872568334L;
@ApiModelProperty(value = "姓名", example = "张三")
private String name;
@ApiModelProperty(value = "工号", example = "ks2022")
private String uuid;
@ApiModelProperty(value = "经纬度")
private Point point;
@ApiModelProperty(value = "地图名称", example = "总图")
private String mapName;
@ApiModelProperty(value = "记录时间", example = "2022-05-06 14:00:00")
private LocalDateTime writeTime;
public static HistoryRouteVo transform(LocationLog locationLog) {
return HistoryRouteVo
.builder()
.name(locationLog.getUser().getRealName())
.uuid(locationLog.getUser().getUuid())
.point(locationLog.getPoint())
.writeTime(locationLog.getLocationTime())
.build();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.web.analysis.history;
import com.yiring.app.param.analysis.history.HistoryRouteConditionParam;
import com.yiring.app.service.analysis.history.HistoryRouteService;
import com.yiring.app.vo.analysis.history.HistoryRouteVo;
import com.yiring.common.core.Result;
import com.yiring.common.vo.PageVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author tml
* @version 1.0
* @date 2022/5/6 10:36
*/
@Api(tags = "HistoryRoute(历史轨迹)")
@Validated
@RestController
@RequestMapping("/history/route")
public class HistoryRouteController {
@Resource
private HistoryRouteService historyRouteService;
@ApiOperation("根据条件查询历史轨迹")
@PostMapping("/findByCondition")
public Result<PageVo<HistoryRouteVo>> findByCondition(@Valid HistoryRouteConditionParam param) {
return historyRouteService.findByCondition(param);
}
@ApiOperation(value = "导出历史轨迹", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
@PostMapping("/exportHistoryRoute")
public void exportHistoryRoute(@Valid HistoryRouteConditionParam param, HttpServletResponse response) {
historyRouteService.exportHistoryRoute(param, response);
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.web.location.rule;
import com.yiring.app.constant.alarm.InformMannerEnum;
import com.yiring.app.domain.alarm.AlarmType;
import com.yiring.app.param.location.rule.LocationAlarmRuleAddParam;
import com.yiring.app.param.location.rule.LocationAlarmRuleModifyParam;
import com.yiring.app.param.location.rule.LocationAlarmRuleParam;
import com.yiring.app.service.location.rule.LocationAlarmRuleService;
import com.yiring.app.vo.CodeNameVo;
import com.yiring.app.vo.IdNameVo;
import com.yiring.app.vo.location.rule.LocationAlarmRuleVo;
import com.yiring.common.core.Result;
import com.yiring.common.param.IdParam;
import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import java.util.List;
import java.util.Objects;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Sort;
import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
......@@ -74,4 +82,38 @@ public class LocationAlarmRuleController {
}
return locationAlarmRuleService.findByCondition(param, pageParam);
}
@ApiOperation(value = "通知方式下拉框")
@GetMapping("/findAllInformManner")
public Result<PageVo<CodeNameVo>> findAllInformManner() {
List<CodeNameVo> list = InformMannerEnum.getAll();
PageVo<CodeNameVo> pageVo = PageVo.build(list, list.size());
return Result.ok(pageVo);
}
@ApiOperation(value = "导出电子围栏报警规则", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
@PostMapping("/exportAlarmRule")
public void exportAlarmRule(
@Valid LocationAlarmRuleParam param,
HttpServletResponse response,
@Valid PageParam pageParam
) {
locationAlarmRuleService.exportAlarmRule(param, response, pageParam);
}
@ApiOperation("围栏信息下拉框")
@ApiImplicitParam(value = "围栏名称", example = "生产", name = "name")
@PostMapping("/findByNameLike")
public Result<PageVo<IdNameVo>> findFenceList(String name) {
if (name == null) {
name = "";
}
return locationAlarmRuleService.findFenceList(name);
}
@ApiOperation("报警类型下拉框")
@PostMapping("/findAlarmTypeList")
public Result<PageVo<IdNameVo>> findAlarmTypeList() {
return locationAlarmRuleService.findAlarmTypeList();
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论