78 lines
2.2 KiB
Java
78 lines
2.2 KiB
Java
|
|
package com.gunshi.project.hsz.service;
|
|||
|
|
|
|||
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|||
|
|
import com.gunshi.project.hsz.mapper.StZvarlBMapper;
|
|||
|
|
import com.gunshi.project.hsz.model.StZvarlB;
|
|||
|
|
import lombok.extern.slf4j.Slf4j;
|
|||
|
|
import org.springframework.stereotype.Service;
|
|||
|
|
import org.springframework.transaction.annotation.Transactional;
|
|||
|
|
|
|||
|
|
import java.math.BigDecimal;
|
|||
|
|
import java.math.RoundingMode;
|
|||
|
|
import java.util.List;
|
|||
|
|
import java.util.Map;
|
|||
|
|
import java.util.stream.Collectors;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 描述: 库( 湖)容曲线表
|
|||
|
|
* author: xusan
|
|||
|
|
* date: 2024-07-08 17:30:38
|
|||
|
|
*/
|
|||
|
|
@Service
|
|||
|
|
@Slf4j
|
|||
|
|
@Transactional(rollbackFor = Exception.class)
|
|||
|
|
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));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|