import { GetCurrentTime } from '../../../utils/Common' import FileUtils from '../../../utils/FileUtils' interface StuInfo { name: string lsh: string idCard: string } const LOGTAG = 'LOGTAG' export default class FileLog { public folderPath: string public progressDataFd: number = undefined public examJudgeWuxiDataFd: number = undefined public examJudgeWuxiProgressDataFd: number = undefined public plcDataFd: number = undefined public examJudgeDataFd: number = undefined public examJudgeCallbackDataFd: number = undefined public examJudgeLogDataFd: number = undefined public fourAndOneLogDataFd: number = undefined public fourAndOneLogDataBytesFd: number = undefined public examLineDataFd: number = undefined // 过程文件数据 public setExamProgressData = async (str: Object) => { const { fileUtil, folderPath, progressDataFd } = this; this.progressDataFd = await fileUtil.editFile(`${folderPath}/exam_progress_data.txt`, JSON.stringify(str), progressDataFd); } // 无锡所接口数据 public setExamJudgeWuxiData = async (str) => { const { fileUtil, folderPath, examJudgeWuxiDataFd } = this; this.examJudgeWuxiDataFd = await fileUtil.editFile(`${folderPath}/wuxi_exam_data.txt`, str, examJudgeWuxiDataFd); } // 无锡所过程数据 public setExamJudgeWuxiProgressData = async (str) => { const { fileUtil, folderPath, examJudgeWuxiProgressDataFd } = this; this.examJudgeWuxiProgressDataFd = await fileUtil.editFile(`${folderPath}/wuxi_progress_data.txt`, str, examJudgeWuxiProgressDataFd); } // plc文件数据 public setPlcProgressData = async (str: Object) => { const { fileUtil, folderPath, plcDataFd } = this; this.plcDataFd = await fileUtil.editFile(`${folderPath}/plc_data.txt`, JSON.stringify(str), plcDataFd); } // 过程评判json数据 public setExamJudgeData = async (str: Object) => { const { fileUtil, folderPath, examJudgeDataFd } = this; this.examJudgeDataFd = await fileUtil.editFile(`${folderPath}/judge_exam_data.txt`, JSON.stringify(str), examJudgeDataFd); } // 过程评判回调数据 public setExamJudgeCallbackData = async (str: string) => { const { fileUtil, folderPath, examJudgeCallbackDataFd } = this; this.examJudgeCallbackDataFd = await fileUtil.editFile(`${folderPath}/judge_progress_callback_data.txt`, str, examJudgeCallbackDataFd); } // 过程评判日志调数据 public setExamJudgeLogData = async (str: string) => { const { fileUtil, folderPath, examJudgeLogDataFd } = this; this.examJudgeLogDataFd = await fileUtil.editFile(`${folderPath}/judge_log_data.txt`, str, examJudgeLogDataFd); } // 设置四合一画面数据 public setFourAndOneLogData = async (str: string) => { const { fileUtil, folderPath, fourAndOneLogDataFd } = this; this.fourAndOneLogDataFd = await fileUtil.editFile(`${folderPath}/four_one_log_data.txt`, str, fourAndOneLogDataFd); } public setFourAndOneLogDataBytes = async (str: string) => { const { fileUtil, folderPath, fourAndOneLogDataBytesFd } = this; this.fourAndOneLogDataBytesFd = await fileUtil.editFile(`${folderPath}/four_one_log_byte_data.txt`, str, fourAndOneLogDataBytesFd); } // 无锡所轨迹数据 public setExamLineData = async (plcStr) => { const { fileUtil, folderPath, examLineDataFd } = this; const plcData = plcStr.split(','); const time = await GetCurrentTime(); const lineData = [ /*帧头*/time, /*卫星时间*/time, /*经度*/ plcData[95], /*纬度*/ plcData[95], /*高度*/ plcData[86], /*方位角*/ 0, /*俯仰角*/ plcData[91], /*速度角*/'', /*速度*/ plcData[97], /*横滚*/'', /*卫星定位状态*/'', /*卫星定向状态*/'', /*前天线可用星数*/'', /*后天线可用星数*/'', /*东向位置坐标*/'', /*北向位置坐标*/'', /*天向位置坐标*/'', /*东向速度*/'', /*北向速度*/'', /*评判信号1*/[plcData[14], plcData[19], plcData[5], '', plcData[2], plcData[3], plcData[7], plcData[8], plcData[13], plcData[12], plcData[17], '', plcData[4], plcData[11], plcData[20], plcData[9], 0].join(','), /*评判信号2*/['', plcData[28], '', '', plcData[10], '', '', '', '', '', '', '', '', '', '', '', '', ''].join(','), /*发动机转速*/ plcData[25], /*结束符*/ time, ]; this.examLineDataFd = await fileUtil.editFile(`${folderPath}/exam_wuxi_data.txt`, JSON.stringify(lineData), examLineDataFd); }; //后续文件路径待替换 private fileUtil: FileUtils private stuInfo: StuInfo // 设置文件夹 public initFileLogo = async (stuInfo: StuInfo) => { const { fileUtil, setExamLineData } = this const { name, lsh, idCard } = stuInfo; this.stuInfo = stuInfo; const time = await GetCurrentTime() const date = time.split(' ')[0].split('-').join('_') const hourTime = time.split(' ')[1].split(':').join('_') const folderPath = await fileUtil.initFolder(`/logs/${date}/${date}_${hourTime}_${lsh}_${idCard}_${name}`); this.folderPath = folderPath; return folderPath } constructor(context) { const fileUtil = new FileUtils(context) this.fileUtil = fileUtil } //关闭所有文件写入 public closeAllFiles = async () => { const { fileUtil, folderPath, fourAndOneLogDataFd } = this; ['exam_progress_data', 'wuxi_exam_data', 'wuxi_progress_data', 'plc_data', 'judge_exam_data', 'judge_progress_callback_data', 'judge_log_data', 'four_one_log_data', 'four_one_log_byte_data'].forEach(path => { fileUtil.closeFile(`${folderPath}/${path}.txt`); }) } }