From 23a72e94e6c21ba715986ebf5b4413619b9ea51b Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: Thu, 14 Mar 2024 18:04:28 +0800 Subject: [PATCH] =?UTF-8?q?1078-=E4=BC=98=E5=8C=96=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E5=B1=95=E7=A4=BA=E6=95=88=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iot/vmp/jt1078/bean/JTDevice.java | 84 ++++++++++++++++--- .../vmp/jt1078/codec/decode/Jt808Decoder.java | 4 +- .../jt1078/codec/encode/Jt808EncoderCmd.java | 4 +- .../vmp/jt1078/codec/netty/Jt808Handler.java | 10 +++ .../iot/vmp/jt1078/codec/netty/TcpServer.java | 2 +- .../iot/vmp/jt1078/dao/JTDeviceMapper.java | 22 +++-- .../genersoft/iot/vmp/jt1078/proc/Header.java | 11 +-- .../iot/vmp/jt1078/proc/request/J0001.java | 2 +- .../iot/vmp/jt1078/proc/request/J0003.java | 58 +++++++++++++ .../iot/vmp/jt1078/proc/request/J0100.java | 31 +++++-- .../iot/vmp/jt1078/proc/request/J1205.java | 2 +- .../iot/vmp/jt1078/proc/request/Re.java | 2 +- .../vmp/jt1078/service/Ijt1078Service.java | 2 +- .../service/impl/jt1078ServiceImpl.java | 6 +- .../iot/vmp/utils/CivilCodeUtil.java | 5 +- web_src/src/components/JTDeviceList.vue | 18 ++-- .../src/components/dialog/jtDeviceEdit.vue | 4 +- 数据库/JT1078-2.7.0/初始化-mysql-2.7.0.sql | 7 +- .../初始化-postgresql-kingbase-2.7.0.sql | 7 +- 数据库/JT1078-2.7.0/更新-mysql-2.7.0.sql | 7 +- .../更新-postgresql-kingbase-2.7.0.sql | 7 +- 21 files changed, 235 insertions(+), 60 deletions(-) create mode 100644 src/main/java/com/genersoft/iot/vmp/jt1078/proc/request/J0003.java diff --git a/src/main/java/com/genersoft/iot/vmp/jt1078/bean/JTDevice.java b/src/main/java/com/genersoft/iot/vmp/jt1078/bean/JTDevice.java index 925be278d..612da2ee1 100644 --- a/src/main/java/com/genersoft/iot/vmp/jt1078/bean/JTDevice.java +++ b/src/main/java/com/genersoft/iot/vmp/jt1078/bean/JTDevice.java @@ -14,13 +14,25 @@ public class JTDevice { * 省域ID */ @Schema(description = "省域ID") - private int provinceId; + private String provinceId; + + /** + * 省域文字描述 + */ + @Schema(description = "省域文字描述") + private String provinceText; /** * 市县域ID */ @Schema(description = "市县域ID") - private int cityId; + private String cityId; + + /** + * 市县域文字描述 + */ + @Schema(description = "市县域文字描述") + private String cityText; /** * 制造商ID @@ -38,6 +50,12 @@ public class JTDevice { * 终端ID */ @Schema(description = "终端ID") + private String terminalId; + + /** + * 设备ID + */ + @Schema(description = "设备ID") private String deviceId; /** @@ -80,22 +98,46 @@ public class JTDevice { @Schema(description = "状态") private boolean status; - public int getProvinceId() { + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getProvinceId() { return provinceId; } - public void setProvinceId(int provinceId) { + public void setProvinceId(String provinceId) { this.provinceId = provinceId; } - public int getCityId() { + public String getProvinceText() { + return provinceText; + } + + public void setProvinceText(String provinceText) { + this.provinceText = provinceText; + } + + public String getCityId() { return cityId; } - public void setCityId(int cityId) { + public void setCityId(String cityId) { this.cityId = cityId; } + public String getCityText() { + return cityText; + } + + public void setCityText(String cityText) { + this.cityText = cityText; + } + public String getMakerId() { return makerId; } @@ -112,6 +154,14 @@ public class JTDevice { this.deviceModel = deviceModel; } + public String getTerminalId() { + return terminalId; + } + + public void setTerminalId(String terminalId) { + this.terminalId = terminalId; + } + public String getDeviceId() { return deviceId; } @@ -184,11 +234,21 @@ public class JTDevice { this.status = status; } - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; + @Override + public String toString() { + return "JTDevice{" + + ", 省域ID='" + provinceId + '\'' + + ", 省域文字描述='" + provinceText + '\'' + + ", 市县域ID='" + cityId + '\'' + + ", 市县域文字描述='" + cityText + '\'' + + ", 制造商ID='" + makerId + '\'' + + ", 终端型号='" + deviceModel + '\'' + + ", 终端ID='" + terminalId + '\'' + + ", 设备ID='" + deviceId + '\'' + + ", 车牌颜色=" + plateColor + + ", 车牌='" + plateNo + '\'' + + ", 鉴权码='" + authenticationCode + '\'' + + ", status=" + status + + '}'; } } diff --git a/src/main/java/com/genersoft/iot/vmp/jt1078/codec/decode/Jt808Decoder.java b/src/main/java/com/genersoft/iot/vmp/jt1078/codec/decode/Jt808Decoder.java index 5512edaa0..f329eab33 100644 --- a/src/main/java/com/genersoft/iot/vmp/jt1078/codec/decode/Jt808Decoder.java +++ b/src/main/java/com/genersoft/iot/vmp/jt1078/codec/decode/Jt808Decoder.java @@ -50,9 +50,9 @@ public class Jt808Decoder extends ByteToMessageDecoder { if (header.is2019Version()) { header.setVersion(buf.readUnsignedByte()); String devId = ByteBufUtil.hexDump(buf.readSlice(10)); - header.setDevId(devId.replaceFirst("^0*", "")); + header.setTerminalId(devId.replaceFirst("^0*", "")); } else { - header.setDevId(ByteBufUtil.hexDump(buf.readSlice(6)).replaceFirst("^0*", "")); + header.setTerminalId(ByteBufUtil.hexDump(buf.readSlice(6)).replaceFirst("^0*", "")); } header.setSn(buf.readUnsignedShort()); diff --git a/src/main/java/com/genersoft/iot/vmp/jt1078/codec/encode/Jt808EncoderCmd.java b/src/main/java/com/genersoft/iot/vmp/jt1078/codec/encode/Jt808EncoderCmd.java index 0e9e11f6f..b22e00cea 100644 --- a/src/main/java/com/genersoft/iot/vmp/jt1078/codec/encode/Jt808EncoderCmd.java +++ b/src/main/java/com/genersoft/iot/vmp/jt1078/codec/encode/Jt808EncoderCmd.java @@ -65,12 +65,12 @@ public class Jt808EncoderCmd extends MessageToByteEncoder { byteBuf.writeByte(header.getVersion()); // 终端手机号 - byteBuf.writeBytes(ByteBufUtil.decodeHexDump(Bin.strHexPaddingLeft(header.getDevId(), 20))); + byteBuf.writeBytes(ByteBufUtil.decodeHexDump(Bin.strHexPaddingLeft(header.getTerminalId(), 20))); } else { // 消息体属性 byteBuf.writeShort(encode.readableBytes()); - byteBuf.writeBytes(ByteBufUtil.decodeHexDump(Bin.strHexPaddingLeft(header.getDevId(), 12))); + byteBuf.writeBytes(ByteBufUtil.decodeHexDump(Bin.strHexPaddingLeft(header.getTerminalId(), 12))); } // 消息体流水号 diff --git a/src/main/java/com/genersoft/iot/vmp/jt1078/codec/netty/Jt808Handler.java b/src/main/java/com/genersoft/iot/vmp/jt1078/codec/netty/Jt808Handler.java index fd5030272..aa9ae00c6 100644 --- a/src/main/java/com/genersoft/iot/vmp/jt1078/codec/netty/Jt808Handler.java +++ b/src/main/java/com/genersoft/iot/vmp/jt1078/codec/netty/Jt808Handler.java @@ -10,6 +10,7 @@ import io.netty.handler.timeout.IdleState; import io.netty.handler.timeout.IdleStateEvent; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.context.ApplicationEventPublisher; /** * @author QingtaiJiang @@ -20,6 +21,13 @@ public class Jt808Handler extends ChannelInboundHandlerAdapter { private final static Logger log = LoggerFactory.getLogger(Jt808Handler.class); + private ApplicationEventPublisher applicationEventPublisher = null; + + + public Jt808Handler(ApplicationEventPublisher applicationEventPublisher) { + this.applicationEventPublisher = applicationEventPublisher; + } + @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { if (msg instanceof Rs) { @@ -42,6 +50,8 @@ public class Jt808Handler extends ChannelInboundHandlerAdapter { Session session = ctx.channel().attr(Session.KEY).get(); log.info("< Tcp disconnect {}", session); ctx.close(); + + applicationEventPublisher.publishEvent(); } @Override diff --git a/src/main/java/com/genersoft/iot/vmp/jt1078/codec/netty/TcpServer.java b/src/main/java/com/genersoft/iot/vmp/jt1078/codec/netty/TcpServer.java index 52ba75afc..ccbcc134a 100644 --- a/src/main/java/com/genersoft/iot/vmp/jt1078/codec/netty/TcpServer.java +++ b/src/main/java/com/genersoft/iot/vmp/jt1078/codec/netty/TcpServer.java @@ -69,7 +69,7 @@ public class TcpServer { .addLast(new Jt808Decoder(applicationEventPublisher, service)) .addLast(new Jt808Encoder()) .addLast(new Jt808EncoderCmd()) - .addLast(new Jt808Handler()); + .addLast(new Jt808Handler(applicationEventPublisher)); } }); ChannelFuture channelFuture = bootstrap.bind(port).sync(); diff --git a/src/main/java/com/genersoft/iot/vmp/jt1078/dao/JTDeviceMapper.java b/src/main/java/com/genersoft/iot/vmp/jt1078/dao/JTDeviceMapper.java index ccb42b31e..f9932f3ef 100644 --- a/src/main/java/com/genersoft/iot/vmp/jt1078/dao/JTDeviceMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/jt1078/dao/JTDeviceMapper.java @@ -8,23 +8,26 @@ import java.util.List; @Mapper public interface JTDeviceMapper { - @Select("SELECT * FROM wvp_device de where device_id=${devId}") - JTDevice getDevice(@Param("devId") String devId); + @Select("SELECT * FROM wvp_jt_device where terminal_id=#{terminalId}") + JTDevice getDevice(@Param("terminalId") String terminalId); @Update(value = {" "}) void updateDevice(JTDevice device); @Select(value = {"