Newer
Older
xc-business-system / src / views / equipement / standard / checkData / components / useStabilityCaculate.ts
// import { uniqueMultiArray } from '@/utils/Array'
// 稳定性所使用的一些公共的方法
/**
 * 清空六个日期的值
 * @param item 清空的数据,Object
 */
export function clearDateValue(item: any) {
  // 清除表中数据
  item.testValueOne = ''
  item.testValueTwo = ''
  item.testValueThree = ''
  item.testValueFour = ''
  item.testValueFive = ''
  item.testValueSix = ''
  return item
}

/**
 * 处理详情表头
 * @param columns 表头
 * @param list 表格数据
 * @param columnsNum 示值的索引
 */
export function handleDetailTableTableHead(
  columns: any,
  list: any,
  columnsNum = 5,
) {
  if (!list.length) {
    return false
  }
  if (list[0].testValueOneDate !== '') {
    columns[columnsNum].children[0].text = list[0].testValueOneDate // 填表头
  }
  if (list[0].testValueTwoDate !== '') {
    columns[columnsNum].children[1].text = list[0].testValueTwoDate // 填表头
  }
  if (list[0].testValueThreeDate !== '') {
    columns[columnsNum].children[2].text = list[0].testValueThreeDate // 填表头
  }
  if (list[0].testValueFourDate !== '') {
    columns[columnsNum].children[3].text = list[0].testValueFourDate // 填表头
  }
  if (list[0].testValueFiveDate !== '') {
    columns[columnsNum].children[4].text = list[0].testValueFiveDate // 填表头
  }
  if (list[0].testValueSixDate !== '') {
    columns[columnsNum].children[5].text = list[0].testValueSixDate // 填表头
  }

  return columns
}

/**
 * 处理保存日期参数
 * @param columns 表头
 * @param list 表格数据
 * @param columnsNum 示值的索引
 */
export function handleSaveDateParams(columns: any, list: any, columnsNum = 5) {
  if (!list.length) {
    return false
  }
  list = list.map(
    (item: {
      testValueFiveDate: string
      testValueFourDate: string
      testValueThreeDate: string
      testValueTwoDate: string
      testValueOneDate: string
    }) => {
      return {
        ...item,
        testValueFiveDate:
          columns[columnsNum].children[4].text === '-'
            ? ''
            : columns[columnsNum].children[4].text, //	核查读数5日期(稳定性)
        testValueFourDate:
          columns[columnsNum].children[3].text === '-'
            ? ''
            : columns[columnsNum].children[3].text, //	核查读数4日期(稳定性)
        testValueThreeDate:
          columns[columnsNum].children[2].text === '-'
            ? ''
            : columns[columnsNum].children[2].text, //	核查读数3日期(稳定性)
        testValueTwoDate:
          columns[columnsNum].children[1].text === '-'
            ? ''
            : columns[columnsNum].children[1].text, //	核查读数2日期(稳定性)
        testValueOneDate:
          columns[columnsNum].children[0].text === '-'
            ? ''
            : columns[columnsNum].children[0].text, //	核查读数1日期(稳定性)
      }
    },
  )
  return list
}

/**
 * 处理稳定性表格数据
 * @param value 所有查询到的稳定性历史数据
 * @param item 要处理的行数据
 * @param stabilityColumns 稳定性表头
 * @param num 控制表头日期从第几个开始填 ---查询历史日期从最后一个填,核查数据需要从倒数第二个填,因为最后一个要是本次核查日期
 * @param columnsNum 示值的索引
 * @param 参与比较的属性
 * @returns itemData 处理完的行数据 columnsData 表头
 */
