fix:过程数据方法补全部分
This commit is contained in:
		
							parent
							
								
									5bf2990a2c
								
							
						
					
					
						commit
						bc5a15b59a
					
				| @ -184,6 +184,37 @@ export default class Judge { | ||||
|   private isExamEnd: boolean | ||||
|   // 是否发送udp | ||||
|   private isUdpEnd: boolean = false | ||||
|   // 处理udp plc信号 | ||||
|   handleUdp = async (msg: string) => { | ||||
|     const stachArr = msg.split(',') | ||||
|     if (stachArr[0] != '#DN_GD' || this.isUdpEnd) { | ||||
|       return | ||||
|     } | ||||
|     const plcData = await this.getPlcData(msg); | ||||
|     // 4.过程数据 | ||||
|     await this.fileLog?.setExamJudgeData(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 | ||||
|   //UDP服务序列号 | ||||
| @ -278,37 +309,6 @@ export default class Judge { | ||||
|     AppStorage.setOrCreate('msgStr', plc) | ||||
|     return tempData | ||||
|   } | ||||
|   // 处理udp plc信号 | ||||
|   handleUdp = async (msg: string) => { | ||||
|     const stachArr = msg.split(',') | ||||
|     if (stachArr[0] != '#DN_GD' || this.isUdpEnd) { | ||||
|       return | ||||
|     } | ||||
|     const plcData = await this.getPlcData(msg); | ||||
|     // 4.过程数据 | ||||
|     await this.fileLog?.setExamJudgeData(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 isEndTip: boolean = false; | ||||
|   //本地轨迹回放地址 | ||||
|   private trajectoryPath: string | ||||
| @ -328,40 +328,108 @@ export default class Judge { | ||||
|       const code = await writeObjectOut(JSON.parse(examDataStr), "", this.context); | ||||
|     } | ||||
|   } | ||||
|   // 处理轨迹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) | ||||
|   // 项目开始接口同步 | ||||
|   beginProject = async (ksxm: number) => { | ||||
|     const carInfo = AppStorage.get<CarInfoType>('carInfo'); | ||||
|     const judgeUI = this.judgeUI | ||||
|     const time = GetCurrentTime(); | ||||
|     const project: ProjectInfo = Reflect.get(judgeUI.projectsObj, ksxm) | ||||
|     const sbxh = this.getSbbm(ksxm, this.xmxh) | ||||
| 
 | ||||
|     }, 200) | ||||
|     // TODO 定时器缺失 | ||||
|     // globalThis.judgeTimer = judgeTimer; | ||||
|     const drvexam: DrvexamType = { | ||||
|       lsh: judgeUI.lsh, | ||||
|       kskm: carInfo?.examSubject || "2", | ||||
|       sfzmhm: judgeUI.idCard, | ||||
|       ksxm: project.projectCodeCenter, | ||||
|       sbxh, | ||||
|       ksxl: judgeUI.xldm, | ||||
|       kchp: encodeURI(carInfo?.plateNo || ""), | ||||
|       ksdd: encodeURI(judgeUI.ksdd), | ||||
|       kslx: encodeURI(judgeUI.kslx) || '', | ||||
|       kssj: time | ||||
|     } | ||||
|     const data: RegulatoryInterfaceParams = { | ||||
|       //系统类别   接口序列号             接口标识 | ||||
|       xtlb: '17', | ||||
|       jkxlh: judgeUI.serialNumber, | ||||
|       jkid: '17C52', | ||||
|       drvexam | ||||
|     } | ||||
|     const temp: WR = await this.sendWriteObjectOut(data, this.filePath) | ||||
|     dConsole.info(JudgeTag, '项目开始 end') | ||||
|     if (temp.code === 2300007) { | ||||
|       this.isJudgeDisConnect = true; | ||||
|     } | ||||
|     UploadRegulatoryCodeConversion('17C52', temp.code || 0) | ||||
|   } | ||||
|   // 项目结束接口同步 | ||||
|   endProject = async (ksxm: number) => { | ||||
|     const carInfo = AppStorage.get<CarInfoType>('carInfo'); | ||||
|     const judgeUI = this.judgeUI; | ||||
|     const time = GetCurrentTime(); | ||||
|     const project: ProjectInfo = Reflect.get(judgeUI.projectsObj, ksxm) | ||||
|     const sbxh = judgeUI.examSubject == '3' ? undefined : this.getSbbm(ksxm, this.xmxh) | ||||
| 
 | ||||
|     const drvexam: DrvexamType = { | ||||
|       lsh: judgeUI.lsh, | ||||
|       kskm: carInfo?.examSubject || "2", | ||||
|       sfzmhm: judgeUI.idCard, | ||||
|       ksxm: project.projectCodeCenter, | ||||
|       sbxh, | ||||
|       //TODO 操作类型 1:正常 0:撤销该考试记录 | ||||
|       czlx: '1', | ||||
|       ksxl: judgeUI.xldm, | ||||
|       kchp: encodeURI(carInfo?.plateNo || ""), | ||||
|       ksdd: encodeURI(judgeUI.ksdd), | ||||
|       kslx: encodeURI(judgeUI.kslx) || '', | ||||
|       jssj: time | ||||
|     } | ||||
|     const data: RegulatoryInterfaceParams = { | ||||
|       xtlb: '17', | ||||
|       jkxlh: judgeUI.serialNumber, | ||||
|       jkid: '17C55', | ||||
|       drvexam | ||||
|     } | ||||
|     const temp: WR = await this.sendWriteObjectOut(data, this.filePath) | ||||
|     if (temp.code === 2300007) { | ||||
|       this.isJudgeDisConnect = true; | ||||
|     } | ||||
|     dConsole.info(JudgeTag, '项目结束 end') | ||||
|     UploadRegulatoryCodeConversion('17C55', temp.code || 0) | ||||
|   } | ||||
|   // 考试过程照片 | ||||
|   uploadProgressPhoto = async (ksxm: number) => { | ||||
|     const time = GetCurrentTime(); | ||||
|     const judgeUI = this.judgeUI | ||||
|     const plcData = this.plcData | ||||
|     const photoBase64 = await this.getPhoto(); | ||||
|     const carInfo = AppStorage.get<CarInfoType>('carInfo'); | ||||
| 
 | ||||
|     const project: ProjectInfo = Reflect.get(judgeUI.projectsObj, ksxm) | ||||
|     const judgeConfig_305: number = Reflect.get(judgeUI.judgeConfigObj, '305') | ||||
|     const drvexam: DrvexamType = { | ||||
|       lsh: judgeUI.lsh, | ||||
|       kskm: carInfo?.examSubject || "2", | ||||
|       ksxm: project.projectCodeCenter, | ||||
|       sfzmhm: judgeUI.idCard, | ||||
|       kchp: encodeURI(carInfo?.plateNo || ""), | ||||
|       zpsj: time, | ||||
|       zp: photoBase64, | ||||
|       cs: Math.floor((judgeConfig_305 == 0 ? (plcData?.gps?.sd || 0) : (plcData?.sensor?.cs || 0)) * 1.852), | ||||
|       ksdd: encodeURI(judgeUI.ksdd) | ||||
|     } | ||||
|     const data: RegulatoryInterfaceParams = { | ||||
|       xtlb: '17', | ||||
|       jkxlh: judgeUI.serialNumber, | ||||
|       jkid: '17C54', | ||||
|       drvexam | ||||
|     }; | ||||
|     const temp: WR = await this.sendWriteObjectOut(data, this.filePath); | ||||
|     if (temp.code === 2300007) { | ||||
|       this.isJudgeDisConnect = true | ||||
|     } | ||||
|     UploadRegulatoryCodeConversion('17C54', temp.code || 0) | ||||
|     dConsole.info(JudgeTag, '上传照片 end') | ||||
|   } | ||||
|   // 校验考试是否结束 | ||||
|   checkExamIsEnd = async (isManual?: boolean) => { | ||||
| @ -478,33 +546,6 @@ export default class Judge { | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|   //调用监管接口 | ||||
|   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 artSubject3ProjectsCodesArr: number[] = [3, 9, 4, 10, 12, 11] | ||||
|   private lane: LANE = { | ||||
|     road: '', num: 0, count: 0 | ||||
|   } | ||||
|   private videoData?: RecordHandleType | ||||
|   private disConnectNum: number = 0; | ||||
|   // 检测扣分、结束项目时该项目是否开始 | ||||
|   checkProjectIsStart = async (xmdm: number, currentType: 1 | 2, kf?: MarkRule) => { | ||||
|     if (xmdm == 20) { | ||||
| @ -559,111 +600,70 @@ export default class Judge { | ||||
|       return true | ||||
|     } | ||||
|   } | ||||
|   // 项目开始接口同步 | ||||
|   beginProject = async (ksxm: number) => { | ||||
|     const carInfo = AppStorage.get<CarInfoType>('carInfo'); | ||||
|     const judgeUI = this.judgeUI | ||||
|     const time = GetCurrentTime(); | ||||
|     const project: ProjectInfo = Reflect.get(judgeUI.projectsObj, ksxm) | ||||
|     const sbxh = this.getSbbm(ksxm, this.xmxh) | ||||
|   // 处理轨迹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) | ||||
| 
 | ||||
|     const drvexam: DrvexamType = { | ||||
|       lsh: judgeUI.lsh, | ||||
|       kskm: carInfo?.examSubject || "2", | ||||
|       sfzmhm: judgeUI.idCard, | ||||
|       ksxm: project.projectCodeCenter, | ||||
|       sbxh, | ||||
|       ksxl: judgeUI.xldm, | ||||
|       kchp: encodeURI(carInfo?.plateNo || ""), | ||||
|       ksdd: encodeURI(judgeUI.ksdd), | ||||
|       kslx: encodeURI(judgeUI.kslx) || '', | ||||
|       kssj: time | ||||
|     }, 200) | ||||
|     // TODO 定时器缺失 | ||||
|     // globalThis.judgeTimer = judgeTimer; | ||||
|   } | ||||
|     const data: RegulatoryInterfaceParams = { | ||||
|       //系统类别   接口序列号             接口标识 | ||||
|       xtlb: '17', | ||||
|       jkxlh: judgeUI.serialNumber, | ||||
|       jkid: '17C52', | ||||
|       drvexam | ||||
|     } | ||||
|     const temp: WR = await this.sendWriteObjectOut(data, this.filePath) | ||||
|     dConsole.info(JudgeTag, '项目开始 end') | ||||
|     if (temp.code === 2300007) { | ||||
|       this.isJudgeDisConnect = true; | ||||
|     } | ||||
|     UploadRegulatoryCodeConversion('17C52', temp.code || 0) | ||||
|   } | ||||
|   // 项目结束接口同步 | ||||
|   endProject = async (ksxm: number) => { | ||||
|     const carInfo = AppStorage.get<CarInfoType>('carInfo'); | ||||
|     const judgeUI = this.judgeUI; | ||||
|     const time = GetCurrentTime(); | ||||
|     const project: ProjectInfo = Reflect.get(judgeUI.projectsObj, ksxm) | ||||
|     const sbxh = judgeUI.examSubject == '3' ? undefined : this.getSbbm(ksxm, this.xmxh) | ||||
| 
 | ||||
|     const drvexam: DrvexamType = { | ||||
|       lsh: judgeUI.lsh, | ||||
|       kskm: carInfo?.examSubject || "2", | ||||
|       sfzmhm: judgeUI.idCard, | ||||
|       ksxm: project.projectCodeCenter, | ||||
|       sbxh, | ||||
|       //TODO 操作类型 1:正常 0:撤销该考试记录 | ||||
|       czlx: '1', | ||||
|       ksxl: judgeUI.xldm, | ||||
|       kchp: encodeURI(carInfo?.plateNo || ""), | ||||
|       ksdd: encodeURI(judgeUI.ksdd), | ||||
|       kslx: encodeURI(judgeUI.kslx) || '', | ||||
|       jssj: time | ||||
|     } | ||||
|     const data: RegulatoryInterfaceParams = { | ||||
|       xtlb: '17', | ||||
|       jkxlh: judgeUI.serialNumber, | ||||
|       jkid: '17C55', | ||||
|       drvexam | ||||
|     } | ||||
|     const temp: WR = await this.sendWriteObjectOut(data, this.filePath) | ||||
|     if (temp.code === 2300007) { | ||||
|       this.isJudgeDisConnect = true; | ||||
|     } | ||||
|     dConsole.info(JudgeTag, '项目结束 end') | ||||
|     UploadRegulatoryCodeConversion('17C55', temp.code || 0) | ||||
|   } | ||||
|   // 考试过程照片 | ||||
|   uploadProgressPhoto = async (ksxm: number) => { | ||||
|     const time = GetCurrentTime(); | ||||
|     const judgeUI = this.judgeUI | ||||
|     const plcData = this.plcData | ||||
|     const photoBase64 = await this.getPhoto(); | ||||
|     const carInfo = AppStorage.get<CarInfoType>('carInfo'); | ||||
| 
 | ||||
|     const project: ProjectInfo = Reflect.get(judgeUI.projectsObj, ksxm) | ||||
|     const judgeConfig_305: number = Reflect.get(judgeUI.judgeConfigObj, '305') | ||||
|     const drvexam: DrvexamType = { | ||||
|       lsh: judgeUI.lsh, | ||||
|       kskm: carInfo?.examSubject || "2", | ||||
|       ksxm: project.projectCodeCenter, | ||||
|       sfzmhm: judgeUI.idCard, | ||||
|       kchp: encodeURI(carInfo?.plateNo || ""), | ||||
|       zpsj: time, | ||||
|       zp: photoBase64, | ||||
|       cs: Math.floor((judgeConfig_305 == 0 ? (plcData?.gps?.sd || 0) : (plcData?.sensor?.cs || 0)) * 1.852), | ||||
|       ksdd: encodeURI(judgeUI.ksdd) | ||||
|     } | ||||
|     const data: RegulatoryInterfaceParams = { | ||||
|       xtlb: '17', | ||||
|       jkxlh: judgeUI.serialNumber, | ||||
|       jkid: '17C54', | ||||
|       drvexam | ||||
|     }; | ||||
|     const temp: WR = await this.sendWriteObjectOut(data, this.filePath); | ||||
|     if (temp.code === 2300007) { | ||||
|       this.isJudgeDisConnect = true | ||||
|     } | ||||
|     UploadRegulatoryCodeConversion('17C54', temp.code || 0) | ||||
|     dConsole.info(JudgeTag, '上传照片 end') | ||||
|   private artSubject3ProjectsCodesArr: number[] = [3, 9, 4, 10, 12, 11] | ||||
|   private lane: LANE = { | ||||
|     road: '', num: 0, count: 0 | ||||
|   } | ||||
|   private videoData?: RecordHandleType | ||||
|   //当前科目二的考试项目 | ||||
|   private deductedPopShowTimer: number = 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 | ||||
|   } | ||||
| 
 | ||||
|   constructor(judgeUI: JudgeUI) { | ||||
|     this.serialIndex = 1; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user