1、修改device修改和增加页面的机制
2、优化rtcm服务里device缓存代码,原代码基站关联的device和device缓存里的device不是同一个对象 3、增加基站按基站采样率推送的功能
This commit is contained in:
parent
22bb0f656d
commit
d3904cd016
@ -53,3 +53,8 @@ beidou-ehm 9912 健康检查、SIM卡检查
|
||||
2025-04
|
||||
1)告警参数配置增加一个字段:单位
|
||||
2)健康检查增加连续无有效解的时长之和统计
|
||||
|
||||
3)批量升级:
|
||||
a)在设备页面增加勾选框和“准备升级”、“完成升级”按钮
|
||||
b)点击“准备升级”,把模式改为“待升级”,同时发连接版本服务器指令
|
||||
c)点击“完成升级”,把模式改为“正常”
|
||||
@ -1,6 +1,6 @@
|
||||
package com.imdroid.sideslope.bd;
|
||||
|
||||
import com.imdroid.sideslope.sal.Device;
|
||||
import com.imdroid.sideslope.service.Device;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
|
||||
@ -3,7 +3,7 @@ package com.imdroid.sideslope.calc;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.imdroid.common.util.NumberUtils;
|
||||
import com.imdroid.secapi.dto.*;
|
||||
import com.imdroid.sideslope.sal.Device;
|
||||
import com.imdroid.sideslope.service.Device;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
@ -2,7 +2,7 @@ package com.imdroid.sideslope.calc;
|
||||
|
||||
import com.imdroid.secapi.dto.GnssGroupCalc;
|
||||
import com.imdroid.sideslope.message.D341LocationMessage;
|
||||
import com.imdroid.sideslope.sal.Device;
|
||||
import com.imdroid.sideslope.service.Device;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
|
||||
@ -5,17 +5,15 @@ import com.imdroid.secapi.dto.*;
|
||||
import com.imdroid.sideslope.message.BaseMessage;
|
||||
import com.imdroid.sideslope.message.D341LocationMessage;
|
||||
import com.imdroid.sideslope.message.D342LocationMessage;
|
||||
import com.imdroid.sideslope.sal.Device;
|
||||
import com.imdroid.sideslope.sal.DeviceService;
|
||||
import com.imdroid.sideslope.service.Device;
|
||||
import com.imdroid.sideslope.service.DeviceService;
|
||||
import com.imdroid.sideslope.service.DataPersistService;
|
||||
import com.imdroid.sideslope.service.GroupParaService;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
@ -40,24 +38,11 @@ public class MultiLineGNSSCalcService {
|
||||
private BeidouClient beidouClient;
|
||||
@Autowired
|
||||
DataPersistService dataPersistService;
|
||||
@Resource(name = "local")
|
||||
@Autowired
|
||||
private DeviceService deviceService;
|
||||
|
||||
@Autowired
|
||||
GnssGroupCalcMapper groupCalcMapper;
|
||||
List<GnssGroupCalc> groupCalcList;
|
||||
|
||||
synchronized GnssGroupCalc getGroupCalc(int groupId){
|
||||
if(groupCalcList == null){
|
||||
groupCalcList = groupCalcMapper.selectList(null);
|
||||
}
|
||||
if(groupCalcList != null){
|
||||
for(GnssGroupCalc groupCalc:groupCalcList){
|
||||
if(groupCalc.getId() == groupId) return groupCalc;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
GroupParaService groupParaService;
|
||||
|
||||
public void calc(D342LocationMessage d342Message){
|
||||
// 如果时间跨度大于1分钟,或者不含d341,则计算平滑值
|
||||
@ -79,7 +64,7 @@ public class MultiLineGNSSCalcService {
|
||||
logger.info(deviceId + " d341 cycle done!");
|
||||
// 计算上轮结果
|
||||
Device device = deviceService.findByDeviceId(deviceId);
|
||||
GnssGroupCalc groupCalc = getGroupCalc(device.getCalcGroupId());
|
||||
GnssGroupCalc groupCalc = groupParaService.getCalcGroup(device.getCalcGroupId());
|
||||
calcService.calSingleDone(device, groupCalc, lastD342Time.createTime);
|
||||
}
|
||||
}
|
||||
@ -130,7 +115,7 @@ public class MultiLineGNSSCalcService {
|
||||
}
|
||||
// 计算上轮结果
|
||||
Device device = deviceService.findByDeviceId(deviceId);
|
||||
GnssGroupCalc groupCalc = getGroupCalc(device.getCalcGroupId());
|
||||
GnssGroupCalc groupCalc = groupParaService.getCalcGroup(device.getCalcGroupId());
|
||||
calcService.calSingleDone(device, groupCalc, lastDate);
|
||||
// 重算最近的
|
||||
lastDate = gnssCalcFilterService.updateRpos(device,groupCalc,lastDate);
|
||||
@ -185,10 +170,4 @@ public class MultiLineGNSSCalcService {
|
||||
}
|
||||
else return null;
|
||||
}
|
||||
|
||||
public void refreshGroupCalc(){
|
||||
if(groupCalcList!=null) groupCalcList.clear();
|
||||
groupCalcList = groupCalcMapper.selectList(null);
|
||||
logger.info("group paras changed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -6,11 +6,12 @@ import com.imdroid.common.util.ThreadManager;
|
||||
import com.imdroid.secapi.dto.*;
|
||||
import com.imdroid.sideslope.bd.*;
|
||||
import com.imdroid.sideslope.message.D341LocationMessage;
|
||||
import com.imdroid.sideslope.sal.Device;
|
||||
import com.imdroid.sideslope.sal.DeviceService;
|
||||
import com.imdroid.sideslope.service.Device;
|
||||
import com.imdroid.sideslope.service.DeviceService;
|
||||
import com.imdroid.sideslope.server.DeviceChannel;
|
||||
import com.imdroid.sideslope.server.OnlineChannels;
|
||||
import com.imdroid.sideslope.service.GnssSingleBufferService;
|
||||
import com.imdroid.sideslope.service.GroupParaService;
|
||||
import com.imdroid.sideslope.service.WarningService;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.Unpooled;
|
||||
@ -18,8 +19,6 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
@ -46,31 +45,17 @@ public class SingleLineGNSSCalcService implements GNSSDataCalcService {
|
||||
@Autowired
|
||||
GNSSCalcFilterService gnssCalcFilterService;
|
||||
|
||||
@Resource(name = "local")
|
||||
@Autowired
|
||||
private DeviceService deviceService;
|
||||
|
||||
@Autowired
|
||||
GnssGroupCalcMapper groupCalcMapper;
|
||||
GroupParaService groupParaService;
|
||||
@Autowired
|
||||
GnssCalcDataMapper dataMapper;
|
||||
|
||||
@Autowired
|
||||
private GnssSingleBufferService gnssSingleDataService;
|
||||
|
||||
// 非线程安全,需加同步保护
|
||||
List<GnssGroupCalc> groupCalcList;
|
||||
|
||||
synchronized GnssGroupCalc getGroupCalc(int groupId){
|
||||
if(groupCalcList == null){
|
||||
groupCalcList = groupCalcMapper.selectList(null);
|
||||
}
|
||||
if(groupCalcList != null){
|
||||
for(GnssGroupCalc groupCalc:groupCalcList){
|
||||
if(groupCalc.getId() == groupId) return groupCalc;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/***
|
||||
* 处理本轮的固定解,求出重心位置。多线程调用,访问成员变量要考虑多线程安全
|
||||
@ -83,7 +68,7 @@ public class SingleLineGNSSCalcService implements GNSSDataCalcService {
|
||||
String deviceId = message.getId();
|
||||
Device device = deviceService.findByDeviceId(deviceId);
|
||||
if(device == null) return;
|
||||
GnssGroupCalc groupCalc = getGroupCalc(device.getCalcGroupId());
|
||||
GnssGroupCalc groupCalc = groupParaService.getCalcGroup(device.getCalcGroupId());
|
||||
if(groupCalc==null) return;
|
||||
device.setB562AsCalc(groupCalc.getVer()!=3);
|
||||
|
||||
@ -182,7 +167,7 @@ public class SingleLineGNSSCalcService implements GNSSDataCalcService {
|
||||
future = null;
|
||||
}
|
||||
if(null == groupCalc){
|
||||
groupCalc = getGroupCalc(device.getCalcGroupId());
|
||||
groupCalc = groupParaService.getCalcGroup(device.getCalcGroupId());
|
||||
if(groupCalc == null) return;
|
||||
}
|
||||
calCycleResult(device, groupCalc, resultTime);
|
||||
@ -353,13 +338,6 @@ public class SingleLineGNSSCalcService implements GNSSDataCalcService {
|
||||
focusCalculator.reset();
|
||||
}
|
||||
|
||||
public void refreshGroupCalc(){
|
||||
if(groupCalcList!=null) groupCalcList.clear();
|
||||
groupCalcList = groupCalcMapper.selectList(null);
|
||||
calculatorMap.clear();
|
||||
logger.info("group paras changed");
|
||||
}
|
||||
|
||||
public void refreshDeviceCalc(String deviceId){
|
||||
Device device = deviceService.findByDeviceId(deviceId);
|
||||
if(device == null) return;
|
||||
|
||||
@ -3,13 +3,11 @@ package com.imdroid.sideslope.executor;
|
||||
import com.imdroid.common.util.ByteUtil;
|
||||
import com.imdroid.secapi.client.BeidouClient;
|
||||
import com.imdroid.sideslope.message.D31xConfigAckMessage;
|
||||
import com.imdroid.sideslope.sal.Device;
|
||||
import com.imdroid.sideslope.sal.DeviceService;
|
||||
import com.imdroid.sideslope.service.Device;
|
||||
import com.imdroid.sideslope.service.DeviceService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* @author Layton
|
||||
* @date 2023/2/2 20:40
|
||||
@ -18,7 +16,7 @@ import javax.annotation.Resource;
|
||||
public class D31xConfigAckMessageExecutor implements Executor<D31xConfigAckMessage, Void> {
|
||||
@Autowired
|
||||
private BeidouClient beidouClient;
|
||||
@Resource(name = "local")
|
||||
@Autowired
|
||||
private DeviceService deviceService;
|
||||
|
||||
@Override
|
||||
|
||||
@ -8,8 +8,8 @@ import com.imdroid.common.util.ByteUtil;
|
||||
import com.imdroid.sideslope.bd.Gga;
|
||||
import com.imdroid.sideslope.message.D331RtcmMessage;
|
||||
import com.imdroid.sideslope.ntrip.UdpNtripServer;
|
||||
import com.imdroid.sideslope.sal.Device;
|
||||
import com.imdroid.sideslope.sal.DeviceService;
|
||||
import com.imdroid.sideslope.service.Device;
|
||||
import com.imdroid.sideslope.service.DeviceService;
|
||||
import com.imdroid.sideslope.server.DeviceChannel;
|
||||
import com.imdroid.sideslope.server.OnlineChannels;
|
||||
import com.imdroid.sideslope.service.DataPersistService;
|
||||
@ -21,8 +21,6 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
@ -37,7 +35,7 @@ public class D331RtcmMessageExecutor implements Executor<D331RtcmMessage, Void>
|
||||
|
||||
private final Logger logger = LoggerFactory.getLogger(this.getClass());
|
||||
|
||||
@Resource(name = "local")
|
||||
@Autowired
|
||||
private DeviceService deviceService;
|
||||
@Autowired
|
||||
private BeidouClient beidouClient;
|
||||
@ -62,6 +60,7 @@ public class D331RtcmMessageExecutor implements Executor<D331RtcmMessage, Void>
|
||||
DeviceChannel deviceChannel = null;
|
||||
for (Device device : deviceList) {
|
||||
if (device.getOpMode() != GnssDevice.OP_MODE_USE) continue;
|
||||
if ((deviceBs.getD3xxCount()%device.getGnssSampleRate()) != 0) continue;
|
||||
String deviceId = device.getDeviceId();
|
||||
if(device.getDataChannelType() == Device.CHANNEL_TYPE_UDP) {
|
||||
deviceChannel = OnlineChannels.INSTANCE.getDataChannel(deviceId);
|
||||
|
||||
@ -7,15 +7,13 @@ import com.imdroid.secapi.dto.GnssDevice;
|
||||
import com.imdroid.sideslope.bd.Gga;
|
||||
import com.imdroid.sideslope.calc.GNSSDataCalcService;
|
||||
import com.imdroid.sideslope.message.D341LocationMessage;
|
||||
import com.imdroid.sideslope.sal.Device;
|
||||
import com.imdroid.sideslope.sal.DeviceService;
|
||||
import com.imdroid.sideslope.service.Device;
|
||||
import com.imdroid.sideslope.service.DeviceService;
|
||||
import com.imdroid.sideslope.service.DataPersistService;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
@ -29,7 +27,7 @@ public class D341LocationMessageExecutor implements Executor<D341LocationMessage
|
||||
|
||||
@Autowired
|
||||
private GNSSDataCalcService gnssCalcService;
|
||||
@Resource(name = "local")
|
||||
@Autowired
|
||||
private DeviceService deviceService;
|
||||
@Autowired
|
||||
private BeidouClient beidouClient;
|
||||
|
||||
@ -3,14 +3,12 @@ package com.imdroid.sideslope.executor;
|
||||
import com.imdroid.common.util.ThreadManager;
|
||||
import com.imdroid.sideslope.calc.MultiLineGNSSCalcService;
|
||||
import com.imdroid.sideslope.message.D342LocationMessage;
|
||||
import com.imdroid.sideslope.sal.Device;
|
||||
import com.imdroid.sideslope.sal.DeviceService;
|
||||
import com.imdroid.sideslope.service.Device;
|
||||
import com.imdroid.sideslope.service.DeviceService;
|
||||
import com.imdroid.sideslope.service.DataPersistService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* @author Layton
|
||||
* @date 2023/2/2 20:50
|
||||
@ -20,7 +18,7 @@ public class D342LocationMessageExecutor implements Executor<D342LocationMessage
|
||||
|
||||
@Autowired
|
||||
private MultiLineGNSSCalcService gnssCalcService;
|
||||
@Resource(name = "local")
|
||||
@Autowired
|
||||
private DeviceService deviceService;
|
||||
@Autowired
|
||||
private DataPersistService dataPersistService;
|
||||
|
||||
@ -6,16 +6,15 @@ import com.imdroid.common.util.ThreadManager;
|
||||
import com.imdroid.secapi.client.BeidouClient;
|
||||
import com.imdroid.secapi.dto.*;
|
||||
import com.imdroid.sideslope.message.D3F0SelfCheckMessage;
|
||||
import com.imdroid.sideslope.sal.Device;
|
||||
import com.imdroid.sideslope.sal.DeviceService;
|
||||
import com.imdroid.sideslope.service.Device;
|
||||
import com.imdroid.sideslope.service.DeviceService;
|
||||
import com.imdroid.sideslope.service.DataPersistService;
|
||||
import com.imdroid.sideslope.service.GroupParaService;
|
||||
import com.imdroid.sideslope.web.ApiController;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
@ -46,10 +45,12 @@ public class D3F0SelfCheckMessageExecutor implements Executor<D3F0SelfCheckMessa
|
||||
@Autowired
|
||||
private BeidouClient beidouClient;
|
||||
// 由于消息数据大,从缓存查询设备信息效率更高
|
||||
@Resource(name = "local")
|
||||
@Autowired
|
||||
private DeviceService deviceService;
|
||||
@Autowired
|
||||
ApiController rtcmClient;
|
||||
@Autowired
|
||||
GroupParaService groupParaService;
|
||||
|
||||
@Override
|
||||
public Void execute(D3F0SelfCheckMessage message) {
|
||||
@ -64,6 +65,11 @@ public class D3F0SelfCheckMessageExecutor implements Executor<D3F0SelfCheckMessa
|
||||
sendD3F1Ack(device);
|
||||
//更新统计
|
||||
device.updateRx(message.getHeader(),message.getLen(),1);
|
||||
//更新采样率
|
||||
GnssGroup group = groupParaService.getBasicGroup(device.getBasicGroupId());
|
||||
if(group!=null) {
|
||||
device.setGnssSampleRate(group.getGnss_sample_s());
|
||||
}
|
||||
|
||||
ThreadManager.getFixedThreadPool().submit(() -> {
|
||||
// 检查是否需要对设备的F9P进行冷启动操作
|
||||
|
||||
@ -7,8 +7,8 @@ import com.imdroid.secapi.dto.GnssTrxMsg;
|
||||
import com.imdroid.sideslope.calc.GNSSDataCalcService;
|
||||
import com.imdroid.sideslope.calc.MultiLineGNSSCalcService;
|
||||
import com.imdroid.sideslope.message.D3F2StopIndicationMessage;
|
||||
import com.imdroid.sideslope.sal.Device;
|
||||
import com.imdroid.sideslope.sal.DeviceService;
|
||||
import com.imdroid.sideslope.service.Device;
|
||||
import com.imdroid.sideslope.service.DeviceService;
|
||||
import com.imdroid.sideslope.service.DataPersistService;
|
||||
import com.imdroid.sideslope.service.GnssSingleBufferServiceImpl;
|
||||
import org.slf4j.Logger;
|
||||
@ -16,7 +16,6 @@ import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
@ -34,7 +33,7 @@ public class D3F2StopIndicationMessageExecutor implements Executor<D3F2StopIndic
|
||||
@Autowired
|
||||
private DataPersistService dataPersistService;
|
||||
|
||||
@Resource(name = "local")
|
||||
@Autowired
|
||||
private DeviceService deviceService;
|
||||
@Autowired
|
||||
private BeidouClient beidouClient;
|
||||
|
||||
@ -1,77 +0,0 @@
|
||||
package com.imdroid.sideslope.sal;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.imdroid.secapi.dto.GnssDevice;
|
||||
import com.imdroid.secapi.dto.GnssDeviceMapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 描述
|
||||
*
|
||||
* @author LiGang
|
||||
*/
|
||||
@Component(value = "db")
|
||||
public class DbDeviceServiceImpl implements DeviceService {
|
||||
|
||||
@Autowired
|
||||
private GnssDeviceMapper gnssDeviceRepository;
|
||||
|
||||
@Override
|
||||
public Device findByDeviceId(String deviceId) {
|
||||
GnssDevice gnssDevice = gnssDeviceRepository.queryByDeviceId(deviceId);
|
||||
if (gnssDevice == null) {
|
||||
return null;
|
||||
}
|
||||
Device device = new Device();
|
||||
device.setTenantId(gnssDevice.getTenantid());
|
||||
device.setDeviceId(gnssDevice.getDeviceid());
|
||||
device.setDeviceType(gnssDevice.getDevicetype());
|
||||
device.setModel(gnssDevice.getModel());
|
||||
device.setParentId(gnssDevice.getParentid());
|
||||
device.setName(gnssDevice.getName());
|
||||
device.setProjectId(gnssDevice.getProject_id());
|
||||
device.setCalcGroupId(gnssDevice.getCalc_group_id());
|
||||
device.setOpMode(gnssDevice.getOpmode());
|
||||
device.setFwdId(gnssDevice.getFwd_group_id());
|
||||
device.setIPose(gnssDevice.getIpose());
|
||||
device.setIPosn(gnssDevice.getIposn());
|
||||
device.setIPosd(gnssDevice.getIposd());
|
||||
device.setEcefx(gnssDevice.getEcefx());
|
||||
device.setEcefy(gnssDevice.getEcefy());
|
||||
device.setEcefz(gnssDevice.getEcefz());
|
||||
device.setLoggingmode(gnssDevice.getLoggingmode());
|
||||
return device;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Device> findByParentId(String parentId) {
|
||||
QueryWrapper<GnssDevice> query = new QueryWrapper();
|
||||
query.eq("parentid", parentId);
|
||||
List<GnssDevice> gnssDeviceList = gnssDeviceRepository.selectList(query);
|
||||
List<Device> deviceList = new ArrayList<>(gnssDeviceList.size());
|
||||
for (GnssDevice gnssDevice : gnssDeviceList) {
|
||||
Device device = new Device();
|
||||
device.setDeviceId(gnssDevice.getDeviceid());
|
||||
device.setDeviceType(gnssDevice.getDevicetype());
|
||||
device.setParentId(gnssDevice.getParentid());
|
||||
device.setName(gnssDevice.getName());
|
||||
device.setProjectId(gnssDevice.getProject_id());
|
||||
device.setCalcGroupId(gnssDevice.getCalc_group_id());
|
||||
device.setOpMode(gnssDevice.getOpmode());
|
||||
device.setFwdId(gnssDevice.getFwd_group_id());
|
||||
device.setIPose(gnssDevice.getIpose());
|
||||
device.setIPosn(gnssDevice.getIposn());
|
||||
device.setIPosd(gnssDevice.getIposd());
|
||||
device.setEcefx(gnssDevice.getEcefx());
|
||||
device.setEcefy(gnssDevice.getEcefy());
|
||||
device.setEcefz(gnssDevice.getEcefz());
|
||||
deviceList.add(device);
|
||||
}
|
||||
return deviceList;
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,72 +0,0 @@
|
||||
package com.imdroid.sideslope.sal;
|
||||
|
||||
import com.google.common.cache.Cache;
|
||||
import com.google.common.cache.CacheBuilder;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* @author Layton
|
||||
* @date 2023/2/3 20:46
|
||||
*/
|
||||
@Component(value = "local")
|
||||
public class LocalDeviceServiceImpl implements DeviceService {
|
||||
private final Logger logger = LoggerFactory.getLogger(this.getClass());
|
||||
|
||||
/*static RemovalListener<String, Device> removalListener = new RemovalListener<String, Device>() {
|
||||
public void onRemoval(RemovalNotification<String, Device> removal) {
|
||||
|
||||
}
|
||||
};*/
|
||||
private static final Cache<String, Device> deviceCache = CacheBuilder.newBuilder().
|
||||
expireAfterAccess(20, TimeUnit.MINUTES).build();
|
||||
|
||||
private static final Cache<String, List<Device>> subDeviceCache = CacheBuilder.newBuilder().
|
||||
expireAfterAccess(10, TimeUnit.MINUTES).build();
|
||||
|
||||
@Resource(name = "db")
|
||||
private DeviceService delegate;
|
||||
|
||||
@Override
|
||||
public Device findByDeviceId(String deviceId) {
|
||||
Device device = deviceCache.getIfPresent(deviceId);
|
||||
if (device == null) {
|
||||
device = delegate.findByDeviceId(deviceId);
|
||||
if (device != null) {
|
||||
deviceCache.put(deviceId, device);
|
||||
}
|
||||
}
|
||||
return device;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Device> findByParentId(String parentId) {
|
||||
List<Device> device = subDeviceCache.getIfPresent(parentId);
|
||||
if (device == null) {
|
||||
logger.debug("base station {} refresh: "+parentId);
|
||||
device = delegate.findByParentId(parentId);
|
||||
if (device != null) {
|
||||
subDeviceCache.put(parentId, device);
|
||||
}
|
||||
}
|
||||
return device;
|
||||
}
|
||||
|
||||
public void refresh(String deviceId, String oldParentId){
|
||||
Device device = deviceCache.getIfPresent(deviceId);
|
||||
if (device != null) {
|
||||
if(device.getParentId()!=null) {
|
||||
subDeviceCache.invalidate(device.getParentId());
|
||||
if(oldParentId!=null && !oldParentId.equals(device.getParentId())){
|
||||
subDeviceCache.invalidate(oldParentId);
|
||||
}
|
||||
}
|
||||
deviceCache.invalidate(deviceId);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -4,7 +4,6 @@ import com.imdroid.secapi.dto.GnssStatus;
|
||||
import com.imdroid.sideslope.message.D342LocationMessage;
|
||||
import com.imdroid.sideslope.message.D3F0SelfCheckMessage;
|
||||
import com.imdroid.sideslope.message.D3F2StopIndicationMessage;
|
||||
import com.imdroid.sideslope.sal.Device;
|
||||
|
||||
/**
|
||||
* 设备数据持久化接口,保存:
|
||||
|
||||
@ -5,7 +5,6 @@ import com.imdroid.sideslope.message.BaseMessage;
|
||||
import com.imdroid.sideslope.message.D342LocationMessage;
|
||||
import com.imdroid.sideslope.message.D3F0SelfCheckMessage;
|
||||
import com.imdroid.sideslope.message.D3F2StopIndicationMessage;
|
||||
import com.imdroid.sideslope.sal.Device;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
package com.imdroid.sideslope.sal;
|
||||
package com.imdroid.sideslope.service;
|
||||
|
||||
import com.imdroid.secapi.dto.GnssDevice;
|
||||
import com.imdroid.sideslope.bd.Gga;
|
||||
@ -45,6 +45,8 @@ public class Device {
|
||||
private Integer calcGroupId;
|
||||
private Short opMode;
|
||||
private boolean b562AsCalc = true;//算法版本
|
||||
private Integer basicGroupId;
|
||||
private short gnssSampleRate = 1;
|
||||
|
||||
int d3xxCount = 0;
|
||||
int d3xxbytes = 0;
|
||||
@ -1,4 +1,4 @@
|
||||
package com.imdroid.sideslope.sal;
|
||||
package com.imdroid.sideslope.service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -0,0 +1,58 @@
|
||||
package com.imdroid.sideslope.service;
|
||||
|
||||
import com.imdroid.secapi.dto.GnssGroup;
|
||||
import com.imdroid.secapi.dto.GnssGroupCalc;
|
||||
import com.imdroid.secapi.dto.GnssGroupCalcMapper;
|
||||
import com.imdroid.secapi.dto.GnssGroupMapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
@Service
|
||||
public class GroupParaService {
|
||||
@Autowired
|
||||
GnssGroupMapper basicGroupMapper;
|
||||
@Autowired
|
||||
GnssGroupCalcMapper calcGroupMapper;
|
||||
private ConcurrentHashMap<Integer, GnssGroup> basicGroupMap;
|
||||
private ConcurrentHashMap<Integer, GnssGroupCalc> calcGroupMap;
|
||||
|
||||
public GnssGroup getBasicGroup(Integer groupId){
|
||||
if(basicGroupMap==null){
|
||||
refreshBasicGroup();
|
||||
}
|
||||
return basicGroupMap.get(groupId);
|
||||
}
|
||||
public GnssGroupCalc getCalcGroup(Integer groupId){
|
||||
if(calcGroupMap==null){
|
||||
refreshCalcGroup();
|
||||
}
|
||||
return calcGroupMap.get(groupId);
|
||||
}
|
||||
public void refreshGroup(){
|
||||
refreshBasicGroup();
|
||||
refreshCalcGroup();
|
||||
}
|
||||
void refreshBasicGroup(){
|
||||
if(basicGroupMap==null){
|
||||
basicGroupMap = new ConcurrentHashMap<>();
|
||||
}
|
||||
basicGroupMap.clear();
|
||||
List<GnssGroup> gnssGroupList = basicGroupMapper.selectList(null);
|
||||
for(GnssGroup group:gnssGroupList){
|
||||
basicGroupMap.put(group.getId(),group);
|
||||
}
|
||||
}
|
||||
void refreshCalcGroup(){
|
||||
if(calcGroupMap==null){
|
||||
calcGroupMap = new ConcurrentHashMap<>();
|
||||
}
|
||||
calcGroupMap.clear();
|
||||
List<GnssGroupCalc> gnssGroupList = calcGroupMapper.selectList(null);
|
||||
for(GnssGroupCalc group:gnssGroupList){
|
||||
calcGroupMap.put(group.getId(),group);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,104 @@
|
||||
package com.imdroid.sideslope.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.google.common.cache.Cache;
|
||||
import com.google.common.cache.CacheBuilder;
|
||||
import com.imdroid.secapi.dto.GnssDevice;
|
||||
import com.imdroid.secapi.dto.GnssDeviceMapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* @author Layton
|
||||
* @date 2023/2/3 20:46
|
||||
*/
|
||||
@Component
|
||||
public class LocalDeviceServiceImpl implements DeviceService {
|
||||
@Autowired
|
||||
private GnssDeviceMapper gnssDeviceMapper;
|
||||
|
||||
private static final Cache<String, Device> deviceCache = CacheBuilder.newBuilder().
|
||||
expireAfterAccess(20, TimeUnit.MINUTES).build();
|
||||
|
||||
private static final Cache<String, List<Device>> subDeviceCache = CacheBuilder.newBuilder().
|
||||
expireAfterAccess(10, TimeUnit.MINUTES).build();
|
||||
|
||||
Device getDeviceFromDB(String deviceId){
|
||||
GnssDevice gnssDevice = gnssDeviceMapper.queryByDeviceId(deviceId);
|
||||
if (gnssDevice == null) {
|
||||
return null;
|
||||
}
|
||||
Device device = new Device();
|
||||
device.setTenantId(gnssDevice.getTenantid());
|
||||
device.setDeviceId(gnssDevice.getDeviceid());
|
||||
device.setDeviceType(gnssDevice.getDevicetype());
|
||||
device.setModel(gnssDevice.getModel());
|
||||
device.setParentId(gnssDevice.getParentid());
|
||||
device.setName(gnssDevice.getName());
|
||||
device.setProjectId(gnssDevice.getProject_id());
|
||||
device.setCalcGroupId(gnssDevice.getCalc_group_id());
|
||||
device.setBasicGroupId(gnssDevice.getGroup_id());
|
||||
device.setOpMode(gnssDevice.getOpmode());
|
||||
device.setFwdId(gnssDevice.getFwd_group_id());
|
||||
device.setIPose(gnssDevice.getIpose());
|
||||
device.setIPosn(gnssDevice.getIposn());
|
||||
device.setIPosd(gnssDevice.getIposd());
|
||||
device.setEcefx(gnssDevice.getEcefx());
|
||||
device.setEcefy(gnssDevice.getEcefy());
|
||||
device.setEcefz(gnssDevice.getEcefz());
|
||||
device.setLoggingmode(gnssDevice.getLoggingmode());
|
||||
return device;
|
||||
}
|
||||
|
||||
public List<Device> getDeviceListFromDBByParentId(String parentId) {
|
||||
QueryWrapper<GnssDevice> query = new QueryWrapper();
|
||||
query.eq("parentid", parentId);
|
||||
List<GnssDevice> gnssDeviceList = gnssDeviceMapper.selectList(query);
|
||||
List<Device> deviceList = new ArrayList<>(gnssDeviceList.size());
|
||||
for (GnssDevice gnssDevice : gnssDeviceList) {
|
||||
Device device = findByDeviceId(gnssDevice.getDeviceid());
|
||||
if(device!=null) deviceList.add(device);
|
||||
}
|
||||
return deviceList;
|
||||
}
|
||||
@Override
|
||||
public Device findByDeviceId(String deviceId) {
|
||||
Device device = deviceCache.getIfPresent(deviceId);
|
||||
if (device == null) {
|
||||
device = getDeviceFromDB(deviceId);
|
||||
if (device != null) {
|
||||
deviceCache.put(deviceId, device);
|
||||
}
|
||||
}
|
||||
return device;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Device> findByParentId(String parentId) {
|
||||
List<Device> devices = subDeviceCache.getIfPresent(parentId);
|
||||
if (devices == null) {
|
||||
devices = getDeviceListFromDBByParentId(parentId);
|
||||
if (devices != null) {
|
||||
subDeviceCache.put(parentId, devices);
|
||||
}
|
||||
}
|
||||
return devices;
|
||||
}
|
||||
|
||||
public void refresh(String deviceId, String oldParentId){
|
||||
Device device = deviceCache.getIfPresent(deviceId);
|
||||
if (device != null) {
|
||||
if(device.getParentId()!=null) {
|
||||
subDeviceCache.invalidate(device.getParentId());
|
||||
if(oldParentId!=null && !oldParentId.equals(device.getParentId())){
|
||||
subDeviceCache.invalidate(oldParentId);
|
||||
}
|
||||
}
|
||||
deviceCache.invalidate(deviceId);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -3,7 +3,6 @@ package com.imdroid.sideslope.service;
|
||||
import com.imdroid.secapi.dto.GnssCalcData;
|
||||
import com.imdroid.secapi.dto.GnssStatus;
|
||||
import com.imdroid.secapi.dto.GnssStatusMsg;
|
||||
import com.imdroid.sideslope.sal.Device;
|
||||
|
||||
public interface WarningService {
|
||||
void refreshCfg();
|
||||
|
||||
@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.imdroid.common.util.NumberUtils;
|
||||
import com.imdroid.common.util.WarningLogExecutor;
|
||||
import com.imdroid.secapi.dto.*;
|
||||
import com.imdroid.sideslope.sal.Device;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
@ -3,8 +3,8 @@ package com.imdroid.sideslope.task;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.imdroid.secapi.dto.*;
|
||||
import com.imdroid.sideslope.calc.GNSSCalcFilterService;
|
||||
import com.imdroid.sideslope.sal.Device;
|
||||
import com.imdroid.sideslope.sal.DeviceService;
|
||||
import com.imdroid.sideslope.service.Device;
|
||||
import com.imdroid.sideslope.service.DeviceService;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@ -15,7 +15,6 @@ import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
@ -30,7 +29,7 @@ public class AbnormalDeviceProcessor{
|
||||
private GnssStatusMapper gnssStatusMapper;
|
||||
@Autowired
|
||||
GNSSCalcFilterService filterService;
|
||||
@Resource(name = "local")
|
||||
@Autowired
|
||||
private DeviceService deviceService;
|
||||
|
||||
@Autowired
|
||||
|
||||
@ -4,10 +4,11 @@ import com.imdroid.common.util.DataTypeUtil;
|
||||
import com.imdroid.secapi.client.HttpResp;
|
||||
import com.imdroid.sideslope.calc.MultiLineGNSSCalcService;
|
||||
import com.imdroid.sideslope.calc.SingleLineGNSSCalcService;
|
||||
import com.imdroid.sideslope.sal.Device;
|
||||
import com.imdroid.sideslope.sal.LocalDeviceServiceImpl;
|
||||
import com.imdroid.sideslope.service.Device;
|
||||
import com.imdroid.sideslope.service.LocalDeviceServiceImpl;
|
||||
import com.imdroid.sideslope.server.DeviceChannel;
|
||||
import com.imdroid.sideslope.server.OnlineChannels;
|
||||
import com.imdroid.sideslope.service.GroupParaService;
|
||||
import com.imdroid.sideslope.service.WarningService;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.Unpooled;
|
||||
@ -41,6 +42,8 @@ public class ApiController {
|
||||
SingleLineGNSSCalcService calcService;
|
||||
@Autowired
|
||||
MultiLineGNSSCalcService multiCalcService;
|
||||
@Autowired
|
||||
GroupParaService groupParaService;
|
||||
|
||||
@PostMapping(value = "/config")
|
||||
public HttpResp config(String deviceId, String configuration) {
|
||||
@ -163,14 +166,12 @@ public class ApiController {
|
||||
|
||||
@PostMapping("/group_param_changed")
|
||||
public HttpResp groupParamChanged(){
|
||||
calcService.refreshGroupCalc();
|
||||
multiCalcService.refreshGroupCalc();
|
||||
groupParaService.refreshGroup();
|
||||
HttpResp resp = new HttpResp();
|
||||
resp.setResponseMessage("succeed");
|
||||
return resp;
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/warning_param_changed")
|
||||
public HttpResp warningParamChanged(){
|
||||
warningService.refreshCfg();
|
||||
|
||||
@ -66,7 +66,7 @@ public class GnssDeviceController extends BasicController{
|
||||
}
|
||||
|
||||
@RequestMapping("/page/table/gnss_add_dev")
|
||||
public String gnssUpdateDev(Model m, HttpSession session) {
|
||||
public String gnssAddDev(Model m, HttpSession session) {
|
||||
initModel(m, session);
|
||||
//以下用于下拉框数据
|
||||
List<GnssGroup> gnssGroups = gnssGroupMapper.selectList(null);
|
||||
@ -86,6 +86,34 @@ public class GnssDeviceController extends BasicController{
|
||||
m.addAttribute("gnss_group_list", gnssGroups);
|
||||
m.addAttribute("gnss_group_calc_list", gnssGroupCalcs);
|
||||
m.addAttribute("gnss_group_fwd_list", gnssGroupFwds);
|
||||
m.addAttribute("device", new GnssDevice());
|
||||
|
||||
return "/page/table/gnss_add_dev";
|
||||
}
|
||||
|
||||
@RequestMapping("/page/table/gnss_edit_dev")
|
||||
public String gnssEditDev(Model m, HttpSession session, Integer id) {
|
||||
initModel(m, session);
|
||||
//以下用于下拉框数据
|
||||
List<GnssGroup> gnssGroups = gnssGroupMapper.selectList(null);
|
||||
List<GnssGroupCalc> gnssGroupCalcs = gnssGroupCalcMapper.selectList(null);
|
||||
List<GnssGroupFwd> gnssGroupFwds = gnssGroupFwdMapper.selectList(null);
|
||||
|
||||
List<Tenant> tenants;
|
||||
if(loginRole.equals(Role.SUPER_ADMIN) || loginRole.equals(Role.ADMIN)) {
|
||||
tenants = tenantMapper.selectList(null);
|
||||
}
|
||||
else{
|
||||
QueryWrapper<Tenant> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("id", tenantId);
|
||||
tenants = tenantMapper.selectList(queryWrapper);
|
||||
}
|
||||
GnssDevice device = gnssDeviceMapper.selectById(id);
|
||||
m.addAttribute("tenant_list", tenants);
|
||||
m.addAttribute("gnss_group_list", gnssGroups);
|
||||
m.addAttribute("gnss_group_calc_list", gnssGroupCalcs);
|
||||
m.addAttribute("gnss_group_fwd_list", gnssGroupFwds);
|
||||
m.addAttribute("device", device);
|
||||
|
||||
return "/page/table/gnss_add_dev";
|
||||
}
|
||||
|
||||
@ -94,6 +94,7 @@ public class GnssGroupController extends BasicController {
|
||||
} else{
|
||||
// 更新所有的device同步标志
|
||||
deviceMapper.setSynFlagByGroupId(group.getId());
|
||||
rtcmClient.groupParamChanged();
|
||||
return HttpResult.ok();
|
||||
}
|
||||
}
|
||||
@ -115,7 +116,10 @@ public class GnssGroupController extends BasicController {
|
||||
group.getName());
|
||||
if (num == 0) {
|
||||
return HttpResult.failed();
|
||||
} else return HttpResult.ok();
|
||||
} else {
|
||||
rtcmClient.groupParamChanged();
|
||||
return HttpResult.ok();
|
||||
}
|
||||
}
|
||||
|
||||
/********* 解算参数组 *********/
|
||||
|
||||
BIN
sec-beidou/src/main/resources/static/images/loc_blue.png
Normal file
BIN
sec-beidou/src/main/resources/static/images/loc_blue.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 538 B |
@ -142,8 +142,10 @@
|
||||
var loc_green = new BMapGL.Icon("../images/loc1_green.png", new BMapGL.Size(18, 24));
|
||||
var loc_red = new BMapGL.Icon("../images/loc1_red.png", new BMapGL.Size(18, 24));
|
||||
var loc_orange = new BMapGL.Icon("../images/loc1_orange.png", new BMapGL.Size(18, 24));
|
||||
var loc_blue = new BMapGL.Icon("../images/loc_blue.png", new BMapGL.Size(18, 24));
|
||||
|
||||
initialize();
|
||||
myLocation();
|
||||
|
||||
function initialize() {
|
||||
var point = new BMapGL.Point(116.404, 39.915);
|
||||
@ -234,6 +236,18 @@
|
||||
timer();
|
||||
}
|
||||
|
||||
function myLocation(){
|
||||
var geolocation = new BMapGL.Geolocation();
|
||||
geolocation.getCurrentPosition(function(r){
|
||||
if(this.getStatus() == BMAP_STATUS_SUCCESS){
|
||||
var mk = new BMapGL.Marker(r.point, {
|
||||
icon: loc_blue
|
||||
});
|
||||
map.addOverlay(mk);
|
||||
map.panTo(r.point);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function showAll(){
|
||||
if(marker_state == 2){
|
||||
|
||||
@ -219,11 +219,7 @@
|
||||
maxmin:true,
|
||||
shadeClose: true,
|
||||
area: ['100%', '100%'],
|
||||
content: '../page/table/gnss_add_dev',
|
||||
success: function(layero, index) {
|
||||
var iframe = window['layui-layer-iframe' + index];
|
||||
iframe.setParams(data);
|
||||
}
|
||||
content: '../page/table/gnss_edit_dev?id='+data.id
|
||||
});
|
||||
$(window).on("resize", function () {
|
||||
layer.full(index);
|
||||
|
||||
@ -16,18 +16,19 @@
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="layui-form layuimini-form">
|
||||
<div class="layui-form layuimini-form" th:object="${device}">
|
||||
<input type="hidden" name="id" id="id" th:field="*{id}">
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label required">设备编号</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="deviceid" id="deviceid" lay-verify="required" lay-reqtext="不能为空" placeholder="请输入设备编号" value="" class="layui-input">
|
||||
<input type="text" name="deviceid" id="deviceid" th:field="*{deviceid}" lay-verify="required" lay-reqtext="不能为空" placeholder="请输入设备编号" value="" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label required">使用状态</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="opmode" id="opmode" lay-verify="required" lay-search="">
|
||||
<select name="opmode" id="opmode" th:field="*{opmode}" lay-verify="required" lay-search="">
|
||||
<option value="0">正常</option>
|
||||
<option value="1">维护</option>
|
||||
<option value="2">停用</option>
|
||||
@ -38,7 +39,7 @@
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label required">日志记录</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="loggingmode" id="loggingmode" lay-verify="required" lay-search="">
|
||||
<select name="loggingmode" id="loggingmode" th:field="*{loggingmode}" lay-verify="required" lay-search="">
|
||||
<option value="0">不记录(除了自检和停止消息)</option>
|
||||
<option value="1">记录</option>
|
||||
</select>
|
||||
@ -49,7 +50,7 @@
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label required">产品型号</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="model" id="model" lay-verify="required" lay-search="" lay-filter="device_model">
|
||||
<select name="model" id="model" th:field="*{model}" lay-verify="required" lay-search="" lay-filter="device_model">
|
||||
<option value="0">G505</option>
|
||||
<option value="1">G510</option>
|
||||
</select>
|
||||
@ -69,7 +70,7 @@
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label required">设备类型</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="devicetype" id="devicetype" lay-verify="required" lay-search="" lay-filter="device_type">
|
||||
<select name="devicetype" id="devicetype" th:field="*{devicetype}" lay-verify="required" lay-search="" lay-filter="device_type">
|
||||
<option value="0">监测站</option>
|
||||
<option value="1">基准站</option>
|
||||
</select>
|
||||
@ -78,7 +79,7 @@
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">基站编号</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="number" name="parentid" id="parentid" placeholder="请输入关联基准站编号" value="" class="layui-input">
|
||||
<input type="number" name="parentid" id="parentid" th:field="*{parentid}" placeholder="请输入关联基准站编号" value="" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -86,19 +87,19 @@
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">ECEF X</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="ecefx" id="ecefx" class="layui-input">
|
||||
<input type="text" name="ecefx" id="ecefx" th:field="*{ecefx}" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">Y</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="ecefy" id="ecefy" class="layui-input">
|
||||
<input type="text" name="ecefy" id="ecefy" th:field="*{ecefy}" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">Z</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="ecefz" id="ecefz" class="layui-input">
|
||||
<input type="text" name="ecefz" id="ecefz" th:field="*{ecefz}" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -106,7 +107,7 @@
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label required">基本参数组</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="group_id" id="group_id" lay-verify="required" lay-search="">
|
||||
<select name="group_id" id="group_id" th:field="*{group_id}" lay-verify="required" lay-search="">
|
||||
<option th:each="item : ${gnss_group_list}" th:text="${item.name}" th:value="${item.id}"></option>
|
||||
</select>
|
||||
</div>
|
||||
@ -114,7 +115,7 @@
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label required">解算参数组</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="calc_group_id" id="calc_group_id" lay-verify="required" lay-search="">
|
||||
<select name="calc_group_id" id="calc_group_id" th:field="*{calc_group_id}" lay-verify="required" lay-search="">
|
||||
<option th:each="item : ${gnss_group_calc_list}" th:text="${item.name}" th:value="${item.id}"></option>
|
||||
</select>
|
||||
</div>
|
||||
@ -126,7 +127,7 @@
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label required">所属部门</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="tenantname" id="tenantname" lay-verify="required" lay-search="">
|
||||
<select name="tenantname" id="tenantname" th:field="*{tenantname}" lay-verify="required" lay-search="">
|
||||
<option th:each="item : ${tenant_list}" th:text="${item.name}" th:value="${item.name}"></option>
|
||||
</select>
|
||||
</div>
|
||||
@ -134,13 +135,13 @@
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">项目号</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="project_id" id="project_id" placeholder="请输入项目编号" value="" class="layui-input">
|
||||
<input type="text" name="project_id" id="project_id" th:field="*{project_id}" placeholder="请输入项目编号" value="" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline" th:if="${tenant_id==0}">
|
||||
<label class="layui-form-label">项目2号</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="project2_id" id="project2_id" placeholder="请输入项目编号" value="" class="layui-input">
|
||||
<input type="text" name="project2_id" id="project2_id" th:field="*{project2_id}" placeholder="请输入项目编号" value="" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -148,13 +149,13 @@
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label required">桩号</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="sector" id="sector" value="" class="layui-input">
|
||||
<input type="text" name="sector" id="sector" th:field="*{sector}" value="" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label required">监测点号</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="name" id="name" value="" class="layui-input">
|
||||
<input type="text" name="name" id="name" th:field="*{name}" value="" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -164,7 +165,7 @@
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">推送至</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="fwd_group_id" id="fwd_group_id" lay-search="">
|
||||
<select name="fwd_group_id" id="fwd_group_id" th:field="*{fwd_group_id}" lay-search="">
|
||||
<option value="不推送">不推送</option>
|
||||
<option th:each="item : ${gnss_group_fwd_list}" th:text="${item.name}" th:value="${item.name}"></option>
|
||||
</select>
|
||||
@ -173,7 +174,7 @@
|
||||
<div class="layui-inline" th:if="${tenant_id==0}">
|
||||
<label class="layui-form-label">推送2</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="fwd_group_id2" id="fwd_group_id2" lay-search="">
|
||||
<select name="fwd_group_id2" id="fwd_group_id2" th:field="*{fwd_group_id2}" lay-search="">
|
||||
<option value="不推送">不推送</option>
|
||||
<option th:each="item : ${gnss_group_fwd_list}" th:text="${item.name}" th:value="${item.name}"></option>
|
||||
</select>
|
||||
@ -182,7 +183,7 @@
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">推送名称</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="fwddeviceid" id="fwddeviceid" class="layui-input">
|
||||
<input type="text" name="fwddeviceid" id="fwddeviceid" th:field="*{fwddeviceid}" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -190,19 +191,19 @@
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">初始位置(mm) 东</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="ipose" id="ipose" class="layui-input">
|
||||
<input type="text" name="ipose" id="ipose" th:field="*{ipose}" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">北</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="iposn" id="iposn" class="layui-input">
|
||||
<input type="text" name="iposn" id="iposn" th:field="*{iposn}" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">天</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="iposd" id="iposd" class="layui-input">
|
||||
<input type="text" name="iposd" id="iposd" th:field="*{iposd}" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -210,13 +211,13 @@
|
||||
<div class="layui-form-item" th:if="${role=='SUPER_ADMIN'}">
|
||||
<label class="layui-form-label">ICCID</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="iccid" id="iccid" class="layui-input" placeholder="请输入19-20位的ICCID号码">
|
||||
<input type="text" name="iccid" id="iccid" th:field="*{iccid}" class="layui-input" placeholder="请输入19-20位的ICCID号码">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item" th:if="${role=='SUPER_ADMIN'}">
|
||||
<label class="layui-form-label">备注</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="remark" id="remark" class="layui-input">
|
||||
<input type="text" name="remark" id="remark" th:field="*{remark}" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<hr th:if="${role=='SUPER_ADMIN'}">
|
||||
@ -298,38 +299,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
function setParams(data){
|
||||
var form = layui.form,
|
||||
$ = layui.$;
|
||||
var device_id = $('#deviceid');
|
||||
device_id.val(data.deviceid);
|
||||
device_id.attr('readonly',true);
|
||||
$('#name').val(data.name);
|
||||
$('#devicetype').val(data.devicetype);
|
||||
$('#parentid').val(data.parentid);
|
||||
$('#tenantname').val(data.tenantname);
|
||||
$('#project_id').val(data.project_id);
|
||||
$('#project2_id').val(data.project2_id);
|
||||
$('#group_id').val(data.group_id);
|
||||
$('#calc_group_id').val(data.calc_group_id);
|
||||
$('#fwd_group_id').val(data.fwd_group_id);
|
||||
$('#fwd_group_id2').val(data.fwd_group_id2);
|
||||
$('#opmode').val(data.opmode);
|
||||
$('#loggingmode').val(data.loggingmode);
|
||||
$('#fwddeviceid').val(data.fwddeviceid);
|
||||
$('#ipose').val(data.ipose);
|
||||
$('#iposn').val(data.iposn);
|
||||
$('#iposd').val(data.iposd);
|
||||
$('#ecefx').val(data.ecefx);
|
||||
$('#ecefy').val(data.ecefy);
|
||||
$('#ecefz').val(data.ecefz);
|
||||
$('#model').val(data.model);
|
||||
$('#sector').val(data.sector);
|
||||
$('#remark').val(data.remark);
|
||||
$('#iccid').val(data.iccid);
|
||||
setEcefEditor();
|
||||
form.render();
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user