diff --git a/entry/src/main/ets/pages/judgeSDK/judge.ets b/entry/src/main/ets/pages/judgeSDK/judge.ets index 6a72df1..4e7a2ca 100644 --- a/entry/src/main/ets/pages/judgeSDK/judge.ets +++ b/entry/src/main/ets/pages/judgeSDK/judge.ets @@ -184,6 +184,37 @@ export default class Judge { private isExamEnd: boolean // 是否发送udp private isUdpEnd: boolean = false + // 处理udp plc信号 + handleUdp = async (msg: string) => { + const stachArr = msg.split(',') + if (stachArr[0] != '#DN_GD' || this.isUdpEnd) { + return + } + const plcData = await this.getPlcData(msg); + // 4.过程数据 + await this.fileLog?.setExamJudgeData(JSON.stringify(plcData)) + //检测到有无锡所设备接入,需要发送特定的数据,供检测 + // if (this.usbService.isWXUSBDevice) { + // const str = await senorToWXDataStr(msg); + // this.usbService.sendUSB(str) + // } + const param350: number = Reflect.get(this.judgeUI.judgeConfigObj, '350') + this.judgeUI.sd = ((param350 == 0 ? plcData.gps.sd : plcData.sensor.cs) as number * 1.852).toFixed(0) + '' + this.judgeUI.dw = (Math.floor(plcData.sensor.dw as number) || 0) + '' + //TODO 暂时关闭差分检测异常 + // await this.checkDwzt(plcData.gps.dwzt,plcData.gps.jdzt); + if (!this.isExamEnd) { + await examJudgeRealExam(plcData) + } + // let udpIndex = AppStorage.get('udpIndex') || 0; + // if (udpIndex % 5 === 0 && !this.isUdpEnd) { + // TODO UPD缺失 + // const judgeUdp = globalThis.judgeUdp + // const bytes = await this.getMessageHeartbeat(this.isExamEnd); + // judgeUdp.send(bytes) + // } + // AppStorage.setOrCreate('udpIndex', udpIndex++) + } //是否手动结束考试 private isManual: boolean = false //UDP服务序列号 @@ -278,37 +309,6 @@ export default class Judge { AppStorage.setOrCreate('msgStr', plc) return tempData } - // 处理udp plc信号 - handleUdp = async (msg: string) => { - const stachArr = msg.split(',') - if (stachArr[0] != '#DN_GD' || this.isUdpEnd) { - return - } - const plcData = await this.getPlcData(msg); - // 4.过程数据 - await this.fileLog?.setExamJudgeData(JSON.stringify(plcData)) - //检测到有无锡所设备接入,需要发送特定的数据,供检测 - // if (this.usbService.isWXUSBDevice) { - // const str = await senorToWXDataStr(msg); - // this.usbService.sendUSB(str) - // } - const param350: number = Reflect.get(this.judgeUI.judgeConfigObj, '350') - this.judgeUI.sd = ((param350 == 0 ? plcData.gps.sd : plcData.sensor.cs) as number * 1.852).toFixed(0) + '' - this.judgeUI.dw = (Math.floor(plcData.sensor.dw as number) || 0) + '' - //TODO 暂时关闭差分检测异常 - // await this.checkDwzt(plcData.gps.dwzt,plcData.gps.jdzt); - if (!this.isExamEnd) { - await examJudgeRealExam(plcData) - } - // let udpIndex = AppStorage.get('udpIndex') || 0; - // if (udpIndex % 5 === 0 && !this.isUdpEnd) { - // TODO UPD缺失 - // const judgeUdp = globalThis.judgeUdp - // const bytes = await this.getMessageHeartbeat(this.isExamEnd); - // judgeUdp.send(bytes) - // } - // AppStorage.setOrCreate('udpIndex', udpIndex++) - } private isEndTip: boolean = false; //本地轨迹回放地址 private trajectoryPath: string @@ -328,40 +328,108 @@ export default class Judge { const code = await writeObjectOut(JSON.parse(examDataStr), "", this.context); } } - // 处理轨迹plc信号 - handleTrajectoryUdp = async (strArr: string[]) => { - let num = 2; - const judgeTimer = setInterval(async () => { - const msgStr = strArr[num]; - if (msgStr == '') { - dConsole.info(JudgeTag, '模拟数据考试结束') - clearInterval(judgeTimer) - this.checkExamIsEnd(true) - return - } - const msg: PLCType = JSON.parse(strArr[num]); - num++ - // 4.过程数据 - this.tempData = msg - this.judgeUI.isDwztRight = (msg?.gps?.dwzt == 4 && msg?.gps?.jdzt == 3); - this.judgeUI.sd = Math.floor(msg?.gps?.sd * 1.852) + ''; - this.judgeUI.dw = Math.floor(msg?.sensor?.dw) + '' - this.plcData = msg - // this.judgeUI.isDwztRight = msg.gps.dwzt == 4; - AppStorage.setOrCreate('msgStr', '') - if (msg.method === 'examJudgeArtificialItem') { - this.setJudgeItem(msg.itemno, msg.type) - } - if (msg.method === 'examJudgeArtificialMark') { - this.setJudgeItem(msg.itemno, msg.serial) - } - await examJudgeRealExam(msg) - // const bytes = await this.getMessageHeartbeat(); - // bytes && globalThis.judgeUdp.send(bytes) + // 项目开始接口同步 + beginProject = async (ksxm: number) => { + const carInfo = AppStorage.get('carInfo'); + const judgeUI = this.judgeUI + const time = GetCurrentTime(); + const project: ProjectInfo = Reflect.get(judgeUI.projectsObj, ksxm) + const sbxh = this.getSbbm(ksxm, this.xmxh) - }, 200) - // TODO 定时器缺失 - // globalThis.judgeTimer = judgeTimer; + const drvexam: DrvexamType = { + lsh: judgeUI.lsh, + kskm: carInfo?.examSubject || "2", + sfzmhm: judgeUI.idCard, + ksxm: project.projectCodeCenter, + sbxh, + ksxl: judgeUI.xldm, + kchp: encodeURI(carInfo?.plateNo || ""), + ksdd: encodeURI(judgeUI.ksdd), + kslx: encodeURI(judgeUI.kslx) || '', + kssj: time + } + const data: RegulatoryInterfaceParams = { + //系统类别 接口序列号 接口标识 + xtlb: '17', + jkxlh: judgeUI.serialNumber, + jkid: '17C52', + drvexam + } + const temp: WR = await this.sendWriteObjectOut(data, this.filePath) + dConsole.info(JudgeTag, '项目开始 end') + if (temp.code === 2300007) { + this.isJudgeDisConnect = true; + } + UploadRegulatoryCodeConversion('17C52', temp.code || 0) + } + // 项目结束接口同步 + endProject = async (ksxm: number) => { + const carInfo = AppStorage.get('carInfo'); + const judgeUI = this.judgeUI; + const time = GetCurrentTime(); + const project: ProjectInfo = Reflect.get(judgeUI.projectsObj, ksxm) + const sbxh = judgeUI.examSubject == '3' ? undefined : this.getSbbm(ksxm, this.xmxh) + + const drvexam: DrvexamType = { + lsh: judgeUI.lsh, + kskm: carInfo?.examSubject || "2", + sfzmhm: judgeUI.idCard, + ksxm: project.projectCodeCenter, + sbxh, + //TODO 操作类型 1:正常 0:撤销该考试记录 + czlx: '1', + ksxl: judgeUI.xldm, + kchp: encodeURI(carInfo?.plateNo || ""), + ksdd: encodeURI(judgeUI.ksdd), + kslx: encodeURI(judgeUI.kslx) || '', + jssj: time + } + const data: RegulatoryInterfaceParams = { + xtlb: '17', + jkxlh: judgeUI.serialNumber, + jkid: '17C55', + drvexam + } + const temp: WR = await this.sendWriteObjectOut(data, this.filePath) + if (temp.code === 2300007) { + this.isJudgeDisConnect = true; + } + dConsole.info(JudgeTag, '项目结束 end') + UploadRegulatoryCodeConversion('17C55', temp.code || 0) + } + // 考试过程照片 + uploadProgressPhoto = async (ksxm: number) => { + const time = GetCurrentTime(); + const judgeUI = this.judgeUI + const plcData = this.plcData + const photoBase64 = await this.getPhoto(); + const carInfo = AppStorage.get('carInfo'); + + const project: ProjectInfo = Reflect.get(judgeUI.projectsObj, ksxm) + const judgeConfig_305: number = Reflect.get(judgeUI.judgeConfigObj, '305') + const drvexam: DrvexamType = { + lsh: judgeUI.lsh, + kskm: carInfo?.examSubject || "2", + ksxm: project.projectCodeCenter, + sfzmhm: judgeUI.idCard, + kchp: encodeURI(carInfo?.plateNo || ""), + zpsj: time, + zp: photoBase64, + cs: Math.floor((judgeConfig_305 == 0 ? (plcData?.gps?.sd || 0) : (plcData?.sensor?.cs || 0)) * 1.852), + ksdd: encodeURI(judgeUI.ksdd) + } + const data: RegulatoryInterfaceParams = { + xtlb: '17', + jkxlh: judgeUI.serialNumber, + jkid: '17C54', + drvexam + }; + const temp: WR = await this.sendWriteObjectOut(data, this.filePath); + if (temp.code === 2300007) { + this.isJudgeDisConnect = true + } + UploadRegulatoryCodeConversion('17C54', temp.code || 0) + dConsole.info(JudgeTag, '上传照片 end') } // 校验考试是否结束 checkExamIsEnd = async (isManual?: boolean) => { @@ -478,33 +546,6 @@ export default class Judge { } } } - //调用监管接口 - sendWriteObjectOut: SendWriteObjectOut = async (data, filePath) => { - const temp = await writeObjectOut(data, filePath, this.context); - dConsole.log(JudgeTag, "wzj", JSON.stringify(temp)) - //断网&网络超时次数计算 - if (temp.code == 2300007 || temp.code == 2300028) { - this.disConnectNum += 1; - if (this.disConnectNum < 5) { - return await this.sendWriteObjectOut(data, filePath) - } - } - - if (this.disConnectNum >= 5) { - dConsole.info('surenjun', '123') - this.judgeUI.errorMsg = '当前的考试过程信息网络传输异常,程序点击确认将重启!'; - this.judgeUI.disConnectErrorOpen = true - } - - this.disConnectNum = 0 - return temp - } - private artSubject3ProjectsCodesArr: number[] = [3, 9, 4, 10, 12, 11] - private lane: LANE = { - road: '', num: 0, count: 0 - } - private videoData?: RecordHandleType - private disConnectNum: number = 0; // 检测扣分、结束项目时该项目是否开始 checkProjectIsStart = async (xmdm: number, currentType: 1 | 2, kf?: MarkRule) => { if (xmdm == 20) { @@ -559,111 +600,70 @@ export default class Judge { return true } } - // 项目开始接口同步 - beginProject = async (ksxm: number) => { - const carInfo = AppStorage.get('carInfo'); - const judgeUI = this.judgeUI - const time = GetCurrentTime(); - const project: ProjectInfo = Reflect.get(judgeUI.projectsObj, ksxm) - const sbxh = this.getSbbm(ksxm, this.xmxh) + // 处理轨迹plc信号 + handleTrajectoryUdp = async (strArr: string[]) => { + let num = 2; + const judgeTimer = setInterval(async () => { + const msgStr = strArr[num]; + if (msgStr == '') { + dConsole.info(JudgeTag, '模拟数据考试结束') + clearInterval(judgeTimer) + this.checkExamIsEnd(true) + return + } + const msg: PLCType = JSON.parse(strArr[num]); + num++ + // 4.过程数据 + this.tempData = msg + this.judgeUI.isDwztRight = (msg?.gps?.dwzt == 4 && msg?.gps?.jdzt == 3); + this.judgeUI.sd = Math.floor(msg?.gps?.sd * 1.852) + ''; + this.judgeUI.dw = Math.floor(msg?.sensor?.dw) + '' + this.plcData = msg + // this.judgeUI.isDwztRight = msg.gps.dwzt == 4; + AppStorage.setOrCreate('msgStr', '') + if (msg.method === 'examJudgeArtificialItem') { + this.setJudgeItem(msg.itemno, msg.type) + } + if (msg.method === 'examJudgeArtificialMark') { + this.setJudgeItem(msg.itemno, msg.serial) + } + await examJudgeRealExam(msg) + // const bytes = await this.getMessageHeartbeat(); + // bytes && globalThis.judgeUdp.send(bytes) - const drvexam: DrvexamType = { - lsh: judgeUI.lsh, - kskm: carInfo?.examSubject || "2", - sfzmhm: judgeUI.idCard, - ksxm: project.projectCodeCenter, - sbxh, - ksxl: judgeUI.xldm, - kchp: encodeURI(carInfo?.plateNo || ""), - ksdd: encodeURI(judgeUI.ksdd), - kslx: encodeURI(judgeUI.kslx) || '', - kssj: time - } - const data: RegulatoryInterfaceParams = { - //系统类别 接口序列号 接口标识 - xtlb: '17', - jkxlh: judgeUI.serialNumber, - jkid: '17C52', - drvexam - } - const temp: WR = await this.sendWriteObjectOut(data, this.filePath) - dConsole.info(JudgeTag, '项目开始 end') - if (temp.code === 2300007) { - this.isJudgeDisConnect = true; - } - UploadRegulatoryCodeConversion('17C52', temp.code || 0) + }, 200) + // TODO 定时器缺失 + // globalThis.judgeTimer = judgeTimer; } - // 项目结束接口同步 - endProject = async (ksxm: number) => { - const carInfo = AppStorage.get('carInfo'); - const judgeUI = this.judgeUI; - const time = GetCurrentTime(); - const project: ProjectInfo = Reflect.get(judgeUI.projectsObj, ksxm) - const sbxh = judgeUI.examSubject == '3' ? undefined : this.getSbbm(ksxm, this.xmxh) - - const drvexam: DrvexamType = { - lsh: judgeUI.lsh, - kskm: carInfo?.examSubject || "2", - sfzmhm: judgeUI.idCard, - ksxm: project.projectCodeCenter, - sbxh, - //TODO 操作类型 1:正常 0:撤销该考试记录 - czlx: '1', - ksxl: judgeUI.xldm, - kchp: encodeURI(carInfo?.plateNo || ""), - ksdd: encodeURI(judgeUI.ksdd), - kslx: encodeURI(judgeUI.kslx) || '', - jssj: time - } - const data: RegulatoryInterfaceParams = { - xtlb: '17', - jkxlh: judgeUI.serialNumber, - jkid: '17C55', - drvexam - } - const temp: WR = await this.sendWriteObjectOut(data, this.filePath) - if (temp.code === 2300007) { - this.isJudgeDisConnect = true; - } - dConsole.info(JudgeTag, '项目结束 end') - UploadRegulatoryCodeConversion('17C55', temp.code || 0) - } - // 考试过程照片 - uploadProgressPhoto = async (ksxm: number) => { - const time = GetCurrentTime(); - const judgeUI = this.judgeUI - const plcData = this.plcData - const photoBase64 = await this.getPhoto(); - const carInfo = AppStorage.get('carInfo'); - - const project: ProjectInfo = Reflect.get(judgeUI.projectsObj, ksxm) - const judgeConfig_305: number = Reflect.get(judgeUI.judgeConfigObj, '305') - const drvexam: DrvexamType = { - lsh: judgeUI.lsh, - kskm: carInfo?.examSubject || "2", - ksxm: project.projectCodeCenter, - sfzmhm: judgeUI.idCard, - kchp: encodeURI(carInfo?.plateNo || ""), - zpsj: time, - zp: photoBase64, - cs: Math.floor((judgeConfig_305 == 0 ? (plcData?.gps?.sd || 0) : (plcData?.sensor?.cs || 0)) * 1.852), - ksdd: encodeURI(judgeUI.ksdd) - } - const data: RegulatoryInterfaceParams = { - xtlb: '17', - jkxlh: judgeUI.serialNumber, - jkid: '17C54', - drvexam - }; - const temp: WR = await this.sendWriteObjectOut(data, this.filePath); - if (temp.code === 2300007) { - this.isJudgeDisConnect = true - } - UploadRegulatoryCodeConversion('17C54', temp.code || 0) - dConsole.info(JudgeTag, '上传照片 end') + private artSubject3ProjectsCodesArr: number[] = [3, 9, 4, 10, 12, 11] + private lane: LANE = { + road: '', num: 0, count: 0 } + private videoData?: RecordHandleType //当前科目二的考试项目 private deductedPopShowTimer: number = 0; + private disConnectNum: number = 0; + //调用监管接口 + sendWriteObjectOut: SendWriteObjectOut = async (data, filePath) => { + const temp = await writeObjectOut(data, filePath, this.context); + dConsole.log(JudgeTag, "wzj", JSON.stringify(temp)) + //断网&网络超时次数计算 + if (temp.code == 2300007 || temp.code == 2300028) { + this.disConnectNum += 1; + if (this.disConnectNum < 5) { + return await this.sendWriteObjectOut(data, filePath) + } + } + + if (this.disConnectNum >= 5) { + dConsole.info('surenjun', '123') + this.judgeUI.errorMsg = '当前的考试过程信息网络传输异常,程序点击确认将重启!'; + this.judgeUI.disConnectErrorOpen = true + } + + this.disConnectNum = 0 + return temp + } constructor(judgeUI: JudgeUI) { this.serialIndex = 1;