2025-09-16 17:03:33 +08:00

240 lines
6.5 KiB
TypeScript

import { getSyncData } from '../common/service/initable';
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 = {
'17C51': '02-21-000009',
'17C52': '02-21-000010',
'17C53': '02-21-000011',
'17C54': '02-21-000012',
'17C55': '02-21-000013',
'17C56': '02-21-000014',
}
interface WR{
message?:string
code:number
}
export default async function writeObjectOutNew(data, filePath, externalTransmission): Promise<WR> {
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: []
},
}));
}
// let connectTimeout = sjbs === '02-21-000014' ?60000:1
console.info('surenjun', '调用新监管')
let temp
let requestData = {
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>`,
}
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`);
}
return temp
}
export async function getParams(jkid, drvexam) {
const examSubject = globalThis.carInfo.examSubject;
switch (jkid) {
//开始考试
case '17C51':
return {
data: {
sjbs: gjxlhObj[jkid],
param: {
sfzmhm: drvexam.sfzmhm,
kchp: decodeURI(drvexam.kchp),
kskm: examSubject,
ksxl: examSubject == 3 ? drvexam.ksxl : undefined,
kssj: drvexam.kssj
}
},
file: {
sjbs: gjxlhObj[jkid],
// param: [{ field: '', data: examSubject == 2 ? encodeURIComponent(drvexam.zp) : drvexam.zp }]
param: [{ field: '', data: drvexam.zp }]
}
}
//项目开始
case '17C52':
return {
data: {
sjbs: gjxlhObj[jkid],
param: {
sfzmhm: drvexam.sfzmhm,
kskm: drvexam.kskm,
ksxm: drvexam.ksxm,
ksxl: examSubject == 3 ? drvexam.ksxl : undefined,
kchp: decodeURI(drvexam.kchp),
//TODO 待验证 科目三无
sbbh: examSubject == 3 ? undefined : drvexam.sbxh,
kssj: drvexam.kssj
}
},
file: {
sjbs: gjxlhObj[jkid],
param: [{ field: '', data: '' }]
}
}
//扣分
case '17C53':
return {
data: {
sjbs: gjxlhObj[jkid],
param: {
kffs: drvexam.kffs,
kfsj: drvexam.kfsj,
kfxm: drvexam.kfxm,
kfxmmx: drvexam.kfxmmx,
kskm: examSubject,
ksxm: drvexam.ksxm,
sfzmhm: drvexam.sfzmhm
}
},
file: {
sjbs: gjxlhObj[jkid],
param: [{ field: '', data: '' }]
}
}
//过程照片
case '17C54':
return {
data: {
sjbs: gjxlhObj[jkid],
param: {
cs: drvexam.cs,
kskm: drvexam.kskm,
ksxm: drvexam.ksxm,
sfzmhm: drvexam.sfzmhm,
zpsj: drvexam.zpsj
}
},
file: {
sjbs: gjxlhObj[jkid],
param: [{ field: '', data: drvexam.zp }]
}
}
//项目结束
case '17C55':
return {
data: {
param: {
czlx: drvexam.czlx,
jssj: drvexam.jssj,
kskm: examSubject,
ksxl: drvexam.ksxl,
sbbh: examSubject == 3 ? undefined : drvexam.sbxh,
ksxm: drvexam.ksxm,
sfzmhm: drvexam.sfzmhm
},
sjbs: gjxlhObj[jkid],
},
file: { sjbs: gjxlhObj[jkid], param: [{ field: '', data: '' }] }
}
//考试结束
case '17C56':
return {
data: {
sjbs: gjxlhObj[jkid],
param: {
dwlc: drvexam.dwlc,
ghks: "0",
jssj: drvexam.jssj,
kscj: drvexam.kscj,
kskm: examSubject,
kslc: drvexam.kslc,
sfzmhm: drvexam.sfzmhm
},
},
file: { sjbs: gjxlhObj[jkid], param: [{ field: '', data: drvexam.zp }] }
}
default:
return {}
}
}
//获取基础信息
async function getBasicConfig(jkid) {
const examSubject = globalThis.carInfo.examSubject;
const syssetParam = await getSyncData('MA_SYSSET');
let syssetObj = {};
//@ts-ignore
syssetParam.forEach(sys => {
syssetObj[sys.v_no] = decodeURIComponent(sys.v_value)
});
return {
//外挂类别
wglb: examSubject == 2 ? "700203" : "700204",
//监管接口序列号
jkxlh: syssetObj['901'],
//管理部门
glbm: syssetObj['903'],
//考场序号
jgbh: syssetObj['905'],
//接口id
sjbs: gjxlhObj[jkid],
}
}