From 8cf68ea6fb7f14e7d51c290be03a7204373fb100 Mon Sep 17 00:00:00 2001 From: wangzhongjie Date: Wed, 29 Oct 2025 16:57:47 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=BF=87=E7=A8=8B=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- entry/src/main/ets/pages/Judge.ets | 9 ++--- .../ets/pages/Judge/BaseJudgeBussines.ets | 2 +- .../main/ets/pages/Judge/JudgeBusiness.ets | 5 ++- .../ets/pages/Judge/ProcessDataTaskPool.ets | 1 + entry/src/main/ets/utils/Common.ets | 4 ++- entry/src/main/ets/utils/LogWorker.ets | 1 + .../business/DifferentialAndSignalWorker.ets | 2 +- .../ets/utils/business/JudgeUdpBusiness.ets | 8 ++--- .../ets/workers/DifferentialCorrection.ets | 5 +-- entry/src/main/ets/workers/Log.ets | 36 +++++++++++++------ 10 files changed, 44 insertions(+), 29 deletions(-) diff --git a/entry/src/main/ets/pages/Judge.ets b/entry/src/main/ets/pages/Judge.ets index 1156d14..c0ee4bd 100644 --- a/entry/src/main/ets/pages/Judge.ets +++ b/entry/src/main/ets/pages/Judge.ets @@ -226,9 +226,10 @@ export struct JudgePage { async aboutToDisappear() { this.generateExamRecordsDialogController.close() this.signalTrajectoryDialogController.close() - // this.judgeBusiness.close() + this.judgeBusiness.close() clearInterval(this.mileageTimer) DifferentialAndSignal.offMsg(this.onCenterMsg) + } //初始化相关数据库表 @@ -802,19 +803,19 @@ export struct JudgePage { private onCenterMsg = (msg: string) => { let result: WorkerBackMessage = JSON.parse(msg) if (result.type === WorkerBackMessageType.RemoteEndExam) { - dConsole.info("lixiao", msg) + dConsole.info(JudgeTag, msg) this.judgeBusiness.JudgeEnd(true) } else if (result.type === WorkerBackMessageType.RemoteKf) { let data = result.data as number[] const config810 = this.judgeConfigObj.param_810 - dConsole.info("lixiao", '评判收到远程扣分项目内容:' + `kfxh=>${data[1]}; directives=>${data[0]}`) + dConsole.info(JudgeTag, '评判收到远程扣分项目内容:' + `kfxh=>${data[1]}; directives=>${data[0]}`) let currentKf = this.markRules.filter(item => { return item.kfxh === data[1].toString() && (config810 === "1" || Number(item.markserial) > 99) })[0] if (!currentKf) { return } - dConsole.info("lixiao", '远程扣分项目:', currentKf) + dConsole.info(JudgeTag, '远程扣分项目:', currentKf) this.judgeBusiness.setJudgeMark(currentKf.itemno!, currentKf.markserial!, 2) DifferentialAndSignal.sendMsg({ type: WorkerMessageDataType.JudgeSend, diff --git a/entry/src/main/ets/pages/Judge/BaseJudgeBussines.ets b/entry/src/main/ets/pages/Judge/BaseJudgeBussines.ets index e533ada..55c5e7f 100644 --- a/entry/src/main/ets/pages/Judge/BaseJudgeBussines.ets +++ b/entry/src/main/ets/pages/Judge/BaseJudgeBussines.ets @@ -519,7 +519,7 @@ export class BaseJudge { } //日志回调 dConsole.info(JudgeTag, '1.进入评判入口') - await examJudgeSetLogCallback(1, async (level: number, info: string, len: number) => { + await examJudgeSetLogCallback(3, async (level: number, info: string, len: number) => { dConsole.log(JudgeTag, '评判日志:' + info) dConsole.writeProcessData(ProcessDataEnumType.JudgeLogData, info) }) diff --git a/entry/src/main/ets/pages/Judge/JudgeBusiness.ets b/entry/src/main/ets/pages/Judge/JudgeBusiness.ets index 69aa36b..d2fee7c 100644 --- a/entry/src/main/ets/pages/Judge/JudgeBusiness.ets +++ b/entry/src/main/ets/pages/Judge/JudgeBusiness.ets @@ -4,7 +4,6 @@ import { JudgeKSJS, JudgePerformInfo, LANE, - MarkRule, PLCType, ProcessDataEnumType, RecordHandleType, @@ -121,7 +120,7 @@ export default class JudgeBusiness { } // 人工扣分 - public async setJudgeMark(itemno: number,markserial: string, type: number) { + public async setJudgeMark(itemno: number, markserial: string, type: number) { await examJudgeArtificialMark(itemno, markserial, type) // TODO 写扣分轨迹日志 } @@ -133,7 +132,7 @@ export default class JudgeBusiness { // 结束考试 public JudgeEnd(isManual?: boolean) { - dConsole.info("lixiao", '收到远程结束考试消息1') + dConsole.info(JudgeTag, '收到远程结束考试消息1') this.judgeBusiness.JudgeEnd(this.judgeUI, this, isManual) } diff --git a/entry/src/main/ets/pages/Judge/ProcessDataTaskPool.ets b/entry/src/main/ets/pages/Judge/ProcessDataTaskPool.ets index 91c659a..8cc8f3e 100644 --- a/entry/src/main/ets/pages/Judge/ProcessDataTaskPool.ets +++ b/entry/src/main/ets/pages/Judge/ProcessDataTaskPool.ets @@ -101,6 +101,7 @@ export class ProcessDataTaskPool { jkid: taskData.jkid, drvexam: drvexam, }; + dConsole.writeProcessData(ProcessDataEnumType.WuxiExam, JSON.stringify(obj)); await this.processSingleTaskWithRetries(taskData, callback); diff --git a/entry/src/main/ets/utils/Common.ets b/entry/src/main/ets/utils/Common.ets index 02e94ea..50494e7 100644 --- a/entry/src/main/ets/utils/Common.ets +++ b/entry/src/main/ets/utils/Common.ets @@ -1,7 +1,7 @@ import dayTs from './Date'; import fs from '@ohos.file.fs'; import { BusinessError } from '@ohos.base'; -import { CommonFileTag, JudgeConfig, JudgeTag } from '../config'; +import { CommonFileTag, JudgeConfig, JudgeTag, LogTag } from '../config'; import abilityAccessCtrl, { Permissions } from '@ohos.abilityAccessCtrl'; import Prompt from '@system.prompt'; import common from '@ohos.app.ability.common'; @@ -272,9 +272,11 @@ export function CloseFile(fd: number): Promise { export function EditFile(fd: number, data: string): Promise { return new Promise((resolve, reject) => { try { + console.log(LogTag, "写入数据:" + data) fs.writeSync(fd, data + "\n") resolve(true) } catch (e) { + console.error(LogTag, "写入数据失败", data) reject(false) } }) diff --git a/entry/src/main/ets/utils/LogWorker.ets b/entry/src/main/ets/utils/LogWorker.ets index d327718..89acffe 100644 --- a/entry/src/main/ets/utils/LogWorker.ets +++ b/entry/src/main/ets/utils/LogWorker.ets @@ -75,6 +75,7 @@ class logWorker { // 过程数据写入 writeProcessData(type: ProcessDataEnumType, data: string) { + dConsole.log(LogTag, "传入过程数据", data) let params: LogWorkerMessage = { type: WorkerMessageType.WriteProcessData, data, diff --git a/entry/src/main/ets/utils/business/DifferentialAndSignalWorker.ets b/entry/src/main/ets/utils/business/DifferentialAndSignalWorker.ets index b28f4c7..70309cc 100644 --- a/entry/src/main/ets/utils/business/DifferentialAndSignalWorker.ets +++ b/entry/src/main/ets/utils/business/DifferentialAndSignalWorker.ets @@ -94,7 +94,7 @@ class differentialAndSignal { getMessage() { this.workerInstance.onmessage = (e: MessageEvents): void => { if (e.data) { - console.log(WorkerTag, "lixiao", "Worker 收到消息: " + e.data); + // console.log(WorkerTag, "Worker 收到消息: " + e.data); this.events.forEach((callback) => { callback(e.data); }); diff --git a/entry/src/main/ets/utils/business/JudgeUdpBusiness.ets b/entry/src/main/ets/utils/business/JudgeUdpBusiness.ets index 0d649f8..d64e418 100644 --- a/entry/src/main/ets/utils/business/JudgeUdpBusiness.ets +++ b/entry/src/main/ets/utils/business/JudgeUdpBusiness.ets @@ -13,7 +13,7 @@ import { UDPParamType } from '../../model'; -import { JudgeConfig } from '../../config'; +import { JudgeConfig, JudgeTag } from '../../config'; import { FillZero, NumberToByteArray, StringToASCII } from '../Common'; import UdpClient, { MsgExt } from '../UdpUtils'; import systemTime from '@ohos.systemDateTime'; @@ -46,7 +46,7 @@ class JudgeUdpBusiness { } async getMessageHeartbeat(msg: string): Promise { - dConsole.info(Tag, msg, this.lsh) + // dConsole.info(Tag, msg, this.lsh) if (!this.business || !this.performInfo) { return this.getOBDMessageHeart(msg) } @@ -238,7 +238,7 @@ class JudgeUdpBusiness { carNo: this.carInfo.carNo!, placeId: this.carInfo!.examinationRoomId!, } - dConsole.info(Tag, "发送小红球数据", data) + // dConsole.info(Tag, "发送小红球数据", data) this.udp.sendMsgExt(data, udpLsh) } @@ -284,7 +284,7 @@ class JudgeUdpBusiness { this.carInfo = carInfo return new Promise((resolve, reject) => { try { - dConsole.info("lixiao udp", config.udplocalIp!, '8080', carInfo.udpAddress!, carInfo.hintPort!) + dConsole.info(JudgeTag, "udp", config.udplocalIp!, '8080', carInfo.udpAddress!, carInfo.hintPort!) this.udp.create(config.udplocalIp!, '8080', carInfo.udpAddress!, carInfo.hintPort!).then(resolve).catch(reject) } catch (e) { reject(e) diff --git a/entry/src/main/ets/workers/DifferentialCorrection.ets b/entry/src/main/ets/workers/DifferentialCorrection.ets index 9a48e74..23845d8 100644 --- a/entry/src/main/ets/workers/DifferentialCorrection.ets +++ b/entry/src/main/ets/workers/DifferentialCorrection.ets @@ -19,7 +19,6 @@ import { DifferentialSignal } from '../utils/business/DifferentialSignal'; import { JudgeUdpBusinessInstance } from '../utils/business/JudgeUdpBusiness'; import { ObtainUdpBusinessInstance } from '../utils/business/ObtainUdpBusiness'; import { SerialPortService } from '../utils/business/SerialPortService'; -import { dConsole } from '../utils/LogWorker'; import dayTs from '../utils/Date'; import { NumberToByteArray } from '../utils/Common'; @@ -141,7 +140,7 @@ function getDataFn(config: EnvironmentConfigurationType) { JudgeUdpBusinessInstance.sendData(byte, udpLsh) } udpIndex++ - console.log(SerialPortTag, "后置机消息", data) + // console.log(SerialPortTag, "后置机消息", data) workerPort.postMessage( JSON.stringify({ type: WorkerBackMessageType.ObtainUdpData, @@ -154,7 +153,6 @@ function getDataFn(config: EnvironmentConfigurationType) { // TODO // 需要观察 checkLsh() - dConsole.info("lixiao", data) switch (Number(data.id)) { case 32: signNum = data.body![1] @@ -170,7 +168,6 @@ function getDataFn(config: EnvironmentConfigurationType) { } as WorkerBackMessage) ) } else if (Number(data.body![0]) === 12) { - dConsole.info("lixiao", 12, data) workerPort.postMessage( JSON.stringify({ type: WorkerBackMessageType.RemoteEndExam diff --git a/entry/src/main/ets/workers/Log.ets b/entry/src/main/ets/workers/Log.ets index 7ec5bf2..414c55c 100644 --- a/entry/src/main/ets/workers/Log.ets +++ b/entry/src/main/ets/workers/Log.ets @@ -29,6 +29,7 @@ workerPort.onmessage = (e: MessageEvents) => { } // 写过程数据 if (result.type === WorkerMessageType.WriteProcessData && result.processDataType) { + console.log(LogTag, "work收到过程数据") WriteProcessData(result.processDataType, result.data || "") } // 关闭过程数据 @@ -82,21 +83,23 @@ async function InitExam(dirName: string) { await CreateDir(path); } // 创建几个文件 - fileNameArr.forEach(async (item: string, index: number) => { + fileNameArr.forEach(async (item: string) => { let filePath = path + "/" + item console.log(LogTag, "创建文件", filePath) let result = await CreateFile(filePath) - fileFdArr[index] = result + // fileFdArr[index] = result + fileFdArr.push(result) }) } // 写过程数据 async function WriteProcessData(type: ProcessDataEnumType, data: string) { - // if (type === ProcessDataEnumType.WuxiExam) { - // writeQueue.push({ type, data }); - // } else { + console.log(LogTag, "推入过程数据", type, data) + if (fileFdArr.length === 0) { + return + } writeQueue.push({ type, data }); - // } + if (!isProcessing) { processQueue(); } @@ -104,23 +107,34 @@ async function WriteProcessData(type: ProcessDataEnumType, data: string) { async function processQueue() { isProcessing = true; - while (writeQueue.length > 0) { + while (writeQueue.length > 0 && isProcessing) { + console.log(LogTag, "处理过程数据") const item = writeQueue.shift()!; const index = Number(item.type); - await EditFile(fileFdArr[index], item.data); + try { + await EditFile(fileFdArr[index], item.data); + } catch (e) { + console.error(LogTag, "写过程数据错误", JSON.stringify(e)) + } } isProcessing = false; } // 关闭过程数据 function CloseProcessData() { + writeQueue = [] + isProcessing = false if (fileFdArr.length > 0) { - console.log(LogTag, "有文件需要 关闭过程数据") + console.log(LogTag, "有文件需要 关闭过程数据", fileFdArr) fileFdArr.forEach((item: number) => { - fs.closeSync(item) + try { + fs.closeSync(item) + } catch (e) { + console.error(LogTag, JSON.stringify(e)) + } }) - fileFdArr = [] } + fileFdArr = [] } workerPort.onmessageerror = (e: MessageEvents) => {