错误修改
This commit is contained in:
parent
313998c531
commit
284de0a0e3
@ -136,7 +136,7 @@ export async function uploadExamProgressData(params: UploadExamProgressDataParam
|
||||
if (singlePlay) {
|
||||
return
|
||||
}
|
||||
return request({
|
||||
return request<object>({
|
||||
url: '/der2/services/exam/uploadExamDataFile.ws',
|
||||
data: `<?xml version="1.0" encoding="UTF-8"?>
|
||||
<uploadExamDataFileReq>
|
||||
|
||||
@ -108,7 +108,7 @@ interface GetPhotosForOtherParams {
|
||||
|
||||
//参数下发读表接口
|
||||
export async function getPhotosForOther(params: GetPhotosForOtherParams) {
|
||||
return request({
|
||||
return request<object>({
|
||||
url: '/der2/services/third/getPhotosForOther.ws',
|
||||
data: `<?xml version="1.0" encoding="utf-8"?><getBmzpReq><head><time>${params.time}</time></head><body><sfzmhm>${params.sfzmhm}</sfzmhm><kskm>2</kskm><zptype>${params.zptype}</zptype><ksrq>${params.ksrq}</ksrq></body></getBmzpReq>`,
|
||||
method: http.RequestMethod.POST,
|
||||
@ -118,7 +118,7 @@ export async function getPhotosForOther(params: GetPhotosForOtherParams) {
|
||||
}
|
||||
|
||||
export async function setVideoText() {
|
||||
return request({
|
||||
return request<object>({
|
||||
url: 'http://admin:12345qwe@192.168.36.94/PSIA/Custom/SelfExt/OSD/channels/2/textOverlay',
|
||||
data: `<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<TextOverlayList><TextOverlay><id>1</id><enabled>true</enabled><positionX>0</positionX><positionY>0</positionY><displayText>1222</displayText></TextOverlay><TextOverlay><id>2</id><enabled>true</enabled><positionX>0</positionX><positionY>0</positionY><displayText>2222</displayText></TextOverlay><TextOverlay><id>3</id><enabled>false</enabled><positionX>0</positionX><positionY>0</positionY><displayText></displayText></TextOverlay><TextOverlay><id>4</id><enabled>false</enabled><positionX>0</positionX><positionY>0</positionY><displayText></displayText></TextOverlay><TextOverlay><id>5</id><enabled>false</enabled><positionX>0</positionX><positionY>0</positionY><displayText></displayText></TextOverlay><TextOverlay><id>6</id><enabled>false</enabled><positionX>0</positionX><positionY>0</positionY><displayText></displayText></TextOverlay><TextOverlay><id>7</id><enabled>false</enabled><positionX>0</positionX><positionY>0</positionY><displayText></displayText></TextOverlay><TextOverlay><id>8</id><enabled>false</enabled><positionX>0</positionX><positionY>0</positionY><displayText></displayText></TextOverlay></TextOverlayList>`,
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -116,7 +116,9 @@ function dealCenterCode(message: string, isNewCenter: boolean = false): CenterCo
|
||||
return undefined
|
||||
}
|
||||
|
||||
export default function Request<T extends Object>(options: RequestOption): Promise<T | CenterCodeResult> {
|
||||
type RequestResult = Object | object | string | CenterCodeResult
|
||||
|
||||
export default function Request<T extends RequestResult>(options: RequestOption): Promise<T> {
|
||||
return new Promise((resolve, reject) => {
|
||||
const instance = http.createHttp()
|
||||
const baseURL = options.host || base
|
||||
@ -136,7 +138,7 @@ export default function Request<T extends Object>(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) {
|
||||
|
||||
@ -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<void> {
|
||||
return this.udp.bind({
|
||||
bindUdp(): Promise<void> | 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<void> {
|
||||
close(): Promise<void> | undefined {
|
||||
this.messageEvents = []
|
||||
this.errorEvents = []
|
||||
this.dealMethod = undefined
|
||||
@ -84,8 +84,8 @@ export default class UdpClient {
|
||||
this.dealMethod = fun
|
||||
}
|
||||
|
||||
sendMsg(data: ArrayBuffer | string): Promise<void> {
|
||||
return this.udp.send({
|
||||
sendMsg(data: ArrayBuffer | string): Promise<void> | undefined {
|
||||
return this.udp?.send({
|
||||
data,
|
||||
address: {
|
||||
address: this.oppositeIp, port: parseInt(this.oppositeIpPort), family: 1
|
||||
|
||||
@ -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<number> = [...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<number>) {
|
||||
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<number>) {
|
||||
@ -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<CarInfoType>('carInfo')
|
||||
const carInfo = AppStorage.get<CarInfoType>('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<EnvironmentConfigurationType>("EnvironmentConfiguration")
|
||||
const carInfo: CarInfoType = AppStorage.get<CarInfoType>('carInfo')
|
||||
this.udp.create(result.udplocalIp, '8800', carInfo?.udpAddress, carInfo?.messagePort)
|
||||
AppStorage.get<EnvironmentConfigurationType>("EnvironmentConfiguration")!
|
||||
const carInfo: CarInfoType = AppStorage.get<CarInfoType>('carInfo')!
|
||||
this.udp.create(result.udplocalIp!, '8800', carInfo.udpAddress!, carInfo.messagePort!)
|
||||
.then(resolve)
|
||||
.catch(reject)
|
||||
this.udp.setDealMethod(this.dealMsg)
|
||||
|
||||
@ -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<number>) {
|
||||
@ -231,7 +235,7 @@ class JudgeUdpBusiness {
|
||||
}
|
||||
|
||||
async getMessageHeartbeat(msg: string): Promise<number[]> {
|
||||
const carInfo: CarInfoType = AppStorage.get<CarInfoType>('carInfo')
|
||||
const carInfo: CarInfoType = AppStorage.get<CarInfoType>('carInfo')!
|
||||
let gpsDigit = JudgeConfig.fourInOneScreen.gpsDigit
|
||||
const asclshArr = StringToASCII(FillZero(
|
||||
AppStorage.get<boolean>("singlePlay")
|
||||
@ -240,7 +244,7 @@ class JudgeUdpBusiness {
|
||||
13));
|
||||
const ascksyhArr = StringToASCII(carInfo.examSubject === '2' ? '0000000000000' : '1111111111111')
|
||||
const ascsbxhArr = StringToASCII('00000000')
|
||||
const serialIndex = AppStorage.get<number>("serialIndex")
|
||||
const serialIndex = AppStorage.get<number>("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<CarInfoType>('carInfo')
|
||||
const carInfo: CarInfoType = AppStorage.get<CarInfoType>('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<CarInfoType>('carInfo')
|
||||
const carInfo: CarInfoType = AppStorage.get<CarInfoType>('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<CarInfoType>('carInfo')
|
||||
const carInfo: CarInfoType = AppStorage.get<CarInfoType>('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<EnvironmentConfigurationType>("EnvironmentConfiguration")
|
||||
const carInfo: CarInfoType = AppStorage.get<CarInfoType>('carInfo')
|
||||
this.udp.create(result.udplocalIp, '8080', carInfo.udpAddress, carInfo.hintPort).then(resolve).catch(reject)
|
||||
AppStorage.get<EnvironmentConfigurationType>("EnvironmentConfiguration")!
|
||||
const carInfo: CarInfoType = AppStorage.get<CarInfoType>('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<number>("udpIndex");
|
||||
const isJudge = AppStorage.get<boolean>("isJudge");
|
||||
const udpIndex = AppStorage.get<number>("udpIndex")!;
|
||||
const isJudge = AppStorage.get<boolean>("isJudge")!;
|
||||
if (udpIndex % 5 === 0 && !isJudge) {
|
||||
const bytes = await this.getMessageHeartbeat(msg);
|
||||
const msgArr: string[] = msg.split(',');
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user