预警规则配置,隐患预警

master
wany 2024-07-09 14:54:21 +08:00
parent dce7b97d93
commit b1e040290a
13 changed files with 266 additions and 35 deletions

View File

@ -1,6 +1,10 @@
package com.gunshi.project.xyt.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gunshi.core.result.R;
import com.gunshi.project.xyt.entity.so.WarnPageSo;
import com.gunshi.project.xyt.entity.so.WarnSo;
import com.gunshi.project.xyt.entity.vo.OsmoticWarnVo;
import com.gunshi.project.xyt.model.OsmoticWarnR;
import com.gunshi.project.xyt.service.OsmoticWarnRService;
import com.gunshi.project.xyt.validate.markers.Insert;
@ -13,7 +17,8 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
/**
* :
* author: xusan
@ -48,16 +53,16 @@ public class OsmoticWarnRController {
return R.ok(service.removeById(id));
}
@Operation(summary = "列表")
@PostMapping("/list")
public R<List<OsmoticWarnR>> list() {
return R.ok(service.lambdaQuery().list());
@Operation(summary = "统计")
@PostMapping("/stat")
public R<Map<Integer,Long>> stat(@RequestBody WarnSo warnSo) {
return R.ok(service.stat(warnSo));
}
@Operation(summary = "分页")
@PostMapping("/page")
public R<List<OsmoticWarnR>> page() {
return R.ok(service.page(null,null));
public R<Page<OsmoticWarnVo>> page(@RequestBody WarnPageSo warnPageSo) {
return R.ok(service.queryPage(warnPageSo));
}
}

View File

@ -1,6 +1,8 @@
package com.gunshi.project.xyt.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gunshi.core.result.R;
import com.gunshi.project.xyt.entity.so.WarnRulePageSo;
import com.gunshi.project.xyt.model.OsmoticWarnRule;
import com.gunshi.project.xyt.service.OsmoticWarnRuleService;
import com.gunshi.project.xyt.validate.markers.Insert;
@ -56,8 +58,8 @@ public class OsmoticWarnRuleController {
@Operation(summary = "分页")
@PostMapping("/page")
public R<List<OsmoticWarnRule>> page() {
return R.ok(service.page(null,null));
public R<Page<OsmoticWarnRule>> page(@RequestBody WarnRulePageSo warnRulePageSo) {
return R.ok(service.queryPage(warnRulePageSo));
}
}

View File

@ -1,6 +1,7 @@
package com.gunshi.project.xyt.controller;
import com.gunshi.core.result.R;
import com.gunshi.db.dto.DateTimeRangeSo;
import com.gunshi.project.xyt.model.StQxWarnR;
import com.gunshi.project.xyt.service.StQxWarnRService;
import com.gunshi.project.xyt.validate.markers.Insert;
@ -50,8 +51,9 @@ public class StQxWarnRController {
@Operation(summary = "列表")
@PostMapping("/list")
public R<List<StQxWarnR>> list() {
return R.ok(service.lambdaQuery().list());
public R<List<StQxWarnR>> list(@RequestBody DateTimeRangeSo dateTimeRangeSo) {
return R.ok(service.lambdaQuery()
.ge(StQxWarnR::getTm,dateTimeRangeSo.getStart()).lt(StQxWarnR::getTm,dateTimeRangeSo.getEnd()).list());
}
@Operation(summary = "分页")

View File

@ -0,0 +1,23 @@
package com.gunshi.project.xyt.entity.so;
import com.gunshi.db.dto.PageSo;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
* Description:
* Created by wanyan on 2024/3/19
*
* @author wanyan
* @version 1.0
*/
@Data
@Schema(description = "隐患预警分页查询对象")
public class WarnPageSo extends WarnSo{
@NotNull(message = "分页参数不能为空")
@Schema(description = "分页参数")
private PageSo pageSo;
}

View File

@ -0,0 +1,29 @@
package com.gunshi.project.xyt.entity.so;
import com.gunshi.db.dto.PageSo;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
* Description:
* Created by wanyan on 2024/3/19
*
* @author wanyan
* @version 1.0
*/
@Data
@Schema(description = "预警规则配置分页查询对象")
public class WarnRulePageSo {
@NotNull(message = "分页参数不能为空")
@Schema(description = "分页参数")
private PageSo pageSo;
@Schema(description="告警类型1渗压监测 2渗流监测 3位移监测")
private Integer type;
@Schema(description="测点编号")
private String stationCode;
}

View File

@ -0,0 +1,30 @@
package com.gunshi.project.xyt.entity.so;
import com.gunshi.db.dto.DateTimeRangeSo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* Description:
* Created by wanyan on 2024/3/19
*
* @author wanyan
* @version 1.0
*/
@Data
@Schema(description = "隐患预警查询对象")
public class WarnSo {
@Schema(description = "时间段")
private DateTimeRangeSo dateTimeRangeSo;
@Schema(description="告警类型1渗压监测 2渗流监测 3位移监测")
private Integer type;
@Schema(description="测点编号")
private String stationCode;
@Schema(description="告警级别1黄色 2红色")
private Integer level;
}

