dev #2
@ -1,5 +1,5 @@
|
||||
{
|
||||
"lockfileVersion": 2,
|
||||
"lockfileVersion": 1,
|
||||
"ATTENTION": "THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.",
|
||||
"specifiers": {},
|
||||
"packages": {}
|
||||
|
||||
@ -104,6 +104,8 @@ export interface RouteParamsType {
|
||||
kString?: string;
|
||||
examItems?: string;
|
||||
fromIndex?: boolean;
|
||||
mode?: number
|
||||
score?: number
|
||||
}
|
||||
|
||||
// 车辆信息
|
||||
|
||||
@ -2,28 +2,29 @@ import {
|
||||
JudgeConfigObjKmItems,
|
||||
JudgeKSJS,
|
||||
JudgePerformInfo,
|
||||
JudgeUI,
|
||||
LANE,
|
||||
MarkRule,
|
||||
PLCType,
|
||||
ProcessDataEnumType,
|
||||
RecordHandleType,
|
||||
WorkerBackMessage,
|
||||
WorkerBackMessageType
|
||||
WorkerBackMessageType,
|
||||
RouteParamsType
|
||||
} from '../../model'
|
||||
import FileUtils from '../../utils/FileUtils'
|
||||
import VoiceAnnounce from '../judgeSDK/utils/voiceAnnouncements'
|
||||
import common from '@ohos.app.ability.common'
|
||||
import { LargeJudge, RouterParam, SmallJudge } from './JudgeStart'
|
||||
import { LargeJudge } from './LargeJudgeBusiness'
|
||||
import { SmallJudge } from './SmallJudgeBusiness'
|
||||
import { dConsole } from '../../utils/LogWorker'
|
||||
import { JudgeTag } from '../../config'
|
||||
import { examJudgeRealExam } from './JudgeSDKUtils'
|
||||
import { JudgingFn, SetJudgeItem } from './JudgeIng'
|
||||
import { SetJudgeItem } from './JudgeIng'
|
||||
import { DifferentialAndSignal } from '../../utils/business/DifferentialAndSignalWorker'
|
||||
import { PlcStrToJson, PlcStrToWXJson } from './utils'
|
||||
import { JudgeEndFn } from './JudgeEnd'
|
||||
import { BaseJudge } from './Typing'
|
||||
import router from '@ohos.router'
|
||||
import { JudgePage } from '../Judge';
|
||||
|
||||
export default class JudgeBusiness {
|
||||
public mndgStr: string | undefined
|
||||
@ -58,13 +59,13 @@ export default class JudgeBusiness {
|
||||
public carztStr: string
|
||||
public ksjs?: JudgeKSJS
|
||||
public plcData?: PLCType
|
||||
private judgeUI: JudgeUI
|
||||
private judgeUI: JudgePage
|
||||
private tempData?: PLCType
|
||||
// 是否发送udp
|
||||
private isUdpEnd: boolean = false
|
||||
judgeBusiness: BaseJudge
|
||||
private judgeBusiness: BaseJudge
|
||||
|
||||
constructor(judgeUI: JudgeUI) {
|
||||
constructor(judgeUI: JudgePage) {
|
||||
this.judgeUI = judgeUI
|
||||
this.fileUtil = new FileUtils(judgeUI.context)
|
||||
this.avPlayer = new VoiceAnnounce(this.context);
|
||||
@ -106,7 +107,7 @@ export default class JudgeBusiness {
|
||||
}
|
||||
|
||||
public async JudgeInit() {
|
||||
let currentParams: RouterParam = router.getParams() as RouterParam;
|
||||
let currentParams: RouteParamsType = router.getParams() as RouteParamsType;
|
||||
this.judgeBusiness.JudgeInit(currentParams.mode, this.judgeUI.carName)
|
||||
}
|
||||
|
||||
@ -129,12 +130,12 @@ export default class JudgeBusiness {
|
||||
|
||||
// 考试过程 callback优化
|
||||
public async Judging(strData: string, callBack: Function) {
|
||||
JudgingFn(strData, callBack, this.judgeUI, this)
|
||||
this.judgeBusiness.Judging(strData, callBack, this.judgeUI, this)
|
||||
}
|
||||
|
||||
// 结束考试
|
||||
public JudgeEnd(isManual?: boolean) {
|
||||
JudgeEndFn(this.judgeUI, this, isManual)
|
||||
this.judgeBusiness.JudgeEnd(this.judgeUI, this, isManual)
|
||||
}
|
||||
|
||||
// 处理PLC数据
|
||||
|
||||
@ -1,110 +0,0 @@
|
||||
import { JudgeTag } from '../../config'
|
||||
import { JudgeUI } from '../../model'
|
||||
import { dConsole } from '../../utils/LogWorker'
|
||||
import JudgeBusiness from './JudgeBusiness'
|
||||
import { examJudgeEndExam } from './JudgeSDKUtils'
|
||||
|
||||
export const JudgeEndFn = async (judgeUI: JudgeUI, that: JudgeBusiness, isManual?: boolean) => {
|
||||
const isAllProjectsEnd = judgeUI.isAllProjectsEnd
|
||||
const examSubject = judgeUI.examSubject
|
||||
const singlePlay = judgeUI.singlePlay
|
||||
const totalScore = Number(judgeUI.totalScore)
|
||||
const judgeConfigObj = judgeUI.judgeConfigObj
|
||||
const examMileage = Number(judgeUI.examMileage)
|
||||
const passingScore = Number(judgeUI.passingScore)
|
||||
const jl = judgeUI.jl
|
||||
if (that.isExamEnd) {
|
||||
return
|
||||
}
|
||||
if (isManual) {
|
||||
// 考试不合格
|
||||
await examJudgeEndExam()
|
||||
that.isExamEnd = true
|
||||
that.isManual = true
|
||||
} else {
|
||||
const param302: number = Reflect.get(judgeConfigObj, '302')
|
||||
const param342: number = Reflect.get(judgeConfigObj, '342')
|
||||
const param512: number[] = (Reflect.get(judgeConfigObj, '512') || '').split(',');
|
||||
|
||||
//单机模式
|
||||
if (singlePlay) {
|
||||
dConsole.info(JudgeTag + ' 单机模式结束 => ', isAllProjectsEnd)
|
||||
if (isAllProjectsEnd && jl >= examMileage) {
|
||||
//成绩合格
|
||||
if (totalScore >= passingScore && !that.isEndTip) {
|
||||
if (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 (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 (examSubject == '3' && param302 == 1) {
|
||||
that.avPlayer?.playAudio([`voice/考试结束.mp3`]);
|
||||
return
|
||||
}
|
||||
await examJudgeEndExam()
|
||||
that.isExamEnd = true
|
||||
return
|
||||
}
|
||||
|
||||
//成绩合格
|
||||
if (isAllProjectsEnd && totalScore >= passingScore && !that.isEndTip) {
|
||||
if (examSubject == '2') {
|
||||
await examJudgeEndExam()
|
||||
that.isExamEnd = true
|
||||
return
|
||||
}
|
||||
|
||||
//考试里程判断
|
||||
if (examSubject == '3' && jl < examMileage) {
|
||||
return
|
||||
}
|
||||
|
||||
//考试合格自动退出
|
||||
if (examSubject == '3' && (param302 == 4 || param302 == 7) || param302 == 8) {
|
||||
await examJudgeEndExam()
|
||||
that.isExamEnd = true
|
||||
return
|
||||
}
|
||||
|
||||
if (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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,4 +1,3 @@
|
||||
//开始评判
|
||||
import { JudgeConfig, JudgeTag } from '../../config';
|
||||
import {
|
||||
BaseInfoType,
|
||||
@ -12,7 +11,6 @@ import {
|
||||
JudgeInitObj,
|
||||
JudgeKFXM,
|
||||
JudgeKSXM,
|
||||
JudgeUI,
|
||||
Km3JudgeInitConfig,
|
||||
MAPITEMPOINTITEM,
|
||||
MAPPOINT,
|
||||
@ -42,227 +40,11 @@ import { GetModelData } from './utils';
|
||||
import { BaseJudge, GetSysSetResult } from './Typing';
|
||||
import { GetSyncData } from '../../utils/table/Operation';
|
||||
import promptAction from '@ohos.promptAction';
|
||||
import { JudgePage } from '../Judge';
|
||||
|
||||
|
||||
export interface RouterParam {
|
||||
mode: number
|
||||
score: number
|
||||
kString: string
|
||||
wayno: number
|
||||
}
|
||||
|
||||
|
||||
export class SmallJudge implements BaseJudge {
|
||||
public async JudgeInit(mode: number, carName: string): Promise<GetSysSetResult> {
|
||||
const systemParams = await GetSyncData<SYSTEM_PARAM>('MA_SYSTEMPARM')
|
||||
let currentParams: RouterParam = router.getParams() as RouterParam;
|
||||
let totalScore: number
|
||||
let wayno: number
|
||||
let mockLight: boolean
|
||||
let carlist: string
|
||||
let passingScore: number
|
||||
let examMileage: string
|
||||
let projectsObj: Array<Project>
|
||||
let projectsCenterObj: Array<String>
|
||||
let ddxkKsxmArr: Array<string>
|
||||
let singlePlay: boolean = AppStorage.get("singlePlay")
|
||||
let systemparmArr: Array<SYSTEM_PARAM> = []
|
||||
let projects: Array<Project> = []
|
||||
let examSubject: string = ""
|
||||
if (mode === 2) {
|
||||
totalScore = Number(currentParams.score) || totalScore
|
||||
}
|
||||
if (singlePlay) {
|
||||
wayno = currentParams.wayno || 1;
|
||||
}
|
||||
if (singlePlay) {
|
||||
wayno = Number(currentParams.wayno) || 1;
|
||||
}
|
||||
//真实监管下发的项目
|
||||
let kStringArr: string[] = (currentParams.kString?.split(',') || []).filter(item => item);
|
||||
let isInExam = kStringArr.length > 0;
|
||||
let carNo: number, allItems: string[] = [];
|
||||
systemParams.forEach((systemParam) => {
|
||||
if (JudgeConfig.isTrajectoryOpen) {
|
||||
systemParam.no1 = systemParam.NO1!;
|
||||
systemParam.no2 = systemParam.NO2!;
|
||||
systemParam.no3 = systemParam.NO3!;
|
||||
systemParam.txt1 = systemParam.TXT1!;
|
||||
systemParam.txt2 = systemParam.TXT2!;
|
||||
systemParam.txt3 = systemParam.TXT3!;
|
||||
}
|
||||
const txt1 = decodeURI(systemParam.txt1 || "")
|
||||
const txt2 = decodeURI(systemParam.txt2 || "")
|
||||
|
||||
const no1 = systemParam.no1;
|
||||
const no2 = systemParam.no2;
|
||||
const no3 = systemParam.no3;
|
||||
|
||||
//获取当前考车的no2
|
||||
if (no1 == 3 && no3 == 1) {
|
||||
if (txt1 === carName) {
|
||||
carNo = no2
|
||||
}
|
||||
}
|
||||
|
||||
//获取及格分数线
|
||||
if (no1 == 3 && no3 == 3 && carNo === no2) {
|
||||
passingScore = Number(txt1) || 0;
|
||||
}
|
||||
//根据车型获取应行驶里程数
|
||||
if (no1 == 3 && no3 == 15 && carNo === no2) {
|
||||
examMileage = ((decodeURI(systemParam.txt1 || "")) || '').split('^')[0];
|
||||
}
|
||||
//获取当前考车的考试项目
|
||||
if (carNo && no1 === 3 && no2 == carNo && no3 === 10) {
|
||||
allItems = decodeURIComponent(systemParam.txt1 || "").split(',').filter(txt => txt !== '')
|
||||
dConsole.info(JudgeTag, '考试项目', allItems)
|
||||
}
|
||||
if (
|
||||
//科目二获取项目
|
||||
(examSubject == "2" && allItems.length && no1 === 6 && allItems.includes(no2 + "" || ""))
|
||||
||
|
||||
//科目三获取项目
|
||||
(examSubject == "3" && no1 === 6)
|
||||
) {
|
||||
const name = decodeURI(systemParam.txt1 || "")
|
||||
//小车过滤掉 夜间模拟行驶
|
||||
if (name === '夜间行驶') {
|
||||
return
|
||||
}
|
||||
const currentProject: Project = {
|
||||
name,
|
||||
abbreviation: decodeURI(systemParam.txt3 || ""),
|
||||
projectCode: no2 + '',
|
||||
projectCodeCenter: txt2,
|
||||
//是否是必考 加减档设置成非必考
|
||||
isRequired: no2 === 14 ? false : allItems.includes(no2 + ''),
|
||||
//是否考过了
|
||||
isEnd: false,
|
||||
//项目开始数据是否上传过
|
||||
isUpload: false,
|
||||
}
|
||||
const no2Num = Number(no2)
|
||||
//真实监管下发考试项目
|
||||
if (isInExam && !(kStringArr.includes(txt2) || kStringArr.includes(no2 + ''))) {
|
||||
dConsole.info(JudgeTag, 'surenjun =>', txt2)
|
||||
dConsole.info(JudgeTag, 'surenjun => no2', no2)
|
||||
currentProject.type = '3'
|
||||
currentProject.isUpload = true
|
||||
currentProject.isEnd = true
|
||||
ddxkKsxmArr.push(txt2)
|
||||
}
|
||||
Reflect.set(projectsObj, no2Num, currentProject)
|
||||
Reflect.set(projectsCenterObj, txt2, currentProject)
|
||||
projects.push(currentProject);
|
||||
}
|
||||
systemparmArr.push({
|
||||
NO1: Number(no1),
|
||||
NO2: Number(no2),
|
||||
NO3: Number(no3),
|
||||
TXT1: decodeURIComponent(systemParam.txt1 || ""),
|
||||
TXT2: decodeURIComponent(systemParam.txt2 || ""),
|
||||
TXT3: decodeURIComponent(systemParam.txt3 || ""),
|
||||
})
|
||||
})
|
||||
if (!projects.length) {
|
||||
promptAction.showToast({
|
||||
message: '读取数据库信息失败,请重新联网更新!',
|
||||
duration: 8000
|
||||
});
|
||||
dConsole.log(JudgeTag, "router back3")
|
||||
router.back();
|
||||
}
|
||||
return {
|
||||
totalScore,
|
||||
wayno,
|
||||
mockLight,
|
||||
carlist,
|
||||
passingScore,
|
||||
examMileage,
|
||||
projectsObj,
|
||||
projectsCenterObj,
|
||||
ddxkKsxmArr,
|
||||
singlePlay,
|
||||
systemparmArr,
|
||||
projects,
|
||||
}
|
||||
}
|
||||
|
||||
public async JudgeStart(callBack: Function, judgeUI: JudgeUI, that: JudgeBusiness) {
|
||||
const name = judgeUI.name
|
||||
const kssycs = judgeUI.kssycs
|
||||
const manualMarkRules = judgeUI.manualMarkRules
|
||||
// 处理单机模式
|
||||
const isTrajectoryOpen = JudgeConfig.isTrajectoryOpen;
|
||||
const isJudgeInitBool = AppStorage.get<boolean>('isJudgeInitBool');
|
||||
const trajectoryPath = JudgeConfig.trajectoryPath;
|
||||
let strArr: string[] = [];
|
||||
if (isTrajectoryOpen) {
|
||||
const folderPath = await that.fileUtil.initFolder(trajectoryPath);
|
||||
const str: string = await that.fileUtil.readFile(folderPath)
|
||||
strArr = str.split('\n')
|
||||
}
|
||||
//日志回调
|
||||
dConsole.info(JudgeTag, '1.进入评判入口')
|
||||
await examJudgeSetLogCallback(6, async (level: number, info: string, len: number) => {
|
||||
dConsole.log(JudgeTag, '评判日志:' + info)
|
||||
dConsole.writeProcessData(ProcessDataEnumType.JudgeLogData, info)
|
||||
})
|
||||
|
||||
dConsole.info(JudgeTag, '2.注册日志回调完成')
|
||||
|
||||
let initInfo: JudgeInitObj = isTrajectoryOpen ? JSON.parse(strArr[0]) : await this.GetJudgeInitData(judgeUI.context, judgeUI.markRuleListObj, judgeUI.carType, judgeUI.carName, judgeUI.systemparmArr, judgeUI.carinfoArr, judgeUI.examSubject, judgeUI.itemInfoObj, judgeUI.judgeConfig, judgeUI.carlist, judgeUI.mapPointArr, judgeUI.mapPointItemArr);
|
||||
//相关评判初始化只做一次
|
||||
if (!isJudgeInitBool) {
|
||||
dConsole.log(JudgeTag, "评判初始化参数", initInfo)
|
||||
await examJudgeInit(initInfo);
|
||||
AppStorage.setOrCreate('isJudgeInitBool', true)
|
||||
dConsole.info(JudgeTag, '4.评判初始化完成')
|
||||
}
|
||||
AppStorage.setOrCreate('isJudge', true)
|
||||
// 2.评判过程回调
|
||||
await examJudgeSetRealExamCallback(async (strData: string, len: number) => {
|
||||
// 评判回调日志
|
||||
dConsole.writeProcessData(ProcessDataEnumType.JudgeProgressCallbackData, strData)
|
||||
dConsole.info(JudgeTag, '评判回调数据', strData)
|
||||
await that.Judging(strData, callBack)
|
||||
})
|
||||
await examJudgeSetPerformCallback(async (info: string) => {
|
||||
dConsole.info('评判实时数据', info)
|
||||
that.performInfo = JSON.parse(info)
|
||||
const jl = Math.floor((that.performInfo.qjjl + that.performInfo.dcjl) / 100);
|
||||
if (jl > Number(judgeUI.examMileage)) {
|
||||
that.JudgeEnd()
|
||||
}
|
||||
judgeUI.jl = jl
|
||||
judgeUI.laneSignal = that.performInfo.lane
|
||||
})
|
||||
let beginExamInfo: JudgeBeginObj | undefined = undefined
|
||||
// 3.开始考试
|
||||
if (isTrajectoryOpen) {
|
||||
beginExamInfo = JSON.parse(strArr[1])
|
||||
beginExamInfo && (beginExamInfo.replay = 1)
|
||||
} else {
|
||||
beginExamInfo = await this.GetJudgeBeginData(judgeUI.projects, judgeUI.carType, judgeUI.kssycs, judgeUI.isDdxk, judgeUI.ddxkTime, judgeUI.projectsCenterObj, judgeUI.ddxkKsxmArr, judgeUI.ddxkKfArr, judgeUI.passingScore, judgeUI.wayno, judgeUI.name, judgeUI.lsh, judgeUI.idCard, that.isExam)
|
||||
}
|
||||
if (beginExamInfo) {
|
||||
await examJudgeBeginExam(beginExamInfo);
|
||||
}
|
||||
dConsole.info(JudgeTag, '6.开始考试注册完成')
|
||||
that.avPlayer?.playAudio([judgeUI.singlePlay ? 'voice/ksks.wav' : 'voice/监管成功.mp3'])
|
||||
if (!judgeUI.singlePlay) {
|
||||
that.videoData = await saveStartRecordVideo(`${name}_${kssycs}`, that.context)
|
||||
}
|
||||
judgeUI.draw = true
|
||||
// 处理单机泡轨迹模式
|
||||
if (isTrajectoryOpen) {
|
||||
that.SingleMachineTrajectory(strArr)
|
||||
return
|
||||
}
|
||||
};
|
||||
|
||||
public async GetJudgeBeginData(projects: ProjectInfo[], carType: string, kssycs: string, isDdxk: boolean, ddxkTime: number, projectsCenterObj: Object, ddxkKsxmArr: string[], ddxkKfArr: string[], passingScore: number, wayno: number, name: string, lsh: string, idCard: string, isExam: boolean) {
|
||||
export class LargeJudge implements BaseJudge {
|
||||
private async GetJudgeBeginData(projects: Project[], carType: string, kssycs: string, isDdxk: boolean, ddxkTime: number, projectsCenterObj: Object, ddxkKsxmArr: string[], ddxkKfArr: string[], passingScore: number, wayno: number, name: string, lsh: string, idCard: string, isExam: boolean) {
|
||||
const examinerInfo = AppStorage.get<ExaminerInfoType>('examinerInfo')
|
||||
const examinerName = examinerInfo?.name || ""
|
||||
let currentParams: RouteParamsType = router.getParams() as RouteParamsType;
|
||||
@ -322,7 +104,7 @@ export class SmallJudge implements BaseJudge {
|
||||
return beginInfo
|
||||
};
|
||||
|
||||
public async GetJudgeInitData(context: common.UIAbilityContext, markRuleListObj: object, carType: string, carName: string, systemparmArr: SYSTEM_PARAM[], carinfoArr: CAR_INFO[], examSubject: string, itemInfoObj: ItemInfos, judgeConfig: SyssetConfig[], carlist: string, mapPointArr: MAPPOINT[], mapPointItemArr: MAPITEMPOINTITEM[]) {
|
||||
private async GetJudgeInitData(context: common.UIAbilityContext, markRuleListObj: object, carType: string, carName: string, systemparmArr: SYSTEM_PARAM[], carinfoArr: CAR_INFO[], examSubject: string, itemInfoObj: ItemInfos, judgeConfig: SyssetConfig[], carlist: string, mapPointArr: MAPPOINT[], mapPointItemArr: MAPITEMPOINTITEM[]) {
|
||||
const carInfo = AppStorage.get<CarInfoType>('carInfo');
|
||||
const examType = carInfo?.examSubject == '2' ? 'km2' : 'km3'
|
||||
|
||||
@ -384,13 +166,10 @@ export class SmallJudge implements BaseJudge {
|
||||
dConsole.info(JudgeTag, '3.获取评判初始化数据完成')
|
||||
return initInfo
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
export class LargeJudge implements BaseJudge {
|
||||
public async JudgeInit(mode: number, carName: string): Promise<GetSysSetResult> {
|
||||
const systemParams = await GetSyncData<SYSTEM_PARAM>('MA_SYSTEMPARM')
|
||||
let currentParams: RouterParam = router.getParams() as RouterParam;
|
||||
let currentParams: RouteParamsType = router.getParams() as RouteParamsType;
|
||||
let totalScore: number
|
||||
let wayno: number
|
||||
let mockLight: boolean
|
||||
@ -407,7 +186,7 @@ export class LargeJudge implements BaseJudge {
|
||||
totalScore = Number(currentParams.score) || totalScore
|
||||
}
|
||||
if (singlePlay) {
|
||||
wayno = currentParams.wayno || 1;
|
||||
wayno = Number(currentParams.wayno) || 1;
|
||||
}
|
||||
//真实监管下发的项目
|
||||
let kStringArr: string[] = (currentParams.kString?.split(',') || []).filter(item => item);
|
||||
@ -563,7 +342,7 @@ export class LargeJudge implements BaseJudge {
|
||||
}
|
||||
}
|
||||
|
||||
public async JudgeStart(callBack: Function, judgeUI: JudgeUI, that: JudgeBusiness) {
|
||||
public async JudgeStart(callBack: Function, judgeUI: JudgePage, that: JudgeBusiness) {
|
||||
const name = judgeUI.name
|
||||
const kssycs = judgeUI.kssycs
|
||||
// 处理远程扣分使用
|
||||
@ -637,126 +416,11 @@ export class LargeJudge implements BaseJudge {
|
||||
}
|
||||
};
|
||||
|
||||
public async GetJudgeBeginData(projects: ProjectInfo[], carType: string, kssycs: string, isDdxk: boolean, ddxkTime: number, projectsCenterObj: Object, ddxkKsxmArr: string[], ddxkKfArr: string[], passingScore: number, wayno: number, name: string, lsh: string, idCard: string, isExam: boolean) {
|
||||
const examinerInfo = AppStorage.get<ExaminerInfoType>('examinerInfo')
|
||||
const examinerName = examinerInfo?.name || ""
|
||||
let currentParams: RouteParamsType = router.getParams() as RouteParamsType;
|
||||
const sczb = currentParams.sczb;
|
||||
const kfdm = currentParams.kfdm;
|
||||
const ksxm: JudgeKSXM[] = projects.map(project => {
|
||||
const temp: JudgeKSXM = {
|
||||
xmdm: Number(project.projectCode), xmxh: ''
|
||||
}
|
||||
return temp
|
||||
})
|
||||
const ykxm: number[] = (ddxkKsxmArr?.map(projectCenterCode => {
|
||||
const currentProject: ProjectInfo = Reflect.get(projectsCenterObj, projectCenterCode)
|
||||
return Number(currentProject.projectCode)
|
||||
})) || [];
|
||||
const kfxm: JudgeKFXM[] = isDdxk ? (ddxkKfArr?.map(kf => {
|
||||
return {
|
||||
xmdm: Number(kf.split(',')[0]), kfdm: kf.split(',')[1]
|
||||
} as JudgeKFXM
|
||||
})) : []
|
||||
const beginInfo: JudgeBeginObj = {
|
||||
kgid: '012',
|
||||
kgxm: decodeURI(examinerName || ''),
|
||||
exam: isExam ? 1 : 0,
|
||||
//是否回放
|
||||
replay: 0,
|
||||
//生成的轨迹文件
|
||||
track: '',
|
||||
xm: name,
|
||||
sex: 0,
|
||||
kslsh: lsh,
|
||||
sfzmhm: idCard,
|
||||
ksyy: '',
|
||||
kscx: carType,
|
||||
kkcs: Number(kssycs) || 2,
|
||||
sfyk: 0,
|
||||
ykkkcs: 1,
|
||||
wayno: Number(wayno),
|
||||
czlx: 0,
|
||||
kskssj: await systemTime.getCurrentTime(),
|
||||
passing: Number(passingScore),
|
||||
ksxm,
|
||||
//断点续考
|
||||
ddxk: isDdxk ? 1 : 0,
|
||||
ddkssj: ddxkTime || 0,
|
||||
ykxm,
|
||||
kfxm,
|
||||
yklc: 0,
|
||||
special: [],
|
||||
sczb: (sczb === undefined || sczb == '0') ? 0 : 1,
|
||||
sczbkf: kfdm,
|
||||
dmndg: false,
|
||||
mfxx: false,
|
||||
mfxxn: false
|
||||
}
|
||||
dConsole.info(JudgeTag, '5.获取开始考试数据完成')
|
||||
return beginInfo
|
||||
};
|
||||
public async Judging(strData: string, callBack: Function, judgeUI: JudgePage, that: JudgeBusiness) {
|
||||
|
||||
public async GetJudgeInitData(context: common.UIAbilityContext, markRuleListObj: object, carType: string, carName: string, systemparmArr: SYSTEM_PARAM[], carinfoArr: CAR_INFO[], examSubject: string, itemInfoObj: ItemInfos, judgeConfig: SyssetConfig[], carlist: string, mapPointArr: MAPPOINT[], mapPointItemArr: MAPITEMPOINTITEM[]) {
|
||||
const carInfo = AppStorage.get<CarInfoType>('carInfo');
|
||||
const examType = carInfo?.examSubject == '2' ? 'km2' : 'km3'
|
||||
}
|
||||
|
||||
let allitems: ItemInfo[] = [];
|
||||
if (examSubject == '2' && itemInfoObj) {
|
||||
allitems = Reflect.ownKeys(itemInfoObj).map(cdsbKey => {
|
||||
const cdsb: CDSBInfo = Reflect.get(itemInfoObj, cdsbKey);
|
||||
const model = GetModelData(`${examType}/${cdsb.modelKey}.txt`, context)
|
||||
const temp: ItemInfo = {
|
||||
xmdm: cdsb?.xmdm || 0,
|
||||
xmxh: cdsb?.xmxh || "",
|
||||
model: model || ""
|
||||
}
|
||||
return temp
|
||||
})
|
||||
}
|
||||
public async JudgeEnd(judgeUI: JudgePage, that: JudgeBusiness, isManual?: boolean) {
|
||||
|
||||
//获取版本号
|
||||
const mark: MarkRule[] = Reflect.ownKeys(markRuleListObj).map(ruleKey => {
|
||||
const current: MarkRule = Reflect.get(markRuleListObj, ruleKey)
|
||||
return current
|
||||
})
|
||||
const initInfo: JudgeInitObj = {
|
||||
sdkver: await examJudgeVersion(),
|
||||
appver: AppStorage.get<BaseInfoType>('baseInfo')?.version || "",
|
||||
kskm: Number(carInfo?.examSubject || "2"),
|
||||
kchp: carInfo?.plateNo || "",
|
||||
kchm: Number(carInfo?.carId || ""),
|
||||
kscx: carType,
|
||||
cxcode: '1',
|
||||
name: carName,
|
||||
carmodel: GetModelData(`${examType}/${carType}.txt`, context) || "",
|
||||
allitems,
|
||||
iteminfo: [],
|
||||
systemparm: systemparmArr,
|
||||
mark,
|
||||
sysset: judgeConfig,
|
||||
itemInfoObj,
|
||||
carlist: carlist,
|
||||
carinfo: carinfoArr,
|
||||
};
|
||||
let km3Config: Km3JudgeInitConfig = {}
|
||||
if (examSubject == '3') {
|
||||
km3Config = {
|
||||
map_point: mapPointArr,
|
||||
map_point_item: mapPointItemArr,
|
||||
//科目三暂时为空
|
||||
iteminfo: [],
|
||||
roads: GetModelData('km3/Roads.txt', context) || "",
|
||||
sharps: GetModelData('km3/Sharps.txt', context) || ""
|
||||
};
|
||||
initInfo.map_point = km3Config.map_point
|
||||
initInfo.map_point_item = km3Config.map_point_item
|
||||
initInfo.iteminfo = km3Config.iteminfo
|
||||
initInfo.roads = km3Config.roads
|
||||
initInfo.sharps = km3Config.sharps
|
||||
}
|
||||
// 获取科目三的评判配置
|
||||
dConsole.info(JudgeTag, '3.获取评判初始化数据完成')
|
||||
return initInfo
|
||||
};
|
||||
}
|
||||
486
entry/src/main/ets/pages/Judge/SmallJudgeBusiness.ets
Normal file
486
entry/src/main/ets/pages/Judge/SmallJudgeBusiness.ets
Normal file
@ -0,0 +1,486 @@
|
||||
import { JudgeConfig, JudgeTag } from '../../config';
|
||||
import {
|
||||
BaseInfoType,
|
||||
CAR_INFO,
|
||||
CarInfoType,
|
||||
CDSBInfo,
|
||||
ExaminerInfoType,
|
||||
ItemInfo,
|
||||
ItemInfos,
|
||||
JudgeBeginObj,
|
||||
JudgeInitObj,
|
||||
JudgeKFXM,
|
||||
JudgeKSXM,
|
||||
Km3JudgeInitConfig,
|
||||
MAPITEMPOINTITEM,
|
||||
MAPPOINT,
|
||||
MarkRule,
|
||||
ProcessDataEnumType,
|
||||
ProjectInfo,
|
||||
RouteParamsType,
|
||||
SyssetConfig,
|
||||
SYSTEM_PARAM,
|
||||
Project
|
||||
} from '../../model';
|
||||
import common from '@ohos.app.ability.common';
|
||||
import { dConsole } from '../../utils/LogWorker';
|
||||
import {
|
||||
examJudgeBeginExam,
|
||||
examJudgeEndExam,
|
||||
examJudgeInit,
|
||||
examJudgeSetLogCallback,
|
||||
examJudgeSetPerformCallback,
|
||||
examJudgeSetRealExamCallback,
|
||||
examJudgeVersion
|
||||
} from './JudgeSDKUtils';
|
||||
import JudgeBusiness from './JudgeBusiness';
|
||||
import { saveStartRecordVideo } from '../../utils/Video';
|
||||
import router from '@ohos.router';
|
||||
import systemTime from '@ohos.systemTime';
|
||||
import { GetModelData } from './utils';
|
||||
import { BaseJudge, GetSysSetResult } from './Typing';
|
||||
import { GetSyncData } from '../../utils/table/Operation';
|
||||
import promptAction from '@ohos.promptAction';
|
||||
import { JudgePage } from '../Judge';
|
||||
|
||||
|
||||
export class SmallJudge implements BaseJudge {
|
||||
public async GetJudgeBeginData(projects: Project[], carType: string, kssycs: string, isDdxk: boolean, ddxkTime: number, projectsCenterObj: Object, ddxkKsxmArr: string[], ddxkKfArr: string[], passingScore: number, wayno: number, name: string, lsh: string, idCard: string, isExam: boolean) {
|
||||
const examinerInfo = AppStorage.get<ExaminerInfoType>('examinerInfo')
|
||||
const examinerName = examinerInfo?.name || ""
|
||||
let currentParams: RouteParamsType = router.getParams() as RouteParamsType;
|
||||
const sczb = currentParams.sczb;
|
||||
const kfdm = currentParams.kfdm;
|
||||
const ksxm: JudgeKSXM[] = projects.map(project => {
|
||||
const temp: JudgeKSXM = {
|
||||
xmdm: Number(project.projectCode), xmxh: ''
|
||||
}
|
||||
return temp
|
||||
})
|
||||
const ykxm: number[] = (ddxkKsxmArr?.map(projectCenterCode => {
|
||||
const currentProject: ProjectInfo = Reflect.get(projectsCenterObj, projectCenterCode)
|
||||
return Number(currentProject.projectCode)
|
||||
})) || [];
|
||||
const kfxm: JudgeKFXM[] = isDdxk ? (ddxkKfArr?.map(kf => {
|
||||
return {
|
||||
xmdm: Number(kf.split(',')[0]), kfdm: kf.split(',')[1]
|
||||
} as JudgeKFXM
|
||||
})) : []
|
||||
const beginInfo: JudgeBeginObj = {
|
||||
kgid: '012',
|
||||
kgxm: decodeURI(examinerName || ''),
|
||||
exam: isExam ? 1 : 0,
|
||||
//是否回放
|
||||
replay: 0,
|
||||
//生成的轨迹文件
|
||||
track: '',
|
||||
xm: name,
|
||||
sex: 0,
|
||||
kslsh: lsh,
|
||||
sfzmhm: idCard,
|
||||
ksyy: '',
|
||||
kscx: carType,
|
||||
kkcs: Number(kssycs) || 2,
|
||||
sfyk: 0,
|
||||
ykkkcs: 1,
|
||||
wayno: Number(wayno),
|
||||
czlx: 0,
|
||||
kskssj: await systemTime.getCurrentTime(),
|
||||
passing: Number(passingScore),
|
||||
ksxm,
|
||||
//断点续考
|
||||
ddxk: isDdxk ? 1 : 0,
|
||||
ddkssj: ddxkTime || 0,
|
||||
ykxm,
|
||||
kfxm,
|
||||
yklc: 0,
|
||||
special: [],
|
||||
sczb: (sczb === undefined || sczb == '0') ? 0 : 1,
|
||||
sczbkf: kfdm,
|
||||
dmndg: false,
|
||||
mfxx: false,
|
||||
mfxxn: false
|
||||
}
|
||||
dConsole.info(JudgeTag, '5.获取开始考试数据完成')
|
||||
return beginInfo
|
||||
};
|
||||
|
||||
public async GetJudgeInitData(context: common.UIAbilityContext, markRuleListObj: object, carType: string, carName: string, systemparmArr: SYSTEM_PARAM[], carinfoArr: CAR_INFO[], examSubject: string, itemInfoObj: ItemInfos, judgeConfig: SyssetConfig[], carlist: string, mapPointArr: MAPPOINT[], mapPointItemArr: MAPITEMPOINTITEM[]) {
|
||||
const carInfo = AppStorage.get<CarInfoType>('carInfo');
|
||||
const examType = carInfo?.examSubject == '2' ? 'km2' : 'km3'
|
||||
|
||||
let allitems: ItemInfo[] = [];
|
||||
if (examSubject == '2' && itemInfoObj) {
|
||||
allitems = Reflect.ownKeys(itemInfoObj).map(cdsbKey => {
|
||||
const cdsb: CDSBInfo = Reflect.get(itemInfoObj, cdsbKey);
|
||||
const model = GetModelData(`${examType}/${cdsb.modelKey}.txt`, context)
|
||||
const temp: ItemInfo = {
|
||||
xmdm: cdsb?.xmdm || 0,
|
||||
xmxh: cdsb?.xmxh || "",
|
||||
model: model || ""
|
||||
}
|
||||
return temp
|
||||
})
|
||||
}
|
||||
|
||||
//获取版本号
|
||||
const mark: MarkRule[] = Reflect.ownKeys(markRuleListObj).map(ruleKey => {
|
||||
const current: MarkRule = Reflect.get(markRuleListObj, ruleKey)
|
||||
return current
|
||||
})
|
||||
const initInfo: JudgeInitObj = {
|
||||
sdkver: await examJudgeVersion(),
|
||||
appver: AppStorage.get<BaseInfoType>('baseInfo')?.version || "",
|
||||
kskm: Number(carInfo?.examSubject || "2"),
|
||||
kchp: carInfo?.plateNo || "",
|
||||
kchm: Number(carInfo?.carId || ""),
|
||||
kscx: carType,
|
||||
cxcode: '1',
|
||||
name: carName,
|
||||
carmodel: GetModelData(`${examType}/${carType}.txt`, context) || "",
|
||||
allitems,
|
||||
iteminfo: [],
|
||||
systemparm: systemparmArr,
|
||||
mark,
|
||||
sysset: judgeConfig,
|
||||
itemInfoObj,
|
||||
carlist: carlist,
|
||||
carinfo: carinfoArr,
|
||||
};
|
||||
let km3Config: Km3JudgeInitConfig = {}
|
||||
if (examSubject == '3') {
|
||||
km3Config = {
|
||||
map_point: mapPointArr,
|
||||
map_point_item: mapPointItemArr,
|
||||
//科目三暂时为空
|
||||
iteminfo: [],
|
||||
roads: GetModelData('km3/Roads.txt', context) || "",
|
||||
sharps: GetModelData('km3/Sharps.txt', context) || ""
|
||||
};
|
||||
initInfo.map_point = km3Config.map_point
|
||||
initInfo.map_point_item = km3Config.map_point_item
|
||||
initInfo.iteminfo = km3Config.iteminfo
|
||||
initInfo.roads = km3Config.roads
|
||||
initInfo.sharps = km3Config.sharps
|
||||
}
|
||||
// 获取科目三的评判配置
|
||||
dConsole.info(JudgeTag, '3.获取评判初始化数据完成')
|
||||
return initInfo
|
||||
};
|
||||
|
||||
public async JudgeInit(mode: number, carName: string): Promise<GetSysSetResult> {
|
||||
const systemParams = await GetSyncData<SYSTEM_PARAM>('MA_SYSTEMPARM')
|
||||
let currentParams: RouteParamsType = router.getParams() as RouteParamsType;
|
||||
let totalScore: number
|
||||
let wayno: number
|
||||
let mockLight: boolean
|
||||
let carlist: string
|
||||
let passingScore: number
|
||||
let examMileage: string
|
||||
let projectsObj: Array<Project>
|
||||
let projectsCenterObj: Array<String>
|
||||
let ddxkKsxmArr: Array<string>
|
||||
let singlePlay: boolean = AppStorage.get("singlePlay")
|
||||
let systemparmArr: Array<SYSTEM_PARAM> = []
|
||||
let projects: Array<Project> = []
|
||||
let examSubject: string = ""
|
||||
if (mode === 2) {
|
||||
totalScore = Number(currentParams.score) || totalScore
|
||||
}
|
||||
if (singlePlay) {
|
||||
wayno = Number(currentParams.wayno) || 1;
|
||||
}
|
||||
//真实监管下发的项目
|
||||
let kStringArr: string[] = (currentParams.kString?.split(',') || []).filter(item => item);
|
||||
let isInExam = kStringArr.length > 0;
|
||||
let carNo: number, allItems: string[] = [];
|
||||
systemParams.forEach((systemParam) => {
|
||||
if (JudgeConfig.isTrajectoryOpen) {
|
||||
systemParam.no1 = systemParam.NO1!;
|
||||
systemParam.no2 = systemParam.NO2!;
|
||||
systemParam.no3 = systemParam.NO3!;
|
||||
systemParam.txt1 = systemParam.TXT1!;
|
||||
systemParam.txt2 = systemParam.TXT2!;
|
||||
systemParam.txt3 = systemParam.TXT3!;
|
||||
}
|
||||
const txt1 = decodeURI(systemParam.txt1 || "")
|
||||
const txt2 = decodeURI(systemParam.txt2 || "")
|
||||
|
||||
const no1 = systemParam.no1;
|
||||
const no2 = systemParam.no2;
|
||||
const no3 = systemParam.no3;
|
||||
|
||||
//获取当前考车的no2
|
||||
if (no1 == 3 && no3 == 1) {
|
||||
if (txt1 === carName) {
|
||||
carNo = no2
|
||||
}
|
||||
}
|
||||
|
||||
//获取及格分数线
|
||||
if (no1 == 3 && no3 == 3 && carNo === no2) {
|
||||
passingScore = Number(txt1) || 0;
|
||||
}
|
||||
//根据车型获取应行驶里程数
|
||||
if (no1 == 3 && no3 == 15 && carNo === no2) {
|
||||
examMileage = ((decodeURI(systemParam.txt1 || "")) || '').split('^')[0];
|
||||
}
|
||||
//获取当前考车的考试项目
|
||||
if (carNo && no1 === 3 && no2 == carNo && no3 === 10) {
|
||||
allItems = decodeURIComponent(systemParam.txt1 || "").split(',').filter(txt => txt !== '')
|
||||
dConsole.info(JudgeTag, '考试项目', allItems)
|
||||
}
|
||||
if (
|
||||
//科目二获取项目
|
||||
(examSubject == "2" && allItems.length && no1 === 6 && allItems.includes(no2 + "" || ""))
|
||||
||
|
||||
//科目三获取项目
|
||||
(examSubject == "3" && no1 === 6)
|
||||
) {
|
||||
const name = decodeURI(systemParam.txt1 || "")
|
||||
//小车过滤掉 夜间模拟行驶
|
||||
if (name === '夜间行驶') {
|
||||
return
|
||||
}
|
||||
const currentProject: Project = {
|
||||
name,
|
||||
abbreviation: decodeURI(systemParam.txt3 || ""),
|
||||
projectCode: no2 + '',
|
||||
projectCodeCenter: txt2,
|
||||
//是否是必考 加减档设置成非必考
|
||||
isRequired: no2 === 14 ? false : allItems.includes(no2 + ''),
|
||||
//是否考过了
|
||||
isEnd: false,
|
||||
//项目开始数据是否上传过
|
||||
isUpload: false,
|
||||
}
|
||||
const no2Num = Number(no2)
|
||||
//真实监管下发考试项目
|
||||
if (isInExam && !(kStringArr.includes(txt2) || kStringArr.includes(no2 + ''))) {
|
||||
dConsole.info(JudgeTag, 'surenjun =>', txt2)
|
||||
dConsole.info(JudgeTag, 'surenjun => no2', no2)
|
||||
currentProject.type = '3'
|
||||
currentProject.isUpload = true
|
||||
currentProject.isEnd = true
|
||||
ddxkKsxmArr.push(txt2)
|
||||
}
|
||||
Reflect.set(projectsObj, no2Num, currentProject)
|
||||
Reflect.set(projectsCenterObj, txt2, currentProject)
|
||||
projects.push(currentProject);
|
||||
}
|
||||
systemparmArr.push({
|
||||
NO1: Number(no1),
|
||||
NO2: Number(no2),
|
||||
NO3: Number(no3),
|
||||
TXT1: decodeURIComponent(systemParam.txt1 || ""),
|
||||
TXT2: decodeURIComponent(systemParam.txt2 || ""),
|
||||
TXT3: decodeURIComponent(systemParam.txt3 || ""),
|
||||
})
|
||||
})
|
||||
if (!projects.length) {
|
||||
promptAction.showToast({
|
||||
message: '读取数据库信息失败,请重新联网更新!',
|
||||
duration: 8000
|
||||
});
|
||||
dConsole.log(JudgeTag, "router back3")
|
||||
router.back();
|
||||
}
|
||||
return {
|
||||
totalScore,
|
||||
wayno,
|
||||
mockLight,
|
||||
carlist,
|
||||
passingScore,
|
||||
examMileage,
|
||||
projectsObj,
|
||||
projectsCenterObj,
|
||||
ddxkKsxmArr,
|
||||
singlePlay,
|
||||
systemparmArr,
|
||||
projects,
|
||||
}
|
||||
}
|
||||
|
||||
public async JudgeStart(callBack: Function, judgeUI: JudgePage, that: JudgeBusiness) {
|
||||
const name = judgeUI.name
|
||||
const kssycs = judgeUI.kssycs
|
||||
const manualMarkRules = judgeUI.manualMarkRules
|
||||
// 处理单机模式
|
||||
const isTrajectoryOpen = JudgeConfig.isTrajectoryOpen;
|
||||
const isJudgeInitBool = AppStorage.get<boolean>('isJudgeInitBool');
|
||||
const trajectoryPath = JudgeConfig.trajectoryPath;
|
||||
let strArr: string[] = [];
|
||||
if (isTrajectoryOpen) {
|
||||
const folderPath = await that.fileUtil.initFolder(trajectoryPath);
|
||||
const str: string = await that.fileUtil.readFile(folderPath)
|
||||
strArr = str.split('\n')
|
||||
}
|
||||
//日志回调
|
||||
dConsole.info(JudgeTag, '1.进入评判入口')
|
||||
await examJudgeSetLogCallback(6, async (level: number, info: string, len: number) => {
|
||||
dConsole.log(JudgeTag, '评判日志:' + info)
|
||||
dConsole.writeProcessData(ProcessDataEnumType.JudgeLogData, info)
|
||||
})
|
||||
|
||||
dConsole.info(JudgeTag, '2.注册日志回调完成')
|
||||
|
||||
let initInfo: JudgeInitObj = isTrajectoryOpen ? JSON.parse(strArr[0]) : await this.GetJudgeInitData(judgeUI.context, judgeUI.markRuleListObj, judgeUI.carType, judgeUI.carName, judgeUI.systemparmArr, judgeUI.carinfoArr, judgeUI.examSubject, judgeUI.itemInfoObj, judgeUI.judgeConfig, judgeUI.carlist, judgeUI.mapPointArr, judgeUI.mapPointItemArr);
|
||||
//相关评判初始化只做一次
|
||||
if (!isJudgeInitBool) {
|
||||
dConsole.log(JudgeTag, "评判初始化参数", initInfo)
|
||||
await examJudgeInit(initInfo);
|
||||
AppStorage.setOrCreate('isJudgeInitBool', true)
|
||||
dConsole.info(JudgeTag, '4.评判初始化完成')
|
||||
}
|
||||
AppStorage.setOrCreate('isJudge', true)
|
||||
// 2.评判过程回调
|
||||
await examJudgeSetRealExamCallback(async (strData: string, len: number) => {
|
||||
// 评判回调日志
|
||||
dConsole.writeProcessData(ProcessDataEnumType.JudgeProgressCallbackData, strData)
|
||||
dConsole.info(JudgeTag, '评判回调数据', strData)
|
||||
await that.Judging(strData, callBack)
|
||||
})
|
||||
await examJudgeSetPerformCallback(async (info: string) => {
|
||||
dConsole.info('评判实时数据', info)
|
||||
that.performInfo = JSON.parse(info)
|
||||
const jl = Math.floor((that.performInfo.qjjl + that.performInfo.dcjl) / 100);
|
||||
if (jl > Number(judgeUI.examMileage)) {
|
||||
that.JudgeEnd()
|
||||
}
|
||||
judgeUI.jl = jl
|
||||
judgeUI.laneSignal = that.performInfo.lane
|
||||
})
|
||||
let beginExamInfo: JudgeBeginObj | undefined = undefined
|
||||
// 3.开始考试
|
||||
if (isTrajectoryOpen) {
|
||||
beginExamInfo = JSON.parse(strArr[1])
|
||||
beginExamInfo && (beginExamInfo.replay = 1)
|
||||
} else {
|
||||
beginExamInfo = await this.GetJudgeBeginData(judgeUI.projects, judgeUI.carType, judgeUI.kssycs, judgeUI.isDdxk, judgeUI.ddxkTime, judgeUI.projectsCenterObj, judgeUI.ddxkKsxmArr, judgeUI.ddxkKfArr, judgeUI.passingScore, judgeUI.wayno, judgeUI.name, judgeUI.lsh, judgeUI.idCard, that.isExam)
|
||||
}
|
||||
if (beginExamInfo) {
|
||||
await examJudgeBeginExam(beginExamInfo);
|
||||
}
|
||||
dConsole.info(JudgeTag, '6.开始考试注册完成')
|
||||
that.avPlayer?.playAudio([judgeUI.singlePlay ? 'voice/ksks.wav' : 'voice/监管成功.mp3'])
|
||||
if (!judgeUI.singlePlay) {
|
||||
that.videoData = await saveStartRecordVideo(`${name}_${kssycs}`, that.context)
|
||||
}
|
||||
judgeUI.draw = true
|
||||
// 处理单机泡轨迹模式
|
||||
if (isTrajectoryOpen) {
|
||||
that.SingleMachineTrajectory(strArr)
|
||||
return
|
||||
}
|
||||
};
|
||||
|
||||
public async Judging(strData: string, callBack: Function, judgeUI: JudgePage, that: JudgeBusiness) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
public async JudgeEnd(judgeUI: JudgePage, that: JudgeBusiness, isManual?: boolean) {
|
||||
const isAllProjectsEnd = judgeUI.isAllProjectsEnd
|
||||
const examSubject = judgeUI.examSubject
|
||||
const singlePlay = judgeUI.singlePlay
|
||||
const totalScore = Number(judgeUI.totalScore)
|
||||
const judgeConfigObj = judgeUI.judgeConfigObj
|
||||
const examMileage = Number(judgeUI.examMileage)
|
||||
const passingScore = Number(judgeUI.passingScore)
|
||||
const jl = judgeUI.jl
|
||||
if (that.isExamEnd) {
|
||||
return
|
||||
}
|
||||
if (isManual) {
|
||||
// 考试不合格
|
||||
await examJudgeEndExam()
|
||||
that.isExamEnd = true
|
||||
that.isManual = true
|
||||
} else {
|
||||
const param302: number = Reflect.get(judgeConfigObj, '302')
|
||||
const param342: number = Reflect.get(judgeConfigObj, '342')
|
||||
const param512: number[] = (Reflect.get(judgeConfigObj, '512') || '').split(',');
|
||||
|
||||
//单机模式
|
||||
if (singlePlay) {
|
||||
dConsole.info(JudgeTag + ' 单机模式结束 => ', isAllProjectsEnd)
|
||||
if (isAllProjectsEnd && jl >= examMileage) {
|
||||
//成绩合格
|
||||
if (totalScore >= passingScore && !that.isEndTip) {
|
||||
if (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 (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 (examSubject == '3' && param302 == 1) {
|
||||
that.avPlayer?.playAudio([`voice/考试结束.mp3`]);
|
||||
return
|
||||
}
|
||||
await examJudgeEndExam()
|
||||
that.isExamEnd = true
|
||||
return
|
||||
}
|
||||
|
||||
//成绩合格
|
||||
if (isAllProjectsEnd && totalScore >= passingScore && !that.isEndTip) {
|
||||
if (examSubject == '2') {
|
||||
await examJudgeEndExam()
|
||||
that.isExamEnd = true
|
||||
return
|
||||
}
|
||||
|
||||
//考试里程判断
|
||||
if (examSubject == '3' && jl < examMileage) {
|
||||
return
|
||||
}
|
||||
|
||||
//考试合格自动退出
|
||||
if (examSubject == '3' && (param302 == 4 || param302 == 7) || param302 == 8) {
|
||||
await examJudgeEndExam()
|
||||
that.isExamEnd = true
|
||||
return
|
||||
}
|
||||
|
||||
if (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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
@ -1,8 +1,9 @@
|
||||
import { JudgeUI, Project, SYSTEM_PARAM, } from '../../model'
|
||||
import { Project, SYSTEM_PARAM, } from '../../model'
|
||||
import JudgeBusiness from './JudgeBusiness'
|
||||
import { JudgePage } from "../Judge"
|
||||
|
||||
|
||||
export interface GetSysSetResult {
|
||||
export interface GetSysSetResult {
|
||||
totalScore: number
|
||||
wayno: number
|
||||
mockLight: boolean
|
||||
@ -19,5 +20,7 @@ export interface GetSysSetResult {
|
||||
|
||||
export interface BaseJudge {
|
||||
JudgeInit: (mode: number, carName: string) => Promise<GetSysSetResult>
|
||||
JudgeStart: (callBack: Function, judgeUI: JudgeUI, that: JudgeBusiness) => void
|
||||
JudgeStart: (callBack: Function, judgeUI: JudgePage, that: JudgeBusiness) => void
|
||||
Judging: (strData: string, callBack: Function, judgeUI: JudgePage, that: JudgeBusiness) => void
|
||||
JudgeEnd: (judgeUI: JudgePage, that: JudgeBusiness, isManual?: boolean) => void
|
||||
}
|
||||
@ -1,20 +1,18 @@
|
||||
{
|
||||
"lockfileVersion": 2,
|
||||
"lockfileVersion": 1,
|
||||
"ATTENTION": "THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.",
|
||||
"specifiers": {
|
||||
"@ohos/crypto-js@2.0.3": "@ohos/crypto-js@2.0.3",
|
||||
"@ohos/hypium@1.0.19": "@ohos/hypium@1.0.19"
|
||||
},
|
||||
"packages": {
|
||||
"@ohos/hypium@1.0.19": {
|
||||
"resolved": "https://ohpm.openharmony.cn/ohpm/@ohos/hypium/-/hypium-1.0.19.har",
|
||||
"integrity": "sha512-cEjDgLFCm3cWZDeRXk7agBUkPqjWxUo6AQeiu0gEkb3J8ESqlduQLSIXeo3cCsm8U/asL7iKjF85ZyOuufAGSQ==",
|
||||
"registryType": "ohpm"
|
||||
},
|
||||
"@ohos/crypto-js@2.0.3": {
|
||||
"resolved": "https://ohpm.openharmony.cn/ohpm/@ohos/crypto-js/-/crypto-js-2.0.3.har",
|
||||
"integrity": "sha512-LuHaR1kD5PxnOXnuR1fWvPwGtbed9Q/QGzk6JOh8y5Wdzvi8brPesODZiaWf9scOVRHsbTPOtZw91vWB35p1vQ==",
|
||||
"registryType": "ohpm"
|
||||
"integrity": "sha512-LuHaR1kD5PxnOXnuR1fWvPwGtbed9Q/QGzk6JOh8y5Wdzvi8brPesODZiaWf9scOVRHsbTPOtZw91vWB35p1vQ=="
|
||||
},
|
||||
"@ohos/hypium@1.0.19": {
|
||||
"resolved": "https://ohpm.openharmony.cn/ohpm/@ohos/hypium/-/hypium-1.0.19.har",
|
||||
"integrity": "sha512-cEjDgLFCm3cWZDeRXk7agBUkPqjWxUo6AQeiu0gEkb3J8ESqlduQLSIXeo3cCsm8U/asL7iKjF85ZyOuufAGSQ=="
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user