fix: 去掉旧的日志
This commit is contained in:
parent
0a5648967d
commit
3938e0761f
@ -177,7 +177,7 @@ struct VideoConfigPage {
|
|||||||
type: "3",
|
type: "3",
|
||||||
click: async () => {
|
click: async () => {
|
||||||
const arr = ['1', '2', '3', '4']
|
const arr = ['1', '2', '3', '4']
|
||||||
if (!arr.includes(this.videoConfig.pztd)) {
|
if (!arr.includes(this.videoConfig?.pztd || "")) {
|
||||||
Prompt.showToast({
|
Prompt.showToast({
|
||||||
message: '请填写正确的拍照通道',
|
message: '请填写正确的拍照通道',
|
||||||
duration: 3000
|
duration: 3000
|
||||||
|
|||||||
@ -6,7 +6,6 @@ import buffer from '@ohos.buffer';
|
|||||||
import VoiceAnnounce from './utils/voiceAnnouncements';
|
import VoiceAnnounce from './utils/voiceAnnouncements';
|
||||||
import FileModel from './utils/fileModel';
|
import FileModel from './utils/fileModel';
|
||||||
import FilePhoto from './utils/filePhoto';
|
import FilePhoto from './utils/filePhoto';
|
||||||
import FileLog from './utils/fileLog';
|
|
||||||
import JudgeTask from './utils/judgeTask';
|
import JudgeTask from './utils/judgeTask';
|
||||||
import { JudgeConfig, JudgeTag } from '../../config';
|
import { JudgeConfig, JudgeTag } from '../../config';
|
||||||
import { GetSyncData, SqlInsertTable } from '../../utils/table/Operation';
|
import { GetSyncData, SqlInsertTable } from '../../utils/table/Operation';
|
||||||
@ -101,8 +100,6 @@ export default class Judge {
|
|||||||
sharps: this.getModelData('km3/Sharps.txt') || ""
|
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) => {
|
public setJudgeMark = async (itemno: string, serial: string, type = 1) => {
|
||||||
await examJudgeArtificialMark(Number(itemno), serial, type);
|
await examJudgeArtificialMark(Number(itemno), serial, type);
|
||||||
@ -113,7 +110,8 @@ export default class Judge {
|
|||||||
serial,
|
serial,
|
||||||
type
|
type
|
||||||
})
|
})
|
||||||
await this.fileLog?.setExamJudgeData(str)
|
// await this.fileLog?.setExamJudgeData(str)
|
||||||
|
dConsole.writeProcessData(ProcessDataEnumType.JudgeExamData, str)
|
||||||
dConsole.info(JudgeTag, `人工扣分-${itemno}-${serial}`)
|
dConsole.info(JudgeTag, `人工扣分-${itemno}-${serial}`)
|
||||||
}
|
}
|
||||||
//人工操作项目
|
//人工操作项目
|
||||||
@ -125,9 +123,11 @@ export default class Judge {
|
|||||||
itemno: Number(itemno),
|
itemno: Number(itemno),
|
||||||
type
|
type
|
||||||
})
|
})
|
||||||
await this.fileLog?.setExamJudgeData(str)
|
// await this.fileLog?.setExamJudgeData(str)
|
||||||
|
dConsole.writeProcessData(ProcessDataEnumType.JudgeExamData, str)
|
||||||
dConsole.info(JudgeTag, `人工评判${type == 1 ? '进入' : '取消'}项目-${itemno}`)
|
dConsole.info(JudgeTag, `人工评判${type == 1 ? '进入' : '取消'}项目-${itemno}`)
|
||||||
}
|
}
|
||||||
|
private context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext;
|
||||||
private filePath: string = ""
|
private filePath: string = ""
|
||||||
private totalScore: number = -1
|
private totalScore: number = -1
|
||||||
private prevJd: number = 0
|
private prevJd: number = 0
|
||||||
@ -184,6 +184,48 @@ export default class Judge {
|
|||||||
private isExamEnd: boolean
|
private isExamEnd: boolean
|
||||||
// 是否发送udp
|
// 是否发送udp
|
||||||
private isUdpEnd: boolean = false
|
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<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++)
|
||||||
|
}
|
||||||
//是否手动结束考试
|
//是否手动结束考试
|
||||||
private isManual: boolean = false
|
private isManual: boolean = false
|
||||||
//UDP服务序列号
|
//UDP服务序列号
|
||||||
@ -194,16 +236,14 @@ export default class Judge {
|
|||||||
const carInfo = AppStorage.get<CarInfoType>('carInfo')
|
const carInfo = AppStorage.get<CarInfoType>('carInfo')
|
||||||
const judgeUI = this.judgeUI
|
const judgeUI = this.judgeUI
|
||||||
const fileUtil = this.fileUtil
|
const fileUtil = this.fileUtil
|
||||||
const fileLog = this.fileLog
|
|
||||||
const carId = carInfo?.carId || ""
|
const carId = carInfo?.carId || ""
|
||||||
const examinationRoomId = carInfo?.examinationRoomId || ""
|
const examinationRoomId = carInfo?.examinationRoomId || ""
|
||||||
|
|
||||||
const folderPath = fileLog?.folderPath
|
|
||||||
const base64 = new util.Base64();
|
const base64 = new util.Base64();
|
||||||
const time = GetCurrentTime();
|
const time = GetCurrentTime();
|
||||||
const endTime = GetCurrentTime(1)
|
const endTime = GetCurrentTime(1)
|
||||||
let examDataBase64: string = ''
|
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 {
|
try {
|
||||||
let tempBuff = buffer.alloc(examDataStr.length, examDataStr)
|
let tempBuff = buffer.alloc(examDataStr.length, examDataStr)
|
||||||
let examData: Uint8Array = new Uint8Array(tempBuff.buffer)
|
let examData: Uint8Array = new Uint8Array(tempBuff.buffer)
|
||||||
@ -230,6 +270,60 @@ export default class Judge {
|
|||||||
dConsole.info(JudgeTag, '过程数据文件上传 end')
|
dConsole.info(JudgeTag, '过程数据文件上传 end')
|
||||||
}
|
}
|
||||||
private judgeTask: JudgeTask
|
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
|
private tempData?: PLCType
|
||||||
//实时计算gps经纬度距离
|
//实时计算gps经纬度距离
|
||||||
handDistance = async () => {
|
handDistance = async () => {
|
||||||
@ -260,7 +354,8 @@ export default class Judge {
|
|||||||
private plcData?: PLCType
|
private plcData?: PLCType
|
||||||
// 获取plc数据
|
// 获取plc数据
|
||||||
getPlcData = async (plc: string) => {
|
getPlcData = async (plc: string) => {
|
||||||
await this.fileLog?.setPlcProgressData(plc)
|
// await this.fileLog?.setPlcProgressData(plc)
|
||||||
|
dConsole.writeProcessData(ProcessDataEnumType.PlcData, plc)
|
||||||
//plc字符串转化成评判初始化数据
|
//plc字符串转化成评判初始化数据
|
||||||
const tempData = await PlcStrToJson(plc);
|
const tempData = await PlcStrToJson(plc);
|
||||||
//模拟灯光回放时刻
|
//模拟灯光回放时刻
|
||||||
@ -270,7 +365,8 @@ export default class Judge {
|
|||||||
//plc字符串转化成无锡所过程数据
|
//plc字符串转化成无锡所过程数据
|
||||||
const wuXiDataStr = await PlcStrToWXJson(plc)
|
const wuXiDataStr = await PlcStrToWXJson(plc)
|
||||||
this.plcData = tempData
|
this.plcData = tempData
|
||||||
await this.fileLog?.setExamJudgeWuxiProgressData(wuXiDataStr)
|
// await this.fileLog?.setExamJudgeWuxiProgressData(wuXiDataStr)
|
||||||
|
dConsole.writeProcessData(ProcessDataEnumType.WuxiProgressData, wuXiDataStr)
|
||||||
this.tempData = tempData
|
this.tempData = tempData
|
||||||
this.plcStr = plc;
|
this.plcStr = plc;
|
||||||
this.mndgStr = '';
|
this.mndgStr = '';
|
||||||
@ -278,46 +374,40 @@ export default class Judge {
|
|||||||
AppStorage.setOrCreate('msgStr', plc)
|
AppStorage.setOrCreate('msgStr', plc)
|
||||||
return tempData
|
return tempData
|
||||||
}
|
}
|
||||||
// 处理udp plc信号
|
// 处理轨迹plc信号
|
||||||
handleUdp = async (msg: string) => {
|
handleTrajectoryUdp = async (strArr: string[]) => {
|
||||||
const stachArr = msg.split(',')
|
let num = 2;
|
||||||
if (stachArr[0] != '#DN_GD' || this.isUdpEnd) {
|
const judgeTimer = setInterval(async () => {
|
||||||
return
|
const msgStr = strArr[num];
|
||||||
}
|
if (msgStr == '') {
|
||||||
const gpsPart = msg.split("#END$GPS,")[1];
|
dConsole.info(JudgeTag, '模拟数据考试结束')
|
||||||
const gpsStatus = gpsPart.split(",")[0];
|
clearInterval(judgeTimer)
|
||||||
if (gpsStatus === "4") {
|
this.checkExamIsEnd(true)
|
||||||
dConsole.log(JudgeTag, "差分状态正常", gpsStatus)
|
return
|
||||||
this.judgeUI.isDwztRight = true
|
}
|
||||||
} else {
|
const msg: PLCType = JSON.parse(strArr[num]);
|
||||||
dConsole.log(JudgeTag, "差分状态异常", gpsStatus)
|
num++
|
||||||
this.judgeUI.isDwztRight = false
|
// 4.过程数据
|
||||||
}
|
this.tempData = msg
|
||||||
this.judgeUI.isDwztRight
|
// this.judgeUI.isDwztRight = (msg?.gps?.dwzt == 4 && msg?.gps?.jdzt == 3);
|
||||||
const plcData = await this.getPlcData(msg);
|
this.judgeUI.sd = Math.floor(msg?.gps?.sd * 1.852) + '';
|
||||||
// 4.过程数据
|
this.judgeUI.dw = Math.floor(msg?.sensor?.dw) + ''
|
||||||
await this.fileLog?.setExamJudgeData(JSON.stringify(plcData))
|
this.plcData = msg
|
||||||
//检测到有无锡所设备接入,需要发送特定的数据,供检测
|
// this.judgeUI.isDwztRight = msg.gps.dwzt == 4;
|
||||||
// if (this.usbService.isWXUSBDevice) {
|
AppStorage.setOrCreate('msgStr', '')
|
||||||
// const str = await senorToWXDataStr(msg);
|
if (msg.method === 'examJudgeArtificialItem') {
|
||||||
// this.usbService.sendUSB(str)
|
this.setJudgeItem(msg.itemno, msg.type)
|
||||||
// }
|
}
|
||||||
const param350: number = Reflect.get(this.judgeUI.judgeConfigObj, '350')
|
if (msg.method === 'examJudgeArtificialMark') {
|
||||||
this.judgeUI.sd = ((param350 == 0 ? plcData.gps.sd : plcData.sensor.cs) as number * 1.852).toFixed(0) + ''
|
this.setJudgeItem(msg.itemno, msg.serial)
|
||||||
this.judgeUI.dw = (Math.floor(plcData.sensor.dw as number) || 0) + ''
|
}
|
||||||
//TODO 暂时关闭差分检测异常
|
await examJudgeRealExam(msg)
|
||||||
// await this.checkDwzt(plcData.gps.dwzt,plcData.gps.jdzt);
|
// const bytes = await this.getMessageHeartbeat();
|
||||||
if (!this.isExamEnd) {
|
// bytes && globalThis.judgeUdp.send(bytes)
|
||||||
await examJudgeRealExam(plcData)
|
|
||||||
}
|
}, 200)
|
||||||
// let udpIndex = AppStorage.get<number>('udpIndex') || 0;
|
// TODO 定时器缺失
|
||||||
// if (udpIndex % 5 === 0 && !this.isUdpEnd) {
|
// globalThis.judgeTimer = judgeTimer;
|
||||||
// TODO UPD缺失
|
|
||||||
// const judgeUdp = globalThis.judgeUdp
|
|
||||||
// const bytes = await this.getMessageHeartbeat(this.isExamEnd);
|
|
||||||
// judgeUdp.send(bytes)
|
|
||||||
// }
|
|
||||||
// AppStorage.setOrCreate('udpIndex', udpIndex++)
|
|
||||||
}
|
}
|
||||||
private isEndTip: boolean = false;
|
private isEndTip: boolean = false;
|
||||||
//本地轨迹回放地址
|
//本地轨迹回放地址
|
||||||
@ -331,39 +421,12 @@ export default class Judge {
|
|||||||
if (!this.isJudgeDisConnect) {
|
if (!this.isJudgeDisConnect) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
const folderPath = this.fileLog?.folderPath
|
const examDataStr = await this.fileUtil.readFile(`${dConsole.currentExamCatalog}/wuxi_dis_progress_data.txt`);
|
||||||
const examDataStr = await this.fileUtil.readFile(`${folderPath}/wuxi_dis_progress_data.txt`);
|
|
||||||
const examDataArr = examDataStr.split('\n');
|
const examDataArr = examDataStr.split('\n');
|
||||||
for (let examDataStr of examDataArr) {
|
for (let examDataStr of examDataArr) {
|
||||||
const code = await writeObjectOut(JSON.parse(examDataStr), "", this.context);
|
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) => {
|
beginProject = async (ksxm: number) => {
|
||||||
const carInfo = AppStorage.get<CarInfoType>('carInfo');
|
const carInfo = AppStorage.get<CarInfoType>('carInfo');
|
||||||
@ -467,6 +530,32 @@ export default class Judge {
|
|||||||
UploadRegulatoryCodeConversion('17C54', temp.code || 0)
|
UploadRegulatoryCodeConversion('17C54', temp.code || 0)
|
||||||
dConsole.info(JudgeTag, '上传照片 end')
|
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 videoData?: RecordHandleType
|
||||||
//当前科目二的考试项目
|
//当前科目二的考试项目
|
||||||
private deductedPopShowTimer: number = 0;
|
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) {
|
constructor(judgeUI: JudgeUI) {
|
||||||
this.serialIndex = 1;
|
this.serialIndex = 1;
|
||||||
@ -870,7 +870,6 @@ export default class Judge {
|
|||||||
const goJudgeVoice = this.goJudgeVoice;
|
const goJudgeVoice = this.goJudgeVoice;
|
||||||
const setMndg = this.setMndg;
|
const setMndg = this.setMndg;
|
||||||
const avPlayer = this.avPlayer;
|
const avPlayer = this.avPlayer;
|
||||||
const fileLog = this.fileLog;
|
|
||||||
const judgeUI = this.judgeUI;
|
const judgeUI = this.judgeUI;
|
||||||
|
|
||||||
const carzt = examData.carzt
|
const carzt = examData.carzt
|
||||||
@ -989,7 +988,10 @@ export default class Judge {
|
|||||||
//考试结束
|
//考试结束
|
||||||
case 5:
|
case 5:
|
||||||
this.ksjs = ksjs;
|
this.ksjs = ksjs;
|
||||||
await fileLog?.setExamJudgeData(JSON.stringify({
|
// await fileLog?.setExamJudgeData(JSON.stringify({
|
||||||
|
// method: 'examJudgeEndExam'
|
||||||
|
// }))
|
||||||
|
dConsole.writeProcessData(ProcessDataEnumType.JudgeExamData, JSON.stringify({
|
||||||
method: 'examJudgeEndExam'
|
method: 'examJudgeEndExam'
|
||||||
}))
|
}))
|
||||||
break;
|
break;
|
||||||
@ -1304,7 +1306,7 @@ export default class Judge {
|
|||||||
// 评判语音提示
|
// 评判语音提示
|
||||||
goJudgeVoice = async (sound: JudgeSound) => {
|
goJudgeVoice = async (sound: JudgeSound) => {
|
||||||
const avPlayer = this.avPlayer
|
const avPlayer = this.avPlayer
|
||||||
const fileLog = this.fileLog
|
// const fileLog = this.fileLog
|
||||||
dConsole.info('surenjun code=>', JSON.stringify(sound.code))
|
dConsole.info('surenjun code=>', JSON.stringify(sound.code))
|
||||||
//判断是不是模拟灯光语音
|
//判断是不是模拟灯光语音
|
||||||
if (sound.type == 1) {
|
if (sound.type == 1) {
|
||||||
@ -1312,7 +1314,13 @@ export default class Judge {
|
|||||||
examJudgeSoundEnd({
|
examJudgeSoundEnd({
|
||||||
xmdm: sound.xmdm, code: sound.code[0], type: sound.type
|
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',
|
method: 'examJudgeSoundEnd',
|
||||||
itemno: sound.xmdm,
|
itemno: sound.xmdm,
|
||||||
code: sound.code[0],
|
code: sound.code[0],
|
||||||
|
|||||||
@ -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`);
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,13 +1,16 @@
|
|||||||
// 日志向外暴露的方法
|
// 日志向外暴露的方法
|
||||||
import dayTs from './Date';
|
|
||||||
import worker from '@ohos.worker';
|
import worker from '@ohos.worker';
|
||||||
|
import { GlobalConfig } from '../config';
|
||||||
import { LogWorkerMessage, ProcessDataEnumType, WorkerMessageType } from '../model/index';
|
import { LogWorkerMessage, ProcessDataEnumType, WorkerMessageType } from '../model/index';
|
||||||
|
import dayTs from './Date';
|
||||||
|
|
||||||
const MAX_MESSAGE_LENGTH = 300;
|
const MAX_MESSAGE_LENGTH = 300;
|
||||||
const LOG_CHUNK_PREFIX = '[切割消息序号';
|
const LOG_CHUNK_PREFIX = '[切割消息序号';
|
||||||
|
|
||||||
class logWorker {
|
class logWorker {
|
||||||
private static instance: logWorker | null = null;
|
private static instance: logWorker | null = null;
|
||||||
|
// 当前考试的数据目录
|
||||||
|
public currentExamCatalog: string = ""
|
||||||
private workerInstance: worker.ThreadWorker | null = null;
|
private workerInstance: worker.ThreadWorker | null = null;
|
||||||
// 是否开启日志 1开启
|
// 是否开启日志 1开启
|
||||||
private isLogEnabled: string = "0";
|
private isLogEnabled: string = "0";
|
||||||
@ -58,6 +61,8 @@ class logWorker {
|
|||||||
type: WorkerMessageType.ExamProcessInit,
|
type: WorkerMessageType.ExamProcessInit,
|
||||||
studentDirName: dirName
|
studentDirName: dirName
|
||||||
}
|
}
|
||||||
|
let date = dayTs().format("YYYY_MM_DD")
|
||||||
|
this.currentExamCatalog = `${GlobalConfig.commonFileWriteAddress}/logs/${date}/${dirName}`
|
||||||
if (this.isLogEnabled === "1") {
|
if (this.isLogEnabled === "1") {
|
||||||
this.workerInstance?.postMessage(JSON.stringify(data))
|
this.workerInstance?.postMessage(JSON.stringify(data))
|
||||||
}
|
}
|
||||||
@ -74,8 +79,9 @@ class logWorker {
|
|||||||
this.workerInstance?.postMessage(JSON.stringify(params))
|
this.workerInstance?.postMessage(JSON.stringify(params))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 关闭过程数据写入
|
// 关闭过程数据写入
|
||||||
closeProcessData(){
|
closeProcessData() {
|
||||||
let params: LogWorkerMessage = {
|
let params: LogWorkerMessage = {
|
||||||
type: WorkerMessageType.CloseProcessData,
|
type: WorkerMessageType.CloseProcessData,
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user