View File

@ -0,0 +1,57 @@
package com.gunshi.project.xyt.entity.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.gunshi.core.dateformat.DateFormatString;
import com.gunshi.project.xyt.model.OsmoticWarnRule;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* Description:
* Created by wanyan on 2024/7/9
*
* @author wanyan
* @version 1.0
*/
@Data
public class OsmoticWarnVo extends OsmoticWarnRule {
/**
*
*/
@Schema(description="主键")
private Long id;
/**
*
*/
@Schema(description="测点编号")
private String stationCode;
/**
* id
*/
@Schema(description="预警规则id")
private Long ruleId;
/**
*
*/
@Schema(description="监测值")
private BigDecimal value;
/**
*
*/
@Schema(description="预警时间")
@JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8")
private Date tm;
/**
* 1 2 3
*/
@Schema(description="监测类型1渗压 2渗流 3位移")
private Integer type;
}

View File

@ -1,8 +1,13 @@
package com.gunshi.project.xyt.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gunshi.project.xyt.entity.so.WarnPageSo;
import com.gunshi.project.xyt.entity.vo.OsmoticWarnVo;
import com.gunshi.project.xyt.model.OsmoticWarnR;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
/**
* :
@ -12,4 +17,31 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface OsmoticWarnRMapper extends BaseMapper<OsmoticWarnR> {
@Select("""
<script>
select t.*,s.*
from public.osmotic_warn_r t
left join public.osmotic_warn_rule s
on t.rule_id = s.id
<where>
<if test="obj.type != null">
t.type = #{obj.type}
</if>
<if test="obj.level != null">
t.level = #{obj.level}
</if>
<if test="obj.stationCode != null and obj.stationCode !=''">
t.station_code LIKE concat('%',#{obj.stationCode},'%')
</if>
<if test="obj.dateTimeRangeSo != null and obj.dateTimeRangeSo.start != null">
and t.tm <![CDATA[>=]]> #{obj.dateTimeRangeSo.start}
</if>
<if test="obj.dateTimeRangeSo != null and obj.dateTimeRangeSo.end != null">
and t.tm <![CDATA[<=]]> #{obj.dateTimeRangeSo.end}
</if>
</where>
order by t.tm,t.station_code desc
</script>
""")
Page<OsmoticWarnVo> queryPage(Page<OsmoticWarnVo> page,@Param("obj") WarnPageSo warnPageSo);
}

View File

@ -107,10 +107,10 @@ public class AttSpillwayBase implements Serializable {
/**
*
*/
@TableField(value="reamrk")
@TableField(value="remark")
@Schema(description="备注")
@Size(max = 500,message = "备注最大长度要小于 500")
private String reamrk;
private String remark;
/**
*

View File

@ -13,6 +13,7 @@ import jakarta.validation.constraints.Size;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
@ -33,7 +34,6 @@ public class OsmoticWarnR implements Serializable {
*/
@TableId(value="id", type= IdType.AUTO)
@Schema(description="主键")
// @Size(max = 0,message = "主键最大长度要小于 0")
@NotBlank(message = "主键不能为空")
private Long id;
@ -50,7 +50,6 @@ public class OsmoticWarnR implements Serializable {
*/
@TableField(value="rule_id")
@Schema(description="预警规则id")
// @Size(max = 0,message = "预警规则id最大长度要小于 0")
private Long ruleId;
/**
@ -58,15 +57,13 @@ public class OsmoticWarnR implements Serializable {
*/
@TableField(value="value")
@Schema(description="监测值")
// @Size(max = 0,message = "监测值最大长度要小于 0")
private String value;
private BigDecimal value;
/**
*
*/
@TableField(value="tm")
@Schema(description="预警时间")
// @Size(max = 0,message = "预警时间最大长度要小于 0")
@JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8")
private Date tm;
@ -75,7 +72,13 @@ public class OsmoticWarnR implements Serializable {
*/
@TableField(value="type")
@Schema(description="监测类型1渗压 2渗流 3位移")
// @Size(max = 0,message = "监测类型1渗压 2渗流 3位移最大长度要小于 0")
private Integer type;
/**
* 1 2
*/
@TableField(value="level")
@Schema(description="告警级别1黄色 2红色")
private Integer level;
}

View File

@ -5,15 +5,13 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.gunshi.core.dateformat.DateFormatString;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.math.BigDecimal;
/**
* :
@ -33,7 +31,6 @@ public class OsmoticWarnRule implements Serializable {
*/
@TableId(value="id", type= IdType.AUTO)
@Schema(description="主键")
// @Size(max = 0,message = "主键最大长度要小于 0")
@NotBlank(message = "主键不能为空")
private Long id;
@ -51,7 +48,6 @@ public class OsmoticWarnRule implements Serializable {
*/
@TableField(value="type")
@Schema(description="告警类型1渗压监测 2渗流监测 3位移监测")
// @Size(max = 0,message = "告警类型1渗压监测 2渗流监测 3位移监测最大长度要小于 0")
private Integer type;
/**
@ -59,7 +55,6 @@ public class OsmoticWarnRule implements Serializable {
*/
@TableField(value="level")
@Schema(description="告警级别1黄色 2红色")
// @Size(max = 0,message = "告警级别1黄色 2红色最大长度要小于 0")
private Integer level;
/**
@ -70,6 +65,13 @@ public class OsmoticWarnRule implements Serializable {
@Size(max = 32,message = "校验规则描述最大长度要小于 32")
private String ruleDesc;
/**
* (x,y,z)
*/
@TableField(value="direction")
@Schema(description="位移方向(x,y,z)")
private String direction;
/**
* condition_one
*/
@ -83,8 +85,7 @@ public class OsmoticWarnRule implements Serializable {
*/
@TableField(value="value_one")
@Schema(description="value_one")
// @Size(max = 0,message = "value_one最大长度要小于 0")
private String valueOne;
private BigDecimal valueOne;
/**
* condition_two
@ -99,7 +100,6 @@ public class OsmoticWarnRule implements Serializable {
*/
@TableField(value="condition")
@Schema(description="1且 2或")
// @Size(max = 0,message = "1且 2或最大长度要小于 0")
private Integer condition;
/**
@ -107,15 +107,13 @@ public class OsmoticWarnRule implements Serializable {
*/
@TableField(value="value_two")
@Schema(description="value_two")
// @Size(max = 0,message = "value_two最大长度要小于 0")
private String valueTwo;
private BigDecimal valueTwo;
/**
* 0 1
*/
@TableField(value="status")
@Schema(description="是否启用0否 1是")
// @Size(max = 0,message = "是否启用0否 1是最大长度要小于 0")
private Integer status;
private BigDecimal status;
}

View File

@ -1,13 +1,23 @@
package com.gunshi.project.xyt.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gunshi.project.xyt.entity.so.WarnPageSo;
import com.gunshi.project.xyt.entity.so.WarnSo;
import com.gunshi.project.xyt.entity.vo.OsmoticWarnVo;
import com.gunshi.project.xyt.mapper.OsmoticWarnRMapper;
import com.gunshi.project.xyt.model.OsmoticWarnR;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* :
@ -19,7 +29,33 @@ import java.util.Date;
@Transactional(rollbackFor = Exception.class)
public class OsmoticWarnRService extends ServiceImpl<OsmoticWarnRMapper, OsmoticWarnR>
{
@Resource
private OsmoticWarnRMapper mapper;
public Page<OsmoticWarnVo> queryPage(WarnPageSo warnPageSo) {
return mapper.queryPage(warnPageSo.getPageSo().toPage(),warnPageSo);
}
public Map<Integer, Long> stat(WarnSo warnSo) {
LambdaQueryWrapper<OsmoticWarnR> wrapper = Wrappers.lambdaQuery();
if(warnSo.getType() != null){
wrapper.eq(OsmoticWarnR::getType,warnSo.getType());
}
if(warnSo.getLevel() != null){
wrapper.eq(OsmoticWarnR::getLevel,warnSo.getLevel());
}
if(StringUtils.isNotEmpty(warnSo.getStationCode())){
wrapper.like(OsmoticWarnR::getStationCode,warnSo.getStationCode());
}
if(warnSo.getDateTimeRangeSo() != null && warnSo.getDateTimeRangeSo().getStart() != null){
wrapper.ge(OsmoticWarnR::getTm,warnSo.getDateTimeRangeSo().getStart());
}
if(warnSo.getDateTimeRangeSo() != null && warnSo.getDateTimeRangeSo().getEnd() != null){
wrapper.le(OsmoticWarnR::getTm,warnSo.getDateTimeRangeSo().getEnd());
}
List<OsmoticWarnR> list = this.list(wrapper);
return list.stream().collect(Collectors.groupingBy(OsmoticWarnR::getLevel, Collectors.counting()));
}
}

View File

@ -1,14 +1,17 @@
package com.gunshi.project.xyt.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gunshi.project.xyt.entity.so.WarnRulePageSo;
import com.gunshi.project.xyt.mapper.OsmoticWarnRuleMapper;
import com.gunshi.project.xyt.model.OsmoticWarnRule;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
/**
* :
* author: xusan
@ -20,6 +23,17 @@ import java.util.Date;
public class OsmoticWarnRuleService extends ServiceImpl<OsmoticWarnRuleMapper, OsmoticWarnRule>
{
public Page<OsmoticWarnRule> queryPage(WarnRulePageSo warnRulePageSo) {
LambdaQueryWrapper<OsmoticWarnRule> queryWrapper = Wrappers.lambdaQuery();
if(warnRulePageSo.getType() != null){
queryWrapper.eq(OsmoticWarnRule::getType,warnRulePageSo.getType());
}
if(StringUtils.isNotEmpty(warnRulePageSo.getStationCode())){
queryWrapper.like(OsmoticWarnRule::getStationCode,warnRulePageSo.getStationCode());
}
queryWrapper.orderByDesc(OsmoticWarnRule::getStatus);
return this.page(warnRulePageSo.getPageSo().toPage(),queryWrapper);
}
}