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)
|
@TableId(type = IdType.ASSIGN_ID)
|
||||||
@ApiModelProperty(value = "主键id")
|
@ApiModelProperty(value = "主键id")
|
||||||
private Long id;
|
private Long id;
|
||||||
/**
|
|
||||||
* 人员ID 唯一
|
|
||||||
*/
|
|
||||||
@Excel(name = "人员ID 唯一", width = 15)
|
|
||||||
@ApiModelProperty(value = "人员ID 唯一")
|
|
||||||
private String personId;
|
|
||||||
/**
|
/**
|
||||||
* 标签类型,1510人员,1520车辆
|
* 标签类型,1510人员,1520车辆
|
||||||
*/
|
*/
|
||||||
@ -56,66 +50,6 @@ public class LocationData implements Serializable {
|
|||||||
@Excel(name = "人员姓名", width = 15)
|
@Excel(name = "人员姓名", width = 15)
|
||||||
@ApiModelProperty(value = "人员姓名")
|
@ApiModelProperty(value = "人员姓名")
|
||||||
private String personName;
|
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
|
* 区域ID
|
||||||
*/
|
*/
|
||||||
@ -165,10 +99,10 @@ public class LocationData implements Serializable {
|
|||||||
@ApiModelProperty(value = "标签Y位置(单位像素)")
|
@ApiModelProperty(value = "标签Y位置(单位像素)")
|
||||||
private Double pY;
|
private Double pY;
|
||||||
/**
|
/**
|
||||||
* 标签距离洞口(米)
|
* 标签距离洞口(米)用这个
|
||||||
*/
|
*/
|
||||||
@Excel(name = "标签距离洞口(米)", width = 15)
|
@Excel(name = "标签距离洞口(米)用这个", width = 15)
|
||||||
@ApiModelProperty(value = "标签距离洞口(米)")
|
@ApiModelProperty(value = "标签距离洞口(米)用这个")
|
||||||
private Double inlX;
|
private Double inlX;
|
||||||
/**
|
/**
|
||||||
* 标签距离基站米数
|
* 标签距离基站米数
|
||||||
|
|||||||
@ -452,7 +452,7 @@
|
|||||||
select urgent_level enumType,count(*) count from quality_inspection_record
|
select urgent_level enumType,count(*) count from quality_inspection_record
|
||||||
where 1=1 and project_sn=#{projectSn}
|
where 1=1 and project_sn=#{projectSn}
|
||||||
<if test="type == '1'.toString()">
|
<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>
|
||||||
<if test="type == '2'.toString()">
|
<if test="type == '2'.toString()">
|
||||||
and create_time >= date_sub(CURRENT_DATE,interval 29 day)
|
and create_time >= date_sub(CURRENT_DATE,interval 29 day)
|
||||||
|
|||||||
@ -106,3 +106,5 @@ jld_push_url=
|
|||||||
bridgeProduceQrCodeUrl=http://192.168.34.173:8082/#/
|
bridgeProduceQrCodeUrl=http://192.168.34.173:8082/#/
|
||||||
#携稳url,最后带斜杠
|
#携稳url,最后带斜杠
|
||||||
xiwon.url=http://openapi.xiwon588.com/
|
xiwon.url=http://openapi.xiwon588.com/
|
||||||
|
#udp端口
|
||||||
|
udp.port=51236
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user