Bladeren bron

接受数据修改3

wwh 1 jaar geleden
bovenliggende
commit
263dbe6385

+ 2 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/entity/EnergyElectricity.java

@@ -61,5 +61,7 @@ public class EnergyElectricity implements Serializable {
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
     private Date createDate;
 
+    private String chipCode;
+
 
 }

+ 7 - 1
huimv-admin/src/main/java/com/huimv/guowei/admin/entity/vo/TreeBaseBuilding.java

@@ -11,7 +11,7 @@ import java.util.List;
 @Data
 @AllArgsConstructor
 @NoArgsConstructor
-public class TreeBaseBuilding implements Serializable {
+public class TreeBaseBuilding implements Comparable<TreeBaseBuilding>  {
 
     private static final long serialVersionUID=1L;
 
@@ -30,4 +30,10 @@ public class TreeBaseBuilding implements Serializable {
     private Integer sort;
 
     private List<TreeBaseBuilding> childNode;
+
+    @Override
+    public int compareTo(TreeBaseBuilding o) {
+        // 根据年龄进行升序排序
+        return Integer.compare(Integer.valueOf(this.id), Integer.valueOf(o.id));
+    }
 }

+ 65 - 17
huimv-admin/src/main/java/com/huimv/guowei/admin/mqtt/EnvControll/PushCallback.java

@@ -152,6 +152,7 @@ public class PushCallback implements MqttCallbackExtended {
             } else if (ObjectUtil.isNotEmpty(jsonObject.get("sensor"))) {
                 log.info("开始处理传感器数据!");
                 IEnvDeviceService deviceService = SpringUtil.getBean(IEnvDeviceService.class);
+                IEnvDeviceChipService chipService = SpringUtil.getBean(IEnvDeviceChipService.class);
                 EnvDevice device = deviceService.getOne(new QueryWrapper<EnvDevice>().eq("device_type", 1).eq("device_code", chip));
                 BigDecimal big = BigDecimal.valueOf(10);
                 Map map = (Map) jsonObject.get("sensor");
@@ -178,16 +179,35 @@ public class PushCallback implements MqttCallbackExtended {
                 Map waterMeter = (Map) map.get("water_meter");
                 JSONArray jsonArray2 = (JSONArray) waterMeter.get("data");
                 IEnergyWaterService waterService = SpringUtil.getBean(IEnergyWaterService.class);
+                QueryWrapper<EnvDeviceChip> queryWrapper = new QueryWrapper<>();
+                queryWrapper.eq("device_code", device.getDeviceCode()).eq("chip_type", 3);
+                List<EnvDeviceChip> chips = chipService.list(queryWrapper);
 //                IEnvDeviceChipService chipService = SpringUtil.getBean(IEnvDeviceChipService.class);
                 for (int i = 0; i < jsonArray2.size(); i++) {
+                    QueryWrapper<EnergyWater> queryWrapper1 = new QueryWrapper<>();
+                    queryWrapper1.eq("farm_id", device.getFarmId()).orderByDesc("id").eq("chip_code", chips.get(i).getChipCode())
+                            .last(" limit 1");
+                    EnergyWater water1 = waterService.getOne(queryWrapper1);
+                    EnergyWater water = new EnergyWater();
                     BigDecimal data2 = new BigDecimal(Integer.parseInt(jsonArray2.get(i).toString()));
                     BigDecimal waterMeter2 = data2.divide(big);
-                    EnergyWater water = new EnergyWater();
-                    water.setWaterValue(waterMeter2.toString());
+                    if (ObjectUtil.isNotEmpty(water1)) {
+                        if ("".equals(water1.getOriginalValue()) || water1.getOriginalValue() == null) {
+                            water.setOriginalValue(waterMeter2.toString());
+                            water.setWaterValue(waterMeter2.toString());
+                        } else {
+                            water.setOriginalValue(waterMeter2.toString());
+                            BigDecimal bd = new BigDecimal(water1.getOriginalValue());
+                            water.setWaterValue(waterMeter2.subtract(bd).toString());
+                        }
+                    } else {
+                        water.setWaterValue(waterMeter2.toString());
+                        water.setOriginalValue(waterMeter2.toString());
+                    }
                     water.setCreateDate(new Date());
                     water.setFarmId(device.getFarmId());
                     water.setUnitId(device.getUnitId());
-                    water.setChipCode(device.getDeviceCode());
+                    water.setChipCode(chips.get(i).getChipCode());
                     waterService.save(water);
                 }
                 log.info("水表处理完成!");
@@ -195,41 +215,69 @@ public class PushCallback implements MqttCallbackExtended {
                 //电表的值
                 Map elect = (Map) map.get("electr_meter");
                 JSONArray jsonArray3 = (JSONArray) elect.get("data");
-                BigDecimal data2 = new BigDecimal(Integer.parseInt(jsonArray3.get(0).toString()));
-                BigDecimal elect2 = data2.divide(big);
                 IEnergyElectricityService electricityService = SpringUtil.getBean(IEnergyElectricityService.class);
-                EnergyElectricity electricity = new EnergyElectricity();
-                electricity.setCreateDate(new Date());
-                electricity.setElectricityValue(elect2.toString());
-                electricity.setUnitId(device.getUnitId());
-                electricity.setFarmId(device.getFarmId());
-                electricityService.save(electricity);
+
+                QueryWrapper<EnvDeviceChip> queryWrapper1 = new QueryWrapper<>();
+                queryWrapper1.eq("device_code", device.getDeviceCode()).eq("chip_type", 4);
+                List<EnvDeviceChip> chips2 = chipService.list(queryWrapper1);
+
+                for (EnvDeviceChip deviceChip : chips2) {
+                    QueryWrapper<EnergyElectricity> queryWrapper2 = new QueryWrapper<>();
+                    queryWrapper2.eq("farm_id", device.getFarmId()).orderByDesc("id").eq("chip_code", deviceChip.getChipCode())
+                            .last(" limit 1");
+                    EnergyElectricity water1 = electricityService.getOne(queryWrapper2);
+                    EnergyElectricity electricity = new EnergyElectricity();
+                    BigDecimal data2 = new BigDecimal(Integer.parseInt(jsonArray3.get(0).toString()));
+                    BigDecimal elect2 = data2.divide(big);
+                    if (ObjectUtil.isNotEmpty(water1)) {
+                        if ("".equals(water1.getOriginalValue()) || water1.getOriginalValue() == null) {
+                            electricity.setOriginalValue(elect2.toString());
+                            electricity.setElectricityValue(elect2.toString());
+                        } else {
+                            electricity.setOriginalValue(elect2.toString());
+                            BigDecimal bd = new BigDecimal(water1.getOriginalValue());
+                            electricity.setElectricityValue(elect2.subtract(bd).toString());
+                        }
+                    } else {
+                        electricity.setElectricityValue(elect2.toString());
+                        electricity.setOriginalValue(elect2.toString());
+                    }
+                    electricity.setCreateDate(new Date());
+                    electricity.setUnitId(device.getUnitId());
+                    electricity.setFarmId(device.getFarmId());
+                    electricity.setChipCode(deviceChip.getChipCode());
+                    electricityService.save(electricity);
+                }
+
                 log.info("电表处理完成!");
 
+
                 //水压的值
                 BigDecimal big2 = BigDecimal.valueOf(100);
                 Map waterPress = (Map) map.get("water_press");
                 JSONArray jsonArray4 = (JSONArray) waterPress.get("data");
+                QueryWrapper<EnvDeviceChip> queryWrapper2 = new QueryWrapper<>();
+                queryWrapper2.eq("device_code", device.getDeviceCode()).eq("chip_type", 5);
+                List<EnvDeviceChip> chips3 = chipService.list(queryWrapper2);
+
                 IEnergyWaterPressureService pressureService = SpringUtil.getBean(IEnergyWaterPressureService.class);
                 for (int i = 0; i < jsonArray4.size(); i++) {
+                    EnergyWaterPressure waterPressure = new EnergyWaterPressure();
                     BigDecimal data3 = new BigDecimal(Integer.parseInt(jsonArray4.get(i).toString()));
                     BigDecimal waterMeter2 = data3.divide(big2);
-                    EnergyWaterPressure waterPressure = new EnergyWaterPressure();
                     waterPressure.setWaterValue(waterMeter2.toString());
                     waterPressure.setFarmId(device.getFarmId());
                     waterPressure.setUnitId(device.getUnitId());
-                    waterPressure.setChipCode(device.getDeviceCode());
+                    waterPressure.setChipCode(chips3.get(i).getChipCode());
                     waterPressure.setCreateDate(LocalDateTime.now());
                     pressureService.save(waterPressure);
+                    log.info("水压处理完成!");
                 }
-                log.info("水压处理完成!");
 
             }
 
+            System.out.println("数据处理完成!");
         }
 
-        System.out.println("数据处理完成!");
     }
-
-
 }

+ 1 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/service/impl/BaseBuildingServiceImpl.java

@@ -169,6 +169,7 @@ public class BaseBuildingServiceImpl extends ServiceImpl<BaseBuildingMapper, Bas
                 .eq("farm_id", farmId)
                 .orderByAsc("id"));
         List<TreeBaseBuilding> treeBaseBuildings = parseBizBaseArea(baseBuildings);
