import common from '@ohos.app.ability.common'; import { GlobalConfig } from '../../config'; import Prompt from '@system.prompt'; import { ApiResponseType, BaseInfoType, CarConfigurationParamsType, ObtainCarExamInfoParams, ObtainCarExamInfoRspBody, TimeSynchronizationParams, TimeSynchronizationRspBody, VideoConfig } from '../../model'; import dayTs from '../../utils/Date'; import { obtainCarExamInfo, timeSynchronization } from '../../api'; import abilityAccessCtrl, { Permissions } from '@ohos.abilityAccessCtrl'; import { BusinessError } from '@ohos.base'; import systemTime from '@ohos.systemTime'; import { VideoConfigData } from '../../mock'; import FileUtils from '../../utils/FileUtils'; //获取设备信息 export async function GetDeviceInfo(context: common.UIAbilityContext): Promise { return new Promise(async (resolve, reject) => { const fileUtil = new FileUtils(context) const data = await fileUtil.readFile(GlobalConfig.comoonfileWriteAddress + '/config/deviceNo.txt'); if (data === '' || data === undefined) { Prompt.showToast({ message: "请先进行设备注册!", duration: 3000 }) AppStorage.setOrCreate('type', 1) AppStorage.setOrCreate('title', '请先进行设备注册') resolve("") } else { const fileData: CarConfigurationParamsType = JSON.parse(data) AppStorage.setOrCreate('deviceNo', fileData.deviceName) resolve(fileData.deviceName) } }) } export async function GetCarInfo() { let date = new Date(); let params: ObtainCarExamInfoParams = { time: dayTs(date).format("YYYY-MM-DD HH:mm:ss"), deviceNo: AppStorage.get('deviceNo') || "" }; let res: ApiResponseType = await obtainCarExamInfo(params) if (res.obtainCarExamInfoRsp && res.obtainCarExamInfoRsp.body) { const carInfo: ObtainCarExamInfoRspBody = res?.obtainCarExamInfoRsp?.body! carInfo.plateNo = decodeURIComponent(carInfo.plateNo) AppStorage.setOrCreate('carInfo', carInfo) } } export async function UseAuth(context: common.UIAbilityContext): Promise { return new Promise((resolve, reject) => { const permissions: Array = ["ohos.permission.SET_TIME", "ohos.permission.READ_IMAGEVIDEO", "ohos.permission.DISTRIBUTED_DATASYNC", 'ohos.permission.CONNECTIVITY_INTERNAL', 'ohos.permission.CAMERA', 'ohos.permission.READ_MEDIA', 'ohos.permission.WRITE_MEDIA', 'ohos.permission.FILE_ACCESS_MANAGER']; abilityAccessCtrl.createAtManager().requestPermissionsFromUser(context, permissions).then(res => { let grantStatus: Array = res.authResults; let length: number = grantStatus.length; for (let i = 0; i < length; i++) { if (grantStatus[i] === 0) { // 用户授权,可以继续访问目标操作 resolve(true) } else { reject(false) // 用户拒绝授权,提示用户必须授权才能访问当前页面的功能,并引导用户到系统设置中打开相应的权限 return; } } }).catch((err: BusinessError) => { console.log("获取权限失败", JSON.stringify(err)) reject(false) }) }) } //获取时间同步 export async function SetCurrentTime(): Promise { let deviceNo: string = AppStorage.get('deviceNo')!; let baseInfo: BaseInfoType = AppStorage.get('baseInfo')! let params: TimeSynchronizationParams = { time: dayTs(new Date()).format("YYYY-MM-DD HH:mm:ss"), deviceNo, version: baseInfo.version!, judgeVersion: baseInfo.judgeVersion! } let res: ApiResponseType = await timeSynchronization(params); if (res.timeSynchronizationRsp?.body) { AppStorage.setOrCreate('timeInfo', res.timeSynchronizationRsp.body); } let currentTime = res.timeSynchronizationRsp?.head?.time; let times = 0 if (currentTime) { times = new Date(currentTime).getTime(); } else { console.error("currentTime is undefined"); } try { await systemTime.setTime(times) } catch (error) { console.log('时间同步失败', error) } } //TODO 摄像头遮挡 indexService takePhotoFn export async function TakePhoto(context: common.UIAbilityContext) { let interval: number = -1 let param: VideoConfig = VideoConfigData let spzd: VideoConfig = { spzd1: false, spzd2: false, spzd3: false, spzd4: false, } const fileUtil = new FileUtils(context) const fileData = await fileUtil.readFile(GlobalConfig.comoonfileWriteAddress + '/config/config3.txt'); param = JSON.parse(fileData) clearInterval(interval) interval = setTimeout(async () => { const arr = ['spzd1', 'spzd2', 'spzd3', 'spzd4'] }, 3000) } async function obtainSerialNumber(data: string) { let num = data ? Number(data) + 1 : 0; let str = num.toString().padStart(6, '0'); AppStorage.setOrCreate('lshNo', str); } //设置流水号 export async function SetSerialNumber() { const data = AppStorage.get("liushuiNo") || ""; const serialNumberTime = AppStorage.get("liushuiDate"); obtainSerialNumber(data); const date = dayTs().format('YYYY-MM-DD HH:mm:ss'); if (data && serialNumberTime) { const diffDays = dayTs().diff(serialNumberTime, 'day'); if (diffDays === 0) { AppStorage.setOrCreate('liushuiDate', date); AppStorage.setOrCreate('liushuiNo', '0'); } else { AppStorage.setOrCreate('liushuiNo', (Number(data) + 1).toString()); } } else { AppStorage.setOrCreate('liushuiNo', '0'); AppStorage.setOrCreate('liushuiDate', date); } }