This commit is contained in:
guo 2024-01-10 11:26:22 +08:00
parent 4c3c8d2179
commit d2eaab456c
5 changed files with 147 additions and 70 deletions

View File

@ -0,0 +1,47 @@
package com.zhgd.netty.udp;
import io.netty.bootstrap.Bootstrap;
import io.netty.channel.Channel;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelOption;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.nio.NioDatagramChannel;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
@Component
@Slf4j
public class UDPServerApp {
@Value("${udp.port:}")
private Integer port;
@PostConstruct
public void startUdpApp() {
if (port == null) {
return;
}
log.info("启动udp……");
Bootstrap bootstrap = new Bootstrap();
EventLoopGroup workGroup = new NioEventLoopGroup();
bootstrap.group(workGroup).channel(NioDatagramChannel.class)
.option(ChannelOption.SO_BROADCAST, true)
.handler(new ChannelInitializer<NioDatagramChannel>() {
@Override
protected void initChannel(NioDatagramChannel ch) throws Exception {
ch.pipeline().addLast(new UDPServerHandler());
}
});
try {
Channel channel = bootstrap.bind("127.0.0.1", port).sync().channel();
//channel.closeFuture().sync().await();
} catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@ -0,0 +1,94 @@
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;
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;
import java.util.List;
@Slf4j
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)) {
long l = IdUtil.getSnowflake().nextId();
LocationTunnel locationTunnel = locationTunnels.get(0);
LocationData locationData = new LocationData();
locationData.setCardType("1510");
locationData.setCardno(cardno);
locationData.setPersonName(workerInfos.get(0).getWorkerName());
//locationData.setRegionId();
//locationData.setRegionCode();
//locationData.setRegionName();
//locationData.setPileNo();
//locationData.setNX();
//locationData.setNY();
//locationData.setPX();
//locationData.setPY();
//算出洞口的距离
locationData.setInlX(Double.valueOf(inlX) + 271);
//locationData.setMasterX();
//locationData.setRingNum();
//locationData.setLongitude();
//locationData.setLatitude();
//locationData.setAltitude();
locationData.setAlarm(0);
//locationData.setVolume();
//locationData.setHeartRate();
locationData.setProjectSn(projectSn);
locationData.setRealtimeId(l);
locationData.setTunnelId(locationTunnel.getTunnelId());
locationDataMapper.insert(locationData);
locationTunnel.setRealtimeId(l);
locationTunnelMapper.updateById(locationTunnel);
}
}
}
}

View File

@ -32,12 +32,6 @@ public class LocationData implements Serializable {
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键id")
private Long id;
/**
* 人员ID 唯一
*/
@Excel(name = "人员ID 唯一", width = 15)
@ApiModelProperty(value = "人员ID 唯一")
private String personId;
/**
* 标签类型1510人员1520车辆
*/
@ -56,66 +50,6 @@ public class LocationData implements Serializable {
@Excel(name = "人员姓名", width = 15)
@ApiModelProperty(value = "人员姓名")
private String personName;
/**
* 企业ID
*/
@Excel(name = "企业ID", width = 15)
@ApiModelProperty(value = "企业ID")
private String companyId;
/**
* 班组企业名称
*/
@Excel(name = "班组企业名称", width = 15)
@ApiModelProperty(value = "班组企业名称")
private String companyName;
/**
* 班组ID
*/
@Excel(name = "班组ID", width = 15)
@ApiModelProperty(value = "班组ID")
private String teamId;
/**
* 班组名称
*/
@Excel(name = "班组名称 ", width = 15)
@ApiModelProperty(value = "班组名称 ")
private String teamName;
/**
* 部门名称
*/
@Excel(name = "部门名称", width = 15)
@ApiModelProperty(value = "部门名称")
private String department;
/**
* 性别
*/
@Excel(name = "性别", width = 15)
@ApiModelProperty(value = "性别")
private String gender;
/**
* 电话号码
*/
@Excel(name = "电话号码", width = 15)
@ApiModelProperty(value = "电话号码")
private String phone;
/**
* 身份证号码
*/
@Excel(name = "身份证号码", width = 15)
@ApiModelProperty(value = "身份证号码")
private String idNumber;
/**
* 设备SN
*/
@Excel(name = "设备SN", width = 15)
@ApiModelProperty(value = "设备SN")
private String deviceSn;
/**
* 设备名称
*/
@Excel(name = "设备名称", width = 15)
@ApiModelProperty(value = "设备名称")
private String deviceName;
/**
* 区域ID
*/
@ -165,10 +99,10 @@ public class LocationData implements Serializable {
@ApiModelProperty(value = "标签Y位置单位像素")
private Double pY;
/**
* 标签距离洞口
* 标签距离洞口用这个
*/
@Excel(name = "标签距离洞口(米)", width = 15)
@ApiModelProperty(value = "标签距离洞口(米)")
@Excel(name = "标签距离洞口(米)用这个", width = 15)
@ApiModelProperty(value = "标签距离洞口(米)用这个")
private Double inlX;
/**
* 标签距离基站米数

View File

@ -452,7 +452,7 @@
select urgent_level enumType,count(*) count from quality_inspection_record
where 1=1 and project_sn=#{projectSn}
<if test="type == '1'.toString()">
and create_time >= date_sub(CURRENT_DATE,interval 0 day)
and create_time >= date_sub(CURRENT_DATE,interval 6 day)
</if>
<if test="type == '2'.toString()">
and create_time >= date_sub(CURRENT_DATE,interval 29 day)

View File

@ -106,3 +106,5 @@ jld_push_url=
bridgeProduceQrCodeUrl=http://192.168.34.173:8082/#/
#携稳url最后带斜杠
xiwon.url=http://openapi.xiwon588.com/
#udp端口
udp.port=51236