fix:过程数据方法补全部分
This commit is contained in:
		
							parent
							
								
									9696924932
								
							
						
					
					
						commit
						4832904345
					
				
							
								
								
									
										2
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								Makefile
									
									
									
									
									
								
							| @ -1,2 +1,2 @@ | ||||
| gitLog: | ||||
| 	  git log --since="2025-06-30 17:14" --until="2025-07-2 17:35"  --pretty=format:"<details>%n    <summary>%s</summary>%n     <span style=\"color: #888;\">[提交人]:</span><span style=\"color: #333;\">%an</span><br>%n     <span style=\"color: #888;\">[提交时间]:</span><span style=\"color: #333;\">%ad</span><br>%n    <span style=\"color: #888;\">[提交版本]:</span><span style=\"color: #333;\">%h</span>%n</details>%n" --date=format:"%Y-%m-%d %H:%M" > release_note.md | ||||
| 	  git log --since="2025-06-30 17:14" --until="2025-07-15 10:00"  --pretty=format:"<details>%n    <summary>%s</summary>%n     <span style=\"color: #888;\">[提交人]:</span><span style=\"color: #333;\">%an</span><br>%n     <span style=\"color: #888;\">[提交时间]:</span><span style=\"color: #333;\">%ad</span><br>%n    <span style=\"color: #888;\">[提交版本]:</span><span style=\"color: #333;\">%h</span>%n</details>%n" --date=format:"%Y-%m-%d %H:%M" > release_note.md | ||||
| @ -44,8 +44,6 @@ export enum WorkerMessageType { | ||||
|   Init = 'init', | ||||
|   // 初始化过程数据,初始化到人员以及人员里面各个目录 | ||||
|   ProcessDataInit = 'processDataInit', | ||||
|   //   打开过程数据文件 | ||||
|   OpenProcessDataFile = 'openProcessDataFile', | ||||
|   // 初始化考试过程 | ||||
|   ExamProcessInit = 'examProcessInit' | ||||
| } | ||||
|  | ||||
| @ -19,6 +19,7 @@ import Prompt from '@system.prompt'; | ||||
| import { DifferentialAndSignal } from '../utils/business/DifferentialAndSignalWorker'; | ||||
| import { dConsole } from '../utils/LogWorker'; | ||||
| import CarLoadingComponent from './Index/Loading'; | ||||
| import { CreateFile } from '../utils/Common'; | ||||
| 
 | ||||
