From f0653c0c921eae21b623b3bf970d1718b941c115 Mon Sep 17 00:00:00 2001 From: wangzhongjie Date: Wed, 16 Jul 2025 15:44:49 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=BF=87=E7=A8=8B=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- entry/src/main/ets/model/Worker.ets | 29 ++++++++++++++-- entry/src/main/ets/pages/Judge.ets | 3 +- entry/src/main/ets/pages/judgeSDK/judge.ets | 2 ++ .../main/ets/pages/judgeSDK/utils/fileLog.ets | 34 +++++++++---------- entry/src/main/ets/utils/Common.ets | 16 +++++++++ entry/src/main/ets/utils/LogWorker.ets | 18 ++++++---- entry/src/main/ets/workers/Log.ets | 33 ++++++++++++++++-- 7 files changed, 106 insertions(+), 29 deletions(-) diff --git a/entry/src/main/ets/model/Worker.ets b/entry/src/main/ets/model/Worker.ets index 1f6c2c0..887bd3f 100644 --- a/entry/src/main/ets/model/Worker.ets +++ b/entry/src/main/ets/model/Worker.ets @@ -31,7 +31,8 @@ export enum WorkerBackMessageType { export interface LogWorkerMessage { type: WorkerMessageType; data?: string; - studentDirName?: string + studentDirName?: string; + processDataType?:ProcessDataEnumType } //枚举 @@ -45,7 +46,31 @@ export enum WorkerMessageType { // 初始化过程数据,初始化到人员以及人员里面各个目录 ProcessDataInit = 'processDataInit', // 初始化考试过程 - ExamProcessInit = 'examProcessInit' + ExamProcessInit = 'examProcessInit', + // 写过程数据 + WriteProcessData = 'writeProcessData', +// 关闭过程数据 + CloseProcessData='closeProcessData' +} + +// 过程数据枚举 +export enum ProcessDataEnumType { + //four_one_log_byte_data + FourOneLogByteData = 0, + //four_one_log_data + FourOneLogData = 1, + //judge_exam_data + JudgeExamData = 2, + //judge_log_data + JudgeLogData = 3, + // judge_progress_callback_data + JudgeProgressCallbackData = 4, + //plc_data + PlcData = 5, + //wuxi_exam_data + WuxiExam = 6, + //wuxi_progress_data + WuxiProgressData = 7 } export interface LogPathType { diff --git a/entry/src/main/ets/pages/Judge.ets b/entry/src/main/ets/pages/Judge.ets index 403178b..745f38a 100644 --- a/entry/src/main/ets/pages/Judge.ets +++ b/entry/src/main/ets/pages/Judge.ets @@ -37,7 +37,8 @@ import { SYSSET, SyssetConfig, SYSTEMPARMARR, - User + User, + ProcessDataEnumType } from '../model'; import { GetSyncData } from '../utils/table/Operation'; import dayTs from '../utils/Date'; diff --git a/entry/src/main/ets/pages/judgeSDK/judge.ets b/entry/src/main/ets/pages/judgeSDK/judge.ets index 4335062..3ebde2a 100644 --- a/entry/src/main/ets/pages/judgeSDK/judge.ets +++ b/entry/src/main/ets/pages/judgeSDK/judge.ets @@ -44,6 +44,7 @@ import { LANE, MarkRule, PLCType, + ProcessDataEnumType, ProjectInfo, RecordHandleType, RegulatoryInterfaceParams, @@ -1967,6 +1968,7 @@ export default class Judge { const result: WorkerBackMessage = JSON.parse(data) if (result.type === WorkerBackMessageType.ObtainUdpData) { handleUdp(result.data as string) + dConsole.writeProcessData(ProcessDataEnumType.PlcData, result.data as string) } //TODO UDP修改 // const udpIndex = globalThis.udpIndex; diff --git a/entry/src/main/ets/pages/judgeSDK/utils/fileLog.ets b/entry/src/main/ets/pages/judgeSDK/utils/fileLog.ets index 52c713f..187178f 100644 --- a/entry/src/main/ets/pages/judgeSDK/utils/fileLog.ets +++ b/entry/src/main/ets/pages/judgeSDK/utils/fileLog.ets @@ -34,28 +34,28 @@ export default class FileLog { } // 无锡所过程数据 public setExamJudgeWuxiProgressData = async (str: string) => { - this.examJudgeWuxiProgressDataFd = - await this.fileUtil.editFile(`${this.folderPath}/wuxi_progress_data.txt`, str); + // this.examJudgeWuxiProgressDataFd = + // await this.fileUtil.editFile(`${this.folderPath}/wuxi_progress_data.txt`, str); } // plc文件数据 public setPlcProgressData = async (str: Object) => { - this.plcDataFd = - await this.fileUtil.editFile(`${this.folderPath}/plc_data.txt`, JSON.stringify(str)); + // this.plcDataFd = + // await this.fileUtil.editFile(`${this.folderPath}/plc_data.txt`, JSON.stringify(str)); } // 过程评判json数据 public setExamJudgeData = async (str: string) => { - this.examJudgeDataFd = - await this.fileUtil.editFile(`${this.folderPath}/judge_exam_data.txt`, str); + // this.examJudgeDataFd = + // await this.fileUtil.editFile(`${this.folderPath}/judge_exam_data.txt`, str); } // 过程评判回调数据 public setExamJudgeCallbackData = async (str: string) => { - this.examJudgeCallbackDataFd = - await this.fileUtil.editFile(`${this.folderPath}/judge_progress_callback_data.txt`, str); + // this.examJudgeCallbackDataFd = + // await this.fileUtil.editFile(`${this.folderPath}/judge_progress_callback_data.txt`, str); } // 过程评判日志调数据 public setExamJudgeLogData = async (str: string) => { - this.examJudgeLogDataFd = - await this.fileUtil.editFile(`${this.folderPath}/judge_log_data.txt`, str); + // this.examJudgeLogDataFd = + // await this.fileUtil.editFile(`${this.folderPath}/judge_log_data.txt`, str); } // 设置四合一画面数据 public setFourAndOneLogData = async (str: string) => { @@ -103,13 +103,13 @@ export default class FileLog { // 设置文件夹 public initFileLogo = async (stuInfo: StuInfo) => { // this.stuInfo = stuInfo; - const time = GetCurrentTime() - const date = time.split(' ')[0].split('-').join('_') - const hourTime = time.split(' ')[1].split(':').join('_') - const folderPath = - await this.fileUtil.initFolder(`/logs/${date}/${date}_${hourTime}_${stuInfo.lsh}_${stuInfo.idCard}_${stuInfo.name}`); - this.folderPath = folderPath; - return folderPath + // const time = GetCurrentTime() + // const date = time.split(' ')[0].split('-').join('_') + // const hourTime = time.split(' ')[1].split(':').join('_') + // const folderPath = + // await this.fileUtil.initFolder(`/logs/${date}/${date}_${hourTime}_${stuInfo.lsh}_${stuInfo.idCard}_${stuInfo.name}`); + // this.folderPath = folderPath; + return "folderPath" } constructor(context: common.UIAbilityContext) { diff --git a/entry/src/main/ets/utils/Common.ets b/entry/src/main/ets/utils/Common.ets index d70858e..8552231 100644 --- a/entry/src/main/ets/utils/Common.ets +++ b/entry/src/main/ets/utils/Common.ets @@ -217,6 +217,22 @@ export function CreateDir(path: string): Promise { }); } +/** + * 写文件 + */ +export function EditFile(fd: number, data: string): Promise { + return new Promise((resolve, reject) => { + try { + let result = fs.writeSync(fd, data + "\n") + console.log("创建文件之写文件成功", result.toString()) + resolve(true) + } catch (e) { + console.log("创建文件之写文件失败") + reject(false) + } + }) +} + /** * 创建文件 * @params path 文件具体路径 diff --git a/entry/src/main/ets/utils/LogWorker.ets b/entry/src/main/ets/utils/LogWorker.ets index 6232519..ab53402 100644 --- a/entry/src/main/ets/utils/LogWorker.ets +++ b/entry/src/main/ets/utils/LogWorker.ets @@ -1,7 +1,7 @@ // 日志向外暴露的方法 import dayTs from './Date'; import worker from '@ohos.worker'; -import { LogWorkerMessage, WorkerMessageType } from '../model/index'; +import { LogWorkerMessage, ProcessDataEnumType, WorkerMessageType } from '../model/index'; const MAX_MESSAGE_LENGTH = 300; const LOG_CHUNK_PREFIX = '[切割消息序号'; @@ -63,12 +63,16 @@ class logWorker { } } - // 过程数据初始化 - processDataInit(carNo: string, name: string) { - let date = dayTs().format("YYYY_MM_DD_HH_mm_ss"); - // 组装文件夹名 2025_06_18_09_14_36_2506474075216_371427200311275216_王宏伟 - let folderName = `${date}_${carNo}_${name}`; - // 内部包含文件 + // 过程数据写入 + writeProcessData(type: ProcessDataEnumType, data: string) { + let params: LogWorkerMessage = { + type: WorkerMessageType.WriteProcessData, + data, + processDataType: type + } + if (this.isLogEnabled === "1") { + this.workerInstance?.postMessage(JSON.stringify(params)) + } } // 通用日志方法 diff --git a/entry/src/main/ets/workers/Log.ets b/entry/src/main/ets/workers/Log.ets index bdea06e..20623f5 100644 --- a/entry/src/main/ets/workers/Log.ets +++ b/entry/src/main/ets/workers/Log.ets @@ -1,8 +1,9 @@ import worker, { ErrorEvent, MessageEvents, ThreadWorkerGlobalScope } from '@ohos.worker'; import { GlobalConfig } from '../config'; -import { LogFileFd, LogPathType, LogWorkerMessage, WorkerMessageType } from '../model'; -import { CreateDir, CreateFile, IsExit } from '../utils/Common'; +import { LogFileFd, LogPathType, LogWorkerMessage, ProcessDataEnumType, WorkerMessageType } from '../model'; +import { CreateDir, CreateFile, EditFile, IsExit } from '../utils/Common'; import dayTs from '../utils/Date'; +import fs from '@ohos.file.fs'; const workerPort: ThreadWorkerGlobalScope = worker.workerPort; const fileNameArr: string[] = ["four_one_log_byte_data.text", "four_one_log_data.txt", "judge_exam_data.txt", "judge_log_data.txt", "judge_progress_callback_data.txt", "plc_data.txt", "wuxi_exam_data.txt", "wuxi_progress_data.txt"] @@ -19,9 +20,18 @@ workerPort.onmessage = (e: MessageEvents) => { if (result.type === WorkerMessageType.Init) { InitLog() } + // 初始化过程数据 if (result.type === WorkerMessageType.ExamProcessInit && result.studentDirName) { InitExam(result.studentDirName) } + // 写过程数据 + if (result.type === WorkerMessageType.WriteProcessData&&result.processDataType) { + WriteProcessData(result.processDataType, result.data||"") + } + // 关闭过程数据 + if (result.type === WorkerMessageType.CloseProcessData) { + CloseProcessData() + } } // 初始化日志 @@ -60,6 +70,7 @@ async function InitLog() { // 初始化学员过程数据目录 async function InitExam(dirName: string) { + console.log("初始化过程",dirName) let date = dayTs().format("YYYY_MM_DD") const path = `${GlobalConfig.commonFileWriteAddress}/logs/${date}/${dirName}` const nameDirIsExit = await IsExit(path) @@ -75,6 +86,24 @@ async function InitExam(dirName: string) { }) } +// 写过程数据 +async function WriteProcessData(type: ProcessDataEnumType, data: string) { + let index = Number(type) + console.log("创建文件",type,index.toString(),data) + let result=await EditFile(fileFdArr[index], data) + if(result){ + // 写文件成功 + }else{ + // 写文件失败 + } +} + +// 关闭过程数据 +function CloseProcessData() { + fileFdArr.forEach((item: number) => { + fs.closeSync(item) + }) +} workerPort.onmessageerror = (e: MessageEvents) => { }