From e0043788e0fdbc7292a532e7eb7d2b33a9fa2d7e Mon Sep 17 00:00:00 2001
From: ZengTao <2773468879@qq.com>
Date: 星期四, 12 九月 2024 08:53:32 +0800
Subject: [PATCH] 删除扫码枪多余代码,大理片添加指定工程

---
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java                                  |   18 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/UnLoadGlassApplication.java                                          |    2 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java                                      |   57 +
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java          |    2 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java                  |   66 +
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java |    5 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java    |    9 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/Downpush.java                                                    |   97 -
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcSlicecage.java                                         |   39 
 UI-Project/src/views/UnLoadGlass/loadmachinerack.vue                                                                                         |   23 
 UI-Project/src/views/Slicecage/slicecage.vue                                                                                                 |   73 ++
 /dev/null                                                                                                                                    |   82 --
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java         |    2 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/OptimizeGlassinfo.java                                           |    2 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java                                   |   32 
 UI-Project/package-lock.json                                                                                                                 | 1533 +++++++++++++++++++++++++++++++++++++++++++
 UI-Project/package.json                                                                                                                      |    1 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml                                                         |    4 
 18 files changed, 1,828 insertions(+), 219 deletions(-)

diff --git a/UI-Project/package-lock.json b/UI-Project/package-lock.json
index d59de38..1762ec0 100644
--- a/UI-Project/package-lock.json
+++ b/UI-Project/package-lock.json
@@ -15,6 +15,7 @@
         "echarts": "^5.5.1",
         "element-plus": "^2.4.0",
         "moment": "^2.30.1",
+        "northglass-mes": "file:",
         "pinia": "^2.1.6",
         "pinia-plugin-persistedstate": "^3.2.0",
         "qrcode": "^1.5.4",
@@ -1311,6 +1312,10 @@
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz",
       "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw=="
+    },
+    "node_modules/northglass-mes": {
+      "resolved": "",
+      "link": true
     },
     "node_modules/p-limit": {
       "version": "2.3.0",
@@ -3123,6 +3128,1534 @@
       "resolved": "https://registry.npmjs.org/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz",
       "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw=="
     },
