fix: 完善新评判
This commit is contained in:
		
							parent
							
								
									d6a5c9fdba
								
							
						
					
					
						commit
						ee4d54e8d7
					
				| @ -55,9 +55,9 @@ export default class JudgeBusiness { | |||||||
|   public kfArr?: MarkRule[] |   public kfArr?: MarkRule[] | ||||||
|   public carztStr: string |   public carztStr: string | ||||||
|   public ksjs?: JudgeKSJS |   public ksjs?: JudgeKSJS | ||||||
|  |   public plcData?: PLCType | ||||||
|   private judgeUI: JudgeUI |   private judgeUI: JudgeUI | ||||||
|   private tempData?: PLCType |   private tempData?: PLCType | ||||||
|   private plcData?: PLCType |  | ||||||
|   // 是否发送udp |   // 是否发送udp | ||||||
|   private isUdpEnd: boolean = false |   private isUdpEnd: boolean = false | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -13,6 +13,7 @@ import { dConsole } from '../../utils/LogWorker'; | |||||||
| import VoiceAnnounce from '../judgeSDK/utils/voiceAnnouncements'; | import VoiceAnnounce from '../judgeSDK/utils/voiceAnnouncements'; | ||||||
| import JudgeBusiness from './JudgeBusiness'; | import JudgeBusiness from './JudgeBusiness'; | ||||||
| import { examJudgeArtificialItem, examJudgeSoundEnd } from './JudgeSDKUtils'; | import { examJudgeArtificialItem, examJudgeSoundEnd } from './JudgeSDKUtils'; | ||||||
|  | import { ProjectStart, UploadProgressPhoto } from './ProcessDataProcessing'; | ||||||
| import { CurrentProjectConversion, DeductionProjectConversion, DetectingDifferences, GetCarStatus } from './utils'; | import { CurrentProjectConversion, DeductionProjectConversion, DetectingDifferences, GetCarStatus } from './utils'; | ||||||
| 
 | 
 | ||||||
| export const JudgingFn = async (strData: string, callBack: Function, judgeUI: JudgeUI, that: JudgeBusiness) => { | export const JudgingFn = async (strData: string, callBack: Function, judgeUI: JudgeUI, that: JudgeBusiness) => { | ||||||
| @ -230,6 +231,15 @@ export const SetJudgeItem = async (itemno: string, type: 1 | 2) => { | |||||||
|   dConsole.info(JudgeTag, `人工评判${type == 1 ? '进入' : '取消'}项目-${itemno}`) |   dConsole.info(JudgeTag, `人工评判${type == 1 ? '进入' : '取消'}项目-${itemno}`) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | /** | ||||||
|  |  * 改变考试状态 | ||||||
|  |  * old goVoiceAnnounce | ||||||
|  |  * @param event | ||||||
|  |  * @param xmdm | ||||||
|  |  * @param kf | ||||||
|  |  * @param judgeUI | ||||||
|  |  * @param that | ||||||
|  |  */ | ||||||
| const changeExamStatus = async (event: number, xmdm: number, kf: MarkRule[], judgeUI: JudgeUI, that: JudgeBusiness) => { | const changeExamStatus = async (event: number, xmdm: number, kf: MarkRule[], judgeUI: JudgeUI, that: JudgeBusiness) => { | ||||||
|   switch (event) { |   switch (event) { | ||||||
|     case 1: { |     case 1: { | ||||||
| @ -242,20 +252,25 @@ const changeExamStatus = async (event: number, xmdm: number, kf: MarkRule[], jud | |||||||
|         } |         } | ||||||
|       }, 200) |       }, 200) | ||||||
|       if (!project.isEnd) { |       if (!project.isEnd) { | ||||||
|         that.judgeTask.addTask(async () => { |         // that.judgeTask.addTask(async () => { | ||||||
|           dConsole.info(JudgeTag, `项目开始-${xmdm}-${project.name}`) |         //   dConsole.info(JudgeTag, `项目开始-${xmdm}-${project.name}`) | ||||||
|           await beginProject(xmdm) |         //   await beginProject(xmdm) | ||||||
|         }, { |         // }, { | ||||||
|           isDelay: true |         //   isDelay: true | ||||||
|         }) |         // }) | ||||||
|         that.judgeTask.addTask(async () => { |         ProjectStart(xmdm, that.xmxh, judgeUI) | ||||||
|           dConsole.info(JudgeTag, `项目-${xmdm}-上传照片 start`) |         // that.judgeTask.addTask(async () => { | ||||||
|           await uploadProgressPhoto(xmdm) |         //   dConsole.info(JudgeTag, `项目-${xmdm}-上传照片 start`) | ||||||
|         }, { |         //   await uploadProgressPhoto(xmdm) | ||||||
|           isDelay: true |         // }, { | ||||||
|         }) |         //   isDelay: true | ||||||
|  |         // }) | ||||||
|  |         UploadProgressPhoto(xmdm, that.plcData, judgeUI) | ||||||
|       } |       } | ||||||
|       break; |       break; | ||||||
|     } |     } | ||||||
|  |     case 2: { | ||||||
|  |       break; | ||||||
|  |     } | ||||||
|   } |   } | ||||||
| } | } | ||||||
| @ -16,6 +16,7 @@ import { | |||||||
| import { GetPhotoBase64 } from '../../utils/Common'; | import { GetPhotoBase64 } from '../../utils/Common'; | ||||||
| import dayTs from '../../utils/Date'; | import dayTs from '../../utils/Date'; | ||||||
| import { dConsole } from '../../utils/LogWorker'; | import { dConsole } from '../../utils/LogWorker'; | ||||||
|  | import { ProcessDataTaskPoolInstance } from './ProcessDataTaskPool'; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * beginProject 项目开始 |  * beginProject 项目开始 | ||||||
| @ -44,6 +45,7 @@ export const ProjectStart = (ksxm: number, xmxh: string, judgeUI: JudgeUI) => { | |||||||
|     drvexam |     drvexam | ||||||
|   } |   } | ||||||
|   dConsole.log(ProcessDataTag, "项目开始数据处理", data) |   dConsole.log(ProcessDataTag, "项目开始数据处理", data) | ||||||
|  |   ProcessDataTaskPoolInstance.addTask(data) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
| @ -72,6 +74,7 @@ export const UploadProgressPhoto = async (ksxm: number, plcData: PLCType, judgeU | |||||||
|     drvexam |     drvexam | ||||||
|   }; |   }; | ||||||
|   dConsole.log(ProcessDataTag, "上传过程照片数据处理", data); |   dConsole.log(ProcessDataTag, "上传过程照片数据处理", data); | ||||||
|  |   ProcessDataTaskPoolInstance.addTask(data) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
| @ -133,6 +136,7 @@ export const DeductPoints = (ksxm: number, kf: MarkRule, xmmcEndCode: string, ju | |||||||
|     drvexam |     drvexam | ||||||
|   } |   } | ||||||
|   dConsole.log(ProcessDataTag, "扣分上传数据", data) |   dConsole.log(ProcessDataTag, "扣分上传数据", data) | ||||||
|  |   ProcessDataTaskPoolInstance.addTask(data) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
| @ -163,6 +167,7 @@ export const ProjectEnd = (ksxm: number, xmxh: string, judgeUI: JudgeUI) => { | |||||||
|     drvexam |     drvexam | ||||||
|   } |   } | ||||||
|   dConsole.log(ProcessDataTag, "结束项目数据", data) |   dConsole.log(ProcessDataTag, "结束项目数据", data) | ||||||
|  |   ProcessDataTaskPoolInstance.addTask(data) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -5,10 +5,14 @@ import http from '@ohos.net.http'; | |||||||
| import Request from '../../utils/Request'; | import Request from '../../utils/Request'; | ||||||
| 
 | 
 | ||||||
