feat: 新增 ntrip 推送 list
This commit is contained in:
parent
c25772ae68
commit
2adc892fd2
@ -230,6 +230,50 @@ public class GnssDeviceController extends BasicController{
|
|||||||
return jsonObject;
|
return jsonObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/gnss/ntrip/list")
|
||||||
|
@ResponseBody
|
||||||
|
public JSONObject ntripList(HttpSession session,
|
||||||
|
@RequestParam int page,
|
||||||
|
@RequestParam int limit,
|
||||||
|
@RequestParam(value = "device_id", required = false) String deviceId) {
|
||||||
|
Page<GnssDevice> pageable = new Page<>(page, limit);
|
||||||
|
QueryWrapper<GnssDevice> qw = new QueryWrapper<>();
|
||||||
|
Integer tenantId = getTenantId(session);
|
||||||
|
if (tenantId != null && tenantId != Tenant.SAAS_PROVIDER_ID) {
|
||||||
|
qw.eq("tenantid", tenantId);
|
||||||
|
}
|
||||||
|
if (StringUtils.hasText(deviceId)) {
|
||||||
|
qw.like("deviceid", deviceId);
|
||||||
|
}
|
||||||
|
qw.orderByDesc("forward_to_ntrip");
|
||||||
|
qw.orderByDesc("updatetime", "createtime");
|
||||||
|
IPage<GnssDevice> cs = gnssDeviceMapper.selectPage(pageable, qw);
|
||||||
|
JSONObject json = new JSONObject();
|
||||||
|
json.put("code", 0);
|
||||||
|
json.put("msg", "");
|
||||||
|
json.put("count", cs.getTotal());
|
||||||
|
json.put("data", cs.getRecords());
|
||||||
|
return json;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*** 更新是否推送到 NtripCaster ***/
|
||||||
|
@PostMapping("/gnss/ntrip/update_forward")
|
||||||
|
@ResponseBody
|
||||||
|
public String updateNtripForward(HttpSession session,
|
||||||
|
@RequestParam("device_id") String deviceId,
|
||||||
|
@RequestParam("forward") Boolean forward) {
|
||||||
|
QueryWrapper<GnssDevice> qw = new QueryWrapper<>();
|
||||||
|
qw.eq("deviceid", deviceId).last("limit 1");
|
||||||
|
GnssDevice exist = gnssDeviceMapper.selectOne(qw);
|
||||||
|
if (exist == null) return HttpResult.failed("设备不存在");
|
||||||
|
GnssDevice upd = new GnssDevice();
|
||||||
|
upd.setId(exist.getId());
|
||||||
|
upd.setForward_to_ntrip(forward);
|
||||||
|
upd.setUpdatetime(LocalDateTime.now());
|
||||||
|
gnssDeviceMapper.updateById(upd);
|
||||||
|
return "ok";
|
||||||
|
}
|
||||||
|
|
||||||
@PostMapping("/gnss/device/update")
|
@PostMapping("/gnss/device/update")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public String update(HttpSession session, @RequestBody JSONObject object) throws Exception {
|
public String update(HttpSession session, @RequestBody JSONObject object) throws Exception {
|
||||||
|
|||||||
@ -1,6 +1,8 @@
|
|||||||
package com.imdroid.beidou.service;
|
package com.imdroid.beidou.service;
|
||||||
|
|
||||||
|
import com.imdroid.common.util.GeoCoordConverterUtil;
|
||||||
import com.imdroid.secapi.client.RtkrcvClient;
|
import com.imdroid.secapi.client.RtkrcvClient;
|
||||||
|
import com.imdroid.secapi.dto.RtkTransactionMapper;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
@ -19,6 +21,10 @@ public class RtkMonitorService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
GroupRtkScheduler groupRtkScheduler;
|
GroupRtkScheduler groupRtkScheduler;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
RtkTransactionMapper rtkTransactionMapper;
|
||||||
|
|
||||||
|
|
||||||
public void onStart(String deviceId){
|
public void onStart(String deviceId){
|
||||||
running.put(deviceId, true);
|
running.put(deviceId, true);
|
||||||
consecFix.put(deviceId, 0);
|
consecFix.put(deviceId, 0);
|
||||||
@ -68,8 +74,7 @@ public class RtkMonitorService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@org.springframework.beans.factory.annotation.Autowired
|
|
||||||
com.imdroid.secapi.dto.RtkTransactionMapper rtkTransactionMapper;
|
|
||||||
|
|
||||||
private void writeTransaction(String deviceId){
|
private void writeTransaction(String deviceId){
|
||||||
java.util.LinkedList<double[]> buf = fixBuffer.get(deviceId);
|
java.util.LinkedList<double[]> buf = fixBuffer.get(deviceId);
|
||||||
@ -82,16 +87,16 @@ public class RtkMonitorService {
|
|||||||
double lat = trimmedMean(latArr);
|
double lat = trimmedMean(latArr);
|
||||||
double lon = trimmedMean(lonArr);
|
double lon = trimmedMean(lonArr);
|
||||||
double alt = trimmedMean(hArr);
|
double alt = trimmedMean(hArr);
|
||||||
com.imdroid.beidou.util.GeoCoordConverterUtil.LLA_Coordinate L = new com.imdroid.beidou.util.GeoCoordConverterUtil.LLA_Coordinate(lat,lon,alt);
|
GeoCoordConverterUtil.LLA_Coordinate L = new GeoCoordConverterUtil.LLA_Coordinate(lat,lon,alt);
|
||||||
com.imdroid.beidou.util.GeoCoordConverterUtil.ECEF_Coordinate E = com.imdroid.beidou.util.GeoCoordConverterUtil.LLA2ECEF(L);
|
GeoCoordConverterUtil.ECEF_Coordinate E = GeoCoordConverterUtil.LLA2ECEF(L);
|
||||||
com.imdroid.secapi.dto.RtkTransaction t = new com.imdroid.secapi.dto.RtkTransaction();
|
com.imdroid.secapi.dto.RtkTransaction t = new com.imdroid.secapi.dto.RtkTransaction();
|
||||||
t.setDevice_id(deviceId);
|
t.setDevice_id(deviceId);
|
||||||
t.setLatitude(lat);
|
t.setLatitude(lat);
|
||||||
t.setLongitude(lon);
|
t.setLongitude(lon);
|
||||||
t.setAltitude(alt);
|
t.setAltitude(alt);
|
||||||
t.setEcef_x(E.ECEF_X);
|
t.setEcef_x(E.getECEF_X());
|
||||||
t.setEcef_y(E.ECEF_Y);
|
t.setEcef_y(E.getECEF_Y());
|
||||||
t.setEcef_z(E.ECEF_Z);
|
t.setEcef_z(E.getECEF_Z());
|
||||||
t.setStatus((short)1);
|
t.setStatus((short)1);
|
||||||
t.setChecked((short)0);
|
t.setChecked((short)0);
|
||||||
rtkTransactionMapper.insert(t);
|
rtkTransactionMapper.insert(t);
|
||||||
|
|||||||
@ -17,6 +17,9 @@
|
|||||||
/* RTK panel ~80vh */
|
/* RTK panel ~80vh */
|
||||||
#rtk-panel{height:80vh;}
|
#rtk-panel{height:80vh;}
|
||||||
#rtk-info{max-height:calc(80vh - 120px);} /* leave room for header/badges */
|
#rtk-info{max-height:calc(80vh - 120px);} /* leave room for header/badges */
|
||||||
|
#table-ntrip + .layui-table-view{ width:100% !important; }
|
||||||
|
#table-device + .layui-table-view{ width:100% !important; }
|
||||||
|
#table-group + .layui-table-view{ width:100% !important; }
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
@ -24,13 +27,37 @@
|
|||||||
<div class="layuimini-main">
|
<div class="layuimini-main">
|
||||||
<div class="layui-tab layui-tab-card" lay-filter="rtk-tab">
|
<div class="layui-tab layui-tab-card" lay-filter="rtk-tab">
|
||||||
<ul class="layui-tab-title">
|
<ul class="layui-tab-title">
|
||||||
<li class="layui-this">分组管理</li>
|
<li class="layui-this">Ntrip 推送管理</li>
|
||||||
|
<li>分组管理</li>
|
||||||
<li>设备管理</li>
|
<li>设备管理</li>
|
||||||
<li>单设备定位</li>
|
<li>单设备定位</li>
|
||||||
<li>组设备定位</li>
|
<li>组设备定位</li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="layui-tab-content">
|
<div class="layui-tab-content">
|
||||||
<div class="layui-tab-item layui-show">
|
<div class="layui-tab-item layui-show">
|
||||||
|
<div class="layui-row" style="margin:10px 0;">
|
||||||
|
<div class="layui-col-md12">
|
||||||
|
<div class="layui-form layui-form-pane">
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<div class="layui-inline">
|
||||||
|
<label class="layui-form-label">设备号</label>
|
||||||
|
<div class="layui-input-inline">
|
||||||
|
<input type="text" id="ntrip-deviceid" placeholder="设备号" autocomplete="off" class="layui-input" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-inline">
|
||||||
|
<button class="layui-btn" id="btn-ntrip-search">搜索</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="margin-top:10px;">
|
||||||
|
<table class="layui-hide" id="table-ntrip" lay-filter="table-ntrip-filter"></table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-tab-item">
|
||||||
<div class="layui-row">
|
<div class="layui-row">
|
||||||
<div class="layui-col-md12">
|
<div class="layui-col-md12">
|
||||||
<div class="btn-bar">
|
<div class="btn-bar">
|
||||||
@ -189,6 +216,51 @@ layui.use(['form','table','element','layer','transfer'], function(){
|
|||||||
|
|
||||||
form.render();
|
form.render();
|
||||||
|
|
||||||
|
// Ntrip 推送管理
|
||||||
|
var ntripTableIns = table.render({
|
||||||
|
elem: '#table-ntrip',
|
||||||
|
url: '/gnss/ntrip/list',
|
||||||
|
id: 'ntrip-table-id',
|
||||||
|
cols: [ [
|
||||||
|
{field:'deviceid', title:'设备号', sort:true},
|
||||||
|
{field:'tenantname', title:'所属组织', sort:true},
|
||||||
|
{field:'devicetype', title:'设备类型', templet: '#ntripDevTypeTrans'},
|
||||||
|
{field:'model', title:'型号', templet: '#ntripModelTrans'},
|
||||||
|
{field:'project_id', title:'项目号'},
|
||||||
|
{field:'updatetime', title:'更新时间', templet: "<div>{{layui.util.toDateString(d.updatetime, 'yyyy-MM-dd HH:mm:ss')}}</div>"},
|
||||||
|
{field:'forward_to_ntrip', title:'推送Ntrip', width:120, fixed:'right', align:'center', templet: function(d){
|
||||||
|
var checked = d.forward_to_ntrip? 'checked' : '';
|
||||||
|
return '<input type="checkbox" lay-filter="ntrip-fwd-switch" data-device="'+ (d.deviceid||'') +'" '+checked+' lay-skin="switch" lay-text="开|关">';
|
||||||
|
}}
|
||||||
|
] ],
|
||||||
|
limits:[10,20,50,100],
|
||||||
|
limit:10,
|
||||||
|
page:true,
|
||||||
|
skin:'line'
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#btn-ntrip-search').on('click', function(){
|
||||||
|
var did = $('#ntrip-deviceid').val();
|
||||||
|
ntripTableIns.reload({ where:{ device_id: did }, page:{ curr:1 } });
|
||||||
|
});
|
||||||
|
|
||||||
|
form.on('switch(ntrip-fwd-switch)', function(obj){
|
||||||
|
var el = $(obj.elem);
|
||||||
|
var device = el.attr('data-device');
|
||||||
|
var val = obj.elem.checked;
|
||||||
|
$.post('/gnss/ntrip/update_forward', { device_id: device, forward: val }, function(res){
|
||||||
|
if(res === 'ok' || (res && res.code === 0)){
|
||||||
|
layer.msg('已更新');
|
||||||
|
} else {
|
||||||
|
layer.alert((res && res.msg) || '更新失败');
|
||||||
|
obj.elem.checked = !val; form.render('checkbox');
|
||||||
|
}
|
||||||
|
}).fail(function(){
|
||||||
|
layer.alert('请求失败');
|
||||||
|
obj.elem.checked = !val; form.render('checkbox');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
var selectedGroup = null;
|
var selectedGroup = null;
|
||||||
var transferIns = null;
|
var transferIns = null;
|
||||||
var groupTableIns = table.render({
|
var groupTableIns = table.render({
|
||||||
@ -203,7 +275,8 @@ layui.use(['form','table','element','layer','transfer'], function(){
|
|||||||
] ],
|
] ],
|
||||||
limits: [10,20,50,100],
|
limits: [10,20,50,100],
|
||||||
limit: 10,
|
limit: 10,
|
||||||
page: true
|
page: true,
|
||||||
|
skin: 'line'
|
||||||
});
|
});
|
||||||
|
|
||||||
table.on('radio(table-group-filter)', function(obj){
|
table.on('radio(table-group-filter)', function(obj){
|
||||||
@ -332,7 +405,8 @@ layui.use(['form','table','element','layer','transfer'], function(){
|
|||||||
] ],
|
] ],
|
||||||
limits: [10,20,50,100],
|
limits: [10,20,50,100],
|
||||||
limit: 10,
|
limit: 10,
|
||||||
page: true
|
page: true,
|
||||||
|
skin: 'line'
|
||||||
});
|
});
|
||||||
|
|
||||||
$('#btn-device-search').on('click', function(){
|
$('#btn-device-search').on('click', function(){
|
||||||
@ -557,5 +631,21 @@ layui.use(['form','table','element','layer','transfer'], function(){
|
|||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<script type="text/html" id="ntripDevTypeTrans">
|
||||||
|
{{# if(d.devicetype == 1){ }}
|
||||||
|
<span>基准站</span>
|
||||||
|
{{# } else { }}
|
||||||
|
<span>监测站</span>
|
||||||
|
{{# } }}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script type="text/html" id="ntripModelTrans">
|
||||||
|
{{# if(d.model == 1){ }}
|
||||||
|
<span>G510</span>
|
||||||
|
{{# } else { }}
|
||||||
|
<span>G505</span>
|
||||||
|
{{# } }}
|
||||||
|
</script>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user