提交 f39e4fc3 作者: 涂茂林

feat:风险预警管理除导入以外的所有功能

上级 c9267941
......@@ -67,7 +67,7 @@ public enum FenceTypeEnum {
}
}
}
return "未知围栏类别";
throw new RuntimeException("FenceTypeEnum获取未知围栏类别");
}
/**
......
......@@ -37,7 +37,7 @@ public enum InformMannerEnum {
private static final List<CodeNameVo> LIST;
static {
LIST = new ArrayList<CodeNameVo>();
LIST = new ArrayList<>();
for (InformMannerEnum item : values()) {
LIST.add(new CodeNameVo(item.code, item.name));
}
......@@ -54,7 +54,7 @@ public enum InformMannerEnum {
return item.getName();
}
}
return "未知通知类型";
throw new RuntimeException("InformMannerEnum获取未知通知类型");
}
public static List<CodeNameVo> getAll() {
......
......@@ -49,7 +49,7 @@ public enum ReceiveStatusEnum {
return item.getName();
}
}
return "未知状态";
throw new RuntimeException("ReceiveStatusEnum获取未知状态");
}
public static List<CodeNameVo> findAll() {
......
......@@ -87,7 +87,7 @@ public enum RelevanceParamEnum {
}
}
}
return "未知关联参数";
throw new RuntimeException("RelevanceParamEnum获取未知关联参数");
}
/**
......
......@@ -58,6 +58,6 @@ public enum RehearsalPlanStatusEnum {
return item.getName();
}
}
return "未知状态";
throw new RuntimeException("RehearsalPlanStatusEnum获取异常状态");
}
}
......@@ -63,6 +63,6 @@ public enum RiskLevelEnum {
return item.getName();
}
}
return "未知风险";
throw new RuntimeException("RiskLevelEnum获取未知风险");
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.constant.risk;
import com.yiring.app.excel.risk.RiskWarnExcel;
import java.util.ArrayList;
import java.util.List;
/**
* @author tml
* @version 1.0
* @date 2022/5/24 16:32
*/
public class TemplateList {
private static final List<RiskWarnExcel> LIST = new ArrayList<>();
static {
LIST.add(
RiskWarnExcel
.builder()
.workAreaName("BTC产品库房")
.install("产品库房北侧中间立柱东1")
.monitoring("有毒气体报警器")
.locationNum("AT-4736")
.range("0-1.6")
.unit("ppm")
.lowLow("0.15")
.low("0.2")
.high("0.5")
.highHigh("0.55")
.flame("")
.remark("注意:工区、安装位置、监控参数、位号为必填,导入时备注这一列可以删除")
.build()
);
LIST.add(
RiskWarnExcel
.builder()
.workAreaName("计量槽")
.install("1号槽液位")
.monitoring("液位")
.locationNum("PI-2107A")
.range("-27.18-7.32KPa")
.unit("ppm")
.lowLow("3%")
.low("5%")
.high("70%")
.highHigh("73%")
.flame("")
.remark("注意:区间要么都为百分比要么都不为百分比")
.build()
);
LIST.add(
RiskWarnExcel
.builder()
.workAreaName("合成盐酸")
.install("1号炉一楼")
.monitoring("火焰检测")
.locationNum("BSA-1401A")
.range("")
.unit("")
.lowLow("")
.low("")
.high("")
.highHigh("")
.flame("1")
.remark("注意:火焰检测在报警值(熄灭)这里添加预警值")
.build()
);
}
public static List<RiskWarnExcel> getTemplateList() {
return LIST;
}
}
......@@ -9,23 +9,33 @@ import lombok.Getter;
/**
* @author tml
* @version 1.0
* @date 2022/5/23 14:26
* @date 2022/5/23 17:01
*/
public enum ThresholdType {
public enum ThresholdStatusEnum {
/**
* 普通数值
* 低低
*/
COMMON_VALUE(1, "普通数值"),
LOW_LOW(1, "低低"),
/**
* 百分比
*
*/
PERCENTAGE_VALUE(2, "百分比"),
LOW(2, "低"),
/**
* 仅标志一种状态
*
*/
CONSTANT(3, "仅标志一种状态");
HIGH(3, "高"),
/**
* 高高
*/
HIGH_HIGH(4, "高高"),
/**
* 熄灭
*/
FLAME_EXTINGUISH(5, "熄灭");
@Getter
private final Integer code;
......@@ -36,26 +46,26 @@ public enum ThresholdType {
private static final List<CodeNameVo> LIST = new ArrayList<>();
static {
for (ThresholdType item : values()) {
for (ThresholdStatusEnum item : values()) {
LIST.add(new CodeNameVo(item.code, item.name));
}
}
ThresholdType(Integer code, String name) {
ThresholdStatusEnum(Integer code, String name) {
this.code = code;
this.name = name;
}
public String getByCode(Integer code) {
for (ThresholdType item : values()) {
public static String getByCode(Integer code) {
for (ThresholdStatusEnum item : values()) {
if (item.code.equals(code)) {
return item.getName();
}
}
return "未知区间类型";
throw new RuntimeException("ThresholdStatus获取异常状态");
}
public List<CodeNameVo> findAll() {
public static List<CodeNameVo> getAll() {
return LIST;
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.design.strategy.fence;
import com.yiring.app.constant.alarm.RelevanceParamEnum;
import com.yiring.app.constant.alarm.FenceTypeEnum;
import com.yiring.app.design.strategy.IParamInitStrategy;
import com.yiring.app.param.location.rule.LocationFenceRuleAddParam;
import com.yiring.common.core.Result;
import org.springframework.stereotype.Component;
/**
* 重大危险源
* @author tml
* @version 1.0
* @date 2022/4/29 11:08
......@@ -16,7 +17,7 @@ import org.springframework.stereotype.Component;
public class DangerousStrategy implements IParamInitStrategy<LocationFenceRuleAddParam> {
public DangerousStrategy() {
Integer fenceType = RelevanceParamEnum.MAX_PEOPLE_NUMBER.getCode();
Integer fenceType = FenceTypeEnum.DANGEROUS.getCode();
LocationFenceTypeContext.register(fenceType, this);
}
......
......@@ -44,16 +44,26 @@ public class AllowEntranceStrategy implements IParamInitStrategy<LocationFenceRu
if (CollectionUtils.isEmpty(timeAndUser)) {
return Result.no(Status.EXPECTATION_FAILED, "请至少配置一条允许进入人员的规则");
}
if (timeAndUser.size() == 1 && CollectionUtils.isEmpty(timeAndUser.get(0).getTime())) {
param.getRuleParam().setTimeAndUserAll();
}
for (TimeAndUserParam item : timeAndUser) {
if (CollectionUtils.isEmpty(item.getUser())) {
return Result.no(Status.EXPECTATION_FAILED, "请至少配置一个允许进入的人员");
}
}
ruleParam.setDuration(-1);
ruleParam.setDistance(-1);
//如果只设置星期没有设置时间,则默认时间是全天
for (TimeAndUserParam item : timeAndUser) {
for (TimeParam time : item.getTime()) {
if (time.getWeek() != null) {
if (time.getBeginTime() == null) {
time.setBeginTime("00:00:00");
}
if (time.getEndTime() == null) {
time.setEndTime("23:59:59");
}
}
}
}
ruleParam.setDuration(null);
ruleParam.setDistance(null);
ruleParam.setTimeAndNumber(new ArrayList<>());
return Result.ok();
}
......@@ -71,9 +81,9 @@ public class AllowEntranceStrategy implements IParamInitStrategy<LocationFenceRu
TimeAndUserParam timeAndUserParam = null;
//筛选在当前时间生效的配置
for (TimeAndUserParam item : timeAndUserParamList) {
if (TimeUtil.judgeWeek(LocalDateTime.now(), item.getWeek())) {
for (TimeParam time : item.getTime()) {
if (TimeUtil.judgeTime(LocalDateTime.now(), time.getBeginTime(), time.getEndTome())) {
if (TimeUtil.judgeWeek(LocalDateTime.now(), time.getWeek())) {
if (TimeUtil.judgeTime(LocalDateTime.now(), time.getBeginTime(), time.getEndTime())) {
timeAndUserParam = item;
break;
}
......
......@@ -47,17 +47,27 @@ public class MaxPeopleNumberStrategy implements IParamInitStrategy<LocationFence
if (CollectionUtils.isEmpty(timeAndNumber)) {
return Result.no(Status.EXPECTATION_FAILED, "请至少配置一条最多人数的规则");
}
if (timeAndNumber.size() == 1 && CollectionUtils.isEmpty(timeAndNumber.get(0).getTime())) {
param.getRuleParam().setTimeAndNumberAll();
}
for (TimeAndNumberParam item : timeAndNumber) {
if (item.getNumber() == null || item.getNumber() < 0) {
Result.no(Status.EXPECTATION_FAILED, "最大人数不能空或小于零");
}
}
//如果只设置星期没有设置时间,则默认时间是全天
for (TimeAndNumberParam item : timeAndNumber) {
for (TimeParam time : item.getTime()) {
if (time.getWeek() != null) {
if (time.getBeginTime() == null) {
time.setBeginTime("00:00:00");
}
if (time.getEndTime() == null) {
time.setEndTime("23:59:59");
}
}
}
}
//将时间和距离都设为-1
ruleParam.setDuration(-1);
ruleParam.setDistance(-1);
ruleParam.setDuration(null);
ruleParam.setDistance(null);
ArrayList<TimeAndUserParam> list = new ArrayList<>();
ruleParam.setTimeAndUser(list);
return Result.ok();
......@@ -78,11 +88,11 @@ public class MaxPeopleNumberStrategy implements IParamInitStrategy<LocationFence
StringBuilder end = new StringBuilder();
//筛选在当前时间生效的配置
for (TimeAndNumberParam item : timeAndNumberParamList) {
if (TimeUtil.judgeWeek(LocalDateTime.now(), item.getWeek())) {
for (TimeParam time : item.getTime()) {
if (TimeUtil.judgeTime(LocalDateTime.now(), time.getBeginTime(), time.getEndTome())) {
begin.append(item.getWeek()).append(" ").append(time.getBeginTime());
end.append(item.getWeek()).append(" ").append(time.getEndTome());
if (TimeUtil.judgeWeek(LocalDateTime.now(), time.getWeek())) {
if (TimeUtil.judgeTime(LocalDateTime.now(), time.getBeginTime(), time.getEndTime())) {
begin.append(time.getWeek()).append(" ").append(time.getBeginTime());
end.append(time.getWeek()).append(" ").append(time.getEndTime());
timeAndNumberParam = item;
break;
}
......
......@@ -47,17 +47,27 @@ public class MinPeopleNumberStrategy implements IParamInitStrategy<LocationFence
if (CollectionUtils.isEmpty(timeAndNumber)) {
return Result.no(Status.EXPECTATION_FAILED, "请至少配置一条最少人数的规则");
}
if (timeAndNumber.size() == 1 && CollectionUtils.isEmpty(timeAndNumber.get(0).getTime())) {
param.getRuleParam().setTimeAndNumberAll();
}
for (TimeAndNumberParam item : timeAndNumber) {
if (item.getNumber() == null || item.getNumber() < 0) {
Result.no(Status.EXPECTATION_FAILED, "最大人数不能空或小于零");
}
}
//如果只设置星期没有设置时间,则默认时间是全天
for (TimeAndNumberParam item : timeAndNumber) {
for (TimeParam time : item.getTime()) {
if (time.getWeek() != null) {
if (time.getBeginTime() == null) {
time.setBeginTime("00:00:00");
}
if (time.getEndTime() == null) {
time.setEndTime("23:59:59");
}
}
}
}
//将时间和距离都设为-1
ruleParam.setDuration(-1);
ruleParam.setDistance(-1);
ruleParam.setDuration(null);
ruleParam.setDistance(null);
ArrayList<TimeAndUserParam> list = new ArrayList<>();
ruleParam.setTimeAndUser(list);
return Result.ok();
......@@ -78,11 +88,11 @@ public class MinPeopleNumberStrategy implements IParamInitStrategy<LocationFence
StringBuilder end = new StringBuilder();
//筛选在当前时间生效的配置
for (TimeAndNumberParam item : timeAndNumberParamList) {
if (TimeUtil.judgeWeek(LocalDateTime.now(), item.getWeek())) {
for (TimeParam time : item.getTime()) {
if (TimeUtil.judgeTime(LocalDateTime.now(), time.getBeginTime(), time.getEndTome())) {
begin.append(item.getWeek()).append(" ").append(time.getBeginTime());
end.append(item.getWeek()).append(" ").append(time.getEndTome());
if (TimeUtil.judgeWeek(LocalDateTime.now(), time.getWeek())) {
if (TimeUtil.judgeTime(LocalDateTime.now(), time.getBeginTime(), time.getEndTime())) {
begin.append(time.getWeek()).append(" ").append(time.getBeginTime());
end.append(time.getWeek()).append(" ").append(time.getEndTime());
timeAndNumberParam = item;
break;
}
......
......@@ -47,16 +47,26 @@ public class NotAllowLeaveStrategy implements IParamInitStrategy<LocationFenceRu
if (CollectionUtils.isEmpty(timeAndUser)) {
return Result.no(Status.EXPECTATION_FAILED, "请至少配置一条不允许离开人员的规则");
}
if (timeAndUser.size() == 1 && CollectionUtils.isEmpty(timeAndUser.get(0).getTime())) {
param.getRuleParam().setTimeAndUserAll();
}
for (TimeAndUserParam item : timeAndUser) {
if (CollectionUtils.isEmpty(item.getUser())) {
return Result.no(Status.EXPECTATION_FAILED, "请至少配置一个不允许离开的人员");
}
}
ruleParam.setDuration(-1);
ruleParam.setDistance(-1);
//如果只设置星期没有设置时间,则默认时间是全天
for (TimeAndUserParam item : timeAndUser) {
for (TimeParam time : item.getTime()) {
if (time.getWeek() != null) {
if (time.getBeginTime() == null) {
time.setBeginTime("00:00:00");
}
if (time.getEndTime() == null) {
time.setEndTime("23:59:59");
}
}
}
}
ruleParam.setDuration(null);
ruleParam.setDistance(null);
ruleParam.setTimeAndNumber(new ArrayList<>());
return Result.ok();
}
......@@ -76,12 +86,12 @@ public class NotAllowLeaveStrategy implements IParamInitStrategy<LocationFenceRu
StringBuilder end = new StringBuilder();
//筛选在当前时间生效的配置
for (TimeAndUserParam item : timeAndUserParamList) {
if (TimeUtil.judgeWeek(LocalDateTime.now(), item.getWeek())) {
for (TimeParam time : item.getTime()) {
if (TimeUtil.judgeTime(LocalDateTime.now(), time.getBeginTime(), time.getEndTome())) {
begin.append(item.getWeek()).append(" ").append(time.getBeginTime());
end.append(item.getWeek()).append(" ").append(time.getEndTome());
if (TimeUtil.judgeWeek(LocalDateTime.now(), time.getWeek())) {
if (TimeUtil.judgeTime(LocalDateTime.now(), time.getBeginTime(), time.getEndTime())) {
timeAndUserParam = item;
begin.append(time.getWeek()).append(" ").append(time.getBeginTime());
end.append(time.getWeek()).append(" ").append(time.getEndTime());
break;
}
}
......
......@@ -44,7 +44,7 @@ public class RetentionDurationStrategy implements IParamInitStrategy<LocationFen
if (ruleParam.getDuration() == null || ruleParam.getDuration() < 0) {
return Result.no(Status.EXPECTATION_FAILED, "滞留时长异常");
}
ruleParam.setDistance(-1);
ruleParam.setDistance(null);
ruleParam.setTimeAndUser(new ArrayList<>());
ruleParam.setTimeAndNumber(new ArrayList<>());
return Result.ok();
......
......@@ -42,7 +42,7 @@ public class StaticDurationStrategy implements IParamInitStrategy<LocationFenceR
if (ruleParam.getDuration() == null || ruleParam.getDuration() < 0) {
return Result.no(Status.EXPECTATION_FAILED, "静止时长异常");
}
ruleParam.setDistance(-1);
ruleParam.setDistance(null);
ruleParam.setTimeAndUser(new ArrayList<>());
ruleParam.setTimeAndNumber(new ArrayList<>());
return Result.ok();
......
......@@ -48,7 +48,7 @@ public class TriggerAlarmDistanceStrategy implements IParamInitStrategy<Location
if (ruleParam.getDistance() == null || ruleParam.getDistance() < 0) {
return Result.no(Status.EXPECTATION_FAILED, "触发报警距离异常");
}
ruleParam.setDuration(-1);
ruleParam.setDuration(null);
ruleParam.setTimeAndUser(new ArrayList<>());
ruleParam.setTimeAndNumber(new ArrayList<>());
return Result.ok();
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.domain.risk;
import com.yiring.app.domain.workArea.WorkArea;
import com.yiring.common.domain.BasicEntity;
import java.io.Serial;
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.*;
import lombok.*;
import lombok.experimental.FieldNameConstants;
import lombok.experimental.SuperBuilder;
import org.hibernate.annotations.Comment;
import org.locationtech.jts.geom.Point;
......@@ -20,7 +23,7 @@ import org.locationtech.jts.geom.Point;
@Getter
@Setter
@ToString
@Builder
@SuperBuilder(toBuilder = true)
@NoArgsConstructor
@AllArgsConstructor
@FieldNameConstants
......@@ -32,7 +35,10 @@ public class RiskWarn extends BasicEntity implements Serializable {
@Serial
private static final long serialVersionUID = 1345477064611048638L;
//todo 工区
@Comment("所属工区")
@ManyToOne
@JoinColumn(name = "workArea_id")
private WorkArea workArea;
@Comment("安装位置")
private String install;
......@@ -48,10 +54,10 @@ public class RiskWarn extends BasicEntity implements Serializable {
private String locationNum;
@Comment("量程起始值")
private Integer min;
private BigDecimal min;
@Comment("量程结束值")
private Integer max;
private BigDecimal max;
@Comment("量程单位")
private String unit;
......@@ -59,8 +65,9 @@ public class RiskWarn extends BasicEntity implements Serializable {
@Comment("启用")
private Boolean enable;
@ToString.Exclude
@Comment("阈值区间信息")
@Builder.Default
@OneToMany(mappedBy = "riskWarn")
@ToString.Exclude
private Set<Threshold> thresholds = new HashSet<>();
private List<Threshold> thresholds = new ArrayList<>();
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.domain.risk;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Set;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
/**
* @author tml
* @version 1.0
* @date 2022/5/23 17:58
*/
@Repository
public interface RiskWarnRepository extends JpaRepository<RiskWarn, Serializable>, JpaSpecificationExecutor<RiskWarn> {
/**
* 批量启用或停用
* @param ids ids
* @param enable 启用或停用
* @param now 当前时间
* @return 修改的条数
*/
@Query(value = "UPDATE RiskWarn SET enable = :enable, updateTime = :now WHERE id IN (:ids)")
@Modifying
int batchEnable(@Param("ids") Set<Long> ids, @Param("enable") boolean enable, @Param("now") LocalDateTime now);
}
......@@ -7,45 +7,43 @@ import java.io.Serializable;
import javax.persistence.*;
import lombok.*;
import lombok.experimental.FieldNameConstants;
import lombok.experimental.SuperBuilder;
import org.hibernate.annotations.Comment;
/**
* @author tml
* @version 1.0
* @date 2022/5/20 17:42
* @date 2022/5/24 11:21
*/
@Getter
@Setter
@ToString
@Builder
@SuperBuilder(toBuilder = true)
@NoArgsConstructor
@AllArgsConstructor
@FieldNameConstants
@Entity
@Table(name = "BS_THRESHOLD")
@Comment("风险预警下的阈值设置")
@Comment("阈值区间信息")
public class Threshold extends BasicEntity implements Serializable {
@Serial
private static final long serialVersionUID = 5075164198170220832L;
private static final long serialVersionUID = 3115736944401082777L;
@ManyToOne
@JoinColumn(name = "risk_warn_id")
@Comment("风险预警")
@Comment("对应的风险预警信息")
private RiskWarn riskWarn;
@Comment("阈值区间起始值")
private Integer min;
private String min;
@Comment("阈值区间结束值")
private Integer max;
@Comment("阈值区间的类型:1-普通数值,2-百分比,3-仅标志一种状态,如火焰熄灭")
private Integer type;
private String max;
@Comment("阈值状态")
private String status;
private Integer status;
@Comment("风险等级:1-红色风险,2-橙色风险,3-黄色风险,4-蓝色风险")
@Comment("风险等级")
private Integer riskLevel;
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.excel.risk;
import com.github.liaochong.myexcel.core.annotation.ExcelColumn;
import com.github.liaochong.myexcel.core.annotation.ExcelModel;
import com.yiring.app.constant.risk.ThresholdStatusEnum;
import com.yiring.app.domain.risk.RiskWarn;
import com.yiring.app.domain.risk.Threshold;
import java.io.Serial;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author tml
* @version 1.0
* @date 2022/5/24 11:17
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@ExcelModel
public class RiskWarnExcel implements Serializable {
@Serial
private static final long serialVersionUID = -535906627975355631L;
@ExcelColumn(title = "工区", width = 15)
private String workAreaName;
@ExcelColumn(title = "安装位置", width = 15)
private String install;
@ExcelColumn(title = "监控参数", width = 15)
private String monitoring;
@ExcelColumn(title = "位号", width = 10)
private String locationNum;
@ExcelColumn(title = "量程", width = 10)
private String range;
@ExcelColumn(title = "量程单位", width = 10)
private String unit;
@ExcelColumn(title = "报警值(低低)", width = 10)
private String lowLow;
@ExcelColumn(title = "报警值(低)", width = 10)
private String low;
@ExcelColumn(title = "报警值(高)", width = 10)
private String high;
@ExcelColumn(title = "报警值(高高)", width = 10)
private String highHigh;
@ExcelColumn(title = "报警值(熄灭)", width = 10)
private String flame;
@ExcelColumn(title = "备注", width = 40)
private String remark;
public static RiskWarnExcel transform(RiskWarn riskWarn) {
String range = riskWarn.getMin() + " - " + riskWarn.getMax();
Map<Integer, List<Threshold>> map = riskWarn
.getThresholds()
.stream()
.collect(Collectors.groupingBy(Threshold::getStatus));
String lowLow = map.get(ThresholdStatusEnum.LOW_LOW.getCode()).get(0).getMin();
String low = map.get(ThresholdStatusEnum.LOW.getCode()).get(0).getMin();
String high = map.get(ThresholdStatusEnum.HIGH.getCode()).get(0).getMin();
String highHigh = map.get(ThresholdStatusEnum.HIGH_HIGH.getCode()).get(0).getMin();
String flame = map.get(ThresholdStatusEnum.FLAME_EXTINGUISH.getCode()).get(0).getMin();
return RiskWarnExcel
.builder()
.workAreaName(riskWarn.getWorkArea().getWorkAreaName())
.install(riskWarn.getInstall())
.monitoring(riskWarn.getMonitoring())
.locationNum(riskWarn.getLocationNum())
.range(range)
.unit(riskWarn.getUnit())
.lowLow(lowLow)
.low(low)
.high(high)
.highHigh(highHigh)
.flame(flame)
.build();
}
}
......@@ -6,7 +6,7 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import java.util.HashSet;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
......@@ -58,23 +58,25 @@ public class RuleParam implements Serializable {
*/
public void setTimeAndNumberAll() {
Integer number = timeAndNumber.get(0).getNumber();
HashSet<TimeParam> set = new HashSet<>();
TimeParam timeParam = TimeParam.builder().beginTime("00:00:00").endTome("23:59:59").build();
timeAndNumber =
TimeUtil.WEEK
List<TimeParam> list = TimeUtil.WEEK
.stream()
.map(e -> TimeAndNumberParam.builder().week(e).number(number).time(set).build())
.map(e -> TimeParam.builder().week(e).beginTime("00:00:00").endTime("23:59:59").build())
.collect(Collectors.toList());
TimeAndNumberParam timeAndNumberParam = TimeAndNumberParam.builder().number(number).time(list).build();
List<TimeAndNumberParam> arrayList = new ArrayList<>();
arrayList.add(timeAndNumberParam);
timeAndNumber = arrayList;
}
public void setTimeAndUserAll() {
Set<RelevanceUserParam> user = timeAndUser.get(0).getUser();
HashSet<TimeParam> set = new HashSet<>();
TimeParam timeParam = TimeParam.builder().beginTime("00:00:00").endTome("23:59:59").build();
timeAndUser =
TimeUtil.WEEK
List<TimeParam> list = TimeUtil.WEEK
.stream()
.map(e -> TimeAndUserParam.builder().week(e).user(user).time(set).build())
.map(e -> TimeParam.builder().week(e).beginTime("00:00:00").endTime("23:59:59").build())
.collect(Collectors.toList());
TimeAndUserParam timeAndUserParam = TimeAndUserParam.builder().user(user).time(list).build();
List<TimeAndUserParam> arrayList = new ArrayList<>();
arrayList.add(timeAndUserParam);
timeAndUser = arrayList;
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.location.rule;
import com.yiring.common.constant.RegEx;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import java.util.Set;
import javax.validation.constraints.Pattern;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
......@@ -28,11 +26,7 @@ public class TimeAndNumberParam implements Serializable {
@Serial
private static final long serialVersionUID = -6796977663003158881L;
@ApiModelProperty(value = "星期", example = "星期一")
@Pattern(regexp = RegEx.TIME_RULE, message = "时间格式不正确")
private String week;
private Set<TimeParam> time;
private List<TimeParam> time;
@ApiModelProperty(value = "人数", example = "100")
private Integer number;
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.location.rule;
import com.yiring.common.constant.RegEx;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import java.util.List;
import java.util.Set;
import javax.validation.constraints.Pattern;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
......@@ -28,11 +26,7 @@ public class TimeAndUserParam implements Serializable {
@Serial
private static final long serialVersionUID = -7037620599825901175L;
@ApiModelProperty(value = "星期", example = "星期一")
@Pattern(regexp = RegEx.TIME_RULE, message = "时间格式不正确")
private String week;
private Set<TimeParam> time;
private List<TimeParam> time;
private Set<RelevanceUserParam> user;
}
......@@ -27,11 +27,15 @@ public class TimeParam implements Serializable {
@Serial
private static final long serialVersionUID = 3657642913058744140L;
@ApiModelProperty(value = "星期", example = "星期一")
@Pattern(regexp = RegEx.TIME_RULE, message = "时间格式不正确")
private String week;
@ApiModelProperty(value = "起始时间", example = "08:00:00")
@Pattern(regexp = RegEx.TIME_RULE, message = "时间格式不正确")
private String beginTime;
@ApiModelProperty(value = "终止时间", example = "18:00:00")
@Pattern(regexp = RegEx.TIME_RULE, message = "时间格式不正确")
private String endTome;
private String endTime;
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.risk;
import com.yiring.app.domain.risk.RiskWarn;
import com.yiring.app.domain.risk.Threshold;
import com.yiring.app.domain.workArea.WorkArea;
import com.yiring.common.constant.RegEx;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
import java.util.stream.Collectors;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import lombok.Data;
import org.locationtech.jts.geom.Point;
/**
* @author tml
* @version 1.0
* @date 2022/5/23 15:04
*/
@ApiModel("风险预警管理")
@Data
public class RiskWarnAddParam implements Serializable {
@Serial
private static final long serialVersionUID = -322828089862736394L;
@ApiModelProperty(value = "所属工区id", example = "1", required = true)
@NotNull(message = "工区不能为空")
private Long workAreaId;
@ApiModelProperty(value = "安装位置", example = "组件厂区二楼", required = true)
@NotNull(message = "安装位置不能为空")
private String install;
@ApiModelProperty(value = "经纬度", required = true, dataType = "java.lang.String")
@NotNull(message = "经纬度不能为空")
private Point point;
@ApiModelProperty(value = "监控参数", example = "有毒气体报警器", required = true)
@NotNull(message = "监控参数不能为空")
private String monitoring;
@ApiModelProperty(value = "位号", example = "AT-4736", required = true)
@NotNull(message = "位号不能为空")
private String locationNum;
@ApiModelProperty(value = "量程起始值", example = "1.3")
@Pattern(regexp = RegEx.DIGIT_DECIMALS, message = "量程的数字格式不正确,只能为整数或小数")
private BigDecimal min;
@ApiModelProperty(value = "量程结束值", example = "50.2")
@Pattern(regexp = RegEx.DIGIT_DECIMALS, message = "量程的数字格式不正确,只能为整数或小数")
private BigDecimal max;
@ApiModelProperty(value = "量程单位", example = "ppm")
private String unit;
private List<ThresholdParam> thresholds;
public RiskWarn transform() {
WorkArea workArea = new WorkArea();
workArea.setId(workAreaId);
List<Threshold> list = thresholds.stream().map(ThresholdParam::transform).collect(Collectors.toList());
return RiskWarn
.builder()
.workArea(workArea)
.install(install)
.point(point)
.monitoring(monitoring)
.locationNum(locationNum)
.min(min)
.max(max)
.unit(unit)
.enable(true)
.thresholds(list)
.build();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.risk;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import lombok.Data;
/**
* @author tml
* @version 1.0
* @date 2022/5/23 17:23
*/
@ApiModel("风险预警管理")
@Data
public class RiskWarnConditionParam implements Serializable {
@Serial
private static final long serialVersionUID = 6509069447006234492L;
@ApiModelProperty(value = "工区id", example = "1")
private Long workAreaId;
@ApiModelProperty(value = "监控参数", example = "有毒气体报警器")
private String monitoring;
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.risk;
import com.yiring.app.domain.risk.RiskWarn;
import com.yiring.app.domain.risk.Threshold;
import com.yiring.app.domain.workArea.WorkArea;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
import java.util.stream.Collectors;
import lombok.Data;
import org.locationtech.jts.geom.Point;
/**
* @author tml
* @version 1.0
* @date 2022/5/23 15:04
*/
@ApiModel("风险预警管理")
@Data
public class RiskWarnModifyParam implements Serializable {
@Serial
private static final long serialVersionUID = 1728064881609580496L;
@ApiModelProperty(value = "id", example = "1", required = true)
private Long id;
@ApiModelProperty(value = "所属工区id", example = "1", required = true)
private Long workAreaId;
@ApiModelProperty(value = "安装位置", example = "组件厂区二楼", required = true)
private String install;
@ApiModelProperty(value = "经纬度", required = true, dataType = "java.lang.String")
private Point point;
@ApiModelProperty(value = "监控参数", example = "有毒气体报警器", required = true)
private String monitoring;
@ApiModelProperty(value = "位号", example = "AT-4736", required = true)
private String locationNum;
@ApiModelProperty(value = "量程起始值", example = "1.3")
private BigDecimal min;
@ApiModelProperty(value = "量程结束值", example = "50.2")
private BigDecimal max;
@ApiModelProperty(value = "量程单位", example = "ppm")
private String unit;
private List<ThresholdParam> thresholds;
public RiskWarn transform() {
WorkArea workArea = new WorkArea();
workArea.setId(workAreaId);
List<Threshold> list = thresholds.stream().map(ThresholdParam::transform).collect(Collectors.toList());
return RiskWarn
.builder()
.id(id)
.workArea(workArea)
.install(install)
.point(point)
.monitoring(monitoring)
.locationNum(locationNum)
.min(min)
.max(max)
.unit(unit)
.enable(true)
.thresholds(list)
.build();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.risk;
import com.yiring.app.domain.risk.Threshold;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import lombok.*;
/**
* @author tml
* @version 1.0
* @date 2022/5/20 17:42
*/
@ApiModel("风险预警管理")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ThresholdParam implements Serializable {
@Serial
private static final long serialVersionUID = 5075164198170220832L;
@ApiModelProperty(value = "阈值区间起始值", example = "1.5")
private String min;
@ApiModelProperty(value = "阈值区间结束值", example = "20.2")
private String max;
@ApiModelProperty(value = "阈值状态:1-低低,2-低,3-高,4-高高,5-熄灭", example = "1")
private Integer status;
@ApiModelProperty(value = "风险等级:1-红色风险,2-橙色风险,3-黄色风险,4-蓝色风险", example = "1")
private Integer riskLevel;
public Threshold transform() {
return Threshold.builder().min(min).max(max).status(status).riskLevel(riskLevel).build();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.risk;
import com.yiring.app.param.risk.RiskWarnAddParam;
import com.yiring.app.param.risk.RiskWarnConditionParam;
import com.yiring.app.param.risk.RiskWarnModifyParam;
import com.yiring.app.vo.risk.RiskWarnDetailVo;
import com.yiring.app.vo.risk.RiskWarnVo;
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 java.util.Set;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import org.springframework.web.multipart.MultipartFile;
/**
* @author tml
* @version 1.0
* @date 2022/5/23 17:42
*/
public interface RiskWarnService {
/**
* 添加一条
* @param param 风险预警信息
* @return 是否成功
*/
Result<String> addOne(@Valid RiskWarnAddParam param);
/**
* 修改一条
* @param param 风险预警信息
* @return 是否成功
*/
Result<String> modifyOne(@Valid RiskWarnModifyParam param);
/**
* 删除一条
* @param idParam id
* @return 是否成功
*/
Result<String> removeOne(@Valid IdParam idParam);
/**
* 查询一条
* @param idParam id
* @return 风险预警详细信息
*/
Result<RiskWarnDetailVo> findOne(@Valid IdParam idParam);
/**
* 查询列表
* @param conditionParam 条件
* @param pageParam 分页参数
* @return 列表
*/
Result<PageVo<RiskWarnVo>> findList(@Valid RiskWarnConditionParam conditionParam, @Valid PageParam pageParam);
/**
* 导出
* @param conditionParam 条件
* @param response response
*/
void exportRiskWarn(@Valid RiskWarnConditionParam conditionParam, HttpServletResponse response);
/**
* 导入
* @param file excel文件
* @return 是否成功
*/
Result<String> importRiskWarn(MultipartFile file);
/**
* 导出模板
* @param response response
*/
void exportTemplate(HttpServletResponse response);
/**
* 批量启用或停用
* @param ids ids
* @param enable 启用:true-启用,false-停用
* @return 是否成功
*/
Result<String> batchEnable(Set<Long> ids, boolean enable);
}
......@@ -36,6 +36,7 @@ public class RuleVo implements Serializable {
@ApiModelProperty(value = "选择的播放语音名称", example = "紧急语音")
private String voiceName;
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty(value = "选择的播放设备id", example = "1")
private Long playEquipmentId;
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.vo.location.rule;
import com.yiring.common.constant.RegEx;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import java.util.Set;
import javax.validation.constraints.Pattern;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
......@@ -28,10 +26,6 @@ public class TimeAndNumberVo implements Serializable {
@Serial
private static final long serialVersionUID = -6796977663003158881L;
@ApiModelProperty(value = "星期", example = "星期一")
@Pattern(regexp = RegEx.TIME_RULE, message = "时间格式不正确")
private String week;
private Set<TimeVo> time;
@ApiModelProperty(value = "人数", example = "100")
......
......@@ -2,7 +2,6 @@
package com.yiring.app.vo.location.rule;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import java.util.Set;
......@@ -26,9 +25,6 @@ public class TimeAndUserVo implements Serializable {
@Serial
private static final long serialVersionUID = -7037620599825901175L;
@ApiModelProperty(value = "星期", example = "星期一")
private String week;
private Set<TimeVo> time;
private Set<RelevanceUserVo> user;
......
......@@ -25,9 +25,12 @@ public class TimeVo implements Serializable {
@Serial
private static final long serialVersionUID = -3275638425715878794L;
@ApiModelProperty(value = "星期", example = "星期一")
private String week;
@ApiModelProperty(value = "起始时间", example = "08:00:00")
private String beginTime;
@ApiModelProperty(value = "终止时间", example = "18:00:00")
private String endTome;
private String endTime;
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.vo.risk;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.yiring.app.domain.risk.RiskWarn;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
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/5/23 16:06
*/
@ApiModel("风险预警管理")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class RiskWarnDetailVo implements Serializable {
@Serial
private static final long serialVersionUID = 519127002530795898L;
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty(value = "id", example = "1")
private Long id;
@ApiModelProperty(value = "工区名称", example = "组装工区")
private String workAreaName;
@ApiModelProperty(value = "安装位置", example = "组装厂区二楼")
private String install;
@ApiModelProperty(value = "监控参数", example = "有毒气体报警器")
private String monitoring;
@ApiModelProperty(value = "位号", example = "AT-4736")
private String locationNum;
@ApiModelProperty(value = "量程", example = "0-100PPm")
private String range;
@ApiModelProperty(value = "量程单位", example = "PPm")
private String unit;
@ApiModelProperty(value = "是否启用", example = "true")
private Boolean enable;
private List<ThresholdVo> thresholdVos;
public static RiskWarnDetailVo transform(RiskWarn riskWarn) {
List<ThresholdVo> list = riskWarn
.getThresholds()
.stream()
.map(ThresholdVo::transform)
.collect(Collectors.toList());
String range = riskWarn.getMin() + "-" + riskWarn.getMax();
return RiskWarnDetailVo
.builder()
.id(riskWarn.getId())
.workAreaName(riskWarn.getWorkArea().getWorkAreaName())
.install(riskWarn.getInstall())
.monitoring(riskWarn.getMonitoring())
.locationNum(riskWarn.getLocationNum())
.range(range)
.unit(riskWarn.getUnit())
.enable(riskWarn.getEnable())
.thresholdVos(list)
.build();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.vo.risk;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.yiring.app.domain.risk.RiskWarn;
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/23 15:40
*/
@ApiModel("风险预警管理")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class RiskWarnVo implements Serializable {
@Serial
private static final long serialVersionUID = 6006976424270409054L;
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty(value = "id", example = "1")
private Long id;
@ApiModelProperty(value = "工区名称", example = "组装工区")
private String workAreaName;
@ApiModelProperty(value = "安装位置", example = "组装厂区二楼")
private String install;
@ApiModelProperty(value = "监控参数", example = "有毒气体报警器")
private String monitoring;
@ApiModelProperty(value = "位号", example = "AT-4736")
private String locationNum;
@ApiModelProperty(value = "量程", example = "0-100PPm")
private String range;
@ApiModelProperty(value = "是否启用", example = "true")
private Boolean enable;
public static RiskWarnVo transform(RiskWarn riskWarn) {
String range = riskWarn.getMin().toString() + "-" + riskWarn.getMax().toString();
return RiskWarnVo
.builder()
.id(riskWarn.getId())
.workAreaName(riskWarn.getWorkArea().getWorkAreaName())
.install(riskWarn.getInstall())
.monitoring(riskWarn.getMonitoring())
.locationNum(riskWarn.getLocationNum())
.range(range)
.enable(riskWarn.getEnable())
.build();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.vo.risk;
import com.yiring.app.constant.rehearsal.RiskLevelEnum;
import com.yiring.app.domain.risk.Threshold;
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/20 17:42
*/
@ApiModel("风险预警管理")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ThresholdVo implements Serializable {
@Serial
private static final long serialVersionUID = 5075164198170220832L;
@ApiModelProperty(value = "阈值区间起始值", example = "1.5")
private String min;
@ApiModelProperty(value = "阈值区间结束值", example = "20.2")
private String max;
@ApiModelProperty(value = "阈值状态", example = "低低")
private Integer status;
@ApiModelProperty(value = "风险等级:1-红色风险,2-橙色风险,3-黄色风险,4-蓝色风险", example = "1")
private String riskLevel;
public static ThresholdVo transform(Threshold threshold) {
return ThresholdVo
.builder()
.min(threshold.getMin())
.max(threshold.getMax())
.status(threshold.getStatus())
.riskLevel(RiskLevelEnum.getByCode(threshold.getRiskLevel()))
.build();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.web.risk;
import com.yiring.app.constant.rehearsal.RiskLevelEnum;
import com.yiring.app.constant.risk.ThresholdStatusEnum;
import com.yiring.app.domain.alarm.AlarmType;
import com.yiring.app.param.risk.RiskWarnAddParam;
import com.yiring.app.param.risk.RiskWarnConditionParam;
import com.yiring.app.param.risk.RiskWarnModifyParam;
import com.yiring.app.service.risk.RiskWarnService;
import com.yiring.app.vo.CodeNameVo;
import com.yiring.app.vo.risk.RiskWarnDetailVo;
import com.yiring.app.vo.risk.RiskWarnVo;
import com.yiring.auth.param.IdsParam;
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 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;
import org.springframework.web.multipart.MultipartFile;
/**
* @author tml
* @version 1.0
* @date 2022/5/23 17:16
*/
@Api(tags = "风险预警管理")
@Validated
@RestController
@RequestMapping("/risk/warn")
public class RiskWarnController {
@Resource
private RiskWarnService riskWarnService;
@ApiOperation("添加一条")
@PostMapping("/addOne")
public Result<String> addOne(@Valid RiskWarnAddParam param) {
return riskWarnService.addOne(param);
}
@ApiOperation("修改一条")
@PostMapping("/modifyOne")
public Result<String> modifyOne(@Valid RiskWarnModifyParam param) {
return riskWarnService.modifyOne(param);
}
@ApiOperation("删除一条")
@PostMapping("/removeOne")
public Result<String> removeOne(@Valid IdParam idParam) {
return riskWarnService.removeOne(idParam);
}
@ApiOperation("查询一条")
@GetMapping("/findOne")
public Result<RiskWarnDetailVo> findOne(@Valid IdParam idParam) {
return riskWarnService.findOne(idParam);
}
@ApiOperation("查询列表")
@GetMapping("/findList")
public Result<PageVo<RiskWarnVo>> findList(
@Valid RiskWarnConditionParam conditionParam,
@Valid PageParam pageParam
) {
if (Objects.isNull(pageParam.getSortField())) {
pageParam.setSortField(AlarmType.Fields.createTime);
pageParam.setSortOrder(Sort.Direction.DESC);
}
return riskWarnService.findList(conditionParam, pageParam);
}
@ApiOperation("查询阈值状态下拉框")
@GetMapping("/findThresholds")
public Result<PageVo<CodeNameVo>> findThresholds() {
List<CodeNameVo> list = ThresholdStatusEnum.getAll();
PageVo<CodeNameVo> pageVo = PageVo.build(list, list.size());
return Result.ok(pageVo);
}
@ApiOperation("查询风险等级下拉框")
@GetMapping("/findRiskLevels")
public Result<PageVo<CodeNameVo>> findRiskLevels() {
List<CodeNameVo> list = RiskLevelEnum.getAll();
PageVo<CodeNameVo> pageVo = PageVo.build(list, list.size());
return Result.ok(pageVo);
}
@ApiOperation(value = "导出", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
@GetMapping("/exportRiskWarn")
public void exportRiskWarn(@Valid RiskWarnConditionParam conditionParam, HttpServletResponse response) {
riskWarnService.exportRiskWarn(conditionParam, response);
}
@ApiOperation("导入")
@PostMapping("/importRiskWarn")
public Result<String> importRiskWarn(MultipartFile file) {
return riskWarnService.importRiskWarn(file);
}
@ApiOperation(value = "导出模板", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
@GetMapping("/exportTemplate")
public void exportTemplate(HttpServletResponse response) {
riskWarnService.exportTemplate(response);
}
@ApiOperation("批量启用或停用")
@ApiImplicitParam(value = "启用:true-启用,false-停用", required = true)
@PostMapping("/batchEnable")
public Result<String> batchEnable(@Valid IdsParam idsParam, boolean enable) {
return riskWarnService.batchEnable(idsParam.toIds(), enable);
}
}
......@@ -33,4 +33,9 @@ public class RegEx {
public static final String WEEK_RULE = "^星期[一二三四五六日]$";
public static final String COLOUR_RGB = "^#(\\d|[A-F a-f]){6}$";
/**
* 数字或小数
*/
public static final String DIGIT_DECIMALS = "^(-?\\d+)|(-?\\d+.\\d+)$";
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论