From d2eaab456c22f78e90c8671b24d59c47b20aadf2 Mon Sep 17 00:00:00 2001 From: guo Date: Wed, 10 Jan 2024 11:26:22 +0800 Subject: [PATCH] udp --- .../java/com/zhgd/netty/udp/UDPServerApp.java | 47 ++++++++++ .../com/zhgd/netty/udp/UDPServerHandler.java | 94 +++++++++++++++++++ .../modules/location/entity/LocationData.java | 72 +------------- .../xml/QualityInspectionRecordMapper.xml | 2 +- .../application-gsx-other-env-show.properties | 2 + 5 files changed, 147 insertions(+), 70 deletions(-) create mode 100644 src/main/java/com/zhgd/netty/udp/UDPServerApp.java create mode 100644 src/main/java/com/zhgd/netty/udp/UDPServerHandler.java diff --git a/src/main/java/com/zhgd/netty/udp/UDPServerApp.java b/src/main/java/com/zhgd/netty/udp/UDPServerApp.java new file mode 100644 index 000000000..4dca34454 --- /dev/null +++ b/src/main/java/com/zhgd/netty/udp/UDPServerApp.java @@ -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() { + + @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(); + } + } +} diff --git a/src/main/java/com/zhgd/netty/udp/UDPServerHandler.java b/src/main/java/com/zhgd/netty/udp/UDPServerHandler.java new file mode 100644 index 000000000..6a5e3675b --- /dev/null +++ b/src/main/java/com/zhgd/netty/udp/UDPServerHandler.java @@ -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 { + @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 workerInfos = workerInfoMapper.selectList(new LambdaQueryWrapper() + .eq(WorkerInfo::getLocationCardno, cardno)); + if (CollUtil.isNotEmpty(workerInfos)) { + String projectSn = workerInfos.get(0).getProjectSn(); + List locationTunnels = locationTunnelMapper.selectList(new LambdaQueryWrapper() + .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); + } + } + + } + + +} diff --git a/src/main/java/com/zhgd/xmgl/modules/location/entity/LocationData.java b/src/main/java/com/zhgd/xmgl/modules/location/entity/LocationData.java index 686353d6f..afac56d43 100644 --- a/src/main/java/com/zhgd/xmgl/modules/location/entity/LocationData.java +++ b/src/main/java/com/zhgd/xmgl/modules/location/entity/LocationData.java @@ -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; /** * 标签距离基站米数 diff --git a/src/main/java/com/zhgd/xmgl/modules/quality/mapper/xml/QualityInspectionRecordMapper.xml b/src/main/java/com/zhgd/xmgl/modules/quality/mapper/xml/QualityInspectionRecordMapper.xml index 8d3b75051..c239ee2e3 100644 --- a/src/main/java/com/zhgd/xmgl/modules/quality/mapper/xml/QualityInspectionRecordMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/quality/mapper/xml/QualityInspectionRecordMapper.xml @@ -452,7 +452,7 @@ select urgent_level enumType,count(*) count from quality_inspection_record where 1=1 and project_sn=#{projectSn} - and create_time >= date_sub(CURRENT_DATE,interval 0 day) + and create_time >= date_sub(CURRENT_DATE,interval 6 day) and create_time >= date_sub(CURRENT_DATE,interval 29 day) diff --git a/src/main/resources/application-gsx-other-env-show.properties b/src/main/resources/application-gsx-other-env-show.properties index 3050834de..e4b84f43f 100644 --- a/src/main/resources/application-gsx-other-env-show.properties +++ b/src/main/resources/application-gsx-other-env-show.properties @@ -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