一堆微调
parent
62e58e7183
commit
b1db2b32cb
|
|
@ -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>
|
||||
""")
|
||||
|
|
|
|||
|
|
@ -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()){
|
||||
|
|
|
|||
|
|
@ -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.找出与监测水位最接近的一组水位值,算出比例,根据比例计算库容:如监测水位为10,最相近的一组水位值为9-11,对应的库容为4-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值做key,bigdecimal的精度设置为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) {
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
Loading…
Reference in New Issue