+        Collections.sort(treeBaseBuildings);
         return new Result(ResultCode.SUCCESS,treeBaseBuildings);
     }
 

+ 15 - 14
huimv-admin/src/main/java/com/huimv/guowei/admin/service/impl/EnergyElectricityServiceImpl.java

@@ -27,6 +27,7 @@ import javax.servlet.http.HttpServletResponse;
 import javax.xml.crypto.Data;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.text.DecimalFormat;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
@@ -95,6 +96,8 @@ public class EnergyElectricityServiceImpl extends ServiceImpl<EnergyElectricityM
         Date timesmorning = DataUill.getTimesmorning();
         Date timesMonthmorning = DataUill.getTimesMonthmorning();
         BigDecimal dayGap,monthGap;
+        String format = "";
+        String format1 = "";
         Map resultMap = new HashMap();
         //今日
         QueryWrapper<EnergyElectricity> queryWrapper1 = new QueryWrapper<>();
@@ -108,13 +111,12 @@ public class EnergyElectricityServiceImpl extends ServiceImpl<EnergyElectricityM
         queryWrapper2.eq("unit_id",unitId).eq("farm_id",farmId).between("create_date",startOfDay,endOfDay);
         BigDecimal lastDayElectricity = energyElectricityMapper.getElectricity(queryWrapper2);
         //日环比
