Prechádzať zdrojové kódy

保存数据小数位保留五位小数
生产调度:供水详情、对比曲线、水量排行转为万

wangli 4 rokov pred
rodič
commit
3e8e2b5ee7

+ 5 - 1
sms_water/src/main/java/com/huaxu/rabbitmq/ReceiveData.java

@@ -32,6 +32,7 @@ import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
 import java.awt.*;
+import java.math.BigDecimal;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
@@ -138,7 +139,10 @@ public class ReceiveData {
             for(MonitorDataValueEntity monitorDataValueEntity :monitorDataValueEntities){
                 if(receiveData.containsKey(monitorDataValueEntity.getIdentifier())){
                     number++;
-                    monitorDataValueEntity.setDataValue(receiveData.getDouble(monitorDataValueEntity.getIdentifier()));
+                    //小数位处理
+                    Double dataValue =new BigDecimal(receiveData.getDouble(monitorDataValueEntity.getIdentifier()))
+                            .setScale(5, BigDecimal.ROUND_HALF_UP).doubleValue();
+                    monitorDataValueEntity.setDataValue(dataValue);
                     //单位问题处理
                 }
             }

+ 15 - 8
sms_water/src/main/java/com/huaxu/service/impl/MonitorDataReportServiceImpl.java

@@ -623,7 +623,7 @@ public class MonitorDataReportServiceImpl implements MonitorDataReportService {
         List<DeviceWaterDetail> deviceSupplyWaterDetailsForNow = monitorDataReportMapper.getDeviceWaterDetailForNow("水厂", 14, tenantId,loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
         List<DeviceWaterDetail> deviceIntakeWaterDetailsForNow = monitorDataReportMapper.getDeviceWaterDetailForNow("水源", 14, tenantId,loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
 
-        //水厂获取实时流量并计算出当天流量
+        //水厂获取实时流量
         for (DeviceWaterDetail deviceWaterDetail : deviceSupplyWaterDetailsForNow) {
             MonitorDataEntity monitorDataEntity = MonitorDataMap.get(deviceWaterDetail.getDeviceId());
             if (monitorDataEntity != null && monitorDataEntity.getDataValues() != null && monitorDataEntity.getDataValues().size() > 0) {
@@ -636,7 +636,7 @@ public class MonitorDataReportServiceImpl implements MonitorDataReportService {
             }
 
         }
-        //水源获取实时流量并计算出当天流量
+        //水源获取实时流量
         for (DeviceWaterDetail deviceWaterDetail : deviceIntakeWaterDetailsForNow) {
             MonitorDataEntity monitorDataEntity = MonitorDataMap.get(deviceWaterDetail.getDeviceId());
             if (monitorDataEntity != null && monitorDataEntity.getDataValues() != null && monitorDataEntity.getDataValues().size() > 0) {
@@ -653,7 +653,7 @@ public class MonitorDataReportServiceImpl implements MonitorDataReportService {
         List<DeviceWaterDetail> deviceSupplyWaterDetailsForDay = monitorDataReportMapper.getDeviceWaterDetailForDay(null,null,"水厂", 3, tenantId, localDate.plusDays(-1).getYear(), localDate.plusDays(-1).getMonthValue(), localDate.plusDays(-1).getDayOfMonth(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
         List<DeviceWaterDetail> deviceIntakeWaterDetailsForDay = monitorDataReportMapper.getDeviceWaterDetailForDay(null,null,"水源", 4, tenantId, localDate.plusDays(-1).getYear(), localDate.plusDays(-1).getMonthValue(), localDate.plusDays(-1).getDayOfMonth(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
 
-        //水厂获取实时流量并计算出当天流量
+        //水厂计算出当天流量
         for (DeviceWaterDetail deviceWaterDetail : deviceSupplyWaterDetailsForDay) {
             MonitorDataEntity monitorDataEntity = MonitorDataMap.get(deviceWaterDetail.getDeviceId());
             if (monitorDataEntity != null && monitorDataEntity.getDataValues() != null && monitorDataEntity.getDataValues().size() > 0
@@ -661,13 +661,14 @@ public class MonitorDataReportServiceImpl implements MonitorDataReportService {
                 for (MonitorDataValueEntity monitorDataValueEntity : monitorDataEntity.getDataValues()) {
                     if (monitorDataValueEntity.getAttributeId().equals(deviceWaterDetail.getAttributeId())) {
                         //累计当天流量
-                        deviceWaterAmount.addWaterSupplyAmountForDay(new BigDecimal(monitorDataValueEntity.getDataValue()).subtract(deviceWaterDetail.getLatestValue()));
+                        deviceWaterAmount.addWaterSupplyAmountForDay((new BigDecimal(monitorDataValueEntity.getDataValue()).subtract(deviceWaterDetail.getLatestValue())
+                        ).divide(BigDecimal.valueOf(10000),3, RoundingMode.HALF_UP));
                     }
                 }
             }
 
         }
-        //水源获取实时流量并计算出当天流量
+        //水源计算出当天流量
         for (DeviceWaterDetail deviceWaterDetail : deviceIntakeWaterDetailsForDay) {
             MonitorDataEntity monitorDataEntity = MonitorDataMap.get(deviceWaterDetail.getDeviceId());
             if (monitorDataEntity != null && monitorDataEntity.getDataValues() != null && monitorDataEntity.getDataValues().size() > 0
@@ -675,7 +676,8 @@ public class MonitorDataReportServiceImpl implements MonitorDataReportService {
                 for (MonitorDataValueEntity monitorDataValueEntity : monitorDataEntity.getDataValues()) {
                     if (monitorDataValueEntity.getAttributeId().equals(deviceWaterDetail.getAttributeId())) {
                         //累计当天流量
-                        deviceWaterAmount.addWaterIntakeAmountForDay(new BigDecimal(monitorDataValueEntity.getDataValue()).subtract(deviceWaterDetail.getLatestValue()));
+                        deviceWaterAmount.addWaterIntakeAmountForDay((new BigDecimal(monitorDataValueEntity.getDataValue()).subtract(deviceWaterDetail.getLatestValue())
+                        ).divide(BigDecimal.valueOf(10000),3, RoundingMode.HALF_UP));
                     }
                 }
             }
@@ -689,6 +691,8 @@ public class MonitorDataReportServiceImpl implements MonitorDataReportService {
         if (waterSupplyAmountForYear == null) {
             waterSupplyAmountForYear = BigDecimal.ZERO;
         }
+        waterSupplyAmountForMonth =waterSupplyAmountForMonth.divide(BigDecimal.valueOf(10000),3, RoundingMode.HALF_UP);
+        waterSupplyAmountForYear =waterSupplyAmountForYear.divide(BigDecimal.valueOf(10000),3, RoundingMode.HALF_UP);
         //水厂当月流量
         if (deviceWaterAmount.getWaterSupplyAmountForDay() == null) {
             deviceWaterAmount.setWaterSupplyAmountForMonth(waterSupplyAmountForMonth);
@@ -711,6 +715,8 @@ public class MonitorDataReportServiceImpl implements MonitorDataReportService {
         if (waterIntakeAmountForYear == null) {
             waterIntakeAmountForYear = BigDecimal.ZERO;
         }
+        waterIntakeAmountForMonth =waterIntakeAmountForMonth.divide(BigDecimal.valueOf(10000),3, RoundingMode.HALF_UP);
+        waterIntakeAmountForYear =waterIntakeAmountForYear.divide(BigDecimal.valueOf(10000),3, RoundingMode.HALF_UP);
         //水源当月流量
         if (deviceWaterAmount.getWaterIntakeAmountForDay() == null) {
             deviceWaterAmount.setWaterIntakeAmountForMonth(waterIntakeAmountForMonth);
@@ -886,11 +892,12 @@ public class MonitorDataReportServiceImpl implements MonitorDataReportService {
                                     )
                                     .forEach(monitorDataValueEntity ->
                                             //累计当天流量
-                                            sceneWaterAmount.setWaterAmount(sceneWaterAmount.getWaterAmount().add(
-                                                    new BigDecimal(monitorDataValueEntity.getDataValue()).subtract(deviceWaterDetail.getLatestValue())))
+                                            sceneWaterAmount.setWaterAmount((sceneWaterAmount.getWaterAmount().add(
+                                                    new BigDecimal(monitorDataValueEntity.getDataValue()).subtract(deviceWaterDetail.getLatestValue()))))
                                     );
                         }
                     });
+                    sceneWaterAmount.setWaterAmount(sceneWaterAmount.getWaterAmount().divide(BigDecimal.valueOf(10000),3, RoundingMode.HALF_UP));
                     sceneWaterAmounts.add(sceneWaterAmount);
                 });
         //倒序排序

+ 2 - 1
sms_water/src/main/java/com/huaxu/service/impl/MonitorDataServiceImpl.java

@@ -208,8 +208,9 @@ public class MonitorDataServiceImpl implements MonitorDataService , Initializing
                         }
                         lastHourDataMap.remove(dayReportEntity.getMapkey());
                     }
-
                 }
+                //对平均值小数位处理
+                dayReportEntity.setAvgValue(new BigDecimal(dayReportEntity.getAvgValue()).setScale(5, BigDecimal.ROUND_HALF_UP).doubleValue());
             }
             monitorDataMapper.batchInsertDayReport(hourDatas);
         }

+ 1 - 1
sms_water/src/main/resources/mapper/MonitorDataReportMapper.xml

@@ -1301,7 +1301,7 @@
             ,r.month
             ,r.day
             ,dp.PARM_TYPE as "parmType"
-            ,sum(r.SUM_VALUE) as "amount"
+            ,sum(r.SUM_VALUE)/10000 as "amount"
             ,da.UNIT as "unit"
         from sms_scene_type st
         left join sms_scene s on s.SCENE_TYPE_ID =st.id