From 0e1ad657c245811b682e6ab78947ae526860148c Mon Sep 17 00:00:00 2001
From: licp <lichunping@guanfang.com.cn>
Date: 星期三, 10 七月 2024 10:26:09 +0800
Subject: [PATCH] 检验任务-增加多线程计算

---
 src/components/do/b1-inspect-order-plan/Inspection.vue |  216 +++++++++++++-----------------------------------------
 1 files changed, 52 insertions(+), 164 deletions(-)

diff --git a/src/components/do/b1-inspect-order-plan/Inspection.vue b/src/components/do/b1-inspect-order-plan/Inspection.vue
index 2769482..290fb01 100644
--- a/src/components/do/b1-inspect-order-plan/Inspection.vue
+++ b/src/components/do/b1-inspect-order-plan/Inspection.vue
@@ -810,7 +810,9 @@
           code0:null,
           value1:null,
           code1:null,
-        }
+        },
+        result: null,
+        worker: null,
       }
     },
     computed: {
@@ -950,7 +952,24 @@
         }
       }
     },
+    beforeDestroy() {
+      // 鍦ㄧ粍浠堕攢姣佸墠纭繚鍋滄 Worker锛岄伩鍏嶅唴瀛樻硠婕�
+      this.stopWorker();
+    },
     methods: {
+      startWorker() {
+      if (this.worker) {
+        this.stopWorker(); // 纭繚涔嬪墠鐨� Worker 宸插仠姝�
+        }
+        // 鍒涘缓 Worker 瀹炰緥
+        this.worker = new Worker('/static/js/worker.js');
+      },
+      stopWorker() {
+        if (this.worker) {
+          this.worker.terminate();
+          this.worker = null;
+        }
+      },
       changeItem(row){
         if(row.value0&&row.value1){
           this.$set(row,'comValue',((Number(row.value0)+Number(row.value1))/2).toFixed(3))
@@ -1650,170 +1669,39 @@
         this.handleExcelMethod()
       },
       changeInput(m, code) {
-        let str = code.split('-')
-        let r = str[1]
-        let c = str[2]
-        let id = str[0]
-        let pId = str[3]
-        var list = []
-        for (let a in this.tableList) {
-          if (this.tableList[a].templateId == id) {
-            list = this.tableList[a].arr
-            break
+        this.startWorker()
+
+        // 鍚� Worker 鍙戦�佹秷鎭紝寮�濮嬪鐞嗛�昏緫
+        this.worker.postMessage(JSON.stringify({
+          code: code,
+          tableList:this.tableList,
+          excelMethodList:this.excelMethodList,
+          comparisonList:this.comparisonList,
+          currentSample:this.currentSample,
+          PROJECT:this.PROJECT,
+          param:this.param
+        }));
+
+        // 鐩戝惉 Worker 杩斿洖鐨勭粨鏋�
+        this.worker.onmessage = (event) => {
+          this.result = JSON.parse(event.data);
+          switch (this.result.method){
+            case 'saveInsContext':
+              this.tableList = this.result.value.tableList
+              this.param = this.result.value.param
+              this.saveInsContext()
+              break;
+            case 'tableList':
+              this.tableList = this.result.value
+              break;
+            case 'getCurrentInsProduct':
+              this.getCurrentInsProduct(this.result.value)
+              break;
           }
-        }
-        this.excelMethodList.forEach(item => {
-          if (item.valueList.find(m => m.r == r && m.c == c)) {
-            var comValue = {}
-            item.valueList.forEach(a => {
-              list.forEach(b => {
-                if (b[0].r == a.r) {
-                  b.forEach(c => {
-                    if (c.c == a.c) {
-                      var tableCode = ''
-                      for (var d in this.comparisonList) {
-                        if (c.c == this.comparisonList[d].value) {
-                          tableCode = this.comparisonList[d].label
-                          break
-                        }
-                      }
-                      if(this.getInspectionValueType(item.i)==1&&!isNaN(parseFloat(c.v.v))){
-                        comValue[(tableCode + (c.r + 1))] = parseFloat(c.v.v)
-                      }else{
-                        comValue[(tableCode + (c.r + 1))] = c.v.v
-                      }
-                    }
-                  })
-                }
-              })
-            })
-            if (item.v.ps != undefined && item.v.ps.value == '缁撹') {
-              try {
-                if (this.currentSample.insProduct.find(m => m.id == item.i)) {
-                let ask = this.currentSample.insProduct.find(m => m.id == item.i).ask?this.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 = ''
-                }else{
-                  if(ask){
-                    comp = ask.map((m, i) => {
-                      if (m.includes('RTS')) {
-                        m = m.replace('RTS*', '')
-                      }
-                      if (m.includes('=')) {
-                        let str = this.handleFraction(m.split('=')[1])
-                        if(typeof res == 'string'&&typeof str == 'string'){
-                          return  res.trim() == str.trim()
-                        }else{
-                          return  eval(res) == eval(str)
-                        }
-                      } else if (m.includes('鈮�')) {
-                        let str = this.handleFraction(m.split('鈮�')[1])
-                        return eval(res) >= eval(str)
-                      }else if (m.includes('鈮�')) {
-                        let str = this.handleFraction(m.split('鈮�')[1])
-                        return eval(res) <= eval(str)
-                      }else if (m.includes('<')) {
-                        let str = this.handleFraction(m.split('<')[1])
-                        return  eval(res) < eval(str)
-                      }else if (m.includes('>')) {
-                        let str = this.handleFraction(m.split('>')[1])
-                        return  eval(res) > eval(str)
-                      }else if (m.includes('~')) {
-                        let k = m.split('~')
-                        return  eval(res) >= eval(this.handleFraction((k[0]))) && eval(res) <= eval(this.handleFraction(k[1]))
-                      }else if(m.includes('-')){
-                        let k = m.split('-')
-                        return  eval(res) >= eval(this.handleFraction(k[0])) && eval(res) <= eval(this.handleFraction(k[1]))
-                      }else if(m.includes('卤')){
-                        let k = m.split('卤')
-                        return  eval(res) >= eval((this.handleFraction(k[0]) - this.handleFraction(k[1]))) && eval(res) <= eval((this.handleFraction(k[0]) + this.handleFraction(k[1])))
-                      }else if(m.includes('锛�')){
-                        let str = this.handleFraction(m.split('锛�')[1])
-                        return  eval(res) > eval(str)
-                      }else if(m.includes('锛�')){
-                        let str = this.handleFraction(m.split('锛�')[1])
-                        return  eval(res) < eval(str)
-                      }
-                    })
-                  }
-                  if (comp.every(m => m)) {
-                    item.v.v = 1
-                  } else {
-                    item.v.v = 0
-                  }
-                }
-                this.saveInsContext()
-              }
-              } catch (error) {
-
-              }
-
-            } else {
-              let comResult = ''
-              try {
-                if(this.getInspectionValueType(item.i)==1){
-                  let ask = this.currentSample.insProduct.find(m => m.id == item.i).ask?this.currentSample.insProduct.find(m => m.id == item.i).ask.split('&'):null;
-                  comResult = excelFunction.compute(item.v.f.replace(/=/g, ' '),comValue)
-                  // 瑁呭椤圭洰妫�楠屽�艰浆鍖�
-                  if (this.PROJECT === '瑁呭鐢电紗' && ask[0].includes('RTS')) {
-                    let num2 = new this.$Big(comResult)
-                    comResult = num2.toExponential()
-                  }
-                }else{
-                  let valueList = [];
-                  item.valueList.forEach(a => {
-                    console.log(a)
-                    valueList.push({
-                      name: `${this.comparisonList.find(e=>e.value==a.c).label}${a.r+1}`,
-                      value: 0,
-                    })
-                  })
-                  for (var a in comValue) {
-                    valueList.forEach(b => {
-                      if (b.name == a) {
-                        b.value = comValue[a]
-                      }
-                    })
-                  }
-                  let str = item.v.f.replace(/=/g, ' ')
-                  valueList.forEach(b => {
-                    str = str.replace(b.name, b.value)
-                  })
-                  console.log(str)
-                  comResult = str
-                }
-              } catch (error) {
-              }
-              try {
-                list.forEach(a => {
-                  if (a[0].r == item.r && comResult !== '') {
-                    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){
-                          a[b].v.v = comResult
-                        }
-                        break
-                      }
-                    }
-                  }
-                })
-                this.changeInput(comResult, `${id}-${item.r}-${item.c}-${pId}`) //鏀瑰彉鏈�缁堝��
-              } catch (error) {
-
-              }
-            }
-          }
-        })
-        try {
-          this.getCurrentInsProduct(pId)
-        } catch (error) {
-
-        }
+          // if(this.result.method=='saveInsContext'){
+          //   this.stopWorker(); // 澶勭悊瀹屾垚鍚庡仠姝� Worker
+          // }
+        };
       },
       handleFraction(str){
         if(str&&typeof(str)=='string'&&str.includes('/')){

--
Gitblit v1.9.3