济南修改 #24
@ -28,7 +28,7 @@ import DeviceInfoTable from '../constants/DeviceInfoTable'
|
||||
import USER from '../constants/USER'
|
||||
import util from '@ohos.util';
|
||||
import zlib from '@ohos.zlib';
|
||||
import FileModel from '../../pages/judgeSDK/utils/file-model';
|
||||
import FileModel from '../../pages/judgeSDK/utils/fileModel';
|
||||
// @ts-nocheck
|
||||
//读表
|
||||
//参数平台
|
||||
|
||||
@ -46,22 +46,22 @@ export default class FileUtil{
|
||||
*
|
||||
*/
|
||||
public addFile = async (filePath:string,content:string,type?:string)=>{
|
||||
const { READ_WRITE,CREATE,APPEND }= fs.OpenMode
|
||||
const isExit = fs.accessSync(filePath);
|
||||
//文件存在先删除
|
||||
if(isExit){
|
||||
fs.unlinkSync(filePath);
|
||||
}
|
||||
const { READ_WRITE,CREATE,APPEND,TRUNC }= fs.OpenMode
|
||||
try {
|
||||
let file = fs.openSync(filePath, READ_WRITE | CREATE);
|
||||
//追加写入文件
|
||||
fs.writeSync(file.fd,content)
|
||||
console.log('content',content)
|
||||
let file = fs.openSync(filePath, TRUNC|READ_WRITE |CREATE|APPEND);
|
||||
const option={
|
||||
offset:0,
|
||||
length:content.length,
|
||||
encoding:'utf-8'
|
||||
}
|
||||
fs.writeSync(file.fd,content,option)
|
||||
fs.closeSync(file)
|
||||
console.error(LOGTAG,'写入文件成功')
|
||||
return true
|
||||
|
||||
}catch (e){
|
||||
console.error(LOGTAG,'写入失败',JSON.stringify(e))
|
||||
console.error(LOGTAG,JSON.stringify(e))
|
||||
}
|
||||
}
|
||||
/*
|
||||
@ -72,15 +72,6 @@ export default class FileUtil{
|
||||
const { READ_WRITE,CREATE,APPEND }= fs.OpenMode
|
||||
try {
|
||||
let file = fs.openSync(filePath, READ_WRITE | APPEND |CREATE);
|
||||
let index
|
||||
// if(type=='overWrite'){
|
||||
// //文件覆蓋
|
||||
// index=0
|
||||
// }else{
|
||||
// //文件追加
|
||||
// const str = fs.readTextSync(filePath);
|
||||
// index= str.length
|
||||
// }
|
||||
const newStr = content + '\n'
|
||||
//追加写入文件
|
||||
fs.writeSync(file.fd,newStr)
|
||||
|
||||
@ -40,11 +40,11 @@ export async function getTCP() {
|
||||
hilog.info(0x0000, 'testTag', "valvalval2" + JSON.stringify(val));
|
||||
setTimeout(()=>{
|
||||
globalThis.TcpClient.sendMsg('1002')//1002
|
||||
if(val&&!globalThis.closeUDPSocket){
|
||||
if(globalThis.udpClient && val&&!globalThis.closeUDPSocket){
|
||||
// const msg=val.substring(5,val.length-1)
|
||||
console.log('socketTag[PLC.UdpClient]closeUDPSocket',globalThis.closeUDPSocket)
|
||||
|
||||
globalThis.udpClient?.sendMsg(val)
|
||||
globalThis.udpClient.sendMsg&&globalThis.udpClient?.sendMsg(val)
|
||||
}
|
||||
},1000)
|
||||
|
||||
|
||||
@ -11,7 +11,7 @@ export async function sendMsg(val){
|
||||
export async function getUDP() {
|
||||
getSyncData('IpConfigTable').then((result:Array<any>)=>{
|
||||
if(result.length){
|
||||
if(globalThis.udpClient&&globalThis.udpClient.closeUdp){
|
||||
if(globalThis.udpClient&&!globalThis.closeUDPSocket){
|
||||
globalThis.udpClient.closeUdp(()=>{
|
||||
setTimeout(()=>{
|
||||
globalThis.udpClient.rebindUdp(result[0].udplocalIp, result[0].udplocalIpPort,result[0].udpOppositeIp,result[0].udpOppositeIpPort)
|
||||
@ -42,7 +42,7 @@ export async function getUDP() {
|
||||
export async function getUDP2() {
|
||||
getSyncData('IpConfigTable').then(async (result:Array<any>)=>{
|
||||
if(result.length){
|
||||
if(globalThis.udpClient2&&globalThis.closeHeartSocket){
|
||||
if(globalThis.udpClient2&&!globalThis.closeHeartSocket){
|
||||
|
||||
globalThis.udpClient2.closeUdp(async ()=>{
|
||||
setTimeout(()=>{
|
||||
|
||||
@ -37,7 +37,7 @@ export default class TcpClient {
|
||||
this.localIpPort = localIpPort
|
||||
this.oppositeIpPort = oppositeIpPort
|
||||
console.log(TAG,'tcpreBind', this.localIp,this.localIpPort)
|
||||
let promise=this.tcp.bind({ address: this.localIp, port:parseInt(this.localIpPort), family: 1 }, err => {
|
||||
let promise=this.tcp.bind({ address: this.localIp, port:parseInt(this.localIpPort)}, err => {
|
||||
if (err) {
|
||||
globalThis.getCloseTcp=true
|
||||
hilog.info(0x0000, 'testTag', "tcpreBinderror:" + JSON.stringify(err));
|
||||
@ -60,7 +60,7 @@ export default class TcpClient {
|
||||
bindTcp() {
|
||||
console.log(TAG,'tcpbind',this.localIp,'localIp',this.localIpPort)
|
||||
return new Promise((resolve,reject)=>{
|
||||
let promise=this.tcp.bind({ address: this.localIp, port:parseInt(this.localIpPort), family: 1 }, err => {
|
||||
let promise=this.tcp.bind({ address: this.localIp, port:parseInt(this.localIpPort) }, err => {
|
||||
if (err) {
|
||||
console.log('testTag tcp bind faile');
|
||||
globalThis.getCloseTcp=true
|
||||
@ -86,7 +86,7 @@ export default class TcpClient {
|
||||
connectTcp(){
|
||||
console.log(TAG,'tcpConnect',this.oppositeIp,'localIp',this.oppositeIpPort)
|
||||
return new Promise((resolve,reject)=>{
|
||||
let promise = this.tcp.connect({ address: {address: this.oppositeIp, port: parseInt(this.oppositeIpPort), family: 1} , timeout: 6000});
|
||||
let promise = this.tcp.connect({ address: {address: this.oppositeIp, port: parseInt(this.oppositeIpPort)} , timeout: 6000});
|
||||
promise.then(() => {
|
||||
|
||||
this.tcp.setExtraOptions({
|
||||
|
||||
@ -50,7 +50,7 @@ export default class UdpClient {
|
||||
this.localIpPort = localIpPort
|
||||
this.oppositeIpPort = oppositeIpPort
|
||||
let promise = this.udp.bind({
|
||||
address: this.localIp, port: parseInt(this.localIpPort), family: 1
|
||||
address: this.localIp, port: parseInt(this.localIpPort)
|
||||
});
|
||||
promise.then(() => {
|
||||
globalThis.closeUDPSocket=false
|
||||
@ -67,7 +67,7 @@ export default class UdpClient {
|
||||
let promise = this.udp.bind({
|
||||
// address: '192.168.7.170', port: 20122, family: 1
|
||||
// address: '192.168.7.170', port: 31013, family: 1
|
||||
address: this.localIp, port: parseInt(this.localIpPort), family: 1
|
||||
address: this.localIp, port: parseInt(this.localIpPort)
|
||||
});
|
||||
promise.then(() => {
|
||||
globalThis.closeUDPSocket=false
|
||||
@ -97,7 +97,6 @@ export default class UdpClient {
|
||||
// port: 20022,
|
||||
address: this.oppositeIp,
|
||||
port: parseInt(this.oppositeIpPort),
|
||||
family: 1
|
||||
}
|
||||
});
|
||||
promise.then(() => {
|
||||
@ -126,7 +125,7 @@ export default class UdpClient {
|
||||
|
||||
onMessage(callback?) {
|
||||
this.udp.on('message', value => {
|
||||
console.log(TAG,'udponmessage')
|
||||
// console.log(TAG,'udponmessage')
|
||||
// 收到的是ArrayBuffer 需要进行转换解析
|
||||
globalThis.plcUdpError = false
|
||||
if (value) {
|
||||
@ -179,12 +178,12 @@ export default class UdpClient {
|
||||
if (globalThis.plcUdpError) {
|
||||
num++
|
||||
console.log(TAG,'plc udp信号丢失')
|
||||
if(num==3){
|
||||
await this.bindUdp()
|
||||
await this.sendMsg('111')
|
||||
await this.onMessage(callback)
|
||||
num=0
|
||||
}
|
||||
// if(num==3){
|
||||
// await this.bindUdp()
|
||||
// await this.sendMsg('111')
|
||||
// await this.onMessage(callback)
|
||||
// num=0
|
||||
// }
|
||||
prompt.showToast({
|
||||
message: 'plc udp信号丢失',
|
||||
duration: 2000
|
||||
@ -204,6 +203,8 @@ export default class UdpClient {
|
||||
globalThis.closeUDPSocket=false
|
||||
|
||||
} else {
|
||||
hilog.info(0x0000,TAG, 'udpCLient', 'closeonSuccess');
|
||||
|
||||
globalThis.closeUDPSocket=true
|
||||
|
||||
this.udp.getState((err, data) => {
|
||||
|
||||
@ -223,7 +223,6 @@ export default class UdpClientByCenter {
|
||||
}
|
||||
|
||||
closeUdp(callback) {
|
||||
globalThis.closeHeartSocket=true
|
||||
this.udp.close(err=>{
|
||||
if(err){
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import http from '@ohos.net.http';
|
||||
import convertxml from '@ohos.convertxml';
|
||||
import prompt from '@ohos.prompt'
|
||||
import { sendGreen } from '../../pages/judgeSDK/utils/judge-common';
|
||||
import { sendGreen } from '../../pages/judgeSDK/utils/judgeCommon';
|
||||
import {GlobalConfig} from '../../config/index'
|
||||
const config = {
|
||||
host:GlobalConfig.host,
|
||||
|
||||
@ -31,6 +31,8 @@ export default class EntryAbility extends UIAbility {
|
||||
globalThis.version = '2024.11.22.14'
|
||||
globalThis.judgeVersion = '2024.11.22.14'
|
||||
globalThis.videoVersion= '1.0'
|
||||
globalThis.closeUDPSocket=true
|
||||
globalThis.closeHeartSocket=true
|
||||
// globalThis.version = '2023.12.13.01'
|
||||
// globalThis.judgeVersion = '2023.09.30.1'
|
||||
// globalThis.videoVersion= '1.0'
|
||||
|
||||
@ -6,7 +6,7 @@ import LoadingPopup from './compontents/judge/LoadingPopup';
|
||||
import DeductedPopup from './compontents/judge/DeductionPopup';
|
||||
import AmplifyPopup from './compontents/judge/AmplifyPopup';
|
||||
import Judge from './judgeSDK/judge';
|
||||
import { defaultJudgeConfigObj } from './judgeSDK/utils//judge-common';
|
||||
import { defaultJudgeConfigObj } from './judgeSDK/utils//judgeCommon';
|
||||
import {
|
||||
CARINFO,
|
||||
CDSBInfo,
|
||||
@ -21,86 +21,13 @@ import {
|
||||
import { chunkArr, formatTime, getCurrentHourTime, getCurrentTime } from '../common/utils/tools';
|
||||
import { examJudgeEndExam } from './judgeSDK/api/index';
|
||||
import { getSyncData } from '../common/service/initable';
|
||||
import { judgeConfig } from './judgeSDK/utils/judge-config';
|
||||
import { judgeConfig } from './judgeSDK/utils/judgeConfig';
|
||||
import FileUtil from '../common/utils/File';
|
||||
import SignDisplayCom from './compontents/signDisplayCom';
|
||||
|
||||
|
||||
@Entry
|
||||
@Component
|
||||
struct Index {
|
||||
scroller: Scroller = new Scroller()
|
||||
//页面通用字体大小
|
||||
@State FONTSIZE: number = 28
|
||||
@State BIGFONTSIZE: number = 28
|
||||
//结束考试弹窗
|
||||
@State endPopupVisible: boolean = false
|
||||
//等待弹窗(考试及格,考试不及格使用)
|
||||
@State loadingPopupVisible: boolean = false
|
||||
//实时轨迹弹窗
|
||||
@State signDisplayComVisible: boolean = false
|
||||
@State isDdxk: boolean = false;
|
||||
@State time: string = ''
|
||||
//考试用时
|
||||
@State examTime: number = 0
|
||||
//开始时间
|
||||
@State startTime: string = '00:00:00'
|
||||
@State startFullTime: string = ''
|
||||
@State startHourTime: string = ''
|
||||
//科目类型
|
||||
@State examSubject: 2 | 3 = 3;
|
||||
@State ddxkTime: number = 0;
|
||||
@State ddxkKsxmArr: string[] = ['']
|
||||
@State ddxkKfArr: string[] = ['']
|
||||
@State xmmcStr: string = ''
|
||||
@State carztStr: string = ''
|
||||
@State kfArr: {
|
||||
xmmcStr?: string,
|
||||
score: string,
|
||||
desc: string
|
||||
}[] = []
|
||||
@State name: string = ''
|
||||
@State idCard: string = ''
|
||||
@State totalScore: number = 100
|
||||
//模拟考试项目
|
||||
@State projects: Project[] = []
|
||||
@State projectsObj: ProjectObj = {}
|
||||
@State projectsCenterObj: ProjectObj = {}
|
||||
@State markRuleListObj: MarkRule = {}
|
||||
@State cdsbInfoObj: CDSBInfo = {}
|
||||
@State timer: number = 0
|
||||
@State judgeConfig: { [k: string]: string }[] = []
|
||||
@State judgeConfigObj: { [k: string]: any } = defaultJudgeConfigObj
|
||||
//流水号
|
||||
@State lsh: string = ''
|
||||
@State kszp: string = ''
|
||||
@State ksdd: string = ''
|
||||
@State kssycs: string = ''
|
||||
@State kslx: string = ''
|
||||
//监管接口序列号
|
||||
@State serialNumber: number = 0
|
||||
@State carType: string = ''
|
||||
@State carName: string = ''
|
||||
@State isDeductedPopShow: boolean = false
|
||||
@State isAmplifyPopShow: boolean = false
|
||||
@State amplifiedImgIndex: number = 0
|
||||
@State judge: any = {}
|
||||
//行驶距离
|
||||
@State jl: number = 0
|
||||
//应考里程
|
||||
@State examMileage: string = '0'
|
||||
@State artSubject3Projects: string[] = ['直线', '会车', '变道', '超车', '掉头', '停车']
|
||||
@State artSubject3ProjectsCodesArr: string[] = ['3', '9', '4', '10', '12', '11']
|
||||
@State manualMarkRules: MarkRule[] = []
|
||||
//科目三评判初始化数据
|
||||
@State systemparmArr: SYSTEMPARMARR[] = []
|
||||
@State mapPointItemArr: MAPITEMPOINTITEM[] = []
|
||||
@State carinfoArrr: CARINFO[] = []
|
||||
@State mapPointArr: MAPPOINT[] = []
|
||||
private context = getContext(this) as common.UIAbilityContext;
|
||||
private img: ImageBitmap = new ImageBitmap("/resources/base/media/1.png")
|
||||
//已考的考试项目
|
||||
private wantInfos = []
|
||||
|
||||
async aboutToAppear() {
|
||||
globalThis.windowClass.setWindowSystemBarEnable([''])
|
||||
@ -200,10 +127,9 @@ struct Index {
|
||||
NoCancelId: mark.nocancelid * 1,
|
||||
GPS_SID: mark.gps_sid == 0 ? false : true
|
||||
}
|
||||
const markserial = mark.markserial * 1;
|
||||
|
||||
//筛选出人工评判的扣分
|
||||
if (markserial > 100 && markserial < 200) {
|
||||
if (Number(tempObj.markserial) > 100 && Number(tempObj.markserial) < 200) {
|
||||
this.manualMarkRules.push(tempObj)
|
||||
}
|
||||
this.markRuleListObj[`${mark.itemno}_${mark.markserial}`] = {
|
||||
@ -244,6 +170,33 @@ struct Index {
|
||||
this.examMileage = sys.v_value + '';
|
||||
}
|
||||
|
||||
//364 绕车一周评判时机(1-开始考试后判 2-开始考试前判)
|
||||
if(sys.v_no == '364' && sys.v_value == 2 ){
|
||||
let currentParams: any = router.getParams();
|
||||
const {sczb,kfdm} = currentParams;
|
||||
kfdm.forEach(kf => {
|
||||
const {xmdm, kfdm} = kf
|
||||
const currentKf = this.markRuleListObj[`${xmdm}_${kfdm}`];
|
||||
const currentProject = this.projectsObj[xmdm]
|
||||
this.kfArr.push({
|
||||
//扣分项目名称
|
||||
xmmcStr: currentProject.name,
|
||||
//@ts-ignore
|
||||
xmdm,
|
||||
desc: currentKf.markshow,
|
||||
score: currentKf.markreal,
|
||||
markcatalog: currentKf.markcatalog,
|
||||
markserial: currentKf.markserial,
|
||||
kfxh: currentKf.kfxh
|
||||
})
|
||||
this.totalScore += currentKf.markreal * 1;
|
||||
})
|
||||
this.projectsObj['1'].type = kfdm.length ? '4':'3';
|
||||
this.projectsObj = {
|
||||
...this.projectsObj
|
||||
}
|
||||
}
|
||||
|
||||
this.judgeConfigObj[sys.v_no] = value
|
||||
});
|
||||
this.judgeConfig = syssetJudgeConfigArr;
|
||||
@ -300,7 +253,8 @@ struct Index {
|
||||
//初始化systemParam表
|
||||
async initSystemKm3Param(sysParam?: SYSTEMPARMARR[]) {
|
||||
const systemParms: any = sysParam || await getSyncData('MA_SYSTEMPARM')
|
||||
|
||||
let currentParams: any = router.getParams();
|
||||
this.wayno = currentParams.wayno
|
||||
const {isTrajectoryOpen} = judgeConfig
|
||||
|
||||
systemParms.forEach((systemParm) => {
|
||||
@ -538,7 +492,7 @@ struct Index {
|
||||
if (this.examSubject == 3) {
|
||||
Row() {
|
||||
Text('考试路线:').fontColor('#E5CCA1').fontSize(this.FONTSIZE)
|
||||
Text(`线路${globalThis.carInfo.wayno}`).fontColor('#FFAD33').fontSize(this.FONTSIZE)
|
||||
Text(`线路${this.wayno}`).fontColor('#FFAD33').fontSize(this.FONTSIZE)
|
||||
}
|
||||
}
|
||||
|
||||
@ -578,7 +532,6 @@ struct Index {
|
||||
|
||||
Row() {
|
||||
Flex({ direction: FlexDirection.Column }) {
|
||||
|
||||
if (this.kfArr.length) {
|
||||
List({}) {
|
||||
ForEach(this.kfArr, (item) => {
|
||||
@ -905,6 +858,7 @@ struct Index {
|
||||
if (this.isDeductedPopShow) {
|
||||
DeductedPopup({
|
||||
currentItems: Reflect.ownKeys(this.projectsObj).map(projectKey => {
|
||||
//@ts-ignore
|
||||
const project = this.projectsObj[projectKey]
|
||||
return project.type == '2' ? project.projectCode : ''
|
||||
}).filter(project => project !== ''),
|
||||
@ -961,11 +915,13 @@ struct Index {
|
||||
// 获取是否能人工进项目
|
||||
getIsExitManualProject = (index: number) => {
|
||||
const {judgeConfigObj,artSubject3ProjectsCodesArr,projectsObj} = this;
|
||||
|
||||
//不允许人工触发的项目列表,以","分隔
|
||||
const unExitManualProjects = judgeConfigObj['332'].split(',') || [];
|
||||
//直线行驶中不进其他考试项目(0-否 1-是)
|
||||
const param348 = judgeConfigObj['348'] || '0';
|
||||
//里程不够允许手工点靠边停车(0-否 1-是)
|
||||
const param387 = judgeConfigObj['387'] || '0';
|
||||
|
||||
//车上是否能进行人工操作(0-能1-不能人工评判2-不能人工进项目3-都不能)
|
||||
if (judgeConfigObj['342'] === '3' || judgeConfigObj['342'] === '2') {
|
||||
return false
|
||||
}
|
||||
@ -974,6 +930,7 @@ struct Index {
|
||||
return false
|
||||
}
|
||||
|
||||
//@ts-ignore
|
||||
if (param348 == '0' && projectsObj['9']?.type == 2) {
|
||||
return index === 0 ? true : false
|
||||
}
|
||||
@ -985,4 +942,76 @@ struct Index {
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
scroller: Scroller = new Scroller()
|
||||
//页面通用字体大小
|
||||
@State wayno:number = 0
|
||||
@State FONTSIZE: number = 28
|
||||
@State BIGFONTSIZE: number = 28
|
||||
//结束考试弹窗
|
||||
@State endPopupVisible: boolean = false
|
||||
//等待弹窗(考试及格,考试不及格使用)
|
||||
@State loadingPopupVisible: boolean = false
|
||||
//实时轨迹弹窗
|
||||
@State signDisplayComVisible: boolean = false
|
||||
@State isDdxk: boolean = false;
|
||||
@State time: string = ''
|
||||
//考试用时
|
||||
@State examTime: number = 0
|
||||
//开始时间
|
||||
@State startTime: string = '00:00:00'
|
||||
@State startFullTime: string = ''
|
||||
@State startHourTime: string = ''
|
||||
//科目类型
|
||||
@State examSubject: 2 | 3 = 3;
|
||||
@State ddxkTime: number = 0;
|
||||
@State ddxkKsxmArr: string[] = ['']
|
||||
@State ddxkKfArr: string[] = ['']
|
||||
@State xmmcStr: string = ''
|
||||
@State carztStr: string = ''
|
||||
@State kfArr: {
|
||||
xmmcStr?: string,
|
||||
score: string,
|
||||
desc: string
|
||||
}[] = []
|
||||
@State name: string = ''
|
||||
@State idCard: string = ''
|
||||
@State totalScore: number = 100
|
||||
//模拟考试项目
|
||||
@State projects: Project[] = []
|
||||
@State projectsObj: ProjectObj = {}
|
||||
@State projectsCenterObj: ProjectObj = {}
|
||||
@State markRuleListObj: MarkRule = {}
|
||||
@State cdsbInfoObj: CDSBInfo = {}
|
||||
@State timer: number = 0
|
||||
@State judgeConfig: { [k: string]: string }[] = []
|
||||
@State judgeConfigObj: { [k: string]: any } = defaultJudgeConfigObj
|
||||
//流水号
|
||||
@State lsh: string = ''
|
||||
@State kszp: string = ''
|
||||
@State ksdd: string = ''
|
||||
@State kssycs: string = ''
|
||||
@State kslx: string = ''
|
||||
//监管接口序列号
|
||||
@State serialNumber: number = 0
|
||||
@State carType: string = ''
|
||||
@State carName: string = ''
|
||||
@State isDeductedPopShow: boolean = false
|
||||
@State isAmplifyPopShow: boolean = false
|
||||
@State amplifiedImgIndex: number = 0
|
||||
@State judge: any = {}
|
||||
//行驶距离
|
||||
@State jl: number = 0
|
||||
//应考里程
|
||||
@State examMileage: string = '0'
|
||||
@State artSubject3Projects: string[] = ['直线', '会车', '变道', '超车', '掉头', '停车']
|
||||
@State artSubject3ProjectsCodesArr: string[] = ['3', '9', '4', '10', '12', '11']
|
||||
@State manualMarkRules: MarkRule[] = []
|
||||
//科目三评判初始化数据
|
||||
@State systemparmArr: SYSTEMPARMARR[] = []
|
||||
@State mapPointItemArr: MAPITEMPOINTITEM[] = []
|
||||
@State carinfoArrr: CARINFO[] = []
|
||||
@State mapPointArr: MAPPOINT[] = []
|
||||
private context = getContext(this) as common.UIAbilityContext;
|
||||
//已考的考试项目
|
||||
}
|
||||
|
||||
@ -24,7 +24,6 @@ export default struct Index {
|
||||
const {no1,no2,no3,txt1,txt2} = systemParm;
|
||||
if (no1 == 4) {
|
||||
const temp = { no2, no3, txt1: decodeURI(txt1), txt2 }
|
||||
console.info('surenjun', JSON.stringify(temp))
|
||||
this.roadObj[no2] = no2
|
||||
}
|
||||
})
|
||||
@ -57,10 +56,8 @@ export default struct Index {
|
||||
const roadArr = Reflect.ownKeys(this.roadObj).map((roadKey) => {
|
||||
return this.roadObj[roadKey]
|
||||
});
|
||||
globalThis.carInfo.wayno = roadArr[Math.floor(Math.random()*roadArr.length)];
|
||||
router.pushUrl({
|
||||
url: 'pages/Judge',
|
||||
}, router.RouterMode.Single);
|
||||
const wayno = roadArr[Math.floor(Math.random()*roadArr.length)];
|
||||
this.goJudge(wayno)
|
||||
})
|
||||
ForEach(Reflect.ownKeys(this.roadObj), (roadIndex) => {
|
||||
ListItem() {
|
||||
@ -81,10 +78,7 @@ export default struct Index {
|
||||
.height(220)
|
||||
.margin({ left: 5, bottom: 10 })
|
||||
.onClick(async () => {
|
||||
globalThis.carInfo.wayno = this.roadObj[roadIndex];
|
||||
router.pushUrl({
|
||||
url: 'pages/Judge',
|
||||
}, router.RouterMode.Single);
|
||||
this.goJudge(this.roadObj[roadIndex])
|
||||
})
|
||||
})
|
||||
}.lanes(8).margin({ top: 50, left: 15 })
|
||||
@ -95,6 +89,18 @@ export default struct Index {
|
||||
|
||||
}
|
||||
|
||||
outClick() {
|
||||
goJudge(wayno) {
|
||||
let currentParams: any = router.getParams() || {};
|
||||
const {sczb,kfdm} = currentParams;
|
||||
router.replaceUrl({
|
||||
url: 'pages/Judge',
|
||||
params:{
|
||||
sczb,
|
||||
kfdm,
|
||||
wayno
|
||||
}
|
||||
}, router.RouterMode.Single);
|
||||
|
||||
}
|
||||
outClick(){}
|
||||
}
|
||||
@ -14,8 +14,9 @@ import common from '@ohos.app.ability.common';
|
||||
import { User } from './interfaces';
|
||||
import WebRTCVoice from './webRTC/';
|
||||
import promptAction from '@ohos.promptAction';
|
||||
import { getSyncData } from '../common/service/initable';
|
||||
import { CandidateData, EmptyCandidateObject } from '../mock/CandidateData';
|
||||
|
||||
import BoardPrePareSetPopup from './compontents/judge/BoardPrePareSetPopup'
|
||||
@Entry
|
||||
@Component
|
||||
struct UserInfo {
|
||||
@ -34,6 +35,10 @@ struct UserInfo {
|
||||
@State url: string = ''
|
||||
@State lsh: string = ''
|
||||
@State qkFlag: boolean = false
|
||||
@State isBoardPrePareSetPopupOpen: boolean = false
|
||||
@State isFirstBoardPrePareSetPopupBtnShow: boolean = false
|
||||
@State isBoardPrePareSetPopupShow: boolean = false
|
||||
@State sczbkf:{xmdm:number,kfdm:string}[] = []
|
||||
@State currentUser: User = EmptyCandidateObject
|
||||
@State dataList: Array<User> = []
|
||||
@State list: Array<User> = []
|
||||
@ -194,7 +199,9 @@ struct UserInfo {
|
||||
this.qkFn()
|
||||
}
|
||||
|
||||
initData() {
|
||||
async initData() {
|
||||
this.sczbkf = []
|
||||
this.isFirstBoardPrePareSetPopupBtnShow = false;
|
||||
this.stepFlag = false
|
||||
this.faceCompareSucess = 0
|
||||
this.showFaceCompare = false
|
||||
@ -216,6 +223,15 @@ struct UserInfo {
|
||||
} else {
|
||||
// this.getExaminationStudentInfoFn()
|
||||
}
|
||||
const syssetParams = await getSyncData('MA_SYSSET');
|
||||
//@ts-ignore
|
||||
syssetParams.forEach(sys => {
|
||||
//364 绕车一周评判时机(1-开始考试后判 2-开始考试前判)
|
||||
if(sys.v_no === '364'){
|
||||
this.isBoardPrePareSetPopupOpen = true;
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
async heartMsg() {
|
||||
@ -531,6 +547,7 @@ struct UserInfo {
|
||||
|
||||
build() {
|
||||
Column() {
|
||||
|
||||
TopLogo({ outFlag: $outFlag }).margin({ bottom: 10 })
|
||||
Row() {
|
||||
Row() {
|
||||
@ -627,54 +644,72 @@ struct UserInfo {
|
||||
.onClick(() => {
|
||||
this.qkFlag = true
|
||||
})
|
||||
Image($r('app.media.ksks_btn'))
|
||||
.commStyle()
|
||||
.onClick(() => {
|
||||
this.faceCompareSucess = 0
|
||||
globalThis.statue = 2
|
||||
if (!this.currentUser.xm) {
|
||||
return
|
||||
}
|
||||
// if(globalThis.spzdFlag){
|
||||
// promptAction.showToast({
|
||||
// message: '摄像头被遮挡',
|
||||
// duration: 2000
|
||||
// });
|
||||
// return
|
||||
// }
|
||||
//TODO 科目三先写死
|
||||
globalThis.carInfo.examSubject = 3;
|
||||
if (globalThis.singlePlay) {
|
||||
const {examSubject} = globalThis.carInfo;
|
||||
this.AccountTable.query('0', (result) => {
|
||||
if (result.length == 0) {
|
||||
this.AccountTable.insertData(this.currentUser, (id) => {
|
||||
this.AccountTable.query('0', (result) => {
|
||||
router.pushUrl({
|
||||
url: examSubject == 3 ? 'pages/Roads':'pages/Judge',
|
||||
}, router.RouterMode.Single);
|
||||
this.stopDeviceById()
|
||||
})
|
||||
})
|
||||
} else {
|
||||
this.AccountTable.updateData(this.currentUser, (id) => {
|
||||
this.AccountTable.query('0', (result) => {
|
||||
router.pushUrl({
|
||||
url: examSubject == 3?'pages/Roads':'pages/Judge',
|
||||
}, router.RouterMode.Single);
|
||||
this.stopDeviceById()
|
||||
})
|
||||
})
|
||||
}
|
||||
})
|
||||
return
|
||||
}
|
||||
if (this.FaceOpenStatue != '0') {
|
||||
this.showFaceCompare = true
|
||||
} else {
|
||||
this.sfbdinterfaceFn()
|
||||
}
|
||||
|
||||
if( this.isBoardPrePareSetPopupOpen && !this.isFirstBoardPrePareSetPopupBtnShow){
|
||||
//上车准备
|
||||
Image($r('app.media.sczb_btn')).commStyle().onClick(()=>{
|
||||
this.isBoardPrePareSetPopupShow = true;
|
||||
this.isFirstBoardPrePareSetPopupBtnShow = true;
|
||||
})
|
||||
}else{
|
||||
Image($r('app.media.ksks_btn'))
|
||||
.commStyle()
|
||||
.onClick(() => {
|
||||
this.faceCompareSucess = 0
|
||||
globalThis.statue = 2
|
||||
if (!this.currentUser.xm) {
|
||||
return
|
||||
}
|
||||
// if(globalThis.spzdFlag){
|
||||
// promptAction.showToast({
|
||||
// message: '摄像头被遮挡',
|
||||
// duration: 2000
|
||||
// });
|
||||
// return
|
||||
// }
|
||||
//TODO 科目三先写死
|
||||
globalThis.carInfo.examSubject = 3;
|
||||
if (globalThis.singlePlay) {
|
||||
const {examSubject} = globalThis.carInfo;
|
||||
this.AccountTable.query('0', (result) => {
|
||||
if (result.length == 0) {
|
||||
this.AccountTable.insertData(this.currentUser, (id) => {
|
||||
this.AccountTable.query('0', (result) => {
|
||||
router.pushUrl({
|
||||
url: examSubject == 3 ? 'pages/Roads':'pages/Judge',
|
||||
params:{
|
||||
sczb:Number(this.isBoardPrePareSetPopupOpen),
|
||||
kfdm:this.sczbkf
|
||||
}
|
||||
}, router.RouterMode.Single);
|
||||
this.stopDeviceById()
|
||||
})
|
||||
})
|
||||
} else {
|
||||
this.AccountTable.updateData(this.currentUser, (id) => {
|
||||
this.AccountTable.query('0', (result) => {
|
||||
router.pushUrl({
|
||||
url: examSubject == 3?'pages/Roads':'pages/Judge',
|
||||
params:{
|
||||
sczb:Number(this.isBoardPrePareSetPopupOpen),
|
||||
kfdm:this.sczbkf
|
||||
}
|
||||
}, router.RouterMode.Single);
|
||||
this.stopDeviceById()
|
||||
})
|
||||
})
|
||||
}
|
||||
})
|
||||
return
|
||||
}
|
||||
if (this.FaceOpenStatue != '0') {
|
||||
this.showFaceCompare = true
|
||||
} else {
|
||||
this.sfbdinterfaceFn()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -719,6 +754,19 @@ struct UserInfo {
|
||||
.backgroundColor('#E6E3DF')
|
||||
.borderRadius(19 * this.ratio)
|
||||
}
|
||||
|
||||
// 上车准备
|
||||
if(this.isBoardPrePareSetPopupShow){
|
||||
BoardPrePareSetPopup({
|
||||
closePopup:()=>{
|
||||
this.isBoardPrePareSetPopupShow = false
|
||||
},
|
||||
confirmMark:(kfdm)=>{
|
||||
this.sczbkf= kfdm
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
.height('100%')
|
||||
.width('100%')
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import router from '@ohos.router';
|
||||
import UdpClient from '../../common/utils/UdpClient';
|
||||
import FileLog from '../judgeSDK/utils/file-log';
|
||||
import FileLog from '../judgeSDK/utils/fileLog';
|
||||
import RealTime from '../compontents/judge/RealTime';
|
||||
import { GPSData, SignalData } from '../../mock';
|
||||
import { SignalDataType } from '../../model';
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import apiJudgeSdk from 'libJudgeSdk.so';
|
||||
import Judge from '../../judgeSDK/utils/judge-real';
|
||||
import Judge from '../../judgeSDK/utils/judgeReal';
|
||||
import { MarkRule, Project, ProjectObj } from '../../judgeSDK/api/judgeSDK.d';
|
||||
import common from '@ohos.app.ability.common';
|
||||
|
||||
|
||||
@ -131,6 +131,7 @@ export function handleLog(level,infoStr, len){
|
||||
*
|
||||
*/
|
||||
export async function examJudgeEndExam(){
|
||||
console.info('surenjun','考试结束调用')
|
||||
const temp = libJudgeSdk.examJudgeEndExam();
|
||||
return await handle(temp,'examJudgeEndExam')
|
||||
}
|
||||
@ -170,6 +171,26 @@ export async function examJudgeSetPerformCallback(fn){
|
||||
const temp = libJudgeSdk.examJudgeSetPerformCallback(fn);
|
||||
return await handle(temp,'examJudgeSetPerformCallback')
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @desc 语音播报结束
|
||||
* /
|
||||
*/
|
||||
|
||||
export async function examJudgeSoundEnd(param:{
|
||||
//项目代码
|
||||
itemno:number,
|
||||
//语音码
|
||||
code:string,
|
||||
//语音类型
|
||||
type:number,
|
||||
}){
|
||||
const {itemno,code,type} = param;
|
||||
const temp = libJudgeSdk.examJudgeSoundEnd(itemno,code,type);
|
||||
return await handle(temp,'examJudgeSoundEnd')
|
||||
}
|
||||
|
||||
/*
|
||||
* @desc通用处理函数
|
||||
*
|
||||
|
||||
@ -16,7 +16,8 @@ export interface MarkRule{
|
||||
itemno?:number
|
||||
markcatalog?:string
|
||||
markshow?:string
|
||||
markserial?:number
|
||||
markserial?:string
|
||||
markstandard?:number,
|
||||
markreal?:number
|
||||
kfxh?:string
|
||||
onlyoneid?:number
|
||||
@ -118,7 +119,8 @@ export interface EXAMDATA{
|
||||
sound:{
|
||||
xmdm:number,
|
||||
//语音播放文件代码
|
||||
code:string
|
||||
code:string,
|
||||
type:number
|
||||
},
|
||||
//模拟灯光
|
||||
mndg:string
|
||||
@ -138,7 +140,9 @@ export interface SOUND {
|
||||
//项目代码
|
||||
xmdm:number
|
||||
//语音播放提示代码
|
||||
code:string
|
||||
code:string,
|
||||
//0:普通,1:模拟灯光
|
||||
type:number
|
||||
}
|
||||
export interface SYSSET {
|
||||
v_no:string,
|
||||
@ -147,7 +151,7 @@ export interface SYSSET {
|
||||
}
|
||||
|
||||
export interface ProjectObj {
|
||||
[k:any]:Project
|
||||
[k:string]:Project
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -2,19 +2,16 @@ import systemTime from '@ohos.systemDateTime';
|
||||
import router from '@ohos.router';
|
||||
import util from '@ohos.util';
|
||||
import buffer from '@ohos.buffer';
|
||||
|
||||
import { testKmItems, testMarkRules } from './dataTest/index';
|
||||
import { EXAMDATA, SOUND } from './api/judgeSDK';
|
||||
|
||||
import VoiceAnnounce from './utils/voice-announcements';
|
||||
import FileModel from './utils/file-model';
|
||||
import FilePhoto from './utils/file-photo';
|
||||
import VoiceAnnounce from './utils/voiceAnnouncements';
|
||||
import FileModel from './utils/fileModel';
|
||||
import FilePhoto from './utils/filePhoto';
|
||||
import FileUtil from '../../common/utils/File';
|
||||
import FileLog from '../judgeSDK/utils/file-log';
|
||||
import FileLog from './utils/fileLog';
|
||||
|
||||
import JudgeTask from './utils/judge-task';
|
||||
import SimulateLights from './utils/simulate-lights';
|
||||
import { judgeConfig } from './utils/judge-config';
|
||||
import JudgeTask from './utils/judgeTask';
|
||||
import { judgeConfig } from './utils/judgeConfig';
|
||||
|
||||
import { uploadExamProgressData, writeObjectOut } from '../../api/judge';
|
||||
import {
|
||||
@ -36,35 +33,33 @@ import {
|
||||
plcStrToWXJson,
|
||||
promptWxCode,
|
||||
senorToWXDataStr
|
||||
} from './utils/judge-common';
|
||||
} from './utils/judgeCommon';
|
||||
import {
|
||||
examJudgeArtificialItem,
|
||||
examJudgeArtificialMark,
|
||||
examJudgeBeginExam,
|
||||
examJudgeEndExam,
|
||||
examJudgeInit,
|
||||
examJudgeMapSetParam,
|
||||
examJudgeMapSetScaling,
|
||||
examJudgeSoundEnd,
|
||||
examJudgeRealExam,
|
||||
examJudgeSetLogCallback,
|
||||
examJudgeSetPerformCallback,
|
||||
examJudgeSetRealExamCallback
|
||||
} from './api/index';
|
||||
import UsbService from '../../common/service/usbService';
|
||||
|
||||
import Prompt from '@system.prompt';
|
||||
|
||||
const judgeTag = 'SURENJUN_JUDGE'
|
||||
|
||||
export default class Judge {
|
||||
|
||||
|
||||
constructor(judgeUI) {
|
||||
this.serialIndex = 1;
|
||||
this.judgeUI = judgeUI
|
||||
|
||||
//语音播放工具
|
||||
this.avPlayer = new VoiceAnnounce();
|
||||
new SimulateLights(this.avPlayer)
|
||||
//模型工具
|
||||
this.fileModel = new FileModel(judgeUI.context);
|
||||
//文件工具
|
||||
@ -133,7 +128,7 @@ export default class Judge {
|
||||
console.info(judgeTag, '2.注册日志回调完成')
|
||||
|
||||
let initInfo = isTrajectoryOpen ? JSON.parse(strArr[0]) : await this.getJudgeInitData();
|
||||
console.log('SURENJUN_JUDGE',isJudgeInitBool,isTrajectoryOpen,JSON.stringify(initInfo))
|
||||
|
||||
//相关评判初始化只做一次
|
||||
if (!isJudgeInitBool) {
|
||||
await fileLog.setExamJudgeData(initInfo)
|
||||
@ -141,6 +136,7 @@ export default class Judge {
|
||||
globalThis.isJudgeInitBool = true
|
||||
console.info(judgeTag, '4.评判初始化完成')
|
||||
} else {
|
||||
await fileLog.setExamJudgeData(initInfo)
|
||||
}
|
||||
|
||||
globalThis.isJudge = true
|
||||
@ -157,24 +153,19 @@ export default class Judge {
|
||||
this.performInfo = performInfo
|
||||
this.judgeUI.jl = Math.ceil((performInfo.qjjl + performInfo.dcjl) / 100)
|
||||
})
|
||||
|
||||
// 3.开始考试
|
||||
let beginExamInfo = isTrajectoryOpen ? {
|
||||
...JSON.parse(strArr[1]),
|
||||
replay: 1
|
||||
} : await getJudgeBeginData()
|
||||
console.log(judgeTag,'22222',JSON.stringify(beginExamInfo),strArr[1])
|
||||
await fileLog.setExamJudgeData(beginExamInfo)
|
||||
console.log(judgeTag,'333333')
|
||||
await examJudgeBeginExam(beginExamInfo);
|
||||
console.log(judgeTag,'4444444')
|
||||
|
||||
await fileLog.setExamJudgeData(beginExamInfo)
|
||||
await examJudgeBeginExam(beginExamInfo);
|
||||
console.info(judgeTag, '6.开始考试注册完成')
|
||||
|
||||
avPlayer.playAudio(['voice/ksks.WAV'])
|
||||
|
||||
await examJudgeMapSetParam(640, 480); //设置参数宽、高
|
||||
await examJudgeMapSetScaling(120); //设置缩放比例,一般默认填100(就是100%的意思) ,数字越大视野越大,数字越小视野越小,不能为0
|
||||
|
||||
this.judgeUI.draw = true
|
||||
|
||||
// 处理轨迹plc信息
|
||||
@ -189,9 +180,113 @@ export default class Judge {
|
||||
handleUdp(msg)
|
||||
})
|
||||
|
||||
|
||||
}
|
||||
// 获取评判初始化数据
|
||||
getJudgeInitData = async () => {
|
||||
const {getModelData,getKm3JudgeInitConfig} = this
|
||||
const carInfo = globalThis.carInfo;
|
||||
const { examSubject,plateNo,carId } = carInfo;
|
||||
const {fileLog} = this
|
||||
const judgeUI = this.judgeUI
|
||||
const {projectsObj,cdsbInfoObj,markRuleListObj,carType,carName} = judgeUI
|
||||
|
||||
const examType = examSubject == 2 ? 'km2' : 'km3'
|
||||
|
||||
let allitems = [];
|
||||
|
||||
if (examSubject == 2) {
|
||||
allitems = Reflect.ownKeys(cdsbInfoObj).map(cdsbKey => {
|
||||
const cdsb = cdsbInfoObj[cdsbKey];
|
||||
const {xmdm,xmxh,modelKey} = cdsb
|
||||
return {
|
||||
xmdm, xmxh, model: getModelData(`${examType}/${modelKey}.txt`)
|
||||
}
|
||||
})
|
||||
}
|
||||
const initInfo = {
|
||||
kskm: examSubject * 1,
|
||||
kchp: plateNo,
|
||||
kchm: carId * 1,
|
||||
kscx: carType,
|
||||
cxcode: '1',
|
||||
name: carName,
|
||||
carmodel: getModelData(`${examType}/${carType}.txt`),
|
||||
allitems,
|
||||
mark: Reflect.ownKeys(markRuleListObj).map(ruleKey => (markRuleListObj[ruleKey])) || testMarkRules,
|
||||
sysset: judgeUI.judgeConfig,
|
||||
};
|
||||
|
||||
let km3Config = {}
|
||||
|
||||
if (examSubject) {
|
||||
km3Config = await getKm3JudgeInitConfig();
|
||||
}
|
||||
// 获取科目三的评判配置
|
||||
console.info(judgeTag, '3.获取评判初始化数据完成')
|
||||
return {
|
||||
...initInfo,
|
||||
...km3Config,
|
||||
}
|
||||
}
|
||||
// 获取开始考试数据
|
||||
getJudgeBeginData = async () => {
|
||||
const {code,name:examinerName} = globalThis.examinerInfo;
|
||||
let currentParams: any = router.getParams();
|
||||
const {sczb,kfdm} = currentParams;
|
||||
const {isExam} = this;
|
||||
const judgeUI = this.judgeUI
|
||||
const {projects,carType,isDdxk,ddxkTime,projectsCenterObj,ddxkKsxmArr,ddxkKfArr} = judgeUI;
|
||||
const beginInfo = {
|
||||
kgid: '012',
|
||||
kgxm: decodeURI(examinerName || ''),
|
||||
exam: isExam ? 1 : 0,
|
||||
//是否回放
|
||||
replay: 0,
|
||||
//生成的轨迹文件
|
||||
track: '',
|
||||
xm: judgeUI.name,
|
||||
sex: 0,
|
||||
kslsh: judgeUI.lsh,
|
||||
sfzmhm: judgeUI.idCard,
|
||||
ksyy: '',
|
||||
kscx: carType,
|
||||
kkcs: 1,
|
||||
sfyk: 0,
|
||||
ykkkcs: 1,
|
||||
wayno: judgeUI.wayno * 1,
|
||||
czlx: 0,
|
||||
kskssj: await systemTime.getCurrentTime(),
|
||||
ksxm: projects.map(project => {
|
||||
return {
|
||||
xmdm: project.projectCode * 1,
|
||||
xmxh: '',
|
||||
}
|
||||
}),
|
||||
//断点续考
|
||||
ddxk: isDdxk ? 1 : 0,
|
||||
ddkssj: ddxkTime,
|
||||
ykxm: isDdxk ? (ddxkKsxmArr?.map(projectCenterCode => (projectsCenterObj[projectCenterCode]?.projectCode) * 1)) : [],
|
||||
kfxm: isDdxk ? (ddxkKfArr?.map(kf => {
|
||||
const [xmdm, kfdm] = kf.split(',')
|
||||
return {
|
||||
xmdm: xmdm * 1,
|
||||
kfdm
|
||||
}
|
||||
})) : [],
|
||||
yklc: 0,
|
||||
special: [],
|
||||
//TODO 科目三参数临时写死
|
||||
sczb: (sczb === undefined || sczb == 0)?0:1,
|
||||
sczbkf:kfdm,
|
||||
dmndg: false,
|
||||
nitem1: false,
|
||||
nitem41: false,
|
||||
mfxx: false,
|
||||
mfxxn: false
|
||||
}
|
||||
console.info(judgeTag, '5.获取开始考试数据完成')
|
||||
return beginInfo
|
||||
}
|
||||
// 项目开始接口同步
|
||||
beginProject = async (ksxm) => {
|
||||
const carInfo = globalThis.carInfo;
|
||||
@ -332,28 +427,28 @@ export default class Judge {
|
||||
fileLog.setExamJudgeWuxiData(data)
|
||||
console.info(judgeTag, '上传照片 end')
|
||||
}
|
||||
|
||||
// 评判语音提示
|
||||
goJudgeVoice = async (sound: SOUND) => {
|
||||
const {avPlayer} = this;
|
||||
const {xmdm,code} = sound;
|
||||
const {avPlayer,fileLog} = this;
|
||||
const {xmdm,code,type} = sound;
|
||||
//判断是不是模拟灯光语音
|
||||
const isLight = code.slice(0, 3) === '417';
|
||||
if (isLight) {
|
||||
console.info(judgeTag,JSON.stringify(sound))
|
||||
if(type == 1){
|
||||
console.info(judgeTag, '模拟灯光开始播放:' + code)
|
||||
}
|
||||
avPlayer.playAudio([`voice/${code}.mp3`], true, () => {
|
||||
if (isLight) {
|
||||
if (type == 1) {
|
||||
console.info(judgeTag, '播放结束:' + code)
|
||||
setTimeout(() => {
|
||||
this.wav = 1;
|
||||
examJudgeSoundEnd({itemno:xmdm,code,type})
|
||||
fileLog.setExamJudgeData({
|
||||
method: 'examJudgeSoundEnd',
|
||||
itemno: xmdm,
|
||||
code,
|
||||
type,
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
}
|
||||
|
||||
// 处理考试结束
|
||||
public handEndExam = async (isManual?: Boolean) => {
|
||||
const {isExam,judgeUI,endExam,handleSEP,avPlayer} = this;
|
||||
@ -386,26 +481,6 @@ export default class Judge {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// 当前项目转换
|
||||
getDqxmStr = (type) => {
|
||||
const projectsObj = this.judgeUI.projectsObj
|
||||
return projectsObj[type]?.abbreviation || '通用评判'
|
||||
}
|
||||
|
||||
// 扣分项目转换
|
||||
getKfStr = (code) => {
|
||||
const markRuleListObj = this.judgeUI.markRuleListObj;
|
||||
const thisMark = markRuleListObj[code]
|
||||
return {
|
||||
desc: thisMark.markshow,
|
||||
score: thisMark.markreal,
|
||||
markcatalog: thisMark.markcatalog,
|
||||
markserial: thisMark.markserial,
|
||||
kfxh: thisMark.kfxh
|
||||
}
|
||||
}
|
||||
|
||||
// 考试结束
|
||||
public endExam = async (isManual?: Boolean) => {
|
||||
const carInfo = globalThis.carInfo;
|
||||
@ -455,55 +530,23 @@ export default class Judge {
|
||||
}, 3000)
|
||||
|
||||
}
|
||||
|
||||
// 获取评判初始化数据
|
||||
getJudgeInitData = async () => {
|
||||
const {getModelData,getKm3JudgeInitConfig} = this
|
||||
const carInfo = globalThis.carInfo;
|
||||
const { examSubject,plateNo,carId } = carInfo;
|
||||
const {fileLog} = this
|
||||
const judgeUI = this.judgeUI
|
||||
const {projectsObj,cdsbInfoObj,markRuleListObj,carType,carName} = judgeUI
|
||||
|
||||
const examType = examSubject == 2 ? 'km2' : 'km3'
|
||||
|
||||
let allitems = [];
|
||||
|
||||
if (examSubject == 2) {
|
||||
allitems = Reflect.ownKeys(cdsbInfoObj).map(cdsbKey => {
|
||||
const cdsb = cdsbInfoObj[cdsbKey];
|
||||
const {xmdm,xmxh,modelKey} = cdsb
|
||||
return {
|
||||
xmdm, xmxh, model: getModelData(`${examType}/${modelKey}.txt`)
|
||||
}
|
||||
})
|
||||
}
|
||||
const initInfo = {
|
||||
kskm: examSubject * 1,
|
||||
kchp: plateNo,
|
||||
kchm: carId * 1,
|
||||
kscx: carType,
|
||||
cxcode: '1',
|
||||
name: carName,
|
||||
carmodel: getModelData(`${examType}/${carType}.txt`),
|
||||
allitems,
|
||||
mark: Reflect.ownKeys(markRuleListObj).map(ruleKey => (markRuleListObj[ruleKey])) || testMarkRules,
|
||||
sysset: judgeUI.judgeConfig,
|
||||
};
|
||||
|
||||
let km3Config = {}
|
||||
|
||||
if (examSubject) {
|
||||
km3Config = await getKm3JudgeInitConfig();
|
||||
}
|
||||
// 获取科目三的评判配置
|
||||
console.info(judgeTag, '3.获取评判初始化数据完成')
|
||||
// 当前项目转换
|
||||
getDqxmStr = (type) => {
|
||||
const projectsObj = this.judgeUI.projectsObj
|
||||
return projectsObj[type]?.abbreviation || '通用评判'
|
||||
}
|
||||
// 扣分项目转换
|
||||
getKfStr = (code) => {
|
||||
const markRuleListObj = this.judgeUI.markRuleListObj;
|
||||
const thisMark = markRuleListObj[code]
|
||||
return {
|
||||
...initInfo,
|
||||
...km3Config,
|
||||
desc: thisMark.markshow,
|
||||
score: thisMark.markreal,
|
||||
markcatalog: thisMark.markcatalog,
|
||||
markserial: thisMark.markserial,
|
||||
kfxh: thisMark.kfxh
|
||||
}
|
||||
}
|
||||
|
||||
// 消息心跳发送
|
||||
getMessageHeartbeat = async (isEnd?: Boolean) => {
|
||||
const carInfo = globalThis.carInfo;
|
||||
@ -603,66 +646,6 @@ export default class Judge {
|
||||
this.serialIndex += 1;
|
||||
return Array2Byte(tempArr)
|
||||
}
|
||||
|
||||
// 获取开始考试数据
|
||||
getJudgeBeginData = async () => {
|
||||
console.log('globalThis.carInfo.wayno',globalThis.carInfo.wayno)
|
||||
const {code,name:examinerName} = globalThis.examinerInfo;
|
||||
const {isExam,isTrajectoryOpen} = this;
|
||||
const judgeUI = this.judgeUI
|
||||
const {projects,carType,isDdxk,ddxkTime,projectsCenterObj,ddxkKsxmArr,ddxkKfArr} = judgeUI;
|
||||
const beginInfo = {
|
||||
kgid: '012',
|
||||
kgxm: decodeURI(examinerName || ''),
|
||||
exam: isExam ? 1 : 0,
|
||||
//是否回放
|
||||
replay: 0,
|
||||
//生成的轨迹文件
|
||||
track: '',
|
||||
xm: judgeUI.name,
|
||||
sex: 0,
|
||||
kslsh: judgeUI.lsh,
|
||||
sfzmhm: judgeUI.idCard,
|
||||
ksyy: '',
|
||||
kscx: carType,
|
||||
kkcs: 1,
|
||||
sfyk: 0,
|
||||
ykkkcs: 1,
|
||||
wayno: Number(globalThis.carInfo.wayno)|| 0,
|
||||
czlx: 0,
|
||||
kskssj: await systemTime.getCurrentTime(),
|
||||
ksxm: projects.map(project => {
|
||||
return {
|
||||
xmdm: project.projectCode * 1,
|
||||
xmxh: '',
|
||||
}
|
||||
}),
|
||||
//断点续考
|
||||
ddxk: isDdxk ? 1 : 0,
|
||||
ddkssj: ddxkTime,
|
||||
ykxm: isDdxk ? (ddxkKsxmArr?.map(projectCenterCode => (projectsCenterObj[projectCenterCode]?.projectCode) * 1)) : [],
|
||||
kfxm: isDdxk ? (ddxkKfArr?.map(kf => {
|
||||
const [xmdm, kfdm] = kf.split(',')
|
||||
return {
|
||||
xmdm: xmdm * 1,
|
||||
kfdm
|
||||
}
|
||||
})) : [],
|
||||
yklc: 0,
|
||||
special: [],
|
||||
//TODO 科目三参数临时写死
|
||||
sczb: 0,
|
||||
sczbkf: [],
|
||||
dmndg: false,
|
||||
nitem1: false,
|
||||
nitem41: false,
|
||||
mfxx: false,
|
||||
mfxxn: false
|
||||
}
|
||||
console.info(judgeTag, '5.获取开始考试数据完成')
|
||||
return beginInfo
|
||||
}
|
||||
|
||||
//获取场地序号
|
||||
getSbxh = (ksxm, xmxh) => {
|
||||
const {judgeUI} = this;
|
||||
@ -677,7 +660,6 @@ export default class Judge {
|
||||
const sbxh = currentCdsb.sbbh || '00000000'
|
||||
return sbxh
|
||||
}
|
||||
|
||||
getSbbm = (ksxm, xmxh) => {
|
||||
const {judgeUI} = this;
|
||||
const {cdsbInfoObj,projectsObj} = judgeUI;
|
||||
@ -690,7 +672,6 @@ export default class Judge {
|
||||
const sbxh = currentCdsb.sbbm || '00000000'
|
||||
return sbxh
|
||||
}
|
||||
|
||||
// 中心所有项目转换
|
||||
getTranslateProject = () => {
|
||||
// const {testKmItems} = this;
|
||||
@ -713,13 +694,11 @@ export default class Judge {
|
||||
}
|
||||
return arr.map(numStr => parseInt(numStr, 2));
|
||||
}
|
||||
|
||||
// 获取考试项目详情
|
||||
getProjectInfo = (projectCode) => {
|
||||
const judgeUI = this.judgeUI;
|
||||
return judgeUI.projectsObj[projectCode]
|
||||
}
|
||||
|
||||
// 获取模型数据
|
||||
getModelData = (modelName) => {
|
||||
const modelPath = this.modelPath
|
||||
@ -750,7 +729,6 @@ export default class Judge {
|
||||
itemno: itemno * 1,
|
||||
type: 1
|
||||
})
|
||||
|
||||
console.info(judgeTag, `人工评判进入项目-${itemno}`)
|
||||
|
||||
}
|
||||
@ -870,8 +848,6 @@ export default class Judge {
|
||||
|
||||
}
|
||||
}
|
||||
public plcStr: string
|
||||
private judgeUI
|
||||
// 更改考试状态
|
||||
goVoiceAnnounce = async (event, xmdm, kf, xmjs) => {
|
||||
const {projectsObj,judgeConfigObj} = this.judgeUI;
|
||||
@ -937,17 +913,14 @@ export default class Judge {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
// 获取plc数据
|
||||
getPlcData = async (plc: string) => {
|
||||
const {fileLog,mndgStr,rmndg,wav} = this;
|
||||
const {fileLog,mndgStr,rmndg} = this;
|
||||
await fileLog.setPlcProgressData(plc)
|
||||
//plc字符串转化成评判初始化数据
|
||||
const tempData = await plcStrToJson(plc);
|
||||
//模拟灯光回放时刻
|
||||
tempData.sensor.rmndg = rmndg;
|
||||
//模拟灯光单个灯光结束时刻
|
||||
tempData.sensor.wav = wav;
|
||||
//模拟灯灯光灯光项目
|
||||
tempData.sensor.mndg = mndgStr;
|
||||
//plc字符串转化成无锡所过程数据
|
||||
@ -958,7 +931,6 @@ export default class Judge {
|
||||
this.plcStr = plc;
|
||||
this.mndgStr = '';
|
||||
this.rmndg = 0;
|
||||
this.wav = 0;
|
||||
globalThis.msgStr = plc
|
||||
|
||||
return tempData
|
||||
@ -966,7 +938,6 @@ export default class Judge {
|
||||
// 处理轨迹plc信号
|
||||
handleTrajectoryUdp = async (strArr) => {
|
||||
const {fileLog} = this;
|
||||
console.log('kkkkk')
|
||||
let num = 2;
|
||||
const {usbService} = this;
|
||||
const judgeTimer = setInterval(async () => {
|
||||
@ -1094,7 +1065,8 @@ export default class Judge {
|
||||
judgeUI.projectsObj = deepClone(copyProjectsObj)
|
||||
}
|
||||
}
|
||||
|
||||
public plcStr: string
|
||||
private judgeUI
|
||||
private fileLog
|
||||
private totalScore: number
|
||||
private folderPath: string
|
||||
@ -1102,7 +1074,6 @@ export default class Judge {
|
||||
private avPlayer
|
||||
private carztStr: string
|
||||
private rmndg: 0 | 1
|
||||
private wav: 0 | 1
|
||||
private mndgStr: string | undefined
|
||||
// 模拟灯光
|
||||
setMndg = async (mndgStr: string) => {
|
||||
|
||||
@ -3,6 +3,7 @@ import onvifclient from '@ohos.onvifclient';
|
||||
import fs from '@ohos.file.fs'
|
||||
import util from '@ohos.util';
|
||||
import FileUtil from '../../../common/utils/File'
|
||||
import { takePhoto } from '../../../common/service/videoService';
|
||||
|
||||
interface Params{
|
||||
userName:string
|
||||
@ -33,39 +34,9 @@ export default class FilePhoto{
|
||||
|
||||
public async getPhoto(){
|
||||
const {params,context,fileUtil} = this;
|
||||
const {userName,pwd,ip,port,rlls} = params;
|
||||
const mediaTest = mediaLibrary.getMediaLibrary(context);
|
||||
let mediaType = mediaLibrary.MediaType.IMAGE;
|
||||
let DIR_DOCUMENTS = mediaLibrary.DirectoryType.DIR_IMAGE;
|
||||
const path = await mediaTest.getPublicDirectory(DIR_DOCUMENTS);
|
||||
|
||||
return new Promise(async (resolve)=>{
|
||||
mediaTest.createAsset(mediaType, 'judge_face.jpg', path,(error,asset)=>{
|
||||
asset.open('rw', (error, fd) => {
|
||||
if (fd > 0) {
|
||||
const file_path = "/mnt/hmdfs/100/account/device_view/local/files/Pictures/judge_face.jpg"
|
||||
const result3 = onvifclient.getVideoSnapshot(`rtsp://${userName}:${pwd}@${ip}:${port}/h264/ch${rlls}/main/av_stream`,file_path,fd);
|
||||
fs.closeSync(fd);
|
||||
asset.close(fd);
|
||||
fs.lstat(file_path).then((stat) => {
|
||||
console.info("get link status succeed, the size of file is" + stat.size);
|
||||
let file = fs.openSync(file_path, fs.OpenMode.READ_WRITE);
|
||||
const size=Number(stat.size)+100
|
||||
let buf = new ArrayBuffer(size);
|
||||
let num = fs.readSync(file.fd, buf);
|
||||
const that = new util.Base64();
|
||||
const array = new Uint8Array(buf);
|
||||
const result = that.encodeToStringSync(array);//base64圖片
|
||||
fileUtil.deleteF(file_path,3)
|
||||
resolve(result)
|
||||
}).catch((err) => {
|
||||
console.info("get link status failed with error message: " + err.message + ", error code: " + err.code);
|
||||
});
|
||||
} else {
|
||||
console.error('baoyihu getVideoSnapshot File Open failed with error: ' + error);
|
||||
}
|
||||
});
|
||||
});
|
||||
return new Promise(async (reslove)=>{
|
||||
const data=await takePhoto(params,context,'jt/',1)
|
||||
reslove(data.base64)
|
||||
})
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user