|
@@ -0,0 +1,117 @@
|
|
|
|
+package com.huimv.env.device.service.impl;
|
|
|
|
+
|
|
|
|
+import cn.hutool.core.date.DateUtil;
|
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
|
+import com.auth0.jwt.interfaces.Payload;
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
+import com.huimv.env.common.entity.EnergyElectricity;
|
|
|
|
+import com.huimv.env.common.entity.EnergyWater;
|
|
|
|
+import com.huimv.env.common.service.IEnergyElectricityService;
|
|
|
|
+import com.huimv.env.common.service.IEnergyWaterService;
|
|
|
|
+import com.huimv.env.device.service.DataService;
|
|
|
|
+import org.checkerframework.checker.units.qual.A;
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
|
+
|
|
|
|
+import java.math.BigDecimal;
|
|
|
|
+import java.text.ParseException;
|
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
|
+import java.util.Date;
|
|
|
|
+
|
|
|
|
+@Service
|
|
|
|
+public class DataServiceImpl implements DataService {
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private IEnergyElectricityService energyElectricityService ;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private IEnergyWaterService energyWaterService ;
|
|
|
|
+ @Override
|
|
|
|
+ public void saveData(String payload, String timestamp, String nodeEui) throws ParseException {
|
|
|
|
+ // 4823290F01000000 01016B13
|
|
|
|
+ nodeEui = nodeEui.substring(nodeEui.length()-8);
|
|
|
|
+ //6C0008 01 47 00000025
|
|
|
|
+ //01 水表 ,02电表
|
|
|
|
+ String devType = payload.substring(6, 8);
|
|
|
|
+ //电压 除十
|
|
|
|
+ String voltage = String.format("%.1f", (double)Integer.parseInt(payload.substring(8, 10),16)/10.0);
|
|
|
|
+ // 数值
|
|
|
|
+ Integer originalData = Integer.parseInt(payload.substring(10),16);
|
|
|
|
+ if ("01".equals(devType)){
|
|
|
|
+ saveShui(voltage,originalData,timestamp,nodeEui,payload);
|
|
|
|
+ }
|
|
|
|
+ if ("02".equals(devType)){
|
|
|
|
+ saveDian(voltage,originalData,timestamp,nodeEui,payload);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ private void saveDian(String voltage, Integer originalData, String timestamp, String nodeEui,String payload) throws ParseException {
|
|
|
|
+ EnergyElectricity one = energyElectricityService.getOne(new QueryWrapper<EnergyElectricity>().eq("chip_code", nodeEui).orderByDesc("id").last("limit 1"));
|
|
|
|
+ String lastData ="0";
|
|
|
|
+ if (ObjectUtil.isNotEmpty(one)){
|
|
|
|
+ lastData = one.getOriginalValue();
|
|
|
|
+ }
|
|
|
|
+ //差值
|
|
|
|
+ Integer str = (originalData - Integer.parseInt(lastData));
|
|
|
|
+
|
|
|
|
+ // 将时间戳字符串解析为Date对象
|
|
|
|
+ EnergyElectricity envWater = new EnergyElectricity();
|
|
|
|
+ Date date = new Date();
|
|
|
|
+ envWater.setCreateDate(date);
|
|
|
|
+ envWater.setUploadDate(new Date(Long.parseLong(timestamp)));
|
|
|
|
+ envWater.setFarmId(21);
|
|
|
|
+ envWater.setOriginalValue(originalData+"");
|
|
|
|
+ envWater.setChipCode(nodeEui);
|
|
|
|
+ envWater.setOriginalDate(payload);
|
|
|
|
+ if(str <0 ){
|
|
|
|
+ envWater.setElectricityValue(originalData+"");
|
|
|
|
+ }else {
|
|
|
|
+ envWater.setElectricityValue(str+"");
|
|
|
|
+ }
|
|
|
|
+ envWater.setVoltage(voltage);
|
|
|
|
+ energyElectricityService.save(envWater);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void saveShui(String voltage, Integer originalData, String timestamp, String nodeEui,String payload) throws ParseException {
|
|
|
|
+ EnergyWater one = energyWaterService.getOne(new QueryWrapper<EnergyWater>().eq("chip_code", nodeEui).orderByDesc("id").last("limit 1"));
|
|
|
|
+ String lastData ="0";
|
|
|
|
+ if (ObjectUtil.isNotEmpty(one)){
|
|
|
|
+ lastData = one.getOriginalValue();
|
|
|
|
+ }
|
|
|
|
+ //差值
|
|
|
|
+ Integer str = (originalData - Integer.parseInt(lastData));
|
|
|
|
+
|
|
|
|
+ // 将时间戳字符串解析为Date对象
|
|
|
|
+ EnergyWater envWater = new EnergyWater();
|
|
|
|
+ Date date = new Date();
|
|
|
|
+ envWater.setCreateDate(date);
|
|
|
|
+ envWater.setUploadDate(new Date(Long.parseLong(timestamp)));
|
|
|
|
+ envWater.setFarmId(21);
|
|
|
|
+ envWater.setOriginalValue(originalData+"");
|
|
|
|
+ envWater.setChipCode(nodeEui);
|
|
|
|
+ envWater.setOriginalDate(payload);
|
|
|
|
+ if(str <0 ){
|
|
|
|
+ envWater.setWaterValue(originalData+"");
|
|
|
|
+ }else {
|
|
|
|
+ envWater.setWaterValue(str+"");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ envWater.setVoltage(voltage);
|
|
|
|
+
|
|
|
|
+ energyWaterService.save(envWater);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public static void main(String[] args) {
|
|
|
|
+
|
|
|
|
+// String timestamp = ;
|
|
|
|
+// SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HHmmss");
|
|
|
|
+ System.out.println(new Date(Long.parseLong("1694678879843")));
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+}
|