提交 f39e4fc3 作者: 涂茂林

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

上级 c9267941
...@@ -67,7 +67,7 @@ public enum FenceTypeEnum { ...@@ -67,7 +67,7 @@ public enum FenceTypeEnum {
} }
} }
} }
return "未知围栏类别"; throw new RuntimeException("FenceTypeEnum获取未知围栏类别");
} }
/** /**
......
...@@ -37,7 +37,7 @@ public enum InformMannerEnum { ...@@ -37,7 +37,7 @@ public enum InformMannerEnum {
private static final List<CodeNameVo> LIST; private static final List<CodeNameVo> LIST;
static { static {
LIST = new ArrayList<CodeNameVo>(); LIST = new ArrayList<>();
for (InformMannerEnum item : values()) { for (InformMannerEnum item : values()) {
LIST.add(new CodeNameVo(item.code, item.name)); LIST.add(new CodeNameVo(item.code, item.name));
} }
...@@ -54,7 +54,7 @@ public enum InformMannerEnum { ...@@ -54,7 +54,7 @@ public enum InformMannerEnum {
return item.getName(); return item.getName();
} }
} }
return "未知通知类型"; throw new RuntimeException("InformMannerEnum获取未知通知类型");
} }
public static List<CodeNameVo> getAll() { public static List<CodeNameVo> getAll() {
......
...@@ -49,7 +49,7 @@ public enum ReceiveStatusEnum { ...@@ -49,7 +49,7 @@ public enum ReceiveStatusEnum {
return item.getName(); return item.getName();
} }
} }
return "未知状态"; throw new RuntimeException("ReceiveStatusEnum获取未知状态");
} }
public static List<CodeNameVo> findAll() { public static List<CodeNameVo> findAll() {
......
...@@ -87,7 +87,7 @@ public enum RelevanceParamEnum { ...@@ -87,7 +87,7 @@ public enum RelevanceParamEnum {
} }
} }
} }
return "未知关联参数"; throw new RuntimeException("RelevanceParamEnum获取未知关联参数");
} }
/** /**
......
...@@ -58,6 +58,6 @@ public enum RehearsalPlanStatusEnum { ...@@ -58,6 +58,6 @@ public enum RehearsalPlanStatusEnum {
return item.getName(); return item.getName();
} }
} }
return "未知状态"; throw new RuntimeException("RehearsalPlanStatusEnum获取异常状态");
} }
} }
...@@ -63,6 +63,6 @@ public enum RiskLevelEnum { ...@@ -63,6 +63,6 @@ public enum RiskLevelEnum {
return item.getName(); 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; ...@@ -9,23 +9,33 @@ import lombok.Getter;
/** /**
* @author tml * @author tml
* @version 1.0 * @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 @Getter
private final Integer code; private final Integer code;
...@@ -36,26 +46,26 @@ public enum ThresholdType { ...@@ -36,26 +46,26 @@ public enum ThresholdType {
private static final List<CodeNameVo> LIST = new ArrayList<>(); private static final List<CodeNameVo> LIST = new ArrayList<>();
static { static {
for (ThresholdType item : values()) { for (ThresholdStatusEnum item : values()) {
LIST.add(new CodeNameVo(item.code, item.name)); LIST.add(new CodeNameVo(item.code, item.name));
} }
} }
ThresholdType(Integer code, String name) { ThresholdStatusEnum(Integer code, String name) {
this.code = code; this.code = code;
this.name = name; this.name = name;
} }
public String getByCode(Integer code) { public static String getByCode(Integer code) {
for (ThresholdType item : values()) { for (ThresholdStatusEnum item : values()) {
if (item.code.equals(code)) { if (item.code.equals(code)) {
return item.getName(); return item.getName();
} }
} }
return "未知区间类型"; throw new RuntimeException("ThresholdStatus获取异常状态");
} }
public List<CodeNameVo> findAll() { public static List<CodeNameVo> getAll() {
return LIST; return LIST;
} }
} }
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.app.design.strategy.fence; 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.design.strategy.IParamInitStrategy;
import com.yiring.app.param.location.rule.LocationFenceRuleAddParam; import com.yiring.app.param.location.rule.LocationFenceRuleAddParam;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
/** /**
* 重大危险源
* @author tml * @author tml
* @version 1.0 * @version 1.0
* @date 2022/4/29 11:08 * @date 2022/4/29 11:08
...@@ -16,7 +17,7 @@ import org.springframework.stereotype.Component; ...@@ -16,7 +17,7 @@ import org.springframework.stereotype.Component;
public class DangerousStrategy implements IParamInitStrategy<LocationFenceRuleAddParam> { public class DangerousStrategy implements IParamInitStrategy<LocationFenceRuleAddParam> {
public DangerousStrategy() { public DangerousStrategy() {
Integer fenceType = RelevanceParamEnum.MAX_PEOPLE_NUMBER.getCode(); Integer fenceType = FenceTypeEnum.DANGEROUS.getCode();
LocationFenceTypeContext.register(fenceType, this); LocationFenceTypeContext.register(fenceType, this);
} }
......
...@@ -44,16 +44,26 @@ public class AllowEntranceStrategy implements IParamInitStrategy<LocationFenceRu ...@@ -44,16 +44,26 @@ public class AllowEntranceStrategy implements IParamInitStrategy<LocationFenceRu
if (CollectionUtils.isEmpty(timeAndUser)) { if (CollectionUtils.isEmpty(timeAndUser)) {
return Result.no(Status.EXPECTATION_FAILED, "请至少配置一条允许进入人员的规则"); return Result.no(Status.EXPECTATION_FAILED, "请至少配置一条允许进入人员的规则");
} }
if (timeAndUser.size() == 1 && CollectionUtils.isEmpty(timeAndUser.get(0).getTime())) {
param.getRuleParam().setTimeAndUserAll();
}
for (TimeAndUserParam item : timeAndUser) { for (TimeAndUserParam item : timeAndUser) {
if (CollectionUtils.isEmpty(item.getUser())) { if (CollectionUtils.isEmpty(item.getUser())) {
return Result.no(Status.EXPECTATION_FAILED, "请至少配置一个允许进入的人员"); 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<>()); ruleParam.setTimeAndNumber(new ArrayList<>());
return Result.ok(); return Result.ok();
} }
...@@ -71,9 +81,9 @@ public class AllowEntranceStrategy implements IParamInitStrategy<LocationFenceRu ...@@ -71,9 +81,9 @@ public class AllowEntranceStrategy implements IParamInitStrategy<LocationFenceRu
TimeAndUserParam timeAndUserParam = null; TimeAndUserParam timeAndUserParam = null;
//筛选在当前时间生效的配置 //筛选在当前时间生效的配置
for (TimeAndUserParam item : timeAndUserParamList) { for (TimeAndUserParam item : timeAndUserParamList) {
if (TimeUtil.judgeWeek(LocalDateTime.now(), item.getWeek())) { for (TimeParam time : item.getTime()) {
for (TimeParam time : item.getTime()) { if (TimeUtil.judgeWeek(LocalDateTime.now(), time.getWeek())) {
if (TimeUtil.judgeTime(LocalDateTime.now(), time.getBeginTime(), time.getEndTome())) { if (TimeUtil.judgeTime(LocalDateTime.now(), time.getBeginTime(), time.getEndTime())) {
timeAndUserParam = item; timeAndUserParam = item;
break; break;
} }
......
...@@ -47,17 +47,27 @@ public class MaxPeopleNumberStrategy implements IParamInitStrategy<LocationFence ...@@ -47,17 +47,27 @@ public class MaxPeopleNumberStrategy implements IParamInitStrategy<LocationFence
if (CollectionUtils.isEmpty(timeAndNumber)) { if (CollectionUtils.isEmpty(timeAndNumber)) {
return Result.no(Status.EXPECTATION_FAILED, "请至少配置一条最多人数的规则"); return Result.no(Status.EXPECTATION_FAILED, "请至少配置一条最多人数的规则");
} }
if (timeAndNumber.size() == 1 && CollectionUtils.isEmpty(timeAndNumber.get(0).getTime())) {
param.getRuleParam().setTimeAndNumberAll();
}
for (TimeAndNumberParam item : timeAndNumber) { for (TimeAndNumberParam item : timeAndNumber) {
if (item.getNumber() == null || item.getNumber() < 0) { if (item.getNumber() == null || item.getNumber() < 0) {
Result.no(Status.EXPECTATION_FAILED, "最大人数不能空或小于零"); 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 //将时间和距离都设为-1
ruleParam.setDuration(-1); ruleParam.setDuration(null);
ruleParam.setDistance(-1); ruleParam.setDistance(null);
ArrayList<TimeAndUserParam> list = new ArrayList<>(); ArrayList<TimeAndUserParam> list = new ArrayList<>();
ruleParam.setTimeAndUser(list); ruleParam.setTimeAndUser(list);
return Result.ok(); return Result.ok();
...@@ -78,11 +88,11 @@ public class MaxPeopleNumberStrategy implements IParamInitStrategy<LocationFence ...@@ -78,11 +88,11 @@ public class MaxPeopleNumberStrategy implements IParamInitStrategy<LocationFence
StringBuilder end = new StringBuilder(); StringBuilder end = new StringBuilder();
//筛选在当前时间生效的配置 //筛选在当前时间生效的配置
for (TimeAndNumberParam item : timeAndNumberParamList) { for (TimeAndNumberParam item : timeAndNumberParamList) {
if (TimeUtil.judgeWeek(LocalDateTime.now(), item.getWeek())) { for (TimeParam time : item.getTime()) {
for (TimeParam time : item.getTime()) { if (TimeUtil.judgeWeek(LocalDateTime.now(), time.getWeek())) {
if (TimeUtil.judgeTime(LocalDateTime.now(), time.getBeginTime(), time.getEndTome())) { if (TimeUtil.judgeTime(LocalDateTime.now(), time.getBeginTime(), time.getEndTime())) {
begin.append(item.getWeek()).append(" ").append(time.getBeginTime()); begin.append(time.getWeek()).append(" ").append(time.getBeginTime());
end.append(item.getWeek()).append(" ").append(time.getEndTome()); end.append(time.getWeek()).append(" ").append(time.getEndTime());
timeAndNumberParam = item; timeAndNumberParam = item;
break; break;
} }
......
...@@ -47,17 +47,27 @@ public class MinPeopleNumberStrategy implements IParamInitStrategy<LocationFence ...@@ -47,17 +47,27 @@ public class MinPeopleNumberStrategy implements IParamInitStrategy<LocationFence
if (CollectionUtils.isEmpty(timeAndNumber)) { if (CollectionUtils.isEmpty(timeAndNumber)) {
return Result.no(Status.EXPECTATION_FAILED, "请至少配置一条最少人数的规则"); return Result.no(Status.EXPECTATION_FAILED, "请至少配置一条最少人数的规则");
} }
if (timeAndNumber.size() == 1 && CollectionUtils.isEmpty(timeAndNumber.get(0).getTime())) {
param.getRuleParam().setTimeAndNumberAll();
}
for (TimeAndNumberParam item : timeAndNumber) { for (TimeAndNumberParam item : timeAndNumber) {
if (item.getNumber() == null || item.getNumber() < 0) { if (item.getNumber() == null || item.getNumber() < 0) {
Result.no(Status.EXPECTATION_FAILED, "最大人数不能空或小于零"); 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 //将时间和距离都设为-1
ruleParam.setDuration(-1); ruleParam.setDuration(null);
ruleParam.setDistance(-1); ruleParam.setDistance(null);
ArrayList<TimeAndUserParam> list = new ArrayList<>(); ArrayList<TimeAndUserParam> list = new ArrayList<>();
ruleParam.setTimeAndUser(list); ruleParam.setTimeAndUser(list);
return Result.ok(); return Result.ok();
...@@ -78,11 +88,11 @@ public class MinPeopleNumberStrategy implements IParamInitStrategy<LocationFence ...@@ -78,11 +88,11 @@ public class MinPeopleNumberStrategy implements IParamInitStrategy<LocationFence
StringBuilder end = new StringBuilder(); StringBuilder end = new StringBuilder();
//筛选在当前时间生效的配置 //筛选在当前时间生效的配置
for (TimeAndNumberParam item : timeAndNumberParamList) { for (TimeAndNumberParam item : timeAndNumberParamList) {
if (TimeUtil.judgeWeek(LocalDateTime.now(), item.getWeek())) { for (TimeParam time : item.getTime()) {
for (TimeParam time : item.getTime()) { if (TimeUtil.judgeWeek(LocalDateTime.now(), time.getWeek())) {
if (TimeUtil.judgeTime(LocalDateTime.now(), time.getBeginTime(), time.getEndTome())) { if (TimeUtil.judgeTime(LocalDateTime.now(), time.getBeginTime(), time.getEndTime())) {
begin.append(item.getWeek()).append(" ").append(time.getBeginTime()); begin.append(time.getWeek()).append(" ").append(time.getBeginTime());
end.append(item.getWeek()).append(" ").append(time.getEndTome()); end.append(time.getWeek()).append(" ").append(time.getEndTime());
timeAndNumberParam = item; timeAndNumberParam = item;
break; break;
} }
......
...@@ -47,16 +47,26 @@ public class NotAllowLeaveStrategy implements IParamInitStrategy<LocationFenceRu ...@@ -47,16 +47,26 @@ public class NotAllowLeaveStrategy implements IParamInitStrategy<LocationFenceRu
if (CollectionUtils.isEmpty(timeAndUser)) { if (CollectionUtils.isEmpty(timeAndUser)) {
return Result.no(Status.EXPECTATION_FAILED, "请至少配置一条不允许离开人员的规则"); return Result.no(Status.EXPECTATION_FAILED, "请至少配置一条不允许离开人员的规则");
} }
if (timeAndUser.size() == 1 && CollectionUtils.isEmpty(timeAndUser.get(0).getTime())) {
param.getRuleParam().setTimeAndUserAll();
}
for (TimeAndUserParam item : timeAndUser) { for (TimeAndUserParam item : timeAndUser) {
if (CollectionUtils.isEmpty(item.getUser())) { if (CollectionUtils.isEmpty(item.getUser())) {
return Result.no(Status.EXPECTATION_FAILED, "请至少配置一个不允许离开的人员"); 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<>()); ruleParam.setTimeAndNumber(new ArrayList<>());
return Result.ok(); return Result.ok();
} }
...@@ -76,12 +86,12 @@ public class NotAllowLeaveStrategy implements IParamInitStrategy<LocationFenceRu ...@@ -76,12 +86,12 @@ public class NotAllowLeaveStrategy implements IParamInitStrategy<LocationFenceRu
StringBuilder end = new StringBuilder(); StringBuilder end = new StringBuilder();
//筛选在当前时间生效的配置 //筛选在当前时间生效的配置
for (TimeAndUserParam item : timeAndUserParamList) { for (TimeAndUserParam item : timeAndUserParamList) {
if (TimeUtil.judgeWeek(LocalDateTime.now(), item.getWeek())) { for (TimeParam time : item.getTime()) {
for (TimeParam time : item.getTime()) { if (TimeUtil.judgeWeek(LocalDateTime.now(), time.getWeek())) {
if (TimeUtil.judgeTime(LocalDateTime.now(), time.getBeginTime(), time.getEndTome())) { if (TimeUtil.judgeTime(LocalDateTime.now(), time.getBeginTime(), time.getEndTime())) {
begin.append(item.getWeek()).append(" ").append(time.getBeginTime());
end.append(item.getWeek()).append(" ").append(time.getEndTome());
timeAndUserParam = item; timeAndUserParam = item;
begin.append(time.getWeek()).append(" ").append(time.getBeginTime());
end.append(time.getWeek()).append(" ").append(time.getEndTime());
break; break;
} }
} }
......
...@@ -44,7 +44,7 @@ public class RetentionDurationStrategy implements IParamInitStrategy<LocationFen ...@@ -44,7 +44,7 @@ public class RetentionDurationStrategy implements IParamInitStrategy<LocationFen
if (ruleParam.getDuration() == null || ruleParam.getDuration() < 0) { if (ruleParam.getDuration() == null || ruleParam.getDuration() < 0) {
return Result.no(Status.EXPECTATION_FAILED, "滞留时长异常"); return Result.no(Status.EXPECTATION_FAILED, "滞留时长异常");
} }
ruleParam.setDistance(-1); ruleParam.setDistance(null);
ruleParam.setTimeAndUser(new ArrayList<>()); ruleParam.setTimeAndUser(new ArrayList<>());
ruleParam.setTimeAndNumber(new ArrayList<>()); ruleParam.setTimeAndNumber(new ArrayList<>());
return Result.ok(); return Result.ok();
......
...@@ -42,7 +42,7 @@ public class StaticDurationStrategy implements IParamInitStrategy<LocationFenceR ...@@ -42,7 +42,7 @@ public class StaticDurationStrategy implements IParamInitStrategy<LocationFenceR
if (ruleParam.getDuration() == null || ruleParam.getDuration() < 0) { if (ruleParam.getDuration() == null || ruleParam.getDuration() < 0) {
return Result.no(Status.EXPECTATION_FAILED, "静止时长异常"); return Result.no(Status.EXPECTATION_FAILED, "静止时长异常");
} }
ruleParam.setDistance(-1); ruleParam.setDistance(null);
ruleParam.setTimeAndUser(new ArrayList<>()); ruleParam.setTimeAndUser(new ArrayList<>());
ruleParam.setTimeAndNumber(new ArrayList<>()); ruleParam.setTimeAndNumber(new ArrayList<>());
return Result.ok(); return Result.ok();
......
...@@ -48,7 +48,7 @@ public class TriggerAlarmDistanceStrategy implements IParamInitStrategy<Location ...@@ -48,7 +48,7 @@ public class TriggerAlarmDistanceStrategy implements IParamInitStrategy<Location
if (ruleParam.getDistance() == null || ruleParam.getDistance() < 0) { if (ruleParam.getDistance() == null || ruleParam.getDistance() < 0) {
return Result.no(Status.EXPECTATION_FAILED, "触发报警距离异常"); return Result.no(Status.EXPECTATION_FAILED, "触发报警距离异常");
} }
ruleParam.setDuration(-1); ruleParam.setDuration(null);
ruleParam.setTimeAndUser(new ArrayList<>()); ruleParam.setTimeAndUser(new ArrayList<>());
ruleParam.setTimeAndNumber(new ArrayList<>()); ruleParam.setTimeAndNumber(new ArrayList<>());
return Result.ok(); return Result.ok();
......
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.app.domain.risk; package com.yiring.app.domain.risk;
import com.yiring.app.domain.workArea.WorkArea;
import com.yiring.common.domain.BasicEntity; import com.yiring.common.domain.BasicEntity;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.HashSet; import java.math.BigDecimal;
import java.util.Set; import java.util.ArrayList;
import java.util.List;
import javax.persistence.*; import javax.persistence.*;
import lombok.*; import lombok.*;
import lombok.experimental.FieldNameConstants; import lombok.experimental.FieldNameConstants;
import lombok.experimental.SuperBuilder;
import org.hibernate.annotations.Comment; import org.hibernate.annotations.Comment;
import org.locationtech.jts.geom.Point; import org.locationtech.jts.geom.Point;
...@@ -20,7 +23,7 @@ import org.locationtech.jts.geom.Point; ...@@ -20,7 +23,7 @@ import org.locationtech.jts.geom.Point;
@Getter @Getter
@Setter @Setter
@ToString @ToString
@Builder @SuperBuilder(toBuilder = true)
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@FieldNameConstants @FieldNameConstants
...@@ -32,7 +35,10 @@ public class RiskWarn extends BasicEntity implements Serializable { ...@@ -32,7 +35,10 @@ public class RiskWarn extends BasicEntity implements Serializable {
@Serial @Serial
private static final long serialVersionUID = 1345477064611048638L; private static final long serialVersionUID = 1345477064611048638L;
//todo 工区 @Comment("所属工区")
@ManyToOne
@JoinColumn(name = "workArea_id")
private WorkArea workArea;
@Comment("安装位置") @Comment("安装位置")
private String install; private String install;
...@@ -48,10 +54,10 @@ public class RiskWarn extends BasicEntity implements Serializable { ...@@ -48,10 +54,10 @@ public class RiskWarn extends BasicEntity implements Serializable {
private String locationNum; private String locationNum;
@Comment("量程起始值") @Comment("量程起始值")
private Integer min; private BigDecimal min;
@Comment("量程结束值") @Comment("量程结束值")
private Integer max; private BigDecimal max;
@Comment("量程单位") @Comment("量程单位")
private String unit; private String unit;
...@@ -59,8 +65,9 @@ public class RiskWarn extends BasicEntity implements Serializable { ...@@ -59,8 +65,9 @@ public class RiskWarn extends BasicEntity implements Serializable {
@Comment("启用") @Comment("启用")
private Boolean enable; private Boolean enable;
@ToString.Exclude
@Comment("阈值区间信息")
@Builder.Default @Builder.Default
@OneToMany(mappedBy = "riskWarn") @OneToMany(mappedBy = "riskWarn")
@ToString.Exclude private List<Threshold> thresholds = new ArrayList<>();
private Set<Threshold> thresholds = new HashSet<>();
} }
/* (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; ...@@ -7,45 +7,43 @@ import java.io.Serializable;
import javax.persistence.*; import javax.persistence.*;
import lombok.*; import lombok.*;
import lombok.experimental.FieldNameConstants; import lombok.experimental.FieldNameConstants;
import lombok.experimental.SuperBuilder;
import org.hibernate.annotations.Comment; import org.hibernate.annotations.Comment;
/** /**
* @author tml * @author tml
* @version 1.0 * @version 1.0
* @date 2022/5/20 17:42 * @date 2022/5/24 11:21
*/ */
@Getter @Getter
@Setter @Setter
@ToString @ToString
@Builder @SuperBuilder(toBuilder = true)
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@FieldNameConstants @FieldNameConstants
@Entity @Entity
@Table(name = "BS_THRESHOLD") @Table(name = "BS_THRESHOLD")
@Comment("风险预警下的阈值设置") @Comment("阈值区间信息")
public class Threshold extends BasicEntity implements Serializable { public class Threshold extends BasicEntity implements Serializable {
@Serial @Serial
private static final long serialVersionUID = 5075164198170220832L; private static final long serialVersionUID = 3115736944401082777L;
@ManyToOne @ManyToOne
@JoinColumn(name = "risk_warn_id") @JoinColumn(name = "risk_warn_id")
@Comment("风险预警") @Comment("对应的风险预警信息")
private RiskWarn riskWarn; private RiskWarn riskWarn;
@Comment("阈值区间起始值") @Comment("阈值区间起始值")
private Integer min; private String min;
@Comment("阈值区间结束值") @Comment("阈值区间结束值")
private Integer max; private String max;
@Comment("阈值区间的类型:1-普通数值,2-百分比,3-仅标志一种状态,如火焰熄灭")
private Integer type;
@Comment("阈值状态") @Comment("阈值状态")
private String status; private Integer status;
@Comment("风险等级:1-红色风险,2-橙色风险,3-黄色风险,4-蓝色风险") @Comment("风险等级")
private Integer riskLevel; 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; ...@@ -6,7 +6,7 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.HashSet; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -58,23 +58,25 @@ public class RuleParam implements Serializable { ...@@ -58,23 +58,25 @@ public class RuleParam implements Serializable {
*/ */
public void setTimeAndNumberAll() { public void setTimeAndNumberAll() {
Integer number = timeAndNumber.get(0).getNumber(); Integer number = timeAndNumber.get(0).getNumber();
HashSet<TimeParam> set = new HashSet<>(); List<TimeParam> list = TimeUtil.WEEK
TimeParam timeParam = TimeParam.builder().beginTime("00:00:00").endTome("23:59:59").build(); .stream()
timeAndNumber = .map(e -> TimeParam.builder().week(e).beginTime("00:00:00").endTime("23:59:59").build())
TimeUtil.WEEK .collect(Collectors.toList());
.stream() TimeAndNumberParam timeAndNumberParam = TimeAndNumberParam.builder().number(number).time(list).build();
.map(e -> TimeAndNumberParam.builder().week(e).number(number).time(set).build()) List<TimeAndNumberParam> arrayList = new ArrayList<>();
.collect(Collectors.toList()); arrayList.add(timeAndNumberParam);
timeAndNumber = arrayList;
} }
public void setTimeAndUserAll() { public void setTimeAndUserAll() {
Set<RelevanceUserParam> user = timeAndUser.get(0).getUser(); Set<RelevanceUserParam> user = timeAndUser.get(0).getUser();
HashSet<TimeParam> set = new HashSet<>(); List<TimeParam> list = TimeUtil.WEEK
TimeParam timeParam = TimeParam.builder().beginTime("00:00:00").endTome("23:59:59").build(); .stream()
timeAndUser = .map(e -> TimeParam.builder().week(e).beginTime("00:00:00").endTime("23:59:59").build())
TimeUtil.WEEK .collect(Collectors.toList());
.stream() TimeAndUserParam timeAndUserParam = TimeAndUserParam.builder().user(user).time(list).build();
.map(e -> TimeAndUserParam.builder().week(e).user(user).time(set).build()) List<TimeAndUserParam> arrayList = new ArrayList<>();
.collect(Collectors.toList()); arrayList.add(timeAndUserParam);
timeAndUser = arrayList;
} }
} }
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.location.rule; package com.yiring.app.param.location.rule;
import com.yiring.common.constant.RegEx;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.Set; import java.util.List;
import javax.validation.constraints.Pattern;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
...@@ -28,11 +26,7 @@ public class TimeAndNumberParam implements Serializable { ...@@ -28,11 +26,7 @@ public class TimeAndNumberParam implements Serializable {
@Serial @Serial
private static final long serialVersionUID = -6796977663003158881L; private static final long serialVersionUID = -6796977663003158881L;
@ApiModelProperty(value = "星期", example = "星期一") private List<TimeParam> time;
@Pattern(regexp = RegEx.TIME_RULE, message = "时间格式不正确")
private String week;
private Set<TimeParam> time;
@ApiModelProperty(value = "人数", example = "100") @ApiModelProperty(value = "人数", example = "100")
private Integer number; private Integer number;
......
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.location.rule; package com.yiring.app.param.location.rule;
import com.yiring.common.constant.RegEx;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.List;
import java.util.Set; import java.util.Set;
import javax.validation.constraints.Pattern;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
...@@ -28,11 +26,7 @@ public class TimeAndUserParam implements Serializable { ...@@ -28,11 +26,7 @@ public class TimeAndUserParam implements Serializable {
@Serial @Serial
private static final long serialVersionUID = -7037620599825901175L; private static final long serialVersionUID = -7037620599825901175L;
@ApiModelProperty(value = "星期", example = "星期一") private List<TimeParam> time;
@Pattern(regexp = RegEx.TIME_RULE, message = "时间格式不正确")
private String week;
private Set<TimeParam> time;
private Set<RelevanceUserParam> user; private Set<RelevanceUserParam> user;
} }
...@@ -27,11 +27,15 @@ public class TimeParam implements Serializable { ...@@ -27,11 +27,15 @@ public class TimeParam implements Serializable {
@Serial @Serial
private static final long serialVersionUID = 3657642913058744140L; private static final long serialVersionUID = 3657642913058744140L;
@ApiModelProperty(value = "星期", example = "星期一")
@Pattern(regexp = RegEx.TIME_RULE, message = "时间格式不正确")
private String week;
@ApiModelProperty(value = "起始时间", example = "08:00:00") @ApiModelProperty(value = "起始时间", example = "08:00:00")
@Pattern(regexp = RegEx.TIME_RULE, message = "时间格式不正确") @Pattern(regexp = RegEx.TIME_RULE, message = "时间格式不正确")
private String beginTime; private String beginTime;
@ApiModelProperty(value = "终止时间", example = "18:00:00") @ApiModelProperty(value = "终止时间", example = "18:00:00")
@Pattern(regexp = RegEx.TIME_RULE, message = "时间格式不正确") @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 { ...@@ -36,6 +36,7 @@ public class RuleVo implements Serializable {
@ApiModelProperty(value = "选择的播放语音名称", example = "紧急语音") @ApiModelProperty(value = "选择的播放语音名称", example = "紧急语音")
private String voiceName; private String voiceName;
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty(value = "选择的播放设备id", example = "1") @ApiModelProperty(value = "选择的播放设备id", example = "1")
private Long playEquipmentId; private Long playEquipmentId;
......
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.app.vo.location.rule; package com.yiring.app.vo.location.rule;
import com.yiring.common.constant.RegEx;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.Set; import java.util.Set;
import javax.validation.constraints.Pattern;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
...@@ -28,10 +26,6 @@ public class TimeAndNumberVo implements Serializable { ...@@ -28,10 +26,6 @@ public class TimeAndNumberVo implements Serializable {
@Serial @Serial
private static final long serialVersionUID = -6796977663003158881L; private static final long serialVersionUID = -6796977663003158881L;
@ApiModelProperty(value = "星期", example = "星期一")
@Pattern(regexp = RegEx.TIME_RULE, message = "时间格式不正确")
private String week;
private Set<TimeVo> time; private Set<TimeVo> time;
@ApiModelProperty(value = "人数", example = "100") @ApiModelProperty(value = "人数", example = "100")
......
...@@ -2,7 +2,6 @@ ...@@ -2,7 +2,6 @@
package com.yiring.app.vo.location.rule; package com.yiring.app.vo.location.rule;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.Set; import java.util.Set;
...@@ -26,9 +25,6 @@ public class TimeAndUserVo implements Serializable { ...@@ -26,9 +25,6 @@ public class TimeAndUserVo implements Serializable {
@Serial @Serial
private static final long serialVersionUID = -7037620599825901175L; private static final long serialVersionUID = -7037620599825901175L;
@ApiModelProperty(value = "星期", example = "星期一")
private String week;
private Set<TimeVo> time; private Set<TimeVo> time;
private Set<RelevanceUserVo> user; private Set<RelevanceUserVo> user;
......
...@@ -25,9 +25,12 @@ public class TimeVo implements Serializable { ...@@ -25,9 +25,12 @@ public class TimeVo implements Serializable {
@Serial @Serial
private static final long serialVersionUID = -3275638425715878794L; private static final long serialVersionUID = -3275638425715878794L;
@ApiModelProperty(value = "星期", example = "星期一")
private String week;
@ApiModelProperty(value = "起始时间", example = "08:00:00") @ApiModelProperty(value = "起始时间", example = "08:00:00")
private String beginTime; private String beginTime;
@ApiModelProperty(value = "终止时间", example = "18:00:00") @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 { ...@@ -33,4 +33,9 @@ public class RegEx {
public static final String WEEK_RULE = "^星期[一二三四五六日]$"; public static final String WEEK_RULE = "^星期[一二三四五六日]$";
public static final String COLOUR_RGB = "^#(\\d|[A-F a-f]){6}$"; public static final String COLOUR_RGB = "^#(\\d|[A-F a-f]){6}$";
/**
* 数字或小数
*/
public static final String DIGIT_DECIMALS = "^(-?\\d+)|(-?\\d+.\\d+)$";
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论