|
@@ -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 ;
|