From c7e6ef17c73feb1a3bf4bf0d6762d46f26fd4709 Mon Sep 17 00:00:00 2001
From: wu <731351411@qq.com>
Date: 星期二, 13 八月 2024 08:27:32 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/request/DownGlassInfoRequest.java           |    4 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java                                  |   46 +
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/controller/DownGlassInfoController.java            |   10 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageDetailsService.java          |   25 
 UI-Project/src/views/UnLoadGlass/loadmachinerack.vue                                                                                     |  124 +++-
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/controller/EdgGlassTaskInfoController.java           |    5 
 UI-Project/src/views/Caching/cachingun.vue                                                                                               |    6 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java     |   18 
 UI-Project/src/views/UnLoadGlass/Landingindicationtwo.vue                                                                                |   10 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java                               |    4 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java |  161 ++---
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java         |    5 
 UI-Project/package.json                                                                                                                  |    3 
 UI-Project/src/views/UnLoadGlass/PrintFlow.vue                                                                                           |    6 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/request/EdgGlassInfoRequest.java              |    4 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationService.java              |    2 
 UI-Project/src/views/StockBasicData/stockBasicData.vue                                                                                   |   74 ++
 UI-Project/src/views/UnLoadGlass/Landingindication.vue                                                                                   |   37 -
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/mapper/TaskCacheMapper.xml                                           |    1 
 UI-Project/src/lang/zh.js                                                                                                                |    2 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/Downpush.java                                                |   54 +
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/EdgGlassTaskInfo.java                         |    4 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/request/IdentWornRequest.java                 |   28 +
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java        |   11 
 UI-Project/package-lock.json                                                                                                             |  656 ++++++++++++++++++++++++++-
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/controller/TaskCacheController.java                     |   32 
 UI-Project/src/views/PurchaseReturn/purchaseReturn.vue                                                                                   |   65 +-
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/controller/EdgStorageCageController.java           |   41 -
 28 files changed, 1,089 insertions(+), 349 deletions(-)

diff --git a/UI-Project/package-lock.json b/UI-Project/package-lock.json
index d8cc8aa..e9f2959 100644
--- a/UI-Project/package-lock.json
+++ b/UI-Project/package-lock.json
@@ -17,13 +17,16 @@
         "moment": "^2.30.1",
         "pinia": "^2.1.6",
         "pinia-plugin-persistedstate": "^3.2.0",
+        "qrcode": "^1.5.4",
         "sortablejs": "^1.15.1",
         "sweetalert2": "^11.10.7",
         "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"
@@ -46,25 +49,28 @@
       }
     },
     "node_modules/@babel/helper-string-parser": {
-      "version": "7.22.5",
-      "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz",
-      "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==",
+      "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==",
       "engines": {
         "node": ">=6.9.0"
       }
     },
     "node_modules/@babel/helper-validator-identifier": {
-      "version": "7.22.20",
-      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
-      "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
+      "version": "7.24.7",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
+      "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
       "engines": {
         "node": ">=6.9.0"
       }
     },
     "node_modules/@babel/parser": {
-      "version": "7.23.0",
-      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz",
-      "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==",
+      "version": "7.25.3",
+      "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.25.3.tgz",
+      "integrity": "sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==",
+      "dependencies": {
+        "@babel/types": "^7.25.2"
+      },
       "bin": {
         "parser": "bin/babel-parser.js"
       },
@@ -73,12 +79,12 @@
       }
     },
     "node_modules/@babel/types": {
-      "version": "7.23.0",
-      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz",
-      "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==",
+      "version": "7.25.2",
+      "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.25.2.tgz",
+      "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==",
       "dependencies": {
-        "@babel/helper-string-parser": "^7.22.5",
-        "@babel/helper-validator-identifier": "^7.22.20",
+        "@babel/helper-string-parser": "^7.24.8",
+        "@babel/helper-validator-identifier": "^7.24.7",
         "to-fast-properties": "^2.0.0"
       },
       "engines": {
@@ -558,6 +564,28 @@
         "node": ">=0.8"
       }
     },
+    "node_modules/ansi-regex": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
+      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
     "node_modules/anymatch": {
       "version": "3.1.3",
       "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz",
@@ -640,6 +668,14 @@
         "node": ">=8"
       }
     },
+    "node_modules/camelcase": {
+      "version": "5.3.1",
+      "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
+      "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+      "engines": {
+        "node": ">=6"
+      }
+    },
     "node_modules/cfb": {
       "version": "1.2.2",
       "resolved": "https://registry.npmmirror.com/cfb/-/cfb-1.2.2.tgz",
@@ -686,6 +722,16 @@
         "fsevents": "~2.3.2"
       }
     },
+    "node_modules/cliui": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmmirror.com/cliui/-/cliui-6.0.0.tgz",
+      "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+      "dependencies": {
+        "string-width": "^4.2.0",
+        "strip-ansi": "^6.0.0",
+        "wrap-ansi": "^6.2.0"
+      }
+    },
     "node_modules/codepage": {
       "version": "1.15.0",
       "resolved": "https://registry.npmmirror.com/codepage/-/codepage-1.15.0.tgz",
@@ -693,6 +739,22 @@
       "engines": {
         "node": ">=0.8"
       }
+    },
+    "node_modules/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==",
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/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=="
     },
     "node_modules/combined-stream": {
       "version": "1.0.8",
@@ -749,6 +811,14 @@
         }
       }
     },
+    "node_modules/decamelize": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz",
+      "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
     "node_modules/delayed-stream": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
@@ -756,6 +826,11 @@
       "engines": {
         "node": ">=0.4.0"
       }
+    },
+    "node_modules/dijkstrajs": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz",
+      "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA=="
     },
     "node_modules/dom-zindex": {
       "version": "1.0.1",
@@ -795,6 +870,11 @@
       "peerDependencies": {
         "vue": "^3.2.0"
       }
+    },
+    "node_modules/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=="
     },
     "node_modules/esbuild": {
       "version": "0.18.20",
@@ -897,6 +977,18 @@
         "node": ">=8"
       }
     },
+    "node_modules/find-up": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz",
+      "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+      "dependencies": {
+        "locate-path": "^5.0.0",
+        "path-exists": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
     "node_modules/follow-redirects": {
       "version": "1.15.6",
       "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.6.tgz",
@@ -929,6 +1021,14 @@
       "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==",
       "engines": {
         "node": ">=0.8"
+      }
+    },
+    "node_modules/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==",
+      "engines": {
+        "node": "6.* || 8.* || >= 10.*"
       }
     },
     "node_modules/glob-parent": {
@@ -992,6 +1092,14 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/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==",
+      "engines": {
+        "node": ">=8"
+      }
+    },
     "node_modules/is-glob": {
       "version": "4.0.3",
       "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
@@ -1035,6 +1143,17 @@
       },
       "funding": {
         "url": "https://github.com/sponsors/antfu"
+      }
+    },
+    "node_modules/locate-path": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz",
+      "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+      "dependencies": {
+        "p-locate": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=8"
       }
     },
     "node_modules/lodash": {
@@ -1193,6 +1312,47 @@
       "resolved": "https://registry.npmjs.org/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz",
       "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw=="
     },
+    "node_modules/p-limit": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz",
+      "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+      "dependencies": {
+        "p-try": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/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==",
+      "dependencies": {
+        "p-limit": "^2.2.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/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==",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/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==",
+      "engines": {
+        "node": ">=8"
+      }
+    },
     "node_modules/pathe": {
       "version": "1.1.2",
       "resolved": "https://registry.npmmirror.com/pathe/-/pathe-1.1.2.tgz",
@@ -1283,6 +1443,14 @@
         "pathe": "^1.1.2"
       }
     },
+    "node_modules/pngjs": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/pngjs/-/pngjs-5.0.0.tgz",
+      "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==",
+      "engines": {
+        "node": ">=10.13.0"
+      }
+    },
     "node_modules/postcss": {
       "version": "8.4.31",
       "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
@@ -1310,10 +1478,41 @@
         "node": "^10 || ^12 || >=14"
       }
     },
+    "node_modules/prettier": {
+      "version": "2.8.8",
+      "resolved": "https://registry.npmmirror.com/prettier/-/prettier-2.8.8.tgz",
+      "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
+      "optional": true,
+      "bin": {
+        "prettier": "bin-prettier.js"
+      },
+      "engines": {
+        "node": ">=10.13.0"
+      },
+      "funding": {
+        "url": "https://github.com/prettier/prettier?sponsor=1"
+      }
+    },
     "node_modules/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=="
+    },
+    "node_modules/qrcode": {
+      "version": "1.5.4",
+      "resolved": "https://registry.npmmirror.com/qrcode/-/qrcode-1.5.4.tgz",
+      "integrity": "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==",
+      "dependencies": {
+        "dijkstrajs": "^1.0.1",
+        "pngjs": "^5.0.0",
+        "yargs": "^15.3.1"
+      },
+      "bin": {
+        "qrcode": "bin/qrcode"
+      },
+      "engines": {
+        "node": ">=10.13.0"
+      }
     },
     "node_modules/queue-microtask": {
       "version": "1.2.3",
@@ -1345,6 +1544,19 @@
       "engines": {
         "node": ">=8.10.0"
       }
+    },
+    "node_modules/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==",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/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=="
     },
     "node_modules/requires-port": {
       "version": "1.0.0",
@@ -1412,10 +1624,23 @@
       "integrity": "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==",
       "dev": true
     },
+    "node_modules/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=="
+    },
     "node_modules/sortablejs": {
       "version": "1.15.1",
       "resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.15.1.tgz",
       "integrity": "sha512-P5Cjvb0UG1ZVNiDPj/n4V+DinttXG6K8n7vM/HQf0C25K3YKQTQY6fsr/sEGsJGpQ9exmPxluHxKBc0mLKU1lQ=="
+    },
+    "node_modules/source-map": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
+      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+      "engines": {
+        "node": ">=0.10.0"
+      }
     },
     "node_modules/source-map-js": {
       "version": "1.0.2",
@@ -1434,6 +1659,30 @@
       },
       "engines": {
         "node": ">=0.8"
+      }
+    },
+    "node_modules/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==",
+      "dependencies": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/strip-ansi": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
+      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+      "dependencies": {
+        "ansi-regex": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
       }
     },
     "node_modules/strip-literal": {
@@ -1750,6 +1999,37 @@
         "vue": "^3.0.0"
       }
     },
+    "node_modules/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==",
+      "dependencies": {
+        "vue": "^2.6.11"
+      }
+    },
+    "node_modules/vue-print-nb/node_modules/@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==",
+      "dependencies": {
+        "@babel/parser": "^7.23.5",
+        "postcss": "^8.4.14",
+        "source-map": "^0.6.1"
+      },
+      "optionalDependencies": {
+        "prettier": "^1.18.2 || ^2.0.0"
+      }
+    },
+    "node_modules/vue-print-nb/node_modules/vue": {
+      "version": "2.7.16",
+      "resolved": "https://registry.npmmirror.com/vue/-/vue-2.7.16.tgz",
+      "integrity": "sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==",
+      "deprecated": "Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details.",
+      "dependencies": {
+        "@vue/compiler-sfc": "2.7.16",
+        "csstype": "^3.1.0"
+      }
+    },
     "node_modules/vue-router": {
       "version": "4.2.5",
       "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz",
@@ -1762,6 +2042,14 @@
       },
       "peerDependencies": {
         "vue": "^3.2.0"
+      }
+    },
+    "node_modules/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==",
+      "dependencies": {
+        "vue": "^3.0.5"
       }
     },
     "node_modules/vxe-table": {
@@ -1790,6 +2078,11 @@
       "resolved": "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz",
       "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ=="
     },
+    "node_modules/which-module": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/which-module/-/which-module-2.0.1.tgz",
+      "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ=="
+    },
     "node_modules/wmf": {
       "version": "1.0.2",
       "resolved": "https://registry.npmmirror.com/wmf/-/wmf-1.0.2.tgz",
@@ -1804,6 +2097,19 @@
       "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==",
       "engines": {
         "node": ">=0.8"
+      }
+    },
+    "node_modules/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==",
+      "dependencies": {
+        "ansi-styles": "^4.0.0",
+        "string-width": "^4.1.0",
+        "strip-ansi": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=8"
       }
     },
     "node_modules/xe-utils": {
@@ -1831,6 +2137,44 @@
         "node": ">=0.8"
       }
     },
