diff --git a/entry/src/main/ets/pages/judgeSDK/judge.ets b/entry/src/main/ets/pages/judgeSDK/judge.ets index be7809a3..96837a3b 100644 --- a/entry/src/main/ets/pages/judgeSDK/judge.ets +++ b/entry/src/main/ets/pages/judgeSDK/judge.ets @@ -144,6 +144,7 @@ export default class Judge { } } public plcStr: string + private context: common.UIAbilityContext private judgeUI // 检测扣分、结束项目时该项目是否开始 checkProjectIsStart = async (xmdm, currentType: 1 | 2, kf?: KF) => { @@ -261,6 +262,40 @@ export default class Judge { private isExamEnd: boolean // 是否发送udp private isUdpEnd: boolean = false + // 处理udp plc信号 + handleUdp = async (msg) => { + console.info('plc信号', msg) + // const { fileLog, getPlcData, usbService, isUdpEnd, isExamEnd, judgeUI } = this + const stachArr = msg.split(',') + if (stachArr[0] != '#DN_GD' || this.isUdpEnd) { + return + } + const plcData = await this.getPlcData(msg); + // 4.过程数据 + await this.fileLog.setExamJudgeData(plcData) + //检测到有无锡所设备接入,需要发送特定的数据,供检测 + if (this.usbService.isWXUSBDevice) { + const str = await senorToWXDataStr(msg); + this.usbService.sendUSB(str) + } + const param350 = 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') as number; + let [prevJd, preWd] = [0, 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 //UDP服务序列号 @@ -447,40 +482,6 @@ export default class Judge { return tempData } - // 处理udp plc信号 - handleUdp = async (msg) => { - console.info('plc信号', msg) - // const { fileLog, getPlcData, usbService, isUdpEnd, isExamEnd, judgeUI } = this - const stachArr = msg.split(',') - if (stachArr[0] != '#DN_GD' || this.isUdpEnd) { - return - } - const plcData = await this.getPlcData(msg); - // 4.过程数据 - await this.fileLog.setExamJudgeData(plcData) - //检测到有无锡所设备接入,需要发送特定的数据,供检测 - if (this.usbService.isWXUSBDevice) { - const str = await senorToWXDataStr(msg); - this.usbService.sendUSB(str) - } - const param350 = 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') as number; - let [prevJd, preWd] = [0, 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++) - } // 处理轨迹plc信号 handleTrajectoryUdp = async (strArr) => { // const { fileLog, setJudgeItem, setJudgeMark, endExam } = this; @@ -524,6 +525,67 @@ export default class Judge { private isTrajectoryOpen: boolean; // 调代理接口是否断网了 private isJudgeDisConnect: boolean; + // 考试过程照片 + uploadProgressPhoto = async (ksxm) => { + const time = await getCurrentTime(); + const { judgeUI, plcData, getPhoto, fileLog, filePath } = this; + const photoBase64 = await getPhoto(); + const carInfo = AppStorage.get('carInfo'); + const { examSubject, plateNo, carNo } = carInfo; + const { lsh, idCard, serialNumber, projectsObj, ksdd, judgeConfigObj } = judgeUI; + const { sensor, gps } = plcData + const project = projectsObj[ksxm] + + const data = { + xtlb: '17', + jkxlh: serialNumber, + jkid: '17C54', + drvexam: { + lsh, + kskm: examSubject, + ksxm: project.projectCodeCenter, + sfzmhm: idCard, + kchp: encodeURI(plateNo), + zpsj: time, + zp: photoBase64, + cs: Math.floor((judgeConfigObj['350'] == 0 ? gps.sd : sensor.cs) * 1.852), + ksdd: encodeURI(ksdd) + } + }; + const { code } = await this.sendWriteObjectOut(data, filePath); + if (code === 2300007) { + this.isJudgeDisConnect = true + } + promptWxCode('17C54', code) + console.info(judgeTag, '上传照片 end') + } + private artSubject3ProjectsCodesArr: number[] = [3, 9, 4, 10, 12, 11] + private lane: LANE = { + road: '', num: 0, count: 0 + } + private videoData: any + private disConnectNum: number = 0; + //调用监管接口 + sendWriteObjectOut = async (data, filePath) => { + const temp = await writeObjectOut(data, filePath); + console.log("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) { + console.info('surenjun', '123') + this.judgeUI.errorMsg = '当前的考试过程信息网络传输异常,程序点击确认将重启!'; + this.judgeUI.disConnectErrorOpen = true + } + + this.disConnectNum = 0 + return temp + } // 项目开始接口同步 beginProject = async (ksxm) => { const carInfo = AppStorage.get('carInfo'); @@ -596,67 +658,6 @@ export default class Judge { console.info(judgeTag, '项目结束 end') promptWxCode('17C55', code) } - private artSubject3ProjectsCodesArr: number[] = [3, 9, 4, 10, 12, 11] - private lane: LANE = { - road: '', num: 0, count: 0 - } - private videoData: any - private disConnectNum: number = 0; - //调用监管接口 - sendWriteObjectOut = async (data, filePath) => { - const temp = await writeObjectOut(data, filePath); - console.log("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) { - console.info('surenjun', '123') - this.judgeUI.errorMsg = '当前的考试过程信息网络传输异常,程序点击确认将重启!'; - this.judgeUI.disConnectErrorOpen = true - } - - this.disConnectNum = 0 - return temp - } - // 考试过程照片 - uploadProgressPhoto = async (ksxm) => { - const time = await getCurrentTime(); - const { judgeUI, plcData, getPhoto, fileLog, filePath } = this; - const photoBase64 = await getPhoto(); - const carInfo = AppStorage.get('carInfo'); - const { examSubject, plateNo, carNo } = carInfo; - const { lsh, idCard, serialNumber, projectsObj, ksdd, judgeConfigObj } = judgeUI; - const { sensor, gps } = plcData - const project = projectsObj[ksxm] - - const data = { - xtlb: '17', - jkxlh: serialNumber, - jkid: '17C54', - drvexam: { - lsh, - kskm: examSubject, - ksxm: project.projectCodeCenter, - sfzmhm: idCard, - kchp: encodeURI(plateNo), - zpsj: time, - zp: photoBase64, - cs: Math.floor((judgeConfigObj['350'] == 0 ? gps.sd : sensor.cs) * 1.852), - ksdd: encodeURI(ksdd) - } - }; - const { code } = await this.sendWriteObjectOut(data, filePath); - if (code === 2300007) { - this.isJudgeDisConnect = true - } - promptWxCode('17C54', code) - console.info(judgeTag, '上传照片 end') - } constructor(judgeUI) { this.serialIndex = 1; @@ -1789,7 +1790,7 @@ export default class Judge { avPlayer.playAudio([globalThis.singlePlay ? 'voice/ksks.wav' : 'voice/监管成功.mp3']) if (!globalThis.singlePlay) { - this.videoData = await saveStartRecordVideo(`${name}_${kssycs}`) + this.videoData = await saveStartRecordVideo(`${name}_${kssycs}`, this.context) } const { examSubject, projectsObj } = this.judgeUI diff --git a/entry/src/main/ets/utils/Video.ets b/entry/src/main/ets/utils/Video.ets index 5ecb33c9..0a71dbea 100644 --- a/entry/src/main/ets/utils/Video.ets +++ b/entry/src/main/ets/utils/Video.ets @@ -79,7 +79,6 @@ export async function endRecordVideo(record_handleObj: RecordHandleType) { export async function saveStartRecordVideo(path: string, context?: common.UIAbilityContext): Promise { - context = context || globalThis.context return new Promise(async (resolve, reject) => { const fileUtil = new FileUtil(context) const fileHelper = new FileHelper();