芯片管理平台数据统计(六)
M2M 写卡文件同步
各系统向芯片管理平台提交数据
各系统包括联调平台、广和通等
请求 URL:
请求方式:
- POST
参数形式:
- form-data
参数:
参数名 | 位置 | 类型 | 说明 | 是否必填 |
---|---|---|---|---|
access_token | header | String | 用户 token | 是 |
page | url | int | 当前页 | 是 |
count | url | int | 每页数据条数 | 是 |
startTime | url | String | 开始时间 | 是 |
endTime | url | String | 结束时间 | 是 |
返回:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
eid | String | 客户 ID | |
oldMissdn | String | 原号码 | |
newMissdn | String | 新号码 | |
status | String | 状态 0:失败 ;1:成功 | |
province | String | 新号码对应省公司编码 | |
time | String | 申请时间 yyyyMMddHHmmss | |
systemName | String | 新号码的信息来自于哪个系统(cmiot、pboss) |
返回示例
{
"code": 200,
"data": [
{
"oldMissdn": "1064848990619",
"newMissdn": "1064848990620",
"eid": "151810114A1040003517",
"province": "531",
"systemName": "pboss",
"time": "20191012095406",
"status": "0"
},
{
"oldMissdn": "1440158770998",
"newMissdn": "1440158771408",
"eid": "151810114A1040009185",
"province": "531",
"systemName": "pboss",
"time": "20191011202729",
"status": "0"
},
...
],
"cnmessage": "操作成功"
}
备注
芯片管理平台存储各系统和抽取自身数据
写卡记录表(当月数据存储)
write_card_records
为减少数据读写压力,只存储当月写卡数据,在次月初将该表数据全部迁移到历史表。
字段名 | 类型 | 长度 | 说明 |
---|---|---|---|
id | bigint | id | |
eid | varchar | 客户 ID | |
old_missdn | varchar | 原号码 | |
new_missdn | varchar | 新号码 | |
status | varchar | 状态 0:失败 ;1:成功 | |
province | varchar | 新号码对应省公司编码 | |
time | varchar | 申请时间 yyyyMMddHHmmss | |
create_time | datetime | 创建时间 | |
update_time | datetime | 更新时间 | |
data_from | int | 数据来源 (1 芯片管理平台、2 联调平台) | |
data_integrity | int | 数据是否完整(0 不完整、1 完整) | |
not_integrity_reason | varchar | 数据不完整原因,多个原因,逗号分隔 | |
systemName | varchar | 写卡服务系统(cmiot、pboss) |
建表 sql
DROP TABLE IF EXISTS write_card_records;
CREATE TABLE write_card_records (
id bigint(20) NOT NULL AUTO_INCREMENT,
eid varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '客户ID',
old_missdn varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '原号码',
new_missdn varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '新号码',
status varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '状态 0:失败 ;1:成功',
province varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '新号码对应省公司编码',
time varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '申请时间yyyyMMddHHmmss',
create_time datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
update_time datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
data_from int(11) NULL DEFAULT 0 COMMENT '数据来源(1芯片管理平台、2联调平台)',
data_integrity int(11) NULL DEFAULT 0 COMMENT '数据是否完整(0不完整、1完整)',
not_integrity_reason varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '数据不完整原因,多个原因,逗号分隔',
systemName varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '写卡服务系统(cmiot、pboss)',
PRIMARY KEY (id) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
写卡记录历史表(历史数据存储)
存储除当月外所有历史写卡数据
write_card_records_history
字段名 | 类型 | 长度 | 说明 |
---|---|---|---|
id | bigint | id | |
eid | varchar | 客户 ID | |
old_missdn | varchar | 原号码 | |
new_missdn | varchar | 新号码 | |
status | varchar | 状态 0:失败 ;1:成功 | |
province | varchar | 新号码对应省公司编码 | |
time | varchar | 申请时间 yyyyMMddHHmmss | |
create_time | datetime | 创建时间 | |
update_time | datetime | 更新时间 | |
data_from | int | 数据来源 (1 芯片管理平台、2 联调平台) | |
data_integrity | int | 数据是否完整(0 不完整、1 完整) | |
not_integrity_reason | varchar | 数据不完整原因,多个原因,逗号分隔 | |
systemName | varchar | 写卡服务系统(cmiot、pboss) |
建表 sql
DROP TABLE IF EXISTS write_card_records_history;
CREATE TABLE write_card_records_history (
id bigint(20) NOT NULL AUTO_INCREMENT,
eid varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '客户ID',
old_missdn varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '原号码',
new_missdn varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '新号码',
status varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '状态 0:失败 ;1:成功',
province varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '新号码对应省公司编码',
time varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '申请时间yyyyMMddHHmmss',
create_time datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
update_time datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
data_from int(11) NULL DEFAULT 0 COMMENT '数据来源(1芯片管理平台、2联调平台)',
data_integrity int(11) NULL DEFAULT 0 COMMENT '数据是否完整(0不完整、1完整)',
not_integrity_reason varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '数据不完整原因,多个原因,逗号分隔',
systemName varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '写卡服务系统(cmiot、pboss)',
PRIMARY KEY (id) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
写卡文件生成记录表
存储每天生成的写卡文件记录
write_card_post_file
字段名 | 类型 | 长度 | 说明 |
---|---|---|---|
id | bigint | id | |
file_name | varchar | 写卡文件名称 | |
start_time | varchar | 开始时间 yyyyMMddHHmmss | |
end_time | varchar | 结束时间 yyyyMMddHHmmss | |
phone_source | varchar | 写卡类型(cmiot,pboss) | |
success_count | varchar | 成功数量 | |
create_time | datetime | 创建时间 | |
update_time | datetime | 更新时间 |
建表 sql
DROP TABLE IF EXISTS write_card_post_file;
CREATE TABLE write_card_post_file (
id int(6) NOT NULL AUTO_INCREMENT,
file_name varchar(200) NOT NULL COMMENT '写卡文件名称',
start_time varchar(50) NULL DEFAULT NULL COMMENT '开始时间yyyyMMddHHmmss',
end_time varchar(50) NULL DEFAULT NULL COMMENT '结束时间yyyyMMddHHmmss',
phone_source varchar(5) NOT NULL COMMENT '写卡类型(cmiot,pboss)',
success_count int(8) DEFAULT '0' COMMENT '成功数量',
create_time datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
update_time datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='写卡文件生成记录表';
cmiot 码号获取省公司编号
phone_number_info_from_ctboss 码号和省公司对应表
province_id_contrast 本地省公司 id 与 ctboss 省公司 id 对照表
写卡数据归属
写卡数据归属 CMIOT 还是 PBOSS 不是根据码号的来源,而是根据调用的写卡服务归属来区分,
CMIOT 和 PBOSS 分别生成一份写卡详单数据文件。
graph BT
id1[联调平台]-->|调用写卡平台写卡|id2[杭研];
id3[广和通]-->|调用写卡平台写卡|id2;
id4[芯片管理平台]-->|调用写卡平台写卡|id2;
id4-->|调用写卡平台写卡|id5[cmiot写卡平台];
id2-->|最终归属|id6[PBOSS];
id5-->|最终归属|id7[CMIOT];
数据传输过程
graph BT
id1[联调平台2]-->|响应芯片管理平台请求向其传输数据|id2[芯片管理平台1];
id101[写卡平台3]-->|响应芯片管理平台请求向其传输数据|id2;
subgraph 芯片管理平台
id2-->|分析联调平台写卡数据|id3[写卡记录表];
id2-->|分析写卡平台写卡数据|id3[写卡记录表];
id2-->|分析自身写卡数据|id3;
id3-->|下月初将写卡记录表数据转移|id4[写卡记录历史表];
end
id3-->|txt文件汇总cmiot最终数据|id7[cmiot写卡文件详单];
id7-->|推送文件|id5[ftp服务];
id3-->|txt文件汇总pboss最终数据|id8[pboss写卡文件详单];
id8-->|推送文件|id5[ftp服务];
id5-->|等待cmiot获取|id6[cmiot];
传输 txt 文件
文件名
M2M_01_014_20190313000000_20190313235959.txt
意为:
第一版命名规则 _ 系统第 14 次导出数据 _ 数据的开始时间 20190313000000_ 结束时间 20190313235959.txt
文件内容
文件头
20190101101022-20190228010203|CMIOT|3
EID|OLDMISSDN|NEWMISSDN|STATUS|PROVINCE|TIME
说明:
第一行为 文件说明行,以“|” 分割,分别是周期信息 yyyyMMddHHmmss-yyyyMMddHHmmss,CMIOT/PBOSS 区分字段 , 本文件中包含的记录数量 ,例如:上述文件为 2019 年 1 月 1 日至 2019 年 2 月 28 日 基于 CMIOT 空写的 3 条记录。
第二行为 表头信息,表示后续数据的对应字段, 表头信息顺序暂时不做固化 ,请解析处理 ,方便后续扩充。
从第三行 开始为实际数据,每行代表一条写卡数据。
文件体
文件体各字段以”|”分割,行最后无分隔符”|”
字段说明
参数名 | 类型 | 长度 | 说明 |
---|---|---|---|
EID | String | 20 | 客户 ID |
OLDMISSDN | String | 13 | 原号码 |
NEWMISSDN | String | 13 | 新号码 |
STATUS | String | 1 | 状态 0:失败 ;1:成功 |
PROVINCE | String | 3 | 新号码对应省公司编码 |
TIME | String | 14 | 申请时间 yyyyMMddHHmmss |
M2M 月对账文件
传输 txt 文件
文件名
M2M_WCDZ_201903_199_20190401120012_001_00F1.txt
意为:
M2M_ 写卡业务对账 _2019 年 3 月份 _ 共有 199 条数据 _ 生成时间是 2019 年 4 月 1 日 12 点 0 分 12 秒 _ 第一版文件结构 _ 随机串.txt。
文件内容
文件头
M2M 月对账文件为文本文件,不含文件头。
文件体
文件体各字段以”|”分割,行最后无分隔符”|”
字段说明
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
STARTTIME | String | 开始时间 | |
ENDTIME | String | 结束时间 | |
PROVINCE_ID | String | 省 ID | |
TYPE_COUNT | String | 拆分阶梯数(固定为 3) | |
SUCCESS | String | 成功总数 | |
TYPE1 | String | 1 阶梯成功数 | |
TYPE2 | String | 2 阶梯成功数 | |
TYPE3 | String | 3 阶梯成功数 | |
SUM_PAY_NOTAX | String | 总金额不含税 | |
SUM_PAY | String | 总金额含税 | |
TYPE1_PAY_NOTAX | String | 1 阶梯不含税 | |
TYPE1_PAY | String | 1 阶梯含税 | |
TYPE2_PAY_NOTAX | String | 2 阶梯不含税 | |
TYPE2_PAY | String | 2 阶梯含税 | |
TYPE3_PAY_NOTAX | String | 3 阶梯不含税 | |
TYPE3_PAY | String | 3 阶梯含税 |
对账单表(存储 cmiot 和芯片管理平台生成的月账单)
statement_of_account
字段名 | 类型 | 长度 | 说明 |
---|---|---|---|
id | int | id | |
start_time | varchar | 开始时间 | |
end_time | varchar | 结束时间 | |
province_id | varchar | 省 ID | |
type_count | varchar | 拆分阶梯数(固定为 3) | |
success | varchar | 成功总数 | |
type1 | varchar | 1 阶梯成功数 | |
type2 | varchar | 2 阶梯成功数 | |
type3 | varchar | 3 阶梯成功数 | |
sum_pay_notax | varchar | 总金额不含税 | |
sum_pay | varchar | 总金额含税 | |
type1_pay_notax | varchar | 1 阶梯不含税 | |
type1_pay | varchar | 1 阶梯含税 | |
type2_pay_notax | varchar | 2 阶梯不含税 | |
type2_pay | varchar | 2 阶梯含税 | |
type3_pay_notax | varchar | 3 阶梯不含税 | |
type3_pay | varchar | 3 阶梯含税 | |
data_from | int | 数据来源(1cmiot、2 芯片管理平台) | |
statement_of_account_id | int | 对应的月对账单表 id | |
result | int | 对账结果(0 不一致,1 一致) | |
create_time | datetime | 创建时间 | |
update_time | datetime | 更新时间 |
建表 sql
DROP TABLE IF EXISTS statement_of_account;
CREATE TABLE statement_of_account (
id int(11) NOT NULL AUTO_INCREMENT,
start_time varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '开始时间',
end_time varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '结束时间',
province_id varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '省 ID',
type_count varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '拆分阶梯数(固定为 3)',
success varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '成功总数',
type1 varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '1 阶梯成功数',
type2 varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '2 阶梯成功数',
type3 varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '3 阶梯成功数',
sum_pay_notax varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '总金额不含税',
sum_pay varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '总金额含税',
type1_pay_notax varchar(50) NULL DEFAULT 0 COMMENT '1 阶梯不含税',
type1_pay varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '1 阶梯含税',
type2_pay_notax varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '2 阶梯不含税',
type2_pay varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '2 阶梯含税',
type3_pay_notax varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '3 阶梯不含税',
type3_pay varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '3 阶梯含税',
data_from int(11) NULL DEFAULT 0 COMMENT '数据来源(1cmiot、2 芯片管理平台)',
statement_of_account_id int(11) NULL DEFAULT 0 COMMENT '对应的月对账单表 id',
result int(11) NULL DEFAULT 0 COMMENT '对账结果(0 不一致,1 一致)',
create_time datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
update_time datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (id) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
数据传输过程
graph BT
id1[cmiot]-->|生成对账文件|id2[ftp服务];
id2-->|等待芯片管理平台获取对账文件|id3[芯片管理平台];
subgraph 芯片管理平台
id3-->|解析对账文件|id4[月对账单表];
id3-->|获取指定时间段写卡数据汇总|id5[写卡记录表];
id3-->|获取指定时间段写卡数据汇总|id6[写卡历史记录表];
id5-->|写卡数据汇总|id7[芯片管理平台对账单];
id6-->|写卡数据汇总|id7;
id7-->|芯片管理平台对账单|id4
id4-->|对比cmiot和芯片管理平台对应的对账单|id8[对账单对比结果]
end
省代码
省公司 | 编码 |
---|---|
全网平台 | 000 |
北京移动 | 100 |
广东移动 | 200 |
上海移动 | 210 |
天津移动 | 220 |
重庆移动 | 230 |
辽宁移动 | 240 |
江苏移动 | 250 |
湖北移动 | 270 |
四川移动 | 280 |
陕西移动 | 290 |
河北移动 | 311 |
山西移动 | 351 |
河南移动 | 371 |
吉林移动 | 431 |
黑龙江移动 | 451 |
内蒙移动 | 471 |
山东移动 | 531 |
安徽移动 | 551 |
浙江移动 | 571 |
福建移动 | 591 |
湖南移动 | 731 |
广西移动 | 771 |
江西移动 | 791 |
贵州移动 | 851 |
云南移动 | 871 |
西藏移动 | 891 |
海南移动 | 898 |
甘肃移动 | 931 |
宁夏移动 | 951 |
青海移动 | 971 |
新疆移动 | 991 |
政企公司 | 001 |
物联网公司 | 002 |
对账单总数据对比
请求 URL:
请求方式:
- POST
参数形式:
- form-data
参数:
参数名 | 位置 | 类型 | 说明 | 是否必填 |
---|---|---|---|---|
currentUserId | url | int | 当前用户的 id | 是 |
startTime | url | String | 开始时间 | 是 |
endTime | url | String | 结束时间 | 是 |
返回:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
chipSystemTotal | String | 芯片管理平台总数 | |
cardToolTotal | String | 新联调平台总数 | |
airWriteTotal | String | 写卡平台总数 | |
allTotal | String | 所有平台总数 | |
cmiotTotal | String | cmiot 总数 |
查询 sql
select sum(if(soa.data_from='1',soa.success,0)) as cmiotTotal, sum(if(soa.data_from='2',soa.success,0)) as allTotal from statement_of_account soa
where 1=1
and start_time>=#{startTime}
and end_time<=#{endTime}
返回示例
备注
月对账单对比
请求 URL:
请求方式:
- POST
参数形式:
- form-data
参数:
参数名 | 位置 | 类型 | 说明 | 是否必填 |
---|---|---|---|---|
currentUserId | url | int | 当前用户的 id | 是 |
startTime | url | String | 开始时间 | 是 |
endTime | url | String | 结束时间 | 是 |
返回:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
chipSystemTotal | String | 芯片管理平台总数 | |
cardToolTotal | String | 新联调平台总数 | |
airWriteTotal | String | 写卡平台总数 | |
allTotal | String | 所有平台总数 | |
cmiotTotal | String | cmiot 总数 | |
month | String | 月份 |