+    "node_modules/y18n": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz",
+      "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
+    },
+    "node_modules/yargs": {
+      "version": "15.4.1",
+      "resolved": "https://registry.npmmirror.com/yargs/-/yargs-15.4.1.tgz",
+      "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
+      "dependencies": {
+        "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"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/yargs-parser": {
+      "version": "18.1.3",
+      "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-18.1.3.tgz",
+      "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+      "dependencies": {
+        "camelcase": "^5.0.0",
+        "decamelize": "^1.2.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
     "node_modules/zrender": {
       "version": "5.6.0",
       "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.6.0.tgz",
@@ -1848,27 +2192,30 @@
       "dev": true
     },
     "@babel/helper-string-parser": {
-      "version": "7.22.5",
-      "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz",
-      "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw=="
+      "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.22.20",
-      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
-      "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A=="
+      "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.23.0",
-      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz",
-      "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw=="
+      "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.23.0",
-      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz",
-      "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==",
+      "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.22.5",
-        "@babel/helper-validator-identifier": "^7.22.20",
+        "@babel/helper-string-parser": "^7.24.8",
+        "@babel/helper-validator-identifier": "^7.24.7",
         "to-fast-properties": "^2.0.0"
       }
     },
@@ -2219,6 +2566,19 @@
       "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",
@@ -2286,6 +2646,11 @@
         "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",
@@ -2318,10 +2683,33 @@
         "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",
@@ -2361,10 +2749,20 @@
         "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",
@@ -2401,6 +2799,11 @@
         "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",
@@ -2484,6 +2887,15 @@
         "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",
@@ -2503,6 +2915,11 @@
       "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",
@@ -2550,6 +2967,11 @@
       "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",
@@ -2579,6 +3001,14 @@
       "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",
@@ -2693,6 +3123,32 @@
       "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",
@@ -2742,6 +3198,11 @@
         "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",
@@ -2752,10 +3213,26 @@
         "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",
@@ -2770,6 +3247,16 @@
       "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",
@@ -2812,10 +3299,20 @@
       "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",
@@ -2828,6 +3325,24 @@
       "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": {
@@ -3014,12 +3529,50 @@
         "@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": {
@@ -3041,6 +3594,11 @@
       "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",
@@ -3050,6 +3608,16 @@
       "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",
@@ -3070,6 +3638,38 @@
         "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",
diff --git a/UI-Project/package.json b/UI-Project/package.json
index 3a98cb7..ba92794 100644
--- a/UI-Project/package.json
+++ b/UI-Project/package.json
@@ -17,13 +17,16 @@
     "moment": "^2.30.1",
     "pinia": "^2.1.6",
     "pinia-plugin-persistedstate": "^3.2.0",
+    "qrcode": "^1.5.4",
     "sortablejs": "^1.15.1",
     "sweetalert2": "^11.10.7",
     "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"
diff --git a/UI-Project/src/lang/zh.js b/UI-Project/src/lang/zh.js
index ef28802..8462870 100644
--- a/UI-Project/src/lang/zh.js
+++ b/UI-Project/src/lang/zh.js
@@ -240,6 +240,8 @@
         breakage:'鐮存崯',
         takeout:'鎷胯蛋',
         glasstype:'鐜荤拑绫诲瀷',
+        line:'绾胯矾',
+        status:'鐘舵��',
     },
     processCard:{
         intofurnace:'杩涚倝涓�',
diff --git a/UI-Project/src/views/Caching/cachingun.vue b/UI-Project/src/views/Caching/cachingun.vue
index 737c1de..d7676bf 100644
--- a/UI-Project/src/views/Caching/cachingun.vue
+++ b/UI-Project/src/views/Caching/cachingun.vue
@@ -69,7 +69,7 @@
 import { useI18n } from 'vue-i18n'
   const { t } = useI18n()
 // import i18n from '@/i18n';
-const tableData = ref([])
+const tableData = reactive([]);
 const slot = ref('')
 const adjustedRects = ref([]);
   
@@ -210,10 +210,10 @@
 // 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
 const handleMessage = (data) => {
   // 鏇存柊 tableData 鐨勬暟鎹�
-  tableData.splice(0, tableData.length, ...data.params[0]);
+  tableData.splice(0, tableData.length, ...data.params2[0]);
   // tableData.value = data.params[0]
   // adjustedRects.value = data.EdgStorageCageinfos[0]
-  adjustedRects.value = data.params[0].map(rect => ({  
+  adjustedRects.value = data.params2[0].map(rect => ({  
             ...rect, // 澶嶅埗鍘熷瀵硅薄鐨勫叾浠栧睘鎬�  
             width: rect.width * 0.5 ,
             id: rect.id * 10,
diff --git a/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue b/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
index 5a991d4..a156421 100644
--- a/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
+++ b/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
@@ -3,7 +3,7 @@
 import {reactive} from "vue";
 import {useRouter} from "vue-router"
 import request from "@/utils/request"
-import { ref, onMounted, onBeforeUnmount,onUnmounted } from 'vue';  
+import { ref, onMounted, onBeforeUnmount } from 'vue';  
 import { WebSocketHost ,host} from '@/utils/constants'
 import { ElMessage, ElMessageBox } from 'element-plus'
 import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService';
@@ -22,7 +22,6 @@
 const adjustedRectsb = ref([]);
 const currentGlassId = ref(null);
 const currenttemperingFeedSequence = ref(null);
-let socket = null;
 const socketUrl = `ws://${WebSocketHost}:${host}/api/temperingGlass/api/talk/temperingGlass`;
 const handleMessage = (data) => {
 // 杩涚倝涓�
@@ -39,17 +38,17 @@
         heighta = rect.height;
       }
       if (rect.angle === 0) {  
-    adjustedWidth = widtha * 0.12;
-    adjustedHeight = heighta * 0.1;
-    adjustedWidtha = widtha;  
-    adjustedHeighta = heighta;  
-    newX = 5087 - (rect.yCoordinate + widtha); 
-    } else {  
     adjustedWidth = heighta * 0.12;  
     adjustedHeight = widtha * 0.1;  
     adjustedWidtha = heighta;  
     adjustedHeighta = widtha;  
     newX = 5087 - (rect.yCoordinate + heighta);  
+    } else {  
+    adjustedWidth = widtha * 0.12;
+    adjustedHeight = heighta * 0.1;
+    adjustedWidtha = widtha;  
+    adjustedHeighta = heighta;  
+    newX = 5087 - (rect.yCoordinate + widtha); 
   }  
   // if (rect.angle === 0) {  
   //         adjustedWidth = heighta * 0.12;  
@@ -90,17 +89,17 @@
         heighta = rect.height;
       }
       if (rect.angle === 0) {  
-    adjustedWidth = widtha * 0.12;
-    adjustedHeight = heighta * 0.1;
-    adjustedWidtha = widtha;  
-    adjustedHeighta = heighta;  
-    newX = 5087 - (rect.yCoordinate + widtha); 
-    } else {  
     adjustedWidth = heighta * 0.12;  
     adjustedHeight = widtha * 0.1;  
     adjustedWidtha = heighta;  
     adjustedHeighta = widtha;  
     newX = 5087 - (rect.yCoordinate + heighta);  
+    } else {  
+    adjustedWidth = widtha * 0.12;
+    adjustedHeight = heighta * 0.1;
+    adjustedWidtha = widtha;  
+    adjustedHeighta = heighta;  
+    newX = 5087 - (rect.yCoordinate + widtha); 
   }  
   //     if (rect.angle === 0) {  
   //         adjustedWidth = heighta * 0.12;  
@@ -206,24 +205,14 @@
       }
 };
 onMounted(() => {
-  socket = initializeWebSocket(socketUrl, handleMessage);
+  initializeWebSocket(socketUrl, handleMessage);
 });
-  onUnmounted(() => {
-    if (socket) {
-    closeWebSocket(socket);
-    }
-    });
 function updateRectColors() {  
   adjustedRectsa.value.forEach(rect => {  
     if (rect.glassId === glassId) {  
-      rect.state = 8;
+      rect.state = 5;
     }
   });  
-  adjustedRectsb.value.forEach(rect => {  
-    if (rect.glassId === glassId) {  
-      rect.state = 8;
-    }
-  });
 }  
 function getRectColora(state) {  
   switch (state) {  
@@ -233,7 +222,7 @@
       return '#95d475';
     case -1:  
       return '#CDAF95';  
-    case 8:  
+    case 5:  
       return '#911005';  
   }
 }
@@ -243,7 +232,7 @@
       return '#eebe77';  
     case 4:  
       return '#CD6090';
-    case 8:  
+    case 5:  
       return '#911005';  
   }  
 }
@@ -271,7 +260,7 @@
     glassId: currentGlassId.value,
     // temperingFeedSequence: currenttemperingFeedSequence.value,
     line: 4001,
-    status: 8,
+    status: 2,
     workingProcedure: '閽㈠寲',
     })
     if (response.code == 200) {
@@ -316,7 +305,7 @@
        left: `${rect.xcoordinate}px`,
         width: `${rect.width}px`, 
         height: `${rect.height}px`,
-        backgroundColor: rect.state === 8 ? '#911005' : 'lightblue' }"
+        backgroundColor: rect.state === 5 ? '#911005' : 'lightblue' }"
     >
      <div  class="centered-text">
     <div >{{ rect.glassId }}</div>  
@@ -344,7 +333,7 @@
        left: `${rect.xcoordinate}px`, 
        width: `${rect.width}px`, 
        height: `${rect.height}px`,
-       backgroundColor: rect.state === 8 ? '#911005' : 'lightblue' }"
+       backgroundColor: rect.state === 5 ? '#911005' : 'lightblue' }"
        >
      <div  class="centered-text">
     <div >{{ rect.glassId }}</div>  
@@ -413,7 +402,7 @@
    </div>
    </el-card>
 </div>
-
+ 
 <el-dialog v-model="blind" top="30vh" width="15%" style="text-align: center;">
         <el-button type="warning" plain :icon="Delete" @click="handleDamage"  style="width: 140px;margin-left: 10px;">
           {{ $t('order.dilapidation') }}
@@ -427,8 +416,8 @@
   background-color:  #529b2e;
   text-align: center;
   display: inline-block;
-	/* align-items:center; */
-	/* justify-content:center; */
+    /* align-items:center; */
+    /* justify-content:center; */
   margin-left: 20px;
 }
 #boxb{
@@ -437,16 +426,16 @@
   /* display:flex; */
   text-align: center;
   display: inline-block;
-	align-items:center;
-	justify-content:center;
+    align-items:center;
+    justify-content:center;
   margin-left: 20px;
 }
 #box{
   border: 1px solid black;
   background-color:  #337ecc;
   display:flex;
-	align-items:center;
-	justify-content:center;
+    align-items:center;
+    justify-content:center;
 }
 #home-card {
     width: 100%;
diff --git a/UI-Project/src/views/StockBasicData/stockBasicData.vue b/UI-Project/src/views/StockBasicData/stockBasicData.vue
index abd2af9..9e9f6a1 100644
--- a/UI-Project/src/views/StockBasicData/stockBasicData.vue
+++ b/UI-Project/src/views/StockBasicData/stockBasicData.vue
@@ -20,6 +20,9 @@
 const requestData = {  
   line: 2001  
 };  
+const now = new Date();
+const timeRange = ref([new Date(now.setHours(0, 0, 0, 0)), new Date(now.setHours(23, 59, 59, 999))])
+const selectValuesa = reactive([]);
 // request.post("/cacheGlass/taskCache/selectEdgTask",{
 //   ...requestData,  
 
@@ -34,6 +37,37 @@
         
 //           }
 //           });
+
+// 纾ㄨ竟浠诲姟鏌ヨ
+const setEdgGlassInfoRequest = async () => {
+  let celllist=[]
+  let stateList=[]
+  if(selectValuesa[0]!=null&&selectValuesa[0]!='undefined'){
+    if(selectValuesa[0]!=""){
+      celllist=[selectValuesa[0]];
+    }
+  }
+  if(selectValuesa[1]!=null&&selectValuesa[1]!='undefined'){
+    if(selectValuesa[1]!=""){
+      stateList=[selectValuesa[1]];
+    }
+  }
+
+
+  const response = await request.post("/cacheGlass/edgGlassTaskInfo/setEdgGlassInfoRequest", {
+    cellList: celllist,
+    stateList: stateList,
+    beginDate: timeRange.value[0],
+    endDate: timeRange.value[1],
+  })
+  if (response.code === 200) {
+    ElMessage.success(response.message);
+  } else {
+    ElMessage.error(response.message);
+  }
+
+}
+
 // 鐮存崯
  const open = async(row) => { 
   try {
@@ -62,9 +96,9 @@
         // alert('鍒犻櫎澶辫触锛�' + deleteResponse.message); 
       }  
     }  
