1、修改ICCID获取的bug
2、增加参数一致性检查的接口
This commit is contained in:
parent
ca793492b5
commit
9b4f7f434c
@ -20,7 +20,8 @@ public interface BeidouClient {
|
|||||||
|
|
||||||
@PostMapping("/device_active")
|
@PostMapping("/device_active")
|
||||||
String onDeviceActive(@RequestParam(name = "deviceId") String deviceId,
|
String onDeviceActive(@RequestParam(name = "deviceId") String deviceId,
|
||||||
@RequestParam(name = "tenantId") Integer tenantId);
|
@RequestParam(name = "tenantId") Integer tenantId,
|
||||||
|
@RequestParam(name = "lastOnlineTime") LocalDateTime lastOnlineTime);
|
||||||
|
|
||||||
@PostMapping("/device_stop")
|
@PostMapping("/device_stop")
|
||||||
String onDeviceStop(@RequestParam(name = "deviceId") String deviceId,
|
String onDeviceStop(@RequestParam(name = "deviceId") String deviceId,
|
||||||
|
|||||||
@ -109,7 +109,7 @@ public class D331RtcmMessageExecutor implements Executor<D331RtcmMessage, Void>
|
|||||||
ThreadManager.getFixedThreadPool().submit(() -> {
|
ThreadManager.getFixedThreadPool().submit(() -> {
|
||||||
// 通知上线
|
// 通知上线
|
||||||
try {
|
try {
|
||||||
beidouClient.onDeviceActive(deviceBs.getDeviceId(), deviceBs.getTenantId());
|
beidouClient.onDeviceActive(deviceBs.getDeviceId(), deviceBs.getTenantId(),lastCycleDevice.getLastRxTime());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error(e.toString());
|
logger.error(e.toString());
|
||||||
}
|
}
|
||||||
|
|||||||
@ -64,7 +64,7 @@ public class D341LocationMessageExecutor implements Executor<D341LocationMessage
|
|||||||
ThreadManager.getFixedThreadPool().submit(() -> {
|
ThreadManager.getFixedThreadPool().submit(() -> {
|
||||||
// 通知上线
|
// 通知上线
|
||||||
try {
|
try {
|
||||||
beidouClient.onDeviceActive(device.getDeviceId(), device.getTenantId());
|
beidouClient.onDeviceActive(device.getDeviceId(), device.getTenantId(),lastCycleDevice.getLastRxTime());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -41,8 +41,6 @@ public class D3F0SelfCheckMessageExecutor implements Executor<D3F0SelfCheckMessa
|
|||||||
@Autowired
|
@Autowired
|
||||||
private DataPersistService dataPersistService;
|
private DataPersistService dataPersistService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private GnssDeviceMapper gnssDeviceMapper;
|
|
||||||
@Autowired
|
|
||||||
GnssMsgMapper msgMapper;
|
GnssMsgMapper msgMapper;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
@ -68,8 +66,6 @@ public class D3F0SelfCheckMessageExecutor implements Executor<D3F0SelfCheckMessa
|
|||||||
device.updateRx(message.getHeader(),message.getLen(),1);
|
device.updateRx(message.getHeader(),message.getLen(),1);
|
||||||
|
|
||||||
ThreadManager.getFixedThreadPool().submit(() -> {
|
ThreadManager.getFixedThreadPool().submit(() -> {
|
||||||
// 检查是否需要更新设备的 ICCID
|
|
||||||
checkAndAskICCID(device);
|
|
||||||
// 检查是否需要对设备的F9P进行冷启动操作
|
// 检查是否需要对设备的F9P进行冷启动操作
|
||||||
if(device.getDeviceType() == Device.DEVICE_ROVER){
|
if(device.getDeviceType() == Device.DEVICE_ROVER){
|
||||||
if(device.getModel() == GnssDevice.MODEL_G505){
|
if(device.getModel() == GnssDevice.MODEL_G505){
|
||||||
@ -86,7 +82,8 @@ public class D3F0SelfCheckMessageExecutor implements Executor<D3F0SelfCheckMessa
|
|||||||
beidouClient.onLine(lastGnssStatus.getDeviceid(),
|
beidouClient.onLine(lastGnssStatus.getDeviceid(),
|
||||||
lastGnssStatus.getTenantid(), lastGnssStatus.getUpdatetime());
|
lastGnssStatus.getTenantid(), lastGnssStatus.getUpdatetime());
|
||||||
} else {
|
} else {
|
||||||
beidouClient.onDeviceActive(message.getId(), device.getTenantId());
|
beidouClient.onDeviceActive(message.getId(), device.getTenantId(),
|
||||||
|
(lastGnssStatus==null)?null:lastGnssStatus.getUpdatetime());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e){
|
catch (Exception e){
|
||||||
@ -183,28 +180,6 @@ public class D3F0SelfCheckMessageExecutor implements Executor<D3F0SelfCheckMessa
|
|||||||
rtcmClient.config(device.getDeviceId(), sendCmd);
|
rtcmClient.config(device.getDeviceId(), sendCmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
void checkAndAskICCID(Device device){
|
|
||||||
// 如果设备的 ICCID 存在,那么就不用发送 "AT+ICCID" 指令
|
|
||||||
|
|
||||||
if(device.getIccid() != null && !device.getIccid().trim().isEmpty()){
|
|
||||||
GnssDevice gnssDevice = gnssDeviceMapper.queryByDeviceId(device.getDeviceId());
|
|
||||||
if(gnssDevice.getIccid() != null && !gnssDevice.getIccid().trim().isEmpty()){
|
|
||||||
// 状态和流量查询更新需要 1-2 小时,期间 DataPersistService 更新可能不及时
|
|
||||||
// 若是数据库的设备已经更新了 iccid 号,将它同步到 DataPersistService 缓存中
|
|
||||||
device.setIccid(gnssDevice.getIccid());
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
String sendCmd = "AT+ICCID";
|
|
||||||
int msgType = 0xD310 + 10; // DTU
|
|
||||||
short len = (short) (sendCmd.length() + 5);
|
|
||||||
sendCmd = Integer.toHexString(msgType) + HexUtil.Short2HexString(len)+
|
|
||||||
HexUtil.Int2HexString(Integer.parseInt(device.getDeviceId()))+
|
|
||||||
"01"+HexUtil.String2HexString(sendCmd);
|
|
||||||
rtcmClient.config(device.getDeviceId(),sendCmd);
|
|
||||||
// TODO: 将这个消息写到 msg 表中
|
|
||||||
logger.info(sendCmd);
|
|
||||||
}
|
|
||||||
private void checkAndResetBTGnss(Device device){
|
private void checkAndResetBTGnss(Device device){
|
||||||
if(device.getNoFixedAndFloatResult()>0 &&device.getAbnormalD341Num()>10){
|
if(device.getNoFixedAndFloatResult()>0 &&device.getAbnormalD341Num()>10){
|
||||||
if(isBaseStationFwd(device)) startBTResetTask(device);
|
if(isBaseStationFwd(device)) startBTResetTask(device);
|
||||||
|
|||||||
@ -14,6 +14,7 @@ import java.time.LocalDateTime;
|
|||||||
|
|
||||||
@Controller
|
@Controller
|
||||||
public class APIController extends BasicController{
|
public class APIController extends BasicController{
|
||||||
|
final String getWorkCycleCmd = "d3120005009034D301";
|
||||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yy-MM-dd HH:mm:ss");
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yy-MM-dd HH:mm:ss");
|
||||||
@Autowired
|
@Autowired
|
||||||
RtcmClient rtcmClient;
|
RtcmClient rtcmClient;
|
||||||
@ -46,6 +47,9 @@ public class APIController extends BasicController{
|
|||||||
deviceMapper.updateById(device);
|
deviceMapper.updateById(device);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if(msgType == 0xd312){
|
||||||
|
// 一致性检查
|
||||||
|
}
|
||||||
|
|
||||||
// 保存, debug 01 02上来的原始数据不保存
|
// 保存, debug 01 02上来的原始数据不保存
|
||||||
if(msgType != 0xd313 || configAck.length()<100) {
|
if(msgType != 0xd313 || configAck.length()<100) {
|
||||||
@ -80,7 +84,7 @@ public class APIController extends BasicController{
|
|||||||
@PostMapping(value = "/api/device_online")
|
@PostMapping(value = "/api/device_online")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public String onLine(String deviceId, Integer tenantId, LocalDateTime lastOnlineTime) {
|
public String onLine(String deviceId, Integer tenantId, LocalDateTime lastOnlineTime) {
|
||||||
onDeviceActive(deviceId,tenantId);
|
onDeviceActive(deviceId,tenantId,lastOnlineTime);
|
||||||
|
|
||||||
// 检查是否自动补传
|
// 检查是否自动补传
|
||||||
GnssDevice device = deviceMapper.queryByDeviceId(deviceId);
|
GnssDevice device = deviceMapper.queryByDeviceId(deviceId);
|
||||||
@ -114,11 +118,13 @@ public class APIController extends BasicController{
|
|||||||
/****** device active *******/
|
/****** device active *******/
|
||||||
@PostMapping(value = "/api/device_active")
|
@PostMapping(value = "/api/device_active")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public String onDeviceActive(String deviceId, Integer tenantId) {
|
public String onDeviceActive(String deviceId, Integer tenantId, LocalDateTime lastOnlineTime) {
|
||||||
|
|
||||||
// 检查有没有待配置的参数
|
// 检查有没有待配置的参数
|
||||||
GnssDevice device = deviceMapper.queryByDeviceId(deviceId);
|
GnssDevice device = deviceMapper.queryByDeviceId(deviceId);
|
||||||
if(device!=null && !device.getSyn()){
|
if(device == null) return null;
|
||||||
|
|
||||||
|
if(!device.getSyn()){
|
||||||
GnssGroup gnssGroup = groupMapper.selectById(device.getGroup_id());
|
GnssGroup gnssGroup = groupMapper.selectById(device.getGroup_id());
|
||||||
if(gnssGroup != null){
|
if(gnssGroup != null){
|
||||||
String config = gnssGroup.getConfigCmd(device);
|
String config = gnssGroup.getConfigCmd(device);
|
||||||
@ -145,9 +151,31 @@ public class APIController extends BasicController{
|
|||||||
saveMsg(deviceId, tenantId,cacheCmd.getMsgtype(), cacheCmd.getCmd(), true);
|
saveMsg(deviceId, tenantId,cacheCmd.getMsgtype(), cacheCmd.getCmd(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 检查参数一致性
|
||||||
|
if(lastOnlineTime!=null){
|
||||||
|
if(lastOnlineTime.isBefore(LocalDateTime.now().minusMinutes(50))){
|
||||||
|
rtcmClient.config(deviceId, getWorkCycleCmd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查iccid
|
||||||
|
checkAndAskICCID(device);
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void checkAndAskICCID(GnssDevice device){
|
||||||
|
if(device.getIccid() == null) {
|
||||||
|
String sendCmd = "AT+ICCID";
|
||||||
|
int msgType = 0xD310 + 10; // DTU
|
||||||
|
short len = (short) (sendCmd.length() + 5);
|
||||||
|
sendCmd = Integer.toHexString(msgType) + HexUtil.Short2HexString(len) +
|
||||||
|
HexUtil.Int2HexString(Integer.parseInt(device.getDeviceid())) +
|
||||||
|
"01" + HexUtil.String2HexString(sendCmd);
|
||||||
|
rtcmClient.config(device.getDeviceid(), sendCmd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/****** device stop *******/
|
/****** device stop *******/
|
||||||
@PostMapping(value = "/api/device_stop")
|
@PostMapping(value = "/api/device_stop")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user