diff --git a/entry/src/main/ets/pages/VideoConfig.ets b/entry/src/main/ets/pages/VideoConfig.ets index 088a7cb..fce6862 100644 --- a/entry/src/main/ets/pages/VideoConfig.ets +++ b/entry/src/main/ets/pages/VideoConfig.ets @@ -177,7 +177,7 @@ struct VideoConfigPage { type: "3", click: async () => { const arr = ['1', '2', '3', '4'] - if (!arr.includes(this.videoConfig.pztd)) { + if (!arr.includes(this.videoConfig?.pztd || "")) { Prompt.showToast({ message: '请填写正确的拍照通道', duration: 3000 diff --git a/entry/src/main/ets/pages/judgeSDK/judge.ets b/entry/src/main/ets/pages/judgeSDK/judge.ets index 00ec844..59540fe 100644 --- a/entry/src/main/ets/pages/judgeSDK/judge.ets +++ b/entry/src/main/ets/pages/judgeSDK/judge.ets @@ -6,7 +6,6 @@ import buffer from '@ohos.buffer'; import VoiceAnnounce from './utils/voiceAnnouncements'; import FileModel from './utils/fileModel'; import FilePhoto from './utils/filePhoto'; -import FileLog from './utils/fileLog'; import JudgeTask from './utils/judgeTask'; import { JudgeConfig, JudgeTag } from '../../config'; import { GetSyncData, SqlInsertTable } from '../../utils/table/Operation'; @@ -101,8 +100,6 @@ export default class Judge { sharps: this.getModelData('km3/Sharps.txt') || "" } } - private context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext; - private fileLog?: FileLog //人工扣分 public setJudgeMark = async (itemno: string, serial: string, type = 1) => { await examJudgeArtificialMark(Number(itemno), serial, type); @@ -113,7 +110,8 @@ export default class Judge { serial, type }) - await this.fileLog?.setExamJudgeData(str) + // await this.fileLog?.setExamJudgeData(str) + dConsole.writeProcessData(ProcessDataEnumType.JudgeExamData, str) dConsole.info(JudgeTag, `人工扣分-${itemno}-${serial}`) } //人工操作项目 @@ -125,9 +123,11 @@ export default class Judge { itemno: Number(itemno), type }) - await this.fileLog?.setExamJudgeData(str) + // await this.fileLog?.setExamJudgeData(str) + dConsole.writeProcessData(ProcessDataEnumType.JudgeExamData, str) dConsole.info(JudgeTag, `人工评判${type == 1 ? '进入' : '取消'}项目-${itemno}`) } + private context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext; private filePath: string = "" private totalScore: number = -1 private prevJd: number = 0 @@ -184,6 +184,48 @@ export default class Judge { private isExamEnd: boolean // 是否发送udp private isUdpEnd: boolean = false + // 处理udp plc信号 + handleUdp = async (msg: string) => { + const stachArr = msg.split(',') + if (stachArr[0] != '#DN_GD' || this.isUdpEnd) { + return + } + const gpsPart = msg.split("#END$GPS,")[1]; + const gpsStatus = gpsPart.split(",")[0]; + if (gpsStatus === "4") { + dConsole.log(JudgeTag, "差分状态正常", gpsStatus) + this.judgeUI.isDwztRight = true + } else { + dConsole.log(JudgeTag, "差分状态异常", gpsStatus) + this.judgeUI.isDwztRight = false + } + this.judgeUI.isDwztRight + const plcData = await this.getPlcData(msg); + // 4.过程数据 + // await this.fileLog?.setExamJudgeData(JSON.stringify(plcData)) + dConsole.writeProcessData(ProcessDataEnumType.JudgeExamData, 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('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++) + } //是否手动结束考试 private isManual: boolean = false //UDP服务序列号 @@ -194,16 +236,14 @@ export default class Judge { const carInfo = AppStorage.get('carInfo') const judgeUI = this.judgeUI const fileUtil = this.fileUtil - const fileLog = this.fileLog const carId = carInfo?.carId || "" const examinationRoomId = carInfo?.examinationRoomId || "" - const folderPath = fileLog?.folderPath const base64 = new util.Base64(); const time = GetCurrentTime(); const endTime = GetCurrentTime(1) let examDataBase64: string = '' - const examDataStr: string = await this.fileUtil.readFile(`${folderPath}/wuxi_progress_data.txt`); + const examDataStr: string = await this.fileUtil.readFile(`${dConsole.currentExamCatalog}/wuxi_progress_data.txt`); try { let tempBuff = buffer.alloc(examDataStr.length, examDataStr) let examData: Uint8Array = new Uint8Array(tempBuff.buffer) @@ -230,6 +270,60 @@ export default class Judge { dConsole.info(JudgeTag, '过程数据文件上传 end') } private judgeTask: JudgeTask + // 检测扣分、结束项目时该项目是否开始 + checkProjectIsStart = async (xmdm: number, currentType: 1 | 2, kf?: MarkRule) => { + if (xmdm == 20) { + return true + } + const judgeUI = this.judgeUI; + const judgeTask = this.judgeTask; + const projectsObj: object = this.judgeUI.projectsObj + const currentProject: ProjectInfo = Reflect.get(projectsObj, xmdm) + const isUpload = currentProject.isUpload + + //如果项目没有开始 + dConsole.info(JudgeTag, 'surenjun isUpload=>', isUpload) + if (!isUpload) { + dConsole.info(JudgeTag, '项目补传开始') + //项目开始补传 + judgeTask.addTask(async () => { + await this.beginProject(xmdm) + }, { + isDelay: true + }) + judgeTask.addTask(async () => { + await this.uploadProgressPhoto(xmdm) + }, { + isDelay: true + }) + currentProject.isUpload = true; + Reflect.set(this.judgeUI.projectsObj, xmdm, currentProject) + //扣分补传 + if (currentType == 2) { + judgeTask.addTask(async () => { + await this.pointsDedute(xmdm, kf!) + }, { + isDelay: true + }) + } + //扣分补传判断是否合格 不合格补传项目结束 + if (currentType == 1 || (currentType == 2 && this.totalScore < judgeUI.passingScore)) { + judgeTask.addTask(async () => { + await this.endProject(xmdm) + }, { + isDelay: true + }) + currentProject.isEnd = true; + Reflect.set(this.judgeUI.projectsObj, xmdm, currentProject) + } + judgeTask.addTask(async () => { + this.checkExamIsEnd() + }) + return false; + } else { + return true + } + } private tempData?: PLCType //实时计算gps经纬度距离 handDistance = async () => { @@ -260,7 +354,8 @@ export default class Judge { private plcData?: PLCType // 获取plc数据 getPlcData = async (plc: string) => { - await this.fileLog?.setPlcProgressData(plc) + // await this.fileLog?.setPlcProgressData(plc) + dConsole.writeProcessData(ProcessDataEnumType.PlcData, plc) //plc字符串转化成评判初始化数据 const tempData = await PlcStrToJson(plc); //模拟灯光回放时刻 @@ -270,7 +365,8 @@ export default class Judge { //plc字符串转化成无锡所过程数据 const wuXiDataStr = await PlcStrToWXJson(plc) this.plcData = tempData - await this.fileLog?.setExamJudgeWuxiProgressData(wuXiDataStr) + // await this.fileLog?.setExamJudgeWuxiProgressData(wuXiDataStr) + dConsole.writeProcessData(ProcessDataEnumType.WuxiProgressData, wuXiDataStr) this.tempData = tempData this.plcStr = plc; this.mndgStr = ''; @@ -278,46 +374,40 @@ export default class Judge { AppStorage.setOrCreate('msgStr', plc) return tempData } - // 处理udp plc信号 - handleUdp = async (msg: string) => { - const stachArr = msg.split(',') - if (stachArr[0] != '#DN_GD' || this.isUdpEnd) { - return - } - const gpsPart = msg.split("#END$GPS,")[1]; - const gpsStatus = gpsPart.split(",")[0]; - if (gpsStatus === "4") { - dConsole.log(JudgeTag, "差分状态正常", gpsStatus) - this.judgeUI.isDwztRight = true - } else { - dConsole.log(JudgeTag, "差分状态异常", gpsStatus) - this.judgeUI.isDwztRight = false - } - this.judgeUI.isDwztRight - 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('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信号 + 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; //本地轨迹回放地址 @@ -331,39 +421,12 @@ export default class Judge { if (!this.isJudgeDisConnect) { return } - const folderPath = this.fileLog?.folderPath - const examDataStr = await this.fileUtil.readFile(`${folderPath}/wuxi_dis_progress_data.txt`); + const examDataStr = await this.fileUtil.readFile(`${dConsole.currentExamCatalog}/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 artSubject3ProjectsCodesArr: number[] = [3, 9, 4, 10, 12, 11] - private lane: LANE = { - road: '', num: 0, count: 0 - } - private disConnectNum: number = 0; - //调用监管接口 - sendWriteObjectOut: SendWriteObjectOut = async (data, filePath) => { - const temp = await writeObjectOut(data, filePath, this.context); - dConsole.log(JudgeTag, "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) { - dConsole.info('surenjun', '123') - this.judgeUI.errorMsg = '当前的考试过程信息网络传输异常,程序点击确认将重启!'; - this.judgeUI.disConnectErrorOpen = true - } - - this.disConnectNum = 0 - return temp - } // 项目开始接口同步 beginProject = async (ksxm: number) => { const carInfo = AppStorage.get('carInfo'); @@ -467,6 +530,32 @@ export default class Judge { UploadRegulatoryCodeConversion('17C54', temp.code || 0) dConsole.info(JudgeTag, '上传照片 end') } + private artSubject3ProjectsCodesArr: number[] = [3, 9, 4, 10, 12, 11] + private lane: LANE = { + road: '', num: 0, count: 0 + } + private disConnectNum: number = 0; + //调用监管接口 + sendWriteObjectOut: SendWriteObjectOut = async (data, filePath) => { + const temp = await writeObjectOut(data, filePath, this.context); + dConsole.log(JudgeTag, "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) { + dConsole.info('surenjun', '123') + this.judgeUI.errorMsg = '当前的考试过程信息网络传输异常,程序点击确认将重启!'; + this.judgeUI.disConnectErrorOpen = true + } + + this.disConnectNum = 0 + return temp + } private videoData?: RecordHandleType //当前科目二的考试项目 private deductedPopShowTimer: number = 0; @@ -585,95 +674,6 @@ export default class Judge { } } } - // 检测扣分、结束项目时该项目是否开始 - checkProjectIsStart = async (xmdm: number, currentType: 1 | 2, kf?: MarkRule) => { - if (xmdm == 20) { - return true - } - const judgeUI = this.judgeUI; - const judgeTask = this.judgeTask; - const projectsObj: object = this.judgeUI.projectsObj - const currentProject: ProjectInfo = Reflect.get(projectsObj, xmdm) - const isUpload = currentProject.isUpload - - //如果项目没有开始 - dConsole.info(JudgeTag, 'surenjun isUpload=>', isUpload) - if (!isUpload) { - dConsole.info(JudgeTag, '项目补传开始') - //项目开始补传 - judgeTask.addTask(async () => { - await this.beginProject(xmdm) - }, { - isDelay: true - }) - judgeTask.addTask(async () => { - await this.uploadProgressPhoto(xmdm) - }, { - isDelay: true - }) - currentProject.isUpload = true; - Reflect.set(this.judgeUI.projectsObj, xmdm, currentProject) - //扣分补传 - if (currentType == 2) { - judgeTask.addTask(async () => { - await this.pointsDedute(xmdm, kf!) - }, { - isDelay: true - }) - } - //扣分补传判断是否合格 不合格补传项目结束 - if (currentType == 1 || (currentType == 2 && this.totalScore < judgeUI.passingScore)) { - judgeTask.addTask(async () => { - await this.endProject(xmdm) - }, { - isDelay: true - }) - currentProject.isEnd = true; - Reflect.set(this.judgeUI.projectsObj, xmdm, currentProject) - } - judgeTask.addTask(async () => { - this.checkExamIsEnd() - }) - return false; - } else { - return true - } - } - // 处理轨迹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; - } constructor(judgeUI: JudgeUI) { this.serialIndex = 1; @@ -870,7 +870,6 @@ export default class Judge { const goJudgeVoice = this.goJudgeVoice; const setMndg = this.setMndg; const avPlayer = this.avPlayer; - const fileLog = this.fileLog; const judgeUI = this.judgeUI; const carzt = examData.carzt @@ -989,7 +988,10 @@ export default class Judge { //考试结束 case 5: this.ksjs = ksjs; - await fileLog?.setExamJudgeData(JSON.stringify({ + // await fileLog?.setExamJudgeData(JSON.stringify({ + // method: 'examJudgeEndExam' + // })) + dConsole.writeProcessData(ProcessDataEnumType.JudgeExamData, JSON.stringify({ method: 'examJudgeEndExam' })) break; @@ -1304,7 +1306,7 @@ export default class Judge { // 评判语音提示 goJudgeVoice = async (sound: JudgeSound) => { const avPlayer = this.avPlayer - const fileLog = this.fileLog + // const fileLog = this.fileLog dConsole.info('surenjun code=>', JSON.stringify(sound.code)) //判断是不是模拟灯光语音 if (sound.type == 1) { @@ -1312,7 +1314,13 @@ export default class Judge { examJudgeSoundEnd({ xmdm: sound.xmdm, code: sound.code[0], type: sound.type }) - fileLog?.setExamJudgeData(JSON.stringify({ + // fileLog?.setExamJudgeData(JSON.stringify({ + // method: 'examJudgeSoundEnd', + // itemno: sound.xmdm, + // code: sound.code[0], + // type: sound.type, + // })) + dConsole.writeProcessData(ProcessDataEnumType.JudgeExamData, JSON.stringify({ method: 'examJudgeSoundEnd', itemno: sound.xmdm, code: sound.code[0], diff --git a/entry/src/main/ets/pages/judgeSDK/utils/fileLog.ets b/entry/src/main/ets/pages/judgeSDK/utils/fileLog.ets deleted file mode 100644 index a651b5f..0000000 --- a/entry/src/main/ets/pages/judgeSDK/utils/fileLog.ets +++ /dev/null @@ -1,127 +0,0 @@ -import { GetCurrentTime } from '../../../utils/Common'; -import FileUtils from '../../../utils/FileUtils'; -import common from '@ohos.app.ability.common'; - -interface StuInfo { - name: string - lsh: string - idCard: string -} - - -export default class FileLog { - public folderPath?: string - public progressDataFd: number | undefined = undefined - public examJudgeWuxiDataFd: number | undefined = undefined - public examJudgeWuxiProgressDataFd: number | undefined = undefined - public plcDataFd: number | undefined = undefined - public examJudgeDataFd: number | undefined = undefined - public examJudgeCallbackDataFd: number | undefined = undefined - public examJudgeLogDataFd: number | undefined = undefined - public fourAndOneLogDataFd: number | undefined = undefined - public fourAndOneLogDataBytesFd: number | undefined = undefined - public examLineDataFd: number | undefined = undefined - private fileUtil: FileUtils - // 过程文件数据 - public setExamProgressData = async (str: Object) => { - this.progressDataFd = - await this.fileUtil.editFile(`${this.folderPath}/exam_progress_data.txt`, JSON.stringify(str)); - } - // 无锡所接口数据 - public setExamJudgeWuxiData = async (str: string) => { - // this.examJudgeWuxiDataFd = - // await this.fileUtil.editFile(`${this.folderPath}/wuxi_exam_data.txt`, str); - } - // 无锡所过程数据 - public setExamJudgeWuxiProgressData = async (str: string) => { - // 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)); - } - // 过程评判json数据 - public setExamJudgeData = async (str: string) => { - // 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); - } - // 过程评判日志调数据 - public setExamJudgeLogData = async (str: string) => { - // this.examJudgeLogDataFd = - // await this.fileUtil.editFile(`${this.folderPath}/judge_log_data.txt`, str); - } - // 设置四合一画面数据 - public setFourAndOneLogData = async (str: string) => { - this.fourAndOneLogDataFd = - await this.fileUtil.editFile(`${this.folderPath}/four_one_log_data.txt`, str); - } - public setFourAndOneLogDataBytes = async (str: string) => { - this.fourAndOneLogDataBytesFd = - await this.fileUtil.editFile(`${this.folderPath}/four_one_log_byte_data.txt`, str); - } - // 无锡所轨迹数据 - public setExamLineData = async (plcStr: string) => { - const plcData = plcStr.split(','); - const time = GetCurrentTime(); - const lineData = [ - /*帧头*/time, - /*卫星时间*/time, - /*经度*/ plcData[95], - /*纬度*/ plcData[95], - /*高度*/ plcData[86], - /*方位角*/ 0, - /*俯仰角*/ plcData[91], - /*速度角*/'', - /*速度*/ plcData[97], - /*横滚*/'', - /*卫星定位状态*/'', - /*卫星定向状态*/'', - /*前天线可用星数*/'', - /*后天线可用星数*/'', - /*东向位置坐标*/'', - /*北向位置坐标*/'', - /*天向位置坐标*/'', - /*东向速度*/'', - /*北向速度*/'', - /*评判信号1*/[plcData[14], plcData[19], plcData[5], '', plcData[2], plcData[3], plcData[7], plcData[8], - plcData[13], plcData[12], plcData[17], '', plcData[4], plcData[11], plcData[20], plcData[9], 0].join(','), - /*评判信号2*/['', plcData[28], '', '', plcData[10], '', '', '', '', '', '', '', '', '', '', '', '', ''].join(','), - /*发动机转速*/ plcData[25], - /*结束符*/ time, - ]; - this.examLineDataFd = - await this.fileUtil.editFile(`${this.folderPath}/exam_wuxi_data.txt`, JSON.stringify(lineData)); - }; - // private stuInfo: StuInfo - // 设置文件夹 - 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" - } - - constructor(context: common.UIAbilityContext) { - const fileUtil = new FileUtils(context) - this.fileUtil = fileUtil - } - - //关闭所有文件写入 - public closeAllFiles = async () => { - ['exam_progress_data', 'wuxi_exam_data', 'wuxi_progress_data', 'plc_data', 'judge_exam_data', - 'judge_progress_callback_data', 'judge_log_data', 'four_one_log_data', 'four_one_log_byte_data'].forEach(path => { - this.fileUtil.closeFile(`${this.folderPath}/${path}.txt`); - }) - } -} diff --git a/entry/src/main/ets/utils/LogWorker.ets b/entry/src/main/ets/utils/LogWorker.ets index 1ec44b6..f09908e 100644 --- a/entry/src/main/ets/utils/LogWorker.ets +++ b/entry/src/main/ets/utils/LogWorker.ets @@ -1,13 +1,16 @@ // 日志向外暴露的方法 -import dayTs from './Date'; import worker from '@ohos.worker'; +import { GlobalConfig } from '../config'; import { LogWorkerMessage, ProcessDataEnumType, WorkerMessageType } from '../model/index'; +import dayTs from './Date'; const MAX_MESSAGE_LENGTH = 300; const LOG_CHUNK_PREFIX = '[切割消息序号'; class logWorker { private static instance: logWorker | null = null; + // 当前考试的数据目录 + public currentExamCatalog: string = "" private workerInstance: worker.ThreadWorker | null = null; // 是否开启日志 1开启 private isLogEnabled: string = "0"; @@ -58,6 +61,8 @@ class logWorker { type: WorkerMessageType.ExamProcessInit, studentDirName: dirName } + let date = dayTs().format("YYYY_MM_DD") + this.currentExamCatalog = `${GlobalConfig.commonFileWriteAddress}/logs/${date}/${dirName}` if (this.isLogEnabled === "1") { this.workerInstance?.postMessage(JSON.stringify(data)) } @@ -74,8 +79,9 @@ class logWorker { this.workerInstance?.postMessage(JSON.stringify(params)) } } + // 关闭过程数据写入 - closeProcessData(){ + closeProcessData() { let params: LogWorkerMessage = { type: WorkerMessageType.CloseProcessData, }