export function solveHistoryIndicationTableData(
  value: any,
  item: any,
  stabilityColumns: any,
  num = 4,
  columnsNum = 5,
  belongStandardEquipment = '',
) {
  let list = []
  stabilityColumns = JSON.parse(JSON.stringify(stabilityColumns))
  // 示波器、信号发生器
  // 核查点+单位
  if (belongStandardEquipment === '13' || belongStandardEquipment === '10' || belongStandardEquipment === '1' || belongStandardEquipment === '3' || belongStandardEquipment === '4' || belongStandardEquipment === '5') {
    // 先找出此行数据的所有日期
    list = value.filter(
      (i: any) =>
        i.params === item.params
        && i.checkPoint === item.checkPoint
        && i.unit === item.unit,
    )
  }
  else if (belongStandardEquipment === '15') {
    // 先找出此行数据的所有日期
    list = value.filter((i: any) => i.frequency === item.frequency && i.frequencyUnit === item.frequencyUnit)
  }
  else if (belongStandardEquipment === '17') { // S参数
    // 先找出此行数据的所有日期
    list = value.filter((i: any) => {
      if (i.params === '失配测量') {
        return i.typeValue === item.typeValue && i.frequency === item.frequency && i.frequencyUnit === item.frequencyUnit
      }
      else if (i.params === '衰减测量') {
        return i.typeValue === item.typeValue && i.frequency === item.frequency && i.frequencyUnit === item.frequencyUnit && i.amplitude === item.amplitude && i.amplitudeUnit === item.amplitudeUnit
      }
      else if (i.params === '相移测量') {
        return i.typeValue === item.typeValue && i.phase === item.phase && i.phaseUnit === item.phaseUnit && i.amplitude === item.amplitude && i.amplitudeUnit === item.amplitudeUnit
      }
    })
  }
  else if (belongStandardEquipment === '7') { // 精密漏点仪
    // 先找出此行数据的所有日期
    list = value.filter((i: any) => {
      return i.equipmentName === item.equipmentName && i.typeValue === item.typeValue && i.relativeDimension === item.relativeDimension && i.checkPoint === item.checkPoint
    })
  }
  else if (belongStandardEquipment === '14') { // 铯原子
    // 先找出此行数据的所有日期
    list = value.filter((i: any) => {
      if (i.params === '铯原子频标核查') {
        return i.checkMethod === item.checkMethod && i.checkPoint === item.checkPoint
      }
      else if (i.params === '函数信号发生器核查') {
        return i.checkPoint === item.checkPoint && i.electricalLevel === item.electricalLevel && i.electricalLevelUnit === item.electricalLevelUnit
      }
      else if (i.params === '信号源核查') {
        return i.checkPoint === item.checkPoint && i.amplitude === item.amplitude && i.amplitudeUnit === item.amplitudeUnit
      }
    })
  }
  else if (belongStandardEquipment === '16') { // 低频信号源
    // 先找出此行数据的所有日期
    list = value.filter((i: any) => {
      if (i.params === '频率') {
        return i.nominalValue === item.nominalValue && i.unit === item.unit
      }
      else if (i.params === '交流电压') {
        return i.nominalValue === item.nominalValue && i.unit === item.unit && i.frequency === item.frequency && i.frequencyUnit === item.frequencyUnit
      }
      else if (i.params === '直流电压') {
        return i.nominalValue === item.nominalValue && i.unit === item.unit
      }
      else if (i.params === '平坦度') {
        return i.nominalValue === item.nominalValue && i.unit === item.unit && i.amplitude === item.amplitude && i.amplitudeUnit === item.amplitudeUnit
      }
      else if (i.params === '失真') {
        return i.frequency === item.frequency && i.frequencyUnit === item.frequencyUnit && i.nominalValue === item.nominalValue && i.unit === item.unit
      }
    })
  }
  else if (belongStandardEquipment === '18') { // 失真度
    // 先找出此行数据的所有日期
    list = value.filter((i: any) => {
      return i.frequency === item.frequency && i.frequencyUnit === item.frequencyUnit && i.nominalValue === item.nominalValue
    })
  }
  else if (belongStandardEquipment === '8') { // E2等砝码
    // 先找出此行数据的所有日期---核查点
    list = value.filter(
      (i: any) => i.checkPoint === item.checkPoint,
    )
    console.log('E2等砝码List', list)
  }
  else if (belongStandardEquipment === '12' || belongStandardEquipment === '11') { // 短稳,微波衰减
    // 先找出此行数据的所有日期---核查点
    list = value.filter(
      (i: any) => i.params === item.params,
    )
  }
  else {
    // 先找出此行数据的所有日期---核查点
    list = value.filter(
      (i: any) => i.params === item.params && i.checkPoint === item.checkPoint,
    )
  }
  if (list.length) {
    // 按照时间倒序排序
    list.sort((i: { testValueDate: string }, j: { testValueDate: string }) => {
      const time1 = new Date(j.testValueDate).getTime()
      const time2 = new Date(i.testValueDate).getTime()
      return time1 - time2
    })
    // 根据日期去重
    // list = uniqueMultiArray(list, 'testValueDate')
    list.forEach(
      (
        e: { testValueDate: string; testValue: string; id: string },
        index: number,
      ) => {
        stabilityColumns[columnsNum].children![num - index].text = e.testValueDate // 填表头
        stabilityColumns[columnsNum].children![num - index].checkDateDetailId = e.id // id用来查对应日期的详情
        item[stabilityColumns[columnsNum].children![num - index].value] = e.testValue // 填表格数据
      },
    )
  }
  return {
    itemData: item,
    columnsData: stabilityColumns,
  }
}

/**
 *
 * @param list 稳定性表格
 * @param length fetchHistory查询稳定性的表头有几个日期
 * @returns
 */
export function solveListStability(list: any) {
  // 这里处理问题:过滤掉历史日期查询不到的数据,达到历史日期查询什么就展示什么的问题
  // 存在接口查到第二列数据,但是历史日期接口缺没有第二列
  const tempList = list.map((item: any) => {
    return {
      ...item,
      // 清除表中数据
      testValueOne: '',
      testValueTwo: '',
      testValueThree: '',
      testValueFour: '',
      testValueFive: '',
      testValueSix: '',

      averageValueOne: '',
      averageValueTwo: '',
      averageValueThree: '',
      averageValueFour: '',
      averageValueFive: '',
      averageValueSix: '',

    }
  })
  return tempList
}