ソースを参照

用电量接收

Newspaper 10 ヶ月 前
コミット
ea80eedff2

+ 20 - 0
huimv-env-input/src/main/java/com/huimv/env/input/controller/EnergyElectricityController.java

@@ -0,0 +1,20 @@
+package com.huimv.env.input.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author newspaper
+ * @since 2024-07-23
+ */
+@RestController
+@RequestMapping("/energy-electricity")
+public class EnergyElectricityController {
+
+}

+ 83 - 0
huimv-env-input/src/main/java/com/huimv/env/input/entity/EnergyElectricity.java

@@ -0,0 +1,83 @@
+package com.huimv.env.input.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author newspaper
+ * @since 2024-07-23
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("energy_electricity")
+public class EnergyElectricity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 网关编号
+     */
+    private String gatwayCode;
+
+    /**
+     * 终端编号
+     */
+    private String terminalCode;
+
+    /**
+     * 设备名称
+     */
+    private String deviceName;
+
+    /**
+     * 安装位置名称
+     */
+    private String buildName;
+
+    /**
+     * 楼层id
+     */
+    private Integer floorId;
+
+    /**
+     * 用电量
+     */
+    private String electricityValue;
+
+    /**
+     * 原始值
+     */
+    private String originalValue;
+
+    /**
+     * 原始数据
+     */
+    private String originalData;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 小区id
+     */
+    private Integer farmId;
+}

+ 16 - 0
huimv-env-input/src/main/java/com/huimv/env/input/mapper/EnergyElectricityMapper.java

@@ -0,0 +1,16 @@
+package com.huimv.env.input.mapper;
+
+import com.huimv.env.input.entity.EnergyElectricity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author newspaper
+ * @since 2024-07-23
+ */
+public interface EnergyElectricityMapper extends BaseMapper<EnergyElectricity> {
+
+}

+ 67 - 7
huimv-env-input/src/main/java/com/huimv/env/input/server/EnvInputServerHandler.java

@@ -30,6 +30,7 @@ import java.io.*;
 import java.math.BigDecimal;
 import java.text.DecimalFormat;
 import java.text.ParseException;
+import java.time.LocalDateTime;
 import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -79,7 +80,8 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
     private IHeartInfoService heartInfoService;
     @Autowired
     private IGatewayService gatewayService;
-
+    @Autowired
+    private IEnergyElectricityService energyElectricityService;
 
 
     @Autowired
@@ -199,6 +201,10 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
                 //充电前电流
                 saveBeforeElectric2(askText, dataArray, ctx);
                 break;
+            case "6":
+                //用电量
+                saveEnergy(askText, dataArray, ctx);
+                break;
             default:
                 log.error(String.format("未知指令 --> %s", askText));
                 answerCmd("hm+4+1+end", ctx);
@@ -409,8 +415,8 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
                     Process proc = Runtime.getRuntime().exec(my_args);//执行脚本
                     System.out.println("执行脚本");
                     BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
-                    String line = null;
-                    while((line = reader.readLine()) != null){
+                    String line = reader.readLine();
+                    if (!ObjectUtils.isEmpty(line)){
                         System.out.println("python执行结果"+line);
                     }
                     reader.close();
@@ -422,7 +428,10 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
                         log.info(String.format("无端口设备--> %s" ,askText));
                         return;
                     }
-                    saveWarning3(gateWayCode,terminalCode,terminalPortCode,deviceCode,line,now);
+                    if (!ObjectUtils.isEmpty(line)){
+                        saveWarning3(gateWayCode,terminalCode,terminalPortCode,deviceCode,line,now);
+                    }
+
 
                 } catch (IOException e) {
                     log.error(e);
@@ -671,12 +680,59 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
                 //充电前电流
                 saveBeforeElectric(askText, dataArray, ctx);
                 break;
+            case "6":
+                //用电量
+                saveEnergy(askText, dataArray, ctx);
+                break;
             default:
                 log.error(String.format("未知指令 --> %s", askText));
                 answerCmd("hm+4+1+end", ctx);
         }
     }
 
