From c3c8783969c9ff1c2f72f12c794c494f8f5cb6b3 Mon Sep 17 00:00:00 2001 From: wangzhongjie Date: Tue, 16 Sep 2025 17:03:33 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- entry/src/main/ets/api/judge.ts | 60 +++++++++++++++++-- entry/src/main/ets/api/judgeNew.ts | 58 +++++++++++------- entry/src/main/ets/pages/UserInfo.ets | 2 +- .../judge/BoardPrePareSetPopup.ets | 10 ++-- entry/src/main/ets/pages/judgeSDK/judge.ts | 32 +++++++++- 5 files changed, 127 insertions(+), 35 deletions(-) diff --git a/entry/src/main/ets/api/judge.ts b/entry/src/main/ets/api/judge.ts index 41b655ba..ee8488f8 100644 --- a/entry/src/main/ets/api/judge.ts +++ b/entry/src/main/ets/api/judge.ts @@ -4,6 +4,7 @@ import { getSyncData } from '../common/service/initable'; import writeObjectOutNew from './judgeNew'; import FileUtil from '../common/utils/File'; import tempRequest from '../common/utils/tempRequest'; +import pasteboard from '@ohos.pasteboard'; let baseHost = globalThis.host; @@ -25,7 +26,7 @@ interface WR { } // 通用监管接口 -export async function writeObjectOut(params, filePath?: string): Promise { +export async function writeObjectOut(params, externalTransmission: boolean, filePath?: string): Promise { const singlePlay = globalThis.singlePlay if (singlePlay) { return { code: 1 } @@ -54,8 +55,7 @@ export async function writeObjectOut(params, filePath?: string): Promise { //新监管调用 if (globalThis.isJGNew) { - - return await writeObjectOutNew(params, filePath) + return await writeObjectOutNew(params, filePath, externalTransmission) } drvexam.zp = drvexam.zp === undefined ? undefined : encodeURIComponent(drvexam.zp) @@ -73,8 +73,38 @@ export async function writeObjectOut(params, filePath?: string): Promise { }) + `\n`); } - //对象转换成xml - const temp = await request({ + // //对象转换成xml + // const temp = await request({ + // host: globalThis.JGHOST, + // url: '/dems_ws/services/TmriOutAccess?wsdl', + // data: ` + // + // + // + // ${xtlb} + // ${jkxlh} + // ${jkid} + // + // + // + // + // ${drvexamArrs} + // + // + // ]]> + // + // + // + // `, + // method: 'post', + // xml: true + // },) + let requestData = { host: globalThis.JGHOST, url: '/dems_ws/services/TmriOutAccess?wsdl', data: ` @@ -103,7 +133,25 @@ export async function writeObjectOut(params, filePath?: string): Promise { `, method: 'post', xml: true - },) + } + let temp = {} + try { + if (!externalTransmission) { + temp = await request(requestData) + } else { + let systemPasteboard = pasteboard.getSystemPasteboard() + let pasteData = pasteboard.createData(pasteboard.MIMETYPE_TEXT_PLAIN, JSON.stringify(requestData)) + await systemPasteboard.clear() + await systemPasteboard.setData(pasteData) + + temp = { + code: 1 + } + } + } catch (e) { + console.log("新监管错误") + temp = e + } if (filePath) { const fileUtil = new FileUtil(globalThis.context); await fileUtil.initFolder(filePath); diff --git a/entry/src/main/ets/api/judgeNew.ts b/entry/src/main/ets/api/judgeNew.ts index 9fac6e5d..aab73657 100644 --- a/entry/src/main/ets/api/judgeNew.ts +++ b/entry/src/main/ets/api/judgeNew.ts @@ -3,6 +3,7 @@ import request from "../common/utils/request" let baseHost = globalThis.host; import FileUtil from '../common/utils/File'; import FileLog from '../pages/judgeSDK/utils/fileLog'; +import pasteboard from '@ohos.pasteboard'; //监管接口序列号映射 const gjxlhObj = { @@ -19,33 +20,38 @@ interface WR{ code:number } -export default async function writeObjectOutNew(data,filePath): Promise { +export default async function writeObjectOutNew(data, filePath, externalTransmission): Promise { const fileUtil = new FileUtil(globalThis.context); const {jkid , drvexam} = data; const basic = await getBasicConfig(jkid); const params = await getParams(jkid, drvexam); const {wglb,jkxlh,glbm,jgbh,sjbs} = basic; - if(filePath){ - await fileUtil.editFile(`${filePath}/wuxi_exam_data.txt`,JSON.stringify({ - wglb,jkxlh,glbm,jgbh,sjbs, - data:params.data, - file:{...params.file,param:[]}, + if (filePath) { + await fileUtil.editFile(`${filePath}/wuxi_exam_data.txt`, JSON.stringify({ + wglb, + jkxlh, + glbm, + jgbh, + sjbs, + data: params.data, + file: { + ...params.file, param: [] + }, })); } // let connectTimeout = sjbs === '02-21-000014' ?60000:1 - console.info('surenjun','调用新监管') + console.info('surenjun', '调用新监管') let temp - try { - temp = await request({ - host: globalThis.JGHOST, - method: 'post', - //是否是新中心 - isNewCenter: true, - xml: true, - url: '/dems_ws/services/TmriOutAccess?wsdl', - data: ` + let requestData = { + host: globalThis.JGHOST, + method: 'post', + //是否是新中心 + isNewCenter: true, + xml: true, + url: '/dems_ws/services/TmriOutAccess?wsdl', + data: ` { `, - }) + } + try { + if (!externalTransmission) { + temp = await request(requestData) + } else { + let systemPasteboard = pasteboard.getSystemPasteboard() + let pasteData = pasteboard.createData(pasteboard.MIMETYPE_TEXT_PLAIN, JSON.stringify(requestData)) + await systemPasteboard.clear() + await systemPasteboard.setData(pasteData) + + temp = { + code: 1 + } + } } 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`); + if (filePath) { + await fileUtil.editFile(`${filePath}/wuxi_exam_data.txt`, JSON.stringify(temp) + `\n`); } return temp - } export async function getParams(jkid, drvexam) { diff --git a/entry/src/main/ets/pages/UserInfo.ets b/entry/src/main/ets/pages/UserInfo.ets index 4c96617a..6990ee19 100644 --- a/entry/src/main/ets/pages/UserInfo.ets +++ b/entry/src/main/ets/pages/UserInfo.ets @@ -1094,7 +1094,7 @@ struct UserInfo { jkid: '17C51', } console.info('surenjunjianguan', JSON.stringify(param)) - const temp = await writeObjectOut(param); + const temp = await writeObjectOut(param,false); globalThis.lsh = this.currentUser.lsh globalThis.ksyh = this.currentUser.ksy1sfzmhm return temp diff --git a/entry/src/main/ets/pages/compontents/judge/BoardPrePareSetPopup.ets b/entry/src/main/ets/pages/compontents/judge/BoardPrePareSetPopup.ets index af91316a..69cfb085 100644 --- a/entry/src/main/ets/pages/compontents/judge/BoardPrePareSetPopup.ets +++ b/entry/src/main/ets/pages/compontents/judge/BoardPrePareSetPopup.ets @@ -226,7 +226,7 @@ export default struct DeductedPopup { kssj: time }, } - const code = await writeObjectOut(beginData) + const code = await writeObjectOut(beginData,false) //TODO code待处理 // if (code == 1) { // @@ -257,7 +257,7 @@ export default struct DeductedPopup { ksdd: decodeURI(ksdd) } }; - const code = await writeObjectOut(photoData); + const code = await writeObjectOut(photoData,false); console.info('surenjun uploadProgressPhoto end',) } @@ -285,7 +285,7 @@ export default struct DeductedPopup { kfsj: time } } - const code = await writeObjectOut(kfData); + const code = await writeObjectOut(kfData,false); } // 项目结束 @@ -309,7 +309,7 @@ export default struct DeductedPopup { jssj: time } } - const code = await writeObjectOut(endProjectData); + const code = await writeObjectOut(endProjectData,false); } //考试结束 @@ -335,7 +335,7 @@ export default struct DeductedPopup { dwlc: '', } } - const code = await writeObjectOut(endData); + const code = await writeObjectOut(endData,false); } //获取sysset表数据 diff --git a/entry/src/main/ets/pages/judgeSDK/judge.ts b/entry/src/main/ets/pages/judgeSDK/judge.ts index 171c8471..7673b314 100644 --- a/entry/src/main/ets/pages/judgeSDK/judge.ts +++ b/entry/src/main/ets/pages/judgeSDK/judge.ts @@ -56,6 +56,8 @@ import { } from './api/index'; import { getSyncData, upDateTableByArray } from '../../common/service/initable'; import { GlobalConfig } from '../../config'; +import Want from '@ohos.app.ability.Want'; + const judgeTag = 'SURENJUN_JUDGE' function ifNeedRetry(code: number | string): boolean { @@ -115,7 +117,7 @@ export default class Judge { const examDataArr = examDataStr.split('\n'); for (let examDataStr of examDataArr) { const examData = JSON.parse(examDataStr) - const code = await writeObjectOut(examData); + const code = await writeObjectOut(examData,false); } } //上传无锡所过程数据 @@ -621,10 +623,12 @@ export default class Judge { private videoData: any private disConnectNum: number = 0; //调用监管接口 - + private externalTransmission: boolean = false + // 计算是否启动 + private whetherToStart: boolean //调用监管接口 sendWriteObjectOut = async (data, filePath) => { - const temp = await writeObjectOut(data, filePath); + const temp = await writeObjectOut(data, this.externalTransmission, filePath); console.log("wzj", JSON.stringify(temp)) if (this.disConnectNum == 0) { console.log("wzj", "第一次发送", JSON.stringify(data)) @@ -641,12 +645,34 @@ export default class Judge { } return await this.sendWriteObjectOut(data, filePath) } + if (this.disConnectNum >= 5) { + this.externalTransmission = true + let want: Want = { + bundleName: 'com.oh.upload', // 替换为你的应用包名 + abilityName: 'EntryAbility', // 你的 Service Ability 名称 + moduleName: 'entry', // 你的模块名称,通常是 'entry', + parameters: {} + }; + try { + let context = this.judgeUI.context; + context.startAbility(want) + .then(() => { + }) + .catch((error) => { + console.error(`拉起应用失败: ${error.code} - ${error.message}`); + }); + } catch (error) { + console.error(`启动Ability异常: ${error.message}`); + } + return await this.sendWriteObjectOut(data, filePath) + } } if (this.disConnectNum >= 5) { console.info('surenjun', '123') this.judgeUI.errorMsg = '当前的考试过程信息网络传输异常,程序点击确认将重启!'; this.judgeUI.disConnectErrorOpen = true + } this.disConnectNum = 0