自检时检查设备的 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 javax.annotation.Resource;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.HashMap;
|
||||
import java.util.Timer;
|
||||
@ -68,7 +69,8 @@ public class D3F0SelfCheckMessageExecutor implements Executor<D3F0SelfCheckMessa
|
||||
device.updateRx(message.getHeader(),message.getLen(),1);
|
||||
|
||||
ThreadManager.getFixedThreadPool().submit(() -> {
|
||||
testAskICCID(device);
|
||||
// 检查是否需要更新设备的 ICCID
|
||||
checkAndAskICCID(device);
|
||||
// 检查是否需要对设备的F9P进行冷启动操作
|
||||
if(device.getDeviceType() == Device.DEVICE_ROVER){
|
||||
if(device.getModel() == GnssDevice.MODEL_G505){
|
||||
@ -182,10 +184,20 @@ public class D3F0SelfCheckMessageExecutor implements Executor<D3F0SelfCheckMessa
|
||||
rtcmClient.config(device.getDeviceId(), sendCmd);
|
||||
}
|
||||
|
||||
void testAskICCID(Device device){
|
||||
String sendCmd = "d31a000D0080F34C0141542B4943434944";
|
||||
HttpResp<HashMap<String, Object>> rsp = rtcmClient.configByUdp(device.getDeviceId(),sendCmd);
|
||||
logger.info(rsp.toString());
|
||||
void checkAndAskICCID(Device device){
|
||||
// 如果设备的 ICCID 存在,那么就不用发送 "AT+ICCID" 指令
|
||||
if(device.getIccid() != null && !device.getIccid().trim().isEmpty()){
|
||||
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){
|
||||
if(device.getNoFixedAndFloatResult()>0 &&device.getAbnormalD341Num()>10){
|
||||
|
||||
@ -59,6 +59,9 @@ public class APIController extends BasicController{
|
||||
//转成字符串
|
||||
String dtuAck = configAck.substring(9*2);
|
||||
rxInfo += configAck+"("+HexUtil.HexString2String(dtuAck)+")";
|
||||
|
||||
// 检查是否需要更新 ICCID
|
||||
updateICCID(device,dtuAck);
|
||||
}
|
||||
else if(msgType == 0xd313&&configAck.length()>=100){
|
||||
//转成字符串
|
||||
@ -192,4 +195,20 @@ public class APIController extends BasicController{
|
||||
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,
|
||||
`model` smallint DEFAULT 0,
|
||||
`loggingmode` smallint DEFAULT 0 COMMENT '日志模式: 0-精简模式(仅D3F0和D3F2), 1-完整模式',
|
||||
`iccid` VARCHAR(36) DEFAULT NULL COMMENT 'ICCID号,唯一',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
@ -325,6 +326,9 @@ CREATE TABLE IF NOT EXISTS `ApiKey` (
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
/***
|
||||
GNSS 单次解记录表
|
||||
*/
|
||||
CREATE TABLE IF NOT EXISTS `gnssdevicesinglerecords` (
|
||||
`id` bigint NOT NULL AUTO_INCREMENT 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_createtime` (`createtime`)
|
||||
) 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