Merge remote-tracking branch 'origin/tsg' into tsg

master
cxw 2025-04-08 10:57:54 +08:00
commit 4ebd0f5f1c
5 changed files with 55 additions and 31 deletions

View File

@ -37,7 +37,7 @@ public interface AttResBaseMapper extends BaseMapper<AttResBase> {
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
</script>
""")

View File

@ -73,7 +73,7 @@ public class MessageCenterService extends ServiceImpl<MessageCenterMapper, Messa
public void rzWarnMes(List<StRsvrR> rlist) {
AttResBase attResBase = resBaseMapper.selectById("42120250085");
AttResBase attResBase = resBaseMapper.selectById("42112230001");
String stcd = attResBase.getStcd();
Optional<StRsvrR> first = rlist.stream().filter(o -> o.getStcd().equals(stcd)).findFirst();
if(first.isPresent()){

View File

@ -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<StZvarlB> zvarlList = queryZval(attResBaseVos.stream().map(AttResBaseVo::getStcd).collect(Collectors.toList()));
Map<String, List<StZvarlB>> 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<StZvarlB> 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<BigDecimal, BigDecimal> stZvalMap = zvarlBS.stream().collect(Collectors.toMap(StZvarlB::getRz, StZvarlB::getW));
List<BigDecimal> list = zvarlBS.stream().map(StZvarlB::getRz).sorted().collect(Collectors.toList());
vo.setNowCap(DataHandleUtil.calcData(rz,stZvalMap,list));
List<StZvarlB> zvarlList = stZvarlBMapper.selectList(null);
for (StZvarlB zvarl : zvarlList) {
if (zvarl.getRz().equals(rz)) {
vo.setNowCap(zvarl.getW());
break;
}
}
}
//查询所有测站的库容曲线
// List<StZvarlB> zvarlList = queryZval(attResBaseVos.stream().map(AttResBaseVo::getStcd).collect(Collectors.toList()));
// Map<String, List<StZvarlB>> zvalMap = zvarlList.stream().collect(Collectors.groupingBy(StZvarlB::getStcd));
// for(AttResBaseVo vo : attResBaseVos){
// String stcd = vo.getStcd();
// BigDecimal rz = vo.getRz();
// //计算当前库容
// List<StZvarlB> 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<BigDecimal, BigDecimal> stZvalMap = zvarlBS.stream().collect(Collectors.toMap(StZvarlB::getRz, StZvarlB::getW));
// List<BigDecimal> 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<AttResMonitorVo> rzData, List<StZvarlB> zqrl) {
/* 线
BigDecimal maxRz = zqrl.stream().max(Comparator.comparing(StZvarlB::getRz)).get().getRz();
BigDecimal minRz = zqrl.stream().min(Comparator.comparing(StZvarlB::getRz)).get().getRz();
Map<BigDecimal, BigDecimal> map = zqrl.stream().collect(Collectors.toMap(StZvarlB::getRz, StZvarlB::getW,
(existing, replacement) -> existing));
/**
* 线
* 1.线
* 2.109-114-5
* 1/2 = x/1 x=0.5 =4+0.5=4.5
*/
List<BigDecimal> 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值做keybigdecimal的精度设置为3位
Map<BigDecimal, BigDecimal> 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<AttResMonitorVo> bindData(String stcd,List<AttResMonitorVo> drpData, List<AttResMonitorVo> rzData) {

View File

@ -184,6 +184,8 @@ public class StStbprpBService extends ServiceImpl<StStbprpBMapper, StStbprpB> {
ret.add(vo);
}
//倒序输出
ret.sort(Comparator.comparing(StZqrlBVo::getTm).reversed());
return ret;
}

View File

@ -4,20 +4,20 @@
<select id="queryList" resultType="com.gunshi.project.xyt.model.StPptnRH">
select tm,drp from public.st_pptn_r_h where tm <![CDATA[>]]> #{start} and tm <![CDATA[<=]]> #{end}
and stcd = (select stcd from public.att_res_base where res_code = '42120250085')
and stcd = (select stcd from public.att_res_base where res_code = '42112230001')
order by tm asc
</select>
<select id="queryRzList" resultType="com.gunshi.project.xyt.entity.vo.StRzVo">
select tm,rz from public.st_rsvr_r where tm <![CDATA[>=]]> #{start} and tm <![CDATA[<]]> #{end}
and TRIM(TO_CHAR(tm, 'MI:SS')) = '00:00'
and stcd = (select stcd from public.att_res_base where res_code = '42120250085')
and stcd = (select stcd from public.att_res_base where res_code = '42112230001')
order by tm asc
</select>
<select id="queryDayDrp" resultType="com.gunshi.project.xyt.model.StPptnRD">
select tm,drp,TO_CHAR(tm, 'DD') as day,TO_CHAR(tm, 'MM') as month from public.st_pptn_r_d where year = #{year}
and stcd = (select stcd from public.att_res_base where res_code = '42120250085')
and stcd = (select stcd from public.att_res_base where res_code = '42112230001')
order by tm asc
</select>
@ -44,7 +44,7 @@
<select id="queryDayRz" resultType="com.gunshi.project.xyt.model.StPptnRD">
select tm,rz as drp,TO_CHAR(tm, 'DD') as day,TO_CHAR(tm, 'MM') as month from public.st_rsvr_r where TO_CHAR(tm, 'YYYY') = #{year}
and TRIM(TO_CHAR(tm, 'HH24:MI')) = '08:00'
and stcd = (select stcd from public.att_res_base where res_code = '42120250085')
and stcd = (select stcd from public.att_res_base where res_code = '42112230001')
order by tm asc
</select>
</mapper>