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,94 +46,122 @@ 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 {
|
||||
let baseUrl = globalThis.JGHOST ? globalThis.JGHOST : globalThis.host
|
||||
let key = new Date().getTime()
|
||||
// 走后置机
|
||||
let data = {
|
||||
url: `${baseUrl}/dems_ws/services/TmriOutAccess?wsdl`,
|
||||
serialNumber: key,
|
||||
type: 1,
|
||||
method: "post",
|
||||
isNewCenter: true,
|
||||
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>`,
|
||||
contentType: 'text/xml',
|
||||
isHeartBeat: "0",
|
||||
}
|
||||
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);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Failed to parse JSON data:", error);
|
||||
}
|
||||
} else {
|
||||
console.log("No JSON data found between ^# and #$");
|
||||
}
|
||||
});
|
||||
}
|
||||
// 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("新监管错误")
|
||||
console.log("zj 新监管错误")
|
||||
temp = e
|
||||
}
|
||||
console.log("temp message: ", JSON.stringify(temp))
|
||||
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,
|
||||
type: 1,
|
||||
method: "post",
|
||||
isNewCenter: true,
|
||||
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>`,
|
||||
contentType: 'text/xml',
|
||||
isHeartBeat: "0",
|
||||
}
|
||||
console.log("zj guocheng", JSON.stringify(data))
|
||||
NewTcpClient.sendMsg(`^#${JSON.stringify(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)
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
}
|
||||
|
||||
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)
|
||||
@ -52,7 +53,7 @@ function fill(value: number) {
|
||||
return (value > 9 ? '' : '0') + value;
|
||||
}
|
||||
|
||||
export function dateFormat(t) {
|
||||
export function dateFormat(t) {
|
||||
let year = t.getFullYear()
|
||||
let month = t.getMonth() + 1
|
||||
let day = t.getDate()
|
||||
@ -62,7 +63,7 @@ export function dateFormat(t) {
|
||||
return year + "-" + fill(month) + "-" + fill(day) + " " + fill(hours) + ":" + fill(minutes) + ":" + fill(seconds);
|
||||
}
|
||||
|
||||
export function dateVersionFormat(t) {
|
||||
export function dateVersionFormat(t) {
|
||||
let year = t.getFullYear()
|
||||
let month = t.getMonth() + 1
|
||||
let day = t.getDate()
|
||||
@ -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, []]
|
||||
@ -166,7 +166,7 @@ export function deepClone(target) {
|
||||
if (typeof target === 'object' && target !== 'null') {
|
||||
// 创建容器
|
||||
const result = Array.isArray(target) ? [] : {};
|
||||
const keys = Object.keys(target); //注解二
|
||||
const keys = Object.keys(target); //注解二
|
||||
// Object.keys()会过滤掉原型链上的属性
|
||||
keys.forEach(key => {
|
||||
result[key] = deepClone(target[key])
|
||||
@ -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){
|
||||
let str = (Math.floor(+number)).toString(2);
|
||||
if(str.length > len) {
|
||||
export function string2Bytes(number, len) {
|
||||
let str = (Math.floor(+number)).toString(2);
|
||||
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 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,20 +346,24 @@ export default struct SignDisplayCom {
|
||||
// getSignal(msg)
|
||||
// }
|
||||
// })
|
||||
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)
|
||||
// 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)
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
onPageShow() {
|
||||
|
||||
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