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; public BigDecimal rz;
@NonNull @NonNull
public Date tm; public Date tm;
/**
*
*/
public BigDecimal q; public BigDecimal q;
/** /**
* spilled volume * spilled volume
*/ */
public BigDecimal sv; 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_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_rsvr_r_real m on t.stcd = m.stcd
left join public.st_pptn_r_real sprr on t.stcd = sprr.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 order by aFsltdz desc nulls last
</script> </script>
""") """)

View File

@ -17,6 +17,7 @@ import com.gunshi.project.xyt.util.DateUtil;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
@ -46,6 +47,9 @@ public class ReservoirWaterService {
@Resource @Resource
private RainBasinDivisionService rainBasinDivisionService; private RainBasinDivisionService rainBasinDivisionService;
@Autowired
private StZvarlBService stZvarlBService;
public List<AttResBaseVo> list() { public List<AttResBaseVo> list() {
List<AttResBaseVo> attResBaseVos = attResBaseMapper.queryList(); List<AttResBaseVo> attResBaseVos = attResBaseMapper.queryList();
if(CollectionUtils.isEmpty(attResBaseVos)){ if(CollectionUtils.isEmpty(attResBaseVos)){
@ -103,39 +107,26 @@ public class ReservoirWaterService {
public List<AttResBaseVo> listV2() { public List<AttResBaseVo> listV2() {
List<AttResBaseVo> attResBaseVos = attResBaseMapper.queryListV2(); List<AttResBaseVo> voList = attResBaseMapper.queryListV2();
if(CollectionUtils.isEmpty(attResBaseVos)){ if(CollectionUtils.isEmpty(voList)){
return attResBaseVos; return voList;
} }
attResBaseVos.stream().map(o->{
if(o.getCalState() == 1){ List<StZvarlB> zvarlList = stZvarlBService.list();
o.setDesState(0); voList.forEach(vo -> {
o.setFlState(0); if(vo.getCalState() == 1){
}else if(o.getCalState() == 0 && o.getDesState() ==1){ vo.setDesState(0);
o.setFlState(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(); BigDecimal rz = vo.getRz();
//计算当前库容 BigDecimal w = stZvarlBService.getWFromZvarl(rz, null, zvarlList);
List<StZvarlB> zvarlBS = zvalMap.get(stcd); vo.setNowCap(w);
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(); return voList;
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;
} }
private List<StZvarlB> queryZval(List<String> stcdList) { 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() List<StRsvrR> rsvrList = rsvrRService.lambdaQuery()
.eq(StRsvrR::getStcd, obj.getStcd())
.between(StRsvrR::getTm, obj.getDateSo().getStart(), obj.getDateSo().getEnd()) .between(StRsvrR::getTm, obj.getDateSo().getStart(), obj.getDateSo().getEnd())
.orderBy(true, true, StRsvrR::getTm) .orderBy(true, true, StRsvrR::getTm)
.list(); .list();

View File

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