wisdomisite-java/src/main/java/com/zhgd/netty/udp/UDPServerHandler.java

92 lines
4.0 KiB
Java
Raw Normal View History

2024-01-10 11:26:22 +08:00
package com.zhgd.netty.udp;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.IdUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
2024-01-10 17:48:38 +08:00
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
2024-01-10 11:26:22 +08:00
import com.zhgd.xmgl.modules.location.entity.LocationData;
import com.zhgd.xmgl.modules.location.entity.LocationTunnel;
import com.zhgd.xmgl.modules.location.mapper.LocationDataMapper;
import com.zhgd.xmgl.modules.location.mapper.LocationTunnelMapper;
import com.zhgd.xmgl.modules.poisonous.mapper.PoisonousGasDevMapper;
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
import com.zhgd.xmgl.modules.worker.mapper.WorkerInfoMapper;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;
import io.netty.channel.socket.DatagramPacket;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
2024-01-10 17:48:38 +08:00
import org.springframework.stereotype.Component;
2024-01-10 11:26:22 +08:00
import java.util.List;
@Slf4j
2024-01-10 17:48:38 +08:00
@Component
2024-01-10 11:26:22 +08:00
public class UDPServerHandler extends SimpleChannelInboundHandler<DatagramPacket> {
@Autowired
private PoisonousGasDevMapper poisonousGasDevMapper;
@Autowired
private LocationDataMapper locationDataMapper;
@Autowired
private LocationTunnelMapper locationTunnelMapper;
@Autowired
private WorkerInfoMapper workerInfoMapper;
@Override
protected void channelRead0(ChannelHandlerContext ctx, DatagramPacket msg)
throws Exception {
ByteBuf buf = msg.content();
int len = buf.readableBytes();
byte[] data = new byte[len];
buf.readBytes(data);
String receive = new String(data, "UTF-8");
log.info("udp接收{}", receive);
//LCID7TT8lc99:display: 69,05F9ED,26285,2024-01-09 17:19:22.744,1,-10.27,0.00,0.00
String val = StringUtils.substring(receive, "LCID7TT8lc99:display: ".length());
String[] valArr = StringUtils.split(val, ",");
String cardno = valArr[1];
String inlX = valArr[5];
String time = valArr[3];
List<WorkerInfo> workerInfos = workerInfoMapper.selectList(new LambdaQueryWrapper<WorkerInfo>()
.eq(WorkerInfo::getLocationCardno, cardno));
if (CollUtil.isNotEmpty(workerInfos)) {
String projectSn = workerInfos.get(0).getProjectSn();
List<LocationTunnel> locationTunnels = locationTunnelMapper.selectList(new LambdaQueryWrapper<LocationTunnel>()
.eq(LocationTunnel::getProjectSn, projectSn));
if (CollUtil.isNotEmpty(locationTunnels)) {
2024-01-10 17:48:38 +08:00
//清除以前标签
locationDataMapper.update(null, new LambdaUpdateWrapper<LocationData>()
.set(LocationData::getRealtimeId, null)
.eq(LocationData::getCardno, cardno)
.isNotNull(LocationData::getRealtimeId));
2024-01-10 11:26:22 +08:00
LocationTunnel locationTunnel = locationTunnels.get(0);
2024-01-10 17:48:38 +08:00
Long realtimeId = locationTunnel.getRealtimeId();
if (realtimeId == null) {
realtimeId = IdUtil.getSnowflake().nextId();
}
2024-01-10 11:26:22 +08:00
LocationData locationData = new LocationData();
locationData.setCardType("1510");
locationData.setCardno(cardno);
locationData.setPersonName(workerInfos.get(0).getWorkerName());
//算出洞口的距离
locationData.setInlX(Double.valueOf(inlX) + 271);
locationData.setAlarm(0);
locationData.setProjectSn(projectSn);
2024-01-10 17:48:38 +08:00
locationData.setRealtimeId(realtimeId);
2024-01-10 11:26:22 +08:00
locationData.setTunnelId(locationTunnel.getTunnelId());
locationDataMapper.insert(locationData);
2024-01-10 17:48:38 +08:00
locationTunnel.setRealtimeId(realtimeId);
2024-01-10 11:26:22 +08:00
locationTunnelMapper.updateById(locationTunnel);
}
}
}
}