+    "northglass-mes": {
+      "version": "file:",
+      "requires": {
+        "@element-plus/icons-vue": "^2.3.1",
+        "@types/sortablejs": "^1.15.7",
+        "@vitejs/plugin-vue": "^4.6.2",
+        "@vue-macros/reactivity-transform": "^0.3.23",
+        "axios": "^1.6.8",
+        "chart.js": "^4.4.3",
+        "echarts": "^5.5.1",
+        "element-plus": "^2.4.0",
+        "http-proxy-middleware": "^3.0.0",
+        "moment": "^2.30.1",
+        "northglass-mes": "file:",
+        "pinia": "^2.1.6",
+        "pinia-plugin-persistedstate": "^3.2.0",
+        "qrcode": "^1.5.4",
+        "sortablejs": "^1.15.1",
+        "sweetalert2": "^11.10.7",
+        "unplugin-auto-import": "^0.17.6",
+        "vite": "^4.4.9",
+        "vue": "^3.3.4",
+        "vue-draggable-plus": "^0.5.0",
+        "vue-echarts": "^6.7.3",
+        "vue-i18n": "^9.10.1",
+        "vue-print-nb": "^1.7.5",
+        "vue-router": "^4.2.4",
+        "vue3-print-nb": "^0.1.4",
+        "vxe-table": "^4.5.15",
+        "xe-utils": "^3.5.14",
+        "xlsx": "^0.18.5"
+      },
+      "dependencies": {
+        "@antfu/utils": {
+          "version": "0.7.8",
+          "resolved": "https://registry.npmmirror.com/@antfu/utils/-/utils-0.7.8.tgz",
+          "integrity": "sha512-rWQkqXRESdjXtc+7NRfK9lASQjpXJu1ayp7qi1d23zZorY+wBHVLHHoVcMsEnkqEBWTFqbztO7/QdJFzyEcLTg==",
+          "dev": true
+        },
+        "@babel/helper-string-parser": {
+          "version": "7.24.8",
+          "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz",
+          "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ=="
+        },
+        "@babel/helper-validator-identifier": {
+          "version": "7.24.7",
+          "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
+          "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w=="
+        },
+        "@babel/parser": {
+          "version": "7.25.3",
+          "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.25.3.tgz",
+          "integrity": "sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==",
+          "requires": {
+            "@babel/types": "^7.25.2"
+          }
+        },
+        "@babel/types": {
+          "version": "7.25.2",
+          "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.25.2.tgz",
+          "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==",
+          "requires": {
+            "@babel/helper-string-parser": "^7.24.8",
+            "@babel/helper-validator-identifier": "^7.24.7",
+            "to-fast-properties": "^2.0.0"
+          }
+        },
+        "@ctrl/tinycolor": {
+          "version": "3.6.1",
+          "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz",
+          "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA=="
+        },
+        "@element-plus/icons-vue": {
+          "version": "2.3.1",
+          "resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz",
+          "integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==",
+          "requires": {}
+        },
+        "@esbuild/win32-ia32": {
+          "version": "0.18.20",
+          "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz",
+          "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==",
+          "dev": true,
+          "optional": true
+        },
+        "@floating-ui/core": {
+          "version": "1.5.0",
+          "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.0.tgz",
+          "integrity": "sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==",
+          "requires": {
+            "@floating-ui/utils": "^0.1.3"
+          }
+        },
+        "@floating-ui/dom": {
+          "version": "1.5.3",
+          "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz",
+          "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==",
+          "requires": {
+            "@floating-ui/core": "^1.4.2",
+            "@floating-ui/utils": "^0.1.3"
+          }
+        },
+        "@floating-ui/utils": {
+          "version": "0.1.6",
+          "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz",
+          "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A=="
+        },
+        "@intlify/core-base": {
+          "version": "9.13.1",
+          "resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.13.1.tgz",
+          "integrity": "sha512-+bcQRkJO9pcX8d0gel9ZNfrzU22sZFSA0WVhfXrf5jdJOS24a+Bp8pozuS9sBI9Hk/tGz83pgKfmqcn/Ci7/8w==",
+          "requires": {
+            "@intlify/message-compiler": "9.13.1",
+            "@intlify/shared": "9.13.1"
+          }
+        },
+        "@intlify/message-compiler": {
+          "version": "9.13.1",
+          "resolved": "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-9.13.1.tgz",
+          "integrity": "sha512-SKsVa4ajYGBVm7sHMXd5qX70O2XXjm55zdZB3VeMFCvQyvLew/dLvq3MqnaIsTMF1VkkOb9Ttr6tHcMlyPDL9w==",
+          "requires": {
+            "@intlify/shared": "9.13.1",
+            "source-map-js": "^1.0.2"
+          }
+        },
+        "@intlify/shared": {
+          "version": "9.13.1",
+          "resolved": "https://registry.npmmirror.com/@intlify/shared/-/shared-9.13.1.tgz",
+          "integrity": "sha512-u3b6BKGhE6j/JeRU6C/RL2FgyJfy6LakbtfeVF8fJXURpZZTzfh3e05J0bu0XPw447Q6/WUp3C4ajv4TMS4YsQ=="
+        },
+        "@jridgewell/sourcemap-codec": {
+          "version": "1.4.15",
+          "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+          "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
+        },
+        "@kurkle/color": {
+          "version": "0.3.2",
+          "resolved": "https://registry.npmmirror.com/@kurkle/color/-/color-0.3.2.tgz",
+          "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw=="
+        },
+        "@nodelib/fs.scandir": {
+          "version": "2.1.5",
+          "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+          "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+          "dev": true,
+          "requires": {
+            "@nodelib/fs.stat": "2.0.5",
+            "run-parallel": "^1.1.9"
+          }
+        },
+        "@nodelib/fs.stat": {
+          "version": "2.0.5",
+          "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+          "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+          "dev": true
+        },
+        "@nodelib/fs.walk": {
+          "version": "1.2.8",
+          "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+          "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+          "dev": true,
+          "requires": {
+            "@nodelib/fs.scandir": "2.1.5",
+            "fastq": "^1.6.0"
+          }
+        },
+        "@popperjs/core": {
+          "version": "npm:@sxzz/popperjs-es@2.11.7",
+          "resolved": "https://registry.npmjs.org/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz",
+          "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ=="
+        },
+        "@rollup/pluginutils": {
+          "version": "5.1.0",
+          "resolved": "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.1.0.tgz",
+          "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==",
+          "requires": {
+            "@types/estree": "^1.0.0",
+            "estree-walker": "^2.0.2",
+            "picomatch": "^2.3.1"
+          }
+        },
+        "@types/estree": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.2.tgz",
+          "integrity": "sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA=="
+        },
+        "@types/http-proxy": {
+          "version": "1.17.14",
+          "resolved": "https://registry.npmmirror.com/@types/http-proxy/-/http-proxy-1.17.14.tgz",
+          "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==",
+          "dev": true,
+          "requires": {
+            "@types/node": "*"
+          }
+        },
+        "@types/lodash": {
+          "version": "4.14.199",
+          "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.199.tgz",
+          "integrity": "sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg=="
+        },
+        "@types/lodash-es": {
+          "version": "4.17.9",
+          "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.9.tgz",
+          "integrity": "sha512-ZTcmhiI3NNU7dEvWLZJkzG6ao49zOIjEgIE0RgV7wbPxU0f2xT3VSAHw2gmst8swH6V0YkLRGp4qPlX/6I90MQ==",
+          "requires": {
+            "@types/lodash": "*"
+          }
+        },
+        "@types/node": {
+          "version": "20.12.5",
+          "resolved": "https://registry.npmmirror.com/@types/node/-/node-20.12.5.tgz",
+          "integrity": "sha512-BD+BjQ9LS/D8ST9p5uqBxghlN+S42iuNxjsUGjeZobe/ciXzk2qb1B6IXc6AnRLS+yFJRpN2IPEHMzwspfDJNw==",
+          "dev": true,
+          "requires": {
+            "undici-types": "~5.26.4"
+          }
+        },
+        "@types/sortablejs": {
+          "version": "1.15.8",
+          "resolved": "https://registry.npmmirror.com/@types/sortablejs/-/sortablejs-1.15.8.tgz",
+          "integrity": "sha512-b79830lW+RZfwaztgs1aVPgbasJ8e7AXtZYHTELNXZPsERt4ymJdjV4OccDbHQAvHrCcFpbF78jkm0R6h/pZVg=="
+        },
+        "@types/web-bluetooth": {
+          "version": "0.0.16",
+          "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz",
+          "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ=="
+        },
+        "@vitejs/plugin-vue": {
+          "version": "4.6.2",
+          "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-4.6.2.tgz",
+          "integrity": "sha512-kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw==",
+          "dev": true,
+          "requires": {}
+        },
+        "@vue-macros/common": {
+          "version": "1.8.0",
+          "resolved": "https://registry.npmjs.org/@vue-macros/common/-/common-1.8.0.tgz",
+          "integrity": "sha512-auDJJzE0z3uRe3867e0DsqcseKImktNf5ojCZgUKqiVxb2yTlwlgOVAYCgoep9oITqxkXQymSvFeKhedi8PhaA==",
+          "requires": {
+            "@babel/types": "^7.22.17",
+            "@rollup/pluginutils": "^5.0.4",
+            "@vue/compiler-sfc": "^3.3.4",
+            "ast-kit": "^0.11.2",
+            "local-pkg": "^0.4.3",
+            "magic-string-ast": "^0.3.0"
+          }
+        },
+        "@vue-macros/reactivity-transform": {
+          "version": "0.3.23",
+          "resolved": "https://registry.npmjs.org/@vue-macros/reactivity-transform/-/reactivity-transform-0.3.23.tgz",
+          "integrity": "sha512-SubIg1GsNpQdIDJusrcA2FWBgwSY+4jmL0j6SJ6PU85r3rlS+uDhn6AUkqxeZRAdmJnrbGHXDyWUdygOZmWrSg==",
+          "requires": {
+            "@babel/parser": "^7.22.16",
+            "@vue-macros/common": "1.8.0",
+            "@vue/compiler-core": "^3.3.4",
+            "@vue/shared": "^3.3.4",
+            "magic-string": "^0.30.3",
+            "unplugin": "^1.4.0"
+          }
+        },
+        "@vue/compiler-core": {
+          "version": "3.3.4",
+          "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.4.tgz",
+          "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==",
+          "requires": {
+            "@babel/parser": "^7.21.3",
+            "@vue/shared": "3.3.4",
+            "estree-walker": "^2.0.2",
+            "source-map-js": "^1.0.2"
+          }
+        },
+        "@vue/compiler-dom": {
+          "version": "3.3.4",
+          "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz",
+          "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==",
+          "requires": {
+            "@vue/compiler-core": "3.3.4",
+            "@vue/shared": "3.3.4"
+          }
+        },
+        "@vue/compiler-sfc": {
+          "version": "3.3.4",
+          "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz",
+          "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==",
+          "requires": {
+            "@babel/parser": "^7.20.15",
+            "@vue/compiler-core": "3.3.4",
+            "@vue/compiler-dom": "3.3.4",
+            "@vue/compiler-ssr": "3.3.4",
+            "@vue/reactivity-transform": "3.3.4",
+            "@vue/shared": "3.3.4",
+            "estree-walker": "^2.0.2",
+            "magic-string": "^0.30.0",
+            "postcss": "^8.1.10",
+            "source-map-js": "^1.0.2"
+          }
+        },
+        "@vue/compiler-ssr": {
+          "version": "3.3.4",
+          "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz",
+          "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==",
+          "requires": {
+            "@vue/compiler-dom": "3.3.4",
+            "@vue/shared": "3.3.4"
+          }
+        },
+        "@vue/devtools-api": {
+          "version": "6.5.1",
+          "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz",
+          "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA=="
+        },
+        "@vue/reactivity": {
+          "version": "3.3.4",
+          "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.4.tgz",
+          "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==",
+          "requires": {
+            "@vue/shared": "3.3.4"
+          }
+        },
+        "@vue/reactivity-transform": {
+          "version": "3.3.4",
+          "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz",
+          "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==",
+          "requires": {
+            "@babel/parser": "^7.20.15",
+            "@vue/compiler-core": "3.3.4",
+            "@vue/shared": "3.3.4",
+            "estree-walker": "^2.0.2",
+            "magic-string": "^0.30.0"
+          }
+        },
+        "@vue/runtime-core": {
+          "version": "3.3.4",
+          "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.4.tgz",
+          "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==",
+          "requires": {
+            "@vue/reactivity": "3.3.4",
+            "@vue/shared": "3.3.4"
+          }
+        },
+        "@vue/runtime-dom": {
+          "version": "3.3.4",
+          "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz",
+          "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==",
+          "requires": {
+            "@vue/runtime-core": "3.3.4",
+            "@vue/shared": "3.3.4",
+            "csstype": "^3.1.1"
+          }
+        },
+        "@vue/server-renderer": {
+          "version": "3.3.4",
+          "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.4.tgz",
+          "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==",
+          "requires": {
+            "@vue/compiler-ssr": "3.3.4",
+            "@vue/shared": "3.3.4"
+          }
+        },
+        "@vue/shared": {
+          "version": "3.3.4",
+          "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz",
+          "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ=="
+        },
+        "@vueuse/core": {
+          "version": "9.13.0",
+          "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-9.13.0.tgz",
+          "integrity": "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==",
+          "requires": {
+            "@types/web-bluetooth": "^0.0.16",
+            "@vueuse/metadata": "9.13.0",
+            "@vueuse/shared": "9.13.0",
+            "vue-demi": "*"
+          },
+          "dependencies": {
+            "vue-demi": {
+              "version": "0.14.6",
+              "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz",
+              "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==",
+              "requires": {}
+            }
+          }
+        },
+        "@vueuse/metadata": {
+          "version": "9.13.0",
+          "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.13.0.tgz",
+          "integrity": "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ=="
+        },
+        "@vueuse/shared": {
+          "version": "9.13.0",
+          "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.13.0.tgz",
+          "integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==",
+          "requires": {
+            "vue-demi": "*"
+          },
+          "dependencies": {
+            "vue-demi": {
+              "version": "0.14.6",
+              "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz",
+              "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==",
+              "requires": {}
+            }
+          }
+        },
+        "acorn": {
+          "version": "8.12.0",
+          "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.12.0.tgz",
+          "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw=="
+        },
+        "adler-32": {
+          "version": "1.3.1",
+          "resolved": "https://registry.npmmirror.com/adler-32/-/adler-32-1.3.1.tgz",
+          "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A=="
+        },
+        "ansi-regex": {
+          "version": "5.0.1",
+          "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
+          "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
+        },
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "anymatch": {
+          "version": "3.1.3",
+          "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz",
+          "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+          "requires": {
+            "normalize-path": "^3.0.0",
+            "picomatch": "^2.0.4"
+          }
+        },
+        "ast-kit": {
+          "version": "0.11.2",
+          "resolved": "https://registry.npmjs.org/ast-kit/-/ast-kit-0.11.2.tgz",
+          "integrity": "sha512-Q0DjXK4ApbVoIf9GLyCo252tUH44iTnD/hiJ2TQaJeydYWSpKk0sI34+WMel8S9Wt5pbLgG02oJ+gkgX5DV3sQ==",
+          "requires": {
+            "@babel/parser": "^7.22.14",
+            "@rollup/pluginutils": "^5.0.4",
+            "pathe": "^1.1.1"
+          }
+        },
+        "async-validator": {
+          "version": "4.2.5",
+          "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz",
+          "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg=="
+        },
+        "asynckit": {
+          "version": "0.4.0",
+          "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+          "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+        },
+        "axios": {
+          "version": "1.6.8",
+          "resolved": "https://registry.npmmirror.com/axios/-/axios-1.6.8.tgz",
+          "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==",
+          "requires": {
+            "follow-redirects": "^1.15.6",
+            "form-data": "^4.0.0",
+            "proxy-from-env": "^1.1.0"
+          }
+        },
+        "balanced-match": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
+          "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+          "dev": true
+        },
+        "binary-extensions": {
+          "version": "2.3.0",
+          "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.3.0.tgz",
+          "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="
+        },
+        "brace-expansion": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz",
+          "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+          "dev": true,
+          "requires": {
+            "balanced-match": "^1.0.0"
+          }
+        },
+        "braces": {
+          "version": "3.0.2",
+          "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+          "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+          "requires": {
+            "fill-range": "^7.0.1"
+          }
+        },
+        "camelcase": {
+          "version": "5.3.1",
+          "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
+          "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
+        },
+        "cfb": {
+          "version": "1.2.2",
+          "resolved": "https://registry.npmmirror.com/cfb/-/cfb-1.2.2.tgz",
+          "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==",
+          "requires": {
+            "adler-32": "~1.3.0",
+            "crc-32": "~1.2.0"
+          }
+        },
+        "chart.js": {
+          "version": "4.4.3",
+          "resolved": "https://registry.npmmirror.com/chart.js/-/chart.js-4.4.3.tgz",
+          "integrity": "sha512-qK1gkGSRYcJzqrrzdR6a+I0vQ4/R+SoODXyAjscQ/4mzuNzySaMCd+hyVxitSY1+L2fjPD1Gbn+ibNqRmwQeLw==",
+          "requires": {
+            "@kurkle/color": "^0.3.0"
+          }
+        },
+        "chokidar": {
+          "version": "3.6.0",
+          "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.6.0.tgz",
+          "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+          "requires": {
+            "anymatch": "~3.1.2",
+            "braces": "~3.0.2",
+            "fsevents": "~2.3.2",
+            "glob-parent": "~5.1.2",
+            "is-binary-path": "~2.1.0",
+            "is-glob": "~4.0.1",
+            "normalize-path": "~3.0.0",
+            "readdirp": "~3.6.0"
+          }
+        },
+        "cliui": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmmirror.com/cliui/-/cliui-6.0.0.tgz",
+          "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+          "requires": {
+            "string-width": "^4.2.0",
+            "strip-ansi": "^6.0.0",
+            "wrap-ansi": "^6.2.0"
+          }
+        },
+        "codepage": {
+          "version": "1.15.0",
+          "resolved": "https://registry.npmmirror.com/codepage/-/codepage-1.15.0.tgz",
+          "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA=="
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+        },
+        "combined-stream": {
+          "version": "1.0.8",
+          "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+          "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+          "requires": {
+            "delayed-stream": "~1.0.0"
+          }
+        },
+        "confbox": {
+          "version": "0.1.7",
+          "resolved": "https://registry.npmmirror.com/confbox/-/confbox-0.1.7.tgz",
+          "integrity": "sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==",
+          "dev": true
+        },
+        "crc-32": {
+          "version": "1.2.2",
+          "resolved": "https://registry.npmmirror.com/crc-32/-/crc-32-1.2.2.tgz",
+          "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ=="
+        },
+        "csstype": {
+          "version": "3.1.2",
+          "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
+          "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
+        },
+        "dayjs": {
+          "version": "1.11.10",
+          "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz",
+          "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ=="
+        },
+        "debug": {
+          "version": "4.3.4",
+          "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+          "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+          "dev": true,
+          "requires": {
+            "ms": "2.1.2"
+          }
+        },
+        "decamelize": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz",
+          "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA=="
+        },
+        "delayed-stream": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+          "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
+        },
+        "dijkstrajs": {
+          "version": "1.0.3",
+          "resolved": "https://registry.npmmirror.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz",
+          "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA=="
+        },
+        "dom-zindex": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/dom-zindex/-/dom-zindex-1.0.1.tgz",
+          "integrity": "sha512-M/MERVDZ8hguvjl6MAlLWSLYLS7PzEyXaTb5gEeJ+SF+e9iUC0sdvlzqe91MMDHBoy+nqw7wKcUOrDSyvMCrRg=="
+        },
+        "echarts": {
+          "version": "5.5.1",
+          "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.5.1.tgz",
+          "integrity": "sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA==",
+          "requires": {
+            "tslib": "2.3.0",
+            "zrender": "5.6.0"
+          }
+        },
+        "element-plus": {
+          "version": "2.4.0",
+          "resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.4.0.tgz",
+          "integrity": "sha512-yJEa8LXkGOOgkfkeqMMEdeX/Dc8EH9qPcRuX91dlhSXxgCKKbp9tH3QFTOG99ibZsrN/Em62nh7ddvbc7I1frw==",
+          "requires": {
+            "@ctrl/tinycolor": "^3.4.1",
+            "@element-plus/icons-vue": "^2.0.6",
+            "@floating-ui/dom": "^1.0.1",
+            "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7",
+            "@types/lodash": "^4.14.182",
+            "@types/lodash-es": "^4.17.6",
+            "@vueuse/core": "^9.1.0",
+            "async-validator": "^4.2.5",
+            "dayjs": "^1.11.3",
+            "escape-html": "^1.0.3",
+            "lodash": "^4.17.21",
+            "lodash-es": "^4.17.21",
+            "lodash-unified": "^1.0.2",
+            "memoize-one": "^6.0.0",
+            "normalize-wheel-es": "^1.2.0"
+          }
+        },
+        "emoji-regex": {
+          "version": "8.0.0",
+          "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
+          "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+        },
+        "esbuild": {
+          "version": "0.18.20",
+          "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz",
+          "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==",
+          "dev": true,
+          "requires": {
+            "@esbuild/android-arm": "0.18.20",
+            "@esbuild/android-arm64": "0.18.20",
+            "@esbuild/android-x64": "0.18.20",
+            "@esbuild/darwin-arm64": "0.18.20",
+            "@esbuild/darwin-x64": "0.18.20",
+            "@esbuild/freebsd-arm64": "0.18.20",
+            "@esbuild/freebsd-x64": "0.18.20",
+            "@esbuild/linux-arm": "0.18.20",
+            "@esbuild/linux-arm64": "0.18.20",
+            "@esbuild/linux-ia32": "0.18.20",
+            "@esbuild/linux-loong64": "0.18.20",
+            "@esbuild/linux-mips64el": "0.18.20",
+            "@esbuild/linux-ppc64": "0.18.20",
+            "@esbuild/linux-riscv64": "0.18.20",
+            "@esbuild/linux-s390x": "0.18.20",
+            "@esbuild/linux-x64": "0.18.20",
+            "@esbuild/netbsd-x64": "0.18.20",
+            "@esbuild/openbsd-x64": "0.18.20",
+            "@esbuild/sunos-x64": "0.18.20",
+            "@esbuild/win32-arm64": "0.18.20",
+            "@esbuild/win32-ia32": "0.18.20",
+            "@esbuild/win32-x64": "0.18.20"
+          }
+        },
+        "escape-html": {
+          "version": "1.0.3",
+          "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+          "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
+        },
+        "escape-string-regexp": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
+          "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
+          "dev": true
+        },
+        "estree-walker": {
+          "version": "2.0.2",
+          "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+          "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+        },
+        "eventemitter3": {
+          "version": "4.0.7",
+          "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz",
+          "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
+          "dev": true
+        },
+        "fast-glob": {
+          "version": "3.3.2",
+          "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.2.tgz",
+          "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+          "dev": true,
+          "requires": {
+            "@nodelib/fs.stat": "^2.0.2",
+            "@nodelib/fs.walk": "^1.2.3",
+            "glob-parent": "^5.1.2",
+            "merge2": "^1.3.0",
+            "micromatch": "^4.0.4"
+          }
+        },
+        "fastq": {
+          "version": "1.17.1",
+          "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.17.1.tgz",
+          "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
+          "dev": true,
+          "requires": {
+            "reusify": "^1.0.4"
+          }
+        },
+        "fill-range": {
+          "version": "7.0.1",
+          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+          "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+          "requires": {
+            "to-regex-range": "^5.0.1"
+          }
+        },
+        "find-up": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz",
+          "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+          "requires": {
+            "locate-path": "^5.0.0",
+            "path-exists": "^4.0.0"
+          }
+        },
+        "follow-redirects": {
+          "version": "1.15.6",
+          "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.6.tgz",
+          "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA=="
+        },
+        "form-data": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+          "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+          "requires": {
+            "asynckit": "^0.4.0",
+            "combined-stream": "^1.0.8",
+            "mime-types": "^2.1.12"
+          }
+        },
+        "frac": {
+          "version": "1.1.2",
+          "resolved": "https://registry.npmmirror.com/frac/-/frac-1.1.2.tgz",
+          "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA=="
+        },
+        "get-caller-file": {
+          "version": "2.0.5",
+          "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz",
+          "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
+        },
+        "glob-parent": {
+          "version": "5.1.2",
+          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+          "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+          "requires": {
+            "is-glob": "^4.0.1"
+          }
+        },
+        "http-proxy": {
+          "version": "1.18.1",
+          "resolved": "https://registry.npmmirror.com/http-proxy/-/http-proxy-1.18.1.tgz",
+          "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
+          "dev": true,
+          "requires": {
+            "eventemitter3": "^4.0.0",
+            "follow-redirects": "^1.0.0",
+            "requires-port": "^1.0.0"
+          }
+        },
+        "http-proxy-middleware": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-3.0.0.tgz",
+          "integrity": "sha512-36AV1fIaI2cWRzHo+rbcxhe3M3jUDCNzc4D5zRl57sEWRAxdXYtw7FSQKYY6PDKssiAKjLYypbssHk+xs/kMXw==",
+          "dev": true,
+          "requires": {
+            "@types/http-proxy": "^1.17.10",
+            "debug": "^4.3.4",
+            "http-proxy": "^1.18.1",
+            "is-glob": "^4.0.1",
+            "is-plain-obj": "^3.0.0",
+            "micromatch": "^4.0.5"
+          }
+        },
+        "is-binary-path": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz",
+          "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+          "requires": {
+            "binary-extensions": "^2.0.0"
+          }
+        },
+        "is-extglob": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+          "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="
+        },
+        "is-fullwidth-code-point": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+          "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
+        },
+        "is-glob": {
+          "version": "4.0.3",
+          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+          "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+          "requires": {
+            "is-extglob": "^2.1.1"
+          }
+        },
+        "is-number": {
+          "version": "7.0.0",
+          "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+          "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
+        },
+        "is-plain-obj": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz",
+          "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==",
+          "dev": true
+        },
+        "js-tokens": {
+          "version": "9.0.0",
+          "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-9.0.0.tgz",
+          "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==",
+          "dev": true
+        },
+        "local-pkg": {
+          "version": "0.4.3",
+          "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz",
+          "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g=="
+        },
+        "locate-path": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz",
+          "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+          "requires": {
+            "p-locate": "^4.1.0"
+          }
+        },
+        "lodash": {
+          "version": "4.17.21",
+          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+          "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+        },
+        "lodash-es": {
+          "version": "4.17.21",
+          "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
+          "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
+        },
+        "lodash-unified": {
+          "version": "1.0.3",
+          "resolved": "https://registry.npmjs.org/lodash-unified/-/lodash-unified-1.0.3.tgz",
+          "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==",
+          "requires": {}
+        },
+        "magic-string": {
+          "version": "0.30.10",
+          "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.10.tgz",
+          "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==",
+          "requires": {
+            "@jridgewell/sourcemap-codec": "^1.4.15"
+          }
+        },
+        "magic-string-ast": {
+          "version": "0.3.0",
+          "resolved": "https://registry.npmjs.org/magic-string-ast/-/magic-string-ast-0.3.0.tgz",
+          "integrity": "sha512-0shqecEPgdFpnI3AP90epXyxZy9g6CRZ+SZ7BcqFwYmtFEnZ1jpevcV5HoyVnlDS9gCnc1UIg3Rsvp3Ci7r8OA==",
+          "requires": {
+            "magic-string": "^0.30.2"
+          }
+        },
+        "memoize-one": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz",
+          "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw=="
+        },
+        "merge2": {
+          "version": "1.4.1",
+          "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz",
+          "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+          "dev": true
+        },
+        "micromatch": {
+          "version": "4.0.5",
+          "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz",
+          "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+          "dev": true,
+          "requires": {
+            "braces": "^3.0.2",
+            "picomatch": "^2.3.1"
+          }
+        },
+        "mime-db": {
+          "version": "1.52.0",
+          "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+          "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
+        },
+        "mime-types": {
+          "version": "2.1.35",
+          "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+          "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+          "requires": {
+            "mime-db": "1.52.0"
+          }
+        },
+        "minimatch": {
+          "version": "9.0.4",
+          "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.4.tgz",
+          "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
+          "dev": true,
+          "requires": {
+            "brace-expansion": "^2.0.1"
+          }
+        },
+        "mlly": {
+          "version": "1.7.1",
+          "resolved": "https://registry.npmmirror.com/mlly/-/mlly-1.7.1.tgz",
+          "integrity": "sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==",
+          "dev": true,
+          "requires": {
+            "acorn": "^8.11.3",
+            "pathe": "^1.1.2",
+            "pkg-types": "^1.1.1",
+            "ufo": "^1.5.3"
+          }
+        },
+        "moment": {
+          "version": "2.30.1",
+          "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz",
+          "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how=="
+        },
+        "ms": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+          "dev": true
+        },
+        "nanoid": {
+          "version": "3.3.6",
+          "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
+          "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA=="
+        },
+        "normalize-path": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz",
+          "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
+        },
+        "normalize-wheel-es": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz",
+          "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw=="
+        },
+        "p-limit": {
+          "version": "2.3.0",
+          "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz",
+          "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+          "requires": {
+            "p-try": "^2.0.0"
+          }
+        },
+        "p-locate": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz",
+          "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+          "requires": {
+            "p-limit": "^2.2.0"
+          }
+        },
+        "p-try": {
+          "version": "2.2.0",
+          "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz",
+          "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
+        },
+        "path-exists": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz",
+          "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
+        },
+        "pathe": {
+          "version": "1.1.2",
+          "resolved": "https://registry.npmmirror.com/pathe/-/pathe-1.1.2.tgz",
+          "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ=="
+        },
+        "picocolors": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+          "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+        },
+        "picomatch": {
+          "version": "2.3.1",
+          "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+          "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
+        },
+        "pinia": {
+          "version": "2.1.7",
+          "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.7.tgz",
+          "integrity": "sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==",
+          "requires": {
+            "@vue/devtools-api": "^6.5.0",
+            "vue-demi": ">=0.14.5"
+          },
+          "dependencies": {
+            "vue-demi": {
+              "version": "0.14.6",
+              "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz",
+              "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==",
+              "requires": {}
+            }
+          }
+        },
+        "pinia-plugin-persistedstate": {
+          "version": "3.2.0",
+          "resolved": "https://registry.npmmirror.com/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-3.2.0.tgz",
+          "integrity": "sha512-tZbNGf2vjAQcIm7alK40sE51Qu/m9oWr+rEgNm/2AWr1huFxj72CjvpQcIQzMknDBJEkQznCLAGtJTIcLKrKdw==",
+          "requires": {}
+        },
+        "pkg-types": {
+          "version": "1.1.1",
+          "resolved": "https://registry.npmmirror.com/pkg-types/-/pkg-types-1.1.1.tgz",
+          "integrity": "sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ==",
+          "dev": true,
+          "requires": {
+            "confbox": "^0.1.7",
+            "mlly": "^1.7.0",
+            "pathe": "^1.1.2"
+          }
+        },
+        "pngjs": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmmirror.com/pngjs/-/pngjs-5.0.0.tgz",
+          "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw=="
+        },
+        "postcss": {
+          "version": "8.4.31",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
+          "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
+          "requires": {
+            "nanoid": "^3.3.6",
+            "picocolors": "^1.0.0",
+            "source-map-js": "^1.0.2"
+          }
+        },
+        "prettier": {
+          "version": "2.8.8",
+          "resolved": "https://registry.npmmirror.com/prettier/-/prettier-2.8.8.tgz",
+          "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
+          "optional": true
+        },
+        "proxy-from-env": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+          "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
+        },
+        "qrcode": {
+          "version": "1.5.4",
+          "resolved": "https://registry.npmmirror.com/qrcode/-/qrcode-1.5.4.tgz",
+          "integrity": "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==",
+          "requires": {
+            "dijkstrajs": "^1.0.1",
+            "pngjs": "^5.0.0",
+            "yargs": "^15.3.1"
+          }
+        },
+        "queue-microtask": {
+          "version": "1.2.3",
+          "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz",
+          "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+          "dev": true
+        },
+        "readdirp": {
+          "version": "3.6.0",
+          "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz",
+          "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+          "requires": {
+            "picomatch": "^2.2.1"
+          }
+        },
+        "require-directory": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz",
+          "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="
+        },
+        "require-main-filename": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmmirror.com/require-main-filename/-/require-main-filename-2.0.0.tgz",
+          "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
+        },
+        "requires-port": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz",
+          "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
+          "dev": true
+        },
+        "resize-detector": {
+          "version": "0.3.0",
+          "resolved": "https://registry.npmmirror.com/resize-detector/-/resize-detector-0.3.0.tgz",
+          "integrity": "sha512-R/tCuvuOHQ8o2boRP6vgx8hXCCy87H1eY9V5imBYeVNyNVpuL9ciReSccLj2gDcax9+2weXy3bc8Vv+NRXeEvQ=="
+        },
+        "reusify": {
+          "version": "1.0.4",
+          "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz",
+          "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+          "dev": true
+        },
+        "rollup": {
+          "version": "3.29.4",
+          "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz",
+          "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==",
+          "devOptional": true,
+          "requires": {
+            "fsevents": "~2.3.2"
+          }
+        },
+        "run-parallel": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz",
+          "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+          "dev": true,
+          "requires": {
+            "queue-microtask": "^1.2.2"
+          }
+        },
+        "scule": {
+          "version": "1.3.0",
+          "resolved": "https://registry.npmmirror.com/scule/-/scule-1.3.0.tgz",
+          "integrity": "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==",
+          "dev": true
+        },
+        "set-blocking": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz",
+          "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
+        },
+        "sortablejs": {
+          "version": "1.15.1",
+          "resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.15.1.tgz",
+          "integrity": "sha512-P5Cjvb0UG1ZVNiDPj/n4V+DinttXG6K8n7vM/HQf0C25K3YKQTQY6fsr/sEGsJGpQ9exmPxluHxKBc0mLKU1lQ=="
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+        },
+        "source-map-js": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+          "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw=="
+        },
+        "ssf": {
+          "version": "0.11.2",
+          "resolved": "https://registry.npmmirror.com/ssf/-/ssf-0.11.2.tgz",
+          "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==",
+          "requires": {
+            "frac": "~1.1.2"
+          }
+        },
+        "string-width": {
+          "version": "4.2.3",
+          "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+          "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+          "requires": {
+            "emoji-regex": "^8.0.0",
+            "is-fullwidth-code-point": "^3.0.0",
+            "strip-ansi": "^6.0.1"
+          }
+        },
+        "strip-ansi": {
+          "version": "6.0.1",
+          "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
+          "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+          "requires": {
+            "ansi-regex": "^5.0.1"
+          }
+        },
+        "strip-literal": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmmirror.com/strip-literal/-/strip-literal-2.1.0.tgz",
+          "integrity": "sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==",
+          "dev": true,
+          "requires": {
+            "js-tokens": "^9.0.0"
+          }
+        },
+        "sweetalert2": {
+          "version": "11.10.7",
+          "resolved": "https://registry.npmmirror.com/sweetalert2/-/sweetalert2-11.10.7.tgz",
+          "integrity": "sha512-5Jlzrmaitay6KzU+2+LhYu9q+L4v/dZ8oZyEDH14ep0C/QilCnFLHmqAyD/Lhq/lm5DiwsOs6Tr58iv8k3wyGg=="
+        },
+        "to-fast-properties": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+          "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog=="
+        },
+        "to-regex-range": {
+          "version": "5.0.1",
+          "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+          "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+          "requires": {
+            "is-number": "^7.0.0"
+          }
+        },
+        "tslib": {
+          "version": "2.3.0",
+          "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz",
+          "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
+        },
+        "ufo": {
+          "version": "1.5.3",
+          "resolved": "https://registry.npmmirror.com/ufo/-/ufo-1.5.3.tgz",
+          "integrity": "sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==",
+          "dev": true
+        },
+        "undici-types": {
+          "version": "5.26.5",
+          "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-5.26.5.tgz",
+          "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+          "dev": true
+        },
+        "unimport": {
+          "version": "3.7.2",
+          "resolved": "https://registry.npmmirror.com/unimport/-/unimport-3.7.2.tgz",
+          "integrity": "sha512-91mxcZTadgXyj3lFWmrGT8GyoRHWuE5fqPOjg5RVtF6vj+OfM5G6WCzXjuYtSgELE5ggB34RY4oiCSEP8I3AHw==",
+          "dev": true,
+          "requires": {
+            "@rollup/pluginutils": "^5.1.0",
+            "acorn": "^8.11.3",
+            "escape-string-regexp": "^5.0.0",
+            "estree-walker": "^3.0.3",
+            "fast-glob": "^3.3.2",
+            "local-pkg": "^0.5.0",
+            "magic-string": "^0.30.10",
+            "mlly": "^1.7.0",
+            "pathe": "^1.1.2",
+            "pkg-types": "^1.1.1",
+            "scule": "^1.3.0",
+            "strip-literal": "^2.1.0",
+            "unplugin": "^1.10.1"
+          },
+          "dependencies": {
+            "estree-walker": {
+              "version": "3.0.3",
+              "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-3.0.3.tgz",
+              "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
+              "dev": true,
+              "requires": {
+                "@types/estree": "^1.0.0"
+              }
+            },
+            "local-pkg": {
+              "version": "0.5.0",
+              "resolved": "https://registry.npmmirror.com/local-pkg/-/local-pkg-0.5.0.tgz",
+              "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==",
+              "dev": true,
+              "requires": {
+                "mlly": "^1.4.2",
+                "pkg-types": "^1.0.3"
+              }
+            }
+          }
+        },
+        "unplugin": {
+          "version": "1.10.1",
+          "resolved": "https://registry.npmmirror.com/unplugin/-/unplugin-1.10.1.tgz",
+          "integrity": "sha512-d6Mhq8RJeGA8UfKCu54Um4lFA0eSaRa3XxdAJg8tIdxbu1ubW0hBCZUL7yI2uGyYCRndvbK8FLHzqy2XKfeMsg==",
+          "requires": {
+            "acorn": "^8.11.3",
+            "chokidar": "^3.6.0",
+            "webpack-sources": "^3.2.3",
+            "webpack-virtual-modules": "^0.6.1"
+          }
+        },
+        "unplugin-auto-import": {
+          "version": "0.17.6",
+          "resolved": "https://registry.npmmirror.com/unplugin-auto-import/-/unplugin-auto-import-0.17.6.tgz",
+          "integrity": "sha512-dmX0Pex5DzMzVuALkexboOZvh51fL/BD6aoPO7qHoTYGlQp0GRKsREv2KMF1lzYI9SXKQiRxAjwzbQnrFFNydQ==",
+          "dev": true,
+          "requires": {
+            "@antfu/utils": "^0.7.8",
+            "@rollup/pluginutils": "^5.1.0",
+            "fast-glob": "^3.3.2",
+            "local-pkg": "^0.5.0",
+            "magic-string": "^0.30.10",
+            "minimatch": "^9.0.4",
+            "unimport": "^3.7.1",
+            "unplugin": "^1.10.1"
+          },
+          "dependencies": {
+            "local-pkg": {
+              "version": "0.5.0",
+              "resolved": "https://registry.npmmirror.com/local-pkg/-/local-pkg-0.5.0.tgz",
+              "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==",
+              "dev": true,
+              "requires": {
+                "mlly": "^1.4.2",
+                "pkg-types": "^1.0.3"
+              }
+            }
+          }
+        },
+        "vite": {
+          "version": "4.4.11",
+          "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.11.tgz",
+          "integrity": "sha512-ksNZJlkcU9b0lBwAGZGGaZHCMqHsc8OpgtoYhsQ4/I2v5cnpmmmqe5pM4nv/4Hn6G/2GhTdj0DhZh2e+Er1q5A==",
+          "dev": true,
+          "requires": {
+            "esbuild": "^0.18.10",
+            "fsevents": "~2.3.2",
+            "postcss": "^8.4.27",
+            "rollup": "^3.27.1"
+          }
+        },
+        "vue": {
+          "version": "3.3.4",
+          "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.4.tgz",
+          "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==",
+          "requires": {
+            "@vue/compiler-dom": "3.3.4",
+            "@vue/compiler-sfc": "3.3.4",
+            "@vue/runtime-dom": "3.3.4",
+            "@vue/server-renderer": "3.3.4",
+            "@vue/shared": "3.3.4"
+          }
+        },
+        "vue-draggable-plus": {
+          "version": "0.5.0",
+          "resolved": "https://registry.npmmirror.com/vue-draggable-plus/-/vue-draggable-plus-0.5.0.tgz",
+          "integrity": "sha512-A5TT5+M5JceROSjPO9aDZTsrSN1TetEs419czPlboomarSiGIBIxTp2WD7XH53EHMrbO7Qo+leRiHWV/rMlyjA==",
+          "requires": {
+            "@types/sortablejs": "^1.15.8"
+          }
+        },
+        "vue-echarts": {
+          "version": "6.7.3",
+          "resolved": "https://registry.npmmirror.com/vue-echarts/-/vue-echarts-6.7.3.tgz",
+          "integrity": "sha512-vXLKpALFjbPphW9IfQPOVfb1KjGZ/f8qa/FZHi9lZIWzAnQC1DgnmEK3pJgEkyo6EP7UnX6Bv/V3Ke7p+qCNXA==",
+          "requires": {
+            "resize-detector": "^0.3.0",
+            "vue-demi": "^0.13.11"
+          },
+          "dependencies": {
+            "vue-demi": {
+              "version": "0.13.11",
+              "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz",
+              "integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==",
+              "requires": {}
+            }
+          }
+        },
+        "vue-i18n": {
+          "version": "9.13.1",
+          "resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.13.1.tgz",
+          "integrity": "sha512-mh0GIxx0wPtPlcB1q4k277y0iKgo25xmDPWioVVYanjPufDBpvu5ySTjP5wOrSvlYQ2m1xI+CFhGdauv/61uQg==",
+          "requires": {
+            "@intlify/core-base": "9.13.1",
+            "@intlify/shared": "9.13.1",
+            "@vue/devtools-api": "^6.5.0"
+          }
+        },
+        "vue-print-nb": {
+          "version": "1.7.5",
+          "resolved": "https://registry.npmmirror.com/vue-print-nb/-/vue-print-nb-1.7.5.tgz",
+          "integrity": "sha512-iNbNyUVRWz0Ha1UTiCKxMPtHLUDGgNI8e8xmD3xqm9RlXIUeX9bT7DgNAfY8vPzqyFRHqGjxLI1rycKH366ziQ==",
+          "requires": {
+            "vue": "^2.6.11"
+          },
+          "dependencies": {
+            "@vue/compiler-sfc": {
+              "version": "2.7.16",
+              "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz",
+              "integrity": "sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==",
+              "requires": {
+                "@babel/parser": "^7.23.5",
+                "postcss": "^8.4.14",
+                "prettier": "^1.18.2 || ^2.0.0",
+                "source-map": "^0.6.1"
+              }
+            },
+            "vue": {
+              "version": "2.7.16",
+              "resolved": "https://registry.npmmirror.com/vue/-/vue-2.7.16.tgz",
+              "integrity": "sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==",
+              "requires": {
+                "@vue/compiler-sfc": "2.7.16",
+                "csstype": "^3.1.0"
+              }
+            }
+          }
+        },
+        "vue-router": {
+          "version": "4.2.5",
+          "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz",
+          "integrity": "sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==",
+          "requires": {
+            "@vue/devtools-api": "^6.5.0"
+          }
+        },
+        "vue3-print-nb": {
+          "version": "0.1.4",
+          "resolved": "https://registry.npmmirror.com/vue3-print-nb/-/vue3-print-nb-0.1.4.tgz",
+          "integrity": "sha512-LExI7viEzplR6ZKQ2b+V4U0cwGYbVD4fut/XHvk3UPGlT5CcvIGs6VlwGp107aKgk6P8Pgx4rco3Rehv2lti3A==",
+          "requires": {
+            "vue": "^3.0.5"
+          }
+        },
+        "vxe-table": {
+          "version": "4.5.15",
+          "resolved": "https://registry.npmjs.org/vxe-table/-/vxe-table-4.5.15.tgz",
+          "integrity": "sha512-1QuM27wjTZConQX55u2YbyIA69u9/ny83x1cqyrmkoK622GKrY324wuOO/nsjfnbxXV5C+IDzL/MfdrvKQbznQ==",
+          "requires": {
+            "dom-zindex": "^1.0.1",
+            "xe-utils": "^3.5.14"
+          }
+        },
+        "webpack-sources": {
+          "version": "3.2.3",
+          "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
+          "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w=="
+        },
+        "webpack-virtual-modules": {
+          "version": "0.6.2",
+          "resolved": "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz",
+          "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ=="
+        },
+        "which-module": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmmirror.com/which-module/-/which-module-2.0.1.tgz",
+          "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ=="
+        },
+        "wmf": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmmirror.com/wmf/-/wmf-1.0.2.tgz",
+          "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw=="
+        },
+        "word": {
+          "version": "0.3.0",
+          "resolved": "https://registry.npmmirror.com/word/-/word-0.3.0.tgz",
+          "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA=="
+        },
+        "wrap-ansi": {
+          "version": "6.2.0",
+          "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+          "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+          "requires": {
+            "ansi-styles": "^4.0.0",
+            "string-width": "^4.1.0",
+            "strip-ansi": "^6.0.0"
+          }
+        },
+        "xe-utils": {
+          "version": "3.5.14",
+          "resolved": "https://registry.npmjs.org/xe-utils/-/xe-utils-3.5.14.tgz",
+          "integrity": "sha512-Xq6mS8dWwHBQsQUEBXcZYSaBV0KnNLoVWd0vRRDI3nKpbNxfs/LSCK0W21g1edLFnXYfKqg7hh5dakr3RtYY0A=="
+        },
+        "xlsx": {
+          "version": "0.18.5",
+          "resolved": "https://registry.npmmirror.com/xlsx/-/xlsx-0.18.5.tgz",
+          "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==",
+          "requires": {
+            "adler-32": "~1.3.0",
+            "cfb": "~1.2.1",
+            "codepage": "~1.15.0",
+            "crc-32": "~1.2.1",
+            "ssf": "~0.11.2",
+            "wmf": "~1.0.1",
+            "word": "~0.3.0"
+          }
+        },
+        "y18n": {
+          "version": "4.0.3",
+          "resolved": "https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz",
+          "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
+        },
+        "yargs": {
+          "version": "15.4.1",
+          "resolved": "https://registry.npmmirror.com/yargs/-/yargs-15.4.1.tgz",
+          "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
+          "requires": {
+            "cliui": "^6.0.0",
+            "decamelize": "^1.2.0",
+            "find-up": "^4.1.0",
+            "get-caller-file": "^2.0.1",
+            "require-directory": "^2.1.1",
+            "require-main-filename": "^2.0.0",
+            "set-blocking": "^2.0.0",
+            "string-width": "^4.2.0",
+            "which-module": "^2.0.0",
+            "y18n": "^4.0.0",
+            "yargs-parser": "^18.1.2"
+          }
+        },
+        "yargs-parser": {
+          "version": "18.1.3",
+          "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-18.1.3.tgz",
+          "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+          "requires": {
+            "camelcase": "^5.0.0",
+            "decamelize": "^1.2.0"
+          }
+        },
+        "zrender": {
+          "version": "5.6.0",
+          "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.6.0.tgz",
+          "integrity": "sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg==",
+          "requires": {
+            "tslib": "2.3.0"
+          }
+        }
+      }
+    },
     "p-limit": {
       "version": "2.3.0",
       "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz",
diff --git a/UI-Project/package.json b/UI-Project/package.json
index feeda10..c08443f 100644
--- a/UI-Project/package.json
+++ b/UI-Project/package.json
@@ -15,6 +15,7 @@
     "echarts": "^5.5.1",
     "element-plus": "^2.4.0",
     "moment": "^2.30.1",
+    "northglass-mes": "file:",
     "pinia": "^2.1.6",
     "pinia-plugin-persistedstate": "^3.2.0",
     "qrcode": "^1.5.4",
diff --git a/UI-Project/src/views/Slicecage/slicecage.vue b/UI-Project/src/views/Slicecage/slicecage.vue
index 0846f5d..c741d63 100644
--- a/UI-Project/src/views/Slicecage/slicecage.vue
+++ b/UI-Project/src/views/Slicecage/slicecage.vue
@@ -79,6 +79,7 @@
 const selectedRow = ref(null); // 瀛樺偍閫変腑鐨勮鏁版嵁  
 const temperingtotal = ref(0);
 const glasstotal = ref(0);
+const temperingengineerId=ref('');
     // 褰撳墠椤电爜鍜屾瘡椤垫樉绀虹殑鏉℃暟
     const currentPage = ref(1);
     const itemsPerPage = computed(() => {
@@ -386,6 +387,58 @@
     console.error('鍙戠敓閿欒:', error);  
   }  
 }; 
+ // 鎸囧畾宸ョ▼
+ const brokek = async(row) => {  
+  try {
+    const confirmResult = await ElMessageBox.confirm(  
+      t('searchOrder.specifytemperinga'), 
+      t('searchOrder.prompt'),  
+      {  
+        confirmButtonText: t('searchOrder.yes'), 
+        cancelButtonText: t('searchOrder.cancel'),
+        type: 'warning',  
+      } 
+    ); 
+    if (confirmResult === 'confirm') {  
+      const response = await request.post("/cacheVerticalGlass/bigStorageCageDetails/appointEngineerId",{
+        engineerId: row.engineer_id
+    });
+    if (response.code === 200) {
+      ElMessage.success(response.message);
+      } else {  
+      ElMessage.error(response.message);
+      }  
+    }  
+  } catch (error) {  
+    console.error('鍙戠敓閿欒:', error);  
+  }  
+}; 
+// 鎸囧畾宸ョ▼
+const broked = async() => {  
+  try {
+    const confirmResult = await ElMessageBox.confirm(  
+      t('searchOrder.specifytemperinga'), 
+      t('searchOrder.prompt'),  
+      {  
+        confirmButtonText: t('searchOrder.yes'), 
+        cancelButtonText: t('searchOrder.cancel'),
+        type: 'warning',  
+      } 
+    ); 
+    if (confirmResult === 'confirm') {  
+      const response = await request.post("/cacheVerticalGlass/bigStorageCageDetails/appointEngineerId",{
+        engineerId: ""
+    });
+    if (response.code === 200) {
+      ElMessage.success(response.message);
+      } else {  
+      ElMessage.error(response.message);
+      }  
+    }  
+  } catch (error) {  
+    console.error('鍙戠敓閿欒:', error);  
+  }  
+}; 
  // 鎸囧畾娴佺▼鍗�
  const brokes = async(row) => {  
   try {
@@ -573,7 +626,7 @@
       temperingtotal.value = response.data.length
       let totalCount = 0;  
       response.data.forEach(item => { 
-        totalCount += item.count || 0;
+        totalCount += item.count2 || 0;
       });
       glasstotal.value = totalCount;
     } else {
@@ -642,6 +695,10 @@
 const socketUrl = `ws://${WebSocketHost}:${host}/api/cacheVerticalGlass/api/talk/slicecage`;
 // 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
 const handleMessage = (data) => {
+  //褰撳墠鎸囧畾宸ョ▼
+  if(data.bigStorageCageDetailsOutTask!=null){
+    temperingengineerId.value=data.temperingengineerId[0];
+  }
   // 鏇存柊 tableData 鐨勬暟鎹�
   if(data.bigStorageCageDetailsOutTask!=null){
     tableDatac.value = data.bigStorageCageDetailsOutTask[0]
@@ -1465,6 +1522,18 @@
               </el-form-item>
               </div>
           </el-col>
+          <el-col :span="4">
+              <div id="dt" style="font-size: 15px;">
+              <el-form-item :label="$t('褰撳墠鎸囧畾宸ョ▼')"  style="width: 14vw">
+                {{ temperingengineerId }}
+              </el-form-item>
+              </div>
+          </el-col>
+          <el-col :span="4">
+              <div id="dt" style="font-size: 15px;">
+                <el-button size="mini" type="text" plain @click="broked()">{{ $t('鍙栨秷鎸囧畾') }}</el-button>
+              </div>
+          </el-col>
         </el-row>
       </el-form>
     </div>
@@ -1478,7 +1547,7 @@
           <el-table-column fixed="right" :label="$t('searchOrder.operate')" align="center" width="250">
             <template #default="scope">
               <el-button size="mini" type="text" plain @click="brokee(scope.row)">{{ $t('searchOrder.specifytempering') }}</el-button>
-              <el-button size="mini" type="text" plain @click="brokee(scope.row)">{{ $t('searchOrder.specifyengineerid') }}</el-button>
+              <el-button size="mini" type="text" plain @click="brokek(scope.row)">{{ $t('searchOrder.specifyengineerid') }}</el-button>
             </template>
             
         </el-table-column>
diff --git a/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue b/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
index c2c5ddc..e469c90 100644
--- a/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
+++ b/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
@@ -512,25 +512,34 @@
         </el-dialog>
         <el-dialog v-model="dialogFormVisibleaDownGlasss" top="2vh" width="97%" :title="$t('浜哄伐涓嬬墖淇℃伅')">
           <div style="display:flex;justify-content: space-around;">
-            <el-card style="display: flex; justify-content: center; align-items: center; width:800px; height: 800px;">
+            <el-card style="display: flex; justify-content: center; align-items: center; width:800px; height: 800px;position: relative;">
               <div
-                :style="{ width: takeGlass.width + 'px', height: takeGlass.height + 'px', backgroundColor: '#e1f3d8', transform: 'scale(' + 800 / (takeGlass.width > takeGlass.height ? takeGlass.width : takeGlass.height) + ')' }">
-                <div style="font-size: 50px; text-align: center;">
+                :style="{  width: takeGlass.width + 'px', height: takeGlass.height + 'px', backgroundColor: '#e1f3d8', transform: 'scale(' + 800 / (takeGlass.width > takeGlass.height ? takeGlass.width : takeGlass.height) + ')' }">
+                
+              </div>
+              <div style="font-size: 50px; text-align: center;position: absolute;top:0px;left:200px;">
+                  <div>浜哄伐涓嬬墖褰撳墠鐜荤拑淇℃伅</div>
                   <div>{{ takeGlass.flowCardId }}</div>
+                  <div>{{ takeGlass.layer }}</div>
+                  <div>{{ takeGlass.glassId }}</div>
                   <div>{{ takeGlass.width }}</div>
                   <div>{{ takeGlass.height }}</div>
                 </div>
-              </div>
             </el-card>
-            <el-card style="display: flex; justify-content: center; align-items: center; width: 800px; height: 800px;">
+            <el-card style="display: flex; justify-content: center; align-items: center; width: 800px; height: 800px;position: relative;">
               <div
                 :style="{ width: scanGlass.width + 'px', height: scanGlass.height + 'px', backgroundColor: '#e1f3d8', transform: 'scale(' + 800 / (scanGlass.width > scanGlass.height ? scanGlass.width : scanGlass.height) + ')' }">
-                <div style="font-size: 50px; text-align: center;">
+                
+              </div>
+              <div style="font-size: 50px; text-align: center;position: absolute;top:0px;left:200px;">
+                  <div>鎵爜鏋綋鍓嶇幓鐠冧俊鎭�</div>
                   <div>{{ scanGlass.flowCardId }}</div>
+                  <div>{{ scanGlass.layer }}</div>
+                  <div>{{ scanGlass.glassId }}</div>
                   <div>{{ scanGlass.width }}</div>
                   <div>{{ scanGlass.height }}</div>
+
                 </div>
-              </div>
             </el-card>
           </div>
         </el-dialog>
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/AsyncTaskExecutorConfig.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/AsyncTaskExecutorConfig.java
deleted file mode 100644
index c36aa7c..0000000
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/AsyncTaskExecutorConfig.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.mes.common.config;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.core.task.TaskExecutor;
-import org.springframework.scheduling.annotation.EnableAsync;
-import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
-
-import java.util.concurrent.ThreadPoolExecutor;
-
-/**
- * <p> @Title AsyncTaskExecutorConfig
- * <p> @Description 寮傛绾跨▼姹犻厤缃�
- *
- * @author ACGkaka
- * @date 2023/4/24 19:48
- */
-@EnableAsync
-@Configuration
-public class AsyncTaskExecutorConfig {
-
-    /**
-     * 鏍稿績绾跨▼鏁帮紙绾跨▼姹犵淮鎶ょ嚎绋嬬殑鏈�灏忔暟閲忥級
-     */
-    private int corePoolSize = 10;
-    /**
-     * 鏈�澶х嚎绋嬫暟锛堢嚎绋嬫睜缁存姢绾跨▼鐨勬渶澶ф暟閲忥級
-     */
-    private int maxPoolSize = 200;
-    /**
-     * 闃熷垪鏈�澶ч暱搴�
-     */
-    private int queueCapacity = 10;
-
-    @Bean
-    public TaskExecutor taskExecutor() {
-        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
-        executor.setCorePoolSize(corePoolSize);
-        executor.setMaxPoolSize(maxPoolSize);
-        executor.setQueueCapacity(queueCapacity);
-        executor.setThreadNamePrefix("MyExecutor-");
-        // for passing in request scope context 杞崲璇锋眰鑼冨洿鐨勪笂涓嬫枃
-//        executor.setTaskDecorator(new ContextCopyingDecorator());
-        // rejection-policy锛氬綋pool宸茬粡杈惧埌max size鐨勬椂鍊欙紝濡備綍澶勭悊鏂颁换鍔�
-        // CALLER_RUNS锛氫笉鍦ㄦ柊绾跨▼涓墽琛屼换鍔★紝鑰屾槸鏈夎皟鐢ㄨ�呮墍鍦ㄧ殑绾跨▼鏉ユ墽琛�
-        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
-        executor.setWaitForTasksToCompleteOnShutdown(true);
-        executor.initialize();
-        return executor;
-    }
-}
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/OptimizeGlassinfo.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/OptimizeGlassinfo.java
index d7d5958..0266265 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/OptimizeGlassinfo.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/OptimizeGlassinfo.java
@@ -106,7 +106,7 @@
     /**
      * 鏄惁鍚堝苟
      */
-    private Integer merge;
+    private Integer combine;
     /**
      * 鏃嬭浆瑙掑害
      */
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java
index b372378..7269cac 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java
@@ -40,7 +40,7 @@
         List<OptimizeGlassinfo> optimizeGlassinfos = null;
         if (engineeringId != null) {
             optimizeGlassinfos = optimizeProjectMapper.selectJoinList(OptimizeGlassinfo.class, new MPJQueryWrapper<OptimizeProject>()
-                    .select("b.process_id,t.glass_type,b.o_width,b.o_height,t.glass_thickness,b.order_sort,b.p_width,b.p_height,b.layer, b.total_layer, b.stock_id,b.heat_layout_id,b.heat_layout_sort,c.x_axis,c.y_axis,b.project_no,b.glass_id,c.rotate_angle,d.merge")
+                    .select("b.process_id,t.glass_type,b.o_width,b.o_height,t.glass_thickness,b.order_sort,b.p_width,b.p_height,b.layer, b.total_layer, b.stock_id,b.heat_layout_id,b.heat_layout_sort,c.x_axis,c.y_axis,b.project_no,b.glass_id,c.rotate_angle,d.merge as combine")
                     .leftJoin("optimize_detail b on t.project_no=b.project_no")
                     .leftJoin("optimize_heat_detail c on c.project_no=t.project_no and b.heat_layout_id=c.layout_id and b.heat_layout_sort=c.sort")
                     .leftJoin("flow_card d on d.process_id=b.process_id and d.technology_number=b.layer and  d.order_number=b.order_sort ")
@@ -73,7 +73,7 @@
                 glassInfo.setYCoordinate(map.getYAxis());
                 glassInfo.setAngle(map.getRotateAngle());
                 glassInfo.setGlassId(map.getGlassId());
-                glassInfo.setCombine(map.getMerge());
+                glassInfo.setCombine(map.getCombine());
                 // 灏嗘槧灏勫悗鐨勫璞℃坊鍔犲埌缁撴灉鍒楄〃涓�
                 resultList.add(glassInfo);
             }
@@ -91,9 +91,14 @@
 
     @Override
     public int getGlassInfoCountByFlowCardId(String flowCardId, int layer) {
-        return baseMapper.selectCount(new QueryWrapper<GlassInfo>().lambda()
-                .eq(GlassInfo::getFlowCardId, flowCardId)
-                .eq(GlassInfo::getLayer, layer));
+        if (layer == 0) {
+            return baseMapper.selectCount(new QueryWrapper<GlassInfo>().lambda()
+                    .eq(GlassInfo::getFlowCardId, flowCardId));
+        } else {
+            return baseMapper.selectCount(new QueryWrapper<GlassInfo>().lambda()
+                    .eq(GlassInfo::getFlowCardId, flowCardId)
+                    .eq(GlassInfo::getLayer, layer));
+        }
 
     }
 
@@ -130,9 +135,6 @@
         log.info("result666: {}", result);
         return result;
     }
-
-
-
 
 
 }
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java
index 2f16a59..3b73c7e 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java
@@ -145,7 +145,14 @@
         }else{
             return Result.build(200, "鎸囧畾娴佺▼鍗℃垚鍔�", 1);
         }
-
     }
+
+    @ApiOperation("鎸囧畾宸ョ▼")
+    @PostMapping("/appointEngineerId")
+    public Result appointEngineerId(@RequestBody BigStorageCageDetails bigStorageCageDetails) {
+        bigStorageCageDetailsService.appointEngineerId(bigStorageCageDetails.getEngineerId());
+        return Result.build(200, "淇敼鎴愬姛", 1);
+    }
+
 }
 
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java
index 83a601d..8703694 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java
@@ -76,4 +76,6 @@
     void updateBySlot(List<UpdateBigStorageCageDTO> glassList, int state);
 
     String temperingSwitch(Boolean flag);
+
+    void appointEngineerId(String engineerId);
 }
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
index c3ee95b..bdcf76a 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
@@ -404,4 +404,9 @@
         redisUtil.setCacheObject("temperingSwitch", flag);
         return "success";
     }