-        if (lastDayElectricity.toString().equals("0.0")){
-            dayGap = BigDecimal.valueOf(100);
-            if (dayElectricity.toString().equals("0.0")){
-                dayGap = BigDecimal.valueOf(0);
-            }
+        if (lastDayElectricity.compareTo(BigDecimal.ZERO)==0){
+            format = "100";
         }else {
-            dayGap = dayElectricity.subtract(lastDayElectricity).divide(lastDayElectricity,BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.UP);
+            dayGap = dayElectricity.subtract(lastDayElectricity).divide(lastDayElectricity,2,BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100));
+            DecimalFormat def = new DecimalFormat("0.00");
+            format = def.format(dayGap);
         }
 
         //本月
@@ -130,22 +132,21 @@ public class EnergyElectricityServiceImpl extends ServiceImpl<EnergyElectricityM
         //月环比
         System.out.println(monthElectricity);
         System.out.println(lastMonthElectricity);
-        if (lastMonthElectricity.toString().equals("0.0")){
-            monthGap = BigDecimal.valueOf(100);
-            if (monthElectricity.toString().equals("0.0")){
-                monthGap = BigDecimal.valueOf(0);
-            }
+        if (lastMonthElectricity.compareTo(BigDecimal.ZERO)==0){
+            format1 = "100";
         }else {
-            monthGap = monthElectricity.subtract(lastMonthElectricity).divide(lastMonthElectricity,BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.UP);
+            monthGap = monthElectricity.subtract(lastMonthElectricity).divide(lastMonthElectricity,2,BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100));
+            DecimalFormat def = new DecimalFormat("0.00");
+            format1 = def.format(monthGap);
         }
         int dayTrend =dayElectricity.compareTo(lastDayElectricity);
         int monthTrend =monthElectricity.compareTo(lastMonthElectricity);
         resultMap.put("dayElectricity",dayElectricity);
         resultMap.put("dayTrend",dayTrend);