| @Entry | ||||
| @Component | ||||
| @ -77,6 +78,7 @@ struct Index { | ||||
| 
 | ||||
|   async onPageShow(): Promise<void> { | ||||
|     dConsole.log("权限首页 onPageShow2") | ||||
|     CreateFile("/mnt/hmdfs/100/account/device_view/local/files/duolun/logs/test.text") | ||||
|     if (!this.isPlay) { | ||||
|       this.avPlayer.playAudio(['welcome.wav']) | ||||
|       this.isPlay = true | ||||
|  | ||||
| @ -35,7 +35,7 @@ import { | ||||
| } from '../model'; | ||||
| import { BusinessError } from '@ohos.base'; | ||||
| import { GetSyncData, SqlInsertTable } from '../utils/table/Operation'; | ||||
| import { GetCurrentUserKeyValue } from './UserInfo/utils'; | ||||
| import { GetCurrentUserKeyValue, InitializeExamProcessData } from './UserInfo/utils'; | ||||
| import dayTs from '../utils/Date'; | ||||
| import { GetCurrentTime, NumberToByteArray } from '../utils/Common'; | ||||
| import DB from '../utils/DbSql'; | ||||
| @ -174,10 +174,12 @@ struct UserInfoPage { | ||||
|       } | ||||
|       if (this.singlePlay) { | ||||
|         this.currentUser.id = '0' | ||||
|         dConsole.log('开始考试') | ||||
|         dConsole.log('开始考试3') | ||||
|         SqlInsertTable('USER', [this.currentUser]).catch((e: BusinessError) => { | ||||
|           dConsole.log("error", JSON.stringify(e)) | ||||
|         }) | ||||
|         // 初始化开始考试过程数据文件夹 | ||||
|         InitializeExamProcessData(this.currentUser) | ||||
|         router.pushUrl({ | ||||
|           url: this.carInfo.examSubject == '3' ? 'pages/Roads' : 'pages/Judge', | ||||
|           params: { | ||||
| @ -342,8 +344,11 @@ struct UserInfoPage { | ||||
|         AppStorage.setOrCreate('examinerInfo', this.examinerLoginInfo) | ||||
|         AppStorage.setOrCreate('lsh', res.lsh) | ||||
|         // const { examSubject } = this.carInfo; | ||||
|         dConsole.log("开始考试2") | ||||
|         if (this.singlePlay) { | ||||
|           this.stopDeviceById() | ||||
|           // 初始化开始考试过程数据文件夹 | ||||
|           InitializeExamProcessData(this.currentUser) | ||||
|           router.pushUrl({ | ||||
|             url: this.carInfo.examSubject == "3" ? 'pages/Roads' : 'pages/Judge', | ||||
|             params: { | ||||
| @ -874,6 +879,8 @@ struct UserInfoPage { | ||||
|       await SqlInsertTable('USER', [this.currentUser]) | ||||
|       this.stepFlag = false | ||||
|       this.startExamDialogController.close() | ||||
|       // 初始化开始考试过程数据文件夹 | ||||
|       InitializeExamProcessData(this.currentUser) | ||||
|       router.pushUrl({ | ||||
|         url: 'pages/Judge', | ||||
|         params: { | ||||
|  | ||||
| @ -1,4 +1,7 @@ | ||||
| import { UserInfoTag } from '../../config'; | ||||
| import { User } from '../../model'; | ||||
| import dayTs from '../../utils/Date'; | ||||
| import { dConsole } from '../../utils/LogWorker'; | ||||
| 
 | ||||
| export const GetCurrentUserKeyValue = (user: User, key: string): string => { | ||||
|   switch (key) { | ||||
| @ -51,4 +54,14 @@ export const GetCurrentUserKeyValue = (user: User, key: string): string => { | ||||
|     default: | ||||
|       return ''; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| export const InitializeExamProcessData = (user: User) => { | ||||
|   // 初始化考试过程数据 | ||||
|   // 2025_07_04_11_35_26_0000000000000_342323199501470011_测试学员1 | ||||
|   let date = dayTs().format("YYYY_MM_DD_HH_mm_ss") | ||||
|   const examDir: string = date + "_" + user.lsh + "_" + user.sfzmhm + "_" + user.xm | ||||
|   dConsole.log(UserInfoTag, "过程数据文件夹名", examDir) | ||||
|   dConsole.initExam(examDir) | ||||
|   dConsole.log("开始考试1") | ||||
| } | ||||
| @ -230,37 +230,6 @@ export default class Judge { | ||||
|     dConsole.info(JudgeTag, '过程数据文件上传 end') | ||||
|   } | ||||
|   private judgeTask: JudgeTask | ||||
|   // 处理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<number>('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++) | ||||
|   } | ||||
|   // 检测扣分、结束项目时该项目是否开始 | ||||
|   checkProjectIsStart = async (xmdm: number, currentType: 1 | 2, kf?: MarkRule) => { | ||||
|     if (xmdm == 20) { | ||||
| @ -338,6 +307,116 @@ export default class Judge { | ||||
|     this.prevWd = tWD; | ||||
|   } | ||||
|   private performInfo?: JudgePerformInfo | ||||
|   private ksjs?: JudgeKSJS | ||||
|   private kfArr?: MarkRule[] | ||||
|   //所有的科目考试项目(大车&小车) | ||||
|   private kmItems: JudgeConfigObjKmItems | ||||
|   private plcData?: PLCType | ||||
|   // 处理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<number>('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++) | ||||
|   } | ||||
|   // 获取plc数据 | ||||
|   getPlcData = async (plc: string) => { | ||||
|     await this.fileLog?.setPlcProgressData(plc) | ||||
|     //plc字符串转化成评判初始化数据 | ||||
|     const tempData = await PlcStrToJson(plc); | ||||
|     //模拟灯光回放时刻 | ||||
|     tempData.sensor.rmndg = this.rmndg; | ||||
|     //模拟灯灯光灯光项目 | ||||
|     tempData.sensor.mndg = this.mndgStr || ""; | ||||
|     //plc字符串转化成无锡所过程数据 | ||||
|     const wuXiDataStr = await PlcStrToWXJson(plc) | ||||
|     this.plcData = tempData | ||||
|     await this.fileLog?.setExamJudgeWuxiProgressData(wuXiDataStr) | ||||
|     this.tempData = tempData | ||||
|     this.plcStr = plc; | ||||
|     this.mndgStr = ''; | ||||
|     this.rmndg = 0; | ||||
|     AppStorage.setOrCreate('msgStr', plc) | ||||
|     return tempData | ||||
|   } | ||||
|   // 处理轨迹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) | ||||
| 
 | ||||
|     }, 200) | ||||
|     // TODO 定时器缺失 | ||||
|     // globalThis.judgeTimer = judgeTimer; | ||||
|   } | ||||
|   private isEndTip: boolean = false; | ||||
|   //本地轨迹回放地址 | ||||
|   private trajectoryPath: string | ||||
|   // private currentKm2ItemsObj: any | ||||
|   private isTrajectoryOpen: boolean; | ||||
|   // 调代理接口是否断网了 | ||||
|   private isJudgeDisConnect: boolean = false; | ||||
|   // 断网数据补传 | ||||
|   uploadDisConnectData = async () => { | ||||
|     if (!this.isJudgeDisConnect) { | ||||
|       return | ||||
|     } | ||||
|     const folderPath = this.fileLog?.folderPath | ||||
|     const examDataStr = await this.fileUtil.readFile(`${folderPath}/wuxi_dis_progress_data.txt`); | ||||
|     const examDataArr = examDataStr.split('\n'); | ||||
|     for (let examDataStr of examDataArr) { | ||||
|       const code = await writeObjectOut(JSON.parse(examDataStr), "", this.context); | ||||
|     } | ||||
|   } | ||||
|   // 校验考试是否结束 | ||||
|   checkExamIsEnd = async (isManual?: boolean) => { | ||||
|     dConsole.log(JudgeTag, "校验考试是否结束") | ||||
| @ -453,86 +532,14 @@ export default class Judge { | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|   private ksjs?: JudgeKSJS | ||||
|   private kfArr?: MarkRule[] | ||||
|   //所有的科目考试项目(大车&小车) | ||||
|   private kmItems: JudgeConfigObjKmItems | ||||
|   private plcData?: PLCType | ||||
|   // 获取plc数据 | ||||
|   getPlcData = async (plc: string) => { | ||||
|     await this.fileLog?.setPlcProgressData(plc) | ||||
|     //plc字符串转化成评判初始化数据 | ||||
|     const tempData = await PlcStrToJson(plc); | ||||
|     //模拟灯光回放时刻 | ||||
|     tempData.sensor.rmndg = this.rmndg; | ||||
|     //模拟灯灯光灯光项目 | ||||
|     tempData.sensor.mndg = this.mndgStr || ""; | ||||
|     //plc字符串转化成无锡所过程数据 | ||||
|     const wuXiDataStr = await PlcStrToWXJson(plc) | ||||
|     this.plcData = tempData | ||||
|     await this.fileLog?.setExamJudgeWuxiProgressData(wuXiDataStr) | ||||
|     this.tempData = tempData | ||||
|     this.plcStr = plc; | ||||
|     this.mndgStr = ''; | ||||
|     this.rmndg = 0; | ||||
|     AppStorage.setOrCreate('msgStr', plc) | ||||
|     return tempData | ||||
|   } | ||||
|   private isEndTip: boolean = false; | ||||
|   // 处理轨迹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) | ||||
| 
 | ||||
|     }, 200) | ||||
|     // TODO 定时器缺失 | ||||
|     // globalThis.judgeTimer = judgeTimer; | ||||
|   } | ||||
|   //本地轨迹回放地址 | ||||
|   private trajectoryPath: string | ||||
|   // private currentKm2ItemsObj: any | ||||
|   private isTrajectoryOpen: boolean; | ||||
|   //当前科目二的考试项目 | ||||
|   // 调代理接口是否断网了 | ||||
|   private isJudgeDisConnect: boolean = false; | ||||
|   // 断网数据补传 | ||||
|   uploadDisConnectData = async () => { | ||||
|     if (!this.isJudgeDisConnect) { | ||||
|       return | ||||
|     } | ||||
|     const folderPath = this.fileLog?.folderPath | ||||
|     const examDataStr = await this.fileUtil.readFile(`${folderPath}/wuxi_dis_progress_data.txt`); | ||||
|     const examDataArr = examDataStr.split('\n'); | ||||
|     for (let examDataStr of examDataArr) { | ||||
|       const code = await writeObjectOut(JSON.parse(examDataStr), "", this.context); | ||||
|     } | ||||
|   private deductedPopShowTimer: number = 0; | ||||
|   private artSubject3ProjectsCodesArr: number[] = [3, 9, 4, 10, 12, 11] | ||||
|   private lane: LANE = { | ||||
|     road: '', num: 0, count: 0 | ||||
|   } | ||||
|   private videoData?: RecordHandleType | ||||
|   private disConnectNum: number = 0; | ||||
|   // 项目开始接口同步 | ||||
|   beginProject = async (ksxm: number) => { | ||||
|     const carInfo = AppStorage.get<CarInfoType>('carInfo'); | ||||
| @ -636,13 +643,6 @@ export default class Judge { | ||||
|     UploadRegulatoryCodeConversion('17C54', temp.code || 0) | ||||
|     dConsole.info(JudgeTag, '上传照片 end') | ||||
|   } | ||||
|   private deductedPopShowTimer: number = 0; | ||||
|   private artSubject3ProjectsCodesArr: number[] = [3, 9, 4, 10, 12, 11] | ||||
|   private lane: LANE = { | ||||
|     road: '', num: 0, count: 0 | ||||
|   } | ||||
|   private videoData?: RecordHandleType | ||||
|   private disConnectNum: number = 0; | ||||
|   //调用监管接口 | ||||
|   sendWriteObjectOut: SendWriteObjectOut = async (data, filePath) => { | ||||
|     const temp = await writeObjectOut(data, filePath, this.context); | ||||
|  | ||||
| @ -222,9 +222,16 @@ export function CreateDir(path: string): Promise<boolean> { | ||||
|  * @params path 文件具体路径 | ||||
|  * @return 返回一个Promise | ||||
|  */ | ||||
| export function CreateFile(path: string): Promise<boolean> { | ||||
| export function CreateFile(path: string): Promise<number> { | ||||
|   return new Promise((resolve, reject) => { | ||||
| 
 | ||||
|     try { | ||||
|       let file = fs.openSync(path, fs.OpenMode.READ_WRITE | fs.OpenMode.APPEND | fs.OpenMode.CREATE) | ||||
|       console.log(CommonFileTag, "创建文件成功", path) | ||||
|       resolve(file.fd) | ||||
|     } catch (e) { | ||||
|       console.log(CommonFileTag, "创建文件失败") | ||||
|       reject(-1) | ||||
|     } | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -44,7 +44,7 @@ class logWorker { | ||||
|     console.log(`当前环境配置初始化: ${isOpenLog}`); | ||||
|     this.isLogEnabled = isOpenLog; | ||||
|     if (this.isLogEnabled === "1") { | ||||
|       this.workerInstance = new worker.ThreadWorker("entry/ets/workers/Log.ets"); | ||||
|       this.workerInstance = new worker.ThreadWorker("entry/ets/workers/Log.ets") | ||||
|       let data: LogWorkerMessage = { | ||||
|         type: WorkerMessageType.Init | ||||
|       } | ||||
| @ -52,6 +52,17 @@ class logWorker { | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   // 初始化考试过程数据文件夹以及文件 | ||||
|   initExam(dirName: string) { | ||||
|     let data: LogWorkerMessage = { | ||||
|       type: WorkerMessageType.ExamProcessInit, | ||||
|       studentDirName: dirName | ||||
|     } | ||||
|     if (this.isLogEnabled === "1") { | ||||
|       this.workerInstance?.postMessage(JSON.stringify(data)) | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   //   过程数据初始化 | ||||
|   processDataInit(carNo: string, name: string) { | ||||
|     let date = dayTs().format("YYYY_MM_DD_HH_mm_ss"); | ||||
|  | ||||
| @ -1,11 +1,12 @@ | ||||
| import worker, { ErrorEvent, MessageEvents, ThreadWorkerGlobalScope } from '@ohos.worker'; | ||||
| import { GlobalConfig } from '../config'; | ||||
| import { LogFileFd, LogPathType, LogWorkerMessage, WorkerMessageType } from '../model'; | ||||
| import { CreateDir, IsExit } from '../utils/Common'; | ||||
| import { CreateDir, CreateFile, IsExit } from '../utils/Common'; | ||||
| import dayTs from '../utils/Date'; | ||||
| 
 | ||||
| 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"] | ||||
| let fileFdArr: number[] = [] | ||||
| workerPort.onmessage = (e: MessageEvents) => { | ||||
|   console.log("日志系统worker收到消息") | ||||
|   // 日志文件目录 | ||||
| @ -18,9 +19,6 @@ workerPort.onmessage = (e: MessageEvents) => { | ||||
|   if (result.type === WorkerMessageType.Init) { | ||||
|     InitLog() | ||||
|   } | ||||
|   if (result.type === WorkerMessageType.OpenProcessDataFile) { | ||||
|     OpenProcessDataFile(logPaths, logFileFd, result.data || "") | ||||
|   } | ||||
|   if (result.type === WorkerMessageType.ExamProcessInit && result.studentDirName) { | ||||
|     InitExam(result.studentDirName) | ||||
|   } | ||||
| @ -69,13 +67,14 @@ async function InitExam(dirName: string) { | ||||
|     await CreateDir(path); | ||||
|   } | ||||
|   //   创建几个文件 | ||||
|   let 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"] | ||||
| 
 | ||||
|   fileNameArr.forEach(async (item: string, index: number) => { | ||||
|     let filePath = path + "/" + item | ||||
|     console.log("创建文件", filePath) | ||||
|     let result = await CreateFile(filePath) | ||||
|     fileFdArr[index] = result | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| function OpenProcessDataFile(logPaths: LogPathType, logFileFd: LogFileFd, name: string) { | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| workerPort.onmessageerror = (e: MessageEvents) => { | ||||
| } | ||||
|  | ||||
| @ -1,3 +1,38 @@ | ||||
| <details> | ||||
|     <summary>fix: 隐藏部分快速打印</summary> | ||||
|      <span style="color: #888;">[提交人]:</span><span style="color: #333;">wangzhongjie</span><br> | ||||
|      <span style="color: #888;">[提交时间]:</span><span style="color: #333;">2025-07-14 13:23</span><br> | ||||
|     <span style="color: #888;">[提交版本]:</span><span style="color: #333;">78be17b</span> | ||||
| </details> | ||||
| 
 | ||||
| <details> | ||||
|     <summary>fix: 增加request打印请求信息</summary> | ||||
|      <span style="color: #888;">[提交人]:</span><span style="color: #333;">wangzhongjie</span><br> | ||||
|      <span style="color: #888;">[提交时间]:</span><span style="color: #333;">2025-07-04 16:31</span><br> | ||||
|     <span style="color: #888;">[提交版本]:</span><span style="color: #333;">8838072</span> | ||||
| </details> | ||||
| 
 | ||||
| <details> | ||||
|     <summary>fix: 后置机拿不到信号问题</summary> | ||||
|      <span style="color: #888;">[提交人]:</span><span style="color: #333;">wangzhongjie</span><br> | ||||
|      <span style="color: #888;">[提交时间]:</span><span style="color: #333;">2025-06-26 14:27</span><br> | ||||
|     <span style="color: #888;">[提交版本]:</span><span style="color: #333;">a52a13e</span> | ||||
| </details> | ||||
| 
 | ||||
| <details> | ||||
|     <summary>fix: 优化打印以及评判一个弹窗问题</summary> | ||||
|      <span style="color: #888;">[提交人]:</span><span style="color: #333;">wangzhongjie</span><br> | ||||
|      <span style="color: #888;">[提交时间]:</span><span style="color: #333;">2025-07-04 13:49</span><br> | ||||
|     <span style="color: #888;">[提交版本]:</span><span style="color: #333;">7bd3689</span> | ||||
| </details> | ||||
| 
 | ||||
| <details> | ||||
|     <summary>fix: 增加一些日志</summary> | ||||
|      <span style="color: #888;">[提交人]:</span><span style="color: #333;">wangzhongjie</span><br> | ||||
|      <span style="color: #888;">[提交时间]:</span><span style="color: #333;">2025-07-04 10:50</span><br> | ||||
|     <span style="color: #888;">[提交版本]:</span><span style="color: #333;">af8b112</span> | ||||
| </details> | ||||
| 
 | ||||
| <details> | ||||
|     <summary>fix: 优化首页获取车辆后才可以进入联网以及单机逻辑</summary> | ||||
|      <span style="color: #888;">[提交人]:</span><span style="color: #333;">wangzhongjie</span><br> | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user