Kaynağa Gözat

1.分页获取设备统计信息返回设备的type,获取日报接口使用 2.获取日报报表的标称值不是写死的,是根据水厂、化验项目、起止时间获取的

王苗苗 5 ay önce
ebeveyn
işleme
c424318d70

+ 1 - 1
ruoyi-system/src/main/java/com/ruoyi/business/domain/ZQualityValue.java

@@ -36,7 +36,7 @@ public class ZQualityValue extends BaseEntity
 
     /** 质控值 */
     @Excel(name = "质控值")
-    private Long resultValue;
+    private Double resultValue;
 
     /** 有效结束时间 */
     @JsonFormat(pattern = "yyyy-MM-dd")

+ 8 - 8
ruoyi-system/src/main/java/com/ruoyi/business/res/AssayDetailRes.java

@@ -28,7 +28,7 @@ public class AssayDetailRes {
 
     private String assayTypeName = "质控样";//样品名称  全部都是质控样
 
-    private Double highCodStandardVal = 200.0D;//高COD标称值
+    private Double highCodStandardVal;//高COD标称值
 
     private Double highCodResultConcentration;//高COD化验值
 
@@ -36,7 +36,7 @@ public class AssayDetailRes {
 
     private Double highCodDeviationRateNumber;//高COD偏差度-数字
 
-    private Double lowCodStandardVal = 50.0D;//低COD标称值
+    private Double lowCodStandardVal;//低COD标称值
 
     private Double lowCodResultConcentration;//低COD化验值
 
@@ -44,7 +44,7 @@ public class AssayDetailRes {
 
     private Double lowCodDeviationRateNumber;//低COD偏差度-数字
 
-    private Double anDanStandardVal = 20.0D;//氨氮标称值
+    private Double anDanStandardVal;//氨氮标称值
 
     private Double anDanResultConcentration;//氨氮化验值
 
@@ -52,7 +52,7 @@ public class AssayDetailRes {
 
     private Double anDanDeviationRateNumber;//氨氮偏差度-数字
 
-    private Double tnStandardVal = 20.0D;//总氮标称值
+    private Double tnStandardVal;//总氮标称值
 
     private Double tnResultConcentration;//总氮化验值
 
@@ -60,7 +60,7 @@ public class AssayDetailRes {
 
     private Double tnDeviationRateNumber;//总氮偏差度-数字
 
-    private Double tpStandardVal = 2.0D;//总磷标称值
+    private Double tpStandardVal;//总磷标称值
 
     private Double tpResultConcentration;//总磷化验值
 
@@ -68,7 +68,7 @@ public class AssayDetailRes {
 
     private Double tpDeviationRateNumber;//总磷偏差度-数字
 
-    private Double xsydStandardVal = 20.0D;//硝酸盐氮标称值
+    private Double xsydStandardVal;//硝酸盐氮标称值
 
     private Double xsydResultConcentration;//硝酸盐氮化验值
 
@@ -76,7 +76,7 @@ public class AssayDetailRes {
 
     private Double xsydDeviationRateNumber;//硝酸盐氮偏差度-数字
 
-    private Double yxsyStandardVal = 1.0D;//亚硝酸盐标称值
+    private Double yxsyStandardVal;//亚硝酸盐标称值
 
     private Double yxsyResultConcentration;//亚硝酸盐化验值
 
@@ -84,7 +84,7 @@ public class AssayDetailRes {
 
     private Double yxsyDeviationRateNumber;//亚硝酸盐偏差度-数字
 
-    private Double zlsyStandardVal = 2.0D;//正磷酸标称值
+    private Double zlsyStandardVal;//正磷酸标称值
 
     private Double zlsyResultConcentration;//正磷酸盐化验值
 

+ 3 - 0
ruoyi-system/src/main/java/com/ruoyi/business/res/DeviceRes.java

@@ -63,5 +63,8 @@ public class DeviceRes {
         return NumberUtils.getDoubleNLength(INT_2, currentTemperature);
     }
 
+    //2024年10月28日18:26:14 新增返回水厂的类型
+    /** 设备类型(1:化验室,2:连续检测) */
+    private String type;
 
 }

+ 131 - 32
ruoyi-system/src/main/java/com/ruoyi/business/service/impl/BusinessServiceImpl.java

@@ -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));
+                            }
+                        }
+                    }
                 }
             }
         }

+ 2 - 1
ruoyi-system/src/main/resources/mapper/business/BizDeviceMapper.xml

@@ -198,7 +198,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             bd.device_name deviceName,
             bd.device_no deviceNo,
             bd.assay_status assayStatus,
-            bzw.works_name worksName
+            bzw.works_name worksName,
+            bd.type type
         FROM
             biz_device bd
         INNER JOIN biz_water_work bzw