feat:科目三问题修改

This commit is contained in:
Surenjun 2024-06-18 16:44:24 +08:00
parent fcf41bb2f0
commit 982fd6273d
5 changed files with 57 additions and 30 deletions

View File

@ -9,7 +9,7 @@ import Judge from './judgeSDK/judge'
import {defaultJudgeConfigObj} from './judgeSDK/utils//judge-common' import {defaultJudgeConfigObj} from './judgeSDK/utils//judge-common'
import { import {
Project, ProjectObj, MarkRule, CDSBInfo, Project, ProjectObj, MarkRule, CDSBInfo,
SYSTEMPARMARR,CARINFO ,MAPPOINT ,MAPITEMPOINTITEM SYSTEMPARMARR,CARINFO ,MAPPOINT ,MAPITEMPOINTITEM,SYSSET
} from './judgeSDK/api/judgeSDK.d' } from './judgeSDK/api/judgeSDK.d'
import { getCurrentTime, formatTime, getCurrentHourTime,chunkArr } from '../common/utils/tools' import { getCurrentTime, formatTime, getCurrentHourTime,chunkArr } from '../common/utils/tools'
import { examJudgeEndExam } from './judgeSDK/api/index' import { examJudgeEndExam } from './judgeSDK/api/index'
@ -29,9 +29,7 @@ struct Index {
async aboutToAppear() { async aboutToAppear() {
globalThis.windowClass.setWindowSystemBarEnable(['']) globalThis.windowClass.setWindowSystemBarEnable([''])
const time = await getCurrentTime() const time = await getCurrentTime()
const examSubject = globalThis.carInfo.examSubject
this.examSubject = examSubject
this.startTime = time.split(' ')[1] this.startTime = time.split(' ')[1]
this.startFullTime = await getCurrentTime(1); this.startFullTime = await getCurrentTime(1);
this.startHourTime = await getCurrentHourTime() this.startHourTime = await getCurrentHourTime()
@ -67,9 +65,8 @@ struct Index {
? await this.initSystemKm2Param() ? await this.initSystemKm2Param()
: await this.initSystemKm3Param() : await this.initSystemKm3Param()
await this.initMarkRules(); await this.initMarkRules();
await this.initSysset();
} }
await this.initSysset();
await this.initCDSBInfo() await this.initCDSBInfo()
// 科目三新增读取表数据 // 科目三新增读取表数据
@ -140,33 +137,44 @@ struct Index {
} }
// 获取sysset表信息 // 获取sysset表信息
async initSysset() { async initSysset(sysset?:SYSSET[]) {
const syssetParams = await getSyncData('MA_SYSSET') const syssetParams = sysset || await getSyncData('MA_SYSSET')
//@ts-ignore //@ts-ignore
const serialNumberArr = syssetParams.filter(sys => sys.v_no === '901'); const serialNumberArr = syssetParams.filter(sys => sys.v_no === '901');
this.serialNumber = (serialNumberArr[0] && serialNumberArr[0].v_value) || '123456' this.serialNumber = (serialNumberArr[0] && serialNumberArr[0].v_value) || '123456'
const {isTrajectoryOpen} = judgeConfig
const judgeConfig = [] const syssetJudgeConfigArr = []
//@ts-ignore //@ts-ignore
syssetParams.forEach((sys) => { syssetParams.forEach((sys) => {
if(isTrajectoryOpen){
sys.v_no = sys.key;
sys.v_name = sys.name;
sys.v_value = sys.value
}
const {v_no,v_value} = sys; const {v_no,v_value} = sys;
const v_no_num = v_no * 1; const v_no_num = v_no * 1;
const value = decodeURIComponent(v_value) const value = decodeURIComponent(v_value)
if(v_no_num >= 10 &&v_no_num <= 900){ if(v_no_num >= 10 &&v_no_num <= 900){
judgeConfig.push({ syssetJudgeConfigArr.push({
key: v_no_num,value: value, key: v_no_num,value: value,
name: decodeURI(sys.v_name) name: decodeURI(sys.v_name)
}) })
} }
//科目三应行驶距离参数
if(sys.v_no == '303'){
this.examMileage = sys.v_value + '';
}
this.judgeConfigObj[sys.v_no] = value this.judgeConfigObj[sys.v_no] = value
}); });
this.judgeConfig = judgeConfig; this.judgeConfig = syssetJudgeConfigArr;
} }
// 初始化systemParam表 // 初始化systemParam表
async initSystemKm2Param(){ async initSystemKm2Param(sysParam?:SYSTEMPARMARR[]){
const systemParms:any = await getSyncData('MA_SYSTEMPARM') const systemParms:any = sysParam || await getSyncData('MA_SYSTEMPARM')
const carName = this.carName; const carName = this.carName;
let carNo2 = '',allItems = []; let carNo2 = '',allItems = [];
@ -238,7 +246,6 @@ struct Index {
}) })
const txt2 = decodeURIComponent(systemParm.txt2) const txt2 = decodeURIComponent(systemParm.txt2)
if (no1 == 6) { if (no1 == 6) {
const currentProject = { const currentProject = {
name: decodeURI(systemParm.txt1), name: decodeURI(systemParm.txt1),
@ -250,9 +257,9 @@ struct Index {
this.projectsCenterObj[txt2] = currentProject this.projectsCenterObj[txt2] = currentProject
this.projects.push(currentProject) this.projects.push(currentProject)
} }
if(no1 == 3 && no2 == 1 && no3 == 15){ // if(no1 == 3 && no2 == 1 && no3 == 15){
this.examMileage = decodeURI(systemParm.txt1) // this.examMileage = decodeURI(systemParm.txt1)
} // }
}) })
const projects = this.projects; const projects = this.projects;
if (!projects.length) { if (!projects.length) {
@ -382,8 +389,7 @@ struct Index {
// 初始化本地systemparam表、markrule表 // 初始化本地systemparam表、markrule表
async initTrajectoryParam(trajectoryPath:string){ async initTrajectoryParam(trajectoryPath:string){
const examSubject = globalThis.carInfo.examSubject; const {isTrajectoryOpen} = judgeConfig
//轨迹回放读取 systemparam表、markrule表 //轨迹回放读取 systemparam表、markrule表
const fileUtil = new FileUtil(this.context); const fileUtil = new FileUtil(this.context);
const folderPath = await fileUtil.initFolder(trajectoryPath); const folderPath = await fileUtil.initFolder(trajectoryPath);
@ -391,11 +397,16 @@ struct Index {
const strArr = str.split('\n'); const strArr = str.split('\n');
const [initData,beginData] = [strArr[0],strArr[1]]; const [initData,beginData] = [strArr[0],strArr[1]];
const initDataObj = JSON.parse(initData) const initDataObj = JSON.parse(initData)
const systemparm = initDataObj.systemparm;
const examSubject = globalThis.carInfo.examSubject;
this.examSubject = isTrajectoryOpen ? (initDataObj.kskm*1):examSubject;
globalThis.carInfo.examSubject = this.examSubject
examSubject == 2 examSubject == 2
? await this.initSystemKm2Param() ? await this.initSystemKm2Param(systemparm)
: await this.initSystemKm3Param(initDataObj.systemparm) : await this.initSystemKm3Param(systemparm)
//@ts-ignore //@ts-ignore
await this.initMarkRules(testMarkRules); await this.initMarkRules(testMarkRules);
await this.initSysset(initDataObj.sysset);
} }

View File

@ -140,6 +140,11 @@ export interface SOUND {
//语音播放提示代码 //语音播放提示代码
code:string code:string
} }
export interface SYSSET {
v_no:string,
v_name:string,
v_value:string
}
export interface ProjectObj { export interface ProjectObj {
[k:any]:Project [k:any]:Project

View File

@ -20,7 +20,7 @@ import {writeObjectOut,uploadExamProgressData} from '../../api/judge'
import {deepClone,getCurrentTime,stringToASC,string2Bytes,fillZero,Array2Byte,convertGpsCoord2} from '../../common/utils/tools' import {deepClone,getCurrentTime,stringToASC,string2Bytes,fillZero,Array2Byte,convertGpsCoord2} from '../../common/utils/tools'
import {getTranslateSignals,getCarStatus,getCarStatusType,getCenterProjectStatus,plcStrToJson,plcStrToWXJson,promptWxCode,getKmProjectVoice} from './utils//judge-common' import {getTranslateSignals,getCarStatus,getCarStatusType,getCenterProjectStatus,plcStrToJson,plcStrToWXJson,promptWxCode,getKmProjectVoice} from './utils//judge-common'
import {examJudgeSetLogCallback,examJudgeBeginExam,examJudgeInit,examJudgeRealExam,examJudgeSetRealExamCallback,examJudgeSetPerformCallback,examJudgeEndExam,examJudgeArtificialMark,examJudgeArtificialItem} from './api/index' import {examJudgeSetLogCallback,examJudgeBeginExam,examJudgeInit,examJudgeRealExam,examJudgeSetRealExamCallback,examJudgeSetPerformCallback,examJudgeEndExam,examJudgeArtificialMark,examJudgeArtificialItem} from './api/index'
import Want from '@ohos.app.ability.Want';
import prompt from '@ohos.prompt'; import prompt from '@ohos.prompt';
const judgeTag = 'SURENJUN_JUDGE' const judgeTag = 'SURENJUN_JUDGE'
@ -129,6 +129,7 @@ export default class Judge{
await examJudgeBeginExam(beginExamInfo); await examJudgeBeginExam(beginExamInfo);
console.info(judgeTag,'6.开始考试注册完成') console.info(judgeTag,'6.开始考试注册完成')
avPlayer.playAudio(['voice/ksks.WAV'])
// 处理轨迹plc信息 // 处理轨迹plc信息
if(isTrajectoryOpen){ if(isTrajectoryOpen){
handleTrajectoryUdp(strArr); handleTrajectoryUdp(strArr);
@ -139,7 +140,7 @@ export default class Judge{
globalThis.udpClient.onMessage(async (msg) => { globalThis.udpClient.onMessage(async (msg) => {
handleUdp(msg) handleUdp(msg)
}) })
avPlayer.playAudio(['voice/ksks.WAV'])
} }

View File

@ -3,12 +3,13 @@
//考试回放开关 //考试回放开关
export const judgeConfig = { export const judgeConfig = {
//本地目录开关 //本地目录开关
isTrajectoryOpen: false, isTrajectoryOpen: true,
//是否开启Udp //是否开启Udp
udpOpen:false, udpOpen:false,
// 本地模型地址 // 本地模型地址
modelPath: 'models/model_enc', modelPath: 'models/model_enc',
trajectoryPath: 'logs/2024_05_15/0000000000001_342323199501470011_测试学员1_2024_05_15_15_30_23/judge_exam_data.txt' // 轨迹回放地址
trajectoryPath: 'logs/2023_06_14/0000000000001_342323199501470011_测试学员1_2023_06_14_15_33_31/judge_exam_data.txt'
} }
//0000000000001_342323199501470011_测试学员1_2024_04_28_10_59_44 //0000000000001_342323199501470011_测试学员1_2024_04_28_10_59_44

View File

@ -1,4 +1,5 @@
import media from '@ohos.multimedia.media'; import media from '@ohos.multimedia.media';
import prompt from '@ohos.prompt';
const TAG = 'VoiceAnnounce' const TAG = 'VoiceAnnounce'
@ -18,7 +19,6 @@ export default class VoiceAnnounce{
async playAudio(urls:string[],shit,callback:Function){ async playAudio(urls:string[],shit,callback:Function){
const {isStopped,queue} = this; const {isStopped,queue} = this;
this.callback = callback this.callback = callback
console.info('surenjun',JSON.stringify(callback))
if(shit){ if(shit){
//队列清空,重新初始化 //队列清空,重新初始化
this.isStopped = true; this.isStopped = true;
@ -45,6 +45,7 @@ export default class VoiceAnnounce{
await go() await go()
return return
} }
await avPlayer.play(queue[0],callback); await avPlayer.play(queue[0],callback);
this.queue.shift(); this.queue.shift();
console.info(TAG,JSON.stringify(this.queue),'堆栈弹出'); console.info(TAG,JSON.stringify(this.queue),'堆栈弹出');
@ -73,14 +74,22 @@ class AVPlayer {
this.endCallback = callback this.endCallback = callback
const avPlayer = await media.createAVPlayer(); const avPlayer = await media.createAVPlayer();
this.avPlayer = avPlayer; this.avPlayer = avPlayer;
return new Promise(async (resolve)=>{ return new Promise(async (resolve,reject) => {
let url = ''
await this.setAVPlayerCallback(()=>{ await this.setAVPlayerCallback(()=>{
//@ts-ignore //@ts-ignore
resolve() resolve()
}); });
let url = await globalThis.context.resourceManager.getRawFd(name) try {
this.avPlayer.fdSrc = url; url = await globalThis.context.resourceManager.getRawFd(name);
this.avPlayer.fdSrc = url;
} catch (e) {
prompt.showToast({
message: `${name}语音文件不存在`,
duration: 4000
});
resolve(1)
}
}) })
} }
//音频播放队列 //音频播放队列