From 916578cfa9e647cfa35764f0fb0f084dea738505 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Clyd=E2=80=9D?= <“lyd@datametatech.com”> Date: Wed, 19 Mar 2025 14:48:01 +0800 Subject: [PATCH] =?UTF-8?q?add:=E6=B0=B4=E5=BA=93=E6=80=BB=E8=A7=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/kms/yg/sk/domain/AttResSw.java | 134 +++++++++ .../com/kms/yg/sk/dto/AttResTaskViewDto.java | 65 +++++ .../yxgh/base/domain/monitor/MsHdmObp.java | 3 +- .../yxgh/base/domain/monitor/MsHdmRsvr.java | 3 +- .../kms/yxgh/base/domain/sk/SkAttDamBase.java | 97 +++++++ .../kms/yxgh/base/domain/sk/SkRelStRes.java | 60 ++++ .../ReservoirOverviewController.java | 31 ++ .../yxgh/common/mapper/AttResSwMapper.java | 14 + .../yxgh/common/mapper/MsHdmObpMapper.java | 14 + .../yxgh/common/mapper/MsHdmRsvrMapper.java | 15 + .../common/mapper/SkAttDamBaseMapper.java | 15 + .../yxgh/common/mapper/SkRelStResMapper.java | 14 + .../service/BsSgcSkStatisticsService.java | 274 ++++++++++++++++++ .../yxgh/common/service/MsHdmObpService.java | 16 + .../yxgh/common/service/MsHdmRsvrService.java | 12 + sql/sy/v1.6.0/增量脚本/v1.6.2-update.sql | 59 ++++ 16 files changed, 824 insertions(+), 2 deletions(-) create mode 100644 shuili-system/src/main/java/com/kms/yg/sk/domain/AttResSw.java create mode 100644 shuili-system/src/main/java/com/kms/yg/sk/dto/AttResTaskViewDto.java create mode 100644 shuili-system/src/main/java/com/kms/yxgh/base/domain/sk/SkAttDamBase.java create mode 100644 shuili-system/src/main/java/com/kms/yxgh/base/domain/sk/SkRelStRes.java create mode 100644 shuili-system/src/main/java/com/kms/yxgh/common/controller/ReservoirOverviewController.java create mode 100644 shuili-system/src/main/java/com/kms/yxgh/common/mapper/AttResSwMapper.java create mode 100644 shuili-system/src/main/java/com/kms/yxgh/common/mapper/MsHdmObpMapper.java create mode 100644 shuili-system/src/main/java/com/kms/yxgh/common/mapper/MsHdmRsvrMapper.java create mode 100644 shuili-system/src/main/java/com/kms/yxgh/common/mapper/SkAttDamBaseMapper.java create mode 100644 shuili-system/src/main/java/com/kms/yxgh/common/mapper/SkRelStResMapper.java create mode 100644 shuili-system/src/main/java/com/kms/yxgh/common/service/BsSgcSkStatisticsService.java create mode 100644 shuili-system/src/main/java/com/kms/yxgh/common/service/MsHdmObpService.java create mode 100644 shuili-system/src/main/java/com/kms/yxgh/common/service/MsHdmRsvrService.java create mode 100644 sql/sy/v1.6.0/增量脚本/v1.6.2-update.sql diff --git a/shuili-system/src/main/java/com/kms/yg/sk/domain/AttResSw.java b/shuili-system/src/main/java/com/kms/yg/sk/domain/AttResSw.java new file mode 100644 index 00000000..45742a02 --- /dev/null +++ b/shuili-system/src/main/java/com/kms/yg/sk/domain/AttResSw.java @@ -0,0 +1,134 @@ +package com.kms.yg.sk.domain; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.shuili.common.annotation.Excel; +import com.shuili.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +/** + * 【请填写功能名称】对象 ATT_RES_SW + * + * @author kms + * @date 2024-04-24 + */ +@TableName("att_res_sw") +@Data +@ApiModel("水库溢洪道表") +public class AttResSw { + + + /** + * 水库编码 + */ + @ApiModelProperty("水库编码") + private String resCode; + + /** + * 溢洪道名称 + */ + @ApiModelProperty("溢洪道名称") + private String swnm; + + /** + * 布置位置 + */ + @ApiModelProperty("布置位置") + private String lyps; + + /** + * 控制方式 + */ + @ApiModelProperty("控制方式") + private String crmt; + + + /** + * 堰顶高程 + */ + @ApiModelProperty("堰顶高程") + private String wrcrel; + + /** + * 堰顶净宽 + */ + @ApiModelProperty("堰顶净宽") + private String wrcrntwd; + + /** + * 溢流堰型式 + */ + @ApiModelProperty("溢流堰型式") + private String ofwrst; + + /** + * 闸门型式 + */ + @ApiModelProperty("闸门型式") + private String gtst; + + + /** + * 闸门尺寸 + */ + @ApiModelProperty("闸门尺寸") + private String gtsz; + + /** + * 闸门数量 + */ + @ApiModelProperty("闸门数量") + private String gtam; + + /** + * 最大泄量 + */ + @ApiModelProperty("最大泄量") + private String maxds; + + /** + * 消能型式 + */ + @ApiModelProperty("消能型式") + private String endsst; + + + /** + * 启闭设备 + */ + @ApiModelProperty("启闭设备") + private String hseq; + + /** + * 启闭机数量 + */ + @ApiModelProperty("启闭机数量") + private String hsgram; + + + /** + * 电源条件 + */ + @ApiModelProperty("电源条件") + private String pwspcn; + + /** + * 备注 + */ + @ApiModelProperty("备注") + private String note; + + /** + * 修改时间 + */ + @ApiModelProperty("修改时间") + private Date updateDate; + + +} diff --git a/shuili-system/src/main/java/com/kms/yg/sk/dto/AttResTaskViewDto.java b/shuili-system/src/main/java/com/kms/yg/sk/dto/AttResTaskViewDto.java new file mode 100644 index 00000000..9eaa88f9 --- /dev/null +++ b/shuili-system/src/main/java/com/kms/yg/sk/dto/AttResTaskViewDto.java @@ -0,0 +1,65 @@ +package com.kms.yg.sk.dto; + +import com.kms.yxgh.common.dto.IAdcd; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author lyd + * @company 数元科技有限公司 + * @create 2025-03-19 9:02 + */ + +@Data +@ApiModel("水库总览") +public class AttResTaskViewDto implements IAdcd { + @ApiModelProperty("行政区划") + private String adcd; + + @ApiModelProperty("水库编码") + private String resCode; + + @ApiModelProperty("代表站name") + private String stationName; + + @ApiModelProperty("代表站code") + private String stationCode; + + @ApiModelProperty("当前水位") + private String currentWaterLevel; + + @ApiModelProperty("堰顶高程") + private String elevationWeirCrest; + + @ApiModelProperty("设计水位") + private String designLevel; + + @ApiModelProperty("校核水位") + private String checkWaterLevel; + + @ApiModelProperty("坝顶高程") + private String crestElevation; + + @ApiModelProperty("去年今日") + private String lastYearToday; + + @ApiModelProperty("入库流量") + private String incomingFlow; + + @ApiModelProperty("出库流量") + private String outboundFlow; + + @ApiModelProperty("近一小时") + private String nearlyAnHour; + + @ApiModelProperty("近六小时") + private String nearlySixHours; + + @ApiModelProperty("近九小时") + private String nearlyNineHours; + + @ApiModelProperty("近十二小时") + private String nearlyTwelveHours; + +} diff --git a/shuili-system/src/main/java/com/kms/yxgh/base/domain/monitor/MsHdmObp.java b/shuili-system/src/main/java/com/kms/yxgh/base/domain/monitor/MsHdmObp.java index 8ef5360d..3ee4c2f0 100644 --- a/shuili-system/src/main/java/com/kms/yxgh/base/domain/monitor/MsHdmObp.java +++ b/shuili-system/src/main/java/com/kms/yxgh/base/domain/monitor/MsHdmObp.java @@ -3,6 +3,7 @@ package com.kms.yxgh.base.domain.monitor; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; +import com.shuili.common.core.domain.BaseEntity; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -15,7 +16,7 @@ import java.util.Date; @TableName("ms_hdm_obp") @Data @ApiModel("降水量监测表") -public class MsHdmObp { +public class MsHdmObp extends BaseEntity { /** * 测站编码 */ diff --git a/shuili-system/src/main/java/com/kms/yxgh/base/domain/monitor/MsHdmRsvr.java b/shuili-system/src/main/java/com/kms/yxgh/base/domain/monitor/MsHdmRsvr.java index 82062478..fdd29bb3 100644 --- a/shuili-system/src/main/java/com/kms/yxgh/base/domain/monitor/MsHdmRsvr.java +++ b/shuili-system/src/main/java/com/kms/yxgh/base/domain/monitor/MsHdmRsvr.java @@ -3,6 +3,7 @@ package com.kms.yxgh.base.domain.monitor; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; +import com.shuili.common.core.domain.BaseEntity; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -12,7 +13,7 @@ import java.util.Date; @TableName("ms_hdm_rsvr") @Data @ApiModel("水库水情监测表") -public class MsHdmRsvr { +public class MsHdmRsvr extends BaseEntity { private static final long serialVersionUID = 1L; diff --git a/shuili-system/src/main/java/com/kms/yxgh/base/domain/sk/SkAttDamBase.java b/shuili-system/src/main/java/com/kms/yxgh/base/domain/sk/SkAttDamBase.java new file mode 100644 index 00000000..d1575f08 --- /dev/null +++ b/shuili-system/src/main/java/com/kms/yxgh/base/domain/sk/SkAttDamBase.java @@ -0,0 +1,97 @@ +package com.kms.yxgh.base.domain.sk; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +@TableName("att_dam_base") +@Data +@ApiModel("水库大坝基础信息表") +public class SkAttDamBase { + + /** + * 大坝代码 + */ + @ApiModelProperty("大坝代码") + private String damCode; + + /** + * 大坝名称 + */ + @ApiModelProperty("大坝名称") + private String damName; + + /** + * 水库代码 + */ + @ApiModelProperty("水库代码") + private String resCode; + + /** + * 水库大坝中点经度 + */ + @ApiModelProperty("水库大坝中点经度") + private String damStartLong; + + /** + * 水库大坝中点纬度 + */ + @ApiModelProperty("水库大坝中点纬度") + private String damStartLat; + + @ApiModelProperty("大坝所在位置") + private String damLoc; + + @ApiModelProperty("是否主坝") + private String ifMainDam; + + @ApiModelProperty("是否溢流坝") + private String ifYlDam; + + @ApiModelProperty("工程等别") + private String engGrad; + + @ApiModelProperty("大坝级别") + private String damGrad; + + @ApiModelProperty("最大坝高") + private String damMaxHeig; + + @ApiModelProperty("坝顶长度") + private String damTopLen; + + @ApiModelProperty("坝顶宽度") + private String damTopWid; + + @ApiModelProperty("高程系统") + private String elevSys; + + @ApiModelProperty("高程转换值") + private String elevSysConver; + + @ApiModelProperty("坝顶高程") + private String damTopElev; + + @ApiModelProperty("防浪墙顶高程") + private String wvwltpel; + + @ApiModelProperty("大坝材料类型") + private String damTypeMat; + + @ApiModelProperty("大坝结构类型") + private String damTypeStr; + + @ApiModelProperty("大坝概况") + private String damOv; + + @ApiModelProperty("备注") + private String note; + + @ApiModelProperty("记录更新时间") + private Date updateDate; + +} diff --git a/shuili-system/src/main/java/com/kms/yxgh/base/domain/sk/SkRelStRes.java b/shuili-system/src/main/java/com/kms/yxgh/base/domain/sk/SkRelStRes.java new file mode 100644 index 00000000..786be2c3 --- /dev/null +++ b/shuili-system/src/main/java/com/kms/yxgh/base/domain/sk/SkRelStRes.java @@ -0,0 +1,60 @@ +package com.kms.yxgh.base.domain.sk; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import java.util.Date; +@TableName("rel_st_res") +@Data +@ApiModel("代表站") +public class SkRelStRes { + + private static final long serialVersionUID = 1L; + + + /** + * 水库编码 + */ + @ApiModelProperty("类型标识 1代表站") + private String flag; + + /** + * 水库编码 + */ + @ApiModelProperty("水库编码") + private String resCode; + + /** + * 水库名称 + */ + @ApiModelProperty("水库名称") + private String resName; + + /** + * 河流代码 + */ + @ApiModelProperty("测站代码") + private String stCode; + + /** + * 河流名称 + */ + @ApiModelProperty("测站名称") + private String stName; + + /** + * 关系建立时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty("关系建立时间") + private Date fromDate; + + /** + * 关系终止时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty("关系终止时间") + private Date toDate; + +} diff --git a/shuili-system/src/main/java/com/kms/yxgh/common/controller/ReservoirOverviewController.java b/shuili-system/src/main/java/com/kms/yxgh/common/controller/ReservoirOverviewController.java new file mode 100644 index 00000000..852c15d3 --- /dev/null +++ b/shuili-system/src/main/java/com/kms/yxgh/common/controller/ReservoirOverviewController.java @@ -0,0 +1,31 @@ +package com.kms.yxgh.common.controller; + +import com.kms.yg.sk.dto.AttResTaskViewDto; +import com.kms.yxgh.base.Response; +import com.kms.yxgh.common.service.BsSgcSkStatisticsService; +import io.swagger.annotations.ApiOperation; +import lombok.AllArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author lyd + * @company 数元科技有限公司 + * @create 2025-03-19 9:34 + */ +@RestController +@AllArgsConstructor +@RequestMapping("/run/sk/statistics") +public class ReservoirOverviewController { + + private final BsSgcSkStatisticsService bsSgcSkStatisticsService; + + @PostMapping("/view") + @ApiOperation("水库总览") + public Response getView(@RequestBody AttResTaskViewDto dto) { + return Response.ok(bsSgcSkStatisticsService.getView(dto)); + } + +} diff --git a/shuili-system/src/main/java/com/kms/yxgh/common/mapper/AttResSwMapper.java b/shuili-system/src/main/java/com/kms/yxgh/common/mapper/AttResSwMapper.java new file mode 100644 index 00000000..ffc37fc3 --- /dev/null +++ b/shuili-system/src/main/java/com/kms/yxgh/common/mapper/AttResSwMapper.java @@ -0,0 +1,14 @@ +package com.kms.yxgh.common.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.kms.yg.sk.domain.AttResSw; +import org.springframework.stereotype.Repository; + +/** + * @author lyd + * @date 2025/1/18 + */ +@Repository +public interface AttResSwMapper extends BaseMapper { + +} diff --git a/shuili-system/src/main/java/com/kms/yxgh/common/mapper/MsHdmObpMapper.java b/shuili-system/src/main/java/com/kms/yxgh/common/mapper/MsHdmObpMapper.java new file mode 100644 index 00000000..39acc053 --- /dev/null +++ b/shuili-system/src/main/java/com/kms/yxgh/common/mapper/MsHdmObpMapper.java @@ -0,0 +1,14 @@ +package com.kms.yxgh.common.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.kms.yxgh.base.domain.monitor.MsHdmObp; +import org.springframework.stereotype.Repository; + +/** + * @author lyd + * @date 2025/1/18 + */ +@Repository +public interface MsHdmObpMapper extends BaseMapper { + +} diff --git a/shuili-system/src/main/java/com/kms/yxgh/common/mapper/MsHdmRsvrMapper.java b/shuili-system/src/main/java/com/kms/yxgh/common/mapper/MsHdmRsvrMapper.java new file mode 100644 index 00000000..20cd4c02 --- /dev/null +++ b/shuili-system/src/main/java/com/kms/yxgh/common/mapper/MsHdmRsvrMapper.java @@ -0,0 +1,15 @@ +package com.kms.yxgh.common.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.kms.yxgh.base.domain.monitor.MsHdmRsvr; +import com.kms.yxgh.common.domain.ApprovalOperator; +import org.springframework.stereotype.Repository; + +/** + * @author lyd + * @date 2025/1/18 + */ +@Repository +public interface MsHdmRsvrMapper extends BaseMapper { + +} diff --git a/shuili-system/src/main/java/com/kms/yxgh/common/mapper/SkAttDamBaseMapper.java b/shuili-system/src/main/java/com/kms/yxgh/common/mapper/SkAttDamBaseMapper.java new file mode 100644 index 00000000..e8a77d63 --- /dev/null +++ b/shuili-system/src/main/java/com/kms/yxgh/common/mapper/SkAttDamBaseMapper.java @@ -0,0 +1,15 @@ +package com.kms.yxgh.common.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.kms.yxgh.base.domain.monitor.MsHdmObp; +import com.kms.yxgh.base.domain.sk.SkAttDamBase; +import org.springframework.stereotype.Repository; + +/** + * @author lyd + * @date 2025/1/18 + */ +@Repository +public interface SkAttDamBaseMapper extends BaseMapper { + +} diff --git a/shuili-system/src/main/java/com/kms/yxgh/common/mapper/SkRelStResMapper.java b/shuili-system/src/main/java/com/kms/yxgh/common/mapper/SkRelStResMapper.java new file mode 100644 index 00000000..21599fd4 --- /dev/null +++ b/shuili-system/src/main/java/com/kms/yxgh/common/mapper/SkRelStResMapper.java @@ -0,0 +1,14 @@ +package com.kms.yxgh.common.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.kms.yxgh.base.domain.sk.SkRelStRes; +import org.springframework.stereotype.Repository; + +/** + * @author lyd + * @date 2025/1/18 + */ +@Repository +public interface SkRelStResMapper extends BaseMapper { + +} diff --git a/shuili-system/src/main/java/com/kms/yxgh/common/service/BsSgcSkStatisticsService.java b/shuili-system/src/main/java/com/kms/yxgh/common/service/BsSgcSkStatisticsService.java new file mode 100644 index 00000000..047b4d6e --- /dev/null +++ b/shuili-system/src/main/java/com/kms/yxgh/common/service/BsSgcSkStatisticsService.java @@ -0,0 +1,274 @@ +package com.kms.yxgh.common.service; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.kms.yg.sk.domain.AttResRspp; +import com.kms.yg.sk.domain.AttResSw; +import com.kms.yg.sk.dto.AttResTaskViewDto; +import com.kms.yg.sk.service.AttResRsppService; +import com.kms.yxgh.base.domain.monitor.MsHdmObp; +import com.kms.yxgh.base.domain.monitor.MsHdmRsvr; +import com.kms.yxgh.base.domain.sk.SkAttDamBase; +import com.kms.yxgh.base.domain.sk.SkRelStRes; +import com.kms.yxgh.common.mapper.AttResSwMapper; +import com.kms.yxgh.common.mapper.SkAttDamBaseMapper; +import com.kms.yxgh.common.mapper.SkRelStResMapper; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.RequestBody; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.Calendar; +import java.util.Date; +import java.util.List; +/** + * 水库统计 + * + * @author lyd + * @date 2025-01-16 + */ +@Service +@AllArgsConstructor +public class BsSgcSkStatisticsService { + + private final MsHdmRsvrService msHdmRsvrService; + + private final SkRelStResMapper skRelStResMapper; + + private final AttResRsppService attResRsppService; + + private final MsHdmObpService msHdmObpService; + + private final SkAttDamBaseMapper skAttDamBaseMapper; + + private final AttResSwMapper attResSwMapper; + + + public AttResTaskViewDto getView(@RequestBody AttResTaskViewDto dto) { + + AttResTaskViewDto view = new AttResTaskViewDto(); + dtoInit(view); + + // 堰顶高程 + AttResSw attResSw = attResSwMapper.selectOne(new LambdaQueryWrapper() + .eq(!StringUtils.isEmpty(dto.getResCode()), AttResSw::getResCode, dto.getResCode()) + .orderByAsc(AttResSw::getWrcrel) + .last(" limit 1") + ); + if (!StringUtils.isEmpty(attResSw)) { + view.setElevationWeirCrest(attResSw.getWrcrel()); + } + + // 设计洪水位、校核洪水位 + AttResRspp resRsp = attResRsppService.getOne(new LambdaQueryWrapper() + .eq(!StringUtils.isEmpty(dto.getResCode()), AttResRspp::getResCode, dto.getResCode()) + .orderByDesc(AttResRspp::getCreateTime) + .last(" limit 1") + ); + if (!StringUtils.isEmpty(resRsp)) { + view.setDesignLevel(resRsp.getDsfllv()); + view.setCheckWaterLevel(resRsp.getChfllv()); + } + + // 坝顶高程 + SkAttDamBase skAttDamBase = skAttDamBaseMapper.selectOne(new LambdaQueryWrapper() + .eq(!StringUtils.isEmpty(dto.getResCode()), SkAttDamBase::getResCode, dto.getResCode()) + .orderByDesc(SkAttDamBase::getDamTopElev) + .last(" limit 1") + ); + if (!StringUtils.isEmpty(skAttDamBase)) { + view.setCrestElevation(skAttDamBase.getDamTopElev()); + } + + // 代表站 + SkRelStRes skRelOne = skRelStResMapper.selectOne(new LambdaQueryWrapper() + .eq(!StringUtils.isEmpty(dto.getResCode()), SkRelStRes::getResCode, dto.getResCode()) + .eq(SkRelStRes::getFlag, 1) + .last(" limit 1") + ); + if (StringUtils.isEmpty(skRelOne)) { + return view; + } + // 代表站 + view.setStationName(skRelOne.getStName()); + view.setStationCode(skRelOne.getStCode()); + + // 当前水位 + MsHdmRsvr msHdmRsvr = msHdmRsvrService.getOne(new LambdaQueryWrapper() + .eq(!StringUtils.isEmpty(skRelOne.getStCode()), MsHdmRsvr::getStcd, skRelOne.getStCode()) + .ge(MsHdmRsvr::getTm, getStartOfDay()) + .lt(MsHdmRsvr::getTm, getStartOfNextDay()) + .orderByDesc(MsHdmRsvr::getTm) + .last(" limit 1") + ); + if (!StringUtils.isEmpty(msHdmRsvr)) { + // 当前水位 + view.setCurrentWaterLevel(msHdmRsvr.getRz()); + // 入库流量 + view.setIncomingFlow(msHdmRsvr.getInq()); + // 出库流量 + view.setOutboundFlow(msHdmRsvr.getOtq()); + } + + // 去年今日 + MsHdmRsvr lastYearRest = msHdmRsvrService.getOne(new LambdaQueryWrapper() + .eq(!StringUtils.isEmpty(skRelOne.getStCode()), MsHdmRsvr::getStcd, skRelOne.getStCode()) + .ge(MsHdmRsvr::getTm, getLastYearTodayStartOfDay()) + .lt(MsHdmRsvr::getTm, getLastYearTomorrowStartOfDay()) + .orderByDesc(MsHdmRsvr::getTm) + .last(" limit 1") + ); + if (!StringUtils.isEmpty(lastYearRest)) { + view.setLastYearToday(lastYearRest.getRz()); + } + + // 近一个小时 + List msHdmObpOneList = msHdmObpService.list(new LambdaQueryWrapper() + .eq(!StringUtils.isEmpty(skRelOne.getStCode()), MsHdmObp::getStcd, skRelOne.getStCode()) + .ge(MsHdmObp::getCollTime, getTimeBeforeHours(1)) + .le(MsHdmObp::getCollTime, getCurrentTime()) + ); + if (!CollectionUtils.isEmpty(msHdmObpOneList)) { + view.setNearlyAnHour(getSum(msHdmObpOneList)); + } + + // 近6个小时 + List msHdmObpSixList = msHdmObpService.list(new LambdaQueryWrapper() + .eq(!StringUtils.isEmpty(skRelOne.getStCode()), MsHdmObp::getStcd, skRelOne.getStCode()) + .ge(MsHdmObp::getCollTime, getTimeBeforeHours(6)) + .le(MsHdmObp::getCollTime, getCurrentTime()) + ); + if (!CollectionUtils.isEmpty(msHdmObpSixList)) { + view.setNearlySixHours(getSum(msHdmObpSixList)); + } + + // 近9个小时 + List msHdmObpNineList = msHdmObpService.list(new LambdaQueryWrapper() + .eq(!StringUtils.isEmpty(skRelOne.getStCode()), MsHdmObp::getStcd, skRelOne.getStCode()) + .ge(MsHdmObp::getCollTime, getTimeBeforeHours(9)) + .le(MsHdmObp::getCollTime, getCurrentTime()) + ); + if (!CollectionUtils.isEmpty(msHdmObpNineList)) { + view.setNearlyNineHours(getSum(msHdmObpNineList)); + } + + // 近12个小时 + List msHdmObpTwelveList = msHdmObpService.list(new LambdaQueryWrapper() + .eq(!StringUtils.isEmpty(skRelOne.getStCode()), MsHdmObp::getStcd, skRelOne.getStCode()) + .ge(MsHdmObp::getCollTime, getTimeBeforeHours(12)) + .le(MsHdmObp::getCollTime, getCurrentTime()) + ); + if (!StringUtils.isEmpty(msHdmObpTwelveList)) { + view.setNearlyTwelveHours(getSum(msHdmObpTwelveList)); + } + return view; + } + + private String getSum(List list) { + // 使用 Stream API 处理 + BigDecimal sum = list.stream() + .map(MsHdmObp::getDrp) + .filter(drp -> !StringUtils.isEmpty(drp)) + .map(BigDecimal::new) + .reduce(BigDecimal.ZERO, BigDecimal::add); + return sum.toString(); + } + private void dtoInit(AttResTaskViewDto view) { + view.setCrestElevation("150"); + view.setCurrentWaterLevel("0"); + view.setDesignLevel("0"); + view.setElevationWeirCrest("0"); + view.setIncomingFlow("0"); + view.setLastYearToday("0"); + view.setNearlyAnHour("0"); + view.setNearlyNineHours("0"); + view.setNearlySixHours("0"); + view.setNearlyTwelveHours("0"); + view.setOutboundFlow("0"); + view.setStationCode(""); + view.setStationName(""); + view.setStationName(""); + view.setCheckWaterLevel("0"); + view.setResCode(""); + } + + + /** + * 获取当天的 00:00:00 + */ + public static Date getStartOfDay() { + // 获取当前日期 + LocalDate today = LocalDate.now(); + // 转换为当天的 00:00:00 + LocalDateTime startOfDay = today.atStartOfDay(); + // 转换为 Date 类型 + return Date.from(startOfDay.atZone(ZoneId.systemDefault()).toInstant()); + } + + /** + * 获取第二天的 00:00:00 + */ + public static Date getStartOfNextDay() { + // 获取当前日期 + LocalDate today = LocalDate.now(); + // 获取第二天的日期 + LocalDate nextDay = today.plusDays(1); + // 转换为第二天的 00:00:00 + LocalDateTime startOfNextDay = nextDay.atStartOfDay(); + // 转换为 Date 类型 + return Date.from(startOfNextDay.atZone(ZoneId.systemDefault()).toInstant()); + } + + /** + * 获取去年今日的凌晨开始时间(00:00:00) + */ + public static Date getLastYearTodayStartOfDay() { + // 获取当前日期 + LocalDate today = LocalDate.now(); + // 获取去年今日的日期 + LocalDate lastYearToday = today.minusYears(1); + // 转换为凌晨开始时间(00:00:00) + LocalDateTime startOfDay = lastYearToday.atStartOfDay(); + // 转换为 Date 类型 + return Date.from(startOfDay.atZone(ZoneId.systemDefault()).toInstant()); + } + + /** + * 获取去年今日第二天的凌晨开始时间(00:00:00) + */ + public static Date getLastYearTomorrowStartOfDay() { + // 获取当前日期 + LocalDate today = LocalDate.now(); + // 获取去年今日的日期 + LocalDate lastYearToday = today.minusYears(1); + // 获取去年今日的第二天 + LocalDate lastYearTomorrow = lastYearToday.plusDays(1); + // 转换为第二天的凌晨开始时间(00:00:00) + LocalDateTime startOfNextDay = lastYearTomorrow.atStartOfDay(); + // 转换为 Date 类型 + return Date.from(startOfNextDay.atZone(ZoneId.systemDefault()).toInstant()); + } + + /** + * 获取当前时间 + */ + public static Date getCurrentTime() { + return Calendar.getInstance().getTime(); + } + + /** + * 获取指定小时数前的时间 + * + * @param hours 小时数 + * @return 指定小时数前的时间 + */ + public static Date getTimeBeforeHours(int hours) { + Calendar calendar = Calendar.getInstance(); + // 减去指定小时数 + calendar.add(Calendar.HOUR_OF_DAY, -hours); + return calendar.getTime(); + } + +} diff --git a/shuili-system/src/main/java/com/kms/yxgh/common/service/MsHdmObpService.java b/shuili-system/src/main/java/com/kms/yxgh/common/service/MsHdmObpService.java new file mode 100644 index 00000000..ac0a8459 --- /dev/null +++ b/shuili-system/src/main/java/com/kms/yxgh/common/service/MsHdmObpService.java @@ -0,0 +1,16 @@ +package com.kms.yxgh.common.service; + +import com.kms.yxgh.base.domain.monitor.MsHdmObp; +import com.kms.yxgh.common.mapper.MsHdmObpMapper; +import com.shuili.common.core.service.BaseService; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +/** + * @author lyd + */ +@Service +@AllArgsConstructor +public class MsHdmObpService extends BaseService { + +} diff --git a/shuili-system/src/main/java/com/kms/yxgh/common/service/MsHdmRsvrService.java b/shuili-system/src/main/java/com/kms/yxgh/common/service/MsHdmRsvrService.java new file mode 100644 index 00000000..3fe088ce --- /dev/null +++ b/shuili-system/src/main/java/com/kms/yxgh/common/service/MsHdmRsvrService.java @@ -0,0 +1,12 @@ +package com.kms.yxgh.common.service; +import com.kms.yxgh.base.domain.monitor.MsHdmRsvr; +import com.kms.yxgh.common.mapper.MsHdmRsvrMapper; +import com.shuili.common.core.service.BaseService; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@AllArgsConstructor +public class MsHdmRsvrService extends BaseService { + +} diff --git a/sql/sy/v1.6.0/增量脚本/v1.6.2-update.sql b/sql/sy/v1.6.0/增量脚本/v1.6.2-update.sql new file mode 100644 index 00000000..95f6c1bd --- /dev/null +++ b/sql/sy/v1.6.0/增量脚本/v1.6.2-update.sql @@ -0,0 +1,59 @@ + +create table `rel_st_res` ( + `st_code` varchar(50) default null comment '测站代码', + `st_name` varchar(50) default null comment '测站名称', + `res_code` varchar(50) default null comment '水库代码', + `res_name` varchar(50) default null comment '水库名称', + `flag` varchar(50) default null comment '类型标识 1代表站', + `from_date` datetime default null comment '关系建立时间', + `to_date` datetime default null comment '关系终止时间' +) engine=innodb auto_increment=1 default charset=utf8mb4 collate=utf8mb4_general_ci row_format=dynamic comment='水库测站关联关系表'; + + +create table att_res_sw ( + res_code varchar(18) default null comment '水库代码', + swcd varchar(225) default null comment '溢洪道编号', + swnm varchar(225) default null comment '溢洪道名称', + lyps varchar(225) default null comment '布置位置', + crmt varchar(225) default null comment '控制方式', + wrcrel varchar(225) default null comment '堰顶高程', + wrcrntwd varchar(225) default null comment '堰顶净宽', + ofwrst varchar(225) default null comment '溢流堰型式', + gtst varchar(225) default null comment '闸门型式', + gtsz varchar(225) default null comment '闸门尺寸', + gtam varchar(225) default null comment '闸门数量', + maxds varchar(225) default null comment '最大泄量', + endsst varchar(225) default null comment '消能型式', + hseq varchar(225) default null comment '启闭设备', + hsgram varchar(225) default null comment '启闭机数量', + pwspcn varchar(225) default null comment '电源条件', + note varchar(256) default null comment '备注', + update_date datetime not null comment '记录更新时间' +)engine=innodb auto_increment=1 default charset=utf8mb4 collate=utf8mb4_general_ci row_format=dynamic comment='水库溢洪道表'; + + + +create table att_dam_base ( + dam_code varchar(225) default null comment '大坝代码', + dam_name varchar(225) default null comment '大坝名称', + res_code varchar(225) default null comment '水库代码', + dam_start_long varchar(225) default null comment '水库大坝中点经度', + dam_start_lat varchar(225) default null comment '水库大坝中点纬度', + dam_loc varchar(225) default null comment '大坝所在位置', + if_main_dam varchar(225) default null comment '是否主坝', + if_yl_dam varchar(225) default null comment '是否溢流坝', + eng_grad varchar(225) default null comment '工程等别', + dam_grad varchar(225) default null comment '大坝级别', + dam_max_heig varchar(225) default null comment '最大坝高', + dam_top_len varchar(225) default null comment '坝顶长度', + dam_top_wid varchar(225) default null comment '坝顶宽度', + elev_sys varchar(225) default null comment '高程系统', + elev_sys_conver varchar(225) default null comment '高程转换值', + dam_top_elev varchar(225) default null comment '坝顶高程', + wvwltpel varchar(225) default null comment '防浪墙顶高程', + dam_type_mat varchar(225) default null comment '大坝材料类型', + dam_type_str varchar(225) default null comment '大坝结构类型', + dam_ov varchar(3000) default null comment '大坝概况', + note varchar(256) default null comment '备注', + update_date datetime not null comment '记录更新时间' +)engine=innodb auto_increment=1 default charset=utf8mb4 collate=utf8mb4_general_ci row_format=dynamic comment='水库大坝基础信息表'; \ No newline at end of file