diff --git a/shuili-system/src/main/java/com/kms/yxgh/common/controller/IndicatorController.java b/shuili-system/src/main/java/com/kms/yxgh/common/controller/IndicatorController.java index c92ab94a..d83d1a7b 100644 --- a/shuili-system/src/main/java/com/kms/yxgh/common/controller/IndicatorController.java +++ b/shuili-system/src/main/java/com/kms/yxgh/common/controller/IndicatorController.java @@ -1,7 +1,9 @@ package com.kms.yxgh.common.controller; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.kms.yxgh.base.Response; import com.kms.yxgh.common.dto.IndicatorDto; +import com.kms.yxgh.common.dto.IndicatorStatisticDto; import com.kms.yxgh.common.dto.WarningQueDto; import com.kms.yxgh.common.service.IndicatorService; import com.shuili.common.core.domain.SearchParam; @@ -13,6 +15,8 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.Map; + /** * @ClassName: WarningDataController * @Description: TODO @@ -35,4 +39,20 @@ public class IndicatorController { public IPage list(@RequestBody SearchParam sp) { return indicatorService.list(sp); } + + //按小时统计运行指标 + @PostMapping("/hour") + @ApiOperation("按小时统计运行指标") + public Response> hour(@RequestBody SearchParam sp) { + return Response.ok(indicatorService.hour(sp)); + } + + //最大、最小、平均值等 + @PostMapping("/statistic") + @ApiOperation("最大、最小、平均值等") + public Response statistic(@RequestBody SearchParam sp) { + return Response.ok(indicatorService.statistic(sp)); + } + + } diff --git a/shuili-system/src/main/java/com/kms/yxgh/common/dto/IndicatorDto.java b/shuili-system/src/main/java/com/kms/yxgh/common/dto/IndicatorDto.java index 972d3a51..81b9a338 100644 --- a/shuili-system/src/main/java/com/kms/yxgh/common/dto/IndicatorDto.java +++ b/shuili-system/src/main/java/com/kms/yxgh/common/dto/IndicatorDto.java @@ -73,6 +73,14 @@ public class IndicatorDto { @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date collectionTime; + //闸机电压值 + @ApiModelProperty("闸机电压值") + private Float voltage = 380F; + + //闸机液压值 + @ApiModelProperty("闸机液压值") + private Float hydraulic = 3.5F; + @ApiModelProperty("年") private Integer year; @ApiModelProperty("月") diff --git a/shuili-system/src/main/java/com/kms/yxgh/common/dto/IndicatorStatisticDto.java b/shuili-system/src/main/java/com/kms/yxgh/common/dto/IndicatorStatisticDto.java new file mode 100644 index 00000000..7d8f70c2 --- /dev/null +++ b/shuili-system/src/main/java/com/kms/yxgh/common/dto/IndicatorStatisticDto.java @@ -0,0 +1,186 @@ +package com.kms.yxgh.common.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @ClassName: IndicatorDto + * @Description: TODO + * @Date: 2024/3/25 上午9:55 + * * + * @author: hxh + * @version: 1.0 + */ +@Data +@ApiModel("监测数据统计") +public class IndicatorStatisticDto { + + @ApiModelProperty("id") + private String name; + @ApiModelProperty("编码") + private String code; + @ApiModelProperty("类型:1堤防,2水闸") + private String type; + + @ApiModelProperty("测站编码") + private String stcd; + + //最大上有水位 + @ApiModelProperty("最大上有水位") + private Float maxUpstreamLevel; + //最小上游水位 + @ApiModelProperty("最小上游水位") + private Float minUpstreamLevel; + //平均上游水位 + @ApiModelProperty("平均上游水位") + private Float avgUpstreamLevel; + + //最大下游水位 + @ApiModelProperty("最大下游水位") + private Float maxDownstreamLevel; + //最小下游水位 + @ApiModelProperty("最小下游水位") + private Float minDownstreamLevel; + //平均下游水位 + @ApiModelProperty("平均下游水位") + private Float avgDownstreamLevel; + + //最大开度 + @ApiModelProperty("最大开度") + private Float maxOpening; + //最小开度 + @ApiModelProperty("最小开度") + private Float minOpening; + //平均开度 + @ApiModelProperty("平均开度") + private Float avgOpening; + + + //最大过闸流量 + @ApiModelProperty("最大过闸流量") + private Float maxGateFlow; + //最小过闸流量 + @ApiModelProperty("最小过闸流量") + private Float minGateFlow; + //平均过闸流量 + @ApiModelProperty("平均过闸流量") + private Float avgGateFlow; + + + //最大雨量 + @ApiModelProperty("最大雨量") + private Float maxRainFall; + //最小雨量 + @ApiModelProperty("最小雨量") + private Float minRainFall; + //平均雨量 + @ApiModelProperty("平均雨量") + private Float avgRainFall; + + //最大绕渗透压 + @ApiModelProperty("最大绕渗透压") + private Float maxBypassOsmoticPressure; + //最小绕渗透压 + @ApiModelProperty("最小绕渗透压") + private Float minBypassOsmoticPressure; + //平均绕渗透压 + @ApiModelProperty("平均绕渗透压") + private Float avgBypassOsmoticPressure; + + //最大渗透压计高程 + @ApiModelProperty("最大渗透压计高程") + private Float maxOsmoticPressureGaugeElevation; + //最小渗透压计高程 + @ApiModelProperty("最小渗透压计高程") + private Float minOsmoticPressureGaugeElevation; + //平均渗透压计高程 + @ApiModelProperty("平均渗透压计高程") + private Float avgOsmoticPressureGaugeElevation; + + //最大闸机扬压力 + @ApiModelProperty("最大闸机扬压力") + private Float maxBoostPressure; + //最小闸机扬压力 + @ApiModelProperty("最小闸机扬压力") + private Float minBoostPressure; + //平均闸机扬压力 + @ApiModelProperty("平均闸机扬压力") + private Float avgBoostPressure; + + //最大水闸接缝 + @ApiModelProperty("最大水闸接缝") + private Float maxSeam; + //最小水闸接缝 + @ApiModelProperty("最小水闸接缝") + private Float minSeam; + //平均水闸接缝 + @ApiModelProperty("平均水闸接缝") + private Float avgSeam; + + //最大裂缝开合度 + @ApiModelProperty("最大裂缝开合度") + private Float maxCrackOpeningDegree; + //最小裂缝开合度 + @ApiModelProperty("最小裂缝开合度") + private Float minCrackOpeningDegree; + //平均裂缝开合度 + @ApiModelProperty("平均裂缝开合度") + private Float avgCrackOpeningDegree; + + //最大闸墩变形x + @ApiModelProperty("最大闸墩变形x") + private Float maxDeformationX; + //最小闸墩变形x + @ApiModelProperty("最小闸墩变形x") + private Float minDeformationX; + //平均闸墩变形x + @ApiModelProperty("平均闸墩变形x") + private Float avgDeformationX; + + //最大闸墩变形y + @ApiModelProperty("最大闸墩变形y") + private Float maxDeformationY; + //最小闸墩变形y + @ApiModelProperty("最小闸墩变形y") + private Float minDeformationY; + //平均闸墩变形y + @ApiModelProperty("平均闸墩变形y") + private Float avgDeformationY; + + //最大闸机油温 + @ApiModelProperty("最大闸机油温") + private Float maxOilTemperature; + //最小闸机油温 + @ApiModelProperty("最小闸机油温") + private Float minOilTemperature; + //平均闸机油温 + @ApiModelProperty("平均闸机油温") + private Float avgOilTemperature; + + + // 采集时间 + @ApiModelProperty("采集时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date collectionTime; + + //闸机电压值 + @ApiModelProperty("闸机电压值") + private Float voltage = 380F; + + //闸机液压值 + @ApiModelProperty("闸机液压值") + private Float hydraulic = 3.5F; + + @ApiModelProperty("年") + private Integer year; + @ApiModelProperty("月") + private Integer month; + @ApiModelProperty("日") + private Integer day; + @ApiModelProperty("时") + private Integer hour; +} diff --git a/shuili-system/src/main/java/com/kms/yxgh/common/mapper/IndicatorMapper.java b/shuili-system/src/main/java/com/kms/yxgh/common/mapper/IndicatorMapper.java index 64e55e57..fb1ee837 100644 --- a/shuili-system/src/main/java/com/kms/yxgh/common/mapper/IndicatorMapper.java +++ b/shuili-system/src/main/java/com/kms/yxgh/common/mapper/IndicatorMapper.java @@ -5,11 +5,14 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.kms.yxgh.common.domain.Indicator; import com.kms.yxgh.common.dto.IndicatorDto; +import com.kms.yxgh.common.dto.IndicatorStatisticDto; import com.kms.yxgh.common.dto.WarningQueDto; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import org.springframework.stereotype.Repository; +import java.util.List; + /** * @ClassName: MonitoringDataMapper * @Description: TODO @@ -32,6 +35,52 @@ public interface IndicatorMapper extends BaseMapper { " and jc.collection_time >= #{data.startTime} " + " and jc.collection_time <= #{data.endTime} " + " and cz.type in #{type} " + + " and cz.code = #{data.code} " + + "order by jc.collection_time desc " + "") IPage search(Page page, @Param("data") WarningQueDto data); + + //按小时统计运行指标平均数,分组条件是年、月、日、小时 + @Select("") + List hour(@Param("data") WarningQueDto data); + + @Select("") + IndicatorStatisticDto statistic(@Param("data") WarningQueDto data); + } diff --git a/shuili-system/src/main/java/com/kms/yxgh/common/service/IndicatorService.java b/shuili-system/src/main/java/com/kms/yxgh/common/service/IndicatorService.java index dab40c10..70f9161d 100644 --- a/shuili-system/src/main/java/com/kms/yxgh/common/service/IndicatorService.java +++ b/shuili-system/src/main/java/com/kms/yxgh/common/service/IndicatorService.java @@ -4,14 +4,17 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.kms.yxgh.common.domain.Indicator; import com.kms.yxgh.common.dto.IndicatorDto; +import com.kms.yxgh.common.dto.IndicatorStatisticDto; import com.kms.yxgh.common.dto.WarningQueDto; import com.kms.yxgh.common.mapper.IndicatorMapper; import com.shuili.common.core.domain.SearchParam; -import com.shuili.common.utils.StringUtils; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.List; +import java.util.Map; import java.util.Optional; +import java.util.stream.Collectors; /** * @ClassName: WarningDataService @@ -33,4 +36,19 @@ public class IndicatorService { WarningQueDto data = Optional.ofNullable(sp.getData()).orElse(new WarningQueDto()); return indicatorMapper.search(page, data); } + + public Map hour(SearchParam sp) { + WarningQueDto data = Optional.ofNullable(sp.getData()).orElse(new WarningQueDto()); + List indicatorDtos = indicatorMapper.hour(data); + return indicatorDtos.stream().collect( + Collectors.toMap( + d -> String.format("%d-%d-%d-%d", d.getYear(), d.getMonth(), d.getDay(), d.getHour()), + d -> d + )); + } + + public IndicatorStatisticDto statistic(SearchParam sp) { + WarningQueDto data = Optional.ofNullable(sp.getData()).orElse(new WarningQueDto()); + return indicatorMapper.statistic(data); + } }