-        resultMap.put("dayElectricityGap",dayGap+"%");
+        resultMap.put("dayElectricityGap",format+"%");
         resultMap.put("monthElectricity",monthElectricity);
         resultMap.put("monthTrend",monthTrend);
-        resultMap.put("monthElectricityGap",monthGap+"%");
+        resultMap.put("monthElectricityGap",format1+"%");
         return new Result(ResultCode.SUCCESS,resultMap);
     }
 

+ 16 - 15
huimv-admin/src/main/java/com/huimv/guowei/admin/service/impl/EnergyWaterServiceImpl.java

@@ -25,6 +25,7 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.text.DecimalFormat;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
@@ -130,6 +131,8 @@ public class EnergyWaterServiceImpl extends ServiceImpl<EnergyWaterMapper, Energ
         Date timesmorning = DataUill.getTimesmorning();
         Date timesMonthmorning = DataUill.getTimesMonthmorning();
         BigDecimal dayGap, monthGap;
+        String format = "";
+        String format1 = "";
         Map resultMap = new HashMap();
         //今日
         QueryWrapper<EnergyWater> queryWrapper1 = new QueryWrapper<>();
@@ -145,13 +148,12 @@ public class EnergyWaterServiceImpl extends ServiceImpl<EnergyWaterMapper, Energ
 
         System.out.println(lastDayWater);
         //日环比
-        if (lastDayWater.toString().equals("0.0")) {
-            dayGap = BigDecimal.valueOf(100);
-            if (dayWater.toString().equals("0.0")) {
-                dayGap = BigDecimal.valueOf(0);
-            }
+        if (lastDayWater.compareTo(BigDecimal.ZERO)==0) {
+            format = "100";
         } else {
-            dayGap = dayWater.subtract(lastDayWater).divide(lastDayWater).multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.UP);
+            dayGap = dayWater.subtract(lastDayWater).divide(lastDayWater,2,BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100));
+            DecimalFormat def = new DecimalFormat("0.00");
+            format = def.format(dayGap);
         }
         //本月
         QueryWrapper<EnergyWater> queryWrapper3 = new QueryWrapper<>();
@@ -164,22 +166,21 @@ public class EnergyWaterServiceImpl extends ServiceImpl<EnergyWaterMapper, Energ
         queryWrapper4.eq("unit_id", unitId).eq("farm_id", farmId).between("create_date", lastMonthStartMorning, lastMonthEndNight);
         BigDecimal lastMonthWater = energyWaterMapper.getWater(queryWrapper4);
         //月环比
-        if (lastMonthWater.toString().equals("0.0")) {
-            monthGap = BigDecimal.valueOf(100);
-            if (monthWater.toString().equals("0.0")) {
-                monthGap = BigDecimal.valueOf(0);
-            }
+        if (lastMonthWater.compareTo(BigDecimal.ZERO)==0) {
+            format1 = "100";
         } else {
-            monthGap = monthWater.subtract(lastMonthWater).divide(lastMonthWater, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.UP);
+            monthGap = monthWater.subtract(lastMonthWater).divide(lastMonthWater,2,BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100));
+            DecimalFormat def = new DecimalFormat("0.00");
+            format1 = def.format(monthGap);
         }
         int dayTrend = dayWater.compareTo(lastDayWater);
         int monthTrend = monthWater.compareTo(lastMonthWater);
         resultMap.put("dayWater", dayWater);
         resultMap.put("dayTrend", dayTrend);
-        resultMap.put("dayWaterGap", dayGap + "%");
+        resultMap.put("dayWaterGap", format + "%");
         resultMap.put("monthWater", monthWater);
         resultMap.put("monthTrend", monthTrend);
-        resultMap.put("monthWaterGap", monthGap + "%");
+        resultMap.put("monthWaterGap", format1 + "%");
         return new Result(ResultCode.SUCCESS, resultMap);
     }
 
@@ -263,6 +264,6 @@ public class EnergyWaterServiceImpl extends ServiceImpl<EnergyWaterMapper, Energ
             waterVos = energyWaterMapper.selectList(queryWrapper);
         }
         EnergyWater water = energyWaterMapper.printWaterCount(queryWrapper);//总吨数
-        Print.printWater(waterVos,water);
+        Print.printWater(waterVos, water);
     }
 }