523096025 hace 1 año
padre
commit
be255e7864

+ 68 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/controller/BaseSpecificVideoController.java

@@ -0,0 +1,68 @@
+package com.huimv.guowei.admin.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.common.utils.ResultCode;
+import com.huimv.guowei.admin.entity.BaseSpecificVideo;
+import com.huimv.guowei.admin.entity.SysCamera;
+import com.huimv.guowei.admin.service.IBaseSpecificVideoService;
+import com.huimv.guowei.admin.service.ISysCameraService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * <p>
+ * 前端控制器
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-12-20
+ */
+@RestController
+@RequestMapping("/baseSpecificVideo")
+public class BaseSpecificVideoController {
+    @Autowired
+    IBaseSpecificVideoService baseSpecificVideoService;
+
+    @Autowired
+    ISysCameraService cameraService;
+
+    @PostMapping("/add")
+    public Result add(@RequestBody BaseSpecificVideo baseFarmX) {
+        SysCamera byId = cameraService.getById(baseFarmX.getVideoId());
+        baseFarmX.setVideoName(byId.getCameraName());
+        baseSpecificVideoService.save(baseFarmX);
+        return new Result(ResultCode.SUCCESS);
+    }
+
+
+    @GetMapping("/remove")
+    public Result remove(@RequestParam(name = "id") Integer id) {
+        baseSpecificVideoService.removeById(id);
+        return new Result(ResultCode.SUCCESS);
+    }
+
+    @PostMapping("/update")
+    public Result update(@RequestBody BaseSpecificVideo baseFarmX) {
+        SysCamera byId = cameraService.getById(baseFarmX.getVideoId());
+        baseFarmX.setVideoName(byId.getCameraName());
+        baseSpecificVideoService.updateById(baseFarmX);
+        return new Result(ResultCode.SUCCESS);
+    }
+
+    @GetMapping("/list")
+    public Result list(@RequestParam(name = "farmId") Integer farmId) {
+
+        return new Result(ResultCode.SUCCESS, baseSpecificVideoService.list(new QueryWrapper<BaseSpecificVideo>().eq("farm_id", farmId)));
+    }
+
+    @GetMapping("/listSpecif")
+    public Result listSpecif(@RequestParam(name = "farmId") Integer farmId,
+                             @RequestParam(name = "type") Integer type) {
+
+        return new Result(ResultCode.SUCCESS, baseSpecificVideoService.listSpecif(farmId, type));
+    }
+
+
+}

+ 3 - 1
huimv-admin/src/main/java/com/huimv/guowei/admin/controller/DeviceFarmConfigController.java

@@ -24,6 +24,8 @@ import java.util.Map;
  * @author author
  * @since 2023-09-12
  */
+
+
 @RestController
 @RequestMapping("/device-farm-config")
 @CrossOrigin
@@ -37,7 +39,7 @@ public class DeviceFarmConfigController {
         return deviceFarmConfigService.list(paramsMap);
     }
     @RequestMapping("/updateByFarmId")
