diff --git a/src/main/java/com/gunshi/project/xyt/mapper/AttResBaseMapper.java b/src/main/java/com/gunshi/project/xyt/mapper/AttResBaseMapper.java index 8e03111..2d7777c 100644 --- a/src/main/java/com/gunshi/project/xyt/mapper/AttResBaseMapper.java +++ b/src/main/java/com/gunshi/project/xyt/mapper/AttResBaseMapper.java @@ -37,7 +37,7 @@ public interface AttResBaseMapper extends BaseMapper { left join public.st_addvcd_d sad on t.adcd = sad.adcd left join public.st_rsvr_r_real m on t.stcd = m.stcd left join public.st_pptn_r_real sprr on t.stcd = sprr.stcd - where t.sttp = 'RR' and s.res_code = '42120250085' + where t.sttp = 'RR' and s.res_code = '42112230001' order by aFsltdz desc nulls last """) diff --git a/src/main/java/com/gunshi/project/xyt/service/MessageCenterService.java b/src/main/java/com/gunshi/project/xyt/service/MessageCenterService.java index 1135322..e426843 100644 --- a/src/main/java/com/gunshi/project/xyt/service/MessageCenterService.java +++ b/src/main/java/com/gunshi/project/xyt/service/MessageCenterService.java @@ -73,7 +73,7 @@ public class MessageCenterService extends ServiceImpl rlist) { - AttResBase attResBase = resBaseMapper.selectById("42120250085"); + AttResBase attResBase = resBaseMapper.selectById("42112230001"); String stcd = attResBase.getStcd(); Optional first = rlist.stream().filter(o -> o.getStcd().equals(stcd)).findFirst(); if(first.isPresent()){ diff --git a/src/main/java/com/gunshi/project/xyt/service/ReservoirWaterService.java b/src/main/java/com/gunshi/project/xyt/service/ReservoirWaterService.java index 995ef42..17f46d9 100644 --- a/src/main/java/com/gunshi/project/xyt/service/ReservoirWaterService.java +++ b/src/main/java/com/gunshi/project/xyt/service/ReservoirWaterService.java @@ -20,6 +20,7 @@ import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import java.math.BigDecimal; +import java.math.RoundingMode; import java.time.LocalDateTime; import java.time.ZoneId; import java.util.*; @@ -59,33 +60,44 @@ public class ReservoirWaterService { } return o; }).collect(Collectors.toList()); - //查询所有测站的库容曲线 - List zvarlList = queryZval(attResBaseVos.stream().map(AttResBaseVo::getStcd).collect(Collectors.toList())); - Map> zvalMap = zvarlList.stream().collect(Collectors.groupingBy(StZvarlB::getStcd)); - for(AttResBaseVo vo : attResBaseVos){ - String stcd = vo.getStcd(); + + for (AttResBaseVo vo : attResBaseVos) { BigDecimal rz = vo.getRz(); - //计算当前库容 - List zvarlBS = zvalMap.get(stcd); - if(rz != null && CollectionUtils.isNotEmpty(zvarlBS)){ - BigDecimal maxRz = zvarlBS.stream().max(Comparator.comparing(StZvarlB::getRz)).get().getRz(); - BigDecimal minRz = zvarlBS.stream().min(Comparator.comparing(StZvarlB::getRz)).get().getRz(); - if(rz.compareTo(minRz) < 0 || rz.compareTo(maxRz) > 0){ - //当期水位库容 - StZvarlB equals = zvarlBS.stream().filter(e -> e.getRz().compareTo(vo.getRz()) == 0).findFirst().orElse(new StZvarlB()); - //死水位库容 - StZvarlB dead = zvarlBS.stream().filter(e -> e.getRz().compareTo(vo.getDeadCap()) == 0).findFirst().orElse(new StZvarlB()); - if(Objects.nonNull(equals) && Objects.nonNull(dead)){ - BigDecimal subtract = equals.getW().subtract(dead.getW()); - vo.setNowCap(subtract); - } - continue; + List zvarlList = stZvarlBMapper.selectList(null); + for (StZvarlB zvarl : zvarlList) { + if (zvarl.getRz().equals(rz)) { + vo.setNowCap(zvarl.getW()); + break; } - Map stZvalMap = zvarlBS.stream().collect(Collectors.toMap(StZvarlB::getRz, StZvarlB::getW)); - List list = zvarlBS.stream().map(StZvarlB::getRz).sorted().collect(Collectors.toList()); - vo.setNowCap(DataHandleUtil.calcData(rz,stZvalMap,list)); } } + //查询所有测站的库容曲线 +// List zvarlList = queryZval(attResBaseVos.stream().map(AttResBaseVo::getStcd).collect(Collectors.toList())); +// Map> zvalMap = zvarlList.stream().collect(Collectors.groupingBy(StZvarlB::getStcd)); +// for(AttResBaseVo vo : attResBaseVos){ +// String stcd = vo.getStcd(); +// BigDecimal rz = vo.getRz(); +// //计算当前库容 +// List zvarlBS = zvalMap.get(stcd); +// if(rz != null && CollectionUtils.isNotEmpty(zvarlBS)){ +// BigDecimal maxRz = zvarlBS.stream().max(Comparator.comparing(StZvarlB::getRz)).get().getRz(); +// BigDecimal minRz = zvarlBS.stream().min(Comparator.comparing(StZvarlB::getRz)).get().getRz(); +// if(rz.compareTo(minRz) < 0 || rz.compareTo(maxRz) > 0){ +// //当期水位库容 +// StZvarlB equals = zvarlBS.stream().filter(e -> e.getRz().compareTo(vo.getRz()) == 0).findFirst().orElse(new StZvarlB()); +// //死水位库容 +// StZvarlB dead = zvarlBS.stream().filter(e -> e.getRz().compareTo(vo.getDeadCap()) == 0).findFirst().orElse(new StZvarlB()); +// if(Objects.nonNull(equals) && Objects.nonNull(dead)){ +// BigDecimal subtract = equals.getW().subtract(dead.getW()); +// vo.setNowCap(subtract); +// } +// continue; +// } +// Map stZvalMap = zvarlBS.stream().collect(Collectors.toMap(StZvarlB::getRz, StZvarlB::getW)); +// List list = zvarlBS.stream().map(StZvarlB::getRz).sorted().collect(Collectors.toList()); +// vo.setNowCap(DataHandleUtil.calcData(rz,stZvalMap,list)); +// } +// } return attResBaseVos; } @@ -157,16 +169,17 @@ public class ReservoirWaterService { } private void calcTqData(List rzData, List zqrl) { + /* 前期库容曲线数据不足,采用了计算近似值,废弃,直接查表 BigDecimal maxRz = zqrl.stream().max(Comparator.comparing(StZvarlB::getRz)).get().getRz(); BigDecimal minRz = zqrl.stream().min(Comparator.comparing(StZvarlB::getRz)).get().getRz(); Map map = zqrl.stream().collect(Collectors.toMap(StZvarlB::getRz, StZvarlB::getW, (existing, replacement) -> existing)); - /** + * 根据监测水位和库容曲线计算出当前库容 * 计算规则:1.监测水位不在库容曲线范围内,无法计算当前库容 * 2.找出与监测水位最接近的一组水位值,算出比例,根据比例计算库容:如监测水位为10,最相近的一组水位值为9-11,对应的库容为4-5 * 则计算公式为1/2 = x/1 x=0.5 当前库容=4+0.5=4.5 - */ + List list = zqrl.stream().map(StZvarlB::getRz).collect(Collectors.toList()); for (AttResMonitorVo vo : rzData) { BigDecimal rz = vo.getRz(); @@ -175,6 +188,15 @@ public class ReservoirWaterService { } vo.setW(DataHandleUtil.calcData(rz, map, list)); } + */ + //zqrl转map,用rz值做key,bigdecimal的精度设置为3位 + Map map = zqrl.stream().collect(Collectors.toMap(v -> v.getRz().setScale(3, RoundingMode.UNNECESSARY), v -> v.getW())); + for (AttResMonitorVo vo : rzData) { + BigDecimal rz = vo.getRz().setScale(3, RoundingMode.UNNECESSARY); + if (map.containsKey(rz)) { + vo.setW(map.get(rz)); + } + } } private List bindData(String stcd,List drpData, List rzData) { diff --git a/src/main/java/com/gunshi/project/xyt/service/StStbprpBService.java b/src/main/java/com/gunshi/project/xyt/service/StStbprpBService.java index b001ace..b66f2fe 100644 --- a/src/main/java/com/gunshi/project/xyt/service/StStbprpBService.java +++ b/src/main/java/com/gunshi/project/xyt/service/StStbprpBService.java @@ -184,6 +184,8 @@ public class StStbprpBService extends ServiceImpl { ret.add(vo); } + //倒序输出 + ret.sort(Comparator.comparing(StZqrlBVo::getTm).reversed()); return ret; } diff --git a/src/main/resources/mapper/StPptnRHMapper.xml b/src/main/resources/mapper/StPptnRHMapper.xml index 35f53ed..7d0625e 100644 --- a/src/main/resources/mapper/StPptnRHMapper.xml +++ b/src/main/resources/mapper/StPptnRHMapper.xml @@ -4,20 +4,20 @@ @@ -44,7 +44,7 @@