udp
This commit is contained in:
parent
4c3c8d2179
commit
d2eaab456c
47
src/main/java/com/zhgd/netty/udp/UDPServerApp.java
Normal file
47
src/main/java/com/zhgd/netty/udp/UDPServerApp.java
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
94
src/main/java/com/zhgd/netty/udp/UDPServerHandler.java
Normal file
94
src/main/java/com/zhgd/netty/udp/UDPServerHandler.java
Normal 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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -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;
|
||||
/**
|
||||
* 标签距离基站米数
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user