-    public Result updateByFarmId(HttpServletRequest httpServletRequest, @RequestBody List<DeviceFarmConfig> deviceFarmConfig) {
+    public Result updateByFarmId(HttpServletRequest httpServletRequest, @RequestBody  List<DeviceFarmConfig> deviceFarmConfig) {
         for (DeviceFarmConfig farmConfig : deviceFarmConfig) {
             deviceFarmConfigService.updateById(farmConfig);
 

+ 38 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/entity/BaseSpecificVideo.java

@@ -0,0 +1,38 @@
+package com.huimv.guowei.admin.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-12-20
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+public class BaseSpecificVideo extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    private Integer videoId;
+
+    private Integer type;
+
+    private Integer farmId;
+
+    private String videoName;
+
+    private String selectVideo;
+
+}

+ 16 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/mapper/BaseSpecificVideoMapper.java

@@ -0,0 +1,16 @@
+package com.huimv.guowei.admin.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.guowei.admin.entity.BaseSpecificVideo;
+
+/**
+ * <p>
+ * Mapper 接口
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-12-20
+ */
+public interface BaseSpecificVideoMapper extends BaseMapper<BaseSpecificVideo> {
+
+}

+ 19 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/service/IBaseSpecificVideoService.java

@@ -0,0 +1,19 @@
+package com.huimv.guowei.admin.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.huimv.guowei.admin.entity.BaseSpecificVideo;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 服务类
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-12-20
+ */
+public interface IBaseSpecificVideoService extends IService<BaseSpecificVideo> {
+
+    List listSpecif(Integer farmId, Integer type);
+}

+ 88 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/service/impl/BaseSpecificVideoServiceImpl.java

@@ -0,0 +1,88 @@
+package com.huimv.guowei.admin.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huimv.guowei.admin.entity.BaseSpecificVideo;
+import com.huimv.guowei.admin.entity.SysCamera;
+import com.huimv.guowei.admin.entity.SysCameraBrand;
+import com.huimv.guowei.admin.entity.vo.CameraVo;
+import com.huimv.guowei.admin.mapper.BaseSpecificVideoMapper;
+import com.huimv.guowei.admin.mapper.SysCameraAreaMapper;
+import com.huimv.guowei.admin.mapper.SysCameraBrandMapper;
+import com.huimv.guowei.admin.mapper.SysCameraMapper;
+import com.huimv.guowei.admin.service.IBaseSpecificVideoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>
+ * 服务实现类
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-12-20
+ */
+@Service
+public class BaseSpecificVideoServiceImpl extends ServiceImpl<BaseSpecificVideoMapper, BaseSpecificVideo> implements IBaseSpecificVideoService {
+    @Autowired
+    private SysCameraMapper cameraMapper;
+
+    @Autowired
+    private SysCameraAreaMapper cameraAreaMapper;
+
+    @Autowired
+    private SysCameraBrandMapper cameraBrandMapper;
+
+    @Override
+    public List listSpecif(Integer farmId, Integer type) {
+        List<BaseSpecificVideo> list = this.list(new QueryWrapper<BaseSpecificVideo>().eq("farm_id", farmId).eq("type", type));
+
+        List list1 = new ArrayList();
+        for (BaseSpecificVideo baseSpecificVideo : list) {
+
+            SysCamera camera = cameraMapper.selectById(baseSpecificVideo.getVideoId());
+
+            list1.add(getCameraVo(camera));
+        }
+
+        return list1;
+    }
+
+
+    public CameraVo getCameraVo(SysCamera camera) {
+
+
+        String cameraAccount = camera.getAccount();
+        String cameraPassword = camera.getPassword();
+        String camerIp = camera.getCameraIp();
+        String cameraName = camera.getCameraName();
+        Integer areaId = camera.getAreaId();
+        String url = cameraAreaMapper.selectById(areaId).getPublicUrl();
+
+        String rtsp;
+        SysCameraBrand cameraBrand = cameraBrandMapper.selectById(camera.getBrandId());
+        Integer type = cameraBrand.getStreamType();
+        if (type == 0) {
+            rtsp = cameraBrand.getMainStream();
+        } else {
+            rtsp = cameraBrand.getAssistStream();
+        }
+
+
+        CameraVo cameraVo = new CameraVo();
+        cameraVo.setAreaId(areaId);
+        if (camera.getId() == 767){
+            cameraVo.setWsUrl("ws://" + url + "/camera_relay?tcpaddr=" + cameraAccount + "%3A" + cameraPassword + "%40" + camerIp);
+            cameraVo.setRtspUrl("rtsp://" + cameraAccount + ":" + cameraPassword + "@" + camerIp + "/cam/realmonitor?channel=2&subtype=0");
+        }else {
+            cameraVo.setWsUrl("ws://" + url + "/camera_relay?tcpaddr=" + cameraAccount + "%3A" + cameraPassword + "%40" + camerIp);
+            cameraVo.setRtspUrl("rtsp://" + cameraAccount + ":" + cameraPassword + "@" + camerIp + rtsp);
+        }
+
+        cameraVo.setCameraName(cameraName);
+        return cameraVo;
+    }
+}

+ 38 - 0
input/src/main/java/com/huimv/input/entity/DeviceFarmConfig.java

@@ -0,0 +1,38 @@
+package com.huimv.input.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author author
+ * @since 2023-09-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("device_farm_config")
+public class DeviceFarmConfig implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    private Integer startHour;
+
+    private Integer endHour;
+
+    private Integer farmId;
+    private String deviceId;
+
+
+}

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

@@ -0,0 +1,16 @@
+package com.huimv.input.mapper;
+
+import com.huimv.input.entity.DeviceFarmConfig;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2023-09-12
+ */
+public interface DeviceFarmConfigMapper extends BaseMapper<DeviceFarmConfig> {
+
+}

+ 28 - 0
input/src/main/java/com/huimv/input/server/DeviceDataHandler.java

@@ -0,0 +1,28 @@
+/*
+package com.huimv.input.server;
+
+import io.netty.channel.ChannelHandler;
+import io.netty.channel.ChannelHandlerContext;
+import io.netty.channel.SimpleChannelInboundHandler;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+@ChannelHandler.Sharable
+@Component
+@Slf4j
+public class DeviceDataHandler extends SimpleChannelInboundHandler<Object> {
+
+    @Override
+    protected void channelRead0(ChannelHandlerContext ctx, Object msg) throws Exception {
+        // 获取设备的IP地址
+        String deviceIpAddress = ctx.channel().remoteAddress().toString();
+        System.out.println(deviceIpAddress);
+        
+        // 在这里处理从设备接收的数据
+        // ...
+        
+        // 如果需要向设备发送数据,可以使用ctx.channel()来获取通道
+        // ctx.channel().writeAndFlush("要发送的数据");
+    }
+}
+*/

+ 73 - 16
input/src/main/java/com/huimv/input/server/EnvInputServerHandler.java

@@ -1,11 +1,13 @@
 package com.huimv.input.server;
 
+import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.huimv.input.entity.*;
 import com.huimv.input.mapper.*;
+import com.huimv.input.send.DeviceConfigSender;
 import com.huimv.input.utils.ModBusUtils;
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.Unpooled;
@@ -24,6 +26,7 @@ import java.time.LocalTime;
 import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import java.util.stream.Collectors;
 
 
 /**
@@ -57,6 +60,8 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
 
     @Autowired
     private BaseDuckInfoMapper baseDuckInfoMapper;
+    @Autowired
+    private DeviceFarmConfigMapper farmConfigMapper;
 
 
 
@@ -72,31 +77,83 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
     @Override
     public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
         ByteBuf byteBuf = (ByteBuf) msg;
-
         byte[] bytes = new byte[byteBuf.readableBytes()];
         byteBuf.readBytes(bytes);
         String str = ModBusUtils.bytes2HexString(bytes);
+        int length = str.length();
 
-        System.out.println("收到的数据:"+str);
-        if(str.length()>100){
+        System.out.println("收到的数据:"+str+"   "+ length);
+        if(length>100){
             saveWeight(str,bytes);
-        }else if (str.length()< 30 ){
-            ctx.writeAndFlush(Unpooled.copiedBuffer(hexStringToByteArray("550B02"+getDateX()+"0608070AAA")));
-        }
-        LocalTime currentTime = LocalTime.now();
+        }else if (length== 24 ){
+            String[] s = str.split(" ");
+            String hexId = s[5] + s[4] + s[3] + s[2] ;
+            System.out.println("十六进制id"+hexId);
+            int decId = Integer.parseInt(hexId, 16);
+            System.out.println("十进制id"+decId);
+            EnvDevice envDevice = envDeviceMapper.selectOne(new QueryWrapper<EnvDevice>().eq("device_code", decId));
+
+            if(ObjectUtil.isNotEmpty(envDevice)){
+                List<DeviceFarmConfig> farm_id = farmConfigMapper.selectList(new QueryWrapper<DeviceFarmConfig>().eq("farm_id", envDevice.getFarmId()));
+                if (ObjectUtil.isNotEmpty(farm_id)){
+                    String timestr = farm_id.stream()
+                            .map(config -> String.format("%02X%02X", config.getStartHour(), config.getEndHour()))
+                            .collect(Collectors.joining());
+                    ctx.writeAndFlush(Unpooled.copiedBuffer(hexStringToByteArray("550B02"+getDateX()+timestr+"AA")));
+                }
+                if (envDevice.getDeviceStatus() != 1){
+                    envDevice.setDeviceStatus(1);
+                    envDeviceMapper.updateById(envDevice);
+                }
+            }else {
+                List<DeviceFarmConfig> farm_id = farmConfigMapper.selectList(new QueryWrapper<DeviceFarmConfig>().eq("farm_id",24));
+                if (ObjectUtil.isNotEmpty(farm_id)){
+                    String timestr = farm_id.stream()
+                            .map(config -> String.format("%02X%02X", config.getStartHour(), config.getEndHour()))
+                            .collect(Collectors.joining());
+                    ctx.writeAndFlush(Unpooled.copiedBuffer(hexStringToByteArray("550B02"+getDateX()+timestr+"AA")));
+                }
+            }
+
+
+
+
+        }else if (length== 18 ) {
+            LocalTime currentTime = LocalTime.now();
+
+            // 定义一点和三点的时间
+            LocalTime startTime = LocalTime.of(0, 55);
+            LocalTime endTime = LocalTime.of(1, 5);
+//            LocalTime startTime = LocalTime.of(3, 0);
+//            LocalTime endTime = LocalTime.of(3, 0);
 
-        // 定义一点和三点的时间
-        LocalTime startTime = LocalTime.of(1, 0);
-        LocalTime endTime = LocalTime.of(3, 0);
+            // 检查当前时间是否在一点到三点之间
+            if (isTimeInRange(currentTime, startTime, endTime)) {
+
+                List<DeviceFarmConfig> farm_id = farmConfigMapper.selectList(new QueryWrapper<DeviceFarmConfig>().like("device_id",str ));
+                if (ObjectUtil.isNotEmpty(farm_id)) {
+                    String timestr = farm_id.stream()
+                            .map(config -> String.format("%02X%02X", config.getStartHour(), config.getEndHour()))
+                            .collect(Collectors.joining());
+
+                    for (int i = 0; i < 120; i++) {
+                        ctx.writeAndFlush(Unpooled.copiedBuffer(hexStringToByteArray("550B02" + getDateX() + timestr + "AA")));
+                        Thread.sleep(3000);
+                    }
+
+                }
+
+            }
 
-        // 检查当前时间是否在一点到三点之间
-        if (isTimeInRange(currentTime, startTime, endTime)) {
-            ctx.writeAndFlush(Unpooled.copiedBuffer(hexStringToByteArray("550B02"+getDateX()+"0608070AAA")));
         }
-        System.out.println("保存成功");
 
+        System.out.println("保存成功");
     }
 
+    public static void main(String[] args) {
+        System.out.println(String.format("%02X%02X", 8, 10));
+
+    }
     private  boolean isTimeInRange(LocalTime currentTime, LocalTime startTime, LocalTime endTime) {
         return !currentTime.isBefore(startTime) && !currentTime.isAfter(endTime);
     }
@@ -161,7 +218,7 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
         rawData.setDeviceCode(decId+"");
         rawData.setData(str);
         rawData.setCreateTime(new Date(l));
-        rawData.setLastWeight(new BigDecimal(Integer.parseInt(s[sLength -2]+s[sLength-3], 16)));
+        rawData.setLastWeight(new BigDecimal(Integer.parseInt(s[sLength -8]+s[sLength-9], 16)));
         rawData.setBattery(batStr);
         rawDataMapper.insert(rawData);
         //获取设备
@@ -194,7 +251,7 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
             if (flag){
                 //当时时间
 //                Date thenTime = new Date(l - ((60-i)*10000));
-                Date thenTime = new Date(l - ((60-i)*1000));
+                Date thenTime = new Date(l - ((60-i)*10000));
                 //
                 String str2 = "";
                 BigDecimal weight2 ;

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

@@ -0,0 +1,16 @@
+package com.huimv.input.service;
+
+import com.huimv.input.entity.DeviceFarmConfig;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author author
+ * @since 2023-09-12
+ */
+public interface IDeviceFarmConfigService extends IService<DeviceFarmConfig> {
+
+}

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

@@ -0,0 +1,20 @@
+package com.huimv.input.service.impl;
+
+import com.huimv.input.entity.DeviceFarmConfig;
+import com.huimv.input.mapper.DeviceFarmConfigMapper;
+import com.huimv.input.service.IDeviceFarmConfigService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2023-09-12
+ */
+@Service
+public class DeviceFarmConfigServiceImpl extends ServiceImpl<DeviceFarmConfigMapper, DeviceFarmConfig> implements IDeviceFarmConfigService {
+
+}

+ 13 - 0
input/src/main/resources/com/huimv/input/mapper/DeviceFarmConfigMapper.xml

@@ -0,0 +1,13 @@
+<?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.input.mapper.DeviceFarmConfigMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.huimv.input.entity.DeviceFarmConfig">
+        <id column="id" property="id" />
+        <result column="start_hour" property="startHour" />
+        <result column="end_hour" property="endHour" />
+        <result column="farm_id" property="farmId" />
+    </resultMap>
+
+</mapper>