From 4c2ec4d0a2f2adbc208d7a5db8e1a5e3d16d6782 Mon Sep 17 00:00:00 2001 From: weidong Date: Fri, 29 Dec 2023 14:04:59 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E4=BF=AE=E6=94=B9=E5=8F=91=E9=80=81G?= =?UTF-8?q?NSS=E6=8C=87=E4=BB=A4=E4=BF=9D=E5=AD=98=E6=97=B6=E7=9A=84bug=20?= =?UTF-8?q?2=E3=80=81=E5=A2=9E=E5=8A=A0=E6=B6=88=E6=81=AF=E5=8F=91?= =?UTF-8?q?=E9=80=81=E6=96=B9=E5=90=91=203=E3=80=81=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=98=AF=E5=90=A6=E8=87=AA=E5=8A=A8=E8=A1=A5=E4=BC=A0=E7=9A=84?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/imdroid/secapi/dto/GnssGroupCalc.java | 1 + .../java/com/imdroid/secapi/dto/GnssMsg.java | 1 + .../sideslope/server/tcp/RtcmTcpHandler.java | 13 ++++++---- .../service/DataPersistServiceImpl.java | 1 + .../imdroid/sideslope/web/ApiController.java | 3 ++- .../beidou/controller/APIController.java | 24 ++++++++++++------- .../beidou/controller/CmdLineController.java | 4 ++++ sec-beidou/src/main/resources/db/schema.sql | 2 ++ .../templates/page/gnss_group_cfg.html | 10 ++++++++ .../resources/templates/page/gnss_msg.html | 9 +++++++ .../templates/page/gnss_msg_trx.html | 6 ++--- .../page/table/gnss_add_group_calc.html | 13 ++++++++-- 12 files changed, 69 insertions(+), 18 deletions(-) diff --git a/sec-api/src/main/java/com/imdroid/secapi/dto/GnssGroupCalc.java b/sec-api/src/main/java/com/imdroid/secapi/dto/GnssGroupCalc.java index a8f78907..899f3a67 100644 --- a/sec-api/src/main/java/com/imdroid/secapi/dto/GnssGroupCalc.java +++ b/sec-api/src/main/java/com/imdroid/secapi/dto/GnssGroupCalc.java @@ -14,4 +14,5 @@ public class GnssGroupCalc { Integer filter_min_hour; Float auto_threshold; Integer device_num; + Boolean auto_upload; } diff --git a/sec-api/src/main/java/com/imdroid/secapi/dto/GnssMsg.java b/sec-api/src/main/java/com/imdroid/secapi/dto/GnssMsg.java index d72e8d50..e30f66cc 100644 --- a/sec-api/src/main/java/com/imdroid/secapi/dto/GnssMsg.java +++ b/sec-api/src/main/java/com/imdroid/secapi/dto/GnssMsg.java @@ -22,5 +22,6 @@ public class GnssMsg { String deviceid; Integer msgtype; Integer msglen; + Boolean tx; String content;//只记录部分 } diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/server/tcp/RtcmTcpHandler.java b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/server/tcp/RtcmTcpHandler.java index e8f3ff67..acf5306a 100644 --- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/server/tcp/RtcmTcpHandler.java +++ b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/server/tcp/RtcmTcpHandler.java @@ -6,7 +6,6 @@ import com.imdroid.sideslope.executor.MessageParser; import com.imdroid.sideslope.message.BaseMessage; import com.imdroid.sideslope.server.OnlineChannels; import io.netty.buffer.ByteBuf; -import io.netty.channel.Channel; import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; @@ -25,14 +24,20 @@ public class RtcmTcpHandler extends SimpleChannelInboundHandler { src.getBytes(0, data); logger.debug("receive message:" + DataTypeUtil.getHexString(data)); } - BaseMessage message = MessageParser.instance.parse(src); - OnlineChannels.INSTANCE.updateConfigChannel(message.getId(), ctx.channel(), null); - BizExecutors.execute(message); + try { + BaseMessage message = MessageParser.instance.parse(src); + OnlineChannels.INSTANCE.updateConfigChannel(message.getId(), ctx.channel(), null); + BizExecutors.execute(message); + } + catch (Exception e){ + + } } @Override public void channelInactive(ChannelHandlerContext ctx) throws Exception { + logger.info("channel inactive"); } @Override diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/DataPersistServiceImpl.java b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/DataPersistServiceImpl.java index 4e68b593..4a4d1f37 100644 --- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/DataPersistServiceImpl.java +++ b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/DataPersistServiceImpl.java @@ -115,6 +115,7 @@ public class DataPersistServiceImpl implements DataPersistService { gnssMsg.setDeviceid(message.getId()); gnssMsg.setMsgtype(message.getHeader()); gnssMsg.setMsglen(message.getLen()); + gnssMsg.setTx(false); msgMapper.insert(gnssMsg); } diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/web/ApiController.java b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/web/ApiController.java index fdbecb98..9c5ccff0 100644 --- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/web/ApiController.java +++ b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/web/ApiController.java @@ -31,7 +31,8 @@ public class ApiController { HttpResp resp = new HttpResp(); DeviceChannel deviceChannel = OnlineChannels.INSTANCE.getConfigChannel(deviceId); if(deviceChannel == null) deviceChannel = OnlineChannels.INSTANCE.getDataChannel(deviceId); - if(deviceChannel!=null && deviceChannel.isOnline()){ + //if(deviceChannel!=null && deviceChannel.isOnline()){ + if(deviceChannel!=null){ status.put("status", "Online"); // send command ByteBuf buf = Unpooled.buffer(); diff --git a/sec-beidou/src/main/java/com/imdroid/beidou/controller/APIController.java b/sec-beidou/src/main/java/com/imdroid/beidou/controller/APIController.java index 5b9c42ce..03b73691 100644 --- a/sec-beidou/src/main/java/com/imdroid/beidou/controller/APIController.java +++ b/sec-beidou/src/main/java/com/imdroid/beidou/controller/APIController.java @@ -21,6 +21,8 @@ public class APIController extends BasicController{ @Autowired GnssGroupMapper groupMapper; @Autowired + GnssGroupCalcMapper groupCalcMapper; + @Autowired GnssMsgMapper msgMapper; @Autowired GnssStatusMapper gnssStatusMapper; @@ -43,7 +45,7 @@ public class APIController extends BasicController{ } // 保存 - saveMsg(deviceId, tenantId,msgType, configAck); + saveMsg(deviceId, tenantId,msgType, configAck, false); // 命令行显示 String rxInfo = "RX "+ dateFormat.format(System.currentTimeMillis())+ @@ -65,9 +67,14 @@ public class APIController extends BasicController{ @PostMapping(value = "/api/device_online") @ResponseBody public String onLine(String deviceId, Integer tenantId, LocalDateTime lastOnlineTime) { - onDeviceActive(deviceId,tenantId); + // 检查是否自动补传 + GnssDevice device = deviceMapper.queryByDeviceId(deviceId); + if(device == null) return null; + GnssGroupCalc groupCalc = groupCalcMapper.selectById(device.getCalc_group_id()); + if(groupCalc==null || groupCalc.getAuto_upload()) return null; + // 检查上次是否离线,如果是则启动补传 LocalDateTime now = LocalDateTime.now(); Short len = 15; @@ -86,7 +93,7 @@ public class APIController extends BasicController{ + HexUtil.Byte2HexString((byte) (now.getMinute())); rtcmClient.config(deviceId, uploadCmd); // 保存 - saveMsg(deviceId, tenantId,0xD31A, uploadCmd); + saveMsg(deviceId, tenantId,0xD31A, uploadCmd, true); return null; } @@ -105,7 +112,7 @@ public class APIController extends BasicController{ if(config != null){ rtcmClient.config(deviceId, config); // 保存 - saveMsg(deviceId, tenantId,0xd311, config); + saveMsg(deviceId, tenantId,0xd311, config, true); } } } @@ -125,30 +132,31 @@ public class APIController extends BasicController{ @PostMapping(value = "/api/gnss_upload") @ResponseBody public String onGnssUpload(String deviceId, Integer tenantId,LocalDateTime uploadTime) { - saveMsg(deviceId, tenantId,0xd342, "gnss data upload from "+uploadTime); + saveMsg(deviceId, tenantId,0xd342, "gnss data upload from "+uploadTime,false); return null; } @PostMapping(value = "/api/gnss_upload_pause") @ResponseBody public String onGnssUploadPause(String deviceId, Integer tenantId) { - saveMsg(deviceId, tenantId,0xd342, "gnss data upload pause"); + saveMsg(deviceId, tenantId,0xd342, "gnss data upload pause",false); return null; } @PostMapping(value = "/api/gnss_upload_complete") @ResponseBody public String onGnssUploadComplete(String deviceId, Integer tenantId) { - saveMsg(deviceId, tenantId,0xd342, "gnss data upload completely"); + saveMsg(deviceId, tenantId,0xd342, "gnss data upload completely",false); return null; } - void saveMsg(String deviceId, int tenantId, int msgType, String content){ + void saveMsg(String deviceId, int tenantId, int msgType, String content,boolean isTx){ GnssMsg gnssMsg = new GnssMsg(); gnssMsg.setCreatetime(LocalDateTime.now()); gnssMsg.setTenantid(tenantId); gnssMsg.setDeviceid(deviceId); gnssMsg.setMsgtype(msgType); + gnssMsg.setTx(isTx); if(content==null) content=""; gnssMsg.setMsglen(content.length()/2); int saveContentLen = content.length(); diff --git a/sec-beidou/src/main/java/com/imdroid/beidou/controller/CmdLineController.java b/sec-beidou/src/main/java/com/imdroid/beidou/controller/CmdLineController.java index 3e9d58c1..ddfae5c5 100644 --- a/sec-beidou/src/main/java/com/imdroid/beidou/controller/CmdLineController.java +++ b/sec-beidou/src/main/java/com/imdroid/beidou/controller/CmdLineController.java @@ -74,6 +74,10 @@ public class CmdLineController extends BasicController{ gnssMsg.setDeviceid(deviceId); gnssMsg.setMsgtype(msgType); gnssMsg.setMsglen((int) len); + gnssMsg.setTx(true); + if(cmd.length() >= 100) { + cmd = cmd.substring(0, 100)+"..."; + } gnssMsg.setContent(cmd); msgMapper.insert(gnssMsg); diff --git a/sec-beidou/src/main/resources/db/schema.sql b/sec-beidou/src/main/resources/db/schema.sql index ca05ace7..06837295 100644 --- a/sec-beidou/src/main/resources/db/schema.sql +++ b/sec-beidou/src/main/resources/db/schema.sql @@ -75,6 +75,7 @@ CREATE TABLE IF NOT EXISTS `gnssgroupcalc` ( `filter_min_hour` int DEFAULT NULL COMMENT '最小平滑窗口', `auto_threshold` float DEFAULT NULL, `device_num` int DEFAULT 0, + `auto_upload` bit(1) DEFAULT 0, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; @@ -170,6 +171,7 @@ CREATE TABLE IF NOT EXISTS `gnssmsg` ( `deviceid` varchar(20) NOT NULL, `msgtype` int default 0, `msglen` int default 0, + `tx` bit(1) DEFAULT 0, `content` varchar(128) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; diff --git a/sec-beidou/src/main/resources/templates/page/gnss_group_cfg.html b/sec-beidou/src/main/resources/templates/page/gnss_group_cfg.html index 51bb71d0..ff29c443 100644 --- a/sec-beidou/src/main/resources/templates/page/gnss_group_cfg.html +++ b/sec-beidou/src/main/resources/templates/page/gnss_group_cfg.html @@ -153,6 +153,7 @@ {field: 'auto_filter', title: '自适应滤波', templet: '#autoFilterTrans'}, {field: 'filter_min_hour', title: '最小滤波周期'}, {field: 'auto_threshold', title: '触发门限(mm)'}, + {field: 'auto_upload', title: '自动补传', templet: '#autoUploadTrans'}, {field: 'device_num', title: '关联设备数'}, {title: '操作', toolbar: '#currentTableBar', align: "center"} ]], @@ -209,6 +210,7 @@ layero.find('#auto_filter').val(data.auto_filter); layero.find('#filter_min_hour').val(data.filter_min_hour); layero.find('#auto_threshold').val(data.auto_threshold); + layero.find('#auto_upload').val(data.auto_upload); } }); $(window).on("resize", function () { @@ -358,6 +360,14 @@ {{# } }} + + + + \ No newline at end of file diff --git a/sec-beidou/src/main/resources/templates/page/gnss_msg_trx.html b/sec-beidou/src/main/resources/templates/page/gnss_msg_trx.html index 612b1b82..7814c6fb 100644 --- a/sec-beidou/src/main/resources/templates/page/gnss_msg_trx.html +++ b/sec-beidou/src/main/resources/templates/page/gnss_msg_trx.html @@ -66,9 +66,9 @@ {field: 'uart1txbytes', title: '串口1发'}, {field: 'uart1rxbytes', title: '串口1收'}, {field: 'uart1unknown', title: '串口1未知'}, - {field: 'uart2txbytes', title: '串口1发'}, - {field: 'uart2rxbytes', title: '串口1收'}, - {field: 'uart2unknown', title: '串口1未知'} + {field: 'uart2txbytes', title: '串口2发'}, + {field: 'uart2rxbytes', title: '串口2收'}, + {field: 'uart2unknown', title: '串口2未知'} ]], limits: [10, 15, 20, 25, 50, 100], limit: 15, diff --git a/sec-beidou/src/main/resources/templates/page/table/gnss_add_group_calc.html b/sec-beidou/src/main/resources/templates/page/table/gnss_add_group_calc.html index e03e86e0..d960b2f3 100644 --- a/sec-beidou/src/main/resources/templates/page/table/gnss_add_group_calc.html +++ b/sec-beidou/src/main/resources/templates/page/table/gnss_add_group_calc.html @@ -29,8 +29,8 @@
@@ -46,6 +46,15 @@ +
+ +
+ +
+