+
+    @Override
+    public void appointEngineerId(String engineerId){
+        redisUtil.setCacheObject("temperingengineerId", engineerId);
+    }
 }
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcSlicecage.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcSlicecage.java
index 10dbb2d..eea2804 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcSlicecage.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcSlicecage.java
@@ -39,50 +39,61 @@
     private RedisUtil redisUtil;
 
     private JSONObject jsonObject = new JSONObject();
+
     public void queryDataSource1() throws InterruptedException {
-        List<Double> carPostion=new ArrayList<>();
+        List<Double> carPostion = new ArrayList<>();
         carPostion.add(0.25);
         carPostion.add(0.5);
-        jsonObject.append("carPostion",carPostion);
+        jsonObject.append("carPostion", carPostion);
         //鐣岄潰灞曠ず绗煎瓙淇℃伅
         jsonObject.append("bigStorageCageInfos", bigStorageCageService.querybigStorageCageDetail());
 
         //杩涚墖浠诲姟鏁版嵁
-        List<BigStorageCageDetails> bigStorageCageDetailsFeedTask=bigStorageCageDetailsService.selectFeedTask();
+        List<BigStorageCageDetails> bigStorageCageDetailsFeedTask = bigStorageCageDetailsService.selectFeedTask();
         jsonObject.append("bigStorageCageDetailsFeedTask", bigStorageCageDetailsFeedTask);
 
         //鍑虹墖浠诲姟鏁版嵁
-        List<BigStorageCageDetails> bigStorageCageDetailsOutTask=bigStorageCageDetailsService.selectOutTask();
+        List<BigStorageCageDetails> bigStorageCageDetailsOutTask = bigStorageCageDetailsService.selectOutTask();
         jsonObject.append("bigStorageCageDetailsOutTask", bigStorageCageDetailsOutTask);
 
         //鐞嗙墖绗间娇鐢ㄦ儏鍐�
-        List<Map<String, Object>> bigStorageCageUsage=bigStorageCageService.selectBigStorageCageUsage();
+        List<Map<String, Object>> bigStorageCageUsage = bigStorageCageService.selectBigStorageCageUsage();
         jsonObject.append("bigStorageCageUsage", bigStorageCageUsage);
 
         //鐞嗙墖绗艰〃鏍间俊鎭�
         jsonObject.append("bigStorageCageInfo", bigStorageCageService.querybigStorageCageDetailAll());
 
         //閽㈠寲寮�鍏�
-        boolean temperingSwitch=false;
-        if(redisUtil.getCacheObject("temperingSwitch")==null){
+        boolean temperingSwitch = false;
+        if (redisUtil.getCacheObject("temperingSwitch") == null) {
             redisUtil.setCacheObject("temperingSwitch", false);
-        }else{
-            temperingSwitch=redisUtil.getCacheObject("temperingSwitch");
+        } else {
+            temperingSwitch = redisUtil.getCacheObject("temperingSwitch");
         }
         jsonObject.append("temperingSwitch", temperingSwitch);
+
+        //褰撳墠鎸囧畾宸ョ▼
+        String temperingengineerId = "";
+        if (redisUtil.getCacheObject("temperingengineerId") == null) {
+            redisUtil.setCacheObject("temperingengineerId", temperingengineerId);
+        } else {
+            temperingengineerId = redisUtil.getCacheObject("temperingengineerId");
+        }
+        jsonObject.append("temperingengineerId", temperingengineerId);
 
 
     }
 
     public void queryDataSource2() throws InterruptedException {
         //鍑虹墖闃熷垪
-        List<TemperingGlassInfo> temperingGlassInfoList= temperingGlassInfoService.list(
+        List<TemperingGlassInfo> temperingGlassInfoList = temperingGlassInfoService.list(
                 new LambdaQueryWrapper<TemperingGlassInfo>()
-                .inSql(TemperingGlassInfo::getEngineerId,"select distinct engineer_id from tempering_glass_info where state<4")
+                        .inSql(TemperingGlassInfo::getEngineerId, "select distinct engineer_id from tempering_glass_info where state<4")
         );
         jsonObject.append("temperingGlassInfoList", temperingGlassInfoList);
 
     }
+
     /**
      * fixedRate : 涓婁竴涓皟鐢ㄥ紑濮嬪悗鍐嶆璋冪敤鐨勫欢鏃讹紙涓嶇敤绛夊緟涓婁竴娆¤皟鐢ㄥ畬鎴愶級
      * fixedDelay : 涓婁竴涓皟鐢ㄧ粨鏉熷悗鍐嶆璋冪敤鐨勫欢鏃�
@@ -117,13 +128,13 @@
     }
 
     @Scheduled(fixedDelay = 1000)
-    public void temperingIsRun(){
+    public void temperingIsRun() {
         JSONObject jsonObject = new JSONObject();
         //杩涚墖浠诲姟鏁版嵁
-        List<BigStorageCageDetails> bigStorageCageDetailsFeedTask=bigStorageCageDetailsService.selectFeedTask();
+        List<BigStorageCageDetails> bigStorageCageDetailsFeedTask = bigStorageCageDetailsService.selectFeedTask();
         jsonObject.append("bigStorageCageDetailsFeedTask", bigStorageCageDetailsFeedTask);
         //鍑虹墖浠诲姟鏁版嵁
-        List<BigStorageCageDetails> bigStorageCageDetailsOutTask=bigStorageCageDetailsService.selectOutTask();
+        List<BigStorageCageDetails> bigStorageCageDetailsOutTask = bigStorageCageDetailsService.selectOutTask();
         jsonObject.append("bigStorageCageDetailsOutTask", bigStorageCageDetailsOutTask);
         ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("isRun");
         if (sendwServer != null) {
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
index 12a75ab..1d3d777 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
@@ -317,21 +317,23 @@
                 //鐜荤拑鍒伴綈鍖呮嫭宸插嚭鐗囩殑
                 //鍒伴綈锛屽皢鐜荤拑灏忕墖鏁版嵁瀛樺叆閽㈠寲灏忕墖琛紝閫昏緫鐢熸垚鍑虹墖浠诲姟  缁撴潫
                 for (TemperingLayoutDTO item : temperingLayoutDTOList) {
-                    List<TemperingGlassInfo> temperingGlassInfos = glassInfoService.selectJoinList(TemperingGlassInfo.class, JoinWrappers.lambda(GlassInfo.class)
-                            .selectAll(GlassInfo.class)
-                            .select("-1 as state")
-                            .selectAs(BigStorageCageDetails::getSlot, TemperingGlassInfo::getSlot)
-                            .innerJoin(BigStorageCageDetails.class, BigStorageCageDetails::getGlassId, GlassInfo::getGlassId)
-                            .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN)
-                            .eq(GlassInfo::getTemperingLayoutId, item.getTemperingLayoutId())
-                            .eq(GlassInfo::getEngineerId, item.getEngineerId())
-                            .orderBy(Boolean.TRUE, sequenceOrder, GlassInfo::getTemperingFeedSequence));
-                    if (CollectionUtils.isNotEmpty(temperingGlassInfos)) {
-                        temperingGlassInfoService.saveBatch(temperingGlassInfos);
-                        computeOutMoreGlassInfo(temperingGlassInfoList, Boolean.TRUE, mesToPLCAddress);
-                        Date endDate = new Date();
-                        log.info("澶х悊鐗囩鍑虹墖浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime());
-                        return;
+                    if(redisUtil.getCacheObject("temperingengineerId").equals(item.getEngineerId())){
+                        List<TemperingGlassInfo> temperingGlassInfos = glassInfoService.selectJoinList(TemperingGlassInfo.class, JoinWrappers.lambda(GlassInfo.class)
+                                .selectAll(GlassInfo.class)
+                                .select("-1 as state")
+                                .selectAs(BigStorageCageDetails::getSlot, TemperingGlassInfo::getSlot)
+                                .innerJoin(BigStorageCageDetails.class, BigStorageCageDetails::getGlassId, GlassInfo::getGlassId)
+                                .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN)
+                                .eq(GlassInfo::getTemperingLayoutId, item.getTemperingLayoutId())
+                                .eq(GlassInfo::getEngineerId, item.getEngineerId())
+                                .orderBy(Boolean.TRUE, sequenceOrder, GlassInfo::getTemperingFeedSequence));
+                        if (CollectionUtils.isNotEmpty(temperingGlassInfos)) {
+                            temperingGlassInfoService.saveBatch(temperingGlassInfos);
+                            computeOutMoreGlassInfo(temperingGlassInfoList, Boolean.TRUE, mesToPLCAddress);
+                            Date endDate = new Date();
+                            log.info("澶х悊鐗囩鍑虹墖浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime());
+                            return;
+                        }
                     }
                 }
             }
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java
index ca96d50..fe4b12c 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java
@@ -12,6 +12,8 @@
 import com.mes.edgglasstask.entity.EdgGlassTaskInfo;
 import com.mes.edgglasstask.service.EdgGlassTaskInfoService;
 import com.mes.job.PlcStorageCageTask;
+import com.mes.pp.entity.ReportingWork;
+import com.mes.pp.entity.ReportingWorkDetail;
 import com.mes.temperingglass.entity.TemperingGlassInfo;
 import lombok.extern.slf4j.Slf4j;
 import org.junit.Test;
@@ -20,6 +22,12 @@
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -183,4 +191,62 @@
         log.info("鍦ㄥ昂瀵歌〃涓幏鍙栫幓鐠冧俊鎭瘂}", edgGlassTaskInfoList);
     }
 
+    @Test
+    public void ca(){
+        try {
+            // 鐩爣绯荤粺鐨凙PI URL
+            String url = "http://192.168.3.119:8086/reportingWork/mesSave";
+            URL obj = new URL(url);
+            HttpURLConnection con = (HttpURLConnection) obj.openConnection();
+
+            // 璁剧疆璇锋眰鏂规硶鍜岃姹傚ご
+            con.setRequestMethod("POST");
+            con.setRequestProperty("Content-Type", "application/json; utf-8");
+            con.setRequestProperty("Accept", "application/json");
+            con.setDoOutput(true);
+
+            // 鍒涘缓娑堟伅浣�
+            String jsonInputString = "灏忓粬";
+            ReportingWork reportingWork=new ReportingWork();
+            reportingWork.setOrderId("NG24042301");
+            reportingWork.setProductionId("NG24042301A");
+            reportingWork.setProcessId("NG24042301A001");
+            reportingWork.setDeviceName("纾ㄨ竟鏈�");
+            reportingWork.setThisProcess("鍒囧壊");
+            reportingWork.setNextProcess("纾ㄨ竟");
+            reportingWork.setThisCompletedQuantity(1);
+            reportingWork.setThisWornQuantity(0);
+            reportingWork.setClasses("鏃╃彮");
+            reportingWork.setReportingWorkTime(LocalDateTime.now());
+            reportingWork.setTeamsGroupsName("灏忓粬涓�鍙�");
+            reportingWork.setCreator("灏忓粬");
+
+            ReportingWorkDetail reportingWorkDetail=new ReportingWorkDetail();
+            reportingWorkDetail.setTechnologyNumber(1);
+            reportingWorkDetail.setOrderNumber(1);
+            reportingWorkDetail.setCompletedQuantity(1);
+            reportingWorkDetail.setBreakageQuantity(0);
+            // 鍙戦�佽姹�
+            try (OutputStream os = con.getOutputStream()) {
+                byte[] input = jsonInputString.getBytes("utf-8");
+                os.write(input, 0, input.length);
+            }
+
+            // 鑾峰彇鍝嶅簲鐮�
+            int responseCode = con.getResponseCode();
+            System.out.println("Response Code : " + responseCode);
+            // 鑾峰彇鍝嶅簲鍐呭
+            try (BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream(), "utf-8"))) {
+                StringBuilder response = new StringBuilder();
+                String inputLine;
+                while ((inputLine = in.readLine()) != null) {
+                    response.append(inputLine);
+                }
+                System.out.println("Response Body: " + response.toString());
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/UnLoadGlassApplication.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/UnLoadGlassApplication.java
index 6066c94..f9e78e0 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/UnLoadGlassApplication.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/UnLoadGlassApplication.java
@@ -5,6 +5,7 @@
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.scheduling.annotation.EnableAsync;
 import org.springframework.scheduling.annotation.EnableScheduling;
 import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
 
@@ -19,6 +20,7 @@
 @EnableDiscoveryClient
 @MapperScan(basePackages = "com.mes.*.mapper")
 @EnableScheduling
+@EnableAsync
 public class UnLoadGlassApplication {
 
     public static void main(String[] args) {
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java
index 73845ff..d9c9bab 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java
@@ -151,7 +151,6 @@
         QueryWrapper<Damage> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("process_id", flowCardId);
         queryWrapper.eq("technology_number", layer);
-
         int otherNumber = damageservice.count(queryWrapper);
         UpdateWrapper<DownWorkstation> updateWrapper = new UpdateWrapper<>();
         updateWrapper.set("total_quantity", glassInfoCount)
@@ -160,7 +159,6 @@
                 .set("other_number", otherNumber)
                 .eq("workstation_id", workstationId);
 //        .eq("id", workstationId);
-
         this.update(updateWrapper);
 
     }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/BarcodeReadThread.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/BarcodeReadThread.java
deleted file mode 100644
index cc6dabc..0000000
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/BarcodeReadThread.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package com.mes.job;
-
-
-import com.mes.glassinfo.service.GlassInfoService;
-import lombok.SneakyThrows;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-import java.net.InetSocketAddress;
-import java.net.Socket;
-
-public class BarcodeReadThread extends Thread{
-
-    public BarcodeReadThread(String ip,Integer port,Downpush downpush)
-    {
-        this.ip=ip;
-        this.port=port;
-        this.downpush=downpush;
-    }
-    private Socket socket;
-    private String ip;
-    private Integer port;
-    private Downpush downpush;
-    private  BufferedReader in;
-
-    @SneakyThrows
-    @Override
-    public void run()
-    {
-        connectCheckin();//鍒濇 寰幆灏濊瘯杩炴帴锛岀洿鍒拌繛鎺ユ垚鍔�
-        while (this!=null)
-        {
-            try
-            {
-                in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
-                String response = in.readLine();
-                if(response!=null)
-                {
-                    downpush.barcodeCheckin(response);
-                }
-            }
-            catch (Exception exception)
-            {
-                //寮傚父锛岄噸杩�
-                connectCheckin();
-            }
-            finally {
-                if(in!=null)
-                {
-                    in.close();
-                }
-            }
-
-            Thread.sleep(100);
-        }
-    }
-
-    @SneakyThrows
-    private void connectCheckin()
-    {
-        while (this!=null)
-        {
-            try
-            {
-                socket=new Socket();
-                socket.setSoTimeout(10000);
-                socket.connect(new InetSocketAddress(ip,port));
-                if(socket.isConnected())
-                {
-                    return;
-                }
-            }
-            catch (Exception exception)
-            {
-
-            }
-
-            Thread.sleep(1000);
-        }
-    }
-}
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java
index f3a73be..27d3131 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java
@@ -81,7 +81,6 @@
 
 
     @Scheduled(fixedDelay = 300)
-    @Async
     public void plcHomeEdgTask() {
         PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
         String requestWord = plcParameterObject.getPlcParameter("requestWord").getValue();
@@ -98,7 +97,6 @@
 
         log.info("1銆佽幏鍙栧埌鐨勮姹傚瓧涓猴細{}锛岃幏鍙栧埌鐨勬壂鎻廔D涓猴細{}锛岃幏鍙栧埌鐨勭‘璁ゅ瓧涓猴細{}锛岃幏鍙栧埌鐨勫嚭鐗囩姸鎬佸垎鍒负锛歡06:{}銆乬08:{}銆乬11:{}銆乬13:{},褰撳墠鏍煎瓙鍙蜂负锛歿}",
                 requestWord, glassIdeValue, confirmationWrodValue, out06Glassstate, out08Glassstate, out11Glassstate, out13Glassstate, currentSlot);
-
         if ("0".equals(requestWord)) {
             if ("0".equals(confirmationWrodValue)) {
                 log.info("2銆佽幏鍙栧埌鐨勮姹傚瓧涓�0锛屼笖纭瀛椾负0锛屼笉鎵ц浠诲姟");
@@ -131,7 +129,6 @@
     }
 
     @Scheduled(fixedDelay = 300)
-    @Async
     public void plcShelfFull() {
         List<DownWorkstation> list = downGlassInfoService.queryWorkStationIsFull();
         if (CollectionUtils.isNotEmpty(list)) {
@@ -142,7 +139,6 @@
     }
 
     @Scheduled(fixedDelay = 1000)
-    @Async
     public void dealDamageTask() {
         Date startDate = new Date();
         log.info("涓嬬墖鐮存崯鐜荤拑娓呴櫎浠诲姟寮�濮嬫墽琛屾椂闂达細{}", startDate);
@@ -187,7 +183,6 @@
      * 鏇存柊宸茬粦瀹氬伐浣嶆祦绋嬪崱鐨勭牬鎹�/鎷胯蛋鐨勬暟閲忎俊鎭�
      */
     @Scheduled(fixedDelay = 1000)
-    @Async
     public void updateWorkStationOtherCount() {
         Date startDate = new Date();
         log.info("涓嬬墖鐮存洿鏂版崯鐜荤拑鏁伴噺浠诲姟寮�濮嬫墽琛屾椂闂达細{}", startDate);
@@ -230,9 +225,16 @@
         } else {
             log.info("璇ョ幓鐠冨昂瀵搁潪浜哄伐涓嬬墖");
             //鑾峰彇璇ョ幓鐠冪殑娴佺▼鍗℃槸鍚﹀凡缁戝畾鏋跺瓙
-            DownWorkstation one = downWorkstationService.getOne(new LambdaQueryWrapper<DownWorkstation>()
-                    .eq(DownWorkstation::getLayer, glassInfo.getLayer())
-                    .eq(DownWorkstation::getFlowCardId, glassInfo.getFlowCardId()));
+            DownWorkstation one;
+            if (glassInfo.getCombine() != 0) {
+                one = downWorkstationService.getOne(new LambdaQueryWrapper<DownWorkstation>()
+                        .eq(DownWorkstation::getFlowCardId, glassInfo.getFlowCardId()));
+            } else {
+                one = downWorkstationService.getOne(new LambdaQueryWrapper<DownWorkstation>()
+                        .eq(DownWorkstation::getLayer, glassInfo.getLayer())
+                        .eq(DownWorkstation::getFlowCardId, glassInfo.getFlowCardId()));
+            }
+
             //鏄惁宸茬粡缁戝畾   true锛氬凡缁戝畾    false:鏈粦瀹�
             Boolean isBind = Boolean.FALSE;
             if (null != one) {
@@ -247,8 +249,12 @@
                 if (CollectionUtils.isNotEmpty(list)) {
                     log.info("鏈夌┖鏋跺瓙,灏嗘祦绋嬪崱涓庢灦瀛愬ソ缁戝畾锛屾墽琛岃繘鐗囦换鍔� 缁撴潫");
                     //缁戝畾娴佺▼鍗�
-                    downWorkstationService.updateFlowCardIdAndCount(glassInfo.getFlowCardId(), list.get(0).getWorkstationId(), glassInfo.getLayer());
-//                    downWorkstationService.updateFlowCardIdAndCount(glassInfo.getFlowCardId(), list.get(0).getId(), glassInfo.getLayer());
+                    if (glassInfo.getCombine() == 0) {
+                        downWorkstationService.updateFlowCardIdAndCount(glassInfo.getFlowCardId(), list.get(0).getWorkstationId(), glassInfo.getLayer());
+                    } else {
+                        downWorkstationService.updateFlowCardIdAndCount(glassInfo.getFlowCardId(), list.get(0).getWorkstationId(), 0);
+                    }
+//                      downWorkstationService.updateFlowCardIdAndCount(glassInfo.getFlowCardId(), list.get(0).getId(), glassInfo.getLayer());
                     checkFlag = Boolean.TRUE;
                 }
             }
@@ -298,8 +304,8 @@
         DownStorageCageDetails downStorageCageDetails = new DownStorageCageDetails();
         BeanUtils.copyProperties(glassInfo, downStorageCageDetails);
         //褰撻渶瑕佸悎骞惰惤鏋舵椂涓嶇粦瀹氬眰鍙�
-        if(glassInfo.getCombine()==0){
-            downStorageCageDetails.setLayer(null);
+        if (glassInfo.getCombine() != 0) {
+            downStorageCageDetails.setLayer(0);
         }
         downStorageCageDetails.setState(Const.GLASS_STATE_IN);
         downStorageCageDetails.setSlot(nearestEmpty.getSlot());
@@ -326,8 +332,8 @@
             GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId));
             BeanUtils.copyProperties(glassInfo, cageDetails);
             //褰撻渶瑕佸悎骞惰惤鏋舵椂涓嶇粦瀹氬眰鍙�
-            if(glassInfo.getCombine()==0){
-                cageDetails.setLayer(null);
+            if (glassInfo.getCombine() != 0) {
+                cageDetails.setLayer(0);
             }
             //鑾峰彇褰撳墠绗煎瓙绌烘牸淇℃伅
             DownStorageCage empty = downStorageCageService.selectCacheEmpty(Integer.parseInt(currentSlot), Boolean.TRUE);
@@ -345,6 +351,7 @@
         //2銆�08鍙扮┖闂诧紝鍏堣蛋鎵斿伐涓嬬墖鎴�2鍙锋満姊拌噦锛屾棤鐜荤拑鍑虹墖 鍦ㄨ蛋1鍙锋満姊拌噦
         //鏈烘鑷傝绂佺敤鐨勬儏鍐典笅涓嶈兘缁х画鍚戠鐢ㄧ殑鏈烘鑷傛斁鐜荤拑
         Boolean flag08 = "1".equals(out08Glassstate) ? Boolean.TRUE : Boolean.FALSE;
+        flag08 = true;
         if (!flag08) {
             generateTaskByShelf(glassStatus06, glassStatus11, flag08, glassStatus13, tempList, cageDetails, glassId);
         } else {
@@ -445,6 +452,7 @@
                     Map<String, List<DownWorkstation>> listMap = downWorkstationList.stream()
                             .filter(item -> StringUtils.isNotBlank(item.getFlowCardId())).collect(Collectors.groupingBy(item -> item.getFlowCardId() + ":" + item.getLayer()));
                     //杩囨护绛涢�夎幏鍙栨灦瀛愪笂瀵瑰簲娴佺▼鍗�+灞傛暟鐨勭瀛愬唴鐨勭幓鐠冧俊鎭�
+
                     list = tempList.stream().filter(item -> listMap.containsKey(item.getFlowCardId() + ":" + item.getLayer())).collect(Collectors.toList());
                     if (CollectionUtils.isEmpty(list) && flag08 && !"2".equals(glassStatus13)) {
                         list = tempList.stream().filter(item -> {
@@ -634,7 +642,8 @@
             if (downStorageCageDetails.getWidth() > maxWidth || downStorageCageDetails.getHeight() > maxHeight) {
                 endCell = Const.G13_WORK_STATION;
             } else {
-                DownWorkstation workstation = downWorkstationService.getOne(new LambdaUpdateWrapper<DownWorkstation>()
+                DownWorkstation workstation;
+                workstation = downWorkstationService.getOne(new LambdaUpdateWrapper<DownWorkstation>()
                         .eq(DownWorkstation::getFlowCardId, downStorageCageDetails.getFlowCardId()).eq(DownWorkstation::getLayer, downStorageCageDetails.getLayer()));
                 endCell = workstation.getWorkstationId();
             }
@@ -652,12 +661,28 @@
         DownGlassInfo downGlassInfo = new DownGlassInfo();
         BeanUtils.copyProperties(downStorageCageDetails, downGlassInfo);
         //钀芥灦鐗囧簭
-        downGlassInfo.setSequence(downGlassInfoService.queryMaxSequence(downGlassInfo.getFlowCardId(), downGlassInfo.getLayer()));
+        LambdaQueryWrapper<DownGlassInfo> wrapper = new LambdaQueryWrapper<DownGlassInfo>();
+        wrapper.eq(DownGlassInfo::getFlowCardId, downGlassInfo.getFlowCardId())
+                .orderByDesc(DownGlassInfo::getSequence)
+                .last("limit 1");
+        if (downStorageCageDetails.getLayer() != 0) {
+            wrapper.eq(DownGlassInfo::getLayer, downGlassInfo.getLayer());
+        }
+//        downGlassInfo.setSequence(downGlassInfoService.queryMaxSequence(downGlassInfo.getFlowCardId(), downGlassInfo.getLayer()));
+        int k = 0;
+        DownGlassInfo downGlassInfo1 = downGlassInfoService.getOne(wrapper);
+        if (downGlassInfo1 != null) {
+            k = 1;
+        } else {
+            k = 1;
+        }
+        downGlassInfo.setSequence(k);
         downGlassInfo.setWorkStationId(endCell);
         downGlassInfo.setGmtCreate(new Date());
         downGlassInfoService.save(downGlassInfo);
         //鐢熸垚浠诲姟淇℃伅
         GlassInfo glassInfo = new GlassInfo();
+        downStorageCageDetails.setLayer(0);
         BeanUtils.copyProperties(downStorageCageDetails, glassInfo);
         //鍒犻櫎鐞嗙墖绗艰〃鎷胯蛋/鐮存崯鏁版嵁鏁版嵁
         damageService.deleteByGlassId(glassInfo.getGlassId());
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/Downpush.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/Downpush.java
index 0bc5c30..b2693bb 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/Downpush.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/Downpush.java
@@ -51,13 +51,6 @@
     private DownGlassTaskService downGlassTaskService;
     @Autowired
     private GlassInfoService glassInfoService;
-    private final ExecutorService scanCodeThreadPool = new ThreadPoolExecutor(
-            10, // core pool size
-            20, // maximum pool size
-            60L, TimeUnit.SECONDS,
-            new LinkedBlockingQueue<>()
-    );
-    private final ExecutorService isRunThreadPool = Executors.newFixedThreadPool(5);
 
     @Value("${mes.scan.ip}")
     private String scanIp;
@@ -183,7 +176,6 @@
         );
         jsonObject4.append("takeGlass", takeGlass);
 
-
         ArrayList<WebSocketServer> sendwServer4 = WebSocketServer.sessionMap.get("unloadglass");
         if (sendwServer4 != null) {
             for (WebSocketServer webserver : sendwServer4) {
@@ -196,28 +188,24 @@
 
     @Scheduled(fixedDelay = 1000)
     public void isRun() {
-        isRunThreadPool.execute(() -> {
-            JSONObject jsonObject = new JSONObject();
-            //姝e湪杩涜鐨勪换鍔�
-            List<DownWorkstation> downWorkstation = downWorkstationService.getoneDownWorkstations(1, 6);
-            jsonObject.append("downWorkstation", downWorkstation);
-            List<DownGlassTask> downGlassTask = downGlassTaskService.selectOutTaskCache();
-            jsonObject.append("downGlassTask", downGlassTask);
-            ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("unLoadGlassIsRun");
-            if (sendwServer != null) {
-                for (WebSocketServer webserver : sendwServer) {
-                    if (webserver != null) {
-                        webserver.sendMessage(jsonObject.toString());
-                    } else {
-                        log.info("unLoadGlassIsRun is closed");
-                    }
+        JSONObject jsonObject = new JSONObject();
+        //姝e湪杩涜鐨勪换鍔�
+        List<DownWorkstation> downWorkstation = downWorkstationService.getoneDownWorkstations(1, 6);
+        jsonObject.append("downWorkstation", downWorkstation);
+        List<DownGlassTask> downGlassTask = downGlassTaskService.selectOutTaskCache();
+        jsonObject.append("downGlassTask", downGlassTask);
+        ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("unLoadGlassIsRun");
+        if (sendwServer != null) {
+            for (WebSocketServer webserver : sendwServer) {
+                if (webserver != null) {
+                    webserver.sendMessage(jsonObject.toString());
+                } else {
+                    log.info("unLoadGlassIsRun is closed");
                 }
             }
-        });
-
+        }
     }
 
-    @Async
     @Scheduled(fixedDelay = Long.MAX_VALUE)
     public void scanCodeTask() {
         JSONObject jsonObject = new JSONObject();
@@ -226,54 +214,25 @@
             try (Socket socket = new Socket(scanIp, scanPort);
                  BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()))) {
                 // 鎺ユ敹鏈嶅姟鍣ㄥ搷搴�
-//                socket.setSoTimeout(1000);
                 log.info("绛夊緟鎵爜涓�......");
-                    String glassId = in.readLine();
-                    log.info("鎵弿鍒扮殑鐜荤拑id锛歿}", glassId);
-                    List<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("unloadglass");
-                    if (CollectionUtils.isNotEmpty(sendwServer)) {
-                        //鎸夌収鐜荤拑id鑾峰彇鐜荤拑淇℃伅杩斿洖缁欏墠绔晫闈紝鍏蜂綋闇�瑕佸摢浜涙暟鎹緟纭
-                        GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>()
-                                .eq(GlassInfo::getGlassId, glassId).last("limit 1"));
-                        if (null == glassInfo) {
-                            log.info("鎸夌収鐜荤拑id锛歿}锛屾棤娉曟壘鍒扮幓鐠冧俊鎭�", glassId);
-                        } else {
-                            jsonObject.append("scanGlass",glassInfo);
-                            sendwServer.get(0).sendMessage(jsonObject.toString());
+                String glassId = in.readLine();
+                log.info("鎵弿鍒扮殑鐜荤拑id锛歿}", glassId);
+                List<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("unloadglass");
+                if (CollectionUtils.isNotEmpty(sendwServer)) {
+                    //鎸夌収鐜荤拑id鑾峰彇鐜荤拑淇℃伅杩斿洖缁欏墠绔晫闈紝鍏蜂綋闇�瑕佸摢浜涙暟鎹緟纭
+                    GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>()
+                            .eq(GlassInfo::getGlassId, glassId).last("limit 1"));
+                    if (null == glassInfo) {
+                        log.info("鎸夌収鐜荤拑id锛歿}锛屾棤娉曟壘鍒扮幓鐠冧俊鎭�", glassId);
+                    } else {
+                        for (WebSocketServer webserver : sendwServer) {
+                                jsonObject.append("scanGlass", glassInfo);
+                                webserver.sendMessage(jsonObject.toString());
                         }
                     }
+                }
             } catch (Exception exception) {
                 log.info("璇诲彇寮傚父锛屽師鍥犱负{}", exception.getMessage());
-            }
-        }
-    }
-
-    @Scheduled(fixedDelay = Long.MAX_VALUE)
-    public void scanCodeTaskCopy()
-    {
-        log.info("鎵弿浠诲姟宸插惎鍔�");
-        try {
-            BarcodeReadThread brt=new BarcodeReadThread(scanIp,scanPort,this);
-            brt.start();
-
-        }catch (Exception exception) {
-            log.info("鎵弿浠诲姟鍚姩寮傚父锛屽師鍥犱负{}", exception.getMessage());
-        }
-
-    }
-    //socket璇诲彇鍒版秷鎭悗浼氳皟鐢ㄨ繖涓嚱鏁�
-    public void barcodeCheckin(String response)
-    {
-        log.info("鎵弿鍒扮殑鐜荤拑id锛歿}", response);
-        List<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("scanCode");
-        if (CollectionUtils.isNotEmpty(sendwServer)) {
-            //鎸夌収鐜荤拑id鑾峰彇鐜荤拑淇℃伅杩斿洖缁欏墠绔晫闈紝鍏蜂綋闇�瑕佸摢浜涙暟鎹緟纭
-            GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>()
-                    .eq(GlassInfo::getGlassId, response).last("limit 1"));
-            if (null == glassInfo) {
-                log.info("鎸夌収鐜荤拑id锛歿}锛屾棤娉曟壘鍒扮幓鐠冧俊鎭�", response);
-            } else {
-                sendwServer.get(0).sendMessage(glassInfo.toString());
             }
         }
     }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml
index 8a593cc..b4e6af6 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml
@@ -3,7 +3,7 @@
 
 spring:
   profiles:
-    active: dev
+    active: cz
   application:
     name: unLoadGlass
   liquibase:
@@ -29,5 +29,5 @@
   throughHeight: 2500
   threshold: 5      #涓嬬墖鐨勬渶澶ч槇鍊�
   scan:
-    ip: 169.254.171.199
+    ip: 192.168.30.199
     port: 5000

--
Gitblit v1.8.0