+    private void saveEnergy(String askText, String[] dataArray, ChannelHandlerContext ctx) {
+//      hm+6+867699060004422+1+5+v2.0+15+end
+        String ans = "hm+6+1+end";
+        answerCmd(ans,ctx);
+        String gateWayCode = dataArray[2];
+        String terminalCode = dataArray[3];
+        String originalData = getNum(dataArray[4]);
+        Terminal terminal = terminalService.getOne(new QueryWrapper<Terminal>().lambda().eq(Terminal::getDeviceCode, gateWayCode + terminalCode));
+        if (ObjectUtils.isEmpty(terminal)){
+            log.error("无终端数据 --> %s",gateWayCode + terminalCode);
+        }
+
+        BasePigpen basePigpen = basePigpenService.getById(terminal.getFloorId());
+        if (ObjectUtils.isEmpty(basePigpen)){
+            log.error("无楼层数据 --> %s",terminal.getFloorId());
+        }
+        EnergyElectricity energyElectricity = new EnergyElectricity();
+
+        energyElectricity.setBuildName(basePigpen.getBuildName());
+        if (!ObjectUtils.isEmpty(terminal.getDeviceName())){
+            energyElectricity.setDeviceName(terminal.getDeviceName());
+        }
+        energyElectricity.setFloorId(terminal.getFloorId());
+        energyElectricity.setTerminalCode(gateWayCode + terminalCode);
+        energyElectricity.setGatwayCode(gateWayCode);
+        energyElectricity.setOriginalValue(originalData);
+
+        BigDecimal lastEle = new BigDecimal(0);
+        BigDecimal originalEle = new BigDecimal(originalData);
+
+        EnergyElectricity lastElectricity = energyElectricityService.getOne(new QueryWrapper<EnergyElectricity>().lambda().eq(EnergyElectricity::getTerminalCode, gateWayCode + terminalCode).orderByDesc(EnergyElectricity::getId).last("limit 1"));
+        if (!ObjectUtils.isEmpty(lastElectricity)){
+            lastEle = new BigDecimal(lastElectricity.getOriginalData());
+        }
+        BigDecimal electricityValue = originalEle.subtract(lastEle);
+        energyElectricity.setElectricityValue(electricityValue.toString());
+        energyElectricity.setCreateTime(LocalDateTime.now());
+        energyElectricity.setOriginalData(askText);
+        energyElectricity.setFarmId(terminal.getFarmId());
+        energyElectricityService.save(energyElectricity);
+
+    }
+
     private synchronized void saveBeforeElectric(String askText, String[] dataArray, ChannelHandlerContext ctx) {
         String ans = "hm+5+1+end";
         answerCmd(ans,ctx);
@@ -790,13 +846,16 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
                 String lastArr = portChangeData.getElectricCurrent();
                 String currentArr = portChangeData.getBeforeElectricCurrent();
                 String modelPath = "./epoch_8_acc_100.00.pth";
+                System.out.println("lastPower:"+lastPower);
+                System.out.println("lastArr:"+lastArr);
+                System.out.println("currentArr:"+currentArr);
                 try {
                     String[] my_args =new String[] {"python3","detect.py",lastPower,lastArr,currentArr,modelPath};
                     Process proc = Runtime.getRuntime().exec(my_args);//执行脚本
                     System.out.println("执行脚本");
                     BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
                     String line = null;
-                    while((line = reader.readLine()) != null){
+                    if (!ObjectUtils.isEmpty(line)){
                         System.out.println("python执行结果"+line);
                     }
                     reader.close();
@@ -808,8 +867,9 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
                         log.info(String.format("无端口设备--> %s" ,askText));
                         return;
                     }
-                    saveWarning3(gateWayCode,terminalCode,terminalPortCode,deviceCode,line,now);
-
+                    if (!ObjectUtils.isEmpty(line)){
+                        saveWarning3(gateWayCode,terminalCode,terminalPortCode,deviceCode,line,now);
+                    }
                 } catch (IOException e) {
                     log.error(e);
                 } catch (InterruptedException e) {

+ 16 - 0
huimv-env-input/src/main/java/com/huimv/env/input/service/IEnergyElectricityService.java

@@ -0,0 +1,16 @@
+package com.huimv.env.input.service;
+
+import com.huimv.env.input.entity.EnergyElectricity;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author newspaper
+ * @since 2024-07-23
+ */
+public interface IEnergyElectricityService extends IService<EnergyElectricity> {
+
+}

+ 20 - 0
huimv-env-input/src/main/java/com/huimv/env/input/service/impl/EnergyElectricityServiceImpl.java

@@ -0,0 +1,20 @@
+package com.huimv.env.input.service.impl;
+
+import com.huimv.env.input.entity.EnergyElectricity;
+import com.huimv.env.input.mapper.EnergyElectricityMapper;
+import com.huimv.env.input.service.IEnergyElectricityService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author newspaper
+ * @since 2024-07-23
+ */
+@Service
+public class EnergyElectricityServiceImpl extends ServiceImpl<EnergyElectricityMapper, EnergyElectricity> implements IEnergyElectricityService {
+
+}

+ 10 - 0
huimv-env-input/src/main/resources/mapper/EnergyElectricityMapper.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.huimv.env.input.mapper.EnergyElectricityMapper">
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, gatway_code, terminal_code, device_name, build_name, floor_id, electricity_value, original_value, original_data, create_time
+    </sql>
+
+</mapper>