fix: 修复PHDParser 对异形文件名解析问题

This commit is contained in:
Xu Zhimeng 2023-11-10 18:12:02 +08:00
parent 88348f4f78
commit d31a12b8e4
2 changed files with 43 additions and 7 deletions

View File

@ -17,6 +17,21 @@ export const isSample = dataType => {
return ['SAMPLEPHD', 'SPHDP', 'SPHDF'].includes(dataType)
}
export const getSampleTypeIdentify = dataType => {
if(isSample(dataType)) {
return 'S'
} else {
switch (dataType) {
case PHD_DATA_TYPE.QCPHD:
return 'Q'
case PHD_DATA_TYPE.DETBKPHD:
return 'D'
case PHD_DATA_TYPE.GASBKPHD:
return 'G'
}
}
}
export class PHDParser {
/**
* 根据Block解析出的结果集
@ -75,8 +90,8 @@ export class PHDParser {
this.fileType = headerInfoLine1[2]
this.qualify = headerInfoLine1[4]
const liveTime = parseFloat(this.getBlockStr('Acquisition', 0, 3)).toFixed(1)
this.liveTime = liveTime.indexOf('.0') == -1 ? liveTime : liveTime.slice(0, -2)
const liveTime = parseFloat(this.getBlockStr('Acquisition', 0, 3))
this.liveTime = parseFloat(liveTime.toPrecision(6))
// 如果解析的是sample 文件,则解析相关联的文件
if (this.isSample) {
@ -87,6 +102,9 @@ export class PHDParser {
} else {
this.sampleFilePrefix = this.getGammaFilePrefix(headerInfo[2])
}
} else {
const filePrefixes = this.getFilePrefixes(headerInfo[2])
this.sampleFilePrefix = filePrefixes.splice(0, 1)[0]
}
}

View File

@ -139,9 +139,10 @@ import Vue from 'vue'
import { ACCESS_TOKEN } from '@/store/mutation-types'
import StripModal from './components/Modals/StripModal.vue'
import { FilePicker } from '@/utils/FilePicker'
import { zipFile } from '@/utils/file'
import { readFile, zipFile } from '@/utils/file'
import { findNearPeak } from '@/utils/sampleHelper'
import { add, subtract } from 'xe-utils/methods'
import { PHDParser, isSample, getSampleTypeIdentify } from '@/utils/phdHelper'
export default {
props: {
@ -1372,7 +1373,7 @@ export default {
DetailedInformation: this.detailedInfomation,
QCFlag: this.qcFlags,
BaseCtrls: this.baseCtrls,
bAnalyed: this.bAnalyed
bAnalyed: this.bAnalyed,
})
this.clearCompareLine()
@ -1382,7 +1383,16 @@ export default {
// Accept
handleAccept(data) {
const { allData, peak, shadowChannelChart, shadowEnergyChart, shapeChannelData, shapeEnergyData, barChart, BaseCtrls } = data
const {
allData,
peak,
shadowChannelChart,
shadowEnergyChart,
shapeChannelData,
shapeEnergyData,
barChart,
BaseCtrls,
} = data
const result = {
DetailedInformation: this.detailedInfomation,
@ -1395,7 +1405,7 @@ export default {
peak,
BaseCtrls,
bAnalyed: this.bAnalyed,
barChart
barChart,
}
this.clearCompareLine()
this.redrawPeakLine()
@ -1423,18 +1433,26 @@ export default {
try {
const [fileHandle] = await FilePicker.chooseFile(false, [{ accept: { 'text/phd': ['.phd'] } }])
const file = await fileHandle.getFile()
const text = await readFile(file)
const parser = new PHDParser(text)
const { sampleFilePrefix, qualify, dataType, liveTime } = parser
const hide = this.$message.loading('Uploading...', 0)
const zipedFiles = await zipFile([file], 'test.zip')
try {
const formData = new FormData()
formData.append('file', zipedFiles)
const { success, message } = await postAction('/spectrumFile/upload', formData)
if (success) {
this.handleFileSelect(file.name)
this.handleFileSelect(`${sampleFilePrefix}${getSampleTypeIdentify(dataType)}_${qualify}_${liveTime}.PHD`)
} else {
this.$message.error(message)
}
} catch (error) {
console.error(error)
} finally {
hide()
}
} catch (error) {
console.error(error)