-  } catch (error) {  
-    // 澶勭悊鍙兘鍑虹幇鐨勯敊璇紝姣斿 ElMessageBox 鎶涘嚭鐨勫紓甯哥瓑  
-    console.error('鍙戠敓閿欒:', error);  
+  } catch (error) { 
+    // 澶勭悊鍙兘鍑虹幇鐨勯敊璇紝姣斿 ElMessageBox 鎶涘嚭鐨勫紓甯哥瓑 
+    console.error('鍙戠敓閿欒:', error); 
   }  
 };  
 // 鎷胯蛋 
@@ -105,7 +139,7 @@
 // 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
 const handleMessage = (data) => {
   // 鏇存柊 tableData 鐨勬暟鎹�
-  tableData.value = data.EdgTasks1[0]
+  tableData.value = data.edgTasks[0]
 };
 onMounted(() => {
   socket = initializeWebSocket(socketUrl, handleMessage);
@@ -123,15 +157,41 @@
 <template>
   <div>
     <el-card style="flex: 1;margin-left: 10px;margin-top: 20px;" v-loading="loading">
+      <el-select v-model="selectValuesa[0]" filterable :placeholder="$t('璇烽�夋嫨绾胯矾')" clearable>
+            <el-option label="纾ㄨ竟涓�绾�" value="2001"></el-option>
+            <el-option label="纾ㄨ竟浜岀嚎" value="2002"></el-option>
+          </el-select>
+
+          <el-select v-model="selectValuesa[1]" filterable :placeholder="$t('璇烽�夋嫨鐘舵��')" clearable >
+            <el-option label="鏈(杈�" value="0"></el-option>
+            <el-option label="纾ㄨ竟涓�" value="1"></el-option>
+            <el-option label="宸茬(杈�" value="2"></el-option>
+          </el-select>
+          <span class="demonstration">鏃堕棿娈�</span>
+            <el-date-picker v-model="timeRange" type="datetimerange" range-separator="鑷�" start-placeholder="寮�濮嬫棩鏈�"
+              end-placeholder="缁撴潫鏃ユ湡">
+            </el-date-picker>
+          <el-button type="primary" style="margin-left: 10px;" @click="setEdgGlassInfoRequest()">{{
+        $t('reportmanage.inquire')
+      }}</el-button>
+
       <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;">
-        <el-table height="240" ref="table" 
+        <el-table height="750" ref="table" 
         @selection-change="handleSelectionChange"
         :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
-        <el-table-column prop="glass_id" align="center" :label="$t('workOrder.glassID')" min-width="180" />
+        <el-table-column prop="glassId" align="center" :label="$t('workOrder.glassID')" min-width="180" />
           <el-table-column prop="width" align="center" :label="$t('workOrder.width')" min-width="120" />
           <el-table-column prop="height" align="center" :label="$t('workOrder.height')" min-width="80" />
           <el-table-column prop="thickness" align="center" :label="$t('workOrder.thickness')" min-width="120" />
-          <el-table-column prop="glass_type" align="center" :label="$t('workOrder.glasstype')" min-width="120" />
+          <el-table-column prop="glassType" align="center" :label="$t('workOrder.glasstype')" min-width="120" />
+          <el-table-column prop="line" align="center" :label="$t('workOrder.line')" min-width="120" />
+          <el-table-column prop="status" :label="$t('workOrder.status')" align="center" width="200">
+            <template #default="scope">
+              {{ scope.row.status==0?"鏈(杈�":scope.row.status==1?"纾ㄨ竟涓�":"宸茬(杈�" }}
+            </template>
+        </el-table-column>
+
+
           <el-table-column fixed="right" :label="$t('workOrder.operate')" align="center" width="200">
             <template #default="scope">
               <el-button size="mini" type="text" plain @click="open(scope.row)">{{ $t('workOrder.breakage') }}</el-button>
diff --git a/UI-Project/src/views/UnLoadGlass/Landingindication.vue b/UI-Project/src/views/UnLoadGlass/Landingindication.vue
index fcfa8e7..2dfb8f3 100644
--- a/UI-Project/src/views/UnLoadGlass/Landingindication.vue
+++ b/UI-Project/src/views/UnLoadGlass/Landingindication.vue
@@ -30,10 +30,8 @@
     </div>
   </div>
 </template>
-
 <script  setup>
 import { ref, watchEffect ,onMounted,onUnmounted} from 'vue';
-
 import { useI18n } from 'vue-i18n'
   const { t } = useI18n()
   let language = ref(localStorage.getItem('lang') || 'zh')
@@ -49,12 +47,9 @@
   { x: 140, y: 280, height: 60, width: 110, fillColor: '#6a6da9', item: { height: 20, width: 100, fillColor: 'yellow', content: 'NG1234561454' ,downGlassInfoList:""} }
   
 ]);
-
 watchEffect(() => {
   // 瑙﹀彂鏁版嵁鍙樺寲鏃堕噸鏂版覆鏌�
 });
-
-
 const calculateItemXPosition = (rack, item, index) => {
   if (index === 0 ) {
     return rack.x;
@@ -64,7 +59,6 @@
     return rack.x + (rack.width - item.width) / 2;
   }
 };
-
 const calculateItemYPosition = (rack, item, index) => {
   if (index === 0 ) {
     return rack.y + (rack.height - item.height) / 2;
@@ -74,41 +68,31 @@
     return rack.y + rack.height - item.height;
   }
 };