| export class ProcessDataTaskPool { | export class ProcessDataTaskPool { | ||||||
|   private queue: RegulatoryInterfaceParams[] = [] |   private queue: RegulatoryInterfaceParams[] = []; | ||||||
|   private isProcessing: boolean = false; |   private isProcessing: boolean = false; | ||||||
|   /** 最大重试次数。1次初次尝试 + 5次重试 = 总共6次尝试。 */ |   /** 最大重试次数。1次初次尝试 + 5次重试 = 总共6次尝试。 */ | ||||||
|   private readonly maxRetries = 5; |   private readonly maxRetries = 5; | ||||||
|  |   /** 最小处理时间(毫秒) */ | ||||||
|  |   private readonly minProcessingTime = 2000; | ||||||
|  |   /** 记录每个任务的开始处理时间 */ | ||||||
|  |   private taskStartTime: number = 0; | ||||||
| 
 | 
 | ||||||
|   public addTask(dataItem: RegulatoryInterfaceParams): void { |   public addTask(dataItem: RegulatoryInterfaceParams): void { | ||||||
|     console.info(`[Queue] 新任务已添加: ${JSON.stringify(dataItem)},当前队列长度: ${this.queue.length + 1}`); |     console.info(`[Queue] 新任务已添加: ${JSON.stringify(dataItem)},当前队列长度: ${this.queue.length + 1}`); | ||||||
| @ -23,11 +27,10 @@ export class ProcessDataTaskPool { | |||||||
|   private triggerProcessing(): void { |   private triggerProcessing(): void { | ||||||
|     if (this.isProcessing) { |     if (this.isProcessing) { | ||||||
|       console.log('[Queue] 处理器正在运行中,新任务将在稍后被处理。'); |       console.log('[Queue] 处理器正在运行中,新任务将在稍后被处理。'); | ||||||
|       return; // 如果已经在处理,则直接返回,新任务会被正在运行的循环消费掉 |       return; | ||||||
|     } |     } | ||||||
|     // 使用 Promise.resolve().then() 来确保 processQueue 在下一个事件循环中异步执行 |     // [优化] 直接调用 async 函数,它会立即返回一个 Promise,不会阻塞当前执行流,效果与 Promise.resolve().then() 相同但更简洁。 | ||||||
|     // 这可以防止阻塞当前的 addTask 调用 |     this.processQueue(); | ||||||
|     Promise.resolve().then(() => this.processQueue()); |  | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   private async processQueue(): Promise<void> { |   private async processQueue(): Promise<void> { | ||||||
| @ -36,33 +39,52 @@ export class ProcessDataTaskPool { | |||||||
| 
 | 
 | ||||||
|     while (this.queue.length > 0) { |     while (this.queue.length > 0) { | ||||||
|       const taskData = this.queue[0]; // 查看队首任务 |       const taskData = this.queue[0]; // 查看队首任务 | ||||||
|  |       this.taskStartTime = Date.now(); // 记录任务开始时间 | ||||||
| 
 | 
 | ||||||
|       try { |       try { | ||||||
|         console.log(`[Queue] 开始处理任务: ${JSON.stringify(taskData)}`); |         console.log(`[Queue] 开始处理任务: ${JSON.stringify(taskData)}`); | ||||||
|         // 此方法若成功则正常返回,若永久失败则会抛出错误 | 
 | ||||||
|         let obj: WuxiExamType = { |         // 预先记录将要处理的数据 | ||||||
|  |         const obj: WuxiExamType = { | ||||||
|           xtlb: taskData.xtlb, |           xtlb: taskData.xtlb, | ||||||
|           jkxlh: taskData.jkxlh, |           jkxlh: taskData.jkxlh, | ||||||
|           jkid: taskData.jkid, |           jkid: taskData.jkid, | ||||||
|           drvexam: { |           drvexam: { | ||||||
|             zp: "", |             zp: "", | ||||||
|           }, |           }, | ||||||
|         } |         }; | ||||||
|         dConsole.writeProcessData(ProcessDataEnumType.WuxiExam, JSON.stringify(obj)) |         dConsole.writeProcessData(ProcessDataEnumType.WuxiExam, JSON.stringify(obj)); | ||||||
|  | 
 | ||||||
|  |         // 此方法若成功则正常返回,若永久失败则会抛出错误 | ||||||
|         await this.processSingleTaskWithRetries(taskData); |         await this.processSingleTaskWithRetries(taskData); | ||||||
|  | 
 | ||||||
|         // 任务成功,将其从队列中移除 |         // 任务成功,将其从队列中移除 | ||||||
|         this.queue.shift(); |         this.queue.shift(); | ||||||
|         console.log(`[Queue] ✅ 任务处理成功,已从队列移除。剩余任务: ${this.queue.length}`); |         console.log(`[Queue] ✅ 任务处理成功,已从队列移除。剩余任务: ${this.queue.length}`); | ||||||
|  | 
 | ||||||
|  |         // 计算任务实际耗时 | ||||||
|  |         const elapsedTime = Date.now() - this.taskStartTime; | ||||||
|  |         // 如果处理时间小于最小要求时间,则延迟剩余时间 | ||||||
|  |         if (elapsedTime < this.minProcessingTime) { | ||||||
|  |           const delayTime = this.minProcessingTime - elapsedTime; | ||||||
|  |           console.log(`[Queue] 任务处理耗时 ${elapsedTime}ms,需要延迟 ${delayTime}ms 以满足最小处理时间要求`); | ||||||
|  |           await this.delay(delayTime); | ||||||
|  |         } | ||||||
|       } catch (error) { |       } catch (error) { | ||||||
|         // 捕获到永久失败的错误 |         // **[健壮性改进]** 捕获到永久失败的错误。 | ||||||
|         console.error(`[Queue] 🔥 致命错误: ${(error as Error).message}`); |         // 原有逻辑会清空整个队列,导致后续任务丢失。 | ||||||
|         console.error('[Queue] 队列已停止,后续任务将不会被处理。'); |         // 优化后的逻辑是:仅移除当前失败的任务,并记录错误,然后继续处理队列中的下一个任务。 | ||||||
|  |         console.error(`[Queue] 🔥 任务永久失败: ${(error as Error).message}`); | ||||||
|  |         const failedTask = this.queue.shift(); // 移除失败的任务 | ||||||
|  |         console.error(`[Queue] 失败的任务已被移除: ${JSON.stringify(failedTask)},将继续处理下一个任务。`); | ||||||
| 
 | 
 | ||||||
|         // (可选)可以在此处清空队列,防止下次意外启动时处理旧任务 |         // 即使任务失败,也需要满足最小处理时间要求 | ||||||
|         this.queue = []; |         const elapsedTime = Date.now() - this.taskStartTime; | ||||||
| 
 |         if (elapsedTime < this.minProcessingTime) { | ||||||
|         // 终止循环 |           const delayTime = this.minProcessingTime - elapsedTime; | ||||||
|         break; |           console.log(`[Queue] 失败任务处理耗时 ${elapsedTime}ms,需要延迟 ${delayTime}ms 以满足最小处理时间要求`); | ||||||
|  |           await this.delay(delayTime); | ||||||
|  |         } | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -70,27 +92,40 @@ export class ProcessDataTaskPool { | |||||||
|     console.log('[Queue] 处理器已停止。'); |     console.log('[Queue] 处理器已停止。'); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   /** | ||||||
|  |    * 延迟指定时间 | ||||||
|  |    * @param ms 延迟的毫秒数 | ||||||
|  |    */ | ||||||
|  |   private delay(ms: number): Promise<void> { | ||||||
|  |     return new Promise(resolve => setTimeout(resolve, ms)); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|   private async processSingleTaskWithRetries(taskData: RegulatoryInterfaceParams): Promise<void> { |   private async processSingleTaskWithRetries(taskData: RegulatoryInterfaceParams): Promise<void> { | ||||||
|     // 1 次初次尝试 + 5 次重试 |     // 1 次初次尝试 + 5 次重试 | ||||||
|     for (let attempt = 0; attempt <= this.maxRetries; attempt++) { |     for (let attempt = 0; attempt <= this.maxRetries; attempt++) { | ||||||
|       const attemptNum = attempt + 1; |       const attemptNum = attempt + 1; | ||||||
|       try { |       try { | ||||||
|         const attemptType = attempt === 0 ? '初次尝试' : `重试 ${attempt}`; |         const attemptType = attempt === 0 ? '初次尝试' : `重试 ${attempt}`; | ||||||
|         console.log(`[Queue] 开始上传 (${attemptType}, 总共第 ${attemptNum} 次): ${JSON.stringify(taskData)}`); |         console.log(`[Queue] 开始上传 (${attemptType}, 总共第 ${attemptNum} 次)`); | ||||||
|  | 
 | ||||||
|  |         // **注意**: 这里传递的是 taskData 的引用,为了防止 worker 中意外修改原始数据, | ||||||
|  |         // 最佳实践是在 worker 内部或传递前进行深拷贝。 | ||||||
|  |         // 但根据我们下面的修复,worker 不再修改原始数据,所以这里是安全的。 | ||||||
|         const result: WR = await taskpool.execute(uploadWorkerTask, taskData); |         const result: WR = await taskpool.execute(uploadWorkerTask, taskData); | ||||||
|         dConsole.writeProcessData(ProcessDataEnumType.WuxiExam, JSON.stringify(result)) | 
 | ||||||
|  |         dConsole.writeProcessData(ProcessDataEnumType.WuxiExam, JSON.stringify(result)); | ||||||
|         if (result.code === 1) { |         if (result.code === 1) { | ||||||
|           console.log(`[Queue] ✔️ 上传成功 (在第 ${attemptNum} 次尝试)`); |           console.log(`[Queue] ✔️ 上传成功 (在第 ${attemptNum} 次尝试)`); | ||||||
|           return; // 成功,立即返回 |           return; // 成功,立即返回 | ||||||
|         } |         } | ||||||
|         console.warn(`[Queue] ❌ 上传失败 (第 ${attemptNum} 次)。响应: ${result.message}`); |         console.warn(`[Queue] ❌ 上传失败 (第 ${attemptNum} 次)。响应: ${result.message}`); | ||||||
|       } catch (e) { |       } catch (e) { | ||||||
|         console.error(`[Queue] ❌ TaskPool 执行错误 (第 ${attemptNum} 次): ${e}`); |         // **[健壮性改进]** 现在可以捕获从 Worker 抛出的更详细的异常信息 | ||||||
|  |         console.error(`[Queue] ❌ TaskPool 执行或网络错误 (第 ${attemptNum} 次): ${e}`); | ||||||
|       } |       } | ||||||
| 
 | 
 | ||||||
|       // 如果这是最后一次尝试且依然失败,则不再等待,直接跳出循环去抛出错误 |  | ||||||
|       if (attempt === this.maxRetries) { |       if (attempt === this.maxRetries) { | ||||||
|         break; |         break; // 最后一次尝试失败后,跳出循环去抛出错误 | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -99,26 +134,28 @@ export class ProcessDataTaskPool { | |||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | export const ProcessDataTaskPoolInstance = new ProcessDataTaskPool(); | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * 这是将在 Worker 线程中执行的任务函数。 |  * 这是将在 Worker 线程中执行的任务函数。 | ||||||
|  * 它负责执行单次的上传尝试。 |  * 它负责执行单次的上传尝试。 | ||||||
|  * |  | ||||||
|  * @param data 需要上传的单条数据项 |  * @param data 需要上传的单条数据项 | ||||||
|  * @returns 一个包含本次上传尝试结果的对象 |  * @returns 一个包含本次上传尝试结果的对象 | ||||||
|  */ |  */ | ||||||
| export async function uploadWorkerTask(data: RegulatoryInterfaceParams): Promise<WR> { | export async function uploadWorkerTask(data: RegulatoryInterfaceParams): Promise<WR> { | ||||||
|   let singlePlay: boolean = false |   // 这两个变量似乎未在逻辑中使用,暂时保持原样 | ||||||
|   let isJGNew = false |   let singlePlay: boolean = false; | ||||||
|  |   let isJGNew = false; | ||||||
|   try { |   try { | ||||||
|     const response = await sendProcessData(data, singlePlay, isJGNew); |     const response = await sendProcessData(data, singlePlay, isJGNew); | ||||||
|     // 根据返回的 code 判断是否成功 |     return response; | ||||||
|     return response |  | ||||||
|   } catch (err) { |   } catch (err) { | ||||||
|     // 捕获请求过程中可能出现的异常 |     // [健壮性改进] 捕获请求过程中的异常,并重新抛出。 | ||||||
|  |     // 这能让主线程的 taskpool.execute() promise 变为 rejected 状态, | ||||||
|  |     // 从而被 processSingleTaskWithRetries 中的 try-catch 捕获,保留了详细的错误信息。 | ||||||
|     const error = err as Error; |     const error = err as Error; | ||||||
|     console.error(`[Worker] 上传时发生异常: ${error.message}`); |     console.error(`[Worker] 上传时发生异常: ${error.message}`); | ||||||
|     return { code: 20038 }; |     throw error; // 重新抛出异常 | ||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -139,32 +176,8 @@ async function sendProcessData(data: RegulatoryInterfaceParams, singlePlay: bool | |||||||
|   return await Request<object>({ |   return await Request<object>({ | ||||||
|     host: JGHOST, |     host: JGHOST, | ||||||
|     url: '/dems_ws/services/TmriOutAccess?wsdl', |     url: '/dems_ws/services/TmriOutAccess?wsdl', | ||||||
|     data: `<?xml version="1.0"?> |     data: `<?xml version="1.0"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" > <SOAP-ENV:Body> <writeObjectOut  xmlns="http://service.es.doron"> <xtlb>${data.xtlb}</xtlb> <jkxlh>${data.jkxlh}</jkxlh> <jkid>${data.jkid}</jkid> <UTF8XmlDoc> <![CDATA[ <?xm lversion="1.0 "encoding="GBK"?> <root> <drvexam> ${drvexamArr} </drvexam> </root> ]]> </UTF8XmlDoc> </writeObjectOut> </SOAP-ENV:Body> </SOAP-ENV:Envelope>`, | ||||||
|                 <SOAP-ENV:Envelope |  | ||||||
|                   xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" |  | ||||||
|                   xmlns:xsd="http://www.w3.org/2001/XMLSchema" |  | ||||||
|                   xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" |  | ||||||
|                  > |  | ||||||
|                  <SOAP-ENV:Body> |  | ||||||
|                     <writeObjectOut  xmlns="http://service.es.doron"> |  | ||||||
|                       <xtlb>${data.xtlb}</xtlb> |  | ||||||
|                       <jkxlh>${data.jkxlh}</jkxlh> |  | ||||||
|                       <jkid>${data.jkid}</jkid> |  | ||||||
|                       <UTF8XmlDoc> |  | ||||||
|                       <![CDATA[ |  | ||||||
|                         <?xm lversion="1.0 "encoding="GBK"?> |  | ||||||
|                         <root> |  | ||||||
|                           <drvexam> |  | ||||||
|                             ${drvexamArr} |  | ||||||
|                           </drvexam> |  | ||||||
|                         </root> |  | ||||||
|                       ]]> |  | ||||||
|                       </UTF8XmlDoc> |  | ||||||
|                     </writeObjectOut> |  | ||||||
|                  </SOAP-ENV:Body> |  | ||||||
|                </SOAP-ENV:Envelope>`, |  | ||||||
|     method: http.RequestMethod.POST, |     method: http.RequestMethod.POST, | ||||||
|     xml: true |     xml: true | ||||||
|   }) |   }) | ||||||
| } | } | ||||||
| 
 |  | ||||||
| @ -16,19 +16,12 @@ class differentialSignal { | |||||||
|       console.error(TCPTag, "TCP发生错误") |       console.error(TCPTag, "TCP发生错误") | ||||||
|       this.differentialSignalTcp.reBind() |       this.differentialSignalTcp.reBind() | ||||||
|     }) |     }) | ||||||
|     // let config: EnvironmentConfigurationType = |  | ||||||
|     //   AppStorage.get<EnvironmentConfigurationType>("EnvironmentConfiguration") || { |  | ||||||
|     //     tcplocalIp: "", |  | ||||||
|     //     tcplocalIpPort: "", |  | ||||||
|     //     tcpOppositeIp: "", |  | ||||||
|     //     tcpOppositePort: "" |  | ||||||
|     //   } |  | ||||||
|     console.log(TCPTag, "初始化", JSON.stringify(config)) |     console.log(TCPTag, "初始化", JSON.stringify(config)) | ||||||
|     if (config.tcplocalIp || config.tcplocalIpPort || config.tcpOppositeIp || config.tcpOppositePort) { |     if (config.tcplocalIp || config.tcplocalIpPort || config.tcpOppositeIp || config.tcpOppositePort) { | ||||||
|       this.differentialSignalTcp.init(config.tcplocalIp || "", config.tcplocalIpPort || "", config.tcpOppositeIp || "", |       this.differentialSignalTcp.init(config.tcplocalIp || "", config.tcplocalIpPort || "", config.tcpOppositeIp || "", | ||||||
|         config.tcpOppositePort || ""); |         config.tcpOppositePort || ""); | ||||||
|     } else { |     } else { | ||||||
|       console.log(TCPTag, "未配置差分信号TCP信息,请在环境配置中设置") |       console.error(TCPTag, "未配置差分信号TCP信息,请在环境配置中设置") | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user