Merge branch 'dev' of http://88.22.24.105:3000/harmony_car/subject-two into dev
This commit is contained in:
commit
e148b3a5d4
@ -32,10 +32,10 @@ export default async function writeObjectOutNew(data,filePath): Promise<WR> {
|
||||
fileUtil.editFile(`${filePath}/wuxi_exam_data.txt`,JSON.stringify({
|
||||
wglb,jkxlh,glbm,jgbh,sjbs,
|
||||
data:params.data,
|
||||
file:params.file,
|
||||
file:{...params.file,param:[]},
|
||||
}));
|
||||
|
||||
return await request({
|
||||
const temp = await request({
|
||||
host: globalThis.JGHOST,
|
||||
method: 'post',
|
||||
//是否是新中心
|
||||
@ -61,6 +61,12 @@ export default async function writeObjectOutNew(data,filePath): Promise<WR> {
|
||||
</SOAP-ENV:Body>
|
||||
</SOAP-ENV:Envelope>`,
|
||||
})
|
||||
if(filePath){
|
||||
const fileUtil = new FileUtil(globalThis.context);
|
||||
await fileUtil.initFolder(filePath);
|
||||
fileUtil.editFile(`${filePath}/wuxi_exam_data.txt`,JSON.stringify(temp) +`\n`);
|
||||
}
|
||||
return temp
|
||||
}
|
||||
|
||||
export async function getParams(jkid, drvexam) {
|
||||
|
||||
@ -4,6 +4,7 @@ import { getSyncData } from '../service/initable'
|
||||
import { getChuankouFn } from '../../common/service/indexService'
|
||||
import FileUtil from '../../common/utils/File'
|
||||
import { GlobalConfig } from '../../config/index'
|
||||
import emitter from '@ohos.events.emitter';
|
||||
|
||||
export async function sendMsg(val) {
|
||||
// globalThis.udpClient1&&globalThis.udpClient1.sendMsg(val)
|
||||
@ -178,6 +179,15 @@ export async function getUDP2(context,errorFlag?) {
|
||||
console.log('getUDPOnmessageByGlobalUDP2Message')
|
||||
if (val.id == '32') {
|
||||
globalThis.signNum = val.body[1]
|
||||
if(val.body[0] == 5){
|
||||
|
||||
}
|
||||
if(val.body[0] == 11){
|
||||
globalThis.udpEvent.sendBeginExam()
|
||||
}
|
||||
if(val.body[0] == 12){
|
||||
globalThis.udpEvent.sendEndExam()
|
||||
}
|
||||
|
||||
} else if (val.id == '46') {
|
||||
let tmpList = []
|
||||
@ -298,11 +308,18 @@ export async function setJudgeUdp() {
|
||||
|
||||
if (config && config.udplocalIp) {
|
||||
const {udplocalIp} = config;
|
||||
const udpClientbyCenter: UdpClientByCenter = new UdpClientByCenter(udplocalIp, '8080', globalThis.carInfo?.udpAddress, globalThis.carInfo?.hintPort)
|
||||
const udpClientbyCenter: UdpClientByCenter = new UdpClientByCenter(
|
||||
udplocalIp, '8080',
|
||||
globalThis.carInfo?.udpAddress,
|
||||
globalThis.carInfo?.hintPort
|
||||
)
|
||||
|
||||
await udpClientbyCenter.onError_Callback(()=>{})
|
||||
await udpClientbyCenter.bindUdp()
|
||||
await udpClientbyCenter.onMessage_2((val) => {})
|
||||
|
||||
//远程监听开始考试、结束考试、扣分指令
|
||||
|
||||
// globalThis.judgeUdpClient = udpClientbyCenter;
|
||||
return {
|
||||
send(bytes) {
|
||||
@ -315,7 +332,15 @@ export async function setJudgeUdp() {
|
||||
})
|
||||
currentUdpIndex = udpIndex
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
//远程查询扣分项
|
||||
//远程确认扣分
|
||||
confirmKF(){
|
||||
|
||||
},
|
||||
//远程开始考试
|
||||
//远程结束考试
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
71
entry/src/main/ets/common/utils/UdpEvent.ets
Normal file
71
entry/src/main/ets/common/utils/UdpEvent.ets
Normal file
@ -0,0 +1,71 @@
|
||||
import emitter from '@ohos.events.emitter';
|
||||
|
||||
export const EVENTID = {
|
||||
//远程扣分处理
|
||||
kfEventId:35,
|
||||
//远程扣分查询
|
||||
kfAskEventId:36,
|
||||
//远程扣分确认
|
||||
kfConfirmEventId:37,
|
||||
//远程开始考试
|
||||
beginExamEventId:11,
|
||||
//远程结束考试
|
||||
endExamEventId:12
|
||||
}
|
||||
|
||||
export default class JudgeEmitter{
|
||||
|
||||
private beginExamCallBack:Function = ()=>{}
|
||||
private endExamCallBack:Function = ()=>{}
|
||||
|
||||
constructor() {
|
||||
this.init()
|
||||
}
|
||||
|
||||
init = async ()=>{
|
||||
emitter.on({eventId:EVENTID.beginExamEventId}, () => {
|
||||
this?.beginExamCallBack()
|
||||
});
|
||||
emitter.on({eventId:EVENTID.endExamEventId}, () => {
|
||||
this?.endExamCallBack()
|
||||
});
|
||||
emitter.on({eventId:EVENTID.kfEventId}, () => {
|
||||
this?.endExamCallBack()
|
||||
});
|
||||
}
|
||||
|
||||
//监听开始考试
|
||||
public onBeginExam = async (callBack?:Function)=>{
|
||||
this.beginExamCallBack = callBack
|
||||
}
|
||||
|
||||
//监听结束考试
|
||||
public onEndExam = async (callBack?:Function)=>{
|
||||
this.endExamCallBack = callBack
|
||||
}
|
||||
|
||||
//监听扣分处理
|
||||
public onKfExam= async (callBack?:Function)=>{
|
||||
this.endExamCallBack = callBack
|
||||
}
|
||||
|
||||
//开始考试
|
||||
public sendBeginExam = async(content)=>{
|
||||
emitter.emit({eventId:EVENTID.beginExamEventId}, {
|
||||
data:{ content }
|
||||
});
|
||||
}
|
||||
|
||||
//结束考试
|
||||
public sendEndExam = async(content)=>{
|
||||
emitter.emit({eventId:EVENTID.endExamEventId}, {
|
||||
data:{content}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -148,7 +148,7 @@ function handleCenterCode(msgXml,isNewCenter){
|
||||
const msg = JSON.parse(msgXml);
|
||||
const result = msg?.data[0]?.result;
|
||||
if(result){
|
||||
const {code,message,keystr} = result
|
||||
const {code,message,retval} = result
|
||||
if(code != '1'){
|
||||
const rMessage = decodeURIComponent(message as string)
|
||||
// globalThis.title=rMessage
|
||||
@ -160,7 +160,7 @@ function handleCenterCode(msgXml,isNewCenter){
|
||||
});
|
||||
return {code,message}
|
||||
}else{
|
||||
return { code ,keystr}
|
||||
return { code ,keystr:retval}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -168,9 +168,8 @@ function handleCenterCode(msgXml,isNewCenter){
|
||||
//正则匹配code message字段
|
||||
const [code,message,keystr] = [/<code>(.*)<\/code>/i,/<message>(.*)<\/message>/i,/<keystr>(.*)<\/keystr>/i].map(pattern=>{
|
||||
const patternArr = pattern.exec(msgXml);
|
||||
return patternArr[1]
|
||||
return patternArr && patternArr[1]
|
||||
});
|
||||
|
||||
console.info('surenjun =>request-prev',keystr)
|
||||
|
||||
if(code != '1'){
|
||||
|
||||
@ -18,6 +18,7 @@ import { voiceService } from '../common/service/voiceService';
|
||||
import errorMsgDialog from './compontents/errorMsgDialog'
|
||||
import { getSyncData } from '../common/service/initable';
|
||||
import GetDistance from '../common/utils/GetDistance'
|
||||
import UdpEvent from '../common/utils/UdpEvent'
|
||||
import UIAbility from '@ohos.app.ability.UIAbility';
|
||||
import { endRecordVideo, getUserAlbumItemByDisplayName, saveStartRecordVideo } from '../common/service/videoService';
|
||||
|
||||
@ -299,9 +300,7 @@ struct Index {
|
||||
this.loading = false
|
||||
globalThis.lsh = '1111111111111'
|
||||
globalThis.errorDialog = this.errorDialog
|
||||
const distanceClass = new GetDistance(globalThis.context)
|
||||
await distanceClass.initFolder()
|
||||
globalThis.distanceClass = distanceClass
|
||||
globalThis.udpEvent = new UdpEvent();
|
||||
}
|
||||
|
||||
async testXMLToJSONInWorker() {
|
||||
@ -443,6 +442,12 @@ struct Index {
|
||||
getTCP()
|
||||
this.deviceId = globalThis.carInfo.carNo
|
||||
await setCurrentTime();
|
||||
if(!globalThis.distanceClass){
|
||||
const distanceClass = new GetDistance(globalThis.context)
|
||||
await distanceClass.initFolder()
|
||||
globalThis.distanceClass = distanceClass
|
||||
console.info('surenjun','distanceClass=>初始化完成')
|
||||
}
|
||||
this.carNum = globalThis.carInfo.plateNo;
|
||||
this.version = globalThis.version;
|
||||
this.hasAuth = globalThis.hasAuth;
|
||||
|
||||
@ -652,6 +652,7 @@ struct UserInfo {
|
||||
})
|
||||
avPlayer.playAudio(['voice/监管审核未通过.mp3']);
|
||||
this.isLoadingPopupVisible = false
|
||||
this.isExamStart = false
|
||||
return
|
||||
}
|
||||
this.currentUser.id = '0'
|
||||
|
||||
@ -36,6 +36,7 @@ export default struct DeductedPopup {
|
||||
kfdm: string,
|
||||
markreal: number,
|
||||
markcatalog: string
|
||||
score:number
|
||||
}[] = []
|
||||
//开始考试前判绕车一周评判是否开启
|
||||
@State isOpen: boolean = false
|
||||
@ -126,7 +127,7 @@ export default struct DeductedPopup {
|
||||
const index = this.currentIndex ? this.currentUniversalPageIndex : this.currentPageIndex;
|
||||
const mark = this.universalMarkRules[index * 7 + this.selectedLine];
|
||||
const {judgeConfigObj,kssycs,avPlayer,judgeTask} = this;
|
||||
this.kfdmArr.push({ xmdm: 1, kfdm: mark.markserial, markreal: mark.markreal, markcatalog: mark.markcatalog })
|
||||
this.kfdmArr.push({ xmdm: 1, kfdm: mark.markserial, markreal: mark.markreal, markcatalog: mark.markcatalog ,score:mark.score})
|
||||
const kfdmArr = this.kfdmArr
|
||||
|
||||
//计算总扣分
|
||||
@ -142,17 +143,12 @@ export default struct DeductedPopup {
|
||||
})))
|
||||
|
||||
if (judgeConfigObj['418'] == '1' || judgeConfig.kfVoiceOpen) {
|
||||
avPlayer.playAudio([`voice/${mark.markcatalog}.mp3`], false, () => {
|
||||
avPlayer.playAudio([`voice/${mark.markcatalog}.mp3`,`voice/mark_${Math.abs(mark.score)}.mp3`], false, () => {
|
||||
this.closePopup(true)
|
||||
});
|
||||
return
|
||||
}
|
||||
|
||||
if (singlePlay) {
|
||||
return
|
||||
} else {
|
||||
this.closePopup()
|
||||
}
|
||||
this.closePopup();
|
||||
return;
|
||||
|
||||
if (score < 90) {
|
||||
|
||||
@ -24,7 +24,8 @@ export interface MarkRule {
|
||||
kfxh?: string
|
||||
onlyoneid?: number
|
||||
nocancelid?: number
|
||||
gps_sid?: number
|
||||
gps_sid?: number,
|
||||
score?:number
|
||||
}
|
||||
|
||||
export interface KF{
|
||||
|
||||
@ -14,6 +14,7 @@ import { judgeConfig } from './utils/judgeConfig';
|
||||
import { uploadExamProgressData, writeObjectOut } from '../../api/judge';
|
||||
import UsbService from '../../common/service/usbService';
|
||||
import { LANE,KF } from '../judgeSDK/api/judgeSDK.d';
|
||||
import {saveStartRecordVideo,endRecordVideo} from '../../common/service/videoService'
|
||||
import {
|
||||
Array2Byte,
|
||||
convertGpsCoord2,
|
||||
@ -103,7 +104,7 @@ export default class Judge {
|
||||
//开始评判
|
||||
private async judging(callBack: Function) {
|
||||
const {judgeUI} = this;
|
||||
const { name, lsh, idCard} = judgeUI;
|
||||
const { name, lsh, idCard,kssycs} = judgeUI;
|
||||
const fileLog = new FileLog(judgeUI.context);
|
||||
const filePath = await fileLog.initFileLogo({
|
||||
name, lsh, idCard
|
||||
@ -165,6 +166,10 @@ export default class Judge {
|
||||
console.info(judgeTag, '6.开始考试注册完成')
|
||||
avPlayer.playAudio([globalThis.singlePlay ? 'voice/ksks.WAV' : 'voice/监管成功.mp3'])
|
||||
|
||||
if(!globalThis.singlePlay){
|
||||
this.videoData = await saveStartRecordVideo(`${name}_${kssycs}`)
|
||||
}
|
||||
|
||||
const {examSubject,projectsObj} = this.judgeUI
|
||||
if(examSubject == 3){
|
||||
//不做模拟灯光,需要做上车准备 =>(请上车准备)
|
||||
@ -459,7 +464,7 @@ export default class Judge {
|
||||
});
|
||||
|
||||
//语音播报
|
||||
this.goVoiceAnnounce(event, xmdm, this.kfArr, xmjs, ksjs)
|
||||
this.goVoiceAnnounce(event, xmdm, this.kfArr, xmjs, ksjs,xmxh)
|
||||
|
||||
//更新UI
|
||||
if (event == 1 || event == 2 || event == 3 || event == 6) {
|
||||
@ -469,7 +474,7 @@ export default class Judge {
|
||||
}
|
||||
|
||||
// 更改考试状态
|
||||
goVoiceAnnounce = async (event, xmdm, kf, xmjs, ksjs) => {
|
||||
goVoiceAnnounce = async (event, xmdm, kf, xmjs, ksjs,xmxh) => {
|
||||
const {
|
||||
beginProject,
|
||||
pointsDedute,
|
||||
@ -493,7 +498,7 @@ export default class Judge {
|
||||
case 1:
|
||||
const code = projectsObj[xmdm].projectCodeCenter;
|
||||
const isEnd = projectsObj[xmdm].isEnd;
|
||||
const kmCode = getKmProjectVoice(code, 1, judgeConfigObj, lane)
|
||||
const kmCode = getKmProjectVoice(code, 1, judgeConfigObj, lane,xmxh)
|
||||
if (!ignoreVoiceCodeArr.includes(code)) {
|
||||
kmCode && avPlayer.playAudio([`voice/${kmCode}.mp3`],true)
|
||||
}
|
||||
@ -515,7 +520,7 @@ export default class Judge {
|
||||
case 2:{
|
||||
const endCode = projectsObj[xmdm].projectCodeCenter;
|
||||
const projectIsEnd = projectsObj[xmdm].isEnd;
|
||||
const endKmCode = getKmProjectVoice(endCode, 2, judgeConfigObj, lane)
|
||||
const endKmCode = getKmProjectVoice(endCode, 2, judgeConfigObj, lane,xmxh)
|
||||
if (!ignoreVoiceCodeArr.includes(endCode) && examSubject == 3) {
|
||||
endKmCode && avPlayer.playAudio([`voice/${endKmCode}.mp3`])
|
||||
}
|
||||
@ -1040,9 +1045,9 @@ export default class Judge {
|
||||
|
||||
console.info(judgeTag, `考试成绩:${totalScore}`)
|
||||
if(!singlePlay){
|
||||
await endRecordVideo(this.videoData)
|
||||
await uploadProgressData();
|
||||
}
|
||||
|
||||
//语音播放扣分项
|
||||
let score = 0;
|
||||
if (kfArr.length) {
|
||||
@ -1633,4 +1638,5 @@ export default class Judge {
|
||||
private lane: LANE = {
|
||||
road: '', num: 0, count: 0
|
||||
}
|
||||
private videoData:any
|
||||
}
|
||||
@ -88,16 +88,17 @@ export function getKmProjectVoice(
|
||||
// 1:项目开始 2:项目结束
|
||||
type: 1 | 2,
|
||||
judgeConfig,
|
||||
lane
|
||||
lane,
|
||||
xmxh
|
||||
) {
|
||||
const carInfo = globalThis.carInfo;
|
||||
const { examSubject } = carInfo;
|
||||
const param506Str = judgeConfig['506']?.split(',') || [];
|
||||
const param512Str = judgeConfig['512']?.split(',') || [];
|
||||
const param544Str = judgeConfig['544'] || 0;
|
||||
const param544Str = judgeConfig['544']?.split(',') || [];
|
||||
const param405Str = judgeConfig['405'] || 0;
|
||||
|
||||
const {num,count} = lane
|
||||
const {num,count,road} = lane
|
||||
if(examSubject == 2){
|
||||
return projectCode
|
||||
}
|
||||
@ -120,8 +121,10 @@ export function getKmProjectVoice(
|
||||
: undefined
|
||||
//直线行驶
|
||||
case 40700 : return type === 1 ? 407001 : undefined
|
||||
//TODO 通过学校 结束param544Str
|
||||
case 41100 : return type === 1 ? (param512Str[2] ==3 ? 411001 : undefined):undefined
|
||||
//通过学校 结束param544Str
|
||||
case 41100 : return type === 1
|
||||
? (param512Str[2] ==3 ? 411001 : undefined)
|
||||
: (param544Str.includes(xmxh) ? undefined : 411004)
|
||||
//通过车站
|
||||
case 41200 : return type === 1 ? (param512Str[2] ==3 ? 412001 : undefined):undefined
|
||||
//通过人行横道
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user