gaoluyang
2024-07-22 d4bfd8248ae2c45b7ce441c55c97e204a287f835
static/js/worker.js
@@ -37,6 +37,7 @@
  }
  let isToExponential = ''
  let list2 = []
  let isPoint = ''
  excelMethodList.forEach(item => {
    if (item.valueList&&item.valueList.length>0&&item.valueList.find(m => m.r == r && m.c == c)) {
@@ -92,6 +93,7 @@
            // console.log(ask,res,item.v.f)
            if(ask){
              comp = ask.map((m, i) => {
                // console.log('m----', m)
                if (m.includes('RTS')) {
                  m = m.replace('RTS*', '')
                }
@@ -99,7 +101,11 @@
                  let str = handleFraction(m.split('=')[1])
                  if(typeof res == 'string'&&typeof str == 'string'){
                    if(res.includes('/')){
                      return handleMoreParam(res,m.split('=')[1],'=')
                      if (m.includes('/')) {
                        return  eval(res) == eval(str)
                      } else {
                        return handleMoreParam(res,m.split('=')[1],'=')
                      }
                    }else{
                      // console.log(res.trim().replace(/[.,。、;:'";??“,]/g, ''),' == ',str.trim().replace(/[.,。、;:'";??“,]/g, ''))
                      return  res.trim().replace(/[.,。、;:'";??“,]/g, '') == str.trim().replace(/[.,。、;:'";??“,]/g, '')
@@ -109,42 +115,74 @@
                  }
                } else if (m.includes('≥')) {
                  if(typeof res =='string'&&res.includes('/')){
                    return handleMoreParam(res,m.split('≥')[1],'≥')
                    if (m.includes('/')) {
                      // console.log('eval(res)----', eval(res))
                      let str = handleFraction(m.split('≥')[1])
                      // console.log('eval(str)----', eval(str))
                      return eval(res) >= eval(str)
                    } else {
                      return handleMoreParam(res,m.split('≥')[1],'≥')
                    }
                  }else{
                    let str = handleFraction(m.split('≥')[1])
                    return eval(res) >= eval(str)
                  }
                }else if (m.includes('≤')) {
                  if(typeof res =='string'&&res.includes('/')){
                    return handleMoreParam(res,m.split('≤')[1],'≤')
                    if (m.includes('/')) {
                      let str = handleFraction(m.split('≤')[1])
                      return eval(res) <= eval(str)
                    } else {
                      return handleMoreParam(res,m.split('≤')[1],'≤')
                    }
                  }else{
                    let str = handleFraction(m.split('≤')[1])
                    return eval(res) <= eval(str)
                  }
                }else if (m.includes('<')) {
                  if(typeof res =='string'&&res.includes('/')){
                    return handleMoreParam(res,m.split('<')[1],'<')
                    if (m.includes('/')) {
                      let str = handleFraction(m.split('<')[1])
                      return  eval(res) < eval(str)
                    } else {
                      return handleMoreParam(res,m.split('<')[1],'<')
                    }
                  }else{
                    let str = handleFraction(m.split('<')[1])
                    return  eval(res) < eval(str)
                  }
                }else if (m.includes('>')) {
                  if(typeof res =='string'&&res.includes('/')){
                    return handleMoreParam(res,m.split('>')[1],'>')
                    if (m.includes('/')) {
                      let str = handleFraction(m.split('>')[1])
                      return  eval(res) > eval(str)
                    } else {
                      return handleMoreParam(res,m.split('>')[1],'>')
                    }
                  }else{
                    let str = handleFraction(m.split('>')[1])
                    return  eval(res) > eval(str)
                  }
                }else if (m.includes('~')) {
                  if(typeof res =='string'&&res.includes('/')){
                    return handleMoreParam(res,m,'~')
                    if (m.includes('/')) {
                      let k = m.split('~')
                      return  eval(res) >= eval(handleFraction((k[0]))) && eval(res) <= eval(handleFraction(k[1]))
                    } else {
                      return handleMoreParam(res,m,'~')
                    }
                  }else{
                    let k = m.split('~')
                    return  eval(res) >= eval(handleFraction((k[0]))) && eval(res) <= eval(handleFraction(k[1]))
                  }
                }else if(m.includes('-')){
                  if(typeof res =='string'&&res.includes('/')){
                    return handleMoreParam(res,m,'-')
                    if (m.includes('/')) {
                      let k = m.split('-')
                      return  eval(res) >= eval(handleFraction(k[0])) && eval(res) <= eval(handleFraction(k[1]))
                    } else {
                      return handleMoreParam(res,m,'-')
                    }
                  }else{
                    let k = m.split('-')
                    // console.log(k,eval(res),eval(res) >= eval(handleFraction(k[0])) && eval(res) <= eval(handleFraction(k[1])))
@@ -152,21 +190,36 @@
                  }
                }else if(m.includes('±')){
                  if(typeof res =='string'&&res.includes('/')){
                    return handleMoreParam(res,m,'±')
                    if (m.includes('/')) {
                      let k = m.split('±')
                      return  eval(res) >= eval((handleFraction(k[0]) - handleFraction(k[1]))) && eval(res) <= eval((handleFraction(k[0]) + handleFraction(k[1])))
                    } else {
                      return handleMoreParam(res,m,'±')
                    }
                  }else{
                    let k = m.split('±')
                    return  eval(res) >= eval((handleFraction(k[0]) - handleFraction(k[1]))) && eval(res) <= eval((handleFraction(k[0]) + handleFraction(k[1])))
                  }
                }else if(m.includes('>')){
                  if(typeof res =='string'&&res.includes('/')){
                    return handleMoreParam(res,m.split('>')[1],'>')
                    if (m.includes('/')) {
                      let str = handleFraction(m.split('>')[1])
                      return  eval(res) > eval(str)
                    } else {
                      return handleMoreParam(res,m.split('>')[1],'>')
                    }
                  }else{
                    let str = handleFraction(m.split('>')[1])
                    return  eval(res) > eval(str)
                  }
                }else if(m.includes('<')){
                  if(typeof res =='string'&&res.includes('/')){
                    return handleMoreParam(res,m.split('<')[1],'<')
                    if (m.includes('/')) {
                      let str = handleFraction(m.split('<')[1])
                      return  eval(res) < eval(str)
                    } else {
                      return handleMoreParam(res,m.split('<')[1],'<')
                    }
                  }else{
                    let str = handleFraction(m.split('<')[1])
                    return  eval(res) < eval(str)
@@ -199,7 +252,7 @@
                }
              })
            }
            console.log(tableList)
            // console.log(tableList)
          }
          result = {
            method:'saveInsContext',
@@ -211,26 +264,22 @@
          self.postMessage(JSON.stringify(result))
        }
        } catch (error) {
          console.log('error---', error)
        }
      } else {
        let comResult = ''
        try {
          if(getInspectionValueType(item.i)==1){
            // let ask = currentSample.insProduct.find(m => m.id == item.i).ask?currentSample.insProduct.find(m => m.id == item.i).ask.split('&'):null;
            // let tell = currentSample.insProduct.find(m => m.id == item.i).tell?currentSample.insProduct.find(m => m.id == item.i).tell.split('&'):null;
            comResult = compute(item.v.f.replace(/=/g, ' '),comValue)
            let list3 = []
            list2.forEach(val => {
              val = val.toString()
              list3.push(val)
            })
            let tell = currentSample.insProduct.find(m => m.id == item.i).tell?currentSample.insProduct.find(m => m.id == item.i).tell.split('&'):null;
            isPoint = PROJECT=='装备电缆'&&tell&&tell.length>0&&typeof tell[0] =='string'&&tell[0].includes('/') // 判断要求值是否为分数
            comResult = compute(item.v.f.replace(/=/g, ' '),comValue, isPoint)
            let list3 = list2.map(item=>item+'')
            isToExponential = list3.some(val => val.includes('e+'))
            // 装备项目检验值转化
            if (PROJECT === '装备电缆' && isToExponential) {
              let num2 = new Big(comResult)
              comResult = num2.toExponential()
              comResult = num2.toExponential(1)
            }
          }else{
            let valueList = [];
@@ -262,10 +311,15 @@
              for (var b in a) {
                if (a[b].c == item.c) {
                  try{
                    let val = parseFloat(comResult.toFixed(3))
                    a[b].v.v = isNaN(val) ? '' : val
                  }catch(e){
                    if(comResult==0){
                      a[b].v.v = 0
                    }else{
                      let val = parseFloat(comResult.toFixed(3))
                      a[b].v.v = isNaN(val) ? '' : val
                    }
                  }catch(error){
                    a[b].v.v = comResult
                    console.log('error---', error)
                  }
                  break
                }
@@ -291,7 +345,7 @@
    }
    self.postMessage(JSON.stringify(result))
  } catch (error) {
    console.log('error---', error)
  }
}
@@ -419,7 +473,7 @@
    }
    return num;
  } catch (error) {
    console.log('error---', error)
  }
}
/**
@@ -441,7 +495,7 @@
    }
    return max;
  } catch (error) {
    console.log('error---', error)
  }
}
/**
@@ -461,7 +515,7 @@
    }
    return min;
  } catch (error) {
    console.log('error---', error)
  }
}
/**
@@ -488,7 +542,7 @@
      return null;
    }
  } catch (error) {
    console.log('error---', error)
  }
}
/**
@@ -501,7 +555,7 @@
  try {
    return Math.abs(val);
  } catch (error) {
    console.log('error---', error)
  }
}
/**
@@ -532,7 +586,7 @@
      return null;
    }
  } catch (error) {
    console.log('error---', error)
  }
}
@@ -553,11 +607,9 @@
      }
    }
  } catch (error) {
    console.log('error---', error)
  }
}
/**
 * 根据坐标获取列名
@@ -579,7 +631,7 @@
    letter += String.fromCharCode(65 + (i % 26));
    return letter + (parseInt(cellId[1]) + 1);
  }catch(e){
    console.log('error',cellId)
    console.log('error',e)
  }
}
/**
@@ -621,7 +673,7 @@
    }
    return id;
  }catch(e){
    console.log('error',id)
    console.log('error',e)
  }
}
@@ -655,7 +707,7 @@
    })
    return arr2;
  } catch (error) {
    console.log('error',error)
  }
}
/**
@@ -674,16 +726,16 @@
      'AVERAGE',
      'ABS',
    ]
    f = f.replace(regex, ',').replaceAll('"&','').replaceAll('&"','')
    f = f.replace(regex, ',').replace(new RegExp('"&', 'g'),'').replace(new RegExp('&"', 'g'),'')
    fouList.forEach(item=>{
      f = f.replaceAll(item,',')
      f = f.replace(new RegExp(item, 'g'),',')
    })
    let arr = f.split(',').filter(item=>{
      return item&& /[a-zA-Z]/.test(item)&&item!='undefined'&&item!='null'
    });
    return arr;
  } catch (error) {
    console.log('error',error)
  }
}
/**
@@ -701,7 +753,7 @@
    })
    return arr0;
  } catch (error) {
    console.log('error',error)
  }
}
@@ -713,7 +765,7 @@
 * @param comValue 对象类型,表示要替换的单元格值,键为单元格名称,值为替换后的值
 * @returns 返回计算后的结果,如果计算失败则返回0
 */
function compute(f,comValue){
function compute(f,comValue, isPoint){
  try {
    let str = f
    // 获取单元格对应值
@@ -755,25 +807,28 @@
        obj[item] = item
      }
    })
    str = str.replaceAll(':', '-')
    str = str.replace(new RegExp(':', 'g'),'-')
    // 替换参数
    for (var a in obj) {
      str = str.replaceAll(a, obj[a])
      str = str.replace(new RegExp(a, 'g'),obj[a])
    }
    // 计算
    for (var a in arr) {
      str = str.replaceAll(a, arr[a])
      str = str.replace(new RegExp(a, 'g'),arr[a])
    }
    if(str.includes(',,')){
      str = str.replaceAll(',,', '')
      str = str.replace(new RegExp(',,', 'g'),'')
    }
    // console.log('str', str)
    if(str.includes('&"/"&')){
      return str.replaceAll('&"/"&', '/').replaceAll('//','')
      return str.replace(new RegExp('&"/"&', 'g'),'/').replace(new RegExp('//', 'g'),'')
    } else if (isPoint) {
      return str.replace('ABS', '').replace(/\(|\)/g, '')
    }else {
      return eval(str)
    }
  } catch (error) {
    console.log('error',error)
  }
}