fix: 济南后置机方案
This commit is contained in:
		
							parent
							
								
									ca44a19722
								
							
						
					
					
						commit
						c2a1a9d760
					
				| @ -2,6 +2,11 @@ | ||||
|   "apiType": 'stageMode', | ||||
|   "buildOption": { | ||||
|     "externalNativeOptions": { | ||||
|       "abiFilters": [ | ||||
|         "arm64-v8a", | ||||
|         "armeabi-v7a", | ||||
|         "x86_64" | ||||
|       ], | ||||
|       "path": "./src/main/cpp/CMakeLists.txt", | ||||
|       "arguments": "", | ||||
|       "cppFlags": "", | ||||
|  | ||||
| @ -1,4 +1,3 @@ | ||||
| import { NewTcpClient, XmlToJson } from '../common/utils/new/tcp' | ||||
| import request from "../common/utils/request" | ||||
| import tempRequest from '../common/utils/tempRequest' | ||||
| 
 | ||||
|  | ||||
| @ -1,7 +1,8 @@ | ||||
| import { getSyncData } from '../common/service/initable'; | ||||
| import request from '../common/utils/request'; | ||||
| import FileUtil from '../common/utils/File'; | ||||
| import { NewTcpClient, XmlToJson } from '../common/utils/new/tcp'; | ||||
| import { HandleCenterCode, NewTcpClient, XmlToJson } from '../common/utils/new/tcp'; | ||||
| import { PrintStr } from '../common/utils/tools'; | ||||
| 
 | ||||
| let baseHost = globalThis.host; | ||||
| 
 | ||||
| @ -45,37 +46,64 @@ export default async function writeObjectOutNew(data, filePath): Promise<WR> { | ||||
|   console.info('surenjun', '调用新监管') | ||||
|   let temp | ||||
|   try { | ||||
|     if (jkid === "17C51") { | ||||
|       temp = await request({ | ||||
|         host: globalThis.JGHOST, | ||||
|         method: 'post', | ||||
|         //是否是新中心
 | ||||
|         isNewCenter: true, | ||||
|         xml: true, | ||||
|         url: '/dems_ws/services/TmriOutAccess?wsdl', | ||||
|         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"> | ||||
|                       <wglb>${wglb}</wglb> | ||||
|                       <jkxlh>${jkxlh}</jkxlh> | ||||
|                       <glbm>${glbm}</glbm> | ||||
|                       <jgbh>${jgbh}</jgbh> | ||||
|                       <sjbs>${sjbs}</sjbs> | ||||
|                       <data>${JSON.stringify(params.data)}</data> | ||||
|                       <file>${JSON.stringify(params.file)}</file> | ||||
|                     </writeObjectOut> | ||||
|                  </SOAP-ENV:Body> | ||||
|                </SOAP-ENV:Envelope>`, | ||||
|       }) | ||||
|     } else { | ||||
|     // if (jkid === "17C51") {
 | ||||
|     //   temp = await request({
 | ||||
|     //     host: globalThis.JGHOST,
 | ||||
|     //     method: 'post',
 | ||||
|     //     //是否是新中心
 | ||||
|     //     isNewCenter: true,
 | ||||
|     //     xml: true,
 | ||||
|     //     url: '/dems_ws/services/TmriOutAccess?wsdl',
 | ||||
|     //     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">
 | ||||
|     //                   <wglb>${wglb}</wglb>
 | ||||
|     //                   <jkxlh>${jkxlh}</jkxlh>
 | ||||
|     //                   <glbm>${glbm}</glbm>
 | ||||
|     //                   <jgbh>${jgbh}</jgbh>
 | ||||
|     //                   <sjbs>${sjbs}</sjbs>
 | ||||
|     //                   <data>${JSON.stringify(params.data)}</data>
 | ||||
|     //                   <file>${JSON.stringify(params.file)}</file>
 | ||||
|     //                 </writeObjectOut>
 | ||||
|     //              </SOAP-ENV:Body>
 | ||||
|     //            </SOAP-ENV:Envelope>`,
 | ||||
|     //   })
 | ||||
|     // } else {
 | ||||
|     temp = await getMessageByEnd(params, basic) | ||||
|     console.log("zj result", JSON.stringify(temp)) | ||||
|     // }
 | ||||
| 
 | ||||
|   } catch (e) { | ||||
|     console.log("zj 新监管错误") | ||||
|     temp = e | ||||
|   } | ||||
|   console.log("zj temp message: ", JSON.stringify(temp)) | ||||
|   if (filePath) { | ||||
|     await fileUtil.editFile(`${filePath}/wuxi_exam_data.txt`, JSON.stringify(temp) + `\n`); | ||||
|   } | ||||
|   return temp | ||||
| } | ||||
| 
 | ||||
| function getMessageByEnd(params, basic) { | ||||
|   return new Promise((resolve, reject) => { | ||||
|     const timeoutId = setTimeout(() => { | ||||
|       PrintStr(params, 100) | ||||
|       // 如果超时,抛出错误
 | ||||
|       console.log("zj tcp timeout") | ||||
|       reject(new Error("Timeout: No data received within 15 seconds")); | ||||
|     }, 15000); | ||||
|     const {wglb,jkxlh,glbm,jgbh,sjbs} = basic; | ||||
|     let baseUrl = globalThis.JGHOST ? globalThis.JGHOST : globalThis.host | ||||
|     let key = new Date().getTime() | ||||
|     //   走后置机
 | ||||
|     params.file.param = [{ | ||||
|       field: '', data: "" | ||||
|     }] | ||||
|     let data = { | ||||
|       url: `${baseUrl}/dems_ws/services/TmriOutAccess?wsdl`, | ||||
|       serialNumber: key, | ||||
| @ -103,36 +131,37 @@ export default async function writeObjectOutNew(data, filePath): Promise<WR> { | ||||
|       contentType: 'text/xml', | ||||
|       isHeartBeat: "0", | ||||
|     } | ||||
|     console.log("zj guocheng", JSON.stringify(data)) | ||||
|     NewTcpClient.sendMsg(`^#${JSON.stringify(data)}#$`) | ||||
|       NewTcpClient.onMessage((value) => { | ||||
|         console.log("zj value", value) | ||||
|         // 使用正则表达式提取^#和#$之间的JSON数据
 | ||||
|         const jsonDataMatch = value.match(/\^#(.*?)#\$/); | ||||
|         if (jsonDataMatch && jsonDataMatch[1]) { | ||||
|           try { | ||||
|             const jsonData = JSON.parse(jsonDataMatch[1]); | ||||
|             if (Number(jsonData.serialNumber) === Number(key)) { | ||||
|               temp = XmlToJson(jsonData.data); | ||||
|     let cache = "" | ||||
|     NewTcpClient.onMessage(async (value) => { | ||||
|       console.log("zj onMessage", value) | ||||
|       //   先找到^#和#$开始结束符号
 | ||||
|       cache += value | ||||
|       let start = cache.indexOf("^#") | ||||
|       let end = cache.indexOf("#$") | ||||
|       if (start !== -1 && end !== -1) { | ||||
|         let message = cache.slice(start + 2, end) | ||||
|         cache = cache.slice(end + 2) | ||||
|         let tempIndex = message.indexOf("^#") | ||||
|         while (tempIndex > -1) { | ||||
|           message = message.slice(tempIndex + 2) | ||||
|           tempIndex = message.indexOf("^#") | ||||
|         } | ||||
|         let result: any = JSON.parse(message) | ||||
|         if (Number(result.serialNumber) === Number(key) && !result.url) { | ||||
|           let temp: any = XmlToJson(result.data) | ||||
|           if (temp.Envelope) { | ||||
|             console.log("zj accept", JSON.stringify(temp)) | ||||
|             const msgXml = temp.Envelope.Body.writeObjectOutResponse.return; | ||||
|             const dd = HandleCenterCode(msgXml, true); | ||||
|             clearTimeout(timeoutId); | ||||
|             resolve(dd) | ||||
|           } | ||||
|           } catch (error) { | ||||
|             console.error("Failed to parse JSON data:", error); | ||||
|         } | ||||
|         } else { | ||||
|           console.log("No JSON data found between ^# and #$"); | ||||
|       } | ||||
|     }); | ||||
|     } | ||||
| 
 | ||||
|   } catch (e) { | ||||
|     console.log("新监管错误") | ||||
|     temp = e | ||||
|   } | ||||
|   console.log("temp message: ", JSON.stringify(temp)) | ||||
|   if (filePath) { | ||||
|     await fileUtil.editFile(`${filePath}/wuxi_exam_data.txt`, JSON.stringify(temp) + `\n`); | ||||
|   } | ||||
|   return temp | ||||
| 
 | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| export async function getParams(jkid, drvexam) { | ||||
|  | ||||
| @ -54,7 +54,7 @@ export async function startRecordVideo(param, td, context, dir, path?, index?) { | ||||
|       } | ||||
| 
 | ||||
|       // @ts-ignore
 | ||||
|       var recordResult = rtsp_server.startRecordVideo(context, video_uri, fileName, date,dir); | ||||
|       var recordResult = rtsp_server.startRecordVideo(context, video_uri, fileName, date, dir); | ||||
|       const handleId = recordResult.dataInt; | ||||
|       reslove(handleId) | ||||
|     } | ||||
| @ -181,7 +181,7 @@ interface takePhotoParam { | ||||
|  */ | ||||
| const fileHelper = new FileHelper(); | ||||
| 
 | ||||
| export async function delPic(day,type) { | ||||
| export async function delPic(day, type) { | ||||
|   let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(globalThis.context); | ||||
|   console.info('albumGetAssetsDemoCallback'); | ||||
|   let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); | ||||
| @ -195,11 +195,11 @@ export async function delPic(day,type) { | ||||
|   }; | ||||
|   let albumList: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, albumFetchOptions); | ||||
|   let albums = await albumList.getAllObjects(); | ||||
|   for(let i=0;i<=albums.length;i++){ | ||||
|     let albumName=albums[i].albumName | ||||
|   for (let i = 0; i <= albums.length; i++) { | ||||
|     let albumName = albums[i].albumName | ||||
|     // isSevenDaysAgo(albumName, day)
 | ||||
|     console.log('albumNamealbumName',albumName) | ||||
|     if (isSevenDaysAgo(albumName, day)&&albumName!='jt'&&albumName!='pz') { | ||||
|     console.log('albumNamealbumName', albumName) | ||||
|     if (isSevenDaysAgo(albumName, day) && albumName != 'jt' && albumName != 'pz') { | ||||
|       deleteAllFileByPiC(albumName, type) | ||||
| 
 | ||||
|     } | ||||
| @ -227,16 +227,17 @@ export async function takePhoto(param, context, dir, flag = 1, callback?) { | ||||
|     return new Promise<takePhotoParam>(async (resolve, reject) => { | ||||
|       const time = await getCurrentTime() | ||||
|       const date = time.split(' ')[0] | ||||
|       let dirName=dir?dir:date | ||||
|       rtsp_server.getVideoSnapshot(context, video_uri, fileName,dirName, true,async (err, snapResult) => { | ||||
|         if(snapResult.result&&snapResult.errorCode==0){ | ||||
|       let dirName = dir ? dir : date | ||||
|       rtsp_server.getVideoSnapshot(context, video_uri, fileName, dirName, true, async (err, snapResult) => { | ||||
|         console.log("zj photo", snapResult.fileSize.toString()) | ||||
|         if (snapResult.result && snapResult.errorCode == 0) { | ||||
|           resolve({ | ||||
|             base64: snapResult.dataString, | ||||
|             name: snapResult.fileName, | ||||
|             fileSize: snapResult.fileSize, | ||||
|             errorCode: snapResult.errorCode | ||||
|           }) | ||||
|         }else{ | ||||
|         } else { | ||||
|           promptAction.showToast({ | ||||
|             message: `拍照失败`, | ||||
|             duration: 3000 | ||||
| @ -249,9 +250,10 @@ export async function takePhoto(param, context, dir, flag = 1, callback?) { | ||||
|     }) | ||||
|   } | ||||
| } | ||||
| export async function deleteAllPicturesFn(){ | ||||
| 
 | ||||
| export async function deleteAllPicturesFn() { | ||||
|   fileHelper.deleteAllPictures(); | ||||
|   deleteAllVideos(globalThis.context,photoAccessHelper.AlbumType.USER,photoAccessHelper.AlbumSubtype.VIDEO) | ||||
|   deleteAllVideos(globalThis.context, photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.VIDEO) | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -1,5 +1,6 @@ | ||||
| import Want from '@ohos.app.ability.Want' | ||||
| import promptAction from '@ohos.promptAction' | ||||
| import fileAccess from '@ohos.file.fileAccess' | ||||
| import abilityAccessCtrl, { Permissions } from '@ohos.abilityAccessCtrl' | ||||
| import common from '@ohos.app.ability.common' | ||||
| import fs from '@ohos.file.fs' | ||||
| @ -103,7 +104,7 @@ export default class FileUtil { | ||||
|   }; | ||||
|   private context: common.UIAbilityContext | ||||
|   private wantInfos: Want[] | ||||
|   private fileAccessHelper: any | ||||
|   private fileAccessHelper: fileAccess.FileAccessHelper | ||||
|   //后续文件路径待替换
 | ||||
|   private absolutePath = '/mnt/hmdfs/100/account/device_view/local/files/duolun' | ||||
|   private getFilePathList = async (filePath: string, isSdcard: boolean) => { | ||||
| @ -127,10 +128,8 @@ export default class FileUtil { | ||||
|   } | ||||
|   // 检索文件列表
 | ||||
|   public getSdCardPathList = async () => { | ||||
|     //@ts-ignore
 | ||||
|     this.wantInfos = await fileAccess.getFileAccessAbilityInfo(); | ||||
|     const {wantInfos,context} = this; | ||||
|     //@ts-ignore
 | ||||
|     const fileAccessHelper = fileAccess.createFileAccessHelper(this.context, this.wantInfos); | ||||
|     this.fileAccessHelper = fileAccessHelper; | ||||
| 
 | ||||
| @ -177,7 +176,6 @@ export default class FileUtil { | ||||
|       'ohos.permission.READ_MEDIA', | ||||
|       'ohos.permission.WRITE_MEDIA' | ||||
|     ]; | ||||
|     // @ts-ignore
 | ||||
|     this.wantInfos = await fileAccess.getFileAccessAbilityInfo(); | ||||
|     let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager() | ||||
|     atManager.requestPermissionsFromUser(context, permissions, async (code, result) => { | ||||
|  | ||||
| @ -305,24 +305,24 @@ export default class UdpClientByCenter { | ||||
|     console.info('surenjun', 'getUDP关闭udp message监听事件 成功') | ||||
|   } | ||||
| 
 | ||||
|   message_1Fn = (value) => { | ||||
|   message_1Fn = (strachArr) => { | ||||
|     let callback = this.onMessage_1Callback | ||||
|     // 收到的是ArrayBuffer 需要进行转换解析
 | ||||
|     this.plcUdpError = false | ||||
|     if (value) { | ||||
|       let dataView = new DataView(value.message) | ||||
|       let str = "" | ||||
|       for (let i = 0; i < dataView?.byteLength; ++i) { | ||||
|         let c = String.fromCharCode(dataView?.getUint8(i)) | ||||
|         if (c !== "\n") { | ||||
|           str += c | ||||
|         } | ||||
|       } | ||||
| 
 | ||||
|       let strachArr = str.split(',') | ||||
|       if (strachArr[0] != '#DN_GD') { | ||||
|         return | ||||
|       } | ||||
|     if (strachArr) { | ||||
|       // let dataView = new DataView(value.message)
 | ||||
|       // let str = ""
 | ||||
|       // for (let i = 0; i < dataView?.byteLength; ++i) {
 | ||||
|       //   let c = String.fromCharCode(dataView?.getUint8(i))
 | ||||
|       //   if (c !== "\n") {
 | ||||
|       //     str += c
 | ||||
|       //   }
 | ||||
|       // }
 | ||||
|       //
 | ||||
|       // let strachArr = str.split(',')
 | ||||
|       // if (strachArr[0] != '#DN_GD') {
 | ||||
|       //   return
 | ||||
|       // }
 | ||||
| 
 | ||||
|       strachArr[28] = globalThis.chuankoMsg || strachArr[28] | ||||
| 
 | ||||
|  | ||||
| @ -1,5 +1,7 @@ | ||||
| import socket from '@ohos.net.socket'; | ||||
| import convertxml from '@ohos.convertxml'; | ||||
| import util from '@ohos.util'; | ||||
| import Prompt from '@system.prompt'; | ||||
| 
 | ||||
| class NewTcp { | ||||
|   private localIp: string = '192.168.7.170' | ||||
| @ -7,6 +9,7 @@ class NewTcp { | ||||
|   private oppositeIp: string = '192.168.7.124' | ||||
|   private oppositeIpPort: string = '20022' | ||||
|   private tcp: socket.TCPSocket = null | ||||
|   private cbArr = [] | ||||
| 
 | ||||
|   constructor() { | ||||
|     this.init() | ||||
| @ -24,6 +27,26 @@ class NewTcp { | ||||
|         timeout: 6000 | ||||
|       }).then(res => { | ||||
|         console.log('tcp connect success') | ||||
|         this.tcp.on("message", (value) => { | ||||
|           if (value) { | ||||
|             let decoder = util.TextDecoder.create() | ||||
|             let message = decoder.decodeWithStream(new Uint8Array(value.message)) | ||||
|             let strArr = message.split(',') | ||||
|             // 获取档位信息
 | ||||
|             strArr[28] = globalThis.chuankoMsg || '0' | ||||
|             globalThis.udpClient.getCurrentMessage = strArr.toString() | ||||
|             this.cbArr.forEach(cb => { | ||||
|               cb && cb(strArr.toString()) | ||||
|             }) | ||||
|             //   超时15秒打印信息
 | ||||
| 
 | ||||
| 
 | ||||
|           } else { | ||||
|             this.cbArr.forEach(cb => { | ||||
|               cb && cb("") | ||||
|             }) | ||||
|           } | ||||
|         }) | ||||
|       }).catch(err => { | ||||
|         console.log('tcp connect error', err) | ||||
|       }) | ||||
| @ -34,42 +57,19 @@ class NewTcp { | ||||
|     return new Promise((resolve, reject) => { | ||||
|       this.tcp.send({ data: data }, (err) => { | ||||
|         if (err) { | ||||
|           console.log("zj tcp end error", JSON.stringify(err)) | ||||
|           console.log("zj tcp end error", data) | ||||
|           reject(err); | ||||
|         } else { | ||||
|           // console.log("zj tcp end success")
 | ||||
|           resolve(); | ||||
| 
 | ||||
|         } | ||||
|       }); | ||||
|     }); | ||||
|   } | ||||
| 
 | ||||
|   public onMessage(callback) { | ||||
|     this.tcp.on("message", (value) => { | ||||
|       if (value) { | ||||
|         let dataView = new DataView(value.message) | ||||
|         let str = "" | ||||
|         for (let i = 0; i < dataView?.byteLength; ++i) { | ||||
|           let c = String.fromCharCode(dataView?.getUint8(i)) | ||||
|           if (c !== "\n") { | ||||
|             str += c | ||||
|           } | ||||
|         } | ||||
| 
 | ||||
|         let strachArr = str.split(',') | ||||
|         if (strachArr[0] != '#DN_GD') { | ||||
|           return | ||||
|         } | ||||
|         // console.log(`udp222 on message array buffer:${str}`);
 | ||||
|    | ||||
|         strachArr[28] = globalThis.chuankoMsg || '0' | ||||
|         const newArr = JSON.parse(JSON.stringify(strachArr)) | ||||
|         callback && callback(newArr.toString()) | ||||
| 
 | ||||
|       } else { | ||||
|         callback && callback('') | ||||
|       } | ||||
|     }) | ||||
|     this.cbArr.push(callback) | ||||
|   } | ||||
| 
 | ||||
|   //   重连
 | ||||
| @ -93,6 +93,42 @@ class NewTcp { | ||||
| 
 | ||||
| export const NewTcpClient = new NewTcp() | ||||
| 
 | ||||
| export const HandleCenterCode = (msgXml, isNewCenter) => { | ||||
|   //新监管
 | ||||
|   if (isNewCenter) { | ||||
|     const msg = JSON.parse(msgXml); | ||||
|     const result = msg?.data[0]?.result; | ||||
|     if (result) { | ||||
|       const {code,message,retval} = result | ||||
|       if (code != '1') { | ||||
|         const rMessage = decodeURIComponent(message as string) | ||||
|         Prompt.showToast({ | ||||
|           message: rMessage, | ||||
|           duration: 3000 | ||||
|         }); | ||||
|         return { code, message } | ||||
|       } else { | ||||
|         return { code, keystr: retval } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   //正则匹配code message字段
 | ||||
|   const [code, message, keystr] = [/<code>(.*)<\/code>/i, /<message>(.*)<\/message>/i, /<keystr>(.*)<\/keystr>/i].map(pattern => { | ||||
|     const patternArr = pattern.exec(msgXml); | ||||
|     return patternArr && patternArr[1] | ||||
|   }); | ||||
| 
 | ||||
|   if (code != '1') { | ||||
|     Prompt.showToast({ | ||||
|       message: decodeURIComponent(message as string), | ||||
|       duration: 3000 | ||||
|     }); | ||||
|     return { code, message: decodeURIComponent(message) } | ||||
|   } else { | ||||
|     return { code, keystr, message } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| export const XmlToJson = (result) => { | ||||
|   let xmlOptions = { | ||||
|  | ||||
| @ -161,7 +161,7 @@ function xmlToJson(result, url) { | ||||
| } | ||||
| 
 | ||||
| //处理中心服务code
 | ||||
| function handleCenterCode(msgXml, isNewCenter) { | ||||
|  function handleCenterCode(msgXml, isNewCenter) { | ||||
|   //新监管
 | ||||
|   if (isNewCenter) { | ||||
|     const msg = JSON.parse(msgXml); | ||||
|  | ||||
| @ -1,19 +1,20 @@ | ||||
| //@ts-ignore
 | ||||
| import systemTime from '@ohos.systemDateTime'; | ||||
| import { expect } from '@ohos/hypium'; | ||||
| import FileUtil from './File'; | ||||
| export  function isSevenDaysAgo(date,days=2) { | ||||
| 
 | ||||
| export function isSevenDaysAgo(date, days = 2) { | ||||
|   const today = new Date(); // 当前日期
 | ||||
|   const target = new Date(date); // 需要判断的日期
 | ||||
|   console.info("listFile succeed1",JSON.stringify(target)); | ||||
|   console.info("listFile succeed1", JSON.stringify(target)); | ||||
| 
 | ||||
|   const diff = today.getTime() - target.getTime(); // 计算两个日期之间的毫秒数差异
 | ||||
|   const diffDays = diff / (1000 * 60 * 60 * 24); // 将毫秒转换为天数
 | ||||
|   console.info("listFile succeed2",JSON.stringify(diffDays)); | ||||
|   console.info("listFile succeed2", JSON.stringify(diffDays)); | ||||
|   // 如果差异天数正好是2,则原日期是当前日期的前2天
 | ||||
|   console.log('diffDays',diffDays,days) | ||||
|   return diffDays >= (Number(days) ); | ||||
|   console.log('diffDays', diffDays, days) | ||||
|   return diffDays >= (Number(days)); | ||||
| } | ||||
| 
 | ||||
| // export async function writeLog(path,param){
 | ||||
| //   return
 | ||||
| //   const fileUtil = new FileUtil(globalThis.context)
 | ||||
| @ -72,12 +73,12 @@ export function  dateVersionFormat(t) { | ||||
|   return year + "." + fill(month) + "." + fill(day) + "." + fill(hours); | ||||
| } | ||||
| 
 | ||||
| enum timeType{ | ||||
| enum timeType { | ||||
|   fulltime = 1 | ||||
| } | ||||
| 
 | ||||
| //获取当前时间并转化
 | ||||
| export async function getCurrentTime(type?:timeType):Promise<string> { | ||||
| export async function getCurrentTime(type?: timeType): Promise<string> { | ||||
| 
 | ||||
|   const date = await systemTime.getDate(); | ||||
|   const year = date.getFullYear(); | ||||
| @ -96,15 +97,15 @@ export async function getCurrentTime(type?:timeType):Promise<string> { | ||||
|   let s = date.getSeconds(); | ||||
|   //@ts-ignore
 | ||||
|   s = s < 10 ? '0' + s : s; | ||||
|   if(type === 1){ | ||||
|   if (type === 1) { | ||||
|     return `${year}${month}${dates}${h}${m}${s}` | ||||
|   }else{ | ||||
|   } else { | ||||
|     return `${year}-${month}-${dates} ${h}:${m}:${s}` | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| //获取时分秒毫秒
 | ||||
| export async function getCurrentHourTime():Promise<string> { | ||||
| export async function getCurrentHourTime(): Promise<string> { | ||||
| 
 | ||||
|   const date = await systemTime.getDate(); | ||||
|   const year = date.getFullYear(); | ||||
| @ -120,19 +121,19 @@ export async function getCurrentHourTime():Promise<string> { | ||||
|   s = s < 10 ? '0' + s : s; | ||||
|   let ss = date.getMilliseconds(); | ||||
|   let nowSS = '' | ||||
|   if(ss < 10){ | ||||
|   if (ss < 10) { | ||||
|     //@ts-ignore
 | ||||
|     nowSS = '00' + ss | ||||
|   } | ||||
|   if(ss >= 10 && ss < 100){ | ||||
|   if (ss >= 10 && ss < 100) { | ||||
|     //@ts-ignore
 | ||||
|     nowSS = '0' + s | ||||
|   } | ||||
|   return `${h}${m}${s}${nowSS||ss}` | ||||
|   return `${h}${m}${s}${nowSS || ss}` | ||||
| } | ||||
| 
 | ||||
| //时间戳转日期
 | ||||
| export  function formatTime(time:number):string  { | ||||
| export function formatTime(time: number): string { | ||||
|   //@ts-ignore
 | ||||
|   const h = parseInt(time / 3600) | ||||
|   //@ts-ignore
 | ||||
| @ -146,9 +147,8 @@ export  function formatTime(time:number):string  { | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| // 根据指定个数分割数组
 | ||||
| export function chunkArr (arr, size:number) { | ||||
| export function chunkArr(arr, size: number) { | ||||
|   //判断如果不是数组(就没有length),或者size没有传值,size小于1,就返回空数组
 | ||||
|   if (!arr.length || !size || size < 1) return [] | ||||
|   let [start, end, result] = [null, null, []] | ||||
| @ -177,7 +177,7 @@ export function deepClone(target) { | ||||
|   return target; | ||||
| } | ||||
| 
 | ||||
| export function stringToASC(str){ | ||||
| export function stringToASC(str) { | ||||
|   const tempStr = str + ''; | ||||
|   const strArr = tempStr.split(''); | ||||
|   //@ts-ignore
 | ||||
| @ -185,7 +185,7 @@ export function stringToASC(str){ | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| export function fillZero (str, len) { | ||||
| export function fillZero(str, len) { | ||||
|   str = str + ''; | ||||
|   if (str.length > len || !len) { | ||||
|     return str | ||||
| @ -200,16 +200,16 @@ export function fillZero (str, len) { | ||||
|   return zeroStr + str; | ||||
| } | ||||
| 
 | ||||
| export function string2Bytes(number, len){ | ||||
| export function string2Bytes(number, len) { | ||||
|   let str = (Math.floor(+number)).toString(2); | ||||
|   if(str.length > len) { | ||||
|   if (str.length > len) { | ||||
|     console.log('数据长度不对~~'); | ||||
|     return | ||||
|   } | ||||
|   var byteString = fillZero(str, len); | ||||
| 
 | ||||
|   var arrBytes = new Array(); | ||||
|   for (var i = byteString.length; i > 0;) { | ||||
|   for (var i = byteString.length; i > 0; ) { | ||||
|     let j = i - 8; | ||||
|     if (j < 0) { | ||||
|       j = 0 | ||||
| @ -227,22 +227,21 @@ export function string2Bytes(number, len){ | ||||
| export function Array2Byte(array) { | ||||
|   var buf = new ArrayBuffer(array.length); | ||||
|   var view = new Uint8Array(buf); | ||||
|   for (var i = 0; i != array.length; ++i) | ||||
|   { | ||||
|   for (var i = 0; i != array.length; ++i) { | ||||
|     view[i] = array[i] & 0xFF; | ||||
|   } | ||||
|   return view; | ||||
| } | ||||
| 
 | ||||
| //经纬度转换
 | ||||
| export function convertGpsCoord2 (num){ | ||||
| export function convertGpsCoord2(num) { | ||||
|   const tempNum = Math.floor(num); | ||||
|   const du = Math.floor(tempNum / 100); | ||||
|   const fen = tempNum % 100 + num - tempNum; | ||||
|   return du + fen / 60 | ||||
| } | ||||
| 
 | ||||
| export function debounce(fn, delay){ | ||||
| export function debounce(fn, delay) { | ||||
|   // 利用闭包定义定时器id变量存储
 | ||||
|   let timer = null; | ||||
|   return () => { | ||||
| @ -252,4 +251,32 @@ export function debounce(fn, delay){ | ||||
|     } | ||||
|     timer = setTimeout(fn, delay); | ||||
|   } | ||||
| }; | ||||
| } | ||||
| ; | ||||
| 
 | ||||
| // 循环打印一个字符串
 | ||||
| /** | ||||
|  * 分段打印字符串 | ||||
|  * @param {string} value - 需要打印的字符串 | ||||
|  * @param {number} length - 每段的长度 | ||||
|  */ | ||||
| export function PrintStr(value, length) { | ||||
|   // 参数校验
 | ||||
|   if (typeof value !== 'string' || typeof length !== 'number' || length <= 0) { | ||||
|     console.error('参数无效:value 必须是字符串,length 必须是正整数'); | ||||
|     return; | ||||
|   } | ||||
| 
 | ||||
|   // 如果字符串长度小于等于分段长度,直接打印整个字符串
 | ||||
|   if (value.length <= length) { | ||||
|     console.log(value); | ||||
|     return; | ||||
|   } | ||||
| 
 | ||||
|   // 分段打印
 | ||||
|   for (let i = 0; i < value.length; i += length) { | ||||
|     // 截取当前段
 | ||||
|     const segment = value.slice(i, i + length); | ||||
|     console.log("zj PrintStr", segment); | ||||
|   } | ||||
| } | ||||
| @ -2,3 +2,10 @@ export type SignalDataType = { | ||||
|   key: string; | ||||
|   value: string; | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| export interface Response { | ||||
|   serialNumber: string | ||||
|   data: string | ||||
|   isForwordHttp: string | ||||
| } | ||||
| @ -1,5 +1,8 @@ | ||||
| import TopLogo from './compontents/TopLogo'; | ||||
| import prompt from '@ohos.prompt'; | ||||
| import TopLogo from './compontents/TopLogo' | ||||
| import ethernet from '@ohos.net.ethernet'; | ||||
| import prompt from '@ohos.prompt' | ||||
| import { upDateTableByArray } from '../common/service/initable' | ||||
| import { getSyncData } from '../common/service/initable' | ||||
| import FileUtil from '../common/utils/File'; | ||||
| import common from '@ohos.app.ability.common'; | ||||
| import { GlobalConfig } from '../config'; | ||||
| @ -100,7 +103,6 @@ struct Index { | ||||
|             } | ||||
|             fileUtil.addFile(`${folderPath}/ipConfig.txt`, JSON.stringify(param), '') | ||||
|             // upDateTableByArray('IpConfigTable',[]) | ||||
|             // @ts-ignore | ||||
|             ethernet.setIfaceConfig("eth0", { | ||||
|               mode: 0, | ||||
|               ipAddr: this.inputTextList1[9], | ||||
| @ -170,7 +172,7 @@ struct Index { | ||||
|       this.inputTextList1[3] = result.centerPort | ||||
|     } | ||||
| 
 | ||||
|     //@ts-ignore | ||||
| 
 | ||||
|     ethernet.getIfaceConfig("eth0", (error, value) => { | ||||
|       if (error) { | ||||
|         // that.errorMsg='error' | ||||
|  | ||||
| @ -24,6 +24,7 @@ import errorMsgDialog from './compontents/errorMsgDialog'; | ||||
| import imageBtn from './compontents/imageBtn'; | ||||
| import FileUtil from '../common/utils/File'; | ||||
| import DB, { ColumnType } from '../common/database/DbSql'; | ||||
| import { NewTcpClient } from '../common/utils/new/tcp'; | ||||
| 
 | ||||
| @Entry | ||||
| @Component | ||||
| @ -167,8 +168,6 @@ struct UserInfo { | ||||
|   ) | ||||
|   private filePhoto: FilePhoto | ||||
|   private avPlayer | ||||
|   private AccountTable = new AccountTable(() => { | ||||
|   }, USER); | ||||
|   private context = getContext(this) as common.UIAbilityContext; | ||||
|   private labelBlocks = [ | ||||
|     { label: '考生姓名', key: 'xm' }, | ||||
| @ -919,7 +918,12 @@ struct UserInfo { | ||||
|         resolve(true) | ||||
|         return | ||||
|       } | ||||
|       let plcValue = globalThis.udpClient.getCurrentMessage(); | ||||
|       // let plcValue = "" | ||||
|       let plcValue = globalThis.udpClient.getCurrentMessage; | ||||
|       // NewTcpClient.onMessage((value) => { | ||||
|       //   console.log(value) | ||||
|       //   plcValue = value | ||||
|       // }) | ||||
|       const msgArr = plcValue.split(',') || '' | ||||
|       const mkg = msgArr[14]; | ||||
|       const fdjzs = msgArr[25]; | ||||
|  | ||||
| @ -346,21 +346,25 @@ export default struct SignDisplayCom { | ||||
|       //     getSignal(msg) | ||||
|       //   } | ||||
|       // }) | ||||
|       // NewTcpClient.onMessage((msg) => { | ||||
|       //   console.log("zj msg", msg) | ||||
|       //   getSignal(msg) | ||||
|       // }) | ||||
|     } | ||||
|     // clearInterval(globalThis.signalTimer) | ||||
|     // globalThis.signalTimer = setInterval(() => { | ||||
|     //   const msgStr = globalThis.msgStr | ||||
|     //   if (msgStr) { | ||||
|     //     getSignal(msgStr) | ||||
|     // | ||||
|     //   } | ||||
|     // }, 200) | ||||
|     NewTcpClient.onMessage((msg) => { | ||||
|       console.log("zj msg", msg) | ||||
|       getSignal(msg) | ||||
|     }) | ||||
|     } else { | ||||
|       clearInterval(globalThis.signalTimer) | ||||
|       globalThis.signalTimer = setInterval(() => { | ||||
|         const msgStr = globalThis.msgStr | ||||
|         if (msgStr) { | ||||
|           getSignal(msgStr) | ||||
| 
 | ||||
|   } | ||||
|       }, 200) | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   onPageShow() { | ||||
|     console.info('SURENJUN', 123) | ||||
|  | ||||
										
											Binary file not shown.
										
									
								
							| @ -239,7 +239,9 @@ export default class Judge { | ||||
|     if (stachArr[0] != '#DN_GD' || isUdpEnd) { | ||||
|       return | ||||
|     } | ||||
|     const plcData = await getPlcData(msg); | ||||
|     console.log("zj getPlcData start") | ||||
|     const plcData = await this.getPlcData(msg); | ||||
|     console.log("zj getPlcData end") | ||||
|     // 4.过程数据
 | ||||
|     await fileLog.setExamJudgeData(plcData) | ||||
|     //检测到有无锡所设备接入,需要发送特定的数据,供检测
 | ||||
| @ -257,6 +259,7 @@ export default class Judge { | ||||
|     if (!isExamEnd) { | ||||
|       await examJudgeRealExam(plcData) | ||||
|     } | ||||
|     console.log("zj plcData", plcData.toString()) | ||||
|     const udpIndex = globalThis.udpIndex; | ||||
|     let [prevJd, preWd] = [0, 0] | ||||
|     if (udpIndex % 5 === 0 && !isUdpEnd) { | ||||
| @ -1830,7 +1833,8 @@ export default class Judge { | ||||
|     // });
 | ||||
|     NewTcpClient.onMessage((msg) => { | ||||
|       console.info('socketTag[PLC.UdpClient]', '收到udp回调数据') | ||||
|       handleUdp(msg) | ||||
|       console.log("zj msg1", msg) | ||||
|       this.handleUdp(msg) | ||||
|       const udpIndex = globalThis.udpIndex; | ||||
|       if (udpIndex % 5 === 0) { | ||||
|         handDistance(); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user