Merge remote-tracking branch 'origin/dev' into dev
# Conflicts: # entry/src/main/ets/pages/Judge/JudgeBusiness.ets
This commit is contained in:
commit
fd5b20f788
@ -5,9 +5,9 @@
|
||||
"name": "default",
|
||||
"material": {
|
||||
"certpath": "/Users/wangzhongjie/.ohos/config/openharmony/default_car_next_xIuD6UMCLxZgyeiH-w2XdDck6DewIfdHAvOk_FUbNZo=.cer",
|
||||
"storePassword": "0000001BC5B0497609513207A9433B5B0EF8028AB62F6127F2A98ED2502AD0EA5105DE90FBAACCF2A667D5",
|
||||
"storePassword": "0000001BF9AB68E8C3E0439D2AA8D641FD06550209928E9CB41AFB9E4D799D516B7D7DB8B1863601225968",
|
||||
"keyAlias": "debugKey",
|
||||
"keyPassword": "0000001B3FE45EBE64E6D2BB019005840285C3EF734D55048F500E5FC51002B110E2BBFE74F4A0B5072E4E",
|
||||
"keyPassword": "0000001B4363BBA79693F55689ED8AD636125B8928CFC30F51866D1190ABC6372B58D7025E2650A53AFD2B",
|
||||
"profile": "/Users/wangzhongjie/.ohos/config/openharmony/default_car_next_xIuD6UMCLxZgyeiH-w2XdDck6DewIfdHAvOk_FUbNZo=.p7b",
|
||||
"signAlg": "SHA256withECDSA",
|
||||
"storeFile": "/Users/wangzhongjie/.ohos/config/openharmony/default_car_next_xIuD6UMCLxZgyeiH-w2XdDck6DewIfdHAvOk_FUbNZo=.p12"
|
||||
|
||||
@ -77,3 +77,7 @@ export const ProcessDataTag = '[ProcessData]';
|
||||
|
||||
// 日志
|
||||
export const LogTag = '[LogWorker]';
|
||||
|
||||
// 开始考试,结束考试标志
|
||||
export const StartEndExamTag = '[StartEndExam]';
|
||||
|
||||
|
||||
@ -59,6 +59,7 @@ export default class JudgeBusiness {
|
||||
public carztStr: string
|
||||
public ksjs?: JudgeKSJS
|
||||
public plcData?: PLCType
|
||||
public totalScore: number = -1
|
||||
private judgeUI: JudgePage
|
||||
private tempData?: PLCType
|
||||
// 是否发送udp
|
||||
@ -175,7 +176,6 @@ export default class JudgeBusiness {
|
||||
if (!this.isExamEnd) {
|
||||
await examJudgeRealExam(this.plcData)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import { JudgeTag } from '../../config';
|
||||
import { JudgeConfig, JudgeTag } from '../../config';
|
||||
import {
|
||||
JudgeCallBackData,
|
||||
JudgeConfigObj,
|
||||
@ -10,9 +10,10 @@ import {
|
||||
ProjectInfo
|
||||
} from '../../model';
|
||||
import { dConsole } from '../../utils/LogWorker';
|
||||
import { endRecordVideo } from '../../utils/Video';
|
||||
import VoiceAnnounce from '../judgeSDK/utils/voiceAnnouncements';
|
||||
import JudgeBusiness from './JudgeBusiness';
|
||||
import { examJudgeArtificialItem, examJudgeSoundEnd } from './JudgeSDKUtils';
|
||||
import { examJudgeArtificialItem, examJudgeEndExam, examJudgeSoundEnd } from './JudgeSDKUtils';
|
||||
import { ProjectStart, UploadProgressPhoto } from './ProcessDataProcessing';
|
||||
import { CurrentProjectConversion, DeductionProjectConversion, DetectingDifferences, GetCarStatus } from './utils';
|
||||
|
||||
@ -196,11 +197,16 @@ export const JudgingFn = async (strData: string, callBack: Function, judgeUI: Ju
|
||||
//项目名称 考车状态 扣分arr
|
||||
xmmcStr: that.xmmcStr, carztStr: that.carztStr, kfArr: that.kfArr
|
||||
});
|
||||
|
||||
// TODO 语音播报
|
||||
changeExamStatus(event, xmdm, that.kfArr, judgeUI, that);
|
||||
// 更新ui
|
||||
if (event == 1 || event == 2 || event == 3 || event == 6) {
|
||||
judgeUI.projectsObj = JSON.parse(JSON.stringify(judgeUI.projectsObj))
|
||||
}
|
||||
}
|
||||
|
||||
const goJudgeVoice = async (sound: JudgeSound, avPlayer: VoiceAnnounce) => {
|
||||
dConsole.info('surenjun code=>', JSON.stringify(sound.code))
|
||||
dConsole.info(JudgeTag, 'surenjun code=>', JSON.stringify(sound.code))
|
||||
//判断是不是模拟灯光语音
|
||||
if (sound.type == 1) {
|
||||
avPlayer?.playAudio([`voice/${sound.code[0]}.mp3`], false, () => {
|
||||
@ -270,7 +276,260 @@ const changeExamStatus = async (event: number, xmdm: number, kf: MarkRule[], jud
|
||||
break;
|
||||
}
|
||||
case 2: {
|
||||
dConsole.log(JudgeTag, "项目结束判定1")
|
||||
const project: ProjectInfo = Reflect.get(judgeUI.projectsObj, xmdm)
|
||||
const isStart = await checkProjectIsStart(xmdm, 2, judgeUI, that)
|
||||
|
||||
if (isStart) {
|
||||
// 项目结束了就不再生成数据
|
||||
dConsole.info(JudgeTag + ' projectIsEnd =>', project.isEnd)
|
||||
if (!project.isEnd) {
|
||||
// judgeTask.addTask(async () => {
|
||||
// dConsole.info(JudgeTag, `项目结束-${xmdm}-${project.name}`)
|
||||
// await endProject(xmdm);
|
||||
// this.xmmcSingleCode = '0';
|
||||
// this.xmmcEndCode = undefined;
|
||||
// }, {
|
||||
// isDelay: true
|
||||
// })
|
||||
}
|
||||
}
|
||||
dConsole.log(JudgeTag, "项目结束判定3")
|
||||
try {
|
||||
const param512: JudgeConfigObj = (Reflect.get(judgeUI.judgeConfigObj, '512') || '').split(',');
|
||||
if (!judgeUI.isProjectIn) {
|
||||
that.deductedPopShowTimer = setTimeout(() => {
|
||||
judgeUI.isDeductedPopShow = false
|
||||
}, (Reflect.get(param512!, 5) || 0) * 1000)
|
||||
}
|
||||
} catch (e) {
|
||||
dConsole.error(JudgeTag, "项目结束后弹窗定时器异常", e)
|
||||
}
|
||||
project.isEnd = true;
|
||||
dConsole.log(JudgeTag, "项目结束判定4")
|
||||
break;
|
||||
}
|
||||
case 3: {
|
||||
dConsole.log(JudgeTag, "扣分开始")
|
||||
const currentKf = kf[kf.length -1];
|
||||
if (JudgeConfig.kfVoiceOpen || (judgeUI.examSubject == "2" && Reflect.get(judgeUI.judgeConfigObj, '618') === "1") || (judgeUI.examSubject == "3" && Reflect.get(judgeUI.judgeConfigObj, '418') === "1")) {
|
||||
that.avPlayer?.playAudio([`voice/${currentKf.markcatalog}.mp3`,
|
||||
`voice/mark_${Math.abs(currentKf?.score || 0)}.mp3`])
|
||||
}
|
||||
const isStart = await checkProjectIsStart(Number(currentKf.xmdm), 2, judgeUI, that);
|
||||
if (isStart) {
|
||||
// await judgeTask.addTask(async () => {
|
||||
// dConsole.info(JudgeTag, `项目扣分-${currentKf.markcatalog}-${currentKf.desc}`)
|
||||
// await pointsDedute(Number(currentKf.xmdm), currentKf)
|
||||
// }, {
|
||||
// isDelay: true
|
||||
// })
|
||||
}
|
||||
break
|
||||
}
|
||||
case 5: {
|
||||
dConsole.log(JudgeTag, "考试结束")
|
||||
const singlePlay = AppStorage.get<boolean>('singlePlay')
|
||||
// 关闭录像
|
||||
if (!singlePlay && that.videoData) {
|
||||
await endRecordVideo(that.videoData)
|
||||
}
|
||||
// judgeTask.addTask(async () => {
|
||||
// dConsole.info(JudgeTag, '考试结束 start')
|
||||
// AppStorage.setOrCreate('isJudge', false)
|
||||
// await handEndExam()
|
||||
// })
|
||||
break
|
||||
|
||||
}
|
||||
default:
|
||||
break
|
||||
}
|
||||
if (event === 2 || event === 3) {
|
||||
dConsole.log(JudgeTag, "项目结束判定统计项目")
|
||||
await setCountItems(judgeUI);
|
||||
await checkExamIsEnd(judgeUI, that)
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 校验考试是否结束
|
||||
*/
|
||||
const checkExamIsEnd = async (judgeUI: JudgeUI, that: JudgeBusiness, isManual?: boolean) => {
|
||||
dConsole.log(JudgeTag, "校验考试是否结束")
|
||||
const totalScore = Number(judgeUI.totalScore)
|
||||
const judgeConfigObj = judgeUI.judgeConfigObj
|
||||
const examMileage = Number(judgeUI.examMileage)
|
||||
const passingScore = Number(judgeUI.passingScore)
|
||||
if (that.isExamEnd) {
|
||||
return
|
||||
}
|
||||
if (isManual) {
|
||||
// 考试不合格
|
||||
await examJudgeEndExam()
|
||||
that.isExamEnd = true
|
||||
that.isManual = true
|
||||
} else {
|
||||
const param302: number = Reflect.get(judgeUI.judgeConfigObj, '302')
|
||||
const param342: number = Reflect.get(judgeUI.judgeConfigObj, '342')
|
||||
const param512: number[] = (Reflect.get(judgeUI.judgeConfigObj, '512') || '').split(',');
|
||||
if (judgeUI.singlePlay) {
|
||||
// 单机模式
|
||||
dConsole.info(JudgeTag + ' 单机模式结束 => ', judgeUI.isAllProjectsEnd)
|
||||
if (judgeUI.isAllProjectsEnd && judgeUI.jl >= examMileage) {
|
||||
// 成绩合格
|
||||
if (totalScore >= passingScore && !that.isEndTip) {
|
||||
if (judgeUI.examSubject == '3' && (param342 == 0 || param342 == 2) &&
|
||||
(param302 != 6 && param302 != 7 && param302 != 8)) {
|
||||
if (param512[7] != 0) {
|
||||
clearTimeout(that.deductedPopShowTimer)
|
||||
that.avPlayer?.playAudio(['voice/综合评判.mp3'])
|
||||
judgeUI.isDeductedPopShow = true
|
||||
judgeUI.defaultTabIndex = 1
|
||||
that.isEndTip = true
|
||||
return
|
||||
}
|
||||
} else {
|
||||
await examJudgeEndExam()
|
||||
that.isExamEnd = true
|
||||
return
|
||||
}
|
||||
} else {
|
||||
if (judgeUI.examSubject == '3' && (param302 == 4 || param302 == 5 || param302 == 7 || param302 == 8)) {
|
||||
await examJudgeEndExam()
|
||||
that.isExamEnd = true
|
||||
return
|
||||
}
|
||||
}
|
||||
await examJudgeEndExam()
|
||||
that.isExamEnd = true
|
||||
}
|
||||
} else {
|
||||
// 非单机模式
|
||||
//成绩不合格
|
||||
if (totalScore < passingScore) {
|
||||
//科目三不合格报靠边停车
|
||||
if (judgeUI.examSubject == '3' && param302 == 1) {
|
||||
that.avPlayer?.playAudio([`voice/考试结束.mp3`]);
|
||||
return
|
||||
}
|
||||
await examJudgeEndExam()
|
||||
that.isExamEnd = true
|
||||
return
|
||||
}
|
||||
// 成绩合格
|
||||
if (judgeUI.isAllProjectsEnd && totalScore >= passingScore && !that.isEndTip) {
|
||||
// 科目二成绩合格
|
||||
if (judgeUI.examSubject == '2') {
|
||||
await examJudgeEndExam()
|
||||
that.isExamEnd = true
|
||||
return
|
||||
}
|
||||
//考试里程判断
|
||||
if (judgeUI.examSubject == '3' && judgeUI.jl < examMileage) {
|
||||
return
|
||||
}
|
||||
//考试合格自动退出
|
||||
if (judgeUI.examSubject == '3' && (param302 == 4 || param302 == 7) || param302 == 8) {
|
||||
await examJudgeEndExam()
|
||||
that.isExamEnd = true
|
||||
return
|
||||
}
|
||||
if (judgeUI.examSubject == '3' && (param342 == 0 || param342 == 2) &&
|
||||
(param302 != 6 && param302 != 7 && param302 != 8)) {
|
||||
if (param512[7] != 0) {
|
||||
clearTimeout(that.deductedPopShowTimer)
|
||||
judgeUI.isDeductedPopShow = false
|
||||
that.avPlayer?.playAudio(['voice/综合评判.mp3'])
|
||||
judgeUI.isDeductedPopShow = true
|
||||
judgeUI.defaultTabIndex = 1
|
||||
that.isEndTip = true
|
||||
}
|
||||
} else {
|
||||
await examJudgeEndExam()
|
||||
that.isExamEnd = true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 统计必考项目,所有项目,已考数量
|
||||
*/
|
||||
const setCountItems = async (judgeUI: JudgeUI) => {
|
||||
dConsole.log(JudgeTag, "项目结束判定,统计考试项目")
|
||||
const projectsObj: object = judgeUI.projectsObj;
|
||||
//必考项目数量 必考项目已考数量 所有考试项目数量 项目已考项目数量
|
||||
let projectNum = 0, endProjectsNum = 0, allProjectNum = 0, allEndProjectsNum = 0;
|
||||
Reflect.ownKeys(projectsObj).forEach(projectKey => {
|
||||
const projectObj: ProjectInfo = Reflect.get(projectsObj, projectKey)
|
||||
const type = projectObj.type
|
||||
const isRequired = projectObj.isRequired
|
||||
allProjectNum += 1;
|
||||
if (type == '3' || type == '4') {
|
||||
allEndProjectsNum += 1;
|
||||
}
|
||||
|
||||
if (isRequired) {
|
||||
projectNum += 1;
|
||||
if (type == '3' || type == '4') {
|
||||
endProjectsNum += 1;
|
||||
}
|
||||
}
|
||||
})
|
||||
dConsole.info(JudgeTag, '项目状态projectsObj:' + JSON.stringify(projectsObj));
|
||||
dConsole.info(JudgeTag, '所有考试项目数量:' + allProjectNum)
|
||||
dConsole.info(JudgeTag, '必考项目数量:' + projectNum)
|
||||
dConsole.info(JudgeTag, '必考项目已考数量:' + endProjectsNum)
|
||||
//必考项目除靠边停车是否全部完成
|
||||
judgeUI.isRequiredProjectsEnd = (projectNum - endProjectsNum === 0)
|
||||
judgeUI.isAllProjectsEnd = (allProjectNum - allEndProjectsNum === 0)
|
||||
}
|
||||
/**
|
||||
* 检测扣分、结束项目时该项目是否开始
|
||||
*
|
||||
*/
|
||||
const checkProjectIsStart = async (xmdm: number, currentType: 1 | 2, judgeUI: JudgeUI, that: JudgeBusiness, kf?: MarkRule,): Promise<boolean> => {
|
||||
if (xmdm == 20) {
|
||||
return true
|
||||
}
|
||||
const currentProject: ProjectInfo = Reflect.get(judgeUI.projectsObj, xmdm)
|
||||
|
||||
if (currentProject.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(judgeUI.projectsObj, xmdm, currentProject)
|
||||
if (currentType == 2) {
|
||||
//项目结束需要等补传完毕
|
||||
// judgeTask.addTask(async () => {
|
||||
// await this.pointsDedute(xmdm, kf!)
|
||||
// }, {
|
||||
// isDelay: true
|
||||
// })
|
||||
}
|
||||
//扣分补传判断是否合格 不合格补传项目结束
|
||||
if (currentType == 1 || (currentType == 2 && that.totalScore < judgeUI.passingScore)) {
|
||||
// judgeTask.addTask(async () => {
|
||||
// await this.endProject(xmdm)
|
||||
// }, {
|
||||
// isDelay: true
|
||||
// })
|
||||
currentProject.isEnd = true;
|
||||
Reflect.set(judgeUI.projectsObj, xmdm, currentProject)
|
||||
}
|
||||
// judgeTask.addTask(async () => {
|
||||
// this.checkExamIsEnd()
|
||||
// })
|
||||
return false;
|
||||
}
|
||||
return true
|
||||
}
|
||||
@ -42,7 +42,7 @@ import { GetCurrentTime, GetPhotoBase64, NumberToByteArray } from '../utils/Comm
|
||||
import DB from '../utils/DbSql';
|
||||
import { CenterUDPBusinessInstance } from '../utils/business/CenterUdpBusiness';
|
||||
import { JudgeEmitterInstance } from '../utils/business/UdpEvent';
|
||||
import { StartExamTag, UserInfoTag } from '../config';
|
||||
import { StartEndExamTag, StartExamTag, UserInfoTag } from '../config';
|
||||
import { dConsole } from '../utils/LogWorker';
|
||||
import HeaderComponent from './compontents/Header';
|
||||
import AvatarComponent from './UserInfo/Avatar';
|
||||
@ -186,6 +186,7 @@ struct UserInfoPage {
|
||||
// 初始化开始考试过程数据文件夹
|
||||
InitializeExamProcessData(this.currentUser)
|
||||
dConsole.log(StartExamTag, '开始考试4')
|
||||
dConsole.log(StartEndExamTag, "-----------------------------身份证号:" + this.currentUser.sfzmhm + "考生开始考试-----------------------------")
|
||||
router.pushUrl({
|
||||
url: this.carInfo.examSubject == '3' ? 'pages/Roads' : 'pages/Judge',
|
||||
params: {
|
||||
|
||||
@ -6,7 +6,7 @@ import buffer from '@ohos.buffer';
|
||||
import VoiceAnnounce from './utils/voiceAnnouncements';
|
||||
import FileModel from './utils/fileModel';
|
||||
import JudgeTask from './utils/judgeTask';
|
||||
import { JudgeConfig, JudgeTag } from '../../config';
|
||||
import { JudgeConfig, JudgeTag, StartEndExamTag } from '../../config';
|
||||
import { GetSyncData, SqlInsertTable } from '../../utils/table/Operation';
|
||||
|
||||
import { uploadExamProgressData, writeObjectOut } from '../../api/judge';
|
||||
@ -107,13 +107,11 @@ export default class Judge {
|
||||
serial,
|
||||
type
|
||||
})
|
||||
// await this.fileLog?.setExamJudgeData(str)
|
||||
dConsole.writeProcessData(ProcessDataEnumType.JudgeExamData, str)
|
||||
dConsole.info(JudgeTag, `人工扣分-${itemno}-${serial}`)
|
||||
}
|
||||
//人工操作项目
|
||||
public setJudgeItem = async (itemno: string, type: 1 | 2) => {
|
||||
// const { fileLog } = this;
|
||||
await examJudgeArtificialItem(Number(itemno), type);
|
||||
const str = JSON.stringify({
|
||||
method: 'examJudgeArtificialItem',
|
||||
@ -1421,6 +1419,7 @@ export default class Judge {
|
||||
return
|
||||
}
|
||||
dConsole.info(JudgeTag, '考试结束 end')
|
||||
dConsole.log(StartEndExamTag, "-----------------------------身份证号:" + this.judgeUI.idCard + "考生结束考试-----------------------------")
|
||||
const param302: string = Reflect.get(judgeConfigObj, '302')
|
||||
// judgeUI.loadingPopupVisible = true;
|
||||
dConsole.log(JudgeTag, ' 打开车辆loading2')
|
||||
|
||||
@ -224,4 +224,4 @@ class AVPlayer {
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user