-
-
 const fetchFlowCardId = async () => {
   try {
     const response = await request.get('unLoadGlass/downWorkStation/getwo');
-    
     if (response.code === 200) {
       console.log(response); 
       // 閬嶅巻鍝嶅簲鏁版嵁骞舵浛鎹acks鏁扮粍涓殑item灞炴��
       response.data.forEach((itemData, index) => {
   if (index < racks.value.length) {
     const rack = racks.value[index];
-    const newItem = {
+      rack.fillColor = itemData.item.fullCardColor === 'red' ? '#911005' : '#6a6da9';
+      const newItem = {
       content: itemData.item.content,
       fillColor: itemData.item.fillColor,
       width: itemData.item.width === 0 ? "" : 10,
       height: itemData.item.height === 0 ? "" : 90,
       downGlassInfoList:itemData.item.downGlassInfoList
     };
-
     if (index === 2 && itemData.item.width > 0) {
       newItem.width = 100;
       newItem.height = 20;
     }
-
     rack.item = newItem;
-
     console.log(racks.value); // 鎵撳嵃鏇存柊鍚庣殑 racks 鍊�
   }
 });
-
-
-
-      
-     
     } else {
       ElMessage.error(response.msg);
     }
@@ -121,27 +105,23 @@
 //const socketUrl = `ws://${WebSocketHost}:88/api/unLoadGlass/api/talk/unloadglass2`;
 // 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
 const handleMessage = (data) => {
-
   // 鏇存柊 tableData 鐨勬暟鎹�
   data.glassinfo[0].forEach((itemData, index) => {
   if (index < racks.value.length) {
     const rack = racks.value[index];
-    const newItem = {
+      rack.fillColor = itemData.item.fullCardColor === 'red' ? '#911005' : '#6a6da9';
+      const newItem = {
       content: itemData.item.content,
       fillColor: itemData.item.fillColor,
       width: itemData.item.width === 0 ? "" : 10,
       height: itemData.item.height === 0 ? "" : 90,
       downGlassInfoList:itemData.item.downGlassInfoList
     };
-
     if (index === 2 && itemData.item.width > 0) {
       newItem.width = 100;
       newItem.height = 20;
     }
-
     rack.item = newItem;
-
-
    // console.log("鏄剧ず鍥�1",racks.value); // 鎵撳嵃鏇存柊鍚庣殑 racks 鍊�
   }
 });
@@ -168,9 +148,7 @@
       <td>${info.height}</td>
     </tr>`;
   });
-
   tableContent += '</table>';
-
   Swal.fire({
     // title: '鐜荤拑淇℃伅',
     title: t('reportWork.glassinformation'),
@@ -180,8 +158,6 @@
     }
   });
 };
-
-
     const showRectInfo = (rack) => {
       const content = rack.item.content;
       console.log(rack.item.downGlassInfoList[0].flowCardId)
@@ -190,14 +166,9 @@
     const downGlassInfoList = rack.item.downGlassInfoList;
       console.log(downGlassInfoList)
       showCustomAlert(downGlassInfoList);
-
    }
- 
     };
-
-
 </script>
-
 <style scoped>
 .glass-rack {
   /* margin-left: 10px; */
diff --git a/UI-Project/src/views/UnLoadGlass/Landingindicationtwo.vue b/UI-Project/src/views/UnLoadGlass/Landingindicationtwo.vue
index 9d4fb7a..12bb518 100644
--- a/UI-Project/src/views/UnLoadGlass/Landingindicationtwo.vue
+++ b/UI-Project/src/views/UnLoadGlass/Landingindicationtwo.vue
@@ -30,10 +30,8 @@
     </div>
   </div>
 </template>
-
 <script setup>
 import { ref, watchEffect ,onMounted,onUnmounted} from 'vue';
-
 import { useI18n } from 'vue-i18n'
   const { t } = useI18n()
   let language = ref(localStorage.getItem('lang') || 'zh')
@@ -85,12 +83,14 @@
       response.data.forEach((itemData, index) => {
   if (index < racks.value.length) {
     const rack = racks.value[index];
-    const newItem = {
+      rack.fillColor = itemData.item.fullCardColor === 'red' ? '#911005' : '#6a6da9';
+      const newItem = {
       content: itemData.item.content,
       fillColor: itemData.item.fillColor,
       width: itemData.item.width === 0 ? "" : 10,
       height: itemData.item.height === 0 ? "" : 90
     };
+    console.log(itemData.item.fullCardColor);
 
     if (index === 2 && itemData.item.width > 0) {
       newItem.width = 100;
@@ -125,7 +125,8 @@
   data.glassinfo2[0].forEach((itemData, index) => {
   if (index < racks.value.length) {
     const rack = racks.value[index];
-    const newItem = {
+      rack.fillColor = itemData.item.fullCardColor === 'red' ? '#911005' : '#6a6da9';
+      const newItem = {
       content: itemData.item.content,
       fillColor: itemData.item.fillColor,
       width: itemData.item.width === 0 ? "" : 10,
@@ -178,7 +179,6 @@
     }
   });
 };
-
 
     const showRectInfo = (rack) => {
       const content = rack.item.content;
diff --git a/UI-Project/src/views/UnLoadGlass/PrintFlow.vue b/UI-Project/src/views/UnLoadGlass/PrintFlow.vue
index 7188fdb..26a1a9f 100644
--- a/UI-Project/src/views/UnLoadGlass/PrintFlow.vue
+++ b/UI-Project/src/views/UnLoadGlass/PrintFlow.vue
@@ -88,7 +88,7 @@
       "{display:none}@media print{" +
       "@page {" +
       "    size: auto; " +
-      "    margin: 0mm 0mm 0mm 0mm; " +
+      "    margin: 5mm 5mm 5mm 5mm; " +
       "  }body>:not(#" +
       printId +
       "){display:none !important}body>#" +
@@ -119,7 +119,6 @@
     if (response.code == 200) {
       // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
       produceList.value = response.data;
-      console.log(produceList.value);
       ElMessage.success(response.message);
       for (let j = 0; j < produceList.value.length; j++) {
             let sumWeight = 0
@@ -368,7 +367,8 @@
 
 #printFlowCard {
   text-align: center;
-//font-weight: bolder; height: 600px;
+font-weight: bolder;
+ height: 600px;
 }
 
 #contentTable {
diff --git a/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue b/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
index 6f7522a..ea71644 100644
--- a/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
+++ b/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
@@ -14,6 +14,11 @@
 import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService';
 import { WebSocketHost, host } from '@/utils/constants'
 import PrintFlow from './PrintFlow.vue'
+import print from 'vue3-print-nb';
+const printLoading = ref(true)
+const fullFlowCard = ref('')
+const autoPrint = ref(false)
+
 const dialogFormVisiblea = ref(false)
 const dialogFormVisiblea2 = ref(false)
 const dialogFormVisibleaDownGlass = ref(false)
@@ -28,12 +33,38 @@
 const flowCardOptions = ref('[]');
 const tableData = reactive([]);
 const downGlass = ref([]);
-const timeRange = ref(["2022-01-01", "2025-01-01"])
+
 const selectValuesa = reactive({});
 const selectOptionsa = ref([]);
 const dialogTableVisible = ref(false)
 const printFlowCardId = ref('')
-const printLayer=ref('')
+const printLayer = ref('')
+const now = new Date();
+const timeRange = ref([new Date(now.setHours(0, 0, 0, 0)), new Date(now.setHours(23, 59, 59, 999))])
+
+const handleChange = async () => {
+  console.log("瑙﹀彂寮�鍏�")
+  try {
+    const body = {
+      flag: autoPrint.value, // 浣跨敤 ganghua.value 鑾峰彇褰撳墠寮�鍏崇殑鐘舵��  
+    };
+
+    var url = "/unLoadGlass/downWorkStation/autoPrint?flag=" + autoPrint.value;
+    const response = await request.post(url)
+    if (response.code == 200) {
+      // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
+      ElMessage.success(response.message);
+      autoPrint.value = response.data
+    } else {
+      ElMessage.error(response.message);
+    }
+  }
+  catch (error) {
+    // 澶勭悊閿欒
+    console.error(error);
+  }
+}
+
 
 const handleInputChangea = (value, rowId) => {
   // 鏇存柊瀵瑰簲琛岀殑 select 鍊�  
@@ -155,6 +186,7 @@
 const socketUrl = `ws://${WebSocketHost}:${host}/api/unLoadGlass/api/talk/unloadglass`;
 // 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
 const handleMessage = (data) => {
+
   // 鏇存柊 tableData 鐨勬暟鎹�
   if (data.downGlassInfos != null) {
     downGlass.value = data.downGlassInfos[0][1];
@@ -162,8 +194,27 @@
   if (data.engineerIdList != null) {
     selectOptionsa.value = data.engineerIdList[0]
   }
+  if (data.autoPrint != null) {
+    autoPrint.value = data.autoPrint;
+  }
+  console.log(autoPrint.value)
 
-  // tableData.splice(0, tableData.length, ...data.params[0]);
+  tableData.splice(0, tableData.length, ...data.params[0]);
+  if (fullFlowCard.value == "") {
+    for (let i = 0; i < tableData.length; i++) {
+      if (tableData[i].totalQuantity != 0) {
+        if (tableData[i].totalQuantity == tableData[i].racksNumber + tableData[i].otherNumber && fullFlowCard.value != tableData[i].flowCardId) {
+          // printFlowCardId.value = tableData[i].flowCardId;
+          fullFlowCard.value = tableData[i].flowCardId;
+          open(tableData[i]);
+          break;
+        }
+      } else {
+        console.log("娌℃湁flowCardId")
+      }
+    }
+  }
+
 
   //  console.log("鏇存柊鍚庢暟鎹�", data.params[0]);
 };
@@ -217,15 +268,14 @@
 
 // 鏌ヨ鏁版嵁
 const selectDownGlassData = async () => {
-  
-  const response = await request.post("/unLoadGlass/downGlassInfo/selectDownGlassInfo", {
+
+  const response = await request.post("/unLoadGlass/downGlassInfo/setDownGlassInfoRequest", {
     workStationId: selectValuesa[0],
     engineerId: selectValuesa[1],
     beginDate: timeRange.value[0],
     endDate: timeRange.value[1],
   })
   if (response.code === 200) {
-    sendDownGlass.value = response.data;
     ElMessage.success(response.message);
   } else {
     ElMessage.error(response.message);
@@ -234,15 +284,17 @@
 }
 
 
-const open=async(row)=>{
+const open = async (row) => {
 
-  printFlowCardId.value=row.flowCardId;
-  printLayer.value=row.layer
+  printFlowCardId.value = row.flowCardId;
+  printLayer.value = row.layer
   dialogTableVisible.value = true;
   setTimeout(() => {
     printFlowCard(); // 鏇挎崲鎴愪綘瑕佹墽琛岀殑鍑芥暟鍚�
-    }, 1000);
+    dialogTableVisible.value = false;
+  }, 1000);
   ;
+
 }
 
 const printFlowCard = () => {
@@ -259,17 +311,17 @@
   // 鏍峰紡鎺у埗涓庢墦鍗版棤鍏崇殑鍏冪礌闅愯棌
   let style = doc.createElement("style");
   style.innerHTML =
-      "body>#" +
-      printId +
-      "{display:none}@media print{" +
-      "@page {" +
-      "    size: auto; " +
-      "    margin: 2mm 2mm 0mm 1mm; " +
-      "  }body>:not(#" +
-      printId +
-      "){display:none !important}body>#" +
-      printId +
-      "{display:block;padding-top:1px}}";
+    "body>#" +
+    printId +
+    "{display:none}@media print{" +
+    "@page {" +
+    "    size: auto; " +
+    "    margin: 2mm 2mm 0mm 1mm; " +
+    "  }body>:not(#" +
+    printId +
+    "){display:none !important}body>#" +
+    printId +
+    "{display:block;padding-top:1px}}";
   //
   content.innerHTML = el.outerHTML;
   // // console.log("el.outerHTML", el.outerHTML);
@@ -295,6 +347,8 @@
   <div>
     <el-button style="margin-top: 5px;margin-left: 10px;" id="searchButton" type="primary"
       @click="dialogFormVisibleaDownGlass = true">钀芥灦璇︽儏</el-button>
+    <el-switch style="margin-top: 5px;margin-left: 10px;" v-model="autoPrint" class="mb-2" :inactive-text="$t('鑷姩鎵撳嵃')"
+      @change="handleChange" />
     <el-card style="flex: 1;" v-loading="loading">
       <el-card style="flex: 1;margin-left: 4px;margin-top: 1px;" v-loading="loading">
         <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;">
@@ -324,7 +378,7 @@
                   @click="handleBindRack(scope.row)">{{ $t('reportWork.bindingshelves') }}</el-button>
                 <el-button size="mini" type="text" plain @click="handleBindRack2(scope.row)">{{ $t('reportWork.clear')
                   }}</el-button>
-                  <el-button @click="open(scope.row)" :disabled="scope.row.flowCardId==null">鎵撳嵃</el-button>
+                <el-button @click="open(scope.row)" :disabled="scope.row.flowCardId == null">鎵撳嵃</el-button>
               </template>
 
             </el-table-column>
@@ -351,9 +405,12 @@
             @input="handleInputChangea($event, row.id)">
             <el-option v-for="item in selectOptionsa" :key="item" :label="item" :value="item" />
           </el-select>
-          <el-date-picker style="margin-left: 10px;" v-model="timeRange" type="daterange" format="YYYY/MM/DD"
-            value-format="YYYY-MM-DD" :start-placeholder="$t('reportmanage.starttime')"
-            :end-placeholder="$t('reportmanage.endtime')" :default-time="defaultTime" />
+
+          <span class="demonstration">鏃堕棿娈�</span>
+          <el-date-picker v-model="timeRange" type="datetimerange" range-separator="鑷�" start-placeholder="寮�濮嬫棩鏈�"
+            end-placeholder="缁撴潫鏃ユ湡">
+          </el-date-picker>
+
           <el-button type="primary" style="margin-left: 10px;" @click="selectDownGlassData()">{{
         $t('reportmanage.inquire')
       }}</el-button>
@@ -429,20 +486,13 @@
     </template>
   </el-dialog>
 
-  <el-dialog
-        id="sizePrintCalrd"
-        v-model="dialogTableVisible"
-        destroy-on-close
-        style="width: 75%;height:75% ">
-      <!-- <template #header="{ close, titleId, titleClass }">
+  <el-dialog id="sizePrintCalrd" v-model="dialogTableVisible" destroy-on-close style="width: 75%;height:75% ">
+    <!-- <template #header="{ close, titleId, titleClass }">
         <el-button  @click="printFlowCard" >鎵撳嵃</el-button>
       </template> -->
-      <print-flow
-          id="child"
-          :printFlowCardId="printFlowCardId"
-          :printLayer="printLayer"
-          style="width: 100%;height: 100%"/>
-    </el-dialog>
+    <print-flow id="child" :printFlowCardId="printFlowCardId" :printLayer="printLayer"
+      style="width: 100%;height: 100%" />
+  </el-dialog>
 
 </template>
 <style scoped>
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/controller/EdgGlassTaskInfoController.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/controller/EdgGlassTaskInfoController.java
index 83f1be2..8e16a5e 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/controller/EdgGlassTaskInfoController.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/controller/EdgGlassTaskInfoController.java
@@ -13,7 +13,7 @@
 
 /**
  * <p>
- *  鍓嶇鎺у埗鍣�
+ * 鍓嶇鎺у埗鍣�
  * </p>
  *
  * @author wu
@@ -35,7 +35,8 @@
     @PostMapping("/setEdgGlassInfoRequest")
     @ApiOperation(value = "璁剧疆纾ㄨ竟闃熷垪鏌ヨ鍙傛暟", notes = "璁剧疆纾ㄨ竟闃熷垪鏌ヨ鍙傛暟")
     public Result<String> setEdgGlassInfoRequest(@RequestBody EdgGlassInfoRequest request) {
-        return Result.success(edgGlassTaskInfoService.setEdgGlassInfoRequest(request));
+        edgGlassTaskInfoService.setEdgGlassInfoRequest(request);
+        return Result.build(200, "鏌ヨ鎴愬姛", "1");
     }
 
 }
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/EdgGlassTaskInfo.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/EdgGlassTaskInfo.java
index 1d660e3..387c397 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/EdgGlassTaskInfo.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/EdgGlassTaskInfo.java
@@ -1,5 +1,6 @@
 package com.mes.edgglasstask.entity;
 
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -36,4 +37,7 @@
 
     private Date time;
 
+    @TableLogic
+    private int deleted;
+
 }
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/request/EdgGlassInfoRequest.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/request/EdgGlassInfoRequest.java
index b6e3813..6a7f9a8 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/request/EdgGlassInfoRequest.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/request/EdgGlassInfoRequest.java
@@ -28,13 +28,13 @@
      * 寮�濮嬫椂闂�
      */
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd")
     private Date beginDate;
 
     /**
      * 缁撴潫鏃堕棿
      */
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd")
     private Date endDate;
 }
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/request/IdentWornRequest.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/request/IdentWornRequest.java
new file mode 100644
index 0000000..a383b93
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/request/IdentWornRequest.java
@@ -0,0 +1,28 @@
+package com.mes.edgglasstask.entity.request;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/8/10 13:34
+ * @Description:
+ */
+@Data
+public class IdentWornRequest {
+
+    @NotBlank(message = "鐜荤拑ID涓嶈兘涓虹┖")
+    private String glassId;
+
+    @NotNull(message = "鐘舵�佷笉鑳戒负绌�")
+    private int state;
+
+    @NotNull(message = "绾胯矾涓嶈兘涓虹┖")
+    private int line;
+
+    @NotBlank(message = "宸ュ簭涓嶈兘涓虹┖")
+    private String workingProcedure;
+}
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/controller/EdgStorageCageController.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/controller/EdgStorageCageController.java
index f6ed2a9..e007e31 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/controller/EdgStorageCageController.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/controller/EdgStorageCageController.java
@@ -1,26 +1,22 @@
 package com.mes.edgstoragecage.controller;
 
+import com.mes.edgglasstask.entity.request.IdentWornRequest;
 import com.mes.edgstoragecage.entity.EdgStorageCage;
 import com.mes.edgstoragecage.entity.EdgStorageCageDetails;
 import com.mes.edgstoragecage.service.EdgStorageCageDetailsService;
 import com.mes.edgstoragecage.service.EdgStorageCageService;
-import com.mes.edgstoragecage.service.impl.EdgStorageCageServiceImpl;
-import com.mes.taskcache.entity.TaskCache;
-import com.mes.taskcache.service.impl.TaskCacheServiceImpl;
 import com.mes.utils.Result;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import java.awt.image.ImageProducer;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 /**
  * <p>
- *  鍓嶇鎺у埗鍣�
+ * 鍓嶇鎺у埗鍣�
  * </p>
  *
  * @author zhoush
@@ -40,44 +36,33 @@
     @ApiOperation("鏌ヨ纾ㄨ竟缂撳瓨鐞嗙墖绗煎唴璇︽儏 鍙傛暟()")
     @PostMapping("/selectEdgStorageCage")
     @ResponseBody
-    public Result selectEdgStorageCage () {
-        List<Map<String, Object>> list=edgStorageCageService.selectEdgStorageCages();
-        return Result.build(200,"鎴愬姛",list);
+    public Result selectEdgStorageCage() {
+        List<Map<String, Object>> list = edgStorageCageService.selectEdgStorageCages();
+        return Result.build(200, "鎴愬姛", list);
     }
-//    @ApiOperation("娣诲姞纾ㄨ竟缂撳瓨鐞嗙墖绗间俊鎭�   鍔熻兘锛氱鍐呯粦瀹氱幓鐠�  鍙傛暟(EdgStorageCage edgStorageCage)")
-//    @PostMapping("/insertEdgStorageCage")
-//    @ResponseBody
-//    public Result insertEdgStorageCage(@RequestBody EdgStorageCage edgStorageCage) {
-//        boolean isSucess=edgStorageCageService.updateEdgStorageCage(edgStorageCage);
-//        return Result.build(200,"娣诲姞鎴愬姛",1);
-//    }
+
     @ApiOperation("淇敼纾ㄨ竟缂撳瓨鐞嗙墖绗间俊鎭�   鍔熻兘锛氬绗煎唴鏍呮牸杩涜銆愬惎鐢�/绂佺敤銆�")
     @PostMapping("/updateEdgStorageCage")
     @ResponseBody
     public Result updateEdgStorageCage(@RequestBody EdgStorageCage edgStorageCage) {
-        String isSucess=edgStorageCageService.updateEdgStorageCage(edgStorageCage)?"鎴愬姛":"澶辫触";
-        return Result.build(200,"銆愬惎鐢�/绂佺敤銆�"+isSucess,1);
+        String isSucess = edgStorageCageService.updateEdgStorageCage(edgStorageCage) ? "鎴愬姛" : "澶辫触";
+        return Result.build(200, "銆愬惎鐢�/绂佺敤銆�" + isSucess, 1);
     }
 
     @ApiOperation("纾ㄨ竟缂撳瓨鐞嗙墖绗间俊鎭�   鍔熻兘锛氬绗煎唴鏍呮牸鐜荤拑杩涜銆愭竻闄�/鏇存崲/缁戝畾銆� EdgStorageCage鏍煎瓙淇℃伅,EdgStorageCageDetails 鐜荤拑淇℃伅 ")
     @PostMapping("/edgStorageCageGlass")
     @ResponseBody
-    public Result edgStorageCageGlass(@RequestBody EdgStorageCageDetails edgStorageCageDetails,int edgStorageCageId) {
+    public Result edgStorageCageGlass(@RequestBody EdgStorageCageDetails edgStorageCageDetails, int edgStorageCageId) {
 
-        String isSucess=edgStorageCageService.updateEdgStorageCageDetails(edgStorageCageId,edgStorageCageDetails)?"鎴愬姛":"澶辫触";
-        return Result.build(200,"銆愭竻闄�/鏇存崲/缁戝畾銆�"+isSucess,1);
+        String isSucess = edgStorageCageService.updateEdgStorageCageDetails(edgStorageCageId, edgStorageCageDetails) ? "鎴愬姛" : "澶辫触";
+        return Result.build(200, "銆愭竻闄�/鏇存崲/缁戝畾銆�" + isSucess, 1);
     }
-
-
 
     @ApiOperation("纾ㄨ竟妯″潡姹囨姤鐜荤拑鐘舵��   鍔熻兘锛氬绗煎唴鏍呮牸鐜荤拑杩涜銆愮牬鎹�/鎷胯蛋銆�  ")
     @PostMapping("/edgReportStatus")
     @ResponseBody
-    public Result edgReportStatus(@RequestBody Map<String, String> arguments) {
-        /*arguments.put("line","1002");
-        arguments.put("machine","鍗у紡鐞嗙墖");*/
-        String isSucess=edgStorageCageDetailsService.identWorn(arguments)?"鎴愬姛":"澶辫触";
-        return Result.build(200,"銆愮牬鎹�/鎷胯蛋銆�"+isSucess,1);
+    public Result edgReportStatus(@RequestBody IdentWornRequest request) {
+        return Result.build(200, "銆愮牬鎹�/鎷胯蛋銆�" + edgStorageCageDetailsService.edgReportStatus(request), 1);
     }
 
 }
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageDetailsService.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageDetailsService.java
index 1edada5..4e7ef5c 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageDetailsService.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageDetailsService.java
@@ -1,6 +1,7 @@
 package com.mes.edgstoragecage.service;
 
 import com.github.yulichang.base.MPJBaseService;
+import com.mes.edgglasstask.entity.request.IdentWornRequest;
 import com.mes.edgstoragecage.entity.EdgStorageCageDetails;
 
 import java.util.List;
@@ -15,13 +16,6 @@
  * @since 2024-04-07
  */
 public interface EdgStorageCageDetailsService extends MPJBaseService<EdgStorageCageDetails> {
-
-    /**
-     * 璇嗗埆 鐮存崯/鎷胯蛋
-     * @param arguments
-     * @return
-     */
-    boolean identWorn(Map<String, String> arguments);
 
     /**
      * 鑾峰彇 鍒囧壊褰撳墠鐗堝浘
@@ -46,9 +40,26 @@
 
     /**
      * 鑾峰彇鍑虹墖淇℃伅鏁版嵁
+     *
      * @param glassId
      * @param threshold
      * @return
      */
     EdgStorageCageDetails selectOutGlass(String glassId, int threshold);
+
+    /**
+     * 璇嗗埆   鎷胯蛋:9/鐮存崯:8
+     *
+     * @param request
+     * @return
+     */
+    String identControls(IdentWornRequest request);
+
+    /**
+     * 纾ㄨ竟妯″潡姹囨姤鐜荤拑鐘舵��   鍔熻兘锛氬绗煎唴鏍呮牸鐜荤拑杩涜銆愮牬鎹�/鎷胯蛋銆�
+     *
+     * @param request
+     * @return
+     */
+    String edgReportStatus(IdentWornRequest request);
 }
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java
index acf0dff..e214749 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java
@@ -2,6 +2,7 @@
 
 import cn.hutool.core.lang.Assert;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.github.yulichang.query.MPJLambdaQueryWrapper;
@@ -10,12 +11,14 @@
 import com.mes.common.config.Const;
 import com.mes.damage.entity.Damage;
 import com.mes.damage.service.DamageService;
+import com.mes.edgglasstask.entity.EdgGlassTaskInfo;
+import com.mes.edgglasstask.entity.request.IdentWornRequest;
+import com.mes.edgglasstask.service.EdgGlassTaskInfoService;
 import com.mes.edgstoragecage.entity.EdgStorageCage;
 import com.mes.edgstoragecage.entity.EdgStorageCageDetails;
 import com.mes.edgstoragecage.mapper.EdgStorageCageDetailsMapper;
 import com.mes.edgstoragecage.mapper.EdgStorageCageMapper;
 import com.mes.edgstoragecage.service.EdgStorageCageDetailsService;
-import com.mes.glassinfo.entity.GlassInfo;
 import com.mes.glassinfo.mapper.GlassInfoMapper;
 import com.mes.pp.entity.OptimizeDetail;
 import com.mes.pp.entity.OptimizeLayout;
@@ -26,12 +29,11 @@
 import com.mes.uppattenusage.mapper.UpPattenUsageMapper;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import javax.print.attribute.standard.MediaSize;
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -65,66 +67,8 @@
     @Autowired
     DamageService damageService;
 
-
-    /**
-     * 璇嗗埆   鎷胯蛋:200/鐮存崯:201
-     *
-     * @param arguments
-     * @return
-     */
-    @Override
-    public boolean identWorn(Map<String, String> arguments) {
-        String glassId=arguments.get("glassId");
-        int controlsId=arguments.get("controlsId").isEmpty()?0:Integer.parseInt(arguments.get("controlsId"));
-        int line=arguments.get("line").isEmpty()?0:Integer.parseInt(arguments.get("line"));
-        String machine=arguments.get("machine");
-        if(controlsId==0||line==0||machine==null||glassId==null||glassId.isEmpty()){
-            log.info("鍓嶇浼犻�掓暟鎹笉鍏�:{}",arguments);
-            return false;
-        }
-        int state;
-        if(controlsId==200||controlsId==201){
-            state=controlsId==200?3:2;
-        }else if (controlsId==300||controlsId==301){
-            state=controlsId==300?3:2;
-        }else{
-            log.info("鍓嶇浼犻�掔姸鎬佷笉鍚堟硶:{}",arguments);
-            return false;
-        }
-
-        List<GlassInfo> GlassInfos = glassInfoMapper.selectList(new MPJLambdaQueryWrapper<GlassInfo>()
-                .selectAll(GlassInfo.class)
-                .eq(GlassInfo::getGlassId, glassId));
-        if (GlassInfos.size() == 1) {
-            Damage damage =new Damage();
-            damage.setGlassId(glassId);
-            damage.setLine(line);
-            damage.setWorkingProcedure(machine);
-            damage.setRemark("");
-            damage.setStatus(state);//201鐮存崯锛�200鎷胯蛋   =銆嬬牬鎹熻〃 2鐮存崯  3 鎷胯蛋
-            damageService.insertDamage(damage);
-        }else{
-            return false;
-        }
-        List<EdgStorageCageDetails> edgStorageCageDetails = baseMapper.selectList(new MPJLambdaQueryWrapper<EdgStorageCageDetails>()
-                .selectAll(EdgStorageCageDetails.class)
-                .eq(EdgStorageCageDetails::getGlassId, glassId));
-        if (edgStorageCageDetails.size() == 1) {
-            EdgStorageCageDetails item = edgStorageCageDetails.get(0);
-            item.setState(controlsId);
-            baseMapper.update(item, new MPJLambdaWrapper<EdgStorageCageDetails>().selectAll(EdgStorageCageDetails.class).eq(EdgStorageCageDetails::getGlassId, glassId));
-        }
-
-//            Sql鐗堟湰
-//        List<EdgStorageCageDetails> edgStorageCageDetails = baseMapper.selectList(new QueryWrapper<EdgStorageCageDetails>().eq("glass_id", glassId));
-//        if (edgStorageCageDetails.size() == 1) {
-//            EdgStorageCageDetails item=edgStorageCageDetails.get(0);
-//            item.setState(ControlsId);
-//            baseMapper.update(edgStorageCageDetails.get(0), new QueryWrapper<EdgStorageCageDetails>().eq("glass_id", glassId));
-//            return true;
-//        }
-        return true;
-    }
+    @Autowired
+    EdgGlassTaskInfoService edgGlassTaskInfoService;
 
     /**
      * 鑾峰彇 鍒囧壊褰撳墠鐗堝浘
@@ -139,7 +83,7 @@
                 .orderByDesc(UpPattenUsage::getId));
         if (!upPattenUsage.isEmpty()) {
             UpPattenUsage upPattenUsage1 = upPattenUsage.get(0);
-            List<Map<String, Object>> cutTerritorys=optimizeDetailMapper.selectJoinMaps(JoinWrappers.lambda(OptimizeDetail.class)
+            List<Map<String, Object>> cutTerritorys = optimizeDetailMapper.selectJoinMaps(JoinWrappers.lambda(OptimizeDetail.class)
                     .selectAll(OptimizeDetail.class)
                     .selectAs(OptimizeLayout::getWidth, "olWidth")
                     .selectAs(OptimizeLayout::getHeight, "olHeight")
@@ -149,17 +93,17 @@
                     .eq(OptimizeDetail::getProjectNo, upPattenUsage1.getEngineeringId())
                     .eq(OptimizeDetail::getStockId, upPattenUsage1.getLayoutSequence())
             );
-            List<Map<String, Object>> ResultcutTerritorys=new ArrayList<>();
+            List<Map<String, Object>> ResultcutTerritorys = new ArrayList<>();
             for (Map<String, Object> cutTerritory : cutTerritorys) {
-                EdgStorageCageDetails edgStorageCageDetails=baseMapper.selectOne(new MPJLambdaQueryWrapper<EdgStorageCageDetails>()
+                EdgStorageCageDetails edgStorageCageDetails = baseMapper.selectOne(new MPJLambdaQueryWrapper<EdgStorageCageDetails>()
                         .selectAll(EdgStorageCageDetails.class)
                         .eq(EdgStorageCageDetails::getGlassId, cutTerritory.get("glass_id"))
                         .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN));
 //                log.info("鍐呭锛歿}-------{}",cutTerritory,edgStorageCageDetails);
-                if(edgStorageCageDetails!=null){
-                    cutTerritory.put("glass_state",edgStorageCageDetails.getState());
-                }else{
-                    cutTerritory.put("glass_state",0);
+                if (edgStorageCageDetails != null) {
+                    cutTerritory.put("glass_state", edgStorageCageDetails.getState());
+                } else {
+                    cutTerritory.put("glass_state", 0);
                 }
                 ResultcutTerritorys.add(cutTerritory);
             }
@@ -185,9 +129,9 @@
     @Override
     public List<List<Map<String, Object>>> selectCurrentCutTerritory(String current) {
         //缁撴灉
-        List<Map<String, Object>> ResultcutTerritorys=new ArrayList<>();
+        List<Map<String, Object>> ResultcutTerritorys = new ArrayList<>();
         //姝ゅ伐绋嬬殑鎵�鏈変紭鍖栨暟鎹�
-        List<Map<String, Object>> cutTerritorys=optimizeDetailMapper.selectJoinMaps(JoinWrappers.lambda(OptimizeDetail.class)
+        List<Map<String, Object>> cutTerritorys = optimizeDetailMapper.selectJoinMaps(JoinWrappers.lambda(OptimizeDetail.class)
                 .selectAll(OptimizeDetail.class)
                 .selectAs(OptimizeLayout::getWidth, "olWidth")
                 .selectAs(OptimizeLayout::getHeight, "olHeight")
@@ -197,24 +141,24 @@
                 .eq(OptimizeDetail::getProjectNo, current)
         );
 
-        Map<String, EdgStorageCageDetails> edgMaps=baseMapper.selectList(new MPJLambdaQueryWrapper<EdgStorageCageDetails>()
+        Map<String, EdgStorageCageDetails> edgMaps = baseMapper.selectList(new MPJLambdaQueryWrapper<EdgStorageCageDetails>()
                 .selectAll(EdgStorageCageDetails.class)
-                .eq(EdgStorageCageDetails::getEngineerId,current)
+                .eq(EdgStorageCageDetails::getEngineerId, current)
                 .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN)
-        ).stream().collect(Collectors.toMap(EdgStorageCageDetails::getGlassId,EdgStorageCageDetails->EdgStorageCageDetails));
+        ).stream().collect(Collectors.toMap(EdgStorageCageDetails::getGlassId, EdgStorageCageDetails -> EdgStorageCageDetails));
         for (Map<String, Object> cutTerritory : cutTerritorys) {
 //                log.info("鍐呭锛歿}-------{}",cutTerritory,edgStorageCageDetails);
-            if(cutTerritory.get("glass_id")==null||"".equals(cutTerritory.get("glass_id"))){
-                log.info("浼樺寲鏁版嵁涓璯lassId瀛樺湪绌哄��-----鍐呭锛歿}",cutTerritorys);
+            if (cutTerritory.get("glass_id") == null || "".equals(cutTerritory.get("glass_id"))) {
+                log.info("浼樺寲鏁版嵁涓璯lassId瀛樺湪绌哄��-----鍐呭锛歿}", cutTerritorys);
                 return new ArrayList<>();
-            }else if(edgMaps.get(cutTerritory.get("glass_id"))!=null){
-                cutTerritory.put("glass_state",edgMaps.get(cutTerritory.get("glass_id")).getState());
-            }else{
-                cutTerritory.put("glass_state",0);
+            } else if (edgMaps.get(cutTerritory.get("glass_id")) != null) {
+                cutTerritory.put("glass_state", edgMaps.get(cutTerritory.get("glass_id")).getState());
+            } else {
+                cutTerritory.put("glass_state", 0);
             }
             ResultcutTerritorys.add(cutTerritory);
         }
-        Map<String, List<Map<String, Object>>> groupBy=ResultcutTerritorys.stream().collect(Collectors.groupingBy(item->item.get("stock_id").toString()));
+        Map<String, List<Map<String, Object>>> groupBy = ResultcutTerritorys.stream().collect(Collectors.groupingBy(item -> item.get("stock_id").toString()));
 //        List<List<Map<String, Object>>> Result=groupBy.values().stream().collect(Collectors.toList());
         return new ArrayList<>(groupBy.values());
 //Sql鐗堟湰
@@ -313,22 +257,49 @@
         EdgStorageCageDetails outEdgStorageCageDetails = null;
 
 //        if (queryMaxMinDiff(threshold))
-            //todo:閫昏緫1锛氳幏鍙栦袱鏉$嚎宸插嚭鏈�鍚庝竴鍧楃幓鐠冨湪绗煎唴鐩稿悓灏哄鎵�鍓╂暟閲忥紝浼樺厛璧版暟閲忓皯鐨勭嚎
-            //todo:闇�瑕佸湪鍗у紡鐞嗙墖绗艰鎯呰〃涓柊澧炵姸鎬侊紝鐢ㄦ潵琛ㄧず鐜荤拑杩涘嚭鐞嗙墖绗兼儏鍐�
-            if (oldEdgStorageCageDetails != null && minTemperingLayoutId != null) {
-                log.info("鎸夌収涓婁竴鐗囧凡鍑虹幓鐠冨搴}锛岄珮搴}锛屽強鐗堝浘id鍖洪棿{}鍒皗}鑾峰彇鍑虹墖浠诲姟鐜荤拑淇℃伅", oldEdgStorageCageDetails.getWidth()
-                        , oldEdgStorageCageDetails.getHeight(), minTemperingLayoutId.getTemperingLayoutId(), minTemperingLayoutId.getTemperingLayoutId() + threshold);
-                outEdgStorageCageDetails = this.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>()
-                        .notIn(CollectionUtils.isNotEmpty(glassIds), EdgStorageCageDetails::getGlassId, glassIds)
-                        .eq(EdgStorageCageDetails::getWidth, oldEdgStorageCageDetails.getWidth())
-                        .eq(EdgStorageCageDetails::getHeight, oldEdgStorageCageDetails.getHeight())
-                        .orderByAsc(EdgStorageCageDetails::getTemperingLayoutId, EdgStorageCageDetails::getTemperingFeedSequence)
-                        .last("limit 1"));
-                log.info("鍑虹墖浠诲姟鐨勭幓鐠冧俊鎭細{}", outEdgStorageCageDetails);
-            }
+        //todo:閫昏緫1锛氳幏鍙栦袱鏉$嚎宸插嚭鏈�鍚庝竴鍧楃幓鐠冨湪绗煎唴鐩稿悓灏哄鎵�鍓╂暟閲忥紝浼樺厛璧版暟閲忓皯鐨勭嚎
+        //todo:闇�瑕佸湪鍗у紡鐞嗙墖绗艰鎯呰〃涓柊澧炵姸鎬侊紝鐢ㄦ潵琛ㄧず鐜荤拑杩涘嚭鐞嗙墖绗兼儏鍐�
+        if (oldEdgStorageCageDetails != null && minTemperingLayoutId != null) {
+            log.info("鎸夌収涓婁竴鐗囧凡鍑虹幓鐠冨搴}锛岄珮搴}锛屽強鐗堝浘id鍖洪棿{}鍒皗}鑾峰彇鍑虹墖浠诲姟鐜荤拑淇℃伅", oldEdgStorageCageDetails.getWidth()
+                    , oldEdgStorageCageDetails.getHeight(), minTemperingLayoutId.getTemperingLayoutId(), minTemperingLayoutId.getTemperingLayoutId() + threshold);
+            outEdgStorageCageDetails = this.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>()
+                    .notIn(CollectionUtils.isNotEmpty(glassIds), EdgStorageCageDetails::getGlassId, glassIds)
+                    .eq(EdgStorageCageDetails::getWidth, oldEdgStorageCageDetails.getWidth())
+                    .eq(EdgStorageCageDetails::getHeight, oldEdgStorageCageDetails.getHeight())
+                    .orderByAsc(EdgStorageCageDetails::getTemperingLayoutId, EdgStorageCageDetails::getTemperingFeedSequence)
+                    .last("limit 1"));
+            log.info("鍑虹墖浠诲姟鐨勭幓鐠冧俊鎭細{}", outEdgStorageCageDetails);
+        }
         if (outEdgStorageCageDetails == null) {
             outEdgStorageCageDetails = minTemperingLayoutId;
         }
         return outEdgStorageCageDetails;
     }
+
+    @Override
+    public String identControls(IdentWornRequest request) {
+        //灏嗚瘑鍒牬鎹熺殑鐜荤拑鐩存帴鍔犲叆鐮存崯琛�
+        Damage damage = new Damage();
+        BeanUtils.copyProperties(request, damage);
+        damage.setType(request.getState());
+        damage.setRemark("");
+        damage.setStatus(0);
+        damageService.insertDamage(damage);
+        return "success";
+    }
+
+    @Override
+    public String edgReportStatus(IdentWornRequest request) {
+        //灏嗙(杈归槦鍒楃牬鎹熺殑鐜荤拑鐩存帴鍔犲叆鐮存崯琛�
+        Damage damage = new Damage();
+        BeanUtils.copyProperties(request, damage);
+        damage.setType(request.getState());
+        damage.setRemark("");
+        damage.setStatus(0);
+        damageService.insertDamage(damage);
+        //淇敼纾ㄨ竟闃熷垪鏁版嵁鐘舵��
+        edgGlassTaskInfoService.update(new LambdaUpdateWrapper<EdgGlassTaskInfo>()
+                .set(EdgGlassTaskInfo::getStatus, request.getState()).eq(EdgGlassTaskInfo::getGlassId, request.getGlassId()));
+        return "success";
+    }
 }
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/controller/TaskCacheController.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/controller/TaskCacheController.java
index 99a18f1..e48a6db 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/controller/TaskCacheController.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/controller/TaskCacheController.java
@@ -1,8 +1,7 @@
 package com.mes.taskcache.controller;
 
+import com.mes.edgglasstask.entity.request.IdentWornRequest;
 import com.mes.edgstoragecage.service.EdgStorageCageDetailsService;
-import com.mes.edgstoragecage.service.EdgStorageCageService;
-import com.mes.taskcache.entity.TaskCache;
 import com.mes.taskcache.service.TaskCacheService;
 import com.mes.utils.Result;
 import io.swagger.annotations.Api;
@@ -13,11 +12,9 @@
 import java.util.List;
 import java.util.Map;
 
-import static com.mes.job.CacheGlassTask.engineerId;
-
 /**
  * <p>
- *  鍓嶇鎺у埗鍣�
+ * 鍓嶇鎺у埗鍣�
  * </p>
  *
  * @author zhoush
@@ -32,8 +29,6 @@
     private EdgStorageCageDetailsService edgStorageCageDetailsService;
 
     @Autowired
-    private EdgStorageCageService edgStorageCageService;
-    @Autowired
     private TaskCacheService taskCacheService;
 
     @ApiOperation("鏌ヨ鍒囧壊鐗堝浘淇℃伅-鏍规嵁 宸ョ▼鍙�   鍙傛暟(宸ョ▼鍙�)")
@@ -42,34 +37,31 @@
     public Result cutTerritory(String current) {
         //engineerId=current;
         List<List<Map<String, Object>>> h = edgStorageCageDetailsService.selectCurrentCutTerritory(current);
-        return Result.build(200,"鎴愬姛",h);
+        return Result.build(200, "鎴愬姛", h);
     }
+
     @ApiOperation("璇嗗埆鏄剧ず  褰撳墠鐗堝浘   鍙傛暟()")
     @PostMapping("/currentCutTerritory")
     @ResponseBody
     public Result currentCutTerritory() {
         List<Map<String, Object>> h = edgStorageCageDetailsService.selectCutTerritory();
-        return Result.build(200,"鎴愬姛",h);
+        return Result.build(200, "鎴愬姛", h);
     }
-    @ApiOperation("璇嗗埆鎿嶄綔锛�   鐮存崯/鎷胯蛋     鍙傛暟锛圛D,鍔熻兘[200锛氭嬁璧帮紝201:鐮存崯]锛�")
+
+    @ApiOperation("璇嗗埆鎿嶄綔锛�   鐮存崯/鎷胯蛋     鍙傛暟锛圛D,鍔熻兘[9锛氭嬁璧帮紝8:鐮存崯]锛�")
     @PostMapping("/identControls")
     @ResponseBody
-    public Result identControls(@RequestBody Map<String, String> arguments) {
-       /* arguments.put("glassId","鐜荤拑ID");
-        arguments.put("controlsId","鍔熻兘鍙穂200鎷胯蛋/201鐮存崯]");*/
-        /*arguments.put("line","1001");
-        arguments.put("machine","璇嗗埆");*/
-        boolean issucess = edgStorageCageDetailsService.identWorn(arguments);
-        return Result.build(200,"鎴愬姛",issucess);
+    public Result<String> identControls(@RequestBody IdentWornRequest request) {
+        return Result.build(200, "鎴愬姛", edgStorageCageDetailsService.identControls(request));
     }
 
     @ApiOperation("纾ㄨ竟浠诲姟 鍙傛暟()")
     @PostMapping("/selectEdgTask")
     @ResponseBody
     public Result selectEdgTask(@RequestBody Map<String, String> arguments) {
-        String line=arguments.get("line");
-        List<Map<String,Object>> EdgTasks = taskCacheService.selectEdgInfo(line);
-        return Result.build(200,"鎴愬姛",EdgTasks);
+        String line = arguments.get("line");
+        List<Map<String, Object>> EdgTasks = taskCacheService.selectEdgInfo(line);
+        return Result.build(200, "鎴愬姛", EdgTasks);
     }
 
 }
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/mapper/TaskCacheMapper.xml b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/mapper/TaskCacheMapper.xml
index e19d670..8ddf253 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/mapper/TaskCacheMapper.xml
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/mapper/TaskCacheMapper.xml
@@ -13,6 +13,7 @@
         FROM task_cache
         <where>
             end_cell = #{line}
+            and deleted = 0
             AND task_type in
             <foreach collection="taskTypes" item="item" open='(' close=')' separator=','>
                 #{item}
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 d175125..23d5a6f 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
@@ -506,10 +506,10 @@
         }
         //鑾峰彇鍑虹墖浠诲姟琛ㄤ腑鐘舵�佷负鐮存崯鐨勬暟鎹�
         List<BigStorageCageOutTask> outDamageTaskInfoList = bigStorageCageOutTaskService.list(new LambdaQueryWrapper<BigStorageCageOutTask>()
-                .eq(BigStorageCageOutTask::getTaskState, Const.GLASS_STATE_DAMAGE_TAKE));
+                .in(BigStorageCageOutTask::getTaskState, Const.GLASS_STATE_DAMAGE_TAKE));
         if (CollectionUtils.isNotEmpty(outDamageTaskInfoList)) {
             log.info("鑾峰彇鍑虹墖浠诲姟琛ㄤ腑鐮存崯鐨勭幓鐠冧俊鎭瘂}", outDamageTaskInfoList);
-            bigStorageCageOutTaskService.remove(new LambdaQueryWrapper<BigStorageCageOutTask>().eq(BigStorageCageOutTask::getTaskState, Const.GLASS_STATE_DAMAGE_TAKE));
+            bigStorageCageOutTaskService.remove(new LambdaQueryWrapper<BigStorageCageOutTask>().in(BigStorageCageOutTask::getTaskState, Const.GLASS_STATE_DAMAGE_TAKE));
             List<String> glassIdList = outDamageTaskInfoList.stream().map(BigStorageCageOutTask::getGlassId).collect(Collectors.toList());
             //绉婚櫎閽㈠寲涓嬬墖琛ㄦ暟鎹�
             temperingGlassInfoService.remove(new LambdaQueryWrapper<TemperingGlassInfo>().in(TemperingGlassInfo::getGlassId, glassIdList));
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/controller/DownGlassInfoController.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/controller/DownGlassInfoController.java
index f469396..5df4ca3 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/controller/DownGlassInfoController.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/controller/DownGlassInfoController.java
@@ -1,5 +1,6 @@
 package com.mes.downglassinfo.controller;
 
+import com.mes.downglassinfo.entity.DownGlassInfo;
 import com.mes.downglassinfo.entity.request.DownGlassInfoRequest;
 import com.mes.downglassinfo.service.DownGlassInfoService;
 import com.mes.utils.Result;
@@ -26,7 +27,14 @@
     @PostMapping("/setDownGlassInfoRequest")
     @ApiOperation(value = "璁剧疆钀芥灦鐜荤拑鏌ヨ鍙傛暟", notes = "璁剧疆钀芥灦鐜荤拑鏌ヨ鍙傛暟")
     public Result<String> setDownGlassInfoRequest(@RequestBody DownGlassInfoRequest request) {
-        return Result.success(downGlassInfoService.setDownGlassInfoRequest(request));
+        Result.success(downGlassInfoService.setDownGlassInfoRequest(request));
+        return Result.build(200, "鏌ヨ鎴愬姛", "1");
+
+    }
+
+    @PostMapping("/downGlassPrint")
+    public Result downGlassPrint(@RequestBody DownGlassInfo downGlassInfo) {
+        return Result.build(200,"鏌ヨ鎴愬姛",downGlassInfoService.downGlassPrint(downGlassInfo));
     }
 
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/request/DownGlassInfoRequest.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/request/DownGlassInfoRequest.java
index e0cc79a..89cdbed 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/request/DownGlassInfoRequest.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/request/DownGlassInfoRequest.java
@@ -34,14 +34,14 @@
     /**
      * 寮�濮嬫椂闂�
      */
-    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd")
     private Date beginDate;
 
     /**
      * 缁撴潫鏃堕棿
      */
-    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd")
     private Date endDate;
 
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java
index 6ec9b41..022cb19 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java
@@ -1,7 +1,6 @@
 package com.mes.downglassinfo.service.impl;
 
 import cn.smallbun.screw.core.util.CollectionUtils;
-import cn.smallbun.screw.core.util.CollectionUtils;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -27,8 +26,9 @@
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
-import java.util.HashMap;import java.util.Map;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 @Service
@@ -105,6 +105,7 @@
         BeanUtils.copyProperties(details, downGlassInfo);
         //鑾峰彇褰撳墠娴佺▼鍗℃渶澶х墖搴�
         downGlassInfo.setSequence(this.getMaxSequenceByFlowCardId(details.getFlowCardId(), details.getLayer()) + 1);
+        downGlassInfo.setWorkStationId(Const.G13_WORK_STATION);
         this.save(downGlassInfo);
         //鐢熸垚浠诲姟淇℃伅 骞跺悜plc鍙戦�佸嚭鐗囦换鍔�
         GlassInfo glassInfo = new GlassInfo();
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java
index 2f2a7aa..c966ac5 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java
@@ -1,6 +1,7 @@
 package com.mes.downworkstation.controller;
 
 
+import com.mes.common.utils.RedisUtil;
 import com.mes.downworkstation.entity.DownWorkstation;
 import com.mes.downworkstation.entity.request.DownWorkRequest;
 import com.mes.downworkstation.service.DownWorkstationService;
@@ -11,6 +12,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
 import java.util.List;
 import java.util.Map;
 
@@ -32,6 +34,8 @@
     private DownWorkstationService downWorkstationService;
     @Autowired
     private GlassInfoService glassInfoService;
+    @Resource
+    private RedisUtil redisUtil;
 
     @ApiOperation("鑾峰彇宸ヤ綅淇℃伅")
     @GetMapping("/getone")
@@ -127,6 +131,13 @@
         return Result.build(200, "鏇存崲鎴愬姛", downWorkstationService.closeAlarmSignal());
     }
 
+    @ApiOperation("鏄惁鑷姩鎵撳嵃")
+    @PostMapping("/autoPrint")
+    public Result autoPrint(Boolean flag) {
+        downWorkstationService.autoPrint(flag);
+        return Result.build(200, "淇敼鎴愬姛", redisUtil.getCacheObject("autoPrint"));
+    }
+
 
 }
 
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationService.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationService.java
index 51c1f71..461935d 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationService.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationService.java
@@ -79,4 +79,6 @@
     boolean updateDownWorkstationstate(DownWorkstation downWorkstation);
 
     String closeAlarmSignal();
+
+    void autoPrint(Boolean flag);
 }
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 76d1dc5..fffa235 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
@@ -5,13 +5,12 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.yulichang.query.MPJQueryWrapper;
 import com.mes.common.S7object;
+import com.mes.common.utils.RedisUtil;
 import com.mes.damage.entity.Damage;
 import com.mes.damage.service.DamageService;
 import com.mes.device.PlcParameterObject;
 import com.mes.downglassinfo.entity.DownGlassInfo;
 import com.mes.downglassinfo.mapper.DownGlassInfoMapper;
-import com.mes.downglassinfo.service.DownGlassInfoService;
-import com.mes.downglassinfo.service.DownGlassTaskService;
 import com.mes.downworkstation.entity.DownWorkstation;
 import com.mes.downworkstation.entity.DownWorkstationTask;
 import com.mes.downworkstation.entity.DownWorkstionAndDownGlassinfo;
@@ -25,6 +24,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -39,11 +39,7 @@
     @Autowired(required = false)
     private DownWorkstationTaskMapper downWorkstationTaskMapper;
     @Autowired
-    private DownGlassInfoService downGlassInfoService;
-    @Autowired
     private DownGlassInfoMapper downGlassInfoMapper;
-    @Autowired
-    private DownGlassTaskService downGlassTaskService;
     @Autowired
     private GlassInfoService glassInfoService;
     @Autowired
@@ -51,6 +47,8 @@
 
     @Autowired
     private DownWorkstationTaskService downWorkstationTaskService;
+    @Resource
+    private RedisUtil redisUtil;
 
     //    @Override
 //    public List<DownWorkstation> gettwoDownWorkstations() {
@@ -88,9 +86,9 @@
             item.put("width", downWorkstionAndDownGlassinfo.getTotalwidth());
             item.put("fillColor", "yellow");
             item.put("content", downWorkstionAndDownGlassinfo.getFlowCardId());
-            if(downWorkstionAndDownGlassinfo.getTotalQuantity()==downWorkstionAndDownGlassinfo.getRacksNumber()+downWorkstionAndDownGlassinfo.getRacksNumber()){
+            if (downWorkstionAndDownGlassinfo.getTotalQuantity() == downWorkstionAndDownGlassinfo.getRacksNumber() + downWorkstionAndDownGlassinfo.getRacksNumber()) {
                 item.put("fullCardColor", "red");
-            }else{
+            } else {
                 item.put("fullCardColor", "blue");
             }
 
@@ -223,5 +221,9 @@
         return "success";
     }
 
+    @Override
+    public void autoPrint(Boolean flag){
+        redisUtil.setCacheObject("autoPrint", flag);
+    }
 
 }
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 6ff5565..c324ce2 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
@@ -3,6 +3,7 @@
 import cn.hutool.core.lang.Assert;
 import cn.smallbun.screw.core.util.CollectionUtils;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.mes.common.S7object;
@@ -164,6 +165,31 @@
         log.info("鏈浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms", endDate, endDate.getTime() - startDate.getTime());
     }
 
+    /**
+     * 鏇存柊宸茬粦瀹氬伐浣嶆祦绋嬪崱鐨勭牬鎹�/鎷胯蛋鐨勬暟閲忎俊鎭�
+     */
+    @Scheduled(fixedDelay = 1000)
+    public void updateWorkStationOtherCount() {
+        Date startDate = new Date();
+        log.info("涓嬬墖鐮存洿鏂版崯鐜荤拑鏁伴噺浠诲姟寮�濮嬫墽琛屾椂闂达細{}", startDate);
+        //鑾峰彇宸茬粦瀹氭祦绋嬪崱鐨勫伐浣嶄俊鎭�
+        List<DownWorkstation> downWorkstationList = downWorkstationService.list(new LambdaQueryWrapper<DownWorkstation>()
+                .isNotNull(DownWorkstation::getFlowCardId)
+                .ne(DownWorkstation::getFlowCardId, "")
+                .orderByDesc(DownWorkstation::getWorkstationId));
+        for (DownWorkstation downWorkstation : downWorkstationList) {
+            //鏇存柊宸ヤ綅鍏朵粬鐜荤拑淇℃伅鐨勬暟閲�
+            QueryWrapper<Damage> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("process_id", downWorkstation.getFlowCardId());
+            queryWrapper.eq("technology_number", downWorkstation.getLayer());
+            int otherNumber = damageService.count(queryWrapper);
+            downWorkstationService.update(new LambdaUpdateWrapper<DownWorkstation>().set(DownWorkstation::getOtherNumber, otherNumber)
+                    .eq(DownWorkstation::getWorkstationId, downWorkstation.getWorkstationId()));
+        }
+        Date endDate = new Date();
+        log.info("涓嬬墖鐮存洿鏂版崯鐜荤拑鏁伴噺浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms", endDate, endDate.getTime() - startDate.getTime());
+    }
+
     public void inTo(String glassId, String requestWord, String currentSlot) {
         log.info("1銆佹寜鐓х幓鐠僫d:{}鑾峰彇鐜荤拑灏忕墖淇℃伅,褰撳墠鏍煎瓙涓�:{}", glassId, currentSlot);
         //娣诲姞杩涚墖浠诲姟  鏌ユ壘绌烘牸
@@ -253,6 +279,7 @@
         BeanUtils.copyProperties(glassInfo, downStorageCageDetails);
         downStorageCageDetails.setState(Const.GLASS_STATE_IN);
         downStorageCageDetails.setSlot(nearestEmpty.getSlot());
+        downStorageCageDetails.setDeviceId(nearestEmpty.getDeviceId());
         downStorageCageDetailsService.save(downStorageCageDetails);
         //        鐢熸垚杩涚墖浠诲姟
         initDownGlassTask(glassInfo, 0, nearestEmpty.getSlot(), Const.GLASS_CACHE_TYPE_IN);
@@ -275,6 +302,7 @@
             //鑾峰彇褰撳墠绗煎瓙绌烘牸淇℃伅
             DownStorageCage empty = downStorageCageService.selectCacheEmpty(Integer.parseInt(currentSlot), Boolean.TRUE);
             cageDetails.setSlot(empty.getSlot());
+            cageDetails.setDeviceId(empty.getDeviceId());
             tempList.add(cageDetails);
         }
         log.info("鍑虹墖2锛氱鍐呯幓鐠冪殑鏁版嵁(鍖呮嫭寰呰繘鐗�)鏈夛細{}", tempList);
@@ -378,8 +406,15 @@
                             .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 -> {
+                            double firstLength = Math.max(item.getWidth(), item.getHeight());
+                            double secondLength = Math.min(item.getWidth(), item.getHeight());
+                            return firstLength > maxWidth || secondLength > maxHeight;
+                        }).collect(Collectors.toList());
+                    }
                 } else {
-                    log.info("瀛樺湪鏈粦瀹氭祦绋嬪崱鏋跺瓙锛岀洿鎺ヨ幏鍙栫鍐呮墍鏈夌幓鐠�,涓旀湭缁戝畾鏋跺瓙鐨勭幓鐠冧俊鎭�");
+                    log.info("瀛樺湪鏈粦瀹氭祦绋嬪崱鏋跺瓙锛岀洿鎺ヨ幏鍙栫鍐呮墍鏈夌幓鐠�,涓旀湭缁戝畾鏋跺瓙鐨勭幓鐠冧俊鎭紙閮藉彲浠ュ嚭鐨勭幓鐠冿級");
                     //鑾峰彇绂佺敤鍙婇潪鏈満姊拌噦鐨勬灦瀛愮殑娴佺▼鍙峰強灞傛暟瀵瑰簲鐨勭幓鐠冧俊鎭�
                     List<DownWorkstation> downWorkstationOffList = downWorkstationService.list(new LambdaQueryWrapper<DownWorkstation>()
                             .and(i -> i.in(DownWorkstation::getWorkstationId, offWorkStationList).or().eq(DownWorkstation::getEnableState, Const.SLOT_OFF)));
@@ -409,6 +444,8 @@
             log.info("绗煎唴鐜荤拑鏃犳硶鎵ц鍑虹墖");
             return Boolean.FALSE;
         }
+        //鑾峰彇鍏蜂綋鍑洪偅涓�鐗囩幓鐠�
+        //tao:浜哄伐--> 鎵�鏈夋灦瀛愰兘鏈粦瀹氭椂杩涜缁戝畾 --->鏈夋湭缁戝畾鏋跺瓙鏃惰繘琛岀粦瀹� --->缁戝畾杩囨祦绋嬪崱鐨勭幓鐠�-->鐜荤拑娴佺▼鍗″灞�--->鐜荤拑娴佺▼鍗″崟灞�
         String tempGlassId = null;
         Boolean isNeedBind = Boolean.FALSE;
 
@@ -426,7 +463,7 @@
         loop:
         if (StringUtils.isBlank(tempGlassId)) {
             //鑾峰彇姝e湪钀芥灦鐨勭粦瀹氭祦绋嬪崱鐨勪俊鎭�(娴佺▼鍗°�佸眰鏁般�佽惤鏋舵暟閲�)
-            //todo:钀芥灦鐜荤拑鏁颁负0锛屽嵆浣跨粦瀹氫簡娴佺▼鍗★紝涔熸棤娉曟壘鍒板搴旂殑鏋跺瓙淇℃伅锛屽彧鑳介噸鏂扮粦瀹�
+            //钀芥灦鐜荤拑鏁颁负0锛屽嵆浣跨粦瀹氫簡娴佺▼鍗★紝涔熸棤娉曟壘鍒板搴旂殑鏋跺瓙淇℃伅锛屽彧鑳介噸鏂扮粦瀹�
             List<DownGlassInfoDTO> downGlassInfoDTOList = downGlassInfoService.queryWorkStationFlowCard(workList);
             List<String> downGlassFlowList = downGlassInfoDTOList.stream().map(item -> item.getFlowCardId() + ":" + item.getLayer()).collect(Collectors.toList());
             if (CollectionUtils.isEmpty(downGlassFlowList)) {
@@ -436,6 +473,7 @@
                 break loop;
             }
             //灏嗙瀛愬唴鐨勭幓鐠冭繘琛岃繃婊わ紝浠呰幏鍙栨棤娉曡惤鏋剁殑娴佺▼鍗$幓鐠�
+            //tao:褰撴湁绌烘灦鏃朵紭鍏堝绗煎唴鍙嚭鐗囦笖鏈粦鏋跺瓙鐨勭幓鐠冭繘鍑虹粦鏋跺苟鍑虹墖
             List<DownStorageCageDetails> noDownLoadList = list.stream().filter(item -> !downGlassFlowList.contains(item.getFlowCardId() + ":" + item.getLayer()))
                     .collect(Collectors.toList());
             if (CollectionUtils.isNotEmpty(noDownLoadList)) {
@@ -456,7 +494,7 @@
                 return Boolean.FALSE;
             }
             //灏嗙鍐呯幓鐠冪殑娴佺▼鍗�+灞傚彿 鍜岃惤鏋剁殑娴佺▼鍗� 鍘婚噸锛屽緱鍑哄睍绀烘棤娉曡惤鏋剁殑鐜荤拑锛屽垽鏂幓鐠冩暟鏄惁瓒呰繃闃堝��
-            //绗煎唴鐜荤拑鏄惁鍙惤鏋�:绗煎唴鏄惁鏈夐渶瑕佷腑绌虹殑
+            //绗煎唴鐜荤拑鏄惁鍙惤鏋�:绗煎唴鏄惁鏈夐渶瑕佷腑绌�
             List<DownStorageCageDetails> multiLayerList = list.stream().filter(item -> item.getTotalLayer() >= 2).collect(Collectors.toList());
             if (CollectionUtils.isNotEmpty(multiLayerList)) {
                 for (DownStorageCageDetails item : multiLayerList) {
@@ -473,7 +511,7 @@
                         break loop;
                     }
                     Integer sequence = downGlassInfoService.queryMaxSequence(item.getFlowCardId(), item.getLayer());
-                    log.info("鑾峰彇褰撳墠鐜荤拑闇�瑕佹斁鐨勬搴忥細绗煎唴鍚屾祦绋� 鍚屽眰鏁扮殑閫氳揪娆″簭+1:{}", sequence);
+                    log.info("鑾峰彇褰撳墠鐜荤拑闇�瑕佹斁鐨勬搴忥細绗煎唴鍚屾祦绋� 鍚屽眰鏁扮殑钀芥灦娆″簭+1:{}", sequence);
                     DownGlassInfo downGlassInfo = downGlassInfoService.getOne(new LambdaQueryWrapper<DownGlassInfo>()
                             .eq(DownGlassInfo::getFlowCardId, downGlassInfoDTO.getFlowCardId())
                             .eq(DownGlassInfo::getLayer, downGlassInfoDTO.getLayer()).eq(DownGlassInfo::getSequence, sequence));
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 b81afcb..1d5a150 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
@@ -48,7 +48,7 @@
         ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("unloadglass");
         if (sendwServer != null) {
             for (WebSocketServer webserver : sendwServer) {
-                if (webserver != null&&webserver.session.isOpen()) {
+                if (webserver != null && webserver.session.isOpen()) {
                     log.info("宸插彂閫�");
                     webserver.sendMessage(jsonObject.toString());
                 }
@@ -60,13 +60,13 @@
     public void sendGlassInfoData() {
         log.info("鍙戦�佸伐浣嶆樉绀哄浘淇℃伅1");
         JSONObject jsonObject2 = new JSONObject();
-        List<Map<String, Object>> glassinfodata = downWorkstationService.getTotalGlassDimensionsByWorkstation(1,3);
-        jsonObject2.append("glassinfo",glassinfodata);
+        List<Map<String, Object>> glassinfodata = downWorkstationService.getTotalGlassDimensionsByWorkstation(1, 3);
+        jsonObject2.append("glassinfo", glassinfodata);
         log.info(jsonObject2.toString());
         ArrayList<WebSocketServer> sendwServer2 = WebSocketServer.sessionMap.get("unloadglass2");
         if (sendwServer2 != null) {
             for (WebSocketServer webserver : sendwServer2) {
-                if (webserver != null&&webserver.session.isOpen()) {
+                if (webserver != null && webserver.session.isOpen()) {
                     webserver.sendMessage(jsonObject2.toString());
                 }
             }
@@ -77,35 +77,35 @@
     public void sendGlassInfoData2() {
         log.info("鍙戦�佸伐浣嶆樉绀哄浘淇℃伅2");
         JSONObject jsonObject3 = new JSONObject();
-        List<Map<String, Object>> glassinfodata2 = downWorkstationService.getTotalGlassDimensionsByWorkstation(4,6);
-        jsonObject3.append("glassinfo2",glassinfodata2);
+        List<Map<String, Object>> glassinfodata2 = downWorkstationService.getTotalGlassDimensionsByWorkstation(4, 6);
+        jsonObject3.append("glassinfo2", glassinfodata2);
         log.info(jsonObject3.toString());
         ArrayList<WebSocketServer> sendwServer3 = WebSocketServer.sessionMap.get("unloadglass3");
         if (sendwServer3 != null) {
             for (WebSocketServer webserver : sendwServer3) {
-                if (webserver != null&&webserver.session.isOpen()) {
+                if (webserver != null && webserver.session.isOpen()) {
                     webserver.sendMessage(jsonObject3.toString());
                 }
             }
         }
     }
 
-   @Scheduled(fixedDelay = 2000)
+    @Scheduled(fixedDelay = 2000)
     public void sendDownStorageCages() {
         log.info("鍙戦�佺紦瀛樼幓鐠冧俊鎭�");
         JSONObject jsonObject4 = new JSONObject();
-        List<Map<String, Object>> list=downStorageCageService.selectDownStorageCages();
-        jsonObject4.append("params2",list);
-       log.info(jsonObject4.toString());
-       ArrayList<WebSocketServer> sendwServer4 = WebSocketServer.sessionMap.get("downcache");
-       if (sendwServer4 != null) {
-           for (WebSocketServer webserver : sendwServer4) {
-               if (webserver != null && webserver.session.isOpen()) {
-                   webserver.sendMessage(jsonObject4.toString());
-               }
-           }
-       }
-   }
+        List<Map<String, Object>> list = downStorageCageService.selectDownStorageCages();
+        jsonObject4.append("params2", list);
+        log.info(jsonObject4.toString());
+        ArrayList<WebSocketServer> sendwServer4 = WebSocketServer.sessionMap.get("downcache");
+        if (sendwServer4 != null) {
+            for (WebSocketServer webserver : sendwServer4) {
+                if (webserver != null && webserver.session.isOpen()) {
+                    webserver.sendMessage(jsonObject4.toString());
+                }
+            }
+        }
+    }
 
     @Scheduled(fixedDelay = 2000)
     public void sendDownGlassInfo() {
@@ -129,6 +129,16 @@
         JSONObject jsonObject4 = new JSONObject();
         jsonObject4.append("downGlassInfos", listMap);
         jsonObject4.append("engineerIdList", engineerIdList);
+
+        //閽㈠寲寮�鍏�
+        boolean autoPrint=false;
+        if(redisUtil.getCacheObject("autoPrint")==null){
+            redisUtil.setCacheObject("autoPrint", false);
+        }else{
+            autoPrint=redisUtil.getCacheObject("autoPrint");
+        }
+        jsonObject4.append("autoPrint", autoPrint);
+
         ArrayList<WebSocketServer> sendwServer4 = WebSocketServer.sessionMap.get("unloadglass");
         if (sendwServer4 != null) {
             for (WebSocketServer webserver : sendwServer4) {
@@ -140,10 +150,10 @@
     }
 
     @Scheduled(fixedDelay = 1000)
-    public void isRun(){
+    public void isRun() {
         JSONObject jsonObject = new JSONObject();
         //姝e湪杩涜鐨勪换鍔�
-        List<DownWorkstation> downWorkstation = downWorkstationService.getoneDownWorkstations(1,6);
+        List<DownWorkstation> downWorkstation = downWorkstationService.getoneDownWorkstations(1, 6);
         jsonObject.append("downWorkstation", downWorkstation);
         ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("unLoadGlassIsRun");
         if (sendwServer != null) {

--
Gitblit v1.8.0