475 lines
15 KiB
Plaintext
475 lines
15 KiB
Plaintext
import { initCenterCache, initCenterCacheByKSPT, initEsModel, initialization } from '../../api/index';
|
||
import AccountTable from '../database/tables/AccountTable';
|
||
import MA_MARKRULE from '../constants/MA_MARKRULE';
|
||
import MA_SYSTEMPARM from '../constants/MA_SYSTEMPARM';
|
||
import MA_MAP_COLLECT from '../constants/MA_MAP_COLLECT';
|
||
import MA_MAP_COLLECT_SHAPE from '../constants/MA_MAP_COLLECT_SHAPE';
|
||
import MA_MAP_ITEMCLASS from '../constants/MA_MAP_ITEMCLASS';
|
||
import MA_MAP_POINT from '../constants/MA_MAP_POINT';
|
||
import MA_MAP_POINT_ITEM from '../constants/MA_MAP_POINT_ITEM';
|
||
import MA_MAP_ROAD from '../constants/MA_MAP_ROAD';
|
||
import MA_MAP_ROAD_LANE from '../constants/MA_MAP_ROAD_LANE';
|
||
import MA_MAP_SUBITEM from '../constants/MA_MAP_SUBITEM';
|
||
import MA_SYSSET from '../constants/MA_SYSSET';
|
||
import ES_CARINFO from '../constants/ES_CARINFO';
|
||
import ES_EXAMPOINTDETAIL from '../constants/ES_EXAMPOINTDETAIL';
|
||
import MA_MARKRULESET from '../constants/MA_MARKRULESET';
|
||
import MA_CDSBINFO from '../constants/MA_CDSBINFO';
|
||
import MA_ITEMINFO from '../constants/MA_ITEMINFO';
|
||
import MA_T_CARPARMSET from '../constants/MA_T_CARPARMSET';
|
||
import ES_CAR_VIDEO_PARAMETER from '../constants/ES_CAR_VIDEO_PARAMETER';
|
||
import IpConfigTable from '../constants/IpConfigTable';
|
||
import CommonConstants from '../constants/CommonConstants';
|
||
import DeviceInfoTable from '../constants/DeviceInfoTable';
|
||
import USER from '../constants/USER';
|
||
import USERLIST from '../constants/USERLIST';
|
||
import util from '@ohos.util';
|
||
import FileModel from '../../pages/judgeSDK/utils/fileModel';
|
||
|
||
import { GlobalConfig } from '../../config/index';
|
||
import prompt from '@ohos.promptAction';
|
||
import DB, { ColumnType } from '../database/DbSql';
|
||
import FileUtils from '../../utils/FileUtils';
|
||
import { TimeSynchronizationRspBody } from '../../model';
|
||
|
||
//读表
|
||
//参数平台
|
||
const map = {
|
||
'MA_MARKRULE': MA_MARKRULE,
|
||
'MA_SYSTEMPARM': MA_SYSTEMPARM,
|
||
'MA_MAP_COLLECT': MA_MAP_COLLECT,
|
||
'MA_MAP_COLLECT_SHAPE': MA_MAP_COLLECT_SHAPE,
|
||
'MA_MAP_ITEMCLASS': MA_MAP_ITEMCLASS,
|
||
'MA_MAP_POINT': MA_MAP_POINT,
|
||
'MA_MAP_POINT_ITEM': MA_MAP_POINT_ITEM,
|
||
'MA_MAP_ROAD': MA_MAP_ROAD,
|
||
'MA_MAP_ROAD_LANE': MA_MAP_ROAD_LANE,
|
||
'MAP_SUBITEM': MA_MAP_SUBITEM,
|
||
'MA_MAP_SUBITEM': MA_MAP_SUBITEM,
|
||
'MA_SYSSET': MA_SYSSET,
|
||
'ES_CARINFO': ES_CARINFO,
|
||
'ES_EXAMPOINTDETAIL': ES_EXAMPOINTDETAIL,
|
||
'MA_MARKRULESET': MA_MARKRULESET,
|
||
'MA_CDSBINFO': MA_CDSBINFO,
|
||
'MA_ITEMINFO': MA_ITEMINFO,
|
||
'MA_T_CARPARMSET': MA_T_CARPARMSET,
|
||
'ES_CAR_VIDEO_PARAMETER': ES_CAR_VIDEO_PARAMETER,
|
||
'USER': USER,
|
||
'USERLIST': USERLIST,
|
||
'IpConfigTable': IpConfigTable,
|
||
'DeviceInfoTable': DeviceInfoTable,
|
||
'CommonConstants': CommonConstants
|
||
}
|
||
const centerToMap = {
|
||
'ItemInfo': MA_ITEMINFO,
|
||
'MarkRule': MA_MARKRULE,
|
||
'SystemParm': MA_SYSTEMPARM,
|
||
'mapCollectList': MA_MAP_COLLECT,
|
||
'mapCollectshapeList': MA_MAP_COLLECT_SHAPE,
|
||
'Map_Collect': MA_MAP_COLLECT,
|
||
'Map_Collect_Shape': MA_MAP_COLLECT_SHAPE,
|
||
'Map_ItemClass': MA_MAP_ITEMCLASS,
|
||
'Map_Point': MA_MAP_POINT,
|
||
'Map_Point_Item': MA_MAP_POINT_ITEM,
|
||
'Map_Road': MA_MAP_ROAD,
|
||
'Map_Road_Lane': MA_MAP_ROAD_LANE,
|
||
'Map_SubItem': MA_MAP_SUBITEM,
|
||
'Sysset': MA_SYSSET,
|
||
'CarInfo': ES_CARINFO,
|
||
'MarkRuleSet': MA_MARKRULE,
|
||
'Cdsbinfo': MA_CDSBINFO,
|
||
'T_CarParmSet': MA_T_CARPARMSET,
|
||
}
|
||
|
||
// 建表操作
|
||
export async function initTable() {
|
||
console.log("sql inittable")
|
||
for (let key in map) {
|
||
await DB.executeSql(map[key].ACCOUNT_TABLE.sqlCreate)
|
||
}
|
||
}
|
||
|
||
export function sqlInsertCommonFn(tableName, resultArr, delFlag = true) {
|
||
return new Promise((resolve, reject) => {
|
||
DB.clearTable(tableName).then((res) => {
|
||
let INSERT_SQL = "INSERT INTO " + tableName
|
||
+ " (" + map[tableName].ACCOUNT_TABLE.columns.toString() + ") VALUES "
|
||
|
||
resultArr.map((data, i) => {
|
||
data.id = !delFlag ? `${i + resultArr.length}` : `${i}`
|
||
let str = '('
|
||
map[tableName].ACCOUNT_TABLE.columns.map((res, index) => {
|
||
if (map[tableName].ACCOUNT_TABLE.columns.length - 1 == index) {
|
||
str += data[res] ? `'${data[res]}'` : 'NULL'
|
||
} else {
|
||
str += (data[res] ? `'${data[res]}'` : 'NULL') + ','
|
||
}
|
||
})
|
||
if (i == resultArr.length - 1) {
|
||
str += ')'
|
||
} else {
|
||
str += '),'
|
||
}
|
||
INSERT_SQL += str
|
||
})
|
||
console.log("sql insert sqlCode", INSERT_SQL)
|
||
DB.executeSql(INSERT_SQL).then(() => {
|
||
console.log('sql insert,', res, 'tableName', tableName)
|
||
resolve(true)
|
||
}).catch((err) => {
|
||
console.log('sql insert err,', JSON.stringify(err), 'tableName', tableName)
|
||
reject(err)
|
||
})
|
||
})
|
||
})
|
||
}
|
||
|
||
//参数平台
|
||
export async function getDataBaseTable(params, reqParam) {
|
||
return new Promise<void>(async (resolve, reject) => {
|
||
const date = new Date()
|
||
if (!reqParam?.paraKdid) {
|
||
prompt.showToast({
|
||
message: 'paraKdid获取失败',
|
||
duration: 3000
|
||
});
|
||
return
|
||
}
|
||
const str = {
|
||
"head": { "time": dateFormat(date) },
|
||
"body":
|
||
{
|
||
"tableName": params.tableName, // 表名
|
||
"paraKdid": reqParam.paraKdid, //参数平台kdid
|
||
"examinationRoomId": reqParam.examinationRoomId, //考试平台kdid
|
||
"typeRsp": "0" // 赋默认值0,无需改变
|
||
}
|
||
}
|
||
let res: any = await initCenterCache(str, reqParam.centerHost)
|
||
if (res.body[params.tableName].length == 0) {
|
||
resolve();
|
||
return
|
||
}
|
||
if (params.tableName == 'MA_SYSSET') {
|
||
res.body[params.tableName] = res.body[params.tableName].filter(res => {
|
||
return res['v_no'] < 300 || res['v_no'] > 700
|
||
})
|
||
}
|
||
sqlInsertCommonFn(params.tableName, res.body[params.tableName], reqParam.context).then((val) => {
|
||
// resolve(val)
|
||
resolve()
|
||
})
|
||
})
|
||
}
|
||
|
||
//依据数组和表名更新sql表
|
||
export async function upDateTableByArray(tableName, arr) {
|
||
return new Promise(async (reslove, reject) => {
|
||
const data = await sqlInsertCommonFn(tableName, arr)
|
||
reslove(data)
|
||
})
|
||
}
|
||
|
||
//更新双中心表
|
||
export async function upDateTable(params, reqParam) {
|
||
return new Promise((resolve, reject) => {
|
||
const date = new Date()
|
||
let paraKdid = reqParam?.paraKdid || ''
|
||
let examinationRoomId = reqParam?.kdid || ''
|
||
if (!paraKdid || !examinationRoomId) {
|
||
resolve(false)
|
||
return
|
||
}
|
||
|
||
const str = {
|
||
"head": { "time": dateFormat(date) },
|
||
"body":
|
||
{
|
||
"tableName": params.tableName, // 表名
|
||
"paraKdid": reqParam.paraKdid, //参数平台kdid
|
||
"examinationRoomId": reqParam.kdid, //考试平台kdid
|
||
"typeRsp": "0" // 赋默认值0,无需改变
|
||
}
|
||
}
|
||
const url = reqParam.centerHost
|
||
|
||
initCenterCache(str, url).then(async (res: ESObject) => {
|
||
if (!res || res == undefined || res == '') {
|
||
resolve(false)
|
||
return
|
||
}
|
||
try {
|
||
const result = await sqlInsertCommonFn(params.tableName, res.body[params.tableName], reqParam.context)
|
||
resolve(result)
|
||
} catch (error) {
|
||
console.log(error)
|
||
}
|
||
})
|
||
});
|
||
}
|
||
|
||
//考试平台
|
||
export async function getMySystemSetTable(params, reqParam) {
|
||
return new Promise<void>((resolve, reject) => {
|
||
const date = new Date()
|
||
if (!reqParam.paraKdid) {
|
||
prompt.showToast({
|
||
message: 'paraKdid获取失败',
|
||
duration: 3000
|
||
});
|
||
return
|
||
}
|
||
const str = {
|
||
"head": { "time": dateFormat(date) },
|
||
"body":
|
||
{
|
||
"tableName": params.tableName, // 表名
|
||
"paraKdid": reqParam?.paraKdid, //参数平台kdid
|
||
"examinationRoomId": reqParam?.kdid, //考试平台kdid
|
||
"typeRsp": "0" // 赋默认值0,无需改变
|
||
}
|
||
}
|
||
initCenterCacheByKSPT(str, reqParam.url).then((res: ESObject) => {
|
||
if (res.body[params.tableName].length == 0) {
|
||
resolve();
|
||
return
|
||
}
|
||
if (params.tableName == 'MA_SYSSET') {
|
||
res.body[params.tableName] = res.body[params.tableName].filter(res => {
|
||
return res['v_no'] >= 300 && res['v_no'] <= 700
|
||
})
|
||
}
|
||
sqlInsertCommonFn(params.tableName, res.body[params.tableName], false).then((result) => {
|
||
// resolve(result)
|
||
resolve()
|
||
})
|
||
})
|
||
|
||
|
||
})
|
||
|
||
}
|
||
|
||
//依据表名同步获取数据
|
||
export async function getSyncData(tableName, context?) {
|
||
return new Promise((resolve, reject) => {
|
||
const column = map[tableName].ACCOUNT_TABLE.columns.map(res => {
|
||
return {
|
||
name: res,
|
||
columnName: res,
|
||
type: ColumnType.STRING
|
||
}
|
||
})
|
||
DB.queryListBySql(`select * from ${tableName}`, column).then(res => {
|
||
console.log("sql MA_SYSSET", JSON.stringify(res))
|
||
resolve(res)
|
||
}).catch(err => {
|
||
console.log("sql err MA_SYSSET", JSON.stringify(err))
|
||
reject(err)
|
||
})
|
||
})
|
||
}
|
||
|
||
export async function delSyncTable(tableName, context?) {
|
||
return new Promise((resolve, reject) => {
|
||
const accountTable = new AccountTable(() => {
|
||
const SQL = `DELETE FROM ${tableName};`
|
||
console.log("sql message 删除操作,表", tableName)
|
||
accountTable.sqlOperate(SQL, tableName, (val) => {
|
||
console.log('teststet3', '删除成功')
|
||
resolve(val)
|
||
})
|
||
}, map[tableName], context);
|
||
|
||
// accountTable.deleteTableData((ret) => {
|
||
// console.log('删除成功')
|
||
// resolve(true)
|
||
// }, tableName, context)
|
||
|
||
})
|
||
}
|
||
|
||
//获取车模、场地模型
|
||
export async function getEsCarModel(context) {
|
||
const date = new Date()
|
||
const timeInfo = AppStorage.get<TimeSynchronizationRspBody>('timeInfo')
|
||
if (!timeInfo?.paraKdid) {
|
||
prompt.showToast({
|
||
message: 'paraKdid获取失败',
|
||
duration: 3000
|
||
});
|
||
return
|
||
}
|
||
const carStr = {
|
||
"head": { "time": dateFormat(date) },
|
||
"body":
|
||
{
|
||
"rtkType": "1", //1:车模 2:场地模型
|
||
"rspType": "0", //返回类型
|
||
"paraKdid": timeInfo.paraKdid, //参数平台kdid
|
||
"examinationRoomId": timeInfo.kdid, //考试平台kdid
|
||
// "carMac":"MAC-HCPAD-210",
|
||
"carMac": AppStorage.get<string>('deviceNo')
|
||
}
|
||
}
|
||
const venueStr = {
|
||
"head": { "time": dateFormat(date) },
|
||
"body":
|
||
{
|
||
"rtkType": "2", //1:车模 2:场地模型
|
||
"rspType": "0", //返回类型
|
||
"paraKdid": timeInfo.paraKdid, //参数平台kdid
|
||
"examinationRoomId": timeInfo.kdid, //考试平台kdid
|
||
// "carMac":"MAC-HCPAD-210",
|
||
"carMac": AppStorage.get<string>('deviceNo')
|
||
}
|
||
}
|
||
|
||
|
||
let carRes: any = await initEsModel(carStr);
|
||
let venueRes: any = await initEsModel(venueStr);
|
||
|
||
const carModel = carRes.body.ES_MODEL[0][1];
|
||
const venueModel = venueRes.body.ES_MODEL[0][2];
|
||
|
||
let tmpBase64Array = carModel.split("\r\n")
|
||
let newBase64Str: string = '';
|
||
for (let i = 0; i < tmpBase64Array.length; ++i) {
|
||
newBase64Str += tmpBase64Array[i];
|
||
}
|
||
const base64 = new util.Base64();
|
||
let result = base64.decodeSync(newBase64Str);
|
||
const fileModel = new FileModel(context);
|
||
await fileModel.initFolder()
|
||
await fileModel.storingFiles(result.buffer)
|
||
}
|
||
|
||
export async function upDataZhongxinginitialization(param) {
|
||
return new Promise(async (resolve, reject) => {
|
||
console.log('teststet00', JSON.stringify(param))
|
||
let flag = true
|
||
if (param.singlePlay) {
|
||
console.log('teststet0', JSON.stringify(param))
|
||
const fileUtil = new FileUtils(param.context)
|
||
const tableList =
|
||
['MA_SYSSET', 'MA_SYSTEMPARM', 'MA_MARKRULE', 'MA_MARKRULESET', 'ES_CARINFO', 'MA_MAP_ROAD', 'MA_MAP_ROAD_LANE',
|
||
'MAP_SUBITEM', 'MA_T_CARPARMSET', 'MA_MAP_ITEMCLASS', 'MA_MAP_POINT', 'MA_MAP_POINT_ITEM'];
|
||
for (let i = 0; i <= tableList.length - 1; i++) {
|
||
const data =
|
||
await fileUtil.readFile(GlobalConfig.comoonfileWriteAddress + `/config/tableList/${tableList[i]}.txt`);
|
||
const result = await sqlInsertCommonFn(tableList[i], JSON.parse(data) || [], param.context)
|
||
|
||
result ? (flag = true) : (flag = false)
|
||
}
|
||
console.log('teststet1', JSON.stringify(param))
|
||
|
||
if (!flag) {
|
||
prompt.showToast({
|
||
message: '本地文件初始化数据库失败',
|
||
duration: 3000
|
||
});
|
||
}
|
||
console.log("init table1")
|
||
resolve(flag)
|
||
return
|
||
}
|
||
if (!param.carId) {
|
||
console.log("init table2")
|
||
resolve(false)
|
||
return
|
||
}
|
||
try {
|
||
const str = {
|
||
"carId": param.carId, // 表名
|
||
"examinationRoomId": param.examinationRoomId, //考试平台kdid
|
||
videoVersion: '1.0',
|
||
judgeVersion: param.judgeVersion,
|
||
shellVersion: param.shellVersion,
|
||
host: param.host
|
||
}
|
||
console.log('daihai2', JSON.stringify(str))
|
||
|
||
initialization(str).then(async (res: ESObject) => {
|
||
console.log('daihai3', JSON.stringify(res))
|
||
if (!res || res.initializationRsp.head.resultCode == 1) {
|
||
console.log('daihai34', JSON.stringify(res))
|
||
console.log("init table3")
|
||
resolve(false)
|
||
return
|
||
}
|
||
let flag
|
||
console.log('resposestart')
|
||
|
||
for (let key in res.initializationRsp.body) {
|
||
if (!centerToMap[key]) {
|
||
continue
|
||
}
|
||
const data = await setSyncCenterSqlData(key, res, param)
|
||
if (!data) {
|
||
console.log("init table4")
|
||
resolve(false)
|
||
}
|
||
}
|
||
resolve(true)
|
||
}).catch((Error) => {
|
||
console.log("init table5", JSON.stringify(Error))
|
||
resolve(false)
|
||
})
|
||
} catch (error) {
|
||
console.log("init table6", JSON.stringify(error))
|
||
resolve(false)
|
||
}
|
||
})
|
||
}
|
||
|
||
function setSyncCenterSqlData(key, res, param) {
|
||
return new Promise(async (resolve, reject) => {
|
||
const mapName = {
|
||
'ItemInfo': 'MA_ITEMINFO',
|
||
'MarkRule': 'MA_MARKRULE',
|
||
'SystemParm': 'MA_SYSTEMPARM',
|
||
'Map_Collect': 'MA_MAP_COLLECT',
|
||
'Map_Collect_Shape': 'MA_MAP_COLLECT_SHAPE',
|
||
'Map_ItemClass': 'MA_MAP_ITEMCLASS',
|
||
'Map_Point': 'MA_MAP_POINT',
|
||
'Map_Point_Item': 'MA_MAP_POINT_ITEM',
|
||
'Map_Road': 'MA_MAP_ROAD',
|
||
'Map_Road_Lane': 'MA_MAP_ROAD_LANE',
|
||
'Map_SubItem': 'MAP_SUBITEM',
|
||
'Sysset': 'MA_SYSSET',
|
||
'CarInfo': 'ES_CARINFO',
|
||
// 'ES_EXAMPOINTDETAIL':ES_EXAMPOINTDETAIL,
|
||
'MarkRuleSet': 'MA_MARKRULESET',
|
||
'Cdsbinfo': 'MA_CDSBINFO',
|
||
'T_CarParmSet': 'MA_T_CARPARMSET',
|
||
}
|
||
let arrList
|
||
if (res.initializationRsp.body[key].record instanceof Array) {
|
||
arrList = res.initializationRsp.body[key].record
|
||
} else {
|
||
arrList = [res.initializationRsp.body[key].record]
|
||
}
|
||
const fileUtil = new FileUtil(param.context)
|
||
const folderPath = await fileUtil.initFolder(`/config/tableList`);
|
||
fileUtil.addFile(`${folderPath}/${mapName[key]}.txt`, JSON.stringify(arrList))
|
||
|
||
console.log('mapName[key]', mapName[key], key)
|
||
sqlInsertCommonFn(mapName[key], arrList, param.context).then((result) => {
|
||
console.log(key, '表建立成功')
|
||
// writeLog('PLC',{
|
||
// time:dateFormat(new Date()),
|
||
// PLC:`${key} 表建立成功`,
|
||
// })
|
||
if (result) {
|
||
resolve(true)
|
||
} else {
|
||
resolve(false)
|
||
}
|
||
}).catch((msg) => {
|
||
reject(false)
|
||
console.log(key, '表建立失败')
|
||
})
|
||
})
|
||
|
||
}
|