自检时检查设备的 ICCID 是否存在
1.若是不存在则发送“AT+ICCID”命令给 DTU 查询 2. 数据表 gnssdevices 需要新增:ALTER TABLE gnssdevices ADD COLUMN iccid VARCHAR(36) COMMENT 'ICCID号,唯一'; 3. 新增 simcards 表
This commit is contained in:
parent
74a0747a3c
commit
1920906272
@ -17,6 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Timer;
|
import java.util.Timer;
|
||||||
@ -68,7 +69,8 @@ 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(() -> {
|
||||||
testAskICCID(device);
|
// 检查是否需要更新设备的 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){
|
||||||
@ -182,10 +184,20 @@ public class D3F0SelfCheckMessageExecutor implements Executor<D3F0SelfCheckMessa
|
|||||||
rtcmClient.config(device.getDeviceId(), sendCmd);
|
rtcmClient.config(device.getDeviceId(), sendCmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
void testAskICCID(Device device){
|
void checkAndAskICCID(Device device){
|
||||||
String sendCmd = "d31a000D0080F34C0141542B4943434944";
|
// 如果设备的 ICCID 存在,那么就不用发送 "AT+ICCID" 指令
|
||||||
HttpResp<HashMap<String, Object>> rsp = rtcmClient.configByUdp(device.getDeviceId(),sendCmd);
|
if(device.getIccid() != null && !device.getIccid().trim().isEmpty()){
|
||||||
logger.info(rsp.toString());
|
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.configByUdp(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){
|
||||||
|
|||||||
@ -59,6 +59,9 @@ public class APIController extends BasicController{
|
|||||||
//转成字符串
|
//转成字符串
|
||||||
String dtuAck = configAck.substring(9*2);
|
String dtuAck = configAck.substring(9*2);
|
||||||
rxInfo += configAck+"("+HexUtil.HexString2String(dtuAck)+")";
|
rxInfo += configAck+"("+HexUtil.HexString2String(dtuAck)+")";
|
||||||
|
|
||||||
|
// 检查是否需要更新 ICCID
|
||||||
|
updateICCID(device,dtuAck);
|
||||||
}
|
}
|
||||||
else if(msgType == 0xd313&&configAck.length()>=100){
|
else if(msgType == 0xd313&&configAck.length()>=100){
|
||||||
//转成字符串
|
//转成字符串
|
||||||
@ -192,4 +195,20 @@ public class APIController extends BasicController{
|
|||||||
msgMapper.insert(gnssMsg);
|
msgMapper.insert(gnssMsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void updateICCID(GnssDevice device,String dtuAck){
|
||||||
|
if(dtuAck.contains("2B49434349443A")){
|
||||||
|
// “2B49434349443A” 是“ +ICCID: ”的十六进制数据串
|
||||||
|
// 如果部署 ICCID 的信息,那么就不要做下面的处理
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
String content = HexUtil.HexString2String(dtuAck);
|
||||||
|
if(content.contains("+ICCID:")){
|
||||||
|
System.out.println(content);
|
||||||
|
String iccid = content.substring(content.indexOf("+ICCID:") + 8).trim();
|
||||||
|
iccid = iccid.split("\r\n")[0].trim();
|
||||||
|
// 更新设备的ICCID
|
||||||
|
device.setIccid(iccid);
|
||||||
|
deviceMapper.updateById(device);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -68,6 +68,7 @@ CREATE TABLE IF NOT EXISTS `gnssdevices` (
|
|||||||
`imei` varchar(16) DEFAULT NULL,
|
`imei` varchar(16) DEFAULT NULL,
|
||||||
`model` smallint DEFAULT 0,
|
`model` smallint DEFAULT 0,
|
||||||
`loggingmode` smallint DEFAULT 0 COMMENT '日志模式: 0-精简模式(仅D3F0和D3F2), 1-完整模式',
|
`loggingmode` smallint DEFAULT 0 COMMENT '日志模式: 0-精简模式(仅D3F0和D3F2), 1-完整模式',
|
||||||
|
`iccid` VARCHAR(36) DEFAULT NULL COMMENT 'ICCID号,唯一',
|
||||||
PRIMARY KEY (`id`)
|
PRIMARY KEY (`id`)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||||
|
|
||||||
@ -325,6 +326,9 @@ CREATE TABLE IF NOT EXISTS `ApiKey` (
|
|||||||
PRIMARY KEY (`id`)
|
PRIMARY KEY (`id`)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||||
|
|
||||||
|
/***
|
||||||
|
GNSS 单次解记录表
|
||||||
|
*/
|
||||||
CREATE TABLE IF NOT EXISTS `gnssdevicesinglerecords` (
|
CREATE TABLE IF NOT EXISTS `gnssdevicesinglerecords` (
|
||||||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||||
`deviceid` varchar(64) NOT NULL COMMENT '设备ID',
|
`deviceid` varchar(64) NOT NULL COMMENT '设备ID',
|
||||||
@ -338,3 +342,23 @@ CREATE TABLE IF NOT EXISTS `gnssdevicesinglerecords` (
|
|||||||
KEY `idx_deviceid_createtime` (`deviceid`,`createtime`),
|
KEY `idx_deviceid_createtime` (`deviceid`,`createtime`),
|
||||||
KEY `idx_createtime` (`createtime`)
|
KEY `idx_createtime` (`createtime`)
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='GNSS单次解算记录表';
|
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='GNSS单次解算记录表';
|
||||||
|
|
||||||
|
/***
|
||||||
|
SIM卡记录表
|
||||||
|
*/
|
||||||
|
CREATE TABLE IF NOT EXISTS `simcards` (
|
||||||
|
`id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,唯一',
|
||||||
|
`updatetime` DATETIME DEFAULT NULL COMMENT '最新一次查询接口记录的时间',
|
||||||
|
`iccid` VARCHAR(36) NOT NULL COMMENT 'ICCID号,唯一',
|
||||||
|
`msisd` VARCHAR(20) NOT NULL COMMENT '物联卡号码,SIM号,唯一',
|
||||||
|
`deviceid` VARCHAR(20) DEFAULT NULL COMMENT '设备ID号',
|
||||||
|
`status` TINYINT DEFAULT -1 COMMENT 'SIM卡状态(-1:未知, 1:待激活, 2:已激活, 3:停机, 4:注销, 5:库存, 6:可测试, 7:失效, 99:号码不存在)',
|
||||||
|
`remaining` DECIMAL(10,2) DEFAULT 0.00 COMMENT '剩余流量,单位为MB,保留两位小数',
|
||||||
|
`total` DECIMAL(10,2) DEFAULT 0.00 COMMENT '总流量,单位为MB,保留两位小数',
|
||||||
|
`used` DECIMAL(10,2) DEFAULT 0.00 COMMENT '已用流量,单位为MB,保留两位小数',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `uk_iccid` (`iccid`),
|
||||||
|
UNIQUE KEY `uk_msisd` (`msisd`),
|
||||||
|
INDEX `idx_deviceid` (`deviceid`),
|
||||||
|
INDEX `idx_status` (`status`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='SIM卡信息表';
|
||||||
Loading…
x
Reference in New Issue
Block a user