1.水库溢洪查询未按stcd查询#555

2.水库水情左侧库容和右侧库容不一致#583
master
李一帆 2025-04-09 14:01:44 +08:00
parent efdd8ac871
commit 272c65f12c
6 changed files with 116 additions and 41 deletions

View File

@ -20,13 +20,16 @@ public class RsvrComplexVo {
public BigDecimal rz;
@NonNull
public Date tm;
/**
*
*/
public BigDecimal q;
/**
* spilled volume
* spilled volume
*/
public BigDecimal sv;
public RsvrComplexVo(String rz, Date tm) {
}
/**
*
*/
public BigDecimal w;
}

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 = '42112230001' and t.stcd='10196'
where t.sttp = 'RR' and s.res_code = '42112230001' and t.stcd='61610700'
order by aFsltdz desc nulls last
</script>
""")

View File

@ -17,6 +17,7 @@ import com.gunshi.project.xyt.util.DateUtil;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
@ -46,6 +47,9 @@ public class ReservoirWaterService {
@Resource
private RainBasinDivisionService rainBasinDivisionService;
@Autowired
private StZvarlBService stZvarlBService;
public List<AttResBaseVo> list() {
List<AttResBaseVo> attResBaseVos = attResBaseMapper.queryList();
if(CollectionUtils.isEmpty(attResBaseVos)){
@ -103,39 +107,26 @@ public class ReservoirWaterService {
public List<AttResBaseVo> listV2() {
List<AttResBaseVo> attResBaseVos = attResBaseMapper.queryListV2();
if(CollectionUtils.isEmpty(attResBaseVos)){
return attResBaseVos;
List<AttResBaseVo> voList = attResBaseMapper.queryListV2();
if(CollectionUtils.isEmpty(voList)){
return voList;
}
attResBaseVos.stream().map(o->{
if(o.getCalState() == 1){
o.setDesState(0);
o.setFlState(0);
}else if(o.getCalState() == 0 && o.getDesState() ==1){
o.setFlState(0);
List<StZvarlB> zvarlList = stZvarlBService.list();
voList.forEach(vo -> {
if(vo.getCalState() == 1){
vo.setDesState(0);
vo.setFlState(0);
}else if(vo.getCalState() == 0 && vo.getDesState() ==1){
vo.setFlState(0);
}
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();
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){
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;
BigDecimal w = stZvarlBService.getWFromZvarl(rz, null, zvarlList);
vo.setNowCap(w);
});
return voList;
}
private List<StZvarlB> queryZval(List<String> stcdList) {

View File

@ -140,6 +140,7 @@ public class StStbprpBService extends ServiceImpl<StStbprpBMapper, StStbprpB> {
*/
List<StRsvrR> rsvrList = rsvrRService.lambdaQuery()
.eq(StRsvrR::getStcd, obj.getStcd())
.between(StRsvrR::getTm, obj.getDateSo().getStart(), obj.getDateSo().getEnd())
.orderBy(true, true, StRsvrR::getTm)
.list();

View File

@ -26,6 +26,7 @@ public class StZqrlBService extends ServiceImpl<StZqrlBMapper, StZqrlB> {
/**
*
*
* @param rz
* @param seconds
* @param zqrlList 线
@ -38,6 +39,7 @@ public class StZqrlBService extends ServiceImpl<StZqrlBMapper, StZqrlB> {
/**
*
*
* @param rz
* @param seconds
* @return
@ -49,9 +51,11 @@ public class StZqrlBService extends ServiceImpl<StZqrlBMapper, StZqrlB> {
/**
*
*
* @param rsvrList
* @param zqrlList 线
* @return
* @author lyf
*/
public List<RsvrComplexVo> calculateSpilledVolumeList(List<StRsvrR> rsvrList, List<StZqrlB> zqrlList) {
rsvrList.sort(Comparator.comparing(StRsvrR::getTm).reversed());
@ -79,21 +83,45 @@ public class StZqrlBService extends ServiceImpl<StZqrlBMapper, StZqrlB> {
/**
*
*
* @param rsvrList
* @return
* @author lyf
*/
public List<RsvrComplexVo> calculateSpilledVolumeList(List<StRsvrR> rsvrList) {
return calculateSpilledVolumeList(rsvrList, list());
}
/**
*
*
* @param rz
* @return
* @author lyf
*/
public BigDecimal getQFromZqrl(BigDecimal rz) {
return getQFromZqrl(rz, list());
}
/**
*
*
* @param rz
* @param zqrlList 线
* @return
* @author lyf
*/
public BigDecimal getQFromZqrl(BigDecimal rz, List<StZqrlB> zqrlList) {
return toMap(zqrlList).getOrDefault(rz.setScale(3, RoundingMode.DOWN), BigDecimal.ZERO);
}
/**
* 线BigDecimal
*
* @param zqrlList 线
* @return 线
* @author lyf
*/
private Map<BigDecimal, BigDecimal> toMap(List<StZqrlB> zqrlList) {
return zqrlList.stream()
.map(item -> Map.entry(item.getZ().setScale(3, RoundingMode.DOWN), item.getQ()))

View File

@ -7,7 +7,11 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* : ( )线
@ -17,8 +21,56 @@ import java.util.Date;
@Service
@Slf4j
@Transactional(rollbackFor = Exception.class)
public class StZvarlBService extends ServiceImpl<StZvarlBMapper, StZvarlB>
{
public class StZvarlBService extends ServiceImpl<StZvarlBMapper, StZvarlB> {
/**
*
*
* @param rz
* @return
* @author lyf
*/
public BigDecimal getWFromZvarl(BigDecimal rz) {
return getWFromZvarl(rz, BigDecimal.ZERO, list());
}
/**
*
*
* @param rz
* @param defaultValue
* @return
* @author lyf
*/
public BigDecimal getWFromZvarl(BigDecimal rz, BigDecimal defaultValue) {
return getWFromZvarl(rz, defaultValue, list());
}
/**
*
*
* @param rz
* @param defaultValue
* @param zvarlList 线
* @return
* @author lyf
*/
public BigDecimal getWFromZvarl(BigDecimal rz, BigDecimal defaultValue, List<StZvarlB> zvarlList) {
return toMap(zvarlList).getOrDefault(rz.setScale(3, RoundingMode.DOWN), defaultValue);
}
/**
* 线BigDecimal
*
* @param zvarlList 线
* @return 线
* @author lyf
*/
private Map<BigDecimal, BigDecimal> toMap(List<StZvarlB> zvarlList) {
return zvarlList.stream()
.map(item -> Map.entry(item.getRz().setScale(3, RoundingMode.DOWN), item.getW()))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
}
}