feat: 事务管理新增命令行控制
This commit is contained in:
parent
2adc892fd2
commit
12eb4471f9
@ -33,6 +33,8 @@ public class RtkTransactionController extends BasicController {
|
||||
Page<RtkTransaction> pageable = new Page<>(page, limit);
|
||||
QueryWrapper<RtkTransaction> qw = new QueryWrapper<>();
|
||||
if(device_id!=null && !device_id.isEmpty()) qw.eq("device_id", device_id);
|
||||
// 最新在最上:按自增ID倒序(等价于按创建时间倒序)
|
||||
qw.orderByDesc("id");
|
||||
IPage<RtkTransaction> cs = mapper.selectPage(pageable, qw);
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("code",0);
|
||||
|
||||
@ -40,6 +40,17 @@
|
||||
<script>
|
||||
layui.use(['form','table'], function(){
|
||||
var $=layui.$, form=layui.form, table=layui.table;
|
||||
var cmdWs=null, cmdConnected=false;
|
||||
function connectCmdWs(onmsg){
|
||||
if(cmdWs && cmdWs.readyState===WebSocket.OPEN) return;
|
||||
var cur=window.location.href; var pn=window.location.pathname; var pos=cur.indexOf(pn); var base=cur.substring(0,pos);
|
||||
var url=(base+"/websocket/cmdline").replace("http","ws");
|
||||
cmdWs=new WebSocket(url);
|
||||
cmdWs.onopen=function(){ cmdConnected=true; if(onmsg) onmsg('已连接设备通讯通道'); };
|
||||
cmdWs.onclose=function(){ cmdConnected=false; if(onmsg) onmsg('通讯通道已关闭'); };
|
||||
cmdWs.onerror=function(){ if(onmsg) onmsg('通讯通道连接失败'); };
|
||||
}
|
||||
function sendDebugCmd(dev, content, onres){ if(!dev){layer.msg('无设备号');return;} $.ajax({ type:'POST', url:'/gnss/config_cmd', data:{ tx_win: content, device_id: dev, cmd_type: 3, send_channel: 0 }, success:function(res){ if(onres) onres(res); }, error:function(){ layer.alert('请求失败'); } }); }
|
||||
function toHexSp(str){
|
||||
var s=''; for(var i=0;i<str.length;i++){ var h=str.charCodeAt(i).toString(16).toUpperCase(); if(h.length<2) h='0'+h; s+=h+(i<str.length-1?' ':''); } return s;
|
||||
}
|
||||
@ -68,20 +79,38 @@ layui.use(['form','table'], function(){
|
||||
if(obj.event==='check'){
|
||||
var cmd = '$POLCFGBASE,' + d.latitude + ',' + d.longitude + ',' + d.altitude + '\r\n\r\n';
|
||||
var hex = toHexSp(cmd);
|
||||
var html = '<div style="padding:10px;">' +
|
||||
'<div class="layui-text">命令</div><pre class="layui-code">'+cmd.replace(/</g,'<')+'</pre>'+
|
||||
var html = ''+
|
||||
'<div style="padding:10px;">'+
|
||||
'<div class="layui-row">'+
|
||||
'<div class="layui-col-md12">'+
|
||||
'<div class="layui-text">设备号:<b>'+ (d.device_id||'') +'</b></div><hr/>'+
|
||||
'<div class="layui-btn-group" style="margin-bottom:8px;">'+
|
||||
'<button class="layui-btn layui-btn-primary" id="btn-tx-connect">连接通道</button>'+
|
||||
'<button class="layui-btn" id="btn-tx-0100">发送 0100</button>'+
|
||||
'<button class="layui-btn" id="btn-tx-0102">发送 0102</button>'+
|
||||
'</div>'+
|
||||
'<div class="layui-text">生效命令</div><pre class="layui-code">'+cmd.replace(/</g,'<')+'</pre>'+
|
||||
'<div class="layui-text">十六进制</div><pre class="layui-code">'+hex+'</pre>'+
|
||||
'<div class="layui-text">命令行消息</div><pre id="tx-cmd-info" style="white-space: pre-wrap;word-break: break-all;max-height:220px;overflow-y:auto;border:1px solid #e6e6e6;border-radius:2px;padding:6px;"></pre>'+
|
||||
'</div>'+
|
||||
'</div>'+
|
||||
'</div>';
|
||||
layer.open({
|
||||
title:'检查', type:1, area:['600px','420px'], content: html,
|
||||
btn:['生效','取消'],
|
||||
yes: function(index){
|
||||
$.post('/rtk/transaction/check',{id:d.id, apply:true}, function(){ layer.close(index); table.reload('txTable'); });
|
||||
var idx = layer.open({ title:'检查', type:1, area:['680px','560px'], content: html, btn:['生效','取消'],
|
||||
success:function(){
|
||||
var info = layui.$('#tx-cmd-info');
|
||||
var deviceId = d.device_id;
|
||||
layui.$('#btn-tx-connect').on('click', function(){ connectCmdWs(function(m){ info.text(info.text()+m+'\n'); var el=info.get(0); el.scrollTop=el.scrollHeight; }); });
|
||||
layui.$('#btn-tx-0100').on('click', function(){ sendDebugCmd(deviceId,'0100', function(res){ var s=(res&&res.data)||''; info.text(info.text()+s+'\n'); var el=info.get(0); el.scrollTop=el.scrollHeight; }); });
|
||||
layui.$('#btn-tx-0102').on('click', function(){ sendDebugCmd(deviceId,'0102', function(res){ var s=(res&&res.data)||''; info.text(info.text()+s+'\n'); var el=info.get(0); el.scrollTop=el.scrollHeight; }); });
|
||||
// 监听 WebSocket 输出
|
||||
try{
|
||||
connectCmdWs(function(){});
|
||||
if(cmdWs){ cmdWs.onmessage=function(e){ var msg=e.data||''; var parts=msg.trim().split(/\s+/); if(parts[0]==='RX' && parts.length>3){ if(deviceId && parts[3]!==deviceId) return; } info.text(info.text()+msg+'\n'); var el=info.get(0); el.scrollTop=el.scrollHeight; }; }
|
||||
}catch(e){}
|
||||
},
|
||||
btn2: function(index){
|
||||
$.post('/rtk/transaction/check',{id:d.id, apply:false}, function(){ layer.close(index); table.reload('txTable'); });
|
||||
return false;
|
||||
}
|
||||
yes: function(index){ $.post('/rtk/transaction/check',{id:d.id, apply:true}, function(){ layer.close(index); table.reload('txTable'); }); },
|
||||
btn2: function(index){ $.post('/rtk/transaction/check',{id:d.id, apply:false}, function(){ layer.close(index); table.reload('txTable'); }); return false; },
|
||||
end:function(){ try{ if(cmdWs){ cmdWs.close(); cmdWs=null; } }catch(e){} }
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user