提交 caa2e86a 作者: 涂茂林

feat:报警类型的增删改查,导出

上级 f6a96c21
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.app.constant.district; package com.yiring.app.constant.alarm;
import com.yiring.app.vo.KeyValueVo; import com.yiring.app.vo.CodeNameVo;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import lombok.Getter; import lombok.Getter;
/** /**
* 区域信息风险等级枚举 * 围栏类别枚举
* @author tml * @author tml
* @version 1.0 * @version 1.0
* @date 2022/4/26 10:57 * @date 2022/4/27 13:36
*/ */
public enum RiskGradeEnum { public enum FenceTypeEnum {
/** /**
* 蓝色(安全) * 普通围栏
*/ */
BLUE(1, "蓝"), ORDINARY(1, "普通围栏"),
/** /**
* 黄色(预警) * 特殊作业
*/ */
yellow(2, "黄"), SPECIAL(2, "特殊作业"),
/** /**
* 红色(异常) * 重大危险源
*/ */
RED(3, "红"); DANGEROUS(3, "重大危险源");
private static final List<CodeNameVo> LIST;
public static final int MIN = 1; public static final int MIN = 1;
public static final int MAX = 3; public static final int MAX = 3;
private static final List<KeyValueVo> LIST; public static final int TOTAL = 3;
static { static {
LIST = new ArrayList<>(); LIST = new ArrayList<>();
for (RiskGradeEnum item : values()) { for (FenceTypeEnum item : values()) {
LIST.add(KeyValueVo.builder().key(item.key).value(item.value).build()); LIST.add(CodeNameVo.builder().code(item.code).name(item.name).build());
} }
} }
@Getter @Getter
private final Integer key; private final Integer code;
@Getter @Getter
private final String value; private final String name;
RiskGradeEnum(Integer key, String value) { FenceTypeEnum(Integer code, String name) {
this.key = key; this.code = code;
this.value = value; this.name = name;
} }
/** /**
* 根据key获取value * 根据key获取value
* @param key 等级key * @param key 围栏类别key
* @return 等级 * @return 围栏类别
*/ */
public static String getByKey(Integer key) { public static String getByKey(Integer key) {
if (key != null) { if (key != null) {
for (RiskGradeEnum item : values()) { for (FenceTypeEnum item : values()) {
if (item.key.equals(key)) { if (item.code.equals(key)) {
return item.value; return item.name;
} }
} }
} }
return "未知等级"; return "未知围栏类别";
} }
/** /**
* 获取所有等级 * 获取所有围栏类别
* @return 所有等级集合 * @return 所有围栏类别集合
*/ */
public static List<KeyValueVo> getAll() { public static List<CodeNameVo> getAll() {
return LIST; return LIST;
} }
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.constant.alarm;
import com.yiring.app.vo.CodeNameVo;
import java.util.ArrayList;
import java.util.List;
import lombok.Getter;
/**
* 关联参数枚举
* @author tml
* @version 1.0
* @date 2022/4/27 13:43
*/
public enum RelevanceParamEnum {
/**
* 最大人数
*/
MAX_PEOPLE_NUMBER(1, "最大人数"),
/**
* 最小人数
*/
MIN_PEOPLE_NUMBER(2, "最小人数"),
/**
* 允许进入人员
*/
ALLOW_ENTRANCE(3, "允许进入人员"),
/**
* 不允许离开人员
*/
NOT_ALLOW_LEAVE(4, "不允许离开人员"),
/**
* 静止时长
*/
STATIC_DURATION(5, "静止时长(分钟)"),
/**
* 滞留时长
*/
RETENTION_DURATION(6, "滞留时长(分钟)"),
/**
* 触发报警距离
*/
TRIGGER_ALARM_DISTANCE(7, "触发报警距离");
private static final List<CodeNameVo> LIST;
public static final int MIN = 1;
public static final int MAX = 7;
public static final int TOTAL = 7;
static {
LIST = new ArrayList<>();
for (RelevanceParamEnum item : values()) {
LIST.add(CodeNameVo.builder().code(item.code).name(item.name).build());
}
}
@Getter
private final Integer code;
@Getter
private final String name;
RelevanceParamEnum(Integer code, String name) {
this.code = code;
this.name = name;
}
/**
* 根据key获取value
* @param key 关联参数key
* @return 关联参数
*/
public static String getByKey(Integer key) {
if (key != null) {
for (RelevanceParamEnum item : values()) {
if (item.code.equals(key)) {
return item.name;
}
}
}
return "未知关联参数";
}
/**
* 获取所有关联参数
* @return 所有关联参数集合
*/
public static List<CodeNameVo> getAll() {
return LIST;
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.domain.alarm;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
import javax.persistence.*;
import lombok.*;
import lombok.experimental.FieldNameConstants;
import org.hibernate.annotations.Comment;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Where;
import org.hibernate.snowflake.SnowflakeId;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
/**
* @author tml
* @version 1.0
* @date 2022/4/27 11:20
*/
@Getter
@Setter
@ToString
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldNameConstants
@Entity
@Where(clause = "deleted = false")
@Table(name = "BS_Alarm_Type")
@Comment("报警类型信息")
@EntityListeners(AuditingEntityListener.class)
public class AlarmType implements Serializable {
@Serial
private static final long serialVersionUID = -735021155587741700L;
@Id
@Comment("主键id")
@GeneratedValue(generator = SnowflakeId.GENERATOR)
@GenericGenerator(name = SnowflakeId.GENERATOR, strategy = SnowflakeId.Strategy.LONG)
private Long id;
@Comment("报警类型名称")
@Column(unique = true)
private String name;
@Comment("围栏类型")
private Integer fenceType;
@Comment("关联参数类型")
private Integer relevanceParam;
@Comment("备注")
private String comment;
@Comment("创建时间")
@CreatedDate
@Column(nullable = false)
private LocalDateTime createTime;
@Comment("最后修改时间")
@LastModifiedDate
@Column(nullable = false)
private LocalDateTime lastUpdateTime;
@Comment(value = "是否删除")
@Column(nullable = false)
Boolean deleted;
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.domain.alarm;
import java.io.Serializable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;
/**
* @author tml
* @version 1.0
* @date 2022/4/27 14:41
*/
@Repository
public interface AlarmTypeRepository
extends JpaRepository<AlarmType, Serializable>, JpaSpecificationExecutor<AlarmType> {
/**
* 查询名称是否存在
* @param name 名称
* @return true:存在 false:不存在
*/
Boolean existsByName(String name);
/**
* 根据名称查询
* @param name 名称
* @return 是否存在
*/
AlarmType findByName(String name);
}
...@@ -46,6 +46,7 @@ public class District implements Serializable { ...@@ -46,6 +46,7 @@ public class District implements Serializable {
private Long id; private Long id;
@Comment("区域信息名称") @Comment("区域信息名称")
@Column(unique = true)
private String name; private String name;
@Comment("风险等级") @Comment("风险等级")
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.excel.alarm;
import com.github.liaochong.myexcel.core.annotation.ExcelColumn;
import com.github.liaochong.myexcel.core.annotation.ExcelModel;
import com.yiring.app.constant.alarm.FenceTypeEnum;
import com.yiring.app.constant.alarm.RelevanceParamEnum;
import com.yiring.app.domain.alarm.AlarmType;
import java.io.Serial;
import java.io.Serializable;
import java.util.List;
import java.util.stream.Collectors;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author tml
* @version 1.0
* @date 2022/4/27 16:44
*/
@ExcelModel
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class AlarmTypeExcel implements Serializable {
@Serial
private static final long serialVersionUID = -2986256700153819605L;
@ExcelColumn(title = "名称")
private String name;
@ExcelColumn(title = "围栏类别")
private String fenceType;
@ExcelColumn(title = "关联参数")
private String relevanceParam;
@ExcelColumn(title = "备注", width = 15)
private String comment;
public static List<AlarmTypeExcel> transforms(List<AlarmType> alarmTypeList) {
return alarmTypeList.stream().map(AlarmTypeExcel::transform).collect(Collectors.toList());
}
public static AlarmTypeExcel transform(AlarmType alarmType) {
return AlarmTypeExcel
.builder()
.name(alarmType.getName())
.fenceType(FenceTypeEnum.getByKey(alarmType.getFenceType()))
.relevanceParam(RelevanceParamEnum.getByKey(alarmType.getRelevanceParam()))
.comment(alarmType.getComment())
.build();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.alarm;
import com.yiring.app.constant.alarm.FenceTypeEnum;
import com.yiring.app.constant.alarm.RelevanceParamEnum;
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;
import org.hibernate.validator.constraints.Range;
/**
* @author tml
* @version 1.0
* @date 2022/4/27 14:28
*/
@ApiModel("AlarmConditionParam(报警类型的条件param)")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class AlarmConditionParam implements Serializable {
@Serial
private static final long serialVersionUID = 7543624294916003641L;
@ApiModelProperty(value = "围栏类别", example = "1")
@Range(min = FenceTypeEnum.MIN, max = FenceTypeEnum.MAX, message = "请选择正确的围栏类别")
private Integer fenceType;
@ApiModelProperty(value = "关联参数", example = "1")
@Range(min = RelevanceParamEnum.MIN, max = RelevanceParamEnum.MAX, message = "请选择正确的关联参数")
private Integer relevanceParam;
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.alarm;
import com.yiring.app.constant.alarm.FenceTypeEnum;
import com.yiring.app.constant.alarm.RelevanceParamEnum;
import com.yiring.app.domain.alarm.AlarmType;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.Range;
/**
* @author tml
* @version 1.0
* @date 2022/4/27 11:28
*/
@ApiModel("AlarmTypeAddParam(报警类型的添加param)")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AlarmTypeAddParam implements Serializable {
@Serial
private static final long serialVersionUID = 6124966765550463652L;
@ApiModelProperty(value = "报警类型名称", example = "超员报警", required = true)
@NotEmpty(message = "报警类型名称不能为空")
@Length(max = 10, message = "区域名称不能超过10个字符")
private String name;
@ApiModelProperty(value = "围栏类别", example = "1", required = true)
@NotNull(message = "围栏类别不能为空")
@Range(min = FenceTypeEnum.MIN, max = FenceTypeEnum.MAX, message = "请选择正确的围栏类别")
private Integer fenceType;
@ApiModelProperty(value = "关联参数", example = "1", required = true)
@NotNull(message = "关联参数不能为空")
@Range(min = RelevanceParamEnum.MIN, max = RelevanceParamEnum.MAX, message = "请选择正确的关联参数")
private Integer relevanceParam;
@ApiModelProperty(value = "备注", example = "超员报警备注")
@Length(max = 255, message = "区域名称不能超过10个字符")
private String comment;
public AlarmType transform() {
return AlarmType
.builder()
.name(name)
.fenceType(fenceType)
.relevanceParam(relevanceParam)
.comment(comment)
.deleted(false)
.build();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.alarm;
import com.yiring.app.domain.alarm.AlarmType;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;
/**
* @author tml
* @version 1.0
* @date 2022/4/27 11:28
*/
@ApiModel("AlarmTypeModifyParam(报警类型修改param)")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AlarmTypeModifyParam implements Serializable {
@Serial
private static final long serialVersionUID = 6124966765550463652L;
@ApiModelProperty(value = "报警类型id", example = "1", required = true)
@NotNull(message = "报警类型id不能为空")
private Long id;
@ApiModelProperty(value = "报警类型名称", example = "超员报警", required = true)
@NotEmpty(message = "报警类型名称不能为空")
@Length(max = 10, message = "区域名称不能超过10个字符")
private String name;
@ApiModelProperty(value = "围栏类别", example = "1", required = true)
@NotNull(message = "围栏类别不能为空")
private Integer fenceType;
@ApiModelProperty(value = "关联参数", example = "1", required = true)
@NotNull(message = "关联参数不能为空")
private Integer relevanceParam;
@ApiModelProperty(value = "备注", example = "超员报警备注")
@Length(max = 255, message = "区域名称不能超过10个字符")
private String comment;
public AlarmType transform() {
return AlarmType
.builder()
.id(id)
.name(name)
.fenceType(fenceType)
.relevanceParam(relevanceParam)
.comment(comment)
.deleted(false)
.build();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.alarm;
import com.yiring.app.param.alarm.AlarmConditionParam;
import com.yiring.app.param.alarm.AlarmTypeAddParam;
import com.yiring.app.param.alarm.AlarmTypeModifyParam;
import com.yiring.app.vo.alarm.AlarmTypeVo;
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
* @version 1.0
* @date 2022/4/27 14:34
*/
public interface AlarmService {
/**
* 添加报警类型
* @param param 报警类型信息
* @return 是否成功
*/
Result<String> addAlarmType(AlarmTypeAddParam param);
/**
* 修改报警类型
* @param param 报警类型信息
* @return 是否成功
*/
Result<String> modifyAlarmType(AlarmTypeModifyParam param);
/**
* 删除报警类型
* @param param 报警类型id
* @return 是否成功
*/
Result<String> removeAlarmType(IdParam param);
/**
* 根据id查询报警类型
* @param param 报警类型id
* @return 报警类型
*/
Result<AlarmTypeVo> findById(IdParam param);
/**
* 根据条件查询
* @param conditionParam 条件
* @param pageParam 分页参数
* @return 报警类型列表
*/
Result<PageVo<AlarmTypeVo>> findByCondition(AlarmConditionParam conditionParam, PageParam pageParam);
/**
* 报警类型导出
* @param conditionParam 条件
* @param response response
*/
void exportAlarmType(AlarmConditionParam conditionParam, HttpServletResponse response);
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.alarm.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.excel.alarm.AlarmTypeExcel;
import com.yiring.app.param.alarm.AlarmConditionParam;
import com.yiring.app.param.alarm.AlarmTypeAddParam;
import com.yiring.app.param.alarm.AlarmTypeModifyParam;
import com.yiring.app.service.alarm.AlarmService;
import com.yiring.app.util.JpaUtil;
import com.yiring.app.vo.alarm.AlarmTypeVo;
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.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;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* @author tml
* @version 1.0
* @date 2022/4/27 14:39
*/
@Slf4j
@Service
@Transactional(rollbackFor = Exception.class)
public class AlarmServiceImpl implements AlarmService {
@Resource
private AlarmTypeRepository alarmTypeRepository;
@Override
public Result<String> addAlarmType(AlarmTypeAddParam param) {
Boolean exists = alarmTypeRepository.existsByName(param.getName());
if (exists) {
return Result.no(Status.EXPECTATION_FAILED, "名称已被占用");
}
alarmTypeRepository.saveAndFlush(param.transform());
return Result.ok();
}
@Override
public Result<String> modifyAlarmType(AlarmTypeModifyParam param) {
AlarmType alarmType;
AlarmType byName = alarmTypeRepository.findByName(param.getName());
if (byName != null) {
if (!byName.getId().equals(param.getId())) {
return Result.no(Status.EXPECTATION_FAILED, "名称已被占用");
}
alarmType = byName;
} else {
Optional<AlarmType> optional = alarmTypeRepository.findById(param.getId());
if (optional.isEmpty()) {
return Result.no(Status.EXPECTATION_FAILED, "修改的报警类型不存在");
}
alarmType = optional.get();
}
JpaUtil.copyNotNullProperties(param, alarmType);
return Result.ok();
}
@Override
public Result<String> removeAlarmType(IdParam param) {
Optional<AlarmType> optional = alarmTypeRepository.findById(param.getId());
if (optional.isEmpty()) {
return Result.no(Status.EXPECTATION_FAILED, "删除的报警类型不存在");
}
optional.get().setDeleted(true);
return Result.ok();
}
@Override
public Result<AlarmTypeVo> findById(IdParam param) {
Optional<AlarmType> optional = alarmTypeRepository.findById(param.getId());
if (optional.isEmpty()) {
return Result.no(Status.EXPECTATION_FAILED, "查询的报警类型不存在");
}
AlarmTypeVo vo = AlarmTypeVo.transform(optional.get());
return Result.ok(vo);
}
@Override
public Result<PageVo<AlarmTypeVo>> findByCondition(AlarmConditionParam conditionParam, PageParam pageParam) {
Pageable pageable = PageParam.toPageable(pageParam);
Specification<AlarmType> specification = getSpecification(conditionParam);
Page<AlarmType> page = alarmTypeRepository.findAll(specification, pageable);
List<AlarmTypeVo> list = page.get().map(AlarmTypeVo::transform).collect(Collectors.toList());
PageVo<AlarmTypeVo> pageVo = PageVo.build(list, page.getTotalElements());
return Result.ok(pageVo);
}
@Override
public void exportAlarmType(AlarmConditionParam conditionParam, HttpServletResponse response) {
Specification<AlarmType> specification = getSpecification(conditionParam);
List<AlarmType> alarmTypeList = alarmTypeRepository.findAll(specification);
List<AlarmTypeExcel> list = AlarmTypeExcel.transforms(alarmTypeList);
try (
DefaultStreamExcelBuilder<AlarmTypeExcel> streamExcelBuilder = DefaultStreamExcelBuilder
.of(AlarmTypeExcel.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(list);
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<AlarmType> getSpecification(AlarmConditionParam conditionParam) {
return (root, query, criteriaBuilder) -> {
List<Predicate> list = new ArrayList<>();
if (conditionParam.getFenceType() != null) {
list.add(criteriaBuilder.equal(root.get("fenceType"), conditionParam.getFenceType()));
}
if (conditionParam.getRelevanceParam() != null) {
list.add(criteriaBuilder.equal(root.get("relevanceParam"), conditionParam.getRelevanceParam()));
}
Predicate[] array = list.toArray(new Predicate[list.size()]);
return criteriaBuilder.and(array);
};
}
}
...@@ -11,7 +11,7 @@ import lombok.Data; ...@@ -11,7 +11,7 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
/** /**
* key-value格式数据Vo * code-name格式数据Vo
* @author tml * @author tml
* @version 1.0 * @version 1.0
* @date 2022/4/26 11:02 * @date 2022/4/26 11:02
...@@ -21,14 +21,14 @@ import lombok.NoArgsConstructor; ...@@ -21,14 +21,14 @@ import lombok.NoArgsConstructor;
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class KeyValueVo implements Serializable { public class CodeNameVo implements Serializable {
@Serial @Serial
private static final long serialVersionUID = -7565315836652536620L; private static final long serialVersionUID = -7565315836652536620L;
@ApiModelProperty(value = "key", example = "1", required = true) @ApiModelProperty(value = "code", example = "1", required = true)
private Integer key; private Integer code;
@ApiModelProperty(value = "value", example = "值", required = true) @ApiModelProperty(value = "name", example = "名称", required = true)
private String value; private String name;
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.vo.alarm;
import com.yiring.app.constant.alarm.FenceTypeEnum;
import com.yiring.app.constant.alarm.RelevanceParamEnum;
import com.yiring.app.domain.alarm.AlarmType;
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/4/27 11:55
*/
@ApiModel("AlarmTypeVo(报警信息)")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AlarmTypeVo implements Serializable {
@Serial
private static final long serialVersionUID = 4743016000753778197L;
@ApiModelProperty(value = "报警类型id", example = "1518841086628335616")
private Long id;
@ApiModelProperty(value = "报警类型名称", example = "超员报警")
private String name;
@ApiModelProperty(value = "围栏类别", example = "普通围栏")
private String fenceType;
@ApiModelProperty(value = "关联参数", example = "最多人数")
private String relevanceParam;
@ApiModelProperty(value = "备注", example = "备注")
private String comment;
public static AlarmTypeVo transform(AlarmType alarmType) {
return AlarmTypeVo
.builder()
.id(alarmType.getId())
.name(alarmType.getName())
.fenceType(FenceTypeEnum.getByKey(alarmType.getFenceType()))
.relevanceParam(RelevanceParamEnum.getByKey(alarmType.getRelevanceParam()))
.comment(alarmType.getComment())
.build();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.web.alarm;
import com.yiring.app.constant.alarm.FenceTypeEnum;
import com.yiring.app.constant.alarm.RelevanceParamEnum;
import com.yiring.app.param.alarm.AlarmConditionParam;
import com.yiring.app.param.alarm.AlarmTypeAddParam;
import com.yiring.app.param.alarm.AlarmTypeModifyParam;
import com.yiring.app.service.alarm.AlarmService;
import com.yiring.app.vo.CodeNameVo;
import com.yiring.app.vo.alarm.AlarmTypeVo;
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.ApiOperation;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j;
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;
/**
* 报警类型控制器
* @author tml
* @version 1.0
* @date 2022/4/27 14:18
*/
@Slf4j
@Validated
@Api(tags = "AlarmTypeController(报警类型)")
@RestController
@RequestMapping("/alarm/type")
public class AlarmTypeController {
@Resource
private AlarmService alarmService;
@ApiOperation(value = "添加报警类型")
@PostMapping("/addAlarmType")
public Result<String> addAlarmType(@Valid AlarmTypeAddParam param) {
return alarmService.addAlarmType(param);
}
@ApiOperation(value = "修改报警类型")
@PostMapping("/modifyAlarmType")
public Result<String> modifyAlarmType(@Valid AlarmTypeModifyParam param) {
return alarmService.modifyAlarmType(param);
}
@ApiOperation(value = "删除报警类型")
@PostMapping("/removeAlarmType")
public Result<String> removeAlarmType(@Valid IdParam param) {
return alarmService.removeAlarmType(param);
}
@ApiOperation(value = "根据id查询报警类型")
@PostMapping("/findById")
public Result<AlarmTypeVo> findById(@Valid IdParam param) {
return alarmService.findById(param);
}
@ApiOperation(value = "根据条件查询")
@PostMapping("/findByCondition")
public Result<PageVo<AlarmTypeVo>> findByCondition(
@Valid AlarmConditionParam conditionParam,
@Valid PageParam pageParam
) {
return alarmService.findByCondition(conditionParam, pageParam);
}
@ApiOperation(value = "获取所有围栏类别")
@GetMapping("/findAllFenceType")
public Result<PageVo<CodeNameVo>> findAllFenceType() {
PageVo<CodeNameVo> pageVo = PageVo.build(FenceTypeEnum.getAll(), FenceTypeEnum.TOTAL);
return Result.ok(pageVo);
}
@ApiOperation(value = "获取所有关联参数")
@GetMapping("/findAllRelevanceParam")
public Result<PageVo<CodeNameVo>> findAllRelevanceParam() {
PageVo<CodeNameVo> pageVo = PageVo.build(RelevanceParamEnum.getAll(), RelevanceParamEnum.TOTAL);
return Result.ok(pageVo);
}
@ApiOperation(value = "报警类型导出", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
@PostMapping("/exportAlarmType")
public void exportAlarmType(@Valid AlarmConditionParam conditionParam, HttpServletResponse response) {
alarmService.exportAlarmType(conditionParam, response);
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论