提交 aadc9b1f 作者: 涂茂林

feat:报警规则细节添加

上级 d4f0d825
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.domain.location;
import com.yiring.common.domain.BasicEntity;
import java.io.Serial;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import lombok.*;
import lombok.experimental.FieldNameConstants;
import lombok.experimental.SuperBuilder;
import org.hibernate.annotations.Comment;
import org.hibernate.annotations.Where;
/**
* @author tml
* @version 1.0
* @date 2022/5/5 14:25
*/
@Getter
@Setter
@ToString
@SuperBuilder(toBuilder = true)
@NoArgsConstructor
@AllArgsConstructor
@FieldNameConstants
@Where(clause = "deleted = false")
@Entity
@Table(name = "BS_LOCATION_FENCE")
@Comment("电子围栏的报警规则")
public class LocationAlarmRule extends BasicEntity implements Serializable {
@Serial
private static final long serialVersionUID = -2268859882881201793L;
@Comment("地图ID")
private Long mapId;
@Comment("地图名称")
private String mapName;
@Comment("电子围栏")
@ManyToOne
@JoinColumn(name = "fence_id")
private LocationFence locationFence;
}
......@@ -5,6 +5,7 @@ import java.io.Serializable;
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
/**
......@@ -28,4 +29,12 @@ public interface LocationFenceRepository
* @return 围栏信息
*/
List<LocationFence> findAllByName(String name);
/**
* 根据名称模糊查询围栏信息
* @param name 围栏名称
* @return 围栏信息
*/
@Query("SELECT f FROM LocationFence f WHERE name like %?1%")
List<LocationFence> findLikeName(String name);
}
......@@ -58,5 +58,5 @@ public interface AlarmService {
* @param conditionParam 条件
* @param response response
*/
void exportAlarmType(AlarmConditionParam conditionParam, HttpServletResponse response);
void exportAlarmType(AlarmConditionParam conditionParam, HttpServletResponse response, PageParam pageParam);
}
......@@ -114,10 +114,11 @@ public class AlarmServiceImpl implements AlarmService {
}
@Override
public void exportAlarmType(AlarmConditionParam conditionParam, HttpServletResponse response) {
public void exportAlarmType(AlarmConditionParam conditionParam, HttpServletResponse response, PageParam pageParam) {
Pageable pageable = PageParam.toPageable(pageParam);
Specification<AlarmType> specification = getSpecification(conditionParam);
List<AlarmType> alarmTypeList = alarmTypeRepository.findAll(specification);
List<AlarmTypeExcel> list = AlarmTypeExcel.transforms(alarmTypeList);
Page<AlarmType> page = alarmTypeRepository.findAll(specification, pageable);
List<AlarmTypeExcel> list = page.get().map(AlarmTypeExcel::transform).collect(Collectors.toList());
try (
DefaultStreamExcelBuilder<AlarmTypeExcel> streamExcelBuilder = DefaultStreamExcelBuilder
.of(AlarmTypeExcel.class)
......
......@@ -4,6 +4,7 @@ package com.yiring.app.service.location.fence;
import com.yiring.app.param.location.fence.LocationFenceAddParam;
import com.yiring.app.param.location.fence.LocationFenceConditionParam;
import com.yiring.app.param.location.fence.LocationFenceModifyParam;
import com.yiring.app.vo.location.fence.LocationFenceSearchVo;
import com.yiring.app.vo.location.fence.LocationFenceVo;
import com.yiring.common.core.Result;
import com.yiring.common.param.IdParam;
......@@ -52,4 +53,11 @@ public interface LocationFenceService {
* @return 详细信息
*/
Result<LocationFenceVo> findById(@Valid IdParam param);
/**
* 根据名称模糊查询围栏信息
* @param name 围栏名称
* @return 围栏信息
*/
Result<PageVo<LocationFenceSearchVo>> findByNameLike(String name);
}
......@@ -8,6 +8,7 @@ import com.yiring.app.param.location.fence.LocationFenceConditionParam;
import com.yiring.app.param.location.fence.LocationFenceModifyParam;
import com.yiring.app.service.location.fence.LocationFenceService;
import com.yiring.app.util.JpaUtil;
import com.yiring.app.vo.location.fence.LocationFenceSearchVo;
import com.yiring.app.vo.location.fence.LocationFenceVo;
import com.yiring.common.core.Result;
import com.yiring.common.core.Status;
......@@ -117,4 +118,15 @@ public class LocationFenceServiceImpl implements LocationFenceService {
LocationFenceVo fenceVo = LocationFenceVo.transform(fence);
return Result.ok(fenceVo);
}
@Override
public Result<PageVo<LocationFenceSearchVo>> findByNameLike(String name) {
List<LocationFence> list = locationFenceRepository.findLikeName(name);
List<LocationFenceSearchVo> voList = list
.stream()
.map(LocationFenceSearchVo::transform)
.collect(Collectors.toList());
PageVo<LocationFenceSearchVo> pageVo = PageVo.build(voList, voList.size());
return Result.ok(pageVo);
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.vo.alarm;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.yiring.app.constant.alarm.FenceTypeEnum;
import com.yiring.app.constant.alarm.RelevanceParamEnum;
import com.yiring.app.domain.alarm.AlarmType;
......@@ -28,17 +30,24 @@ public class AlarmTypeVo implements Serializable {
@Serial
private static final long serialVersionUID = 4743016000753778197L;
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty(value = "报警类型id", example = "1518841086628335616")
private Long id;
@ApiModelProperty(value = "报警类型名称", example = "超员报警")
private String name;
@ApiModelProperty(value = "围栏类别", example = "普通围栏")
private String fenceType;
@ApiModelProperty(value = "围栏类别code", example = "1")
private Integer fenceType;
@ApiModelProperty(value = "关联参数", example = "最多人数")
private String relevanceParam;
@ApiModelProperty(value = "围栏类别名称", example = "普通围栏")
private String fenceTypeName;
@ApiModelProperty(value = "关联参数code", example = "1")
private Integer relevanceParam;
@ApiModelProperty(value = "关联参数名称", example = "最多人数")
private String relevanceParamName;
@ApiModelProperty(value = "备注", example = "备注")
private String comment;
......@@ -48,8 +57,10 @@ public class AlarmTypeVo implements Serializable {
.builder()
.id(alarmType.getId())
.name(alarmType.getName())
.fenceType(FenceTypeEnum.getByCode(alarmType.getFenceType()))
.relevanceParam(RelevanceParamEnum.getByCode(alarmType.getRelevanceParam()))
.fenceType(alarmType.getFenceType())
.fenceTypeName(FenceTypeEnum.getByCode(alarmType.getFenceType()))
.relevanceParam(alarmType.getRelevanceParam())
.relevanceParamName(RelevanceParamEnum.getByCode(alarmType.getRelevanceParam()))
.comment(alarmType.getComment())
.build();
}
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.vo.district;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.yiring.app.domain.district.District;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
......@@ -27,6 +29,7 @@ public class DistrictVo implements Serializable {
@Serial
private static final long serialVersionUID = -4330628723553785529L;
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty(value = "区域id", example = "1518841086628335616")
private Long id;
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.vo.location.fence;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.yiring.app.constant.alarm.FenceTypeEnum;
import com.yiring.app.domain.location.LocationFence;
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/5 9:35
*/
@ApiModel("围栏信息检索VO")
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class LocationFenceSearchVo implements Serializable {
@Serial
private static final long serialVersionUID = 5774168899957993687L;
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty(value = "id")
private Long id;
@ApiModelProperty(value = "围栏名称")
private String name;
@ApiModelProperty(value = "围栏类别code")
private Integer fenceType;
@ApiModelProperty(value = "围栏类别名称")
private String fenceTypeName;
public static LocationFenceSearchVo transform(LocationFence locationFence) {
return LocationFenceSearchVo
.builder()
.id(locationFence.getId())
.name(locationFence.getName())
.fenceType(locationFence.getFenceType())
.fenceTypeName(FenceTypeEnum.getByCode(locationFence.getFenceType()))
.build();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.vo.location.fence;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.yiring.app.constant.alarm.FenceTypeEnum;
import com.yiring.app.domain.location.LocationFence;
import com.yiring.app.domain.location.LocationFenceRule;
......@@ -32,6 +34,10 @@ public class LocationFenceVo implements Serializable {
@Serial
private static final long serialVersionUID = 3616144084051520412L;
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty(value = "id")
private Long id;
@ApiModelProperty(value = "围栏名称")
private String name;
......@@ -41,8 +47,11 @@ public class LocationFenceVo implements Serializable {
@ApiModelProperty(value = "摄像头名称")
private String videoName;
@ApiModelProperty(value = "围栏类别")
private String fenceType;
@ApiModelProperty(value = "围栏类别code")
private Integer fenceType;
@ApiModelProperty(value = "围栏类别名称")
private String fenceTypeName;
@ApiModelProperty(value = "滞留时间(秒)")
private Integer residenceTime;
......@@ -64,10 +73,12 @@ public class LocationFenceVo implements Serializable {
.collect(Collectors.toSet());
return LocationFenceVo
.builder()
.id(locationFence.getId())
.name(locationFence.getName())
.mapName(locationFence.getMapName())
.videoName(locationFence.getVideo().getVideoName())
.fenceType(FenceTypeEnum.getByCode(locationFence.getFenceType()))
.fenceType(locationFence.getFenceType())
.fenceTypeName(FenceTypeEnum.getByCode(locationFence.getFenceType()))
.residenceTime(locationFence.getResidenceTime())
.threshold(locationFence.getThreshold())
.rules(collect)
......
......@@ -3,6 +3,10 @@ package com.yiring.app.vo.location.rule;
import cn.hutool.core.convert.Convert;
import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.yiring.app.constant.alarm.FenceTypeEnum;
import com.yiring.app.constant.alarm.RelevanceParamEnum;
import com.yiring.app.domain.location.LocationFenceRule;
import com.yiring.app.param.location.rule.RuleParam;
import io.swagger.annotations.ApiModel;
......@@ -29,15 +33,21 @@ public class LocationFenceRuleVo implements Serializable {
@Serial
private static final long serialVersionUID = -7774789748161552583L;
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty(value = "规则id", example = "1", required = true)
private Long id;
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty(value = "所属的围栏id", example = "1", required = true)
private Long fenceId;
@ApiModelProperty(value = "所属的围栏类别", example = "1", required = true)
@ApiModelProperty(value = "所属的围栏类别code", example = "1", required = true)
private Integer fenceType;
@ApiModelProperty(value = "所属的围栏类别名称", example = "重大危险源", required = true)
private String fenceTypeName;
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty(value = "所属的报警类别id", example = "1", required = true)
private Long alarmTypeId;
......@@ -48,6 +58,9 @@ public class LocationFenceRuleVo implements Serializable {
)
private Integer relevanceParamType;
@ApiModelProperty(value = "设置的关联参数类型名称", example = "最大人数", required = true)
private String relevanceParamTypeName;
private RuleVo ruleVo;
public static LocationFenceRuleVo transform(LocationFenceRule locationFenceRule) {
......@@ -59,8 +72,10 @@ public class LocationFenceRuleVo implements Serializable {
.id(locationFenceRule.getId())
.fenceId(locationFenceRule.getFence().getId())
.fenceType(locationFenceRule.getFence().getFenceType())
.fenceTypeName(FenceTypeEnum.getByCode(locationFenceRule.getFence().getFenceType()))
.alarmTypeId(locationFenceRule.getAlarmType().getId())
.relevanceParamType(locationFenceRule.getRelevanceParamType())
.relevanceParamTypeName(RelevanceParamEnum.getByCode(locationFenceRule.getRelevanceParamType()))
.ruleVo(ruleVo)
.build();
}
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.vo.location.rule;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
......@@ -26,6 +28,7 @@ public class RuleVo implements Serializable {
@Serial
private static final long serialVersionUID = 441241201908785930L;
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty(value = "选择的播放语音id", example = "1")
private Long voiceId;
......
......@@ -3,6 +3,7 @@ package com.yiring.app.web.alarm;
import com.yiring.app.constant.alarm.FenceTypeEnum;
import com.yiring.app.constant.alarm.RelevanceParamEnum;
import com.yiring.app.domain.alarm.AlarmType;
import com.yiring.app.param.alarm.AlarmConditionParam;
import com.yiring.app.param.alarm.AlarmTypeAddParam;
import com.yiring.app.param.alarm.AlarmTypeModifyParam;
......@@ -15,10 +16,12 @@ import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
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;
......@@ -72,6 +75,10 @@ public class AlarmTypeController {
@Valid AlarmConditionParam conditionParam,
@Valid PageParam pageParam
) {
if (Objects.isNull(pageParam.getSortField())) {
pageParam.setSortField(AlarmType.Fields.createTime);
pageParam.setSortOrder(Sort.Direction.DESC);
}
return alarmService.findByCondition(conditionParam, pageParam);
}
......@@ -91,7 +98,11 @@ public class AlarmTypeController {
@ApiOperation(value = "报警类型导出", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
@PostMapping("/exportAlarmType")
public void exportAlarmType(@Valid AlarmConditionParam conditionParam, HttpServletResponse response) {
alarmService.exportAlarmType(conditionParam, response);
public void exportAlarmType(
@Valid AlarmConditionParam conditionParam,
HttpServletResponse response,
@Valid PageParam pageParam
) {
alarmService.exportAlarmType(conditionParam, response, pageParam);
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.web.location.fence;
import com.yiring.app.domain.alarm.AlarmType;
import com.yiring.app.param.location.fence.LocationFenceAddParam;
import com.yiring.app.param.location.fence.LocationFenceConditionParam;
import com.yiring.app.param.location.fence.LocationFenceModifyParam;
import com.yiring.app.service.location.fence.LocationFenceService;
import com.yiring.app.vo.location.fence.LocationFenceSearchVo;
import com.yiring.app.vo.location.fence.LocationFenceVo;
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.Objects;
import javax.annotation.Resource;
import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Sort;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
......@@ -57,6 +62,10 @@ public class LocationFenceController {
@Valid LocationFenceConditionParam conditionParam,
@Valid PageParam pageParam
) {
if (Objects.isNull(pageParam.getSortField())) {
pageParam.setSortField(AlarmType.Fields.createTime);
pageParam.setSortOrder(Sort.Direction.DESC);
}
return locationFenceService.findList(conditionParam, pageParam);
}
......@@ -65,4 +74,14 @@ public class LocationFenceController {
public Result<LocationFenceVo> findById(@Valid IdParam param) {
return locationFenceService.findById(param);
}
@ApiOperation("根据围栏名称模糊查询围栏信息")
@ApiImplicitParam(value = "围栏名称", example = "生产", required = true, name = "name")
@PostMapping("/findByNameLike")
public Result<PageVo<LocationFenceSearchVo>> findByNameLike(String name) {
if (name == null) {
name = "";
}
return locationFenceService.findByNameLike(name);
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.web.location.rule;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author tml
* @version 1.0
* @date 2022/5/5 14:19
*/
@Slf4j
@Validated
@Api(tags = "LocationAlarmRuleController(电子围栏报警规则)")
@RestController
@RequestMapping("/alarm/rule")
public class LocationAlarmRuleController {}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论