From cc702f8d62c082c8f4b97b44e094fb8b8c7b97d8 Mon Sep 17 00:00:00 2001 From: licp <lichunping@guanfang.com.cn> Date: 星期三, 31 七月 2024 15:16:06 +0800 Subject: [PATCH] 修改检验任务bug --- static/js/worker.js | 346 ++++++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 243 insertions(+), 103 deletions(-) diff --git a/static/js/worker.js b/static/js/worker.js index 146cb61..ba752fe 100644 --- a/static/js/worker.js +++ b/static/js/worker.js @@ -1,6 +1,6 @@ let code = '' -let tableList = [] +let tableList = null let excelMethodList = [] let comparisonList = [] let currentSample = {} @@ -10,14 +10,45 @@ value:null } let param = null +let currentTable = '' self.onmessage = function(event) { const data = JSON.parse(event.data); + if(currentTable!=data.currentTable){ + tableList = data.tableList; + } + currentTable = data.currentTable; + if(data.type&&data.type=='saveData'){ + tableList = data.tableList; + param = data.param; + return + } code = data.code; - tableList = JSON.parse(JSON.stringify(data.tableList)); + if(tableList){ + let str = code.split('-') + let r = str[1] + let c = str[2] + tableList[0].arr.forEach((item,index)=>{ + item.forEach((m,i)=>{ + if(m.c==c&&m.r==r){ + tableList[0].arr[index] = data.tableList[0].arr[index] + } + }) + }) + }else{ + tableList = data.tableList; + } + if(param){ + let str = code.split('-') + let pId = str[3] + param[pId] = data.param[pId] + }else{ + param = data.param; + } + // tableList = data.tableList; + // param = data.param; excelMethodList = JSON.parse(JSON.stringify(data.excelMethodList)); comparisonList = JSON.parse(JSON.stringify(data.comparisonList)); currentSample = JSON.parse(JSON.stringify(data.currentSample)); - param = data.param; PROJECT = data.PROJECT changeInput('', code); }; @@ -35,8 +66,11 @@ break } } + let isToExponential = '' + let list2 = [] + let isPoint = '' excelMethodList.forEach(item => { - if (item.valueList.find(m => m.r == r && m.c == c)) { + if (item.valueList&&item.valueList.length>0&&item.valueList.find(m => m.r == r && m.c == c)) { var comValue = {} item.valueList.forEach(a => { list.forEach(b => { @@ -50,6 +84,7 @@ break } } + list2.push(c.v.v) if(getInspectionValueType(item.i)==1&&!isNaN(parseFloat(c.v.v))){ let n = String(c.v.v) if(n.includes('/')){ @@ -71,85 +106,150 @@ let ask = currentSample.insProduct.find(m => m.id == item.i).ask?currentSample.insProduct.find(m => m.id == item.i).ask.split('&'):null; let res = Object.values(comValue)[0] let comp = [] + if(res==''||res==null||res==undefined||res=='Infinity'){ - item.v.v = '' + item.v.v = null + list.forEach(a => { + if (a[0].r == item.r) { + for (let b=0; b<a.length; b++) { + if (a[b].c == item.c) { + a[b].v.v = null + break + } + } + } + }) }else{ - console.log(ask,res,item.v.f) + // 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*', '') } if (m.includes('=')) { let str = handleFraction(m.split('=')[1]) if(typeof res == 'string'&&typeof str == 'string'){ - if(item.v.f&&typeof(item.v.f)=='string'&&item.v.f.includes('&"/"&')){ - return handleMoreParam(res,m.split('=')[1],'=') + if(res.includes('/')){ + if (m.includes('/')) { + return eval(res) == eval(str) + } else { + return handleMoreParam(res,m.split('=')[1],'=') + } }else{ - return res.trim() == str.trim() + // console.log(res.trim().replace(/[.,銆傘�侊紱锛�'";?锛熲�滐紝]/g, ''),' == ',str.trim().replace(/[.,銆傘�侊紱锛�'";?锛熲�滐紝]/g, '')) + return res.trim().replace(/[.,銆傘�侊紱锛�'";?锛熲�滐紝]/g, '') == str.trim().replace(/[.,銆傘�侊紱锛�'";?锛熲�滐紝]/g, '') } }else{ return eval(res) == eval(str) } } else if (m.includes('鈮�')) { - if(item.v.f&&typeof(item.v.f)=='string'&&item.v.f.includes('&"/"&')){ - return handleMoreParam(res,m.split('鈮�')[1],'鈮�') + if(typeof res =='string'&&res.includes('/')){ + 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(item.v.f&&typeof(item.v.f)=='string'&&item.v.f.includes('&"/"&')){ - return handleMoreParam(res,m.split('鈮�')[1],'鈮�') + if(typeof res =='string'&&res.includes('/')){ + 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(item.v.f&&typeof(item.v.f)=='string'&&item.v.f.includes('&"/"&')){ - return handleMoreParam(res,m.split('<')[1],'<') + if(typeof res =='string'&&res.includes('/')){ + 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(item.v.f&&typeof(item.v.f)=='string'&&item.v.f.includes('&"/"&')){ - return handleMoreParam(res,m.split('>')[1],'>') + if(typeof res =='string'&&res.includes('/')){ + 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(item.v.f&&typeof(item.v.f)=='string'&&item.v.f.includes('&"/"&')){ - return handleMoreParam(res,m,'~') + if(typeof res =='string'&&res.includes('/')){ + 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(res.includes('/')){ - return handleMoreParam(res,m,'-') + if(typeof res =='string'&&res.includes('/')){ + 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]))) return eval(res) >= eval(handleFraction(k[0])) && eval(res) <= eval(handleFraction(k[1])) } }else if(m.includes('卤')){ - if(item.v.f&&typeof(item.v.f)=='string'&&item.v.f.includes('&"/"&')){ - return handleMoreParam(res,m,'卤') + if(typeof res =='string'&&res.includes('/')){ + 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(item.v.f&&typeof(item.v.f)=='string'&&item.v.f.includes('&"/"&')){ - return handleMoreParam(res,m.split('锛�')[1],'>') + if(typeof res =='string'&&res.includes('/')){ + 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(item.v.f&&typeof(item.v.f)=='string'&&item.v.f.includes('&"/"&')){ - return handleMoreParam(res,m.split('锛�')[1],'<') + if(typeof res =='string'&&res.includes('/')){ + 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) @@ -182,7 +282,9 @@ } }) } + // console.log(tableList) } + // console.log('1234567789', tableList,getParam()) result = { method:'saveInsContext', value:{ @@ -193,20 +295,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; - comResult = compute(item.v.f.replace(/=/g, ' '),comValue) - console.log(1111,comResult) + 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 === '瑁呭鐢电紗' && ask[0].includes('RTS')) { + if (PROJECT === '瑁呭鐢电紗' && isToExponential) { let num2 = new Big(comResult) - comResult = num2.toExponential() + comResult = num2.toExponential(1) } }else{ let valueList = []; @@ -230,6 +334,7 @@ comResult = str } } catch (error) { + console.log('error---', error) } try { list.forEach(a => { @@ -237,10 +342,22 @@ 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 if(a[b].v.ct&&a[b].v.ct.fa&&typeof a[b].v.ct.fa == 'string'&&a[b].v.ct.fa.includes('.')){ + let num = 0 + let str = a[b].v.ct.fa.split('.')[1] + num = str.length + a[b].v.v = comResult?Number(comResult).toFixed(num):0 + }else{ + let val = parseFloat(Number(comResult).toFixed(3)) + a[b].v.v = isNaN(val) ? comResult : val + } + // console.log('a[b].v.ct', comResult) + // console.log('a[b].v.v', a[b].v.v) + }catch(error){ a[b].v.v = comResult + console.log('error---', error) } break } @@ -249,7 +366,7 @@ }) changeInput(comResult, `${id}-${item.r}-${item.c}-${pId}`) //鏀瑰彉鏈�缁堝�� } catch (error) { - + console.log('error---', error) } } } @@ -266,7 +383,7 @@ } self.postMessage(JSON.stringify(result)) } catch (error) { - + console.log('error---', error) } } @@ -298,51 +415,67 @@ } } +/** + * 澶勭悊甯︽湁澶氫釜鍙傛暟鐨勫嚱鏁� + * + * @param res 瀛楃涓诧紝闇�瑕佽鍒嗗壊骞跺鐞嗙殑瀛楃涓� + * @param str 瀛楃涓诧紝涓巖es涓殑姣忎竴椤硅繘琛屾瘮杈冪殑瀛楃涓诧紝鍙兘鏄垎鏁版垨鑰呭甫鏈夋瘮杈冪鍙风殑瀛楃涓� + * @param comp 瀛楃涓诧紝琛ㄧず姣旇緝绫诲瀷鐨勫瓧绗︼紙濡� '>'銆�'<'銆�'='銆�'鈮�'銆�'鈮�'銆�'卤'銆�'~'銆�'-'锛� + * @returns 杩斿洖甯冨皵鍊硷紝濡傛灉res涓瘡涓�椤归兘婊¤冻涓巗tr鐨勬瘮杈冩潯浠讹紝鍒欒繑鍥瀟rue锛屽惁鍒欒繑鍥瀎alse + */ function handleMoreParam(res,str,comp){ - let arr = res.split('/') - let arr0 = arr.every(item=>{ - console.log(comp) - switch (comp){ - case '>': - return item > handleFraction(str) - case '<': - return item < handleFraction(str) - case '=': - return item == handleFraction(str) - case '鈮�': - return item >= handleFraction(str) - case '鈮�': - return item <= handleFraction(str) - case '卤': - let k = str.split('卤') - return item >= eval((handleFraction(k[0]) - handleFraction(k[1]))) && item <= eval((handleFraction(k[0]) + handleFraction(k[1]))) - case '~': - let j = str.split('~') - return item >= eval(handleFraction((j[0]))) && item <= eval(handleFraction(j[1])) - case '-': - let o = str.split('-') - return item >= eval(handleFraction(o[0])) && item <= eval(handleFraction(o[1])) + let arr = res.split('/') + let arr0 = arr.every(item=>{ + switch (comp){ + case '>': + return item > handleFraction(str) + case '<': + return item < handleFraction(str) + case '=': + return item == handleFraction(str) + case '鈮�': + return item >= handleFraction(str) + case '鈮�': + return item <= handleFraction(str) + case '卤': + let k = str.split('卤') + return item >= eval((handleFraction(k[0]) - handleFraction(k[1]))) && item <= eval((handleFraction(k[0]) + handleFraction(k[1]))) + case '~': + let j = str.split('~') + return item >= eval(handleFraction((j[0]))) && item <= eval(handleFraction(j[1])) + case '-': + let o = str.split('-') + return item >= eval(handleFraction(o[0])) && item <= eval(handleFraction(o[1])) + } + }) + if(arr0){ + return true + }else{ + return false } - }) - if(arr0){ - return true - }else{ - return false } -} +/** + * 鑾峰彇鍙傛暟 + * + * @returns 杩斿洖澶勭悊鍚庣殑鍙傛暟瀵硅薄 + */ function getParam(){ - for (var b in param){ - param[b].insValue = [] - param[b].comValue = [] - param[b].equipValue = [] - param[b].equipName = [] - param[b].resValue = null - param[b].insResult = null - } + tableList[0].arr.forEach(a=>{ + a.forEach(b=>{ + if(param[b.i]){ + param[b.i].insValue = [] + param[b.i].comValue = [] + param[b.i].equipValue = [] + param[b.i].equipName = [] + param[b.i].resValue = null + param[b.i].insResult = null + } + }) + }) tableList[0].arr.forEach(a => { a.forEach(b=>{ - if (b.v.ps != undefined && b.v.ps.value === '妫�楠屽��') { + if (b.v.ps != undefined &&typeof b.v.ps.value =='string'&& b.v.ps.value.includes('妫�楠屽��')) { b.i &&b.v.v&& param[b.i].insValue.push(b) } if (b.v.ps != undefined && b.v.ps.value === '璁$畻鍊�') { @@ -382,7 +515,7 @@ } return num; } catch (error) { - + console.log('error---', error) } } /** @@ -404,7 +537,7 @@ } return max; } catch (error) { - + console.log('error---', error) } } /** @@ -424,7 +557,7 @@ } return min; } catch (error) { - + console.log('error---', error) } } /** @@ -438,7 +571,7 @@ let num = null; let arr = []; if(val&&val.length>0){ - arr = val.filter(item=>item!=null&&item!=='') + arr = val.filter(item=>item!=null&&item!=''&&item!=undefined) arr.forEach(item=>{ num+=item; }) @@ -451,7 +584,7 @@ return null; } } catch (error) { - + console.log('error---', error) } } /** @@ -464,7 +597,7 @@ try { return Math.abs(val); } catch (error) { - + console.log('error---', error) } } /** @@ -495,7 +628,7 @@ return null; } } catch (error) { - + console.log('error---', error) } } @@ -516,11 +649,9 @@ } } } catch (error) { - + console.log('error---', error) } } - - /** * 鏍规嵁鍧愭爣鑾峰彇鍒楀悕 @@ -542,7 +673,7 @@ letter += String.fromCharCode(65 + (i % 26)); return letter + (parseInt(cellId[1]) + 1); }catch(e){ - console.log('error',cellId) + console.log('error',e) } } /** @@ -584,7 +715,7 @@ } return id; }catch(e){ - console.log('error',id) + console.log('error',e) } } @@ -618,7 +749,7 @@ }) return arr2; } catch (error) { - + console.log('error',error) } } /** @@ -637,16 +768,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) } } /** @@ -664,9 +795,10 @@ }) return arr0; } catch (error) { - + console.log('error',error) } } + /** * 璁$畻鍑芥暟 @@ -675,7 +807,7 @@ * @param comValue 瀵硅薄绫诲瀷锛岃〃绀鸿鏇挎崲鐨勫崟鍏冩牸鍊硷紝閿负鍗曞厓鏍煎悕绉帮紝鍊间负鏇挎崲鍚庣殑鍊� * @returns 杩斿洖璁$畻鍚庣殑缁撴灉锛屽鏋滆绠楀け璐ュ垯杩斿洖0 */ -function compute(f,comValue){ +function compute(f,comValue, isPoint){ try { let str = f // 鑾峰彇鍗曞厓鏍煎搴斿�� @@ -685,8 +817,6 @@ if(typeof(comValue[a])=='string'&&comValue[a].includes('^')){ // 璁$畻骞傛 arr[a] = CalculatePower(comValue[a]) - } else if (typeof(comValue[a])=='string'&&comValue[a].includes('/')) { - arr[a] = comValue[a].split('/')[0] / comValue[a].split('/')[1]; } else{ arr[a] = comValue[a] } @@ -719,25 +849,35 @@ 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'),',') } + if(str.includes(',,')){ + str = str.replace(new RegExp(',,', 'g'),',') + } + if(str.includes(',,')){ + str = str.replace(new RegExp(',,', 'g'),',') + } + // console.log('str', str) if(str.includes('&"/"&')){ - return str.replaceAll('&"/"&', '/').replaceAll('//','') - }else{ + return str.replace(new RegExp('&"/"&', 'g'),'/').replace(new RegExp('//', 'g'),'') + } else if (isPoint) { + return str.replace('ABS', '').replace(/\(|\)/g, '') + }else { + console.log('str', str,eval(str)) return eval(str) } } catch (error) { - + console.log('error',error) } } -- Gitblit v1.9.3