From 9d21d07597983e071774a0e41bf53290a2d7dc6b Mon Sep 17 00:00:00 2001 From: lixiao <932184220@qq.com> Date: Mon, 27 Oct 2025 15:50:14 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=8F=E7=BA=A2=E7=90=83udp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- entry/src/main/ets/model/Worker.ets | 1 + .../ets/pages/Judge/BaseJudgeBussines.ets | 125 +++--------------- .../main/ets/pages/Judge/JudgeBusiness.ets | 34 ++--- .../ets/utils/business/JudgeUdpBusiness.ets | 13 +- .../ets/workers/DifferentialCorrection.ets | 7 +- 5 files changed, 50 insertions(+), 130 deletions(-) diff --git a/entry/src/main/ets/model/Worker.ets b/entry/src/main/ets/model/Worker.ets index 41791e8..9bb47a6 100644 --- a/entry/src/main/ets/model/Worker.ets +++ b/entry/src/main/ets/model/Worker.ets @@ -36,6 +36,7 @@ export interface InitData extends ExamData { export interface JudgeData { judgeUdpEnd?: boolean, + judgeExamEnd?: boolean performInfo?: JudgePerformInfo, business?: JudgeUDPData } diff --git a/entry/src/main/ets/pages/Judge/BaseJudgeBussines.ets b/entry/src/main/ets/pages/Judge/BaseJudgeBussines.ets index b710453..8042914 100644 --- a/entry/src/main/ets/pages/Judge/BaseJudgeBussines.ets +++ b/entry/src/main/ets/pages/Judge/BaseJudgeBussines.ets @@ -225,108 +225,7 @@ export class BaseJudge { if (event === 2 || event === 3) { dConsole.log(JudgeTag, "项目结束判定统计项目") await this.setCountItems(judgeUI); - await this.checkExamIsEnd(judgeUI, that) - } - } - - /** - * 校验考试是否结束 - */ - async checkExamIsEnd(judgeUI: JudgePage, that: JudgeBusiness, isManual?: boolean) { - dConsole.log(JudgeTag, "校验考试是否结束") - const totalScore = Number(judgeUI.totalScore) - const examMileage = Number(judgeUI.examMileage) - const passingScore = Number(judgeUI.passingScore) - if (that.isExamEnd) { - return - } - if (isManual) { - // 考试不合格 - await examJudgeEndExam() - that.isExamEnd = true - that.isManual = true - } else { - const param302: string = Reflect.get(judgeUI.judgeConfigObj, '302') - const param342: string = Reflect.get(judgeUI.judgeConfigObj, '342') - const param512: string[] = (Reflect.get(judgeUI.judgeConfigObj, '512') || '').split(','); - if (judgeUI.singlePlay) { - // 单机模式 - dConsole.info(JudgeTag + ' 单机模式结束 => ', judgeUI.isAllProjectsEnd) - if (judgeUI.isAllProjectsEnd && judgeUI.jl >= examMileage) { - // 成绩合格 - if (totalScore >= passingScore && !that.isEndTip) { - if (judgeUI.examSubject == '3' && (param342 === "0" || param342 === "2" || !param342) && (param302 !== "6" && param302 !== "7" && param302 !== "8")) { - if (param512[7] !== "0") { - // clearTimeout(that.deductedPopShowTimer) - // that.avPlayer?.playAudio(['voice/综合评判.mp3']) - // judgeUI.isDeductedPopShow = true - // judgeUI.defaultTabIndex = 1 - // that.isEndTip = true - return - } - } else { - await examJudgeEndExam() - that.isExamEnd = true - return - } - } else { - if (judgeUI.examSubject == '3' && (param302 === "4" || param302 === "5" || param302 === "7" || param302 === "8")) { - await examJudgeEndExam() - that.isExamEnd = true - return - } - } - await examJudgeEndExam() - that.isExamEnd = true - } - } - else { - // 非单机模式 - //成绩不合格 - if (totalScore < passingScore) { - //科目三不合格报靠边停车 - if (judgeUI.examSubject == '3' && param302 === "1") { - that.avPlayer?.playAudio([`voice/考试结束.mp3`]); - return - } - await examJudgeEndExam() - that.isExamEnd = true - return - } - // 成绩合格 - if (judgeUI.isAllProjectsEnd && totalScore >= passingScore && !that.isEndTip) { - // 科目二成绩合格 - if (judgeUI.examSubject == '2') { - await examJudgeEndExam() - that.isExamEnd = true - return - } - //考试里程判断 - if (judgeUI.examSubject == '3' && judgeUI.jl < examMileage) { - return - } - //考试合格自动退出 - if (judgeUI.examSubject == '3' && (param302 === "4" || param302 === "7") || param302 === "8") { - await examJudgeEndExam() - that.isExamEnd = true - return - } - if (judgeUI.examSubject == '3' && (param342 === "0" || param342 === "2") && - (param302 !== "6" && param302 !== "7" && param302 !== "8")) { - if (param512[7] !== "0") { - clearTimeout(that.deductedPopShowTimer) - judgeUI.isDeductedPopShow = false - that.avPlayer?.playAudio(['voice/综合评判.mp3']) - judgeUI.isDeductedPopShow = true - judgeUI.defaultTabIndex = 1 - that.isEndTip = true - } - } else { - await examJudgeEndExam() - that.isExamEnd = true - } - } - } + await this.judgeEnd(judgeUI, that) } } @@ -379,6 +278,7 @@ export class BaseJudge { //联网模式下:项目没有做完、当前分数大于及格分;手动结束直接退出 if (!judgeUI.singlePlay && that.isManual && !judgeUI.isAllProjectsEnd && judgeUI.totalScore >= judgeUI.passingScore) { that.avPlayer?.playAudio(['voice/empty.mp3'], true, () => { + this.isUdpEnd = true router.back(); }) return @@ -387,7 +287,21 @@ export class BaseJudge { this.isUdpEnd = true try { if (!judgeUI.singlePlay) { - DifferentialAndSignal.sendMsg({ type: WorkerMessageDataType.JudgeSend, data: { judgeUdpEnd: true } }) + DifferentialAndSignal.sendMsg({ type: WorkerMessageDataType.JudgeSend, data: { + judgeUdpEnd: this.isUdpEnd, + judgeExamEnd: true, + performInfo: that.performInfo, + business: { + totalScore: that.judgeUI.totalScore, + kfArr: that.judgeUI.kfArr, + startTime: that.judgeUI.udpStartTIme, + xmmcSingleCode: that.xmmcSingleCode, + kmItems: that.kmItems, + examTime: that.judgeUI.examTime, + cdsbInfoObj: that.judgeUI.cdsbInfoObj!, + xmdm: that.xmdm, + xmxh: that.xmxh + } } }) } } catch (e) { console.info(JudgeTag, JSON.stringify(e)) @@ -494,6 +408,7 @@ export class BaseJudge { if (score <= (judgeUI.examSubject === "3" ? 10 : 20)) { if (judgeUI.kfArr.length - 1 === index) { that.avPlayer?.playAudio([`voice/${kf.markcatalog}.mp3`, voiceURL], false, () => { + this.isUdpEnd = true router.back(); }) throw new Error('End Loop') @@ -501,6 +416,7 @@ export class BaseJudge { that.avPlayer?.playAudio([`voice/${kf.markcatalog}.mp3`]) } else { that.avPlayer?.playAudio([`voice/${kf.markcatalog}.mp3`, voiceURL], false, () => { + this.isUdpEnd = true router.back(); }) throw new Error('End Loop') @@ -513,6 +429,7 @@ export class BaseJudge { } else { that.avPlayer?.playAudio([voiceURL], true, () => { setTimeout(() => { + this.isUdpEnd = true router.back(); }, param302 === "8" ? 3000 : 0) }) @@ -823,7 +740,7 @@ export class BaseJudge { xmmcStr: that.xmmcStr, carztStr: that.carztStr, kfArr: judgeUI.kfArr }); // TODO 语音播报 - this.changeExamStatus(event, xmdm,xmxh, judgeUI.kfArr!, judgeUI, that); + this.changeExamStatus(event, xmdm, xmxh, judgeUI.kfArr!, judgeUI, that); // 更新ui if (event == 1 || event == 2 || event == 3 || event == 6) { judgeUI.projectsObj = JSON.parse(JSON.stringify(judgeUI.projectsObj)) diff --git a/entry/src/main/ets/pages/Judge/JudgeBusiness.ets b/entry/src/main/ets/pages/Judge/JudgeBusiness.ets index da152c6..f166c6f 100644 --- a/entry/src/main/ets/pages/Judge/JudgeBusiness.ets +++ b/entry/src/main/ets/pages/Judge/JudgeBusiness.ets @@ -172,24 +172,24 @@ export default class JudgeBusiness { this.judgeUI.sd = ((param350 == 0 ? this.plcData.gps.sd : this.plcData.sensor.cs) as number * 1.852).toFixed(0) + '' this.judgeUI.dw = (Math.floor(this.plcData.sensor.dw as number) || 0) + '' - if (!this.judgeBusiness.getIsUdpEnd()) { - DifferentialAndSignal.sendMsg({ - type: WorkerMessageDataType.JudgeSend, data: { - performInfo: this.performInfo, - business: { - totalScore: this.judgeUI.totalScore, - kfArr: this.judgeUI.kfArr, - startTime: this.judgeUI.udpStartTIme, - xmmcSingleCode: this.xmmcSingleCode, - kmItems: this.kmItems, - examTime: this.judgeUI.examTime, - cdsbInfoObj: this.judgeUI.cdsbInfoObj!, - xmdm: this.xmdm, - xmxh: this.xmxh - } + DifferentialAndSignal.sendMsg({ + type: WorkerMessageDataType.JudgeSend, data: { + performInfo: this.performInfo, + judgeUdpEnd: this.judgeBusiness.getIsUdpEnd(), + judgeExamEnd: this.isExamEnd, + business: { + totalScore: this.judgeUI.totalScore, + kfArr: this.judgeUI.kfArr, + startTime: this.judgeUI.udpStartTIme, + xmmcSingleCode: this.xmmcSingleCode, + kmItems: this.kmItems, + examTime: this.judgeUI.examTime, + cdsbInfoObj: this.judgeUI.cdsbInfoObj!, + xmdm: this.xmdm, + xmxh: this.xmxh } - }) - } + } + }) if (!this.isExamEnd) { await examJudgeRealExam(this.plcData) diff --git a/entry/src/main/ets/utils/business/JudgeUdpBusiness.ets b/entry/src/main/ets/utils/business/JudgeUdpBusiness.ets index 3997717..67d5650 100644 --- a/entry/src/main/ets/utils/business/JudgeUdpBusiness.ets +++ b/entry/src/main/ets/utils/business/JudgeUdpBusiness.ets @@ -35,7 +35,8 @@ class JudgeUdpBusiness { private serialIndex: number = 1 public business: JudgeUDPData | null = null public performInfo: JudgePerformInfo | null = null - public isEnd: boolean = false + public isUDPEnd: boolean = false + public isExamEnd: boolean = false constructor() { if (!JudgeUdpBusiness.instance) { @@ -75,7 +76,7 @@ class JudgeUdpBusiness { fyj = Math.floor(fyj > 0 ? (fyj * 100) : (fyj * 100 + 65536)) let examType = this.carInfo.examSubject === "2" ? "2" : "3" - dConsole.info("扣分", this.business) + dConsole.info("小红球过程数据", this.isExamEnd, this.business) const arr: number[][] = [ //考生号 @@ -85,7 +86,7 @@ class JudgeUdpBusiness { //科目类型(0:未考试 1:科目二 2:科目三) + 考试开始时间 NumberToByteArray(`${examType}${this.business.startTime}`, 4 * 8), // 消息序号 - NumberToByteArray(this.isEnd ? 0 : this.serialIndex, 2 * 8), + NumberToByteArray(this.isExamEnd ? 0 : this.serialIndex, 2 * 8), translateSignals, NumberToByteArray(tempSd * 100, 2 * 8), NumberToByteArray(plcData.sensor.fdjzs / 100, 8), @@ -123,7 +124,7 @@ class JudgeUdpBusiness { //摩托压线 Byte[20], NumberToByteArray(0, 20 * 8), //考试用时 - NumberToByteArray(this.business.startTime, 4 * 8), + NumberToByteArray(this.business.examTime, 4 * 8), //项目用时 NumberToByteArray(FillZero(0, 2), 2 * 8), //设备信号状态 @@ -133,11 +134,11 @@ class JudgeUdpBusiness { arr.forEach(itemArr => { result = result.concat(itemArr) }) - if (this.isEnd) { + if (this.isExamEnd) { this.serialIndex = 1 this.business = null this.performInfo = null - this.isEnd = false + this.isExamEnd = false } else { this.serialIndex += 1 } diff --git a/entry/src/main/ets/workers/DifferentialCorrection.ets b/entry/src/main/ets/workers/DifferentialCorrection.ets index 60b7270..b9ff6f1 100644 --- a/entry/src/main/ets/workers/DifferentialCorrection.ets +++ b/entry/src/main/ets/workers/DifferentialCorrection.ets @@ -58,9 +58,10 @@ workerPort.onmessage = async (e: MessageEvents) => { } case WorkerMessageDataType.JudgeSend: { let data = result.data as JudgeData - JudgeUdpBusinessInstance.business = data.business || null - JudgeUdpBusinessInstance.performInfo = data.performInfo || null - JudgeUdpBusinessInstance.isEnd = data.judgeUdpEnd || false + JudgeUdpBusinessInstance.business = data.business ?? null + JudgeUdpBusinessInstance.performInfo = data.performInfo ?? null + JudgeUdpBusinessInstance.isUDPEnd = data.judgeUdpEnd ?? false + JudgeUdpBusinessInstance.isExamEnd = data.judgeExamEnd ?? false break } case WorkerMessageDataType.CenterSend: {