|
@@ -411,6 +411,9 @@ public class BusinessServiceImpl implements IBusinessService {
|
|
|
|
|
|
private void calculateRate(AssayDetailRes assayDetailRes, List<ZAssayResult> zAssayResults) {
|
|
|
if(!CollectionUtils.isEmpty(zAssayResults)){
|
|
|
+ //获取当前日期
|
|
|
+ Date nowDate = DateUtils.getNowDate();
|
|
|
+ Long deviceWorks = assayDetailRes.getDeviceWorks();//水厂的id 获取标称值需要获取
|
|
|
//高COD
|
|
|
Optional<ZAssayResult> highCodOptional = zAssayResults.stream().filter(zAssayResult -> "1".equals(zAssayResult.getAssayItem())).findFirst();
|
|
|
if(highCodOptional.isPresent()){
|
|
@@ -418,10 +421,22 @@ public class BusinessServiceImpl implements IBusinessService {
|
|
|
Double resultConcentration = NumberUtils.getDoubleNLength(INT_2, NumberUtils.getDoubleNLength(INT_2, zAssayResult.getResultConcentration()));
|
|
|
if(!Objects.isNull(resultConcentration)){
|
|
|
assayDetailRes.setHighCodResultConcentration(resultConcentration);
|
|
|
- Double highCodStandardVal = assayDetailRes.getHighCodStandardVal();
|
|
|
- Double val = (resultConcentration - highCodStandardVal) / highCodStandardVal;
|
|
|
- assayDetailRes.setHighCodDeviationRate(NumberUtils.getDoublePercentAndNLength(INT_4, val, INT_2));
|
|
|
- assayDetailRes.setHighCodDeviationRateNumber(NumberUtils.getDoubleNLength(INT_2, val));
|
|
|
+// Double highCodStandardVal = assayDetailRes.getHighCodStandardVal();
|
|
|
+ //2024年10月29日09:50:25 逻辑调整:获取各个指标的标称值要动态获取,和化验结果的上下限逻辑是一样的
|
|
|
+ //去查询配置的标准值的范围(数据不确认,有可能是多个,获取最后一条数据):
|
|
|
+ if(!Objects.isNull(deviceWorks)){
|
|
|
+ List<ZQualityValue> list = this.zQualityValueMapper.selectZQualityValueList(ZQualityValue.builder().beginTime(nowDate).endTime(nowDate).deviceWorks(deviceWorks).assayItem(zAssayResult.getAssayItem()).build());
|
|
|
+ //理论上是只有一个的
|
|
|
+ if(!CollectionUtils.isEmpty(list)){
|
|
|
+ ZQualityValue zQualityValue = list.get(0);//获取最新的一条,防止有多条数据的情况
|
|
|
+ Double highCodStandardVal = zQualityValue.getResultValue();
|
|
|
+ if(!Objects.isNull(highCodStandardVal) && highCodStandardVal > 0){
|
|
|
+ Double val = (resultConcentration - highCodStandardVal) / highCodStandardVal;
|
|
|
+ assayDetailRes.setHighCodDeviationRate(NumberUtils.getDoublePercentAndNLength(INT_4, val, INT_2));
|
|
|
+ assayDetailRes.setHighCodDeviationRateNumber(NumberUtils.getDoubleNLength(INT_2, val));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
//低COD
|
|
@@ -431,10 +446,22 @@ public class BusinessServiceImpl implements IBusinessService {
|
|
|
Double resultConcentration = NumberUtils.getDoubleNLength(INT_2, zAssayResult.getResultConcentration());
|
|
|
if(!Objects.isNull(resultConcentration)){
|
|
|
assayDetailRes.setLowCodResultConcentration(resultConcentration);
|
|
|
- Double lowCodStandardVal = assayDetailRes.getLowCodStandardVal();
|
|
|
- Double val = (resultConcentration - lowCodStandardVal) / lowCodStandardVal;
|
|
|
- assayDetailRes.setLowCodDeviationRate(NumberUtils.getDoublePercentAndNLength(INT_4, val, INT_2));
|
|
|
- assayDetailRes.setLowCodDeviationRateNumber(NumberUtils.getDoubleNLength(INT_2, val));
|
|
|
+// Double lowCodStandardVal = assayDetailRes.getLowCodStandardVal();
|
|
|
+ //2024年10月29日09:50:25 逻辑调整:获取各个指标的标称值要动态获取,和化验结果的上下限逻辑是一样的
|
|
|
+ //去查询配置的标准值的范围(数据不确认,有可能是多个,获取最后一条数据):
|
|
|
+ if(!Objects.isNull(deviceWorks)){
|
|
|
+ List<ZQualityValue> list = this.zQualityValueMapper.selectZQualityValueList(ZQualityValue.builder().beginTime(nowDate).endTime(nowDate).deviceWorks(deviceWorks).assayItem(zAssayResult.getAssayItem()).build());
|
|
|
+ //理论上是只有一个的
|
|
|
+ if(!CollectionUtils.isEmpty(list)){
|
|
|
+ ZQualityValue zQualityValue = list.get(0);//获取最新的一条,防止有多条数据的情况
|
|
|
+ Double lowCodStandardVal = zQualityValue.getResultValue();
|
|
|
+ if(!Objects.isNull(lowCodStandardVal) && lowCodStandardVal > 0){
|
|
|
+ Double val = (resultConcentration - lowCodStandardVal) / lowCodStandardVal;
|
|
|
+ assayDetailRes.setLowCodDeviationRate(NumberUtils.getDoublePercentAndNLength(INT_4, val, INT_2));
|
|
|
+ assayDetailRes.setLowCodDeviationRateNumber(NumberUtils.getDoubleNLength(INT_2, val));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
}
|
|
@@ -445,10 +472,22 @@ public class BusinessServiceImpl implements IBusinessService {
|
|
|
Double resultConcentration = NumberUtils.getDoubleNLength(INT_2, zAssayResult.getResultConcentration());
|
|
|
if(!Objects.isNull(resultConcentration)){
|
|
|
assayDetailRes.setAnDanResultConcentration(resultConcentration);
|
|
|
- Double anDanStandardVal = assayDetailRes.getAnDanStandardVal();
|
|
|
- Double val = (resultConcentration - anDanStandardVal) / anDanStandardVal;
|
|
|
- assayDetailRes.setAnDanDeviationRate(NumberUtils.getDoublePercentAndNLength(INT_4, val, INT_2));
|
|
|
- assayDetailRes.setAnDanDeviationRateNumber(NumberUtils.getDoubleNLength(INT_2, val));
|
|
|
+// Double anDanStandardVal = assayDetailRes.getAnDanStandardVal();
|
|
|
+ //2024年10月29日09:50:25 逻辑调整:获取各个指标的标称值要动态获取,和化验结果的上下限逻辑是一样的
|
|
|
+ //去查询配置的标准值的范围(数据不确认,有可能是多个,获取最后一条数据):
|
|
|
+ if(!Objects.isNull(deviceWorks)){
|
|
|
+ List<ZQualityValue> list = this.zQualityValueMapper.selectZQualityValueList(ZQualityValue.builder().beginTime(nowDate).endTime(nowDate).deviceWorks(deviceWorks).assayItem(zAssayResult.getAssayItem()).build());
|
|
|
+ //理论上是只有一个的
|
|
|
+ if(!CollectionUtils.isEmpty(list)){
|
|
|
+ ZQualityValue zQualityValue = list.get(0);//获取最新的一条,防止有多条数据的情况
|
|
|
+ Double anDanStandardVal = zQualityValue.getResultValue();
|
|
|
+ if(!Objects.isNull(anDanStandardVal) && anDanStandardVal > 0){
|
|
|
+ Double val = (resultConcentration - anDanStandardVal) / anDanStandardVal;
|
|
|
+ assayDetailRes.setAnDanDeviationRate(NumberUtils.getDoublePercentAndNLength(INT_4, val, INT_2));
|
|
|
+ assayDetailRes.setAnDanDeviationRateNumber(NumberUtils.getDoubleNLength(INT_2, val));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
//总氮
|
|
@@ -458,10 +497,22 @@ public class BusinessServiceImpl implements IBusinessService {
|
|
|
Double resultConcentration = NumberUtils.getDoubleNLength(INT_2, zAssayResult.getResultConcentration());
|
|
|
if(!Objects.isNull(resultConcentration)){
|
|
|
assayDetailRes.setTnResultConcentration(resultConcentration);
|
|
|
- Double tnStandardVal = assayDetailRes.getTnStandardVal();
|
|
|
- Double val = (resultConcentration - tnStandardVal) / tnStandardVal;
|
|
|
- assayDetailRes.setTnDeviationRate(NumberUtils.getDoublePercentAndNLength(INT_4, val, INT_2));
|
|
|
- assayDetailRes.setTnDeviationRateNumber(NumberUtils.getDoubleNLength(INT_2, val));
|
|
|
+// Double tnStandardVal = assayDetailRes.getTnStandardVal();
|
|
|
+ //2024年10月29日09:50:25 逻辑调整:获取各个指标的标称值要动态获取,和化验结果的上下限逻辑是一样的
|
|
|
+ //去查询配置的标准值的范围(数据不确认,有可能是多个,获取最后一条数据):
|
|
|
+ if(!Objects.isNull(deviceWorks)){
|
|
|
+ List<ZQualityValue> list = this.zQualityValueMapper.selectZQualityValueList(ZQualityValue.builder().beginTime(nowDate).endTime(nowDate).deviceWorks(deviceWorks).assayItem(zAssayResult.getAssayItem()).build());
|
|
|
+ //理论上是只有一个的
|
|
|
+ if(!CollectionUtils.isEmpty(list)){
|
|
|
+ ZQualityValue zQualityValue = list.get(0);//获取最新的一条,防止有多条数据的情况
|
|
|
+ Double tnStandardVal = zQualityValue.getResultValue();
|
|
|
+ if(!Objects.isNull(tnStandardVal) && tnStandardVal > 0){
|
|
|
+ Double val = (resultConcentration - tnStandardVal) / tnStandardVal;
|
|
|
+ assayDetailRes.setTnDeviationRate(NumberUtils.getDoublePercentAndNLength(INT_4, val, INT_2));
|
|
|
+ assayDetailRes.setTnDeviationRateNumber(NumberUtils.getDoubleNLength(INT_2, val));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
//总磷
|
|
@@ -471,10 +522,22 @@ public class BusinessServiceImpl implements IBusinessService {
|
|
|
Double resultConcentration = NumberUtils.getDoubleNLength(INT_2, zAssayResult.getResultConcentration());
|
|
|
if(!Objects.isNull(resultConcentration)){
|
|
|
assayDetailRes.setTpResultConcentration(resultConcentration);
|
|
|
- Double tpStandardVal = assayDetailRes.getTpStandardVal();
|
|
|
- Double val = (resultConcentration - tpStandardVal) / tpStandardVal;
|
|
|
- assayDetailRes.setTpDeviationRate(NumberUtils.getDoublePercentAndNLength(INT_4, val, INT_2));
|
|
|
- assayDetailRes.setTpDeviationRateNumber(NumberUtils.getDoubleNLength(INT_2, val));
|
|
|
+// Double tpStandardVal = assayDetailRes.getTpStandardVal();
|
|
|
+ //2024年10月29日09:50:25 逻辑调整:获取各个指标的标称值要动态获取,和化验结果的上下限逻辑是一样的
|
|
|
+ //去查询配置的标准值的范围(数据不确认,有可能是多个,获取最后一条数据):
|
|
|
+ if(!Objects.isNull(deviceWorks)){
|
|
|
+ List<ZQualityValue> list = this.zQualityValueMapper.selectZQualityValueList(ZQualityValue.builder().beginTime(nowDate).endTime(nowDate).deviceWorks(deviceWorks).assayItem(zAssayResult.getAssayItem()).build());
|
|
|
+ //理论上是只有一个的
|
|
|
+ if(!CollectionUtils.isEmpty(list)){
|
|
|
+ ZQualityValue zQualityValue = list.get(0);//获取最新的一条,防止有多条数据的情况
|
|
|
+ Double tpStandardVal = zQualityValue.getResultValue();
|
|
|
+ if(!Objects.isNull(tpStandardVal) && tpStandardVal > 0){
|
|
|
+ Double val = (resultConcentration - tpStandardVal) / tpStandardVal;
|
|
|
+ assayDetailRes.setTpDeviationRate(NumberUtils.getDoublePercentAndNLength(INT_4, val, INT_2));
|
|
|
+ assayDetailRes.setTpDeviationRateNumber(NumberUtils.getDoubleNLength(INT_2, val));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
//正磷酸盐
|
|
@@ -484,10 +547,22 @@ public class BusinessServiceImpl implements IBusinessService {
|
|
|
Double resultConcentration = NumberUtils.getDoubleNLength(INT_2, zAssayResult.getResultConcentration());
|
|
|
if(!Objects.isNull(resultConcentration)){
|
|
|
assayDetailRes.setZlsyResultConcentration(resultConcentration);
|
|
|
- Double zlsyStandardVal = assayDetailRes.getZlsyStandardVal();
|
|
|
- Double val = (resultConcentration - zlsyStandardVal) / zlsyStandardVal;
|
|
|
- assayDetailRes.setZlsyDeviationRate(NumberUtils.getDoublePercentAndNLength(INT_4, val, INT_2));
|
|
|
- assayDetailRes.setZlsyDeviationRateNumber(NumberUtils.getDoubleNLength(INT_2, val));
|
|
|
+// Double zlsyStandardVal = assayDetailRes.getZlsyStandardVal();
|
|
|
+ //2024年10月29日09:50:25 逻辑调整:获取各个指标的标称值要动态获取,和化验结果的上下限逻辑是一样的
|
|
|
+ //去查询配置的标准值的范围(数据不确认,有可能是多个,获取最后一条数据):
|
|
|
+ if(!Objects.isNull(deviceWorks)){
|
|
|
+ List<ZQualityValue> list = this.zQualityValueMapper.selectZQualityValueList(ZQualityValue.builder().beginTime(nowDate).endTime(nowDate).deviceWorks(deviceWorks).assayItem(zAssayResult.getAssayItem()).build());
|
|
|
+ //理论上是只有一个的
|
|
|
+ if(!CollectionUtils.isEmpty(list)){
|
|
|
+ ZQualityValue zQualityValue = list.get(0);//获取最新的一条,防止有多条数据的情况
|
|
|
+ Double zlsyStandardVal = zQualityValue.getResultValue();
|
|
|
+ if(!Objects.isNull(zlsyStandardVal) && zlsyStandardVal > 0){
|
|
|
+ Double val = (resultConcentration - zlsyStandardVal) / zlsyStandardVal;
|
|
|
+ assayDetailRes.setZlsyDeviationRate(NumberUtils.getDoublePercentAndNLength(INT_4, val, INT_2));
|
|
|
+ assayDetailRes.setZlsyDeviationRateNumber(NumberUtils.getDoubleNLength(INT_2, val));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
//亚硝酸盐氮
|
|
@@ -497,10 +572,22 @@ public class BusinessServiceImpl implements IBusinessService {
|
|
|
Double resultConcentration = NumberUtils.getDoubleNLength(INT_2, zAssayResult.getResultConcentration());
|
|
|
if(!Objects.isNull(resultConcentration)){
|
|
|
assayDetailRes.setYxsyResultConcentration(resultConcentration);
|
|
|
- Double yxsyStandardVal = assayDetailRes.getYxsyStandardVal();
|
|
|
- Double val = (resultConcentration - yxsyStandardVal) / yxsyStandardVal;
|
|
|
- assayDetailRes.setYxsyDeviationRate(NumberUtils.getDoublePercentAndNLength(INT_4, val, INT_2));
|
|
|
- assayDetailRes.setYxsyDeviationRateNumber(NumberUtils.getDoubleNLength(INT_2, val));
|
|
|
+// Double yxsyStandardVal = assayDetailRes.getYxsyStandardVal();
|
|
|
+ //2024年10月29日09:50:25 逻辑调整:获取各个指标的标称值要动态获取,和化验结果的上下限逻辑是一样的
|
|
|
+ //去查询配置的标准值的范围(数据不确认,有可能是多个,获取最后一条数据):
|
|
|
+ if(!Objects.isNull(deviceWorks)){
|
|
|
+ List<ZQualityValue> list = this.zQualityValueMapper.selectZQualityValueList(ZQualityValue.builder().beginTime(nowDate).endTime(nowDate).deviceWorks(deviceWorks).assayItem(zAssayResult.getAssayItem()).build());
|
|
|
+ //理论上是只有一个的
|
|
|
+ if(!CollectionUtils.isEmpty(list)){
|
|
|
+ ZQualityValue zQualityValue = list.get(0);//获取最新的一条,防止有多条数据的情况
|
|
|
+ Double yxsyStandardVal = zQualityValue.getResultValue();
|
|
|
+ if(!Objects.isNull(yxsyStandardVal) && yxsyStandardVal > 0){
|
|
|
+ Double val = (resultConcentration - yxsyStandardVal) / yxsyStandardVal;
|
|
|
+ assayDetailRes.setYxsyDeviationRate(NumberUtils.getDoublePercentAndNLength(INT_4, val, INT_2));
|
|
|
+ assayDetailRes.setYxsyDeviationRateNumber(NumberUtils.getDoubleNLength(INT_2, val));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
//硝酸盐氮
|
|
@@ -510,10 +597,22 @@ public class BusinessServiceImpl implements IBusinessService {
|
|
|
Double resultConcentration = NumberUtils.getDoubleNLength(INT_2, zAssayResult.getResultConcentration());
|
|
|
if(!Objects.isNull(resultConcentration)){
|
|
|
assayDetailRes.setXsydResultConcentration(resultConcentration);
|
|
|
- Double xsydStandardVal = assayDetailRes.getXsydStandardVal();
|
|
|
- Double val = (resultConcentration - xsydStandardVal) / xsydStandardVal;
|
|
|
- assayDetailRes.setXsydDeviationRate(NumberUtils.getDoublePercentAndNLength(INT_4, val, INT_2));
|
|
|
- assayDetailRes.setXsydDeviationRateNumber(NumberUtils.getDoubleNLength(INT_2, val));
|
|
|
+// Double xsydStandardVal = assayDetailRes.getXsydStandardVal();
|
|
|
+ //2024年10月29日09:50:25 逻辑调整:获取各个指标的标称值要动态获取,和化验结果的上下限逻辑是一样的
|
|
|
+ //去查询配置的标准值的范围(数据不确认,有可能是多个,获取最后一条数据):
|
|
|
+ if(!Objects.isNull(deviceWorks)){
|
|
|
+ List<ZQualityValue> list = this.zQualityValueMapper.selectZQualityValueList(ZQualityValue.builder().beginTime(nowDate).endTime(nowDate).deviceWorks(deviceWorks).assayItem(zAssayResult.getAssayItem()).build());
|
|
|
+ //理论上是只有一个的
|
|
|
+ if(!CollectionUtils.isEmpty(list)){
|
|
|
+ ZQualityValue zQualityValue = list.get(0);//获取最新的一条,防止有多条数据的情况
|
|
|
+ Double xsydStandardVal = zQualityValue.getResultValue();
|
|
|
+ if(!Objects.isNull(xsydStandardVal) && xsydStandardVal > 0){
|
|
|
+ Double val = (resultConcentration - xsydStandardVal) / xsydStandardVal;
|
|
|
+ assayDetailRes.setXsydDeviationRate(NumberUtils.getDoublePercentAndNLength(INT_4, val, INT_2));
|
|
|
+ assayDetailRes.setXsydDeviationRateNumber(NumberUtils.getDoubleNLength(INT_2, val));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|