diff --git a/entry/src/main/ets/api/judge.ets b/entry/src/main/ets/api/judge.ets index fdae613f..d7b5ded3 100644 --- a/entry/src/main/ets/api/judge.ets +++ b/entry/src/main/ets/api/judge.ets @@ -136,7 +136,7 @@ export async function uploadExamProgressData(params: UploadExamProgressDataParam if (singlePlay) { return } - return request({ + return request({ url: '/der2/services/exam/uploadExamDataFile.ws', data: ` diff --git a/entry/src/main/ets/api/userInfo.ets b/entry/src/main/ets/api/userInfo.ets index e9c0340d..a67c3f0c 100644 --- a/entry/src/main/ets/api/userInfo.ets +++ b/entry/src/main/ets/api/userInfo.ets @@ -108,7 +108,7 @@ interface GetPhotosForOtherParams { //参数下发读表接口 export async function getPhotosForOther(params: GetPhotosForOtherParams) { - return request({ + return request({ url: '/der2/services/third/getPhotosForOther.ws', data: `${params.sfzmhm}2${params.zptype}${params.ksrq}`, method: http.RequestMethod.POST, @@ -118,7 +118,7 @@ export async function getPhotosForOther(params: GetPhotosForOtherParams) { } export async function setVideoText() { - return request({ + return request({ url: 'http://admin:12345qwe@192.168.36.94/PSIA/Custom/SelfExt/OSD/channels/2/textOverlay', data: ` 1true0012222true0022223false004false005false006false007false008false00`, diff --git a/entry/src/main/ets/model/Judge.ets b/entry/src/main/ets/model/Judge.ets index 7a0f8809..e5c183c7 100644 --- a/entry/src/main/ets/model/Judge.ets +++ b/entry/src/main/ets/model/Judge.ets @@ -34,10 +34,10 @@ export interface AmplifyItem { /** UDP 通信参数 */ export interface UDPParamType { - id?: number; - list?: number[]; - carNo?: string; - placeId?: string; + id: number; + list: number[]; + carNo: string; + placeId: string; sendCallback?: () => void; } diff --git a/entry/src/main/ets/utils/Common.ets b/entry/src/main/ets/utils/Common.ets index 887d9d8d..e59ccdd3 100644 --- a/entry/src/main/ets/utils/Common.ets +++ b/entry/src/main/ets/utils/Common.ets @@ -74,11 +74,11 @@ export function ArrayToByteArray(array: number[]): Uint8Array { * @param len 字节数 * @returns 返回字节数组 */ -export function NumberToByteArray(number: number, len: number): number[] | undefined { +export function NumberToByteArray(number: number, len: number): number[] { let str = Math.floor(number).toString(2); if (str.length > len) { console.log('数据长度不对~~'); - return; + return []; } const byteString = FillZero(str, len); diff --git a/entry/src/main/ets/utils/Request.ets b/entry/src/main/ets/utils/Request.ets index f35c8667..9725f8d6 100644 --- a/entry/src/main/ets/utils/Request.ets +++ b/entry/src/main/ets/utils/Request.ets @@ -116,7 +116,9 @@ function dealCenterCode(message: string, isNewCenter: boolean = false): CenterCo return undefined } -export default function Request(options: RequestOption): Promise { +type RequestResult = Object | object | string | CenterCodeResult + +export default function Request(options: RequestOption): Promise { return new Promise((resolve, reject) => { const instance = http.createHttp() const baseURL = options.host || base @@ -136,7 +138,7 @@ export default function Request(options: RequestOption): Promi } if (result['Envelope'] !== undefined) { const msgXml: string = result['Envelope']['Body']['writeObjectOutResponse']['return']; - resolve(dealCenterCode(msgXml, options.isNewCenter)) + resolve(dealCenterCode(msgXml, options.isNewCenter) as T) return } if (!options.xml) { diff --git a/entry/src/main/ets/utils/UdpUtils.ets b/entry/src/main/ets/utils/UdpUtils.ets index 2d64a3b5..b847f43b 100644 --- a/entry/src/main/ets/utils/UdpUtils.ets +++ b/entry/src/main/ets/utils/UdpUtils.ets @@ -49,7 +49,7 @@ export default class UdpClient { cb(result) }) }) - this.udp.on("error", (err) => { + this.udp?.on("error", (err) => { console.log(UDPTag, 'udp error', JSON.stringify(err)) this.errorEvents.forEach(cb => { cb(err) @@ -58,8 +58,8 @@ export default class UdpClient { } - bindUdp(): Promise { - return this.udp.bind({ + bindUdp(): Promise | undefined { + return this.udp?.bind({ address: this.localIp, port: parseInt(this.localIpPort), family: 1 }) } @@ -71,7 +71,7 @@ export default class UdpClient { await this.bindUdp() } - close(): Promise { + close(): Promise | undefined { this.messageEvents = [] this.errorEvents = [] this.dealMethod = undefined @@ -84,8 +84,8 @@ export default class UdpClient { this.dealMethod = fun } - sendMsg(data: ArrayBuffer | string): Promise { - return this.udp.send({ + sendMsg(data: ArrayBuffer | string): Promise | undefined { + return this.udp?.send({ data, address: { address: this.oppositeIp, port: parseInt(this.oppositeIpPort), family: 1 diff --git a/entry/src/main/ets/utils/business/CenterUdpBusiness.ets b/entry/src/main/ets/utils/business/CenterUdpBusiness.ets index c1d0d1ae..899a2e49 100644 --- a/entry/src/main/ets/utils/business/CenterUdpBusiness.ets +++ b/entry/src/main/ets/utils/business/CenterUdpBusiness.ets @@ -8,13 +8,13 @@ import { UDPTag } from '../../config'; // 中心UDP业务逻辑 class CenterUDPBusiness { private static instance: CenterUDPBusiness - private udp: UdpClient + private udp: UdpClient = new UdpClient() private timer: number = -1 private headLength: number = 9 private sendId: number = 0 constructor() { - if (!CenterUDPBusiness.instance) { + if (CenterUDPBusiness.instance) { CenterUDPBusiness.instance = this } return CenterUDPBusiness.instance @@ -45,14 +45,19 @@ class CenterUDPBusiness { let headJudge = this.setMessageExclusive(head); let bodyJudge = this.setMessageExclusive(params.list); let end = [13, 10]; - const arr: Array = [...head, ...headJudge, ...params.list, ...bodyJudge, ...end] + const arr: number[] = [] + head.forEach(item => arr.push(item)) + headJudge.forEach(item => arr.push(item)) + params.list?.forEach(item => arr.push(item)) + bodyJudge.forEach(item => arr.push(item)) + end.forEach(item => arr.push(item)) return this.array2Byte(arr).buffer } private array2Byte(array: Array) { const buf = new ArrayBuffer(array.length); const view = new Uint8Array(buf); - for (let i = 0; i != array.length; ++i) { + for (let i = 0; i = array.length; ++i) { view[i] = array[i] & 0xFF; } return view; @@ -62,7 +67,11 @@ class CenterUDPBusiness { let a = string2Bytes(Number(`${params.id}${fillZero(params.placeId, 3)}`), 2 * 8); let b = string2Bytes(Number(`${fillZero(params.carNo, 4)}${AppStorage.get('lshNo')}`), 4 * 8); let c = string2Bytes(params.list.length, 2 * 8); - return [...a, ...b, ...c]; + let result: number[] = [] + a?.forEach(item => result.push(item)) + b?.forEach(item => result.push(item)) + c?.forEach(item => result.push(item)) + return result; } private setMessageExclusive(tmpList: Array) { @@ -93,12 +102,12 @@ class CenterUDPBusiness { for (let i = 0; i < str.length; i++) { tmpList.push(NumberToByteArray(str.charCodeAt(i), 1 * 8)[0]) } - const carInfo = AppStorage.get('carInfo') + const carInfo = AppStorage.get('carInfo')! const data: UDPParamType = { id: 31, list: tmpList, - carNo: carInfo.carNo, - placeId: carInfo.examinationRoomId + carNo: carInfo.carNo!, + placeId: carInfo.examinationRoomId! } const param = this.setWholeMsg(data) this.udp.sendMsg(param); @@ -117,9 +126,9 @@ class CenterUDPBusiness { return new Promise((resolve, reject) => { try { let result: EnvironmentConfigurationType = - AppStorage.get("EnvironmentConfiguration") - const carInfo: CarInfoType = AppStorage.get('carInfo') - this.udp.create(result.udplocalIp, '8800', carInfo?.udpAddress, carInfo?.messagePort) + AppStorage.get("EnvironmentConfiguration")! + const carInfo: CarInfoType = AppStorage.get('carInfo')! + this.udp.create(result.udplocalIp!, '8800', carInfo.udpAddress!, carInfo.messagePort!) .then(resolve) .catch(reject) this.udp.setDealMethod(this.dealMsg) diff --git a/entry/src/main/ets/utils/business/JudgeUdpBusiness.ets b/entry/src/main/ets/utils/business/JudgeUdpBusiness.ets index fa0f2856..74488dcd 100644 --- a/entry/src/main/ets/utils/business/JudgeUdpBusiness.ets +++ b/entry/src/main/ets/utils/business/JudgeUdpBusiness.ets @@ -28,7 +28,7 @@ function string2Bytes(num: number | string, len: number) { let str = (Math.floor(Number(num))).toString(2); if (str.length > len) { console.log('数据长度不对~~'); - return + return [] } let byteString = FillZero(str, len); @@ -48,7 +48,7 @@ function string2Bytes(num: number | string, len: number) { class JudgeUdpBusiness { private static instance: JudgeUdpBusiness - private udp: UdpClient + private udp: UdpClient = new UdpClient() private currentUdpIndex = 0; public udpIndex = 0; @@ -81,7 +81,11 @@ class JudgeUdpBusiness { let a = string2Bytes(Number(`${params.id}${fillZero(params.placeId, 3)}`), 2 * 8); let b = string2Bytes(Number(`${fillZero(params.carNo, 4)}${AppStorage.get('lshNo')}`), 4 * 8); let c = string2Bytes(params.list.length, 2 * 8); - return [...a, ...b, ...c]; + let result: number[] = [] + a?.forEach(item => result.push(item)) + b?.forEach(item => result.push(item)) + c?.forEach(item => result.push(item)) + return result; } private setMessageExclusive(tmpList: Array) { @@ -231,7 +235,7 @@ class JudgeUdpBusiness { } async getMessageHeartbeat(msg: string): Promise { - const carInfo: CarInfoType = AppStorage.get('carInfo') + const carInfo: CarInfoType = AppStorage.get('carInfo')! let gpsDigit = JudgeConfig.fourInOneScreen.gpsDigit const asclshArr = StringToASCII(FillZero( AppStorage.get("singlePlay") @@ -240,7 +244,7 @@ class JudgeUdpBusiness { 13)); const ascksyhArr = StringToASCII(carInfo.examSubject === '2' ? '0000000000000' : '1111111111111') const ascsbxhArr = StringToASCII('00000000') - const serialIndex = AppStorage.get("serialIndex") + const serialIndex = AppStorage.get("serialIndex")! const plcData = await this.getPlcData(msg); let param: number[] = Object.entries(plcData.sensor) .filter((item: [string, number]) => { @@ -328,13 +332,13 @@ class JudgeUdpBusiness { } sendData(bytes: number[]) { - const carInfo: CarInfoType = AppStorage.get('carInfo') + const carInfo: CarInfoType = AppStorage.get('carInfo')! if (this.udpIndex > this.currentUdpIndex) { this.udp.sendMsgExt({ id: 45, list: bytes, - carNo: carInfo.carNo, - placeId: carInfo.examinationRoomId + carNo: carInfo.carNo!, + placeId: carInfo.examinationRoomId! }) this.currentUdpIndex = this.udpIndex } @@ -342,24 +346,24 @@ class JudgeUdpBusiness { //申请远程扣分查询 askKf(directives: number) { - const carInfo: CarInfoType = AppStorage.get('carInfo') + const carInfo: CarInfoType = AppStorage.get('carInfo')! CenterUDPClientInstance.sendData({ id: 35, list: [directives], - carNo: carInfo.carNo, - placeId: carInfo.examinationRoomId, + carNo: carInfo.carNo!, + placeId: carInfo.examinationRoomId!, }) console.info('surenjun', `考车查询扣分项目内容,请求指令为:${directives}`) } //确定远程扣分 confirmKf(directives: number, code: number) { - const carInfo: CarInfoType = AppStorage.get('carInfo') + const carInfo: CarInfoType = AppStorage.get('carInfo')! CenterUDPClientInstance.sendData({ id: 37, list: [directives, code], - carNo: carInfo.carNo, - placeId: carInfo.examinationRoomId + carNo: carInfo.carNo!, + placeId: carInfo.examinationRoomId! }) console.info('surenjun', `考车发送确定扣分指令,指令为:${directives}`) } @@ -368,9 +372,9 @@ class JudgeUdpBusiness { return new Promise((resolve, reject) => { try { let result: EnvironmentConfigurationType = - AppStorage.get("EnvironmentConfiguration") - const carInfo: CarInfoType = AppStorage.get('carInfo') - this.udp.create(result.udplocalIp, '8080', carInfo.udpAddress, carInfo.hintPort).then(resolve).catch(reject) + AppStorage.get("EnvironmentConfiguration")! + const carInfo: CarInfoType = AppStorage.get('carInfo')! + this.udp.create(result.udplocalIp!, '8080', carInfo.udpAddress!, carInfo.hintPort!).then(resolve).catch(reject) ObtainUdpBusinessInstance.onMsg(async (msg: string) => { let prevJd = 0, preWd = 0 @@ -378,8 +382,8 @@ class JudgeUdpBusiness { if (stashArr[0] != '#DN_GD') { return } - const udpIndex = AppStorage.get("udpIndex"); - const isJudge = AppStorage.get("isJudge"); + const udpIndex = AppStorage.get("udpIndex")!; + const isJudge = AppStorage.get("isJudge")!; if (udpIndex % 5 === 0 && !isJudge) { const bytes = await this.getMessageHeartbeat(msg); const msgArr: string[] = msg.split(','); diff --git a/entry/src/main/ets/utils/business/UdpEvent.ets b/entry/src/main/ets/utils/business/UdpEvent.ets index b5ae3b12..fc9cd6db 100644 --- a/entry/src/main/ets/utils/business/UdpEvent.ets +++ b/entry/src/main/ets/utils/business/UdpEvent.ets @@ -21,22 +21,22 @@ class JudgeEmitter { } private kfContent: Function = () => { } - private directives: string + private directives: string = '' //监听开始考试 - public onBeginExam(callBack?: Function) { + public onBeginExam(callBack: Function) { console.info('surenjun', '注册远程开始考试事件') this.beginExamCallBack = callBack } //监听结束考试 - public onEndExam(callBack?: Function) { + public onEndExam(callBack: Function) { console.info('surenjun', '注册远程结束考试事件') this.endExamCallBack = callBack } //监听扣分处理 - public onKfExam(callBack?: Function) { + public onKfExam(callBack: Function) { console.info('surenjun', '注册远程扣分考试事件') this.kfContent = callBack }