From 86467589b2fd4f1fb108edfa00227e793049e481 Mon Sep 17 00:00:00 2001
From: clll <1320612696@qq.com>
Date: 星期三, 13 九月 2023 16:43:34 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/CanadaMes

---
 CanadaMes-ui/src/utils/request.js                                                      |    3 
 CanadaMes-ui/vue.config.js                                                             |    1 
 CanadaMes-ui/src/views/home/index.vue                                                  |   62 
 CanadaMes-ui/src/router/index.js                                                       |    3 
 springboot-vue3/src/main/java/com/example/springboot/service/JdbcConnections.java      |   70 +
 CanadaMes-ui/src/views/Electrical/State.vue                                            |   47 
 CanadaMes-ui/src/views/Electrical/Parameter.vue                                        |   24 
 CanadaMes-ui/src/views/register/index.vue                                              |  184 ++--
 springboot-vue3/src/main/java/com/example/springboot/controller/SpianController.java   |   11 
 springboot-vue3/springboot-vue3.iml                                                    |    4 
 springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java            |   39 
 springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java            |   12 
 CanadaMes-ui/src/layout/index.vue                                                      |  154 +-
 CanadaMes-ui/package.json                                                              |    1 
 springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter.java       |    5 
 CanadaMes-ui/src/views/Electrical/alarm.vue                                            |   36 
 springboot-vue3/.idea/misc.xml                                                         |    3 
 springboot-vue3/pom.xml                                                                |    9 
 CanadaMes-ui/src/api/home.js                                                           |    4 
 CanadaMes-ui/src/views/Electrical/Action.vue                                           |   22 
 springboot-vue3/.idea/artifacts/springboot_vue3_war_exploded.xml                       |  150 +++
 CanadaMes-ui/package-lock.json                                                         |  320 +++++--
 springboot-vue3/src/main/java/com/example/springboot/component/Plcaction.java          |    8 
 CanadaMes-ui/src/views/Electrical/Sign.vue                                             |   30 
 springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java            |   29 
 CanadaMes-ui/.env                                                                      |    2 
 springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java           |   10 
 springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java         |  530 ++++++------
 springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java    |   16 
 CanadaMes-ui/src/lang/locales/zh-CN.json                                               |   31 
 /dev/null                                                                              |   13 
 springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java       |    4 
 springboot-vue3/src/main/resources/application.properties                              |    9 
 springboot-vue3/src/main/resources/sql/canadames.sql                                   |  605 +++++++++++++
 CanadaMes-ui/src/lang/locales/en-US.json                                               |   35 
 springboot-vue3/.idea/artifacts/springboot_vue3_war.xml                                |   14 
 springboot-vue3/src/main/java/com/example/springboot/AuthorityApplication.java         |    2 
 springboot-vue3/src/main/java/com/example/springboot/controller/DefaultController.java |    7 
 38 files changed, 1,806 insertions(+), 703 deletions(-)

diff --git a/CanadaMes-ui/.env b/CanadaMes-ui/.env
index 6bc3d03..a5fd3e6 100644
--- a/CanadaMes-ui/.env
+++ b/CanadaMes-ui/.env
@@ -1 +1 @@
-VUE_APP_BASE_API=/api
+VUE_APP_BASE_API=/api
\ No newline at end of file
diff --git a/CanadaMes-ui/package-lock.json b/CanadaMes-ui/package-lock.json
index 8a2960a..4409180 100644
--- a/CanadaMes-ui/package-lock.json
+++ b/CanadaMes-ui/package-lock.json
@@ -11,6 +11,7 @@
         "axios": "^0.19.2",
         "core-js": "^3.6.5",
         "element-ui": "^2.13.2",
+        "http-proxy-middleware": "^2.0.6",
         "js-cookie": "^3.0.1",
         "less": "^3.12.2",
         "less-loader": "^6.2.0",
@@ -1474,7 +1475,7 @@
       "version": "1.19.0",
       "resolved": "https://registry.npm.taobao.org/@types/body-parser/download/@types/body-parser-1.19.0.tgz?cache=0&sync_timestamp=1613378063000&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fbody-parser%2Fdownload%2F%40types%2Fbody-parser-1.19.0.tgz",
       "integrity": "sha1-BoWzxH6zAG/+0RfN1VFkth+AU48=",
-      "dev": true,
+      "devOptional": true,
       "dependencies": {
         "@types/connect": "*",
         "@types/node": "*"
@@ -1484,7 +1485,7 @@
       "version": "3.4.34",
       "resolved": "https://registry.npm.taobao.org/@types/connect/download/@types/connect-3.4.34.tgz?cache=0&sync_timestamp=1613378229103&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fconnect%2Fdownload%2F%40types%2Fconnect-3.4.34.tgz",
       "integrity": "sha1-FwpAIjptZmAG2TyhKK8r6x2bGQE=",
-      "dev": true,
+      "devOptional": true,
       "dependencies": {
         "@types/node": "*"
       }
@@ -1500,26 +1501,27 @@
       }
     },
     "node_modules/@types/express": {
-      "version": "4.17.11",
-      "resolved": "https://registry.npm.taobao.org/@types/express/download/@types/express-4.17.11.tgz?cache=0&sync_timestamp=1613378493388&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fexpress%2Fdownload%2F%40types%2Fexpress-4.17.11.tgz",
-      "integrity": "sha1-3r48qm+OX82pa0e9VOL0DE7llUU=",
-      "dev": true,
+      "version": "4.17.17",
+      "resolved": "https://registry.npmmirror.com/@types/express/-/express-4.17.17.tgz",
+      "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==",
+      "devOptional": true,
       "dependencies": {
         "@types/body-parser": "*",
-        "@types/express-serve-static-core": "^4.17.18",
+        "@types/express-serve-static-core": "^4.17.33",
         "@types/qs": "*",
         "@types/serve-static": "*"
       }
     },
     "node_modules/@types/express-serve-static-core": {
-      "version": "4.17.18",
-      "resolved": "https://registry.npm.taobao.org/@types/express-serve-static-core/download/@types/express-serve-static-core-4.17.18.tgz",
-      "integrity": "sha1-g3HiYPQODhygwRapr82UJvoJTEA=",
-      "dev": true,
+      "version": "4.17.36",
+      "resolved": "https://registry.npmmirror.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.36.tgz",
+      "integrity": "sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==",
+      "devOptional": true,
       "dependencies": {
         "@types/node": "*",
         "@types/qs": "*",
-        "@types/range-parser": "*"
+        "@types/range-parser": "*",
+        "@types/send": "*"
       }
     },
     "node_modules/@types/glob": {
@@ -1533,10 +1535,9 @@
       }
     },
     "node_modules/@types/http-proxy": {
-      "version": "1.17.5",
-      "resolved": "https://registry.npm.taobao.org/@types/http-proxy/download/@types/http-proxy-1.17.5.tgz",
-      "integrity": "sha1-wgPF5uncaCDSekDrHlEccKIgQj0=",
-      "dev": true,
+      "version": "1.17.11",
+      "resolved": "https://registry.npmmirror.com/@types/http-proxy/-/http-proxy-1.17.11.tgz",
+      "integrity": "sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==",
       "dependencies": {
         "@types/node": "*"
       }
@@ -1561,7 +1562,7 @@
       "version": "1.3.2",
       "resolved": "https://registry.npm.taobao.org/@types/mime/download/@types/mime-1.3.2.tgz?cache=0&sync_timestamp=1613379303907&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fmime%2Fdownload%2F%40types%2Fmime-1.3.2.tgz",
       "integrity": "sha1-k+Jb+e51/g/YC1lLxP6w6GIRG1o=",
-      "dev": true
+      "devOptional": true
     },
     "node_modules/@types/minimatch": {
       "version": "3.0.3",
@@ -1578,8 +1579,7 @@
     "node_modules/@types/node": {
       "version": "14.14.31",
       "resolved": "https://registry.npm.taobao.org/@types/node/download/@types/node-14.14.31.tgz?cache=0&sync_timestamp=1613758409994&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-14.14.31.tgz",
-      "integrity": "sha1-cihr0z0TeqDRUtR+x8F2JWPTQFU=",
-      "dev": true
+      "integrity": "sha1-cihr0z0TeqDRUtR+x8F2JWPTQFU="
     },
     "node_modules/@types/normalize-package-data": {
       "version": "2.4.0",
@@ -1597,19 +1597,29 @@
       "version": "6.9.5",
       "resolved": "https://registry.npm.taobao.org/@types/qs/download/@types/qs-6.9.5.tgz",
       "integrity": "sha1-Q0cRvdSete5p2QwdZ8NUqajssYs=",
-      "dev": true
+      "devOptional": true
     },
     "node_modules/@types/range-parser": {
       "version": "1.2.3",
       "resolved": "https://registry.npm.taobao.org/@types/range-parser/download/@types/range-parser-1.2.3.tgz",
       "integrity": "sha1-fuMwunyq+5gJC+zoal7kQRWQTCw=",
-      "dev": true
+      "devOptional": true
+    },
+    "node_modules/@types/send": {
+      "version": "0.17.1",
+      "resolved": "https://registry.npmmirror.com/@types/send/-/send-0.17.1.tgz",
+      "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==",
+      "devOptional": true,
+      "dependencies": {
+        "@types/mime": "^1",
+        "@types/node": "*"
+      }
     },
     "node_modules/@types/serve-static": {
       "version": "1.13.9",
       "resolved": "https://registry.npm.taobao.org/@types/serve-static/download/@types/serve-static-1.13.9.tgz",
       "integrity": "sha1-qs8oqFoF7imhH7fD6tk1rFbzPk4=",
-      "dev": true,
+      "devOptional": true,
       "dependencies": {
         "@types/mime": "^1",
         "@types/node": "*"
@@ -6032,8 +6042,7 @@
     "node_modules/eventemitter3": {
       "version": "4.0.7",
       "resolved": "https://registry.npm.taobao.org/eventemitter3/download/eventemitter3-4.0.7.tgz",
-      "integrity": "sha1-Lem2j2Uo1WRO9cWVJqG0oHMGFp8=",
-      "dev": true
+      "integrity": "sha1-Lem2j2Uo1WRO9cWVJqG0oHMGFp8="
     },
     "node_modules/events": {
       "version": "3.2.0",
@@ -6583,7 +6592,6 @@
       "version": "1.13.2",
       "resolved": "https://registry.npm.taobao.org/follow-redirects/download/follow-redirects-1.13.2.tgz",
       "integrity": "sha1-3XPI7/wScoulz0JZ12DqX7g+MUc=",
-      "dev": true,
       "engines": {
         "node": ">=4.0"
       },
@@ -7272,7 +7280,6 @@
       "version": "1.18.1",
       "resolved": "https://registry.npm.taobao.org/http-proxy/download/http-proxy-1.18.1.tgz",
       "integrity": "sha1-QBVB8FNIhLv5UmAzTnL4juOXZUk=",
-      "dev": true,
       "dependencies": {
         "eventemitter3": "^4.0.0",
         "follow-redirects": "^1.0.0",
@@ -7283,18 +7290,87 @@
       }
     },
     "node_modules/http-proxy-middleware": {
-      "version": "0.19.1",
-      "resolved": "https://registry.npm.taobao.org/http-proxy-middleware/download/http-proxy-middleware-0.19.1.tgz",
-      "integrity": "sha1-GDx9xKoUeRUDBkmMIQza+WCApDo=",
-      "dev": true,
+      "version": "2.0.6",
+      "resolved": "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz",
+      "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==",
       "dependencies": {
-        "http-proxy": "^1.17.0",
-        "is-glob": "^4.0.0",
-        "lodash": "^4.17.11",
-        "micromatch": "^3.1.10"
+        "@types/http-proxy": "^1.17.8",
+        "http-proxy": "^1.18.1",
+        "is-glob": "^4.0.1",
+        "is-plain-obj": "^3.0.0",
+        "micromatch": "^4.0.2"
       },
       "engines": {
-        "node": ">=4.0.0"
+        "node": ">=12.0.0"
+      },
+      "peerDependencies": {
+        "@types/express": "^4.17.13"
+      },
+      "peerDependenciesMeta": {
+        "@types/express": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/http-proxy-middleware/node_modules/braces": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz",
+      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+      "dependencies": {
+        "fill-range": "^7.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/http-proxy-middleware/node_modules/fill-range": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz",
+      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+      "dependencies": {
+        "to-regex-range": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/http-proxy-middleware/node_modules/is-number": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
+      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+      "engines": {
+        "node": ">=0.12.0"
+      }
+    },
+    "node_modules/http-proxy-middleware/node_modules/is-plain-obj": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz",
+      "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==",
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/http-proxy-middleware/node_modules/micromatch": {
+      "version": "4.0.5",
+      "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz",
+      "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+      "dependencies": {
+        "braces": "^3.0.2",
+        "picomatch": "^2.3.1"
+      },
+      "engines": {
+        "node": ">=8.6"
+      }
+    },
+    "node_modules/http-proxy-middleware/node_modules/to-regex-range": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
+      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+      "dependencies": {
+        "is-number": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=8.0"
       }
     },
     "node_modules/http-signature": {
@@ -7913,7 +7989,6 @@
       "version": "2.1.1",
       "resolved": "https://registry.npm.taobao.org/is-extglob/download/is-extglob-2.1.1.tgz",
       "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
-      "devOptional": true,
       "engines": {
         "node": ">=0.10.0"
       }
@@ -7931,7 +8006,6 @@
       "version": "4.0.1",
       "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-4.0.1.tgz",
       "integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=",
-      "devOptional": true,
       "dependencies": {
         "is-extglob": "^2.1.1"
       },
@@ -9895,10 +9969,9 @@
       "dev": true
     },
     "node_modules/picomatch": {
-      "version": "2.2.2",
-      "resolved": "https://registry.npm.taobao.org/picomatch/download/picomatch-2.2.2.tgz",
-      "integrity": "sha1-IfMz6ba46v8CRo9RRupAbTRfTa0=",
-      "optional": true,
+      "version": "2.3.1",
+      "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz",
+      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
       "engines": {
         "node": ">=8.6"
       }
@@ -11159,8 +11232,7 @@
     "node_modules/requires-port": {
       "version": "1.0.0",
       "resolved": "https://registry.npm.taobao.org/requires-port/download/requires-port-1.0.0.tgz",
-      "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
-      "dev": true
+      "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
     },
     "node_modules/resize-observer-polyfill": {
       "version": "1.5.1",
@@ -13754,6 +13826,21 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/webpack-dev-server/node_modules/http-proxy-middleware": {
+      "version": "0.19.1",
+      "resolved": "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz",
+      "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==",
+      "dev": true,
+      "dependencies": {
+        "http-proxy": "^1.17.0",
+        "is-glob": "^4.0.0",
+        "lodash": "^4.17.11",
+        "micromatch": "^3.1.10"
+      },
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
     "node_modules/webpack-dev-server/node_modules/is-absolute-url": {
       "version": "3.0.3",
       "resolved": "https://registry.npm.taobao.org/is-absolute-url/download/is-absolute-url-3.0.3.tgz",
@@ -15501,7 +15588,7 @@
       "version": "1.19.0",
       "resolved": "https://registry.npm.taobao.org/@types/body-parser/download/@types/body-parser-1.19.0.tgz?cache=0&sync_timestamp=1613378063000&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fbody-parser%2Fdownload%2F%40types%2Fbody-parser-1.19.0.tgz",
       "integrity": "sha1-BoWzxH6zAG/+0RfN1VFkth+AU48=",
-      "dev": true,
+      "devOptional": true,
       "requires": {
         "@types/connect": "*",
         "@types/node": "*"
@@ -15511,7 +15598,7 @@
       "version": "3.4.34",
       "resolved": "https://registry.npm.taobao.org/@types/connect/download/@types/connect-3.4.34.tgz?cache=0&sync_timestamp=1613378229103&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fconnect%2Fdownload%2F%40types%2Fconnect-3.4.34.tgz",
       "integrity": "sha1-FwpAIjptZmAG2TyhKK8r6x2bGQE=",
-      "dev": true,
+      "devOptional": true,
       "requires": {
         "@types/node": "*"
       }
@@ -15527,26 +15614,27 @@
       }
     },
     "@types/express": {
-      "version": "4.17.11",
-      "resolved": "https://registry.npm.taobao.org/@types/express/download/@types/express-4.17.11.tgz?cache=0&sync_timestamp=1613378493388&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fexpress%2Fdownload%2F%40types%2Fexpress-4.17.11.tgz",
-      "integrity": "sha1-3r48qm+OX82pa0e9VOL0DE7llUU=",
-      "dev": true,
+      "version": "4.17.17",
+      "resolved": "https://registry.npmmirror.com/@types/express/-/express-4.17.17.tgz",
+      "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==",
+      "devOptional": true,
       "requires": {
         "@types/body-parser": "*",
-        "@types/express-serve-static-core": "^4.17.18",
+        "@types/express-serve-static-core": "^4.17.33",
         "@types/qs": "*",
         "@types/serve-static": "*"
       }
     },
     "@types/express-serve-static-core": {
-      "version": "4.17.18",
-      "resolved": "https://registry.npm.taobao.org/@types/express-serve-static-core/download/@types/express-serve-static-core-4.17.18.tgz",
-      "integrity": "sha1-g3HiYPQODhygwRapr82UJvoJTEA=",
-      "dev": true,
+      "version": "4.17.36",
+      "resolved": "https://registry.npmmirror.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.36.tgz",
+      "integrity": "sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==",
+      "devOptional": true,
       "requires": {
         "@types/node": "*",
         "@types/qs": "*",
-        "@types/range-parser": "*"
+        "@types/range-parser": "*",
+        "@types/send": "*"
       }
     },
     "@types/glob": {
@@ -15560,10 +15648,9 @@
       }
     },
     "@types/http-proxy": {
-      "version": "1.17.5",
-      "resolved": "https://registry.npm.taobao.org/@types/http-proxy/download/@types/http-proxy-1.17.5.tgz",
-      "integrity": "sha1-wgPF5uncaCDSekDrHlEccKIgQj0=",
-      "dev": true,
+      "version": "1.17.11",
+      "resolved": "https://registry.npmmirror.com/@types/http-proxy/-/http-proxy-1.17.11.tgz",
+      "integrity": "sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==",
       "requires": {
         "@types/node": "*"
       }
@@ -15588,7 +15675,7 @@
       "version": "1.3.2",
       "resolved": "https://registry.npm.taobao.org/@types/mime/download/@types/mime-1.3.2.tgz?cache=0&sync_timestamp=1613379303907&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fmime%2Fdownload%2F%40types%2Fmime-1.3.2.tgz",
       "integrity": "sha1-k+Jb+e51/g/YC1lLxP6w6GIRG1o=",
-      "dev": true
+      "devOptional": true
     },
     "@types/minimatch": {
       "version": "3.0.3",
@@ -15605,8 +15692,7 @@
     "@types/node": {
       "version": "14.14.31",
       "resolved": "https://registry.npm.taobao.org/@types/node/download/@types/node-14.14.31.tgz?cache=0&sync_timestamp=1613758409994&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-14.14.31.tgz",
-      "integrity": "sha1-cihr0z0TeqDRUtR+x8F2JWPTQFU=",
-      "dev": true
+      "integrity": "sha1-cihr0z0TeqDRUtR+x8F2JWPTQFU="
     },
     "@types/normalize-package-data": {
       "version": "2.4.0",
@@ -15624,19 +15710,29 @@
       "version": "6.9.5",
       "resolved": "https://registry.npm.taobao.org/@types/qs/download/@types/qs-6.9.5.tgz",
       "integrity": "sha1-Q0cRvdSete5p2QwdZ8NUqajssYs=",
-      "dev": true
+      "devOptional": true
     },
     "@types/range-parser": {
       "version": "1.2.3",
       "resolved": "https://registry.npm.taobao.org/@types/range-parser/download/@types/range-parser-1.2.3.tgz",
       "integrity": "sha1-fuMwunyq+5gJC+zoal7kQRWQTCw=",
-      "dev": true
+      "devOptional": true
+    },
+    "@types/send": {
+      "version": "0.17.1",
+      "resolved": "https://registry.npmmirror.com/@types/send/-/send-0.17.1.tgz",
+      "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==",
+      "devOptional": true,
+      "requires": {
+        "@types/mime": "^1",
+        "@types/node": "*"
+      }
     },
     "@types/serve-static": {
       "version": "1.13.9",
       "resolved": "https://registry.npm.taobao.org/@types/serve-static/download/@types/serve-static-1.13.9.tgz",
       "integrity": "sha1-qs8oqFoF7imhH7fD6tk1rFbzPk4=",
-      "dev": true,
+      "devOptional": true,
       "requires": {
         "@types/mime": "^1",
         "@types/node": "*"
@@ -19319,8 +19415,7 @@
     "eventemitter3": {
       "version": "4.0.7",
       "resolved": "https://registry.npm.taobao.org/eventemitter3/download/eventemitter3-4.0.7.tgz",
-      "integrity": "sha1-Lem2j2Uo1WRO9cWVJqG0oHMGFp8=",
-      "dev": true
+      "integrity": "sha1-Lem2j2Uo1WRO9cWVJqG0oHMGFp8="
     },
     "events": {
       "version": "3.2.0",
@@ -19788,8 +19883,7 @@
     "follow-redirects": {
       "version": "1.13.2",
       "resolved": "https://registry.npm.taobao.org/follow-redirects/download/follow-redirects-1.13.2.tgz",
-      "integrity": "sha1-3XPI7/wScoulz0JZ12DqX7g+MUc=",
-      "dev": true
+      "integrity": "sha1-3XPI7/wScoulz0JZ12DqX7g+MUc="
     },
     "for-in": {
       "version": "1.0.2",
@@ -20353,7 +20447,6 @@
       "version": "1.18.1",
       "resolved": "https://registry.npm.taobao.org/http-proxy/download/http-proxy-1.18.1.tgz",
       "integrity": "sha1-QBVB8FNIhLv5UmAzTnL4juOXZUk=",
-      "dev": true,
       "requires": {
         "eventemitter3": "^4.0.0",
         "follow-redirects": "^1.0.0",
@@ -20361,15 +20454,60 @@
       }
     },
     "http-proxy-middleware": {
-      "version": "0.19.1",
-      "resolved": "https://registry.npm.taobao.org/http-proxy-middleware/download/http-proxy-middleware-0.19.1.tgz",
-      "integrity": "sha1-GDx9xKoUeRUDBkmMIQza+WCApDo=",
-      "dev": true,
+      "version": "2.0.6",
+      "resolved": "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz",
+      "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==",
       "requires": {
-        "http-proxy": "^1.17.0",
-        "is-glob": "^4.0.0",
-        "lodash": "^4.17.11",
-        "micromatch": "^3.1.10"
+        "@types/http-proxy": "^1.17.8",
+        "http-proxy": "^1.18.1",
+        "is-glob": "^4.0.1",
+        "is-plain-obj": "^3.0.0",
+        "micromatch": "^4.0.2"
+      },
+      "dependencies": {
+        "braces": {
+          "version": "3.0.2",
+          "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz",
+          "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+          "requires": {
+            "fill-range": "^7.0.1"
+          }
+        },
+        "fill-range": {
+          "version": "7.0.1",
+          "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz",
+          "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+          "requires": {
+            "to-regex-range": "^5.0.1"
+          }
+        },
+        "is-number": {
+          "version": "7.0.0",
+          "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
+          "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
+        },
+        "is-plain-obj": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz",
+          "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA=="
+        },
+        "micromatch": {
+          "version": "4.0.5",
+          "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz",
+          "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+          "requires": {
+            "braces": "^3.0.2",
+            "picomatch": "^2.3.1"
+          }
+        },
+        "to-regex-range": {
+          "version": "5.0.1",
+          "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
+          "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+          "requires": {
+            "is-number": "^7.0.0"
+          }
+        }
       }
     },
     "http-signature": {
@@ -20851,8 +20989,7 @@
     "is-extglob": {
       "version": "2.1.1",
       "resolved": "https://registry.npm.taobao.org/is-extglob/download/is-extglob-2.1.1.tgz",
-      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
-      "devOptional": true
+      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
     },
     "is-fullwidth-code-point": {
       "version": "3.0.0",
@@ -20864,7 +21001,6 @@
       "version": "4.0.1",
       "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-4.0.1.tgz",
       "integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=",
-      "devOptional": true,
       "requires": {
         "is-extglob": "^2.1.1"
       }
@@ -22471,10 +22607,9 @@
       "dev": true
     },
     "picomatch": {
-      "version": "2.2.2",
-      "resolved": "https://registry.npm.taobao.org/picomatch/download/picomatch-2.2.2.tgz",
-      "integrity": "sha1-IfMz6ba46v8CRo9RRupAbTRfTa0=",
-      "optional": true
+      "version": "2.3.1",
+      "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz",
+      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
     },
     "pify": {
       "version": "4.0.1",
@@ -23553,8 +23688,7 @@
     "requires-port": {
       "version": "1.0.0",
       "resolved": "https://registry.npm.taobao.org/requires-port/download/requires-port-1.0.0.tgz",
-      "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
-      "dev": true
+      "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
     },
     "resize-observer-polyfill": {
       "version": "1.5.1",
@@ -25717,6 +25851,18 @@
             }
           }
         },
+        "http-proxy-middleware": {
+          "version": "0.19.1",
+          "resolved": "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz",
+          "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==",
+          "dev": true,
+          "requires": {
+            "http-proxy": "^1.17.0",
+            "is-glob": "^4.0.0",
+            "lodash": "^4.17.11",
+            "micromatch": "^3.1.10"
+          }
+        },
         "is-absolute-url": {
           "version": "3.0.3",
           "resolved": "https://registry.npm.taobao.org/is-absolute-url/download/is-absolute-url-3.0.3.tgz",
diff --git a/CanadaMes-ui/package.json b/CanadaMes-ui/package.json
index 895a0f4..f49cf5a 100644
--- a/CanadaMes-ui/package.json
+++ b/CanadaMes-ui/package.json
@@ -11,6 +11,7 @@
     "axios": "^0.19.2",
     "core-js": "^3.6.5",
     "element-ui": "^2.13.2",
+    "http-proxy-middleware": "^2.0.6",
     "js-cookie": "^3.0.1",
     "less": "^3.12.2",
     "less-loader": "^6.2.0",
diff --git a/CanadaMes-ui/src/api/home.js b/CanadaMes-ui/src/api/home.js
index 224c6c9..fa70d72 100644
--- a/CanadaMes-ui/src/api/home.js
+++ b/CanadaMes-ui/src/api/home.js
@@ -43,9 +43,9 @@
     })
 }
 
-export function UpdateTask(types,shelfrack) {
+export function UpdateTask(types,glassid,shelfrack) {
     return request({
-        url: '/home/UpdateTask?types=' + types + '&shelfrack='+shelfrack,
+        url: '/home/UpdateTask?types=' + types + '&glassid='+glassid+'&shelfrack='+shelfrack,
         method: 'get',
         data :""
     })
diff --git a/CanadaMes-ui/src/lang/locales/en-US.json b/CanadaMes-ui/src/lang/locales/en-US.json
index a5ab536..9d1bac8 100644
--- a/CanadaMes-ui/src/lang/locales/en-US.json
+++ b/CanadaMes-ui/src/lang/locales/en-US.json
@@ -173,7 +173,36 @@
   "Distribute": "Distribute",
   "Search": "Search",
   "dvstate": {
-    "automatic": "automatic",
-    "manual": "manual"
-  }
+    "鑷姩": "automatic",
+    "鎵嬪姩": "manual"
+  },
+  "langUsernameLabel": "Username",
+  "langPasswordLabel": "Password",
+  "langPasswordPlaceholder": "Please enter your password",
+  "langConfirmPasswordLabel": "Confirm Password",
+  "langConfirmPasswordPlaceholder": "Please confirm your password",
+  "langEmailLabel": "Email",
+  "langQQLabel": "QQ",
+  "langQQPlaceholder": "Please enter your QQ number",
+  "langPhoneNumberLabel": "Phone Number",
+  "langPhoneNumberPlaceholder": "Please enter your phone number",
+  "langUsernameRequiredMessage": "Please enter your username",
+  "langUsernameLengthMessage": "Username length should be between 5 and 15 characters",
+  "langPasswordRequiredMessage": "Please enter your password",
+  "langPasswordLengthMessage": "Password length should be between 5 and 15 characters",
+  "langEmailRequiredMessage": "Please enter your email",
+  "langEmailFormatMessage": "Invalid email format",
+  "langRegisterButton": "Register",
+  "langResetButton": "Reset",
+  "langCancelButton": "Cancel",
+  "langRegisterSuccessMessage": "Registration successful",
+  "today": "today",
+  "yesterday": "yesterday",
+  "week": "week",
+  "shijian": "date",
+  "Pick a day": "Pick a day",
+  "alarmid": "id",
+  "alacontent": "content",
+  "time-on": "time-on",
+  "End-Time": "End-Time"
 }
\ No newline at end of file
diff --git a/CanadaMes-ui/src/lang/locales/zh-CN.json b/CanadaMes-ui/src/lang/locales/zh-CN.json
index 61af71b..c8d6f5c 100644
--- a/CanadaMes-ui/src/lang/locales/zh-CN.json
+++ b/CanadaMes-ui/src/lang/locales/zh-CN.json
@@ -175,5 +175,34 @@
   "dvstate": {
     "automatic": "鑷姩",
     "manual": "鎵嬪姩"
-  }
+  },
+  "langUsernameLabel": "鐢ㄦ埛鍚�",
+  "langPasswordLabel": "瀵嗙爜",
+  "langPasswordPlaceholder": "璇疯緭鍏ュ瘑鐮�",
+  "langConfirmPasswordLabel": "纭瀵嗙爜",
+  "langConfirmPasswordPlaceholder": "璇风‘璁ゅ瘑鐮�",
+  "langEmailLabel": "閭",
+  "langQQLabel": "QQ",
+  "langQQPlaceholder": "璇疯緭鍏Q鍙风爜",
+  "langPhoneNumberLabel": "鎵嬫満鍙风爜",
+  "langPhoneNumberPlaceholder": "璇疯緭鍏ユ墜鏈哄彿鐮�",
+  "langUsernameRequiredMessage": "璇疯緭鍏ョ敤鎴峰悕",
+  "langUsernameLengthMessage": "鐢ㄦ埛鍚嶉暱搴﹀湪5鍒�15涓瓧绗︿箣闂�",
+  "langPasswordRequiredMessage": "璇疯緭鍏ュ瘑鐮�",
+  "langPasswordLengthMessage": "瀵嗙爜闀垮害鍦�5鍒�15涓瓧绗︿箣闂�",
+  "langEmailRequiredMessage": "璇疯緭鍏ラ偖绠�",
+  "langEmailFormatMessage": "閭鏍煎紡涓嶆纭�",
+  "langRegisterButton": "娉ㄥ唽",
+  "langResetButton": "閲嶇疆",
+  "langCancelButton": "鍙栨秷",
+  "langRegisterSuccessMessage": "娉ㄥ唽鎴愬姛",
+  "today": "浠婂ぉ",
+  "yesterday": "鏄ㄥぉ",
+  "week": "涓�鍛ㄥ墠",
+  "shijian": "鏃ユ湡",
+  "Pick a day": "閫夋嫨鏃ユ湡",
+  "alarmid": "id",
+  "alacontent": "鎶ヨ鍐呭",
+  "time-on": "寮�濮嬫椂闂�",
+  "End-Time": "缁撴潫鏃堕棿"
 }
\ No newline at end of file
diff --git a/CanadaMes-ui/src/layout/index.vue b/CanadaMes-ui/src/layout/index.vue
index 9ab850b..b029768 100644
--- a/CanadaMes-ui/src/layout/index.vue
+++ b/CanadaMes-ui/src/layout/index.vue
@@ -1,7 +1,7 @@
 <template>
-  <el-container style="flex: 1;height: 100%;">
-    <div style="width: 200px;background-color: #222f3e;height: 100%;" :style="{ width: isCollapse ? '70px' : '250px' }">
-      <el-aside :width="isCollapse ? '70px' : '250px'">
+  <el-container style="flex: 1;height:100%;">
+    <div style="width: 200px;background-color: #222f3e" :style="{width: isCollapse?'70px':'250px'}">
+      <el-aside :width="isCollapse?'70px':'250px'">
         <el-col :gutter="20">
           <el-row :span="4">
             <div class="logo" @click="goToHome">
@@ -9,9 +9,10 @@
             </div>
           </el-row>
           <el-row :span="20">
-            <el-menu :default-active="activePath" class="el-menu-vertical-demo" background-color="#222f3e"
-              text-color="#fff" active-text-color="#ffd04b" :collapse="isCollapse" :unique-opened="true"
-              :collapse-transition="false" :router="true">
+            <el-menu :default-active="activePath" class="el-menu-vertical-demo"
+                      background-color="#222f3e" text-color="#fff" active-text-color="#ffd04b"
+                      :collapse="isCollapse" :unique-opened="true"
+                      :collapse-transition="false" :router="true">
               <!-- <el-menu-item index="/" @click="goToHome">
                 <template slot="title">
                
@@ -30,9 +31,10 @@
                   <span>{{ item.name }}</span>
                 </template>
                 <!--浜岀骇鑿滃崟-->
-
-                <el-menu-item :index="'/' + menu.router" v-for="menu in item.menuLists" :key="menu.id"
-                  @click="addTag(menu.router)">
+              
+                <el-menu-item :index="'/'+menu.router"
+                              v-for="menu in item.menuLists" :key="menu.id"
+                              @click="addTag(menu.router)">
                   <template slot="title">
                     <!--鍥炬爣-->
                     <i :class="menu.icon"></i>
@@ -48,22 +50,19 @@
     </div>
     <el-container>
       <el-header class="header-container">
-
-        <el-menu :default-active="activePath1" class="el-menu-demo" mode="horizontal" background-color="#576574"
-          text-color="#fff" active-text-color="#ffd04b">
+        
+        <el-menu :default-active="activePath1" class="el-menu-demo" mode="horizontal"
+                 background-color="#576574" text-color="#fff" active-text-color="#ffd04b">
           <div class="header-left">
-            <el-button :icon="isCollapse ? 'el-icon-s-unfold' : 'el-icon-s-fold'" @click="toggleCollapse"
-              style="height:30px;"></el-button>
+            <el-button :icon="isCollapse ? 'el-icon-s-unfold' : 'el-icon-s-fold'" @click="toggleCollapse" style="height:30px;"></el-button>
           </div>
           <div class="tagContainer" style="display: flex;">
-            <tag v-for="(tag, index) in tags" :key="index" :tag="tag" @removeTag="removeTag(index)"
-              @switchTag="switchTag(index)"></tag>
-          </div>
+  <tag v-for="(tag, index) in tags" :key="index" :tag="tag" @removeTag="removeTag(index)" @switchTag="switchTag(index)"></tag>
+</div>
           <template>
-            <el-submenu index="1" class="custom-submenu">
+            <el-submenu index="1" class="custom-submenu"  >
               <template slot="title">
-                <el-avatar src="../assets/emi.png"
-                  style="width:20px;height:20px;margin-top:30px;background-color: white;"></el-avatar>
+                <el-avatar src="../assets/emi.png"   style="width:20px;height:20px;margin-top:30px;background-color: white;"></el-avatar>
               </template>
               <el-menu-item index="1-1" @click="logout">{{ $t('exit') }}</el-menu-item>
               <el-menu-item index="1-2" @click="showChangePasswordDialog">{{ $t('changePassword') }}</el-menu-item>
@@ -92,7 +91,7 @@
       </el-header>
       <el-main>
         <keep-alive>
-          <router-view />
+          <router-view/>
         </keep-alive>
       </el-main>
     </el-container>
@@ -112,7 +111,7 @@
   name: "Layout",
   store,
   mixins: [LanguageMixin],
-  data () {
+  data() {
     return {
       activeTag: '', // 褰撳墠婵�娲荤殑鏍囩
       dialogVisible: false,
@@ -134,7 +133,7 @@
   components: {
     Tag
   },
-  created () {
+  created() {
     selectList(this.menuListForm).then(res => {
       this.menuList = res.data
 
@@ -150,48 +149,48 @@
     ...mapState('tags', ['tags'])
   },
   methods: {
-
+    
     logout: function () {
       removeToken()
       this.$router.push('/login')
     },
-    goToHome () {
+    goToHome() {
       this.$router.push('/home');
     },
     ...mapMutations('tags', ['addTag', 'removeTag', 'switchTag']),
-    addTag (router) {
-      let submenuItem;
-      const menuItem = this.menuList.find(item => item.menuLists.some(menu => menu.router === router));
-      if (menuItem) {
-        submenuItem = menuItem.menuLists.find(menu => menu.router === router);
-      }
-      if (submenuItem) {
-        const tag = submenuItem.router;
-        this.$store.commit('tags/addTag', tag);
-      }
-    },
+    addTag(router) {
+  let submenuItem;
+  const menuItem = this.menuList.find(item => item.menuLists.some(menu => menu.router === router));
+  if (menuItem) {
+    submenuItem = menuItem.menuLists.find(menu => menu.router === router);
+  }
+  if (submenuItem) {
+    const tag = submenuItem.router;
+    this.$store.commit('tags/addTag', tag);
+  }
+},
 
 
-    removeTag (index) {
+    removeTag(index) {
       this.$store.commit('tags/removeTag', index); // 浠� Vuex Store 涓Щ闄ゆ爣绛�
     },
-    showChangePasswordDialog () {
+    showChangePasswordDialog() {
       this.dialogVisible = true;
     },
-    savePassword () {
+    savePassword() {
       const { oldPassword, newPassword, confirmPassword } = this.formData;
 
       if (newPassword !== confirmPassword) {
         this.$message.error('鏂板瘑鐮佷笌纭瀵嗙爜涓嶄竴鑷�');
         return;
       }
-      changePassword({ oldPassword, newPassword }).then(res => {
+      changePassword({oldPassword, newPassword}).then(res => {
         console.log(res.data);
         this.$message.success('瀵嗙爜淇敼鎴愬姛');
         removeToken()
         this.$router.push('/login')
       }).catch(() => {
-
+       
       });
 
       this.dialogVisible = false;
@@ -199,7 +198,7 @@
     toggleCollapse: function () {
       this.isCollapse = !this.isCollapse;
     },
-    replaceChineseWithEnglish (menuData) {
+    replaceChineseWithEnglish(menuData) {
       // 瀹氫箟涓嫳鏂囧鐓у叧绯诲璞�
       const translation = {
         '鐢ㄦ埛绠$悊': 'UserManagement',
@@ -213,7 +212,8 @@
         '鏉冮檺鍒楄〃': 'PermissionList',
         '瑙掕壊绠$悊': 'RoleManagement',
         '瑙掕壊鍒楄〃': 'RoleList',
-        '鐢垫皵绠$悊': 'Electrical management'
+        '鐢垫皵绠$悊': 'Electrical management',
+        '涓婚〉': 'Home'
         // 鏍规嵁瀹為檯闇�姹傜户缁坊鍔犲鐓у叧绯�
       };
 
@@ -226,7 +226,7 @@
     }
   },
   watch: {
-    '$route' (to) {
+    '$route'(to) {
       // 鍒囨崲璺敱鏃舵洿鏂版縺娲荤殑鏍囩
       const tag = this.menuList.some(item => item.menuLists.some(menu => '/' + menu.router === to.path));
       if (tag) {
@@ -238,71 +238,69 @@
 </script>
 
 <style scoped lang="less">
-.el-menu--horizontal>.el-submenu .el-submenu__title {
+
+.el-menu--horizontal > .el-submenu .el-submenu__title {
   height: 45px !important;
 }
-
-.custom-submenu {
-
-
-  height: 90px !important;
+.custom-submenu  {
+ 
+ 
+ height: 90px   !important;
 }
 
 
 .header-container {
 
-  height: 30px !important;
-  /* 璁剧疆杈冨皬鐨勯珮搴� */
+ height: 30px   !important; /* 璁剧疆杈冨皬鐨勯珮搴� */
 }
 
 
 
 .header-left {
-  margin-right: auto;
-  width: 30px;
-
+ margin-right: auto;
+width:30px;
+ 
 }
-
 .el-aside {
-  height: 100vh;
-  background-color: #222f3e;
-  line-height: 200px;
+ height: 100vh;
+ background-color: #222f3e;
+ line-height: 200px;
 }
 
 .el-menu-vertical-demo:not(.el-menu--collapse) {
-  width: 200px;
-  min-height: 400px;
+ width: 200px;
+ min-height: 400px;
 }
 
 .el-menu-demo {
-  display: flex;
-  width: 100%;
-  height: 100%;
-  justify-content: flex-end;
-  align-items: center;
+ display: flex;
+ width: 100%;
+ height: 100%;
+ justify-content: flex-end;
+ align-items: center;
 
 }
 
 .el-menu-vertical-demo {
-  border: 0;
+ border: 0;
 }
 
 .logo {
-  background-color: #222f3e;
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  height: 60px;
+ background-color: #222f3e;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ height: 60px;
 
-  .sys-name {
-    font-size: 20px;
-    color: #ffffff;
-    margin-left: 10px;
-  }
+ .sys-name {
+   font-size: 20px;
+   color: #ffffff;
+   margin-left: 10px;
+ }
 }
 
 .el-header {
 
-  background-color: #576574;
+ background-color: #576574;
 }
 </style>
\ No newline at end of file
diff --git a/CanadaMes-ui/src/router/index.js b/CanadaMes-ui/src/router/index.js
index 7cc714b..a4d9ebf 100644
--- a/CanadaMes-ui/src/router/index.js
+++ b/CanadaMes-ui/src/router/index.js
@@ -97,7 +97,10 @@
   }
 ];
 
+
+
 const router = new VueRouter({
+  // base: '/canadames/',  
   routes
 });
 
diff --git a/CanadaMes-ui/src/utils/request.js b/CanadaMes-ui/src/utils/request.js
index c5b5a25..d115559 100644
--- a/CanadaMes-ui/src/utils/request.js
+++ b/CanadaMes-ui/src/utils/request.js
@@ -3,7 +3,8 @@
 
 const service = axios.create({
     baseURL: process.env.VUE_APP_BASE_API,
-    timeout: 5000
+    timeout: 5000,
+    withCredentials: true // 娣诲姞姝よ閰嶇疆
 })
 
 service.interceptors.response.use(
diff --git a/CanadaMes-ui/src/views/Electrical/Action.vue b/CanadaMes-ui/src/views/Electrical/Action.vue
index b53055a..9fe7ec2 100644
--- a/CanadaMes-ui/src/views/Electrical/Action.vue
+++ b/CanadaMes-ui/src/views/Electrical/Action.vue
@@ -2,13 +2,12 @@
   <div class="app">
     <!--闈㈠寘灞戝鑸尯鍩�-->
     <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb">
-      <router-link to="/home" tag="el-button" type="text">{{ $t('langHome') }}</router-link>
-      <el-button type="text">Electrical</el-button>
-      <router-link to="/Electrical/Parameter" tag="el-button" type="text">Parameter</router-link>
-      <router-link to="/Electrical/Action" tag="el-button" type="text">Action</router-link>
-      <router-link to="/Electrical/Sign" tag="el-button" type="text">Sign</router-link>
-      <router-link to="/Electrical/State" tag="el-button" type="text">State</router-link>
-      <router-link to="/Electrical/alarm" tag="el-button" type="text">Alarm</router-link>
+     
+      <router-link to="/Electrical/Parameter" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter') }}</router-link>
+    <router-link to="/Electrical/Action" tag="el-button" type="text" active-class="blue-button">{{ $t('Action') }}</router-link>
+    <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign') }}</router-link>
+    <router-link to="/Electrical/State" tag="el-button" type="text" active-class="blue-button">{{ $t('State') }}</router-link>
+    <router-link to="/Electrical/alarm" tag="el-button" type="text" active-class="blue-button">{{ $t('Alarm') }}</router-link>
     </el-breadcrumb>
     <div>Action</div>
     <el-form label-width="100px" style="display: flex;flex-wrap: wrap;" :model="{ messagepack }">
@@ -31,10 +30,11 @@
 import LanguageMixin from '../../lang/LanguageMixin'
 let socket;
 export default {
-  name: "action",
+  name: "Action",
   mixins: [LanguageMixin],
   data () {
     return {
+      activeButton: '',
       record: {
         params: [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
         canshu: [
@@ -111,6 +111,9 @@
     this.init();
   },
   methods: {
+    setActiveButton(buttonName) {
+    this.activeButton = buttonName;
+  },
     init () {
       let viewname = "action";
 
@@ -203,4 +206,7 @@
 .el-input__inner {
   border: none;
 }
+.blue-button {
+  background-color: skyblue;
+}
 </style>
\ No newline at end of file
diff --git a/CanadaMes-ui/src/views/Electrical/Parameter.vue b/CanadaMes-ui/src/views/Electrical/Parameter.vue
index 8dfa62b..0ef74f9 100644
--- a/CanadaMes-ui/src/views/Electrical/Parameter.vue
+++ b/CanadaMes-ui/src/views/Electrical/Parameter.vue
@@ -2,13 +2,11 @@
   <div class="app">
     <!-- 闈㈠寘灞戝鑸尯鍩� -->
     <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb">
-      <router-link to="/home" tag="el-button" type="text">{{ $t('langHome') }}</router-link>
-      <el-button type="text">Electrical</el-button>
-      <router-link to="/Electrical/Parameter" tag="el-button" type="text">Parameter</router-link>
-      <router-link to="/Electrical/Action" tag="el-button" type="text">Action</router-link>
-      <router-link to="/Electrical/Sign" tag="el-button" type="text">Sign</router-link>
-      <router-link to="/Electrical/State" tag="el-button" type="text">State</router-link>
-      <router-link to="/Electrical/alarm" tag="el-button" type="text">Alarm</router-link>
+      <router-link to="/Electrical/Parameter" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter') }}</router-link>
+    <router-link to="/Electrical/Action" tag="el-button" type="text" active-class="blue-button">{{ $t('Action') }}</router-link>
+    <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign') }}</router-link>
+    <router-link to="/Electrical/State" tag="el-button" type="text" active-class="blue-button">{{ $t('State') }}</router-link>
+    <router-link to="/Electrical/alarm" tag="el-button" type="text" active-class="blue-button">{{ $t('Alarm') }}</router-link>
     </el-breadcrumb>
 
     <div>Parameter</div>
@@ -31,11 +29,13 @@
 
 <script>
 let socket;
-
+import LanguageMixin from '../../lang/LanguageMixin'
 export default {
   name: "Parameter",
+  mixins: [LanguageMixin],
   data () {
     return {
+      activeButton: '',
       record: {
         params: [100, 200, 10, 10, 10, 10],
         xyData: [
@@ -70,6 +70,9 @@
     this.isButtonDisabled = true;
   },
   methods: {
+    setActiveButton(buttonName) {
+      this.activeButton = buttonName;
+    },
     initWebSocket () {
       let viewname = "Parameter";
 
@@ -156,7 +159,10 @@
   border: none;
 }
 
-
+.blue-button {
+  background-color: skyblue;
+  color: #fff;
+}
 #btn_div {
   width: 100%;
 }
diff --git a/CanadaMes-ui/src/views/Electrical/Sign.vue b/CanadaMes-ui/src/views/Electrical/Sign.vue
index 3252ddb..214872f 100644
--- a/CanadaMes-ui/src/views/Electrical/Sign.vue
+++ b/CanadaMes-ui/src/views/Electrical/Sign.vue
@@ -2,15 +2,18 @@
   <div class="app">
     <!--闈㈠寘灞戝鑸尯鍩�-->
     <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb">
-      <router-link to="/home" tag="el-button" type="text">{{ $t('langHome') }}</router-link>
-      <el-button type="text">{{ $t('Electrical') }}</el-button>
-      <router-link to="/Electrical/Parameter" tag="el-button" type="text">{{ $t('Parameter') }}</router-link>
-      <router-link to="/Electrical/Action" tag="el-button" type="text">{{ $t('Action') }}</router-link>
-      <router-link to="/Electrical/Sign" tag="el-button" type="text">{{ $t('Sign') }}</router-link>
-      <router-link to="/Electrical/State" tag="el-button" type="text">{{ $t('State') }}</router-link>
-      <router-link to="/Electrical/alarm" tag="el-button" type="text">{{ $t('Alarm') }}</router-link>
+      <router-link to="/Electrical/Parameter" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter')
+      }}</router-link>
+      <router-link to="/Electrical/Action" tag="el-button" type="text" active-class="blue-button">{{ $t('Action')
+      }}</router-link>
+      <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign')
+      }}</router-link>
+      <router-link to="/Electrical/State" tag="el-button" type="text" active-class="blue-button">{{ $t('State')
+      }}</router-link>
+      <router-link to="/Electrical/alarm" tag="el-button" type="text" active-class="blue-button">{{ $t('Alarm')
+      }}</router-link>
     </el-breadcrumb>
-    <div>Sign</div>
+    <div>{{ $t('Sign') }}</div>
     <div style="padding-right: 30px;display: flex;flex-wrap: wrap;" class="neir">
       <div class="kuai_sb" v-for="item in record.xyData" :key="item.name">
         <el-col class="deng" :class="getStatusClass(item.value)">
@@ -32,6 +35,7 @@
   mixins: [LanguageMixin],
   data () {
     return {
+      activeButton: '',
       record: {
         //瀹氫箟鏁扮粍锛屽苟娣诲姞榛樿鍊�
         params: [1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
@@ -148,6 +152,12 @@
     this.init();
   },
   methods: {
+    onButtonClick () {
+      this.isButtonClicked = true; // 灏嗘寜閽鑹茶缃负钃濊壊
+      setTimeout(() => {
+        this.isButtonClicked = false; // 閲嶇疆鎸夐挳棰滆壊
+      }, 500); // 杩欓噷鐨�500姣鏄牴鎹偍甯屾湜鎸夐挳棰滆壊鎸佺画澶氶暱鏃堕棿鏉ュ畾鐨勶紝鍙互鏍规嵁闇�姹傝繘琛岃皟鏁�
+    },
     //鏍规嵁璇诲彇PLC鐨勫�硷紝鏍规嵁鍚嶇О鏀瑰彉棰滆壊
     getStatusClass (zhuangtai) {
       if (zhuangtai === 0) {
@@ -289,4 +299,8 @@
 .yellow {
   background-color: yellow;
 }
+
+.blue-button {
+  background-color: skyblue;
+}
 </style>
\ No newline at end of file
diff --git a/CanadaMes-ui/src/views/Electrical/State.vue b/CanadaMes-ui/src/views/Electrical/State.vue
index cc82022..05245aa 100644
--- a/CanadaMes-ui/src/views/Electrical/State.vue
+++ b/CanadaMes-ui/src/views/Electrical/State.vue
@@ -2,22 +2,25 @@
   <div class="app">
     <!--闈㈠寘灞戝鑸尯鍩�-->
     <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb">
-      <router-link to="/home" tag="el-button" type="text">{{ $t('langHome') }}</router-link>
-      <el-button type="text">{{ $t('Electrical') }}</el-button>
-      <router-link to="/Electrical/Parameter" tag="el-button" type="text">{{ $t('Parameter') }}</router-link>
-      <router-link to="/Electrical/Action" tag="el-button" type="text">{{ $t('Action') }}</router-link>
-      <router-link to="/Electrical/Sign" tag="el-button" type="text">{{ $t('Sign') }}</router-link>
-      <router-link to="/Electrical/State" tag="el-button" type="text">{{ $t('State') }}</router-link>
-      <router-link to="/Electrical/alarm" tag="el-button" type="text">{{ $t('Alarm') }}</router-link>
+      <router-link to="/Electrical/Parameter" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter')
+      }}</router-link>
+      <router-link to="/Electrical/Action" tag="el-button" type="text" active-class="blue-button">{{ $t('Action')
+      }}</router-link>
+      <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign')
+      }}</router-link>
+      <router-link to="/Electrical/State" tag="el-button" type="text" active-class="blue-button">{{ $t('State')
+      }}</router-link>
+      <router-link to="/Electrical/alarm" tag="el-button" type="text" active-class="blue-button">{{ $t('Alarm')
+      }}</router-link>
     </el-breadcrumb>
-    <div>State</div>
+    <div>{{ $t('State') }}</div>
 
 
     <el-form label-width="100px" style="display: flex;flex-wrap: wrap;" :model="messagepack.data">
 
       <div class="kuai_div" v-for="item in this.record.xyData" :key="item.name">
         <el-input style="width: 280px;" class="in_mc" v-model="item.name"></el-input>
-        <el-input v-model="item.value" readonly="readonly" style="width: 80px;"></el-input>
+        <el-input v-model="item.value" readonly="readonly" style="width: 90px;"></el-input>
       </div>
 
 
@@ -38,6 +41,7 @@
   mixins: [LanguageMixin],
   data () {
     return {
+      activeButton: '',
       record: {
         params: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1,],
         xyData: [
@@ -80,8 +84,15 @@
   },
   created () {
     this.init();
+    this.replaceChineseWithEnglish();
   },
   methods: {
+    onButtonClick () {
+      this.isButtonClicked = true; // 灏嗘寜閽鑹茶缃负钃濊壊
+      setTimeout(() => {
+        this.isButtonClicked = false; // 閲嶇疆鎸夐挳棰滆壊
+      }, 500); // 杩欓噷鐨�500姣鏄牴鎹偍甯屾湜鎸夐挳棰滆壊鎸佺画澶氶暱鏃堕棿鏉ュ畾鐨勶紝鍙互鏍规嵁闇�姹傝繘琛岃皟鏁�
+    },
     init () {
       let viewname = "State";
 
@@ -139,11 +150,8 @@
     //璇█杞崲
     replaceChineseWithEnglish () {
       const translation = this.$t('dvstate');
-      this.localizedRoles = this.record.xyData.map(role => ({
-        ...role,
-        content: translation[role.content] || role.content
-      }));
-      console.log(this.localizedRoles);
+      this.record.xyData = this.record.xyData.map(item => { return { name: item.name, value: translation[item.value] || item.value }; });
+      console.log(translation);
     },
 
 
@@ -158,6 +166,11 @@
 </script>
 
 <style>
+* {
+  margin: 0px;
+  padding: 0px;
+}
+
 .kuai_div {
   width: 30%;
   margin-bottom: 15px;
@@ -168,7 +181,9 @@
 
 
   .el-input__inner {
+    text-align: center;
     border: 1 solid black;
+    padding: 0 10px;
   }
 
 
@@ -188,4 +203,8 @@
 #btn_div .el-button {
   float: right;
 }
+
+.blue-button {
+  background-color: skyblue;
+}
 </style>
diff --git a/CanadaMes-ui/src/views/Electrical/alarm.vue b/CanadaMes-ui/src/views/Electrical/alarm.vue
index 7b20441..fc53730 100644
--- a/CanadaMes-ui/src/views/Electrical/alarm.vue
+++ b/CanadaMes-ui/src/views/Electrical/alarm.vue
@@ -10,14 +10,14 @@
       <router-link to="/Electrical/State" tag="el-button" type="text">{{ $t('State') }}</router-link>
       <router-link to="/Electrical/alarm" tag="el-button" type="text">{{ $t('Alarm') }}</router-link>
     </el-breadcrumb>
-    <div>Alarm</div>
+    <div>{{ $t('Alarm') }}</div>
     <div class="block">
-      <span class="demonstration">鏃堕棿锛�</span>
-      <el-date-picker v-model="shijian1" type="datetime" placeholder="閫夋嫨鏃ユ湡鏃堕棿" align="right"
+      <span class="demonstration">{{ $t('shijian') }}锛�</span>
+      <el-date-picker v-model="shijian1" type="datetime" :placeholder="$t('Pick a day')" align="right"
         :picker-options="pickerOptions">
       </el-date-picker>
       ~
-      <el-date-picker v-model="shijian2" type="datetime" placeholder="閫夋嫨鏃ユ湡鏃堕棿" align="right"
+      <el-date-picker v-model="shijian2" type="datetime" :placeholder="$t('Pick a day')" align="right"
         :picker-options="pickerOptions">
       </el-date-picker>
       &nbsp;&nbsp;
@@ -25,13 +25,13 @@
     </div>
 
     <el-table :data="localizedRoles" style="width: 100%;" height="550">
-      <el-table-column prop="id" label="id" width="80">
+      <el-table-column prop="id" :label="$t('alarmid')" width="80">
       </el-table-column>
-      <el-table-column prop="content" label="content">
+      <el-table-column prop="content" :label="$t('alacontent')">
       </el-table-column>
-      <el-table-column prop="timeon" label="time-on">
+      <el-table-column prop="timeon" :label="$t('time-on')">
       </el-table-column>
-      <el-table-column prop="endTime" label="End Time">
+      <el-table-column prop="endTime" :label="$t('End-Time')">
       </el-table-column>
     </el-table>
   </div>
@@ -67,27 +67,33 @@
         pageSize: 10
       },
       pickerOptions: {
+
+        disabledDate (time) {
+          return time.getTime() > Date.now();
+        },
         shortcuts: [{
-          text: '浠婂ぉ',
+
+          text: this.$t('today'),
           onClick (picker) {
             picker.$emit('pick', new Date());
           }
-        }, {
-          text: '鏄ㄥぉ',
+        },
+        {
+          text: this.$t('yesterday'),
           onClick (picker) {
             const date = new Date();
             date.setTime(date.getTime() - 3600 * 1000 * 24);
             picker.$emit('pick', date);
           }
-        }, {
-          text: '涓�鍛ㄥ墠',
+        },
+        {
+          text: this.$t('week'),
           onClick (picker) {
             const date = new Date();
             date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
             picker.$emit('pick', date);
           }
-        }],
-
+        }]
       },
       shijian1: "",
       shijian2: "",
diff --git a/CanadaMes-ui/src/views/home/index.vue b/CanadaMes-ui/src/views/home/index.vue
index 4fcd763..f76e51d 100644
--- a/CanadaMes-ui/src/views/home/index.vue
+++ b/CanadaMes-ui/src/views/home/index.vue
@@ -164,8 +164,11 @@
                     <el-table-column prop="lengthWidth" label="Length and width"></el-table-column>
                     <el-table-column prop="coating" label="coating"></el-table-column>
                     <el-table-column label="Operate">
-                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" @click="endtask(0)">end
-                            task</el-button>
+                        <template slot-scope='scope'>
+                            <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
+                                @click="endtask(0, scope.row.glassId, scope.row.cell)">end
+                                task</el-button>
+                        </template>
                     </el-table-column>
                 </el-table>
                 <el-table :data="this.tasklist2" border style="width: 100%">
@@ -175,8 +178,11 @@
                     <el-table-column prop="lengthWidth" label="Length and width"></el-table-column>
                     <el-table-column prop="coating" label="coating"></el-table-column>
                     <el-table-column label="Operate">
-                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" @click="endtask(1)">end
-                            task</el-button>
+                        <template slot-scope='scope'>
+                            <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
+                                @click="endtask(1, scope.row.glassId, scope.row.cell)">end
+                                task</el-button>
+                        </template>
                     </el-table-column>
                 </el-table>
             </div>
@@ -262,7 +268,7 @@
                 <el-table-column prop="endTime" label="endTime"></el-table-column>
             </el-table>
         </el-dialog>
-        <el-dialog :visible.sync="dialogFormVisible3" title="Ordering Information">
+        <el-dialog :visible.sync="dialogFormVisible3" title="Cage Details">
             <el-table :data="this.cageinfo" border style="width: 100%;height: 700px;overflow: auto;">
                 <el-table-column :width="150" prop="cage" label="the grille number"></el-table-column>
                 <el-table-column prop="cell" label="cell"></el-table-column>
@@ -276,7 +282,7 @@
                         <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
                             @click="deleteglass(scope.row.glassId, scope.row.state)">delete</el-button>
                         <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
-                            @click="outglass(scope.row.glassId,scope.row.state)">out</el-button>
+                            @click="outglass(scope.row.glassId, scope.row.state)">out</el-button>
                     </template>
                 </el-table-column>
             </el-table>
@@ -324,8 +330,6 @@
             url: "../../img/bigcar01.png",
             car1: 150,
             car2: 242,
-            incell: "",
-            outcell: "",
             cageinfo: [],
             cage: 0
         };
@@ -362,7 +366,6 @@
                         this.car1 = 150 + 24.6 * obj.params[0][0];
                         this.car2 = 242 + 24.6 * obj.params[0][1];
                     }
-
                     this.tableData = obj.tableData[0];
                     this.cagelist1 = obj.cagelist1[0];
                     this.cagelist2 = obj.cagelist2[0];
@@ -370,12 +373,6 @@
                     this.cagelist4 = obj.cagelist4[0];
                     this.tasklist1 = obj.tasklist1[0];
                     this.tasklist2 = obj.tasklist2[0];
-                    if (this.tasklist1.length > 0) {
-                        this.incell = this.tasklist1[0]['cell'];
-                    }
-                    if (this.tasklist1.length > 0) {
-                        this.outcell = this.tasklist2[0]['cell'];
-                    }
                     this.alarm = obj.alarmmg[0];
 
                     SelectCageInfo(this.cage).then(res => {
@@ -461,8 +458,14 @@
                     if (res.data.message2 == 200) {
                         this.$message.success("Operation successful");
                         this.cancal();
-                    } else {
+                    } else if(res.data.message2 == 500) {
                         this.$message.success("There are currently tasks");
+                    }
+                    else if(res.data.message2 == 300) {
+                        this.$message.success("There is no such grid");
+                    }
+                    else if(res.data.message2 == 400) {
+                        this.$message.success("There is no such grid");
                     }
                 });
             }
@@ -499,21 +502,12 @@
             this.dialogFormVisible1 = false;
             this.form1 = {};
         },
-        endtask(type) {
-            if (type == 0) {
-                UpdateTask(type, this.incell).then(res => {
-                    if (res.data.message3 == 200) {
-                        this.$message.success("Operation successful");
-                    }
-                });
-            } else {
-                UpdateTask(type, this.outcell).then(res => {
-                    if (res.data.message3 == 200) {
-                        this.$message.success("Operation successful");
-                    }
-                });
-            }
-
+        endtask(type, glassid, cell) {
+            UpdateTask(type, glassid, cell).then(res => {
+                if (res.data.message3 == 200) {
+                    this.$message.success("Operation successful");
+                }
+            });
         },
         showcageinfo(cage) {
             this.cage = cage;
@@ -524,7 +518,7 @@
         },
         deleteglass(glassid, state) {
             if (state == 1) {
-                DeleteByGlassID(glassid).then(res=>{
+                DeleteByGlassID(glassid).then(res => {
                     if (res.data.message3 == 200) {
                         this.$message.success("Operation successful");
                     }
@@ -533,9 +527,9 @@
                 this.$message.success("No out allowed");
             }
         },
-        outglass(glassid,state){
+        outglass(glassid, state) {
             if (state == 1) {
-                OutByGlassID(glassid).then(res=>{
+                OutByGlassID(glassid).then(res => {
                     if (res.data.message3 == 200) {
                         this.$message.success("Operation successful");
                     }
diff --git a/CanadaMes-ui/src/views/register/index.vue b/CanadaMes-ui/src/views/register/index.vue
index 2deef30..ef2f0b6 100644
--- a/CanadaMes-ui/src/views/register/index.vue
+++ b/CanadaMes-ui/src/views/register/index.vue
@@ -1,58 +1,60 @@
 <template>
   <div class="login_container">
-    <div class="login_box">
-      <!--澶村儚鍖哄煙-->
-      <div class="avatar_box">
-        <img src="../../assets/emi.png">
-      </div>
-      <el-form ref="registerRef" :model="registerForm" label-width="80px" :rules="registerRules"
-               class="login_form">
-        <el-form-item label="鐢ㄦ埛鍚�" prop="username">
-          <el-input v-model="registerForm.username" placeholder="璇疯緭鍏ョ敤鎴峰悕"></el-input>
-        </el-form-item>
-        <el-form-item label="瀵嗙爜" prop="password1">
-          <el-input v-model="registerForm.password1" placeholder="璇疯緭鍏ュ瘑鐮�" type="password"></el-input>
-        </el-form-item>
-        <el-form-item label="纭瀵嗙爜" prop="password">
-          <el-input v-model="registerForm.password" placeholder="璇峰啀娆¤緭鍏ョ敤鎴峰悕" type="password"></el-input>
-        </el-form-item>
-        <el-form-item label="閭" prop="email">
-          <el-input v-model="registerForm.email" placeholder="璇疯緭鍏ラ偖绠�" type="text"></el-input>
-        </el-form-item>
-        <el-form-item label="QQ" prop="qq">
-          <el-input v-model="registerForm.qq" placeholder="璇疯緭鍏Q" type="text"></el-input>
-        </el-form-item>
-        <el-form-item label="鎵嬫満鍙风爜" prop="phone">
-          <el-input v-model="registerForm.phone" placeholder="璇疯緭鍏ユ墜鏈哄彿鐮�" type="text"></el-input>
-        </el-form-item>
-        <el-form-item>
-          <el-button type="primary" @click="register">娉ㄥ唽</el-button>
-          <el-button @click="reset">閲嶈</el-button>
-          <el-button @click="toLogin">鍙栨秷</el-button>
-        </el-form-item>
-      </el-form>
-    </div>
+  <div class="login_box">
+  <!--澶村儚鍖哄煙-->
+  <div class="avatar_box">
+  <img src="../../assets/emi.png">
   </div>
-</template>
-
-<script>
-import {register} from '../../api/user'
-
-export default {
+  <el-form ref="registerRef" :model="registerForm" label-width="80px" :rules="registerRules"
+  class="login_form">
+  <el-form-item :label="$t('langUsernameLabel')" prop="username">
+            <el-input v-model="registerForm.username" :placeholder="$t('langUsernamePlaceholder')"></el-input>
+  </el-form-item>
+  <el-form-item :label="$t('langPasswordLabel')" prop="password1">
+            <el-input v-model="registerForm.password1" :placeholder="$t('langPasswordPlaceholder')" type="password"></el-input>
+  </el-form-item>
+  <el-form-item :label="$t('langConfirmPasswordLabel')" prop="password">
+            <el-input v-model="registerForm.password" :placeholder="$t('langConfirmPasswordPlaceholder')" type="password"></el-input>
+  </el-form-item>
+  <el-form-item :label="$t('langEmailLabel')" prop="email">
+            <el-input v-model="registerForm.email" :placeholder="$t('langEmailPlaceholder')" type="text"></el-input>
+  </el-form-item>
+  <el-form-item :label="$t('langQQLabel')" prop="qq">
+            <el-input v-model="registerForm.qq" :placeholder="$t('langQQPlaceholder')" type="text"></el-input>
+  </el-form-item>
+  <el-form-item :label="$t('langPhoneNumberLabel')" prop="phone">
+            <el-input v-model="registerForm.phone" :placeholder="$t('langPhoneNumberPlaceholder')" type="text"></el-input>
+  </el-form-item>
+  <el-form-item>
+  <el-button type="primary" @click="register">{{$t('langRegisterButton')}}</el-button>
+            <el-button @click="reset">{{$t('langResetButton')}}</el-button>
+  <el-button @click="toLogin">{{$t('langCancelButton')}}</el-button>
+  </el-form-item>
+  </el-form>
+  </div>
+  </div>
+  </template>
+  
+  <script>
+  import {register} from '../../api/user'
+  import LanguageMixin from '../../lang/LanguageMixin'
+  
+  export default {
   name: 'Register',
+  mixins: [LanguageMixin],
   data() {
-    // 鑷畾涔夋牎楠岃鍒�
-    const validatePassword = (rule, value, callback) => {
-      if (this.registerForm.password1 !== this.registerForm.password) {
-        callback(new Error("涓ゆ杈撳叆瀵嗙爜涓嶄竴鑷�!"));
-      } else {
-        callback();
-      }
-    };
-    return {
-      registerForm: {},
-      registerRules: {
-        username: [
+  // 鑷畾涔夋牎楠岃鍒�
+  const validatePassword = (rule, value, callback) => {
+  if (this.registerForm.password1 !== this.registerForm.password) {
+  callback(new Error("涓ゆ杈撳叆瀵嗙爜涓嶄竴鑷�!"));
+  } else {
+  callback();
+  }
+  };
+  return {
+  registerForm: {},
+  registerRules: {
+    username: [
           {required: true, message: '璇疯緭鍏ョ敤鎴峰悕', trigger: 'blur'},
           {min: 5, max: 15, message: '闀垮害鍦� 5 鍒� 5 涓瓧绗�', trigger: 'blur'}
         ],
@@ -70,8 +72,8 @@
           {required: false, message: '璇疯緭鍏ラ偖绠�', trigger: 'blur'},
           {type: 'email', message: '璇疯緭鍏ユ纭牸寮忕殑閭鍦板潃', trigger: 'blur'}
         ]
-      }
-    }
+  }
+  }
   },
   methods: {
     register() {
@@ -83,23 +85,23 @@
         });
       })
     },
-    reset() {
-      this.$refs['registerRef'].resetFields();
-    },
-    toLogin() {
-      this.$router.push('/login')
-    }
+  reset() {
+  this.refs['registerRef'].resetFields();
+      },
+      toLogin() {
+        this.router.push('/login')
   }
-}
-</script>
-
-<style scoped lang="less">
-.login_container {
+  }
+  }
+  </script>
+  
+  <style scoped lang="less">
+  .login_container {
   background-color: #2b4b6b;
   height: 100%;
-}
-
-.login_box {
+  }
+  
+  .login_box {
   width: 450px;
   height: 550px;
   background-color: #fff;
@@ -108,38 +110,38 @@
   left: 50%;
   top: 50%;
   transform: translate(-50%, -50%);
-
+  
   .avatar_box {
-    height: 130px;
-    width: 130px;
-    border: 1px solid #eee;
+  height: 130px;
+  width: 130px;
+  border: 1px solid #eee;
+  border-radius: 50%;
+  padding: 10px;
+  box-shadow: 0 0 10px #ddd;
+  position: absolute;
+  left: 50%;
+  transform: translate(-50%, -50%);
+  background-color: #fff;
+  
+  img {
+    width: 100%;
+    height: 100%;
     border-radius: 50%;
-    padding: 10px;
-    box-shadow: 0 0 10px #ddd;
-    position: absolute;
-    left: 50%;
-    transform: translate(-50%, -50%);
-    background-color: #fff;
-
-    img {
-      width: 100%;
-      height: 100%;
-      border-radius: 50%;
-      background-color: #eee;
-    }
+    background-color: #eee;
   }
-}
-
-.btns {
+  }
+  }
+  
+  .btns {
   display: flex;
   justify-content: flex-end;
-}
-
-.login_form {
+  }
+  
+  .login_form {
   position: absolute;
   bottom: 0;
   width: 100%;
   padding: 0 20px;
   box-sizing: border-box;
-}
-</style>
+  }
+  </style>
\ No newline at end of file
diff --git a/CanadaMes-ui/vue.config.js b/CanadaMes-ui/vue.config.js
index b6c17bb..0e16427 100644
--- a/CanadaMes-ui/vue.config.js
+++ b/CanadaMes-ui/vue.config.js
@@ -13,6 +13,7 @@
                 pathRewrite: {
                     '^/api': ''
                 }
+                
             }
         }
     },
diff --git a/springboot-vue3/.idea/artifacts/springboot_vue3_war.xml b/springboot-vue3/.idea/artifacts/springboot_vue3_war.xml
new file mode 100644
index 0000000..d419cc3
--- /dev/null
+++ b/springboot-vue3/.idea/artifacts/springboot_vue3_war.xml
@@ -0,0 +1,14 @@
+<component name="ArtifactManager">
+  <artifact type="war" name="springboot-vue3:war">
+    <output-path>$PROJECT_DIR$/target</output-path>
+    <properties id="maven-jee-properties">
+      <options>
+        <module>springboot-vue3</module>
+        <packaging>war</packaging>
+      </options>
+    </properties>
+    <root id="archive" name="springboot-vue3-0.0.1-SNAPSHOT.war">
+      <element id="artifact" artifact-name="springboot-vue3:war exploded" />
+    </root>
+  </artifact>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/artifacts/springboot_vue3_war_exploded.xml b/springboot-vue3/.idea/artifacts/springboot_vue3_war_exploded.xml
new file mode 100644
index 0000000..96b4d65
--- /dev/null
+++ b/springboot-vue3/.idea/artifacts/springboot_vue3_war_exploded.xml
@@ -0,0 +1,150 @@
+<component name="ArtifactManager">
+  <artifact type="exploded-war" name="springboot-vue3:war exploded">
+    <output-path>$PROJECT_DIR$/target/springboot-vue3-0.0.1-SNAPSHOT</output-path>
+    <properties id="maven-jee-properties">
+      <options>
+        <exploded>true</exploded>
+        <module>springboot-vue3</module>
+        <packaging>war</packaging>
+      </options>
+    </properties>
+    <root id="root">
+      <element id="directory" name="WEB-INF">
+        <element id="directory" name="classes">
+          <element id="module-output" name="springboot-vue3" />
+        </element>
+        <element id="directory" name="lib">
+          <element id="library" level="project" name="Maven: org.springframework.boot:spring-boot-starter-web:2.3.2.RELEASE" />
+          <element id="library" level="project" name="Maven: org.springframework.boot:spring-boot-starter:2.3.2.RELEASE" />
+          <element id="library" level="project" name="Maven: org.springframework.boot:spring-boot:2.3.2.RELEASE" />
+          <element id="library" level="project" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.3.2.RELEASE" />
+          <element id="library" level="project" name="Maven: ch.qos.logback:logback-classic:1.2.3" />
+          <element id="library" level="project" name="Maven: ch.qos.logback:logback-core:1.2.3" />
+          <element id="library" level="project" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.13.3" />
+          <element id="library" level="project" name="Maven: org.slf4j:jul-to-slf4j:1.7.30" />
+          <element id="library" level="project" name="Maven: jakarta.annotation:jakarta.annotation-api:1.3.5" />
+          <element id="library" level="project" name="Maven: org.yaml:snakeyaml:1.26" />
+          <element id="library" level="project" name="Maven: org.springframework.boot:spring-boot-starter-json:2.3.2.RELEASE" />
+          <element id="library" level="project" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.11.1" />
+          <element id="library" level="project" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.11.1" />
+          <element id="library" level="project" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.11.1" />
+          <element id="library" level="project" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.3.2.RELEASE" />
+          <element id="library" level="project" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:9.0.37" />
+          <element id="library" level="project" name="Maven: org.glassfish:jakarta.el:3.0.3" />
+          <element id="library" level="project" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:9.0.37" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-web:5.2.8.RELEASE" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-beans:5.2.8.RELEASE" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-webmvc:5.2.8.RELEASE" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-aop:5.2.8.RELEASE" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-context:5.2.8.RELEASE" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-expression:5.2.8.RELEASE" />
+          <element id="library" level="project" name="Maven: mysql:mysql-connector-java:8.0.21" />
+          <element id="library" level="project" name="Maven: net.bytebuddy:byte-buddy:1.10.13" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-core:5.2.8.RELEASE" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-jcl:5.2.8.RELEASE" />
+          <element id="library" level="project" name="Maven: cn.hutool:hutool-all:5.5.4" />
+          <element id="library" level="project" name="Maven: org.hibernate.validator:hibernate-validator:6.1.5.Final" />
+          <element id="library" level="project" name="Maven: jakarta.validation:jakarta.validation-api:2.0.2" />
+          <element id="library" level="project" name="Maven: org.jboss.logging:jboss-logging:3.4.1.Final" />
+          <element id="library" level="project" name="Maven: com.fasterxml:classmate:1.5.1" />
+          <element id="library" level="project" name="Maven: io.jsonwebtoken:jjwt-api:0.10.7" />
+          <element id="library" level="project" name="Maven: io.jsonwebtoken:jjwt-impl:0.10.7" />
+          <element id="library" level="project" name="Maven: io.jsonwebtoken:jjwt-jackson:0.10.7" />
+          <element id="library" level="project" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.11.1" />
+          <element id="library" level="project" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.11.1" />
+          <element id="library" level="project" name="Maven: com.fasterxml.jackson.core:jackson-core:2.11.1" />
+          <element id="library" level="project" name="Maven: org.apache.shiro:shiro-spring-boot-starter:1.8.0" />
+          <element id="library" level="project" name="Maven: org.apache.shiro:shiro-spring:1.8.0" />
+          <element id="library" level="project" name="Maven: org.apache.shiro:shiro-core:1.8.0" />
+          <element id="library" level="project" name="Maven: org.apache.shiro:shiro-lang:1.8.0" />
+          <element id="library" level="project" name="Maven: org.apache.shiro:shiro-cache:1.8.0" />
+          <element id="library" level="project" name="Maven: org.apache.shiro:shiro-crypto-hash:1.8.0" />
+          <element id="library" level="project" name="Maven: org.apache.shiro:shiro-crypto-core:1.8.0" />
+          <element id="library" level="project" name="Maven: org.apache.shiro:shiro-crypto-cipher:1.8.0" />
+          <element id="library" level="project" name="Maven: org.apache.shiro:shiro-config-core:1.8.0" />
+          <element id="library" level="project" name="Maven: org.apache.shiro:shiro-config-ogdl:1.8.0" />
+          <element id="library" level="project" name="Maven: commons-beanutils:commons-beanutils:1.9.4" />
+          <element id="library" level="project" name="Maven: commons-collections:commons-collections:3.2.2" />
+          <element id="library" level="project" name="Maven: org.apache.shiro:shiro-event:1.8.0" />
+          <element id="library" level="project" name="Maven: org.apache.shiro:shiro-web:1.8.0" />
+          <element id="library" level="project" name="Maven: org.owasp.encoder:encoder:1.2.2" />
+          <element id="library" level="project" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.3.2.RELEASE" />
+          <element id="library" level="project" name="Maven: com.baomidou:mybatis-plus-boot-starter:3.2.0" />
+          <element id="library" level="project" name="Maven: com.baomidou:mybatis-plus:3.2.0" />
+          <element id="library" level="project" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.3.2.RELEASE" />
+          <element id="library" level="project" name="Maven: com.zaxxer:HikariCP:3.4.5" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-jdbc:5.2.8.RELEASE" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-tx:5.2.8.RELEASE" />
+          <element id="library" level="project" name="Maven: com.baomidou:mybatis-plus-core:3.2.0" />
+          <element id="library" level="project" name="Maven: com.baomidou:mybatis-plus-annotation:3.2.0" />
+          <element id="library" level="project" name="Maven: com.github.jsqlparser:jsqlparser:2.1" />
+          <element id="library" level="project" name="Maven: org.mybatis:mybatis:3.5.2" />
+          <element id="library" level="project" name="Maven: com.baomidou:mybatis-plus-generator:3.2.0" />
+          <element id="library" level="project" name="Maven: com.baomidou:mybatis-plus-extension:3.2.0" />
+          <element id="library" level="project" name="Maven: org.mybatis:mybatis-spring:2.0.2" />
+          <element id="library" level="project" name="Maven: org.springframework.boot:spring-boot-starter-freemarker:2.3.2.RELEASE" />
+          <element id="library" level="project" name="Maven: org.freemarker:freemarker:2.3.30" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-context-support:5.2.8.RELEASE" />
+          <element id="library" level="project" name="Maven: io.springfox:springfox-swagger2:2.9.2" />
+          <element id="library" level="project" name="Maven: io.swagger:swagger-annotations:1.5.20" />
+          <element id="library" level="project" name="Maven: io.swagger:swagger-models:1.5.20" />
+          <element id="library" level="project" name="Maven: io.springfox:springfox-spi:2.9.2" />
+          <element id="library" level="project" name="Maven: io.springfox:springfox-core:2.9.2" />
+          <element id="library" level="project" name="Maven: io.springfox:springfox-schema:2.9.2" />
+          <element id="library" level="project" name="Maven: io.springfox:springfox-swagger-common:2.9.2" />
+          <element id="library" level="project" name="Maven: io.springfox:springfox-spring-web:2.9.2" />
+          <element id="library" level="project" name="Maven: com.google.guava:guava:20.0" />
+          <element id="library" level="project" name="Maven: org.slf4j:slf4j-api:1.7.30" />
+          <element id="library" level="project" name="Maven: org.springframework.plugin:spring-plugin-core:1.2.0.RELEASE" />
+          <element id="library" level="project" name="Maven: org.springframework.plugin:spring-plugin-metadata:1.2.0.RELEASE" />
+          <element id="library" level="project" name="Maven: org.mapstruct:mapstruct:1.2.0.Final" />
+          <element id="library" level="project" name="Maven: io.springfox:springfox-swagger-ui:2.9.2" />
+          <element id="library" level="project" name="Maven: com.deepoove:poi-tl:1.12.1" />
+          <element id="library" level="project" name="Maven: org.apache.commons:commons-lang3:3.10" />
+          <element id="library" level="project" name="Maven: org.apache.poi:poi-ooxml:5.2.2" />
+          <element id="library" level="project" name="Maven: org.apache.poi:poi:5.2.2" />
+          <element id="library" level="project" name="Maven: commons-codec:commons-codec:1.14" />
+          <element id="library" level="project" name="Maven: org.apache.commons:commons-math3:3.6.1" />
+          <element id="library" level="project" name="Maven: com.zaxxer:SparseBitSet:1.2" />
+          <element id="library" level="project" name="Maven: org.apache.poi:poi-ooxml-lite:5.2.2" />
+          <element id="library" level="project" name="Maven: org.apache.xmlbeans:xmlbeans:5.0.3" />
+          <element id="library" level="project" name="Maven: org.apache.commons:commons-compress:1.21" />
+          <element id="library" level="project" name="Maven: commons-io:commons-io:2.11.0" />
+          <element id="library" level="project" name="Maven: com.github.virtuald:curvesapi:1.07" />
+          <element id="library" level="project" name="Maven: org.apache.logging.log4j:log4j-api:2.13.3" />
+          <element id="library" level="project" name="Maven: org.apache.commons:commons-collections4:4.4" />
+          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-transcoder:1.14" />
+          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-anim:1.14" />
+          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-css:1.14" />
+          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-ext:1.14" />
+          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-parser:1.14" />
+          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-svg-dom:1.14" />
+          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-awt-util:1.14" />
+          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:xmlgraphics-commons:2.6" />
+          <element id="library" level="project" name="Maven: commons-logging:commons-logging:1.0.4" />
+          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-bridge:1.14" />
+          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-script:1.14" />
+          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-dom:1.14" />
+          <element id="library" level="project" name="Maven: xml-apis:xml-apis:1.4.01" />
+          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-gvt:1.14" />
+          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-shared-resources:1.14" />
+          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-svggen:1.14" />
+          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-util:1.14" />
+          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-constants:1.14" />
+          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-i18n:1.14" />
+          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-xml:1.14" />
+          <element id="library" level="project" name="Maven: xml-apis:xml-apis-ext:1.3.04" />
+          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-codec:1.14" />
+          <element id="library" level="project" name="Maven: org.springframework.boot:spring-boot-starter-websocket:2.3.2.RELEASE" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-messaging:5.2.8.RELEASE" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-websocket:5.2.8.RELEASE" />
+          <element id="library" level="project" name="Maven: com.github.xingshuangs:iot-communication:1.4.2" />
+        </element>
+      </element>
+      <element id="directory" name="META-INF">
+        <element id="file-copy" path="$PROJECT_DIR$/target/springboot-vue3-0.0.1-SNAPSHOT/META-INF/MANIFEST.MF" />
+      </element>
+      <element id="javaee-facet-resources" facet="springboot-vue3/web/Web" />
+    </root>
+  </artifact>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/misc.xml b/springboot-vue3/.idea/misc.xml
index 3d3371a..774ef25 100644
--- a/springboot-vue3/.idea/misc.xml
+++ b/springboot-vue3/.idea/misc.xml
@@ -1,5 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
+  <component name="FrameworkDetectionExcludesConfiguration">
+    <file type="web" url="file://$PROJECT_DIR$" />
+  </component>
   <component name="MavenProjectsManager">
     <option name="originalFiles">
       <list>
diff --git a/springboot-vue3/pom.xml b/springboot-vue3/pom.xml
index 37d5977..881fe13 100644
--- a/springboot-vue3/pom.xml
+++ b/springboot-vue3/pom.xml
@@ -9,12 +9,13 @@
         <version>2.3.2.RELEASE</version>
         <relativePath/>
     </parent>
+<!--    <packaging>war</packaging>-->
 
-    <groupId>com.canadames</groupId>
-    <artifactId>canadames</artifactId>
+    <groupId>com.springboot-vue3</groupId>
+    <artifactId>springboot-vue3</artifactId>
     <version>0.0.1-SNAPSHOT</version>
-    <name>canadames</name>
-    <description>canadames System</description>
+    <name>springboot-vue3</name>
+    <description>springboot-vue3 System</description>
 
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
diff --git a/springboot-vue3/springboot-vue3.iml b/springboot-vue3/springboot-vue3.iml
index 79a8091..84a010a 100644
--- a/springboot-vue3/springboot-vue3.iml
+++ b/springboot-vue3/springboot-vue3.iml
@@ -3,7 +3,9 @@
   <component name="FacetManager">
     <facet type="web" name="Web">
       <configuration>
-        <webroots />
+        <webroots>
+          <root url="file://$MODULE_DIR$/src/main/webapp" relative="/" />
+        </webroots>
         <sourceRoots>
           <root url="file://$MODULE_DIR$/src/main/java" />
           <root url="file://$MODULE_DIR$/src/main/resources" />
diff --git a/springboot-vue3/src/main/java/com/example/springboot/AuthorityApplication.java b/springboot-vue3/src/main/java/com/example/springboot/AuthorityApplication.java
index b28c2d4..6976fae 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/AuthorityApplication.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/AuthorityApplication.java
@@ -6,7 +6,9 @@
 
 import com.example.springboot.component.WebSocketServer;
 
+
 @SpringBootApplication
+
 public class AuthorityApplication {
 
   public static void main(String[] args) {
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java
index 68fc478..65b6d28 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java
@@ -1,15 +1,24 @@
 package com.example.springboot.component;
 
+import java.sql.SQLException;
 import java.util.List;
-import com.example.springboot.service.SpianService;
-import com.example.springboot.mapper.AlarmMapper;
 
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.example.springboot.service.JdbcConnections;
+import com.example.springboot.service.SpianService;
+import com.example.springboot.entity.Glass;
+import com.example.springboot.mapper.AlarmMapper;
 
 public class PlcHold extends Thread {
 
   private AlarmMapper alarmMapper;
 
+  @Autowired
+  private JdbcConnections jdbcConnections;
+
   private SpianService spianService;
+
 
   @Override
   public void run() {
@@ -19,12 +28,20 @@
 
         Thread.sleep(500);
       } catch (InterruptedException e) {
-        // TODO Auto-generated catch block
+        //\\ TODO Auto-generated catch block
         e.printStackTrace();
       }
       spianService = WebSocketServer.applicationContext.getBean(SpianService.class);
-      //spianService.selectout("112");
-  
+      
+      jdbcConnections = WebSocketServer.applicationContext.getBean(JdbcConnections.class);
+      try {
+          Glass glass=jdbcConnections.selectGlass(112);
+          //System.out.println(glass.getOrderId());
+        } catch (SQLException e) {
+          // TODO Auto-generated catch block
+          e.printStackTrace();
+        }
+    
       //鍒ゆ柇杩涚墖璇锋眰 
        List<Short> datas1List=S7control.getinstance().ReadWord("DB106.24", 1);
        List<Short> datas1ListState=S7control.getinstance().ReadWord("DB106.8", 1);
@@ -41,6 +58,7 @@
         List<Short> datas1ListID=S7control.getinstance().ReadWord("DB106.26", 13);
         //鑾峰彇鐜荤拑id    
         for(Short list1:datas1ListID){
+
             spianService.selectAll((short)list1);
         }
       }
@@ -60,4 +78,5 @@
 
     }
   }
+  
 }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter.java
index d416822..03f59f7 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter.java
@@ -18,8 +18,9 @@
             List<Short> paramlist = S7control.getinstance().ReadWord("DB100.DBW", 12);
             List<Short> state = S7control.getinstance().ReadWord("DB103.DBW0", 10);
             JSONObject jsonObject = new JSONObject();
-            jsonObject.append("params", new short[]{1111,121, 3232, 0, 1, 0, 1, 0, 1, 0, 1, 0});
-            jsonObject.append("state", new short[]{0, 1, 0, 0, 0, 0, 0,0, 0, 0});
+//            new short[]{1111,121, 3232, 0, 1, 0, 1, 0, 1, 0, 1, 0}
+            jsonObject.append("params",paramlist );
+            jsonObject.append("state", state);
             WebSocketServer sendwServer = WebSocketServer.sessionMap.get("Parameter");
             if (sendwServer != null) {
                 sendwServer.sendMessage(jsonObject.toString());
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/Plcaction.java b/springboot-vue3/src/main/java/com/example/springboot/component/Plcaction.java
index 5e4d59e..ee35614 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/Plcaction.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/Plcaction.java
@@ -21,9 +21,9 @@
 //      JSONObject jsonObject = new JSONObject();
 //      jsonObject.append("params", new short[]{1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0});
 
-//      List<Boolean> paramlist = S7control.getinstance().ReadBits("DB100.DBW", 12);
-      Boolean[] values = {false, true,false, true,false, true,false, true,false, true,false, true,false, true,false, true,false, true,false, true,false, true};
-      List<Boolean> paramlist = new ArrayList<>(Arrays.asList(values));
+    List<Boolean> paramlist = S7control.getinstance().ReadBits("DB100.DBW", 12);
+//      Boolean[] values = {false, true,false, true,false, true,false, true,false, true,false, true,false, true,false, true,false, true,false, true,false, true};
+//      List<Boolean> paramlist = new ArrayList<>(Arrays.asList(values));
       if (paramlist == null) {
 
       } else {
@@ -70,7 +70,7 @@
             // 灏嗘秷鎭�艰浆鎹负甯冨皵鍒楄〃
             List<Boolean> messageBooleans = new ArrayList<>();
             for (Integer value : messageValues) {
-              messageBooleans.add(value == 0 ? true : false);
+              messageBooleans.add(value == 1 ? true : false);
             }
 
             // 灏嗗竷灏斿垪琛ㄥ啓鍏� PLC
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java b/springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java
index 258556f..953fd91 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java
@@ -5,7 +5,6 @@
 import java.util.ArrayList;
 import java.util.List;
 
-
 import com.example.springboot.entity.StorageCage;
 import com.example.springboot.entity.alarmmg;
 import com.example.springboot.mapper.HomeMapper;
@@ -18,19 +17,18 @@
     public void run() {
         while (this != null) {
             try {
-                Thread.sleep(5000);
+                Thread.sleep(10000);
             } catch (InterruptedException e) {
                 e.printStackTrace();
             }
-
             JSONObject jsonObject = new JSONObject();
-            
-            //娉ㄥ叆mapper
+
+            // 娉ㄥ叆mapper
             homeMapper = WebSocketServer.applicationContext.getBean(HomeMapper.class);
             // 绗煎瓙浣跨敤鎯呭喌
             List<StorageCage> tableData = homeMapper.selectAll();
             jsonObject.append("tableData", tableData);
-            //鏍肩悊鐗囩鏍煎瓙鐘舵��
+            // 鏍肩悊鐗囩鏍煎瓙鐘舵��
             List<StorageCage> cagelist1 = homeMapper.selectRack1();
             List<StorageCage> cagelist2 = homeMapper.selectRack2();
             List<StorageCage> cagelist3 = homeMapper.selectRack3();
@@ -39,23 +37,30 @@
             jsonObject.append("cagelist2", cagelist2);
             jsonObject.append("cagelist3", cagelist3);
             jsonObject.append("cagelist4", cagelist4);
-            //杩涘嚭鐗囦换鍔�
-            List<StorageCage> tasklist1=homeMapper.selectinout(2);
-            List<StorageCage> tasklist2=homeMapper.selectinout(3);
+            // 杩涘嚭鐗囦换鍔�
+            List<StorageCage> tasklist1 = homeMapper.selectinout(2);
+            List<StorageCage> tasklist2 = homeMapper.selectinout(3);
             jsonObject.append("tasklist1", tasklist1);
             jsonObject.append("tasklist2", tasklist2);
-            //鏌ヨ鎶ヨ淇℃伅
-            List<alarmmg> alarmmg=homeMapper.SelectAlarmmgInfo();
+            // 鏌ヨ鎶ヨ淇℃伅
+            List<alarmmg> alarmmg = homeMapper.SelectAlarmmgInfo();
             jsonObject.append("alarmmg", alarmmg);
-            //璇诲幓Plc杩涚墖杞︿笌鍑虹墖杞︿綅缃甒
+            // 璇诲幓Plc杩涚墖杞︿笌鍑虹墖杞︿綅缃甒
             List<String> addressList = new ArrayList<String>();
-            addressList.add("DB105.DBW0");
-            addressList.add("DB105.DBW12");
+            addressList.add("DB106.0");
+            addressList.add("DB106.12");
             List<Short> paramlist = S7control.getinstance().ReadWord(addressList);
-            //灏嗛泦鍚堣浆涓烘暟缁�
+
+            // List<Short> paramlists = new ArrayList<Short>();
+            // short para1 = 1;
+            // short para2 = 2;
+            // paramlists.add(para1);
+            // paramlists.add(para2);
+            // System.out.println(paramlists);
+
             if(paramlist!=null){
-                Short[] paramlists = paramlist.toArray(new Short[0]);
-                jsonObject.append("params", paramlists);
+            // Short[] paramlists = paramlist.toArray(new Short[0]);
+            jsonObject.append("params", paramlist);
             }
             // jsonObject.append("params", new short[] { 30, 40, });
             WebSocketServer sendwServer = WebSocketServer.sessionMap.get("Home");
diff --git a/springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java b/springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java
index 17d0dd6..988df23 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java
@@ -25,9 +25,9 @@
     //
     System.out.println("鍚姩瀹屾垚");
 
-    // new PlcHold().start();
+    new PlcHold().start();
+
     new Plcaction().start();
-    new PlcParameter().start();
 
     new Plchome().start();
 
diff --git a/springboot-vue3/src/main/java/com/example/springboot/controller/DefaultController.java b/springboot-vue3/src/main/java/com/example/springboot/controller/DefaultController.java
index 9208175..2e2a287 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/controller/DefaultController.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/controller/DefaultController.java
@@ -24,14 +24,12 @@
 import org.apache.shiro.crypto.hash.SimpleHash;
 import org.apache.shiro.util.ByteSource;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.HashMap;
 
 @RestController
+
 @Slf4j
 @Api(tags = "鐧诲綍鍜屾敞鍐�")
 public class DefaultController {
@@ -57,6 +55,7 @@
     }
 
     @ApiOperation(value = "鐧诲綍")
+    @CrossOrigin(origins = "http://localhost:8080", allowCredentials = "true")
     @PostMapping("/login")
     public Result login(@RequestBody UserVo userVO) {
         ValidatorUtil.validateEntity(userVO);
diff --git a/springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java b/springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java
index 5970b54..01b46fd 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java
@@ -78,21 +78,27 @@
         if (taskno > 0) {
             map.put("message2", "500");
         } else {
-            map.put("message2", "200");
             // 璋冪敤浼嶄笂鐗囧嚱鏁�
-            spianService.selectAll(glassid);
+            short results= spianService.selectAll(glassid);
+            if(results==200){
+                map.put("message2", "200");
+            }else if(results==300){
+                map.put("message2", "300");
+            }else if(results==400){
+                map.put("message2", "400");
+            }
         }
         return Result.success(map);
     }
 
     @GetMapping("/UpdateTask")
-    public Result UpdateTask(Integer types, Integer shelfrack) {
+    public Result UpdateTask(Integer types, Integer shelfrack, Integer glassid) {
         Map<String, Object> map = new HashMap<>();
         homeMapper.UpdateTask(types, shelfrack);
         if (types == 0) {
-            homeMapper.UpdateCageTask1(shelfrack);
+            homeMapper.UpdateCageTask1(shelfrack,glassid);
         } else {
-            homeMapper.UpdateCageTask2(shelfrack);
+            homeMapper.UpdateCageTask2(shelfrack,glassid);
         }
         map.put("message3", "200");
         return Result.success(map);
diff --git a/springboot-vue3/src/main/java/com/example/springboot/controller/SpianController.java b/springboot-vue3/src/main/java/com/example/springboot/controller/SpianController.java
index c6fea0c..8870607 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/controller/SpianController.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/controller/SpianController.java
@@ -1,22 +1,15 @@
 package com.example.springboot.controller;
 
-import com.example.springboot.common.Result;
-import com.example.springboot.component.S7control;
-import com.example.springboot.entity.StorageCage;
 import com.example.springboot.mapper.SpianMapper;
 import com.example.springboot.service.SpianService;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
+
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.util.List;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map;
+
 @RestController
 @RequestMapping("/spian")
 
diff --git a/springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java b/springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java
index 384b18c..3e22d2c 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java
@@ -34,11 +34,11 @@
   List<StorageCage> selectinout(@Param("task_type") Integer task_type);
 
   // 鏌ヨ鏄惁瀛樺湪姝よ鍗�
-  @Select("select count(*) from storage_cage where order_id=#{orderid} and state=0")
+  @Select("select count(*) from storage_cage where order_id=#{orderid} and state=1")
   short SelectOrder(@Param("orderid") String orderid);
 
   // @Insert("insert into order_out(orderid) values('#{orderid}')")
-  @Insert("INSERT INTO `canadames`.`order_out`( `orderid`,`mod_time`) VALUES ( #{orderid},now())")
+  @Insert("INSERT INTO `canadames`.`order_out`( `order_id`,`state`) VALUES ( #{orderid},0)")
   void InsertOrder(String orderid);
 
   // 鍋滄鎸夊綋鍓嶈鍗曞嚭鐗�
@@ -54,12 +54,12 @@
   void UpdateTask(@Param("task_type") Integer task_type, @Param("shelf_rack") Integer shelf_rack);
 
   // 鎵嬪姩瀹屾垚杩涚墖浠诲姟淇敼绗煎瓙鏁版嵁
-  @Update("update storage_cage set state=1 where cell=#{cell} and state=2")
-  void UpdateCageTask1(@Param("cell") Integer cell);
+  @Update("update storage_cage set state=1 where cell=#{cell} and glass_id=#{glassid} and state=2")
+  void UpdateCageTask1(@Param("cell") Integer cell,@Param("glassid") Integer glassid);
 
   // 鎵嬪姩瀹屾垚鍑虹墖浠诲姟淇敼绗煎瓙鏁版嵁
-  @Update("update storage_cage set state=0,glass_id=null,order_id=null,glasswidth=null,glassheight=null,coating=null where cell=#{cell} and state=2")
-  void UpdateCageTask2(@Param("cell") Integer cell);
+  @Update("update storage_cage set state=0,glass_id=null,order_id=null,glasswidth=null,glassheight=null,coating=null where cell=#{cell} and glass_id=#{glassid} and state=3")
+  void UpdateCageTask2(@Param("cell") Integer cell,@Param("glassid") Integer glassid);
 
   //鑾峰彇鎶ヨ淇℃伅
   @Select("select id,content,timeon as timeons,endTime from alarmmg where endTime is null")
diff --git a/springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java b/springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java
index 76b6d90..697ba48 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java
@@ -1,11 +1,11 @@
 package com.example.springboot.mapper;
 import org.apache.ibatis.annotations.*;
 
-import com.example.springboot.common.Result;
+
 import com.example.springboot.entity.Glass;
 import com.example.springboot.entity.StorageCage;
 import com.example.springboot.entity.StorageTask;
-import com.example.springboot.entity.StorageCage;
+
 
 import java.util.List;
 
@@ -18,8 +18,8 @@
      
      //@Select("(select*from storage_cage as a  where a.state=0 and cage%2=0 ORDER BY id LIMIT 1)union (select a.* from storage_cage a inner join  (select cage,if(shu2=1,shu3,shu5) as gezi from ( select  cage, count(case when state1=1 and state2=0 then cell else null end)as shu1,  count(case when state1=0 then cell else null end) as shu2, min(case when state1=1 and state2=0 then cell else null end) as shu3, min(case when state1=0 then cell else null end) as shu4, min(case when state1=0 or state2=0 then cell else null end) as shu5 from  (select *,max(state) as state1,min(state) as state2 from storage_cage group by cage,cell) as a where  cage%2!=0  GROUP BY cage HAVING shu2>1 or (shu2=1 and shu1>0)  ) as sss limit 1)as b on a.cage=b.cage and a.cell=b.gezi and a.state=0 order by tier limit 1) ORDER BY id LIMIT 1;")
     //鑾峰彇璁㈠崟鍙锋帓搴忕殑绌鸿鍗曠瀛�
-     @Select("select cage,COUNT(if(order_id=#{glassid},order_id,null))as orderid from storage_cage where (order_id=#{glassid} or ''='') GROUP BY cage ORDER BY orderid desc; ")
-     List<StorageCage> selectAll(Short glassid);
+     @Select("select cage,COUNT(if(order_id=#{orderids},order_id,null))as orderid from storage_cage where (order_id=#{orderids} or ''='') GROUP BY cage ORDER BY orderid desc; ")
+     List<StorageCage> selectAll(Short orderids);
 
      //鍒ゆ柇璇ョ瀛愭槸鍚︽湁鍚堥�傚搴︾┖鏍�
      @Select("select cage,cell,tier,id,ROUND(id/2)as prcId from storage_cage where cage=#{cage1} and state=0 and width>=#{width} ORDER BY cell,tier LIMIT 1")
@@ -42,7 +42,7 @@
     @Select("select cage,cell,tier,glasswidth,ROUND(id/2)as prcId,id from storage_cage as a where a.order_id=#{orderId} and state=1 order by cage desc,tier desc,cell desc LIMIT 1")
      StorageCage selectOut(String  orderId);
     //鎸夌幓鐠僆D鍑虹墖浠诲姟鏌ヨ
-    @Select("select cage,cell,tier,glasswidth,ROUND(id/2)as prcId,id from storage_cage as a where a.order_id=#{orderId} and state=1 order by cage desc,tier desc,cell desc LIMIT 1")
+    @Select("select cage,cell,tier,glasswidth,ROUND(id/2)as prcId,id from storage_cage as a where a.glass_id=#{glassid} and state=1 order by cage desc,tier desc,cell desc LIMIT 1")
      StorageCage selectOut2(String  glassid);
 
     //鍒ゆ柇鍑虹墖涓�1鏃讹紝鏄惁鍙洿鎺ュ嚭鐗�
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/JdbcConnections.java b/springboot-vue3/src/main/java/com/example/springboot/service/JdbcConnections.java
new file mode 100644
index 0000000..0ca1741
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/JdbcConnections.java
@@ -0,0 +1,70 @@
+package com.example.springboot.service;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+import org.springframework.stereotype.Component;
+
+import com.example.springboot.entity.Glass;
+@Component
+public class JdbcConnections {
+    /**
+	 * 鏁版嵁搴撹繛鎺ュ弬鏁�
+	 * driver,url,username,password
+	 */
+	private static final String DRIVER = "com.mysql.jdbc.Driver";
+	private static final String URL = "jdbc:mysql://localhost:3306/canadames";
+	private static final String USERNAME = "root";
+	private static final String PASSWORD = "beibo.123/";
+	
+	private static Connection conn = null;
+	private static PreparedStatement ps = null;
+	private static ResultSet rs = null;
+	
+	public  Glass selectGlass(int glassid) throws SQLException {
+        conn = getConn();
+        Glass glass=new Glass();
+        String sql = "select orderid from glass where glassid=?";
+         ps = conn.prepareStatement(sql);
+         ps.setInt(1, glassid);
+         rs= ps.executeQuery();
+         while (rs.next()) {
+			glass.setOrderId(rs.getShort("orderid"));
+         }
+
+         return glass;
+    }
+	/**
+	 * 1. 鍔犺浇椹卞姩
+	 * 2. 鑾峰彇杩炴帴	conn
+	 * 3. 鍒涘缓璇彞 ps
+	 * 4. 鎵ц璇彞 rs
+	 * 5. 澶勭悊缁撴灉
+	 * 6. 鍥炴敹璧勬簮
+	 * 
+	 * 瀹炵幇CRUD
+	 * 	鏇存柊锛�
+	 * 		1澧炲姞
+	 * 		2鍒犻櫎
+	 * 		3淇敼
+	 *  鏌ヨ锛�
+	 *  	1. 鏌ヤ竴涓紝涓�涓璞�
+	 *  	2. 鏌ヤ竴缁勶紝鍋氭垚涓�涓璞″垪琛紝鏌ュ叏閮�
+	 */
+	public static Connection getConn() throws SQLException {
+		Connection conn = null;
+		conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/canadames?serverTimezone=GMT%2B8&characterEncoding=utf-8", "root", "beibo.123/");
+		return conn;
+	}
+
+	static {
+		try {
+			Class.forName(DRIVER);
+		} catch (ClassNotFoundException e) {
+			e.printStackTrace();
+		}
+	}
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java b/springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java
index 951216b..2d8f2f3 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java
@@ -5,7 +5,6 @@
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.web.bind.annotation.GetMapping;
 
 import com.example.springboot.common.Result;
 import com.example.springboot.component.S7control;
@@ -17,114 +16,120 @@
 public class SpianService {
     @Autowired
     private SpianMapper spianMapper;
-    @GetMapping("/all2")
-    public Result selectout(String orderid){
-        //瀹氫箟PRC鏁版嵁浼犻�佹暟缁�
-        List<String> adddresslist=new ArrayList<>();
-        adddresslist.add("DB105.6");//鍑虹墖杞﹁捣濮嬩綅缃�
-        adddresslist.add("DB105.8");//鍑虹墖杞︾洰鏍囦綅缃�
-        adddresslist.add("DB105.10");//鍑虹墖绗肩幓鐠冩暟
-        adddresslist.add("DB105.14");//鍑虹墖杞﹀惎鍔� 1涓哄惎鍔�
-        List<Short> datas=new ArrayList<>();
-        //鑾峰彇浼樺厛鍑虹墖鐨勪綅缃�
-         StorageCage cageout=spianMapper.selectOut(orderid);
-         int cage =cageout.getCage(); //鍌ㄥ瓨鍑虹墖浣嶇疆锛岀瀛愭牸瀛愬嚑鍙风幓鐠�
-         int cell =cageout.getCell();//鍑虹墖鏍煎彿
-         int tier =cageout.getTier();//鍑虹墖鍐呭鐗�
-         int prcid=cageout.getPrcId();//prcid
-         int prcid2;
-         int ids;
-         double glasswidth=cageout.getGlassWidth();
-         //鍒ゆ柇鐜荤拑鍐呭鐗�
-         if(tier==2){
-             //鍒ゆ柇鐜荤拑鍙洿鎺ュ嚭鐗囨椂
-                //淇敼鏁版嵁搴撶瀛愯〃(鍑虹墖)
-                spianMapper.UpdataGlassCage("","",glasswidth, cage, cell, tier, 0);
-               
-                datas.add((short)prcid);
-                datas.add((short)1000);
-                datas.add((short)1);
-                datas.add((short)1);
-                S7control.getinstance().WriteWord(adddresslist, datas);
-                return Result.success(datas);  
-         }
-         else{  
-            //鑾峰彇鏍煎瓙鐨勭幓鐠冩暟閲�
-           int state= spianMapper.selectGlassState(cage,cell);
-            //鍒ゆ柇鍐呯墖鏄惁闇�瑕佽皟鎷�
-            if(state==0){
-             return Result.success("鐘舵�佷负0,鐩存帴鍑虹墖");  
-             }else{
-              //鐜荤拑闇�瑕佽皟鎷ㄦ椂锛屽垽鏂睘浜庡摢涓崐鍖虹殑绗煎瓙
-               if(cage<6){
-                StorageCage cagecell= spianMapper.selectGlassCage(cage,glasswidth,0,6);
-                if(cagecell==null){
-                    return Result.success(cagecell);
-                }
-                //鑾峰彇璋冩嫧浣嶇疆杩涜璋冩嫧
-                prcid2=cagecell.getPrcId();//璋冩嫧鐩爣浣峆RCID
-                ids=cagecell.getId();//璋冩嫧鐩爣浣岻D
-                //鏇存崲鐜荤拑鐨勭瀛�
-                spianMapper.UpdateDBCage(ids, cage, cell);//灏嗗師鏍煎瓙鏁版嵁鏇存柊鍒版柊鏍煎瓙閲�
-                spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 0);//娓呴櫎鍘熸牸瀛愭暟鎹�
-                //濉叆璋冩嫧鏁版嵁
-                datas.add((short)prcid);//璋冩嫧澶栫墖璧峰浣嶇疆
-                datas.add((short)prcid2);
-                datas.add((short)2);
-                datas.add((short)1);
-                //浼犺緭mes鏁版嵁,鍧愭爣锛屾暟鎹�
-                S7control.getinstance().WriteWord(adddresslist, datas);
-                datas.clear(); // 娓呯┖鏁翠釜鍒楄〃
-                //鍒ゆ柇璋冩嫧缁撴潫鍚庡啀娆″嚭鐗�,濉叆鍑虹墖鏁版嵁
-                datas.add((short)prcid);
-                datas.add((short)1000);
-                datas.add((short)1);
-                datas.add((short)1);
-                S7control.getinstance().WriteWord(adddresslist, datas);
-                 //淇敼鏁版嵁搴撶瀛愯〃(鍑虹墖)
-               
-                return Result.success(cagecell);  //璋冩嫧浣嶇疆鐨勫弬鏁板唴瀹�
-                
-               }else{//绗煎瓙鍙峰ぇ浜�5鏃�
-                StorageCage cagecell= spianMapper.selectGlassCage(cage,glasswidth,5,11);
-                if(cagecell==null){
-                    return Result.success(cagecell);
-                }
-                //鑾峰彇璋冩嫧浣嶇疆杩涜璋冩嫧
-                prcid2=cagecell.getPrcId();//璋冩嫧鐩爣浣峱rcID
-                ids=cagecell.getId();//璋冩嫧鐩爣浣岻D
-                //濉叆璋冩嫧鏁版嵁
-                datas.add((short)prcid);
-                datas.add((short)prcid2);
-                datas.add((short)2);
-                datas.add((short)1);
-                //杞Щ鍘熻皟鎷ㄦ牸瀛愭暟鎹�
-                spianMapper.UpdateDBCage(ids, cage, cell);//灏嗗師鏍煎瓙鏁版嵁鏇存柊鍒版柊鏍煎瓙閲�
-                spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 0);//娓呴櫎鍘熸牸瀛愭暟鎹�
-                //浼犺緭mes鏁版嵁,鍧愭爣锛屾暟鎹�
-                S7control.getinstance().WriteWord(adddresslist, datas);
-                datas.clear(); // 娓呯┖鏁翠釜鍒楄〃
-                //鍒ゆ柇璋冩嫧缁撴潫鍚庡啀娆″嚭鐗�
-                //濉叆鍑虹墖鏁版嵁
-                datas.add((short)prcid);
-                datas.add((short)1000);
-                datas.add((short)1);
-                datas.add((short)1);
-                S7control.getinstance().WriteWord(adddresslist, datas);
-                return Result.success(cagecell);  //璋冩嫧浣嶇疆鐨勫弬鏁板唴瀹�
-                
-               }
-               
-             }
-        }
-    
-}
 
-   @GetMapping("/all")
-   //杩涚墖浠诲姟,浼犺鍗昳d
-   //鎸夎鍗曚紭鍏堣繘鐗�
-    public Result selectAll(Short glassid){
-        //return spianMapper.selectAll(); 
+    // @GetMapping("/all2")
+    public Result selectout(String orderid) {
+        // 瀹氫箟PRC鏁版嵁浼犻�佹暟缁�
+        List<String> adddresslist = new ArrayList<>();
+        adddresslist.add("DB105.6");// 鍑虹墖杞﹁捣濮嬩綅缃�
+        adddresslist.add("DB105.8");// 鍑虹墖杞︾洰鏍囦綅缃�
+        adddresslist.add("DB105.10");// 鍑虹墖绗肩幓鐠冩暟
+        adddresslist.add("DB105.14");// 鍑虹墖杞﹀惎鍔� 1涓哄惎鍔�
+        List<Short> datas = new ArrayList<>();
+        // 鑾峰彇浼樺厛鍑虹墖鐨勪綅缃�
+        StorageCage cageout = spianMapper.selectOut(orderid);
+        int cage = cageout.getCage(); // 鍌ㄥ瓨鍑虹墖浣嶇疆锛岀瀛愭牸瀛愬嚑鍙风幓鐠�
+        int cell = cageout.getCell();// 鍑虹墖鏍煎彿
+        int tier = cageout.getTier();// 鍑虹墖鍐呭鐗�
+        int prcid = cageout.getPrcId();// prcid
+        int prcid2;
+        int ids;
+        double glasswidth = cageout.getGlassWidth();
+        // 鍒ゆ柇鐜荤拑鍐呭鐗�
+        if (tier == 2) {
+            // 鍒ゆ柇鐜荤拑鍙洿鎺ュ嚭鐗囨椂
+            // 淇敼鏁版嵁搴撶瀛愯〃(鍑虹墖)
+            spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 0);
+
+            datas.add((short) prcid);
+            datas.add((short) 1000);
+            datas.add((short) 1);
+            datas.add((short) 1);
+            S7control.getinstance().WriteWord(adddresslist, datas);
+            return Result.success(datas);
+        } else {
+            // 鑾峰彇鏍煎瓙鐨勭幓鐠冩暟閲�
+            int state = spianMapper.selectGlassState(cage, cell);
+            // 鍒ゆ柇鍐呯墖鏄惁闇�瑕佽皟鎷�
+            if (state == 0) {
+                spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 0);
+                datas.add((short) prcid);
+                datas.add((short) 1000);
+                datas.add((short) 1);
+                datas.add((short) 1);
+                S7control.getinstance().WriteWord(adddresslist, datas);
+                return Result.success("鐘舵�佷负0,鐩存帴鍑虹墖");
+            } else {
+                // 鐜荤拑闇�瑕佽皟鎷ㄦ椂锛屽垽鏂睘浜庡摢涓崐鍖虹殑绗煎瓙
+                if (cage < 6) {
+                    StorageCage cagecell = spianMapper.selectGlassCage(cage, glasswidth, 0, 6);
+                    if (cagecell == null) {
+                        return Result.success(cagecell);
+                    }
+                    // 鑾峰彇璋冩嫧浣嶇疆杩涜璋冩嫧
+                    prcid2 = cagecell.getPrcId();// 璋冩嫧鐩爣浣峆RCID
+                    ids = cagecell.getId();// 璋冩嫧鐩爣浣岻D
+                    // 鏇存崲鐜荤拑鐨勭瀛�
+                    spianMapper.UpdateDBCage(ids, cage, cell);// 灏嗗師鏍煎瓙鏁版嵁鏇存柊鍒版柊鏍煎瓙閲�
+                    spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 0);// 娓呴櫎鍘熸牸瀛愭暟鎹�
+                    // 濉叆璋冩嫧鏁版嵁
+                    datas.add((short) prcid);// 璋冩嫧澶栫墖璧峰浣嶇疆
+                    datas.add((short) prcid2);
+                    datas.add((short) 2);
+                    datas.add((short) 1);
+                    // 浼犺緭mes鏁版嵁,鍧愭爣锛屾暟鎹�
+                    S7control.getinstance().WriteWord(adddresslist, datas);
+                    datas.clear(); // 娓呯┖鏁翠釜鍒楄〃
+                    // 鍒ゆ柇璋冩嫧缁撴潫鍚庡啀娆″嚭鐗�,濉叆鍑虹墖鏁版嵁
+                    datas.add((short) prcid);
+                    datas.add((short) 1000);
+                    datas.add((short) 1);
+                    datas.add((short) 1);
+                    S7control.getinstance().WriteWord(adddresslist, datas);
+                    // 淇敼鏁版嵁搴撶瀛愯〃(鍑虹墖)
+
+                    return Result.success(cagecell); // 璋冩嫧浣嶇疆鐨勫弬鏁板唴瀹�
+
+                } else {// 绗煎瓙鍙峰ぇ浜�5鏃�
+                    StorageCage cagecell = spianMapper.selectGlassCage(cage, glasswidth, 5, 11);
+                    if (cagecell == null) {
+                        return Result.success(cagecell);
+                    }
+                    // 鑾峰彇璋冩嫧浣嶇疆杩涜璋冩嫧
+                    prcid2 = cagecell.getPrcId();// 璋冩嫧鐩爣浣峱rcID
+                    ids = cagecell.getId();// 璋冩嫧鐩爣浣岻D
+                    // 濉叆璋冩嫧鏁版嵁
+                    datas.add((short) prcid);
+                    datas.add((short) prcid2);
+                    datas.add((short) 2);
+                    datas.add((short) 1);
+                    // 杞Щ鍘熻皟鎷ㄦ牸瀛愭暟鎹�
+                    spianMapper.UpdateDBCage(ids, cage, cell);// 灏嗗師鏍煎瓙鏁版嵁鏇存柊鍒版柊鏍煎瓙閲�
+                    spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 0);// 娓呴櫎鍘熸牸瀛愭暟鎹�
+                    // 浼犺緭mes鏁版嵁,鍧愭爣锛屾暟鎹�
+                    S7control.getinstance().WriteWord(adddresslist, datas);
+                    datas.clear(); // 娓呯┖鏁翠釜鍒楄〃
+                    // 鍒ゆ柇璋冩嫧缁撴潫鍚庡啀娆″嚭鐗�
+                    // 濉叆鍑虹墖鏁版嵁
+                    datas.add((short) prcid);
+                    datas.add((short) 1000);
+                    datas.add((short) 1);
+                    datas.add((short) 1);
+                    S7control.getinstance().WriteWord(adddresslist, datas);
+                    return Result.success(cagecell); // 璋冩嫧浣嶇疆鐨勫弬鏁板唴瀹�
+
+                }
+
+            }
+        }
+
+    }
+
+    // @GetMapping("/all")
+    // 杩涚墖浠诲姟,浼犺鍗昳d
+    // 鎸夎鍗曚紭鍏堣繘鐗�
+    public Short selectAll(Short glassid) {
+
         int cage1;
         int cells;
         int ids;
@@ -132,156 +137,177 @@
         int tiers;
         int prctier;
 
-        Glass glasslist=spianMapper.selectGlass(glassid);
-        double widths=glasslist.getWidth();
-        Short orderids=glasslist.getOrderId();
+        Glass glasslist = spianMapper.selectGlass(glassid);
+        if (glasslist == null) {
+            return (300);
+        }
+        double widths = glasslist.getWidth();
+        Short orderids = glasslist.getOrderId();
 
-        List<String> adddresslist=new ArrayList<>();
-        adddresslist.add("DB105.0");//杩涚墖杞﹁捣濮嬩綅缃�
-        adddresslist.add("DB105.2");//杩涚墖杞︾洰鏍囦綅缃�
-        adddresslist.add("DB105.4");//杩涚墖绗肩幓鐠冩暟
-        adddresslist.add("DB105.12");//杩涚墖杞﹀惎鍔� 1涓哄惎鍔�
-        List<Short> datas=new ArrayList<>();
+        List<String> adddresslist = new ArrayList<>();
+        adddresslist.add("DB105.0");// 杩涚墖杞﹁捣濮嬩綅缃�
+        adddresslist.add("DB105.2");// 杩涚墖杞︾洰鏍囦綅缃�
+        adddresslist.add("DB105.4");// 杩涚墖绗肩幓鐠冩暟
+        adddresslist.add("DB105.12");// 杩涚墖杞﹀惎鍔� 1涓哄惎鍔�
+        List<Short> datas = new ArrayList<>();
 
-        //String orderid="A001";
-        //鑾峰彇璁㈠崟鐩稿叧搴︽渶楂樼殑绗煎瓙鎺掑簭
-        List<StorageCage> storageCage=spianMapper.selectAll(glassid);
-        if(storageCage==null){
-                    return Result.success(storageCage);
-                }
+        // String orderid="A001";
+        // 鑾峰彇璁㈠崟鐩稿叧搴︽渶楂樼殑绗煎瓙鎺掑簭
+        List<StorageCage> storageCage = spianMapper.selectAll(orderids);
+        if (storageCage == null) {
+            return (400);
+        }
         for (StorageCage storageCage2 : storageCage) {
-            //淇濆瓨璁㈠崟浼樺厛椤哄簭绗煎瓙鍙�
-            cage1=storageCage2.getCage();
-            //鍒ゆ柇璇ョ瀛愬彿鐩搁偦鏈�澶х殑绌烘牸鏁�
-            int cages=spianMapper.selectCage(cage1);
-            //鍒ゆ柇閫変腑绗煎瓙鏄惁鏈夊悎閫傚搴︾┖鏍�
-            StorageCage cages1=spianMapper.selectCage1(cage1,widths);
-            ids=cages1.getId();//鏁版嵁搴揑D
-            tiers=cages1.getTier();//鍐呭鐗�
-            cells=cages1.getCell();//鏍煎瓙鍙�
-            prcid=cages1.getPrcId();//浼犵粰prc鐨勭洰鏍囧湴id
-            prctier=spianMapper.selectsum(cage1, cells);//浼犵粰prc鐨勬牸瀛愬唴鐜荤拑鏁�
-            //鏈夊悎閫傜┖鏍兼椂杩涚墖
-            if(cages>1 &&cages1.getTier()!=null){
-                //鎵ц杩涚墖
-                datas.add((short)1000);
-                datas.add((short)prcid);
-                datas.add((short)prctier);
-                datas.add((short)1);
-                S7control.getinstance().WriteWord(adddresslist, datas);
-                //鏁版嵁搴撲慨鏀圭瀛愯〃鏂板涓�鏉$幓鐠�
-               
-                spianMapper.UpdataAddCage(orderids, glassid, widths, cage1, cells, ids, 1);
-                return Result.success(cages1);
+            // 淇濆瓨璁㈠崟浼樺厛椤哄簭绗煎瓙鍙�
+            cage1 = storageCage2.getCage();
+            // 鍒ゆ柇璇ョ瀛愬彿鐩搁偦鏈�澶х殑绌烘牸鏁�
+            int cages = spianMapper.selectCage(cage1);
+            // 鍒ゆ柇閫変腑绗煎瓙鏄惁鏈夊悎閫傚搴︾┖鏍�
+            StorageCage cages1 = spianMapper.selectCage1(cage1, widths);
+            if (cages1 != null) {
+                ids = cages1.getId();// 鏁版嵁搴揑D
+                tiers = cages1.getTier();// 鍐呭鐗�
+                cells = cages1.getCell();// 鏍煎瓙鍙�
+                prcid = cages1.getPrcId();// 浼犵粰prc鐨勭洰鏍囧湴id
+                prctier = spianMapper.selectsum(cage1, cells);// 浼犵粰prc鐨勬牸瀛愬唴鐜荤拑鏁�
+                // 鏈夊悎閫傜┖鏍兼椂杩涚墖
+                if (cages > 1 && cages1.getTier() != null) {
+                    // 鎵ц杩涚墖
+                    datas.add((short) 1000);
+                    datas.add((short) prcid);
+                    datas.add((short) prctier);
+                    datas.add((short) 1);
+                    // 鏁版嵁搴撲慨鏀圭瀛愯〃鏂板涓�鏉$幓鐠�
+                    spianMapper.UpdataAddCage(orderids, glassid, widths, cage1, cells, ids, 1);
+                    S7control.getinstance().WriteWord(adddresslist, datas);
+
+                    return (200);
+                }
             }
-            
-             
-        }         
-        return Result.success("涓嶅彲杩涚墖");      
-      
+
+        }
+        return (300);
+
     }
 
-   @GetMapping("/all2")
-    public Result selectout2(String glassid){
-        //瀹氫箟PRC鏁版嵁浼犻�佹暟缁�
-        List<String> adddresslist=new ArrayList<>();
-        adddresslist.add("DB105.6");//鍑虹墖杞﹁捣濮嬩綅缃�
-        adddresslist.add("DB105.8");//鍑虹墖杞︾洰鏍囦綅缃�
-        adddresslist.add("DB105.10");//鍑虹墖绗肩幓鐠冩暟
-        adddresslist.add("DB105.14");//鍑虹墖杞﹀惎鍔� 1涓哄惎鍔�
-        List<Short> datas=new ArrayList<>();
-        //鑾峰彇浼樺厛鍑虹墖鐨勪綅缃�
-         StorageCage cageout=spianMapper.selectOut2(glassid);
-         int cage =cageout.getCage(); //鍌ㄥ瓨鍑虹墖浣嶇疆锛岀瀛愭牸瀛愬嚑鍙风幓鐠�
-         int cell =cageout.getCell();//鍑虹墖鏍煎彿
-         int tier =cageout.getTier();//鍑虹墖鍐呭鐗�
-         int prcid=cageout.getPrcId();//prcid
-         int prcid2;
-         int ids;
-         double glasswidth=cageout.getGlassWidth();
-         //鍒ゆ柇鐜荤拑鍐呭鐗�
-         if(tier==2){
-             //鍒ゆ柇鐜荤拑鍙洿鎺ュ嚭鐗囨椂
-                //淇敼鏁版嵁搴撶瀛愯〃(鍑虹墖)
-                spianMapper.UpdataGlassCage("","",glasswidth, cage, cell, tier, 0);
-               
-                datas.add((short)prcid);
-                datas.add((short)1000);
-                datas.add((short)1);
-                datas.add((short)1);
-                S7control.getinstance().WriteWord(adddresslist, datas);
-                return Result.success(datas);  
-         }
-         else{  
-            //鑾峰彇鏍煎瓙鐨勭幓鐠冩暟閲�
-           int state= spianMapper.selectGlassState(cage,cell);
-            //鍒ゆ柇鍐呯墖鏄惁闇�瑕佽皟鎷�
-            if(state==0){
-             return Result.success("鐘舵�佷负0,鐩存帴鍑虹墖");  
-             }else{
-              //鐜荤拑闇�瑕佽皟鎷ㄦ椂锛屽垽鏂睘浜庡摢涓崐鍖虹殑绗煎瓙
-               if(cage<6){
-                StorageCage cagecell= spianMapper.selectGlassCage(cage,glasswidth,0,6);
-                if(cagecell==null){
-                    return Result.success(cagecell);
+    // @GetMapping("/all2")
+    public Result selectout2(String glassid) {
+        // 瀹氫箟PRC鏁版嵁浼犻�佹暟缁�
+        List<String> adddresslist = new ArrayList<>();
+        adddresslist.add("DB105.6");// 鍑虹墖杞﹁捣濮嬩綅缃�
+        adddresslist.add("DB105.8");// 鍑虹墖杞︾洰鏍囦綅缃�
+        adddresslist.add("DB105.10");// 鍑虹墖绗肩幓鐠冩暟
+        adddresslist.add("DB105.14");// 鍑虹墖杞﹀惎鍔� 1涓哄惎鍔�
+        List<Short> datas = new ArrayList<>();
+        // 鑾峰彇浼樺厛鍑虹墖鐨勪綅缃�
+        StorageCage cageout = spianMapper.selectOut2(glassid);
+        int cage = cageout.getCage(); // 鍌ㄥ瓨鍑虹墖浣嶇疆锛岀瀛愭牸瀛愬嚑鍙风幓鐠�
+        int cell = cageout.getCell();// 鍑虹墖鏍煎彿
+        int tier = cageout.getTier();// 鍑虹墖鍐呭鐗�
+        int prcid = cageout.getPrcId();// prcid
+        int prcid2;
+        int ids;
+        double glasswidth = cageout.getGlassWidth();
+        // 鍒ゆ柇鐜荤拑鍐呭鐗�
+        if (tier == 2) {
+            // 鍒ゆ柇鐜荤拑鍙洿鎺ュ嚭鐗囨椂
+            // 淇敼鏁版嵁搴撶瀛愯〃(鍑虹墖)
+            spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 0);
+
+            datas.add((short) prcid);
+            datas.add((short) 1000);
+            datas.add((short) 1);
+            datas.add((short) 1);
+            S7control.getinstance().WriteWord(adddresslist, datas);
+            return Result.success(datas);
+        } else {
+            // 鑾峰彇鏍煎瓙鐨勭幓鐠冩暟閲�
+            int state = spianMapper.selectGlassState(cage, cell);
+            // 鍒ゆ柇鍐呯墖鏄惁闇�瑕佽皟鎷�
+            if (state == 0) {
+                return Result.success("鐘舵�佷负0,鐩存帴鍑虹墖");
+            } else {
+                // 鐜荤拑闇�瑕佽皟鎷ㄦ椂锛屽垽鏂睘浜庡摢涓崐鍖虹殑绗煎瓙
+                if (cage < 6) {
+                    StorageCage cagecell = spianMapper.selectGlassCage(cage, glasswidth, 0, 6);
+                    if (cagecell == null) {
+                        return Result.success(cagecell);
+                    }
+                    // 鑾峰彇璋冩嫧浣嶇疆杩涜璋冩嫧
+                    prcid2 = cagecell.getPrcId();// 璋冩嫧鐩爣浣峆RCID
+                    ids = cagecell.getId();// 璋冩嫧鐩爣浣岻D
+                    // 鏇存崲鐜荤拑鐨勭瀛�
+                    spianMapper.UpdateDBCage(ids, cage, cell);// 灏嗗師鏍煎瓙鏁版嵁鏇存柊鍒版柊鏍煎瓙閲�
+                    spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 0);// 娓呴櫎鍘熸牸瀛愭暟鎹�
+                    // 濉叆璋冩嫧鏁版嵁
+                    datas.add((short) prcid);// 璋冩嫧澶栫墖璧峰浣嶇疆
+                    datas.add((short) prcid2);
+                    datas.add((short) 2);
+                    datas.add((short) 1);
+                    // 浼犺緭mes鏁版嵁,鍧愭爣锛屾暟鎹�
+                    S7control.getinstance().WriteWord(adddresslist, datas);
+                    datas.clear(); // 娓呯┖鏁翠釜鍒楄〃
+                    // 鍒ゆ柇璋冩嫧缁撴潫鍚庡啀娆″嚭鐗�,濉叆鍑虹墖鏁版嵁
+                    datas.add((short) prcid);
+                    datas.add((short) 1000);
+                    datas.add((short) 1);
+                    datas.add((short) 1);
+                    S7control.getinstance().WriteWord(adddresslist, datas);
+                    // 淇敼鏁版嵁搴撶瀛愯〃(鍑虹墖)
+
+                    return Result.success(cagecell); // 璋冩嫧浣嶇疆鐨勫弬鏁板唴瀹�
+
+                } else {// 绗煎瓙鍙峰ぇ浜�5鏃�
+                    StorageCage cagecell = spianMapper.selectGlassCage(cage, glasswidth, 5, 11);
+                    if (cagecell == null) {
+                        return Result.success(cagecell);
+                    }
+                    // 鑾峰彇璋冩嫧浣嶇疆杩涜璋冩嫧
+                    prcid2 = cagecell.getPrcId();// 璋冩嫧鐩爣浣峱rcID
+                    ids = cagecell.getId();// 璋冩嫧鐩爣浣岻D
+                    // 濉叆璋冩嫧鏁版嵁
+                    datas.add((short) prcid);
+                    datas.add((short) prcid2);
+                    datas.add((short) 2);
+                    datas.add((short) 1);
+                    // 杞Щ鍘熻皟鎷ㄦ牸瀛愭暟鎹�
+                    spianMapper.UpdateDBCage(ids, cage, cell);// 灏嗗師鏍煎瓙鏁版嵁鏇存柊鍒版柊鏍煎瓙閲�
+                    spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 0);// 娓呴櫎鍘熸牸瀛愭暟鎹�
+                    // 浼犺緭mes鏁版嵁,鍧愭爣锛屾暟鎹�
+                    S7control.getinstance().WriteWord(adddresslist, datas);
+                    datas.clear(); // 娓呯┖鏁翠釜鍒楄〃
+                    // 鍒ゆ柇璋冩嫧缁撴潫鍚庡啀娆″嚭鐗�
+                    // 濉叆鍑虹墖鏁版嵁
+                    datas.add((short) prcid);
+                    datas.add((short) 1000);
+                    datas.add((short) 1);
+                    datas.add((short) 1);
+                    S7control.getinstance().WriteWord(adddresslist, datas);
+                    return Result.success(cagecell); // 璋冩嫧浣嶇疆鐨勫弬鏁板唴瀹�
+
                 }
-                //鑾峰彇璋冩嫧浣嶇疆杩涜璋冩嫧
-                prcid2=cagecell.getPrcId();//璋冩嫧鐩爣浣峆RCID
-                ids=cagecell.getId();//璋冩嫧鐩爣浣岻D
-                //鏇存崲鐜荤拑鐨勭瀛�
-                spianMapper.UpdateDBCage(ids, cage, cell);//灏嗗師鏍煎瓙鏁版嵁鏇存柊鍒版柊鏍煎瓙閲�
-                spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 0);//娓呴櫎鍘熸牸瀛愭暟鎹�
-                //濉叆璋冩嫧鏁版嵁
-                datas.add((short)prcid);//璋冩嫧澶栫墖璧峰浣嶇疆
-                datas.add((short)prcid2);
-                datas.add((short)2);
-                datas.add((short)1);
-                //浼犺緭mes鏁版嵁,鍧愭爣锛屾暟鎹�
-                S7control.getinstance().WriteWord(adddresslist, datas);
-                datas.clear(); // 娓呯┖鏁翠釜鍒楄〃
-                //鍒ゆ柇璋冩嫧缁撴潫鍚庡啀娆″嚭鐗�,濉叆鍑虹墖鏁版嵁
-                datas.add((short)prcid);
-                datas.add((short)1000);
-                datas.add((short)1);
-                datas.add((short)1);
-                S7control.getinstance().WriteWord(adddresslist, datas);
-                 //淇敼鏁版嵁搴撶瀛愯〃(鍑虹墖)
-               
-                return Result.success(cagecell);  //璋冩嫧浣嶇疆鐨勫弬鏁板唴瀹�
-                
-               }else{//绗煎瓙鍙峰ぇ浜�5鏃�
-                StorageCage cagecell= spianMapper.selectGlassCage(cage,glasswidth,5,11);
-                if(cagecell==null){
-                    return Result.success(cagecell);
-                }
-                //鑾峰彇璋冩嫧浣嶇疆杩涜璋冩嫧
-                prcid2=cagecell.getPrcId();//璋冩嫧鐩爣浣峱rcID
-                ids=cagecell.getId();//璋冩嫧鐩爣浣岻D
-                //濉叆璋冩嫧鏁版嵁
-                datas.add((short)prcid);
-                datas.add((short)prcid2);
-                datas.add((short)2);
-                datas.add((short)1);
-                //杞Щ鍘熻皟鎷ㄦ牸瀛愭暟鎹�
-                spianMapper.UpdateDBCage(ids, cage, cell);//灏嗗師鏍煎瓙鏁版嵁鏇存柊鍒版柊鏍煎瓙閲�
-                spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 0);//娓呴櫎鍘熸牸瀛愭暟鎹�
-                //浼犺緭mes鏁版嵁,鍧愭爣锛屾暟鎹�
-                S7control.getinstance().WriteWord(adddresslist, datas);
-                datas.clear(); // 娓呯┖鏁翠釜鍒楄〃
-                //鍒ゆ柇璋冩嫧缁撴潫鍚庡啀娆″嚭鐗�
-                //濉叆鍑虹墖鏁版嵁
-                datas.add((short)prcid);
-                datas.add((short)1000);
-                datas.add((short)1);
-                datas.add((short)1);
-                S7control.getinstance().WriteWord(adddresslist, datas);
-                return Result.success(cagecell);  //璋冩嫧浣嶇疆鐨勫弬鏁板唴瀹�
-                
-               }
-               
-             }
+
+            }
         }
-    
-}
-    
+
+    }
+
+    /*** 淇敼鐢ㄦ埛* @throws SQLException */
+    // public static int updateUser(Glass user) throws SQLException {conn =
+    // getConn();
+    // String sql = "update t_user set name=?,gender=?,age=?,score=?"+ " where
+    // id=?";ps = conn.prepareStatement(sql);
+    // ps.setString(1, user.getName());ps.setString(2, user.getGender());
+    // ps.setInt(3, user.getAge());ps.setDouble(4, user.getScore());ps.setInt(5,
+    // user.getId());return ps.executeUpdate();}
+    // /*** 澧炲姞鐢ㄦ埛* @throws SQLException */
+    // public static int insertUser(User user) throws SQLException {
+    // conn = getConn();
+    // String sql = "insert into t_user(name,gender,age,score)"+ " values(?,?,?,?)";
+    // ps = conn.prepareStatement(sql);ps.setString(1,
+    // user.getName());ps.setString(2, user.getGender());
+    // ps.setInt(3, user.getAge());ps.setDouble(4, user.getScore());return
+    // ps.executeUpdate();
+    // }
+
 }
diff --git a/springboot-vue3/src/main/resources/application.properties b/springboot-vue3/src/main/resources/application.properties
index a6a6607..0c946de 100644
--- a/springboot-vue3/src/main/resources/application.properties
+++ b/springboot-vue3/src/main/resources/application.properties
@@ -6,7 +6,7 @@
 #\u6570\u636E\u5E93\u9A71\u52A8
 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
 #\u6570\u636E\u5E93\u8FDE\u63A5\u5730\u5740
-spring.datasource.url=jdbc:mysql://10.153.19.150:3306/canadames?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
+spring.datasource.url=jdbc:mysql://localhost:3306/canadames?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
 #\u6570\u636E\u5E93\u7528\u6237\u540D
 spring.datasource.username=root
 #\u6570\u636E\u5E93\u7528\u6237\u5BC6\u7801
@@ -21,4 +21,9 @@
 spring.main.allow-bean-definition-overriding=true
 #\u683C\u5F0F\u5316date\u65E5\u671F\u683C\u5F0F
 spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
-spring.jackson.time-zone=GMT+8
\ No newline at end of file
+spring.jackson.time-zone=GMT+8
+
+spring.mvc.cors.enabled=true
+spring.mvc.cors.allowed-origins=http://localhost:8080
+spring.mvc.cors.allowed-methods=GET,POST
+spring.mvc.cors.allowed-headers=*
\ No newline at end of file
diff --git a/springboot-vue3/src/main/resources/sql/canadames.sql b/springboot-vue3/src/main/resources/sql/canadames.sql
index 15a9308..09a2669 100644
--- a/springboot-vue3/src/main/resources/sql/canadames.sql
+++ b/springboot-vue3/src/main/resources/sql/canadames.sql
@@ -1,21 +1,79 @@
 /*
  Navicat MySQL Data Transfer
 
- Source Server         : 鏈湴
+ Source Server         : server-150
  Source Server Type    : MySQL
- Source Server Version : 80022
- Source Host           : localhost:3306
+ Source Server Version : 80019
+ Source Host           : 10.153.19.150:3306
  Source Schema         : canadames
 
  Target Server Type    : MySQL
- Target Server Version : 80022
+ Target Server Version : 80019
  File Encoding         : 65001
 
- Date: 05/09/2023 16:20:45
+ Date: 13/09/2023 09:48:14
 */
 
 SET NAMES utf8mb4;
 SET FOREIGN_KEY_CHECKS = 0;
+
+-- ----------------------------
+-- Table structure for alarmmg
+-- ----------------------------
+DROP TABLE IF EXISTS `alarmmg`;
+CREATE TABLE `alarmmg`  (
+  `id` int NOT NULL AUTO_INCREMENT COMMENT '涓婚敭',
+  `content` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '鎶ヨ淇℃伅',
+  `timeon` datetime(0) NULL DEFAULT NULL COMMENT '寮�濮嬫椂闂�',
+  `endTime` datetime(0) NULL DEFAULT NULL COMMENT '缁撴潫鏃堕棿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1338 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of alarmmg
+-- ----------------------------
+INSERT INTO `alarmmg` VALUES (1, 'D01 VFD error', '2023-09-11 10:07:17', '2023-09-11 10:07:51');
+INSERT INTO `alarmmg` VALUES (2, 'D02 VFD error', '2023-09-07 10:07:17', '2023-09-07 10:07:51');
+INSERT INTO `alarmmg` VALUES (1338, 'D02 VFD error', '2023-09-12 16:10:32', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1339, 'D04 VFD error', '2023-09-12 16:10:32', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1340, 'D06 VFD error', '2023-09-12 16:10:32', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1341, 'B02 VFD error', '2023-09-12 16:10:32', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1342, 'A02 VFD error', '2023-09-12 16:10:32', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1343, 'A02 servo turn error', '2023-09-12 16:10:32', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1344, 'A02 servo travel error', '2023-09-12 16:10:32', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1345, 'B02 servo travel error', '2023-09-12 16:10:32', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1346, 'D01 pos error', '2023-09-12 16:10:32', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1347, 'D02 pos error', '2023-09-12 16:10:32', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1348, 'D03 pos error', '2023-09-12 16:10:32', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1349, 'D04 pos error', '2023-09-12 16:16:48', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1350, 'D05 pos error', '2023-09-12 16:16:48', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1351, 'D06 pos error', '2023-09-12 16:16:48', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1352, 'A01 pos error', '2023-09-12 16:16:48', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1353, 'A02 pos error', '2023-09-12 16:16:48', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1354, 'B01 IN pos error', '2023-09-12 16:16:48', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1355, 'B01 OUT pos error', '2023-09-12 16:16:48', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1356, 'B02 IN pos error', '2023-09-12 16:16:48', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1357, 'B02 OUT pos error', '2023-09-12 16:16:48', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1358, 'D01 VFD error', '2023-09-12 16:22:36', NULL);
+INSERT INTO `alarmmg` VALUES (1359, 'D03 VFD error', '2023-09-12 16:22:36', NULL);
+INSERT INTO `alarmmg` VALUES (1360, 'D05 VFD error', '2023-09-12 16:22:36', NULL);
+INSERT INTO `alarmmg` VALUES (1361, 'B01 VFD error', '2023-09-12 16:22:36', NULL);
+INSERT INTO `alarmmg` VALUES (1362, 'A01 VFD error', '2023-09-12 16:22:36', NULL);
+INSERT INTO `alarmmg` VALUES (1363, 'A01 servo turn error', '2023-09-12 16:22:36', NULL);
+INSERT INTO `alarmmg` VALUES (1364, 'A01 servo travel error', '2023-09-12 16:22:36', NULL);
+INSERT INTO `alarmmg` VALUES (1365, 'B01 servo travel error', '2023-09-12 16:22:36', NULL);
+INSERT INTO `alarmmg` VALUES (1366, 'D01 DEC error', '2023-09-12 16:22:36', NULL);
+INSERT INTO `alarmmg` VALUES (1367, 'D02 DEC error', '2023-09-12 16:22:36', NULL);
+INSERT INTO `alarmmg` VALUES (1368, 'D03 DEC error', '2023-09-12 16:22:36', NULL);
+INSERT INTO `alarmmg` VALUES (1369, 'D04 DEC error', '2023-09-12 16:22:36', NULL);
+INSERT INTO `alarmmg` VALUES (1370, 'D05 DEC error', '2023-09-12 16:22:36', NULL);
+INSERT INTO `alarmmg` VALUES (1371, 'D06 DEC error', '2023-09-12 16:22:36', NULL);
+INSERT INTO `alarmmg` VALUES (1372, 'A01 DEC error', '2023-09-12 16:22:36', NULL);
+INSERT INTO `alarmmg` VALUES (1373, 'A02 DEC error', '2023-09-12 16:22:36', NULL);
+INSERT INTO `alarmmg` VALUES (1374, 'B01 IN DEC error', '2023-09-12 16:22:36', NULL);
+INSERT INTO `alarmmg` VALUES (1375, 'B01 OUT DEC error', '2023-09-12 16:22:36', NULL);
+INSERT INTO `alarmmg` VALUES (1376, 'B02 IN DEC error', '2023-09-12 16:22:36', NULL);
+INSERT INTO `alarmmg` VALUES (1377, 'B02 OUT DEC error', '2023-09-12 16:22:36', NULL);
 
 -- ----------------------------
 -- Table structure for category
@@ -32,7 +90,7 @@
   `create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '鍒涘缓鏃堕棿',
   `update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '鏇存柊鏃堕棿',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '鍟嗗搧鍒嗙被' ROW_FORMAT = Dynamic;
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '鍟嗗搧鍒嗙被' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
 -- Records of category
@@ -62,7 +120,7 @@
   `last_product_count_date` date NULL DEFAULT NULL,
   PRIMARY KEY (`id`) USING BTREE,
   UNIQUE INDEX `device_id_idx`(`device_id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 46 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB AUTO_INCREMENT = 47 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
 -- Records of device
@@ -82,6 +140,26 @@
 INSERT INTO `device` VALUES (46, 'FS220666-AU1B60', 'admin', '2023-04-04 11:38:34', '寮犲媷AU1B60', '鏈惎鐢�', '{\"Ver\":\"1.0\",\"iTopDos\":[96],\"iTopRightMerge\":[],\"iBtmEnd\":[],\"iTopFront\":[],\"iBtmRow\":[12],\"iBtmLeftMerge\":[],\"iTopLeftMerge\":[],\"iTopColumn\":[8],\"iBtmDos\":[96],\"iBtmSingline\":[],\"iBtmFront\":[],\"iBtmRightMerge\":[],\"InterfaceName\":\"IDeviceInfor\",\"iTopEnd\":[],\"iTopRow\":[12],\"iTopSingline\":[],\"DeviceName\":\"FS220666-AU1B60\",\"iBtmColumn\":[8]}', '{\"Ver\":\"1.0\",\"Datas\":[{\"Binding\":\"Datas[0]\",\"Unit\":\"\",\"Name\":\"CurrentStatus\"},{\"Binding\":\"Datas[1]\",\"Unit\":\"鈩僜",\"Name\":\"RtTemperature\"},{\"Binding\":\"Datas[2]\",\"Unit\":\"%\",\"Name\":\"PvPower\"},{\"Binding\":\"Datas[3]\",\"Unit\":\"kw\",\"Name\":\"CurveTotalPower\"}],\"Segments\":[{\"Type\":\"O\",\"Controls\":[{\"Binding\":\"GlassLength[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":3,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"ToolGlassLength\"},{\"Binding\":\"YieldCount[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":4,\"Unit\":\"\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"GlassOutPut\"}],\"Width\":0.25,\"Name\":\"Load\"},{\"Type\":\"F\",\"Controls\":[{\"Binding\":\"GlassLength[1]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":3,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"ToolGlassLength\"},{\"Binding\":\"TopHeatFansFrequency[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":0,\"Unit\":\"Hz\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"\"},{\"Binding\":\"BtmHeatFansFrequency[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":4,\"Unit\":\"Hz\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"\"}],\"Width\":0.25,\"Name\":\"鐐変綋娈礬"},{\"Type\":\"Q\",\"Controls\":[{\"Binding\":\"GlassLength[2]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":3,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"ToolGlassLength\"},{\"Binding\":\"TopQuenchDist[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":0,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"\"},{\"Binding\":\"BtmQuenchDist[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":4,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"\"}],\"Width\":0.25,\"Name\":\"椋庢爡娈礬"},{\"Type\":\"O\",\"Controls\":[{\"Binding\":\"GlassLength[3]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":3,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"ToolGlassLength\"},{\"Binding\":\"YieldCount[1]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":4,\"Unit\":\"\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"GlassOutPut\"}],\"Width\":0.25,\"Name\":\"涓嬬墖娈礬"}],\"InterfaceName\":\"IDeviceMapInfor\",\"DeviceName\":\"FS220666-AU1B60\"}', '2023-04-04 11:38:34', '', '', '2023-04-04', '2023-04-04', NULL, NULL, NULL);
 
 -- ----------------------------
+-- Table structure for glass
+-- ----------------------------
+DROP TABLE IF EXISTS `glass`;
+CREATE TABLE `glass`  (
+  `id` int NOT NULL AUTO_INCREMENT,
+  `glassid` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+  `orderid` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+  `width` decimal(10, 2) NULL DEFAULT NULL,
+  `height` decimal(10, 2) NULL DEFAULT NULL,
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of glass
+-- ----------------------------
+INSERT INTO `glass` VALUES (1, '001', '1145', 1400.00, 1200.00);
+INSERT INTO `glass` VALUES (2, '002', '1145', 1500.00, 1100.00);
+INSERT INTO `glass` VALUES (3, '112', '1145', 1220.00, 1500.00);
+
+-- ----------------------------
 -- Table structure for menu_list
 -- ----------------------------
 DROP TABLE IF EXISTS `menu_list`;
@@ -96,7 +174,7 @@
   `create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '鍒涘缓鏃堕棿',
   `update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '鏇存柊鏃堕棿',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 61 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
+) ENGINE = InnoDB AUTO_INCREMENT = 61 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
 -- Records of menu_list
@@ -106,12 +184,32 @@
 INSERT INTO `menu_list` VALUES (5, NULL, '鏉冮檺绠$悊', 'el-icon-collection-tag', 5, '', 1, '2021-11-28 14:30:27', '2021-11-28 15:06:04');
 INSERT INTO `menu_list` VALUES (6, NULL, '瑙掕壊绠$悊', 'el-icon-s-flag', 6, '', 1, '2021-11-28 14:30:27', '2021-11-28 15:06:04');
 INSERT INTO `menu_list` VALUES (7, 1, '鐢ㄦ埛鍒楄〃', '', 7, 'user', 1, '2021-11-28 14:30:27', '2021-11-28 15:06:04');
+INSERT INTO `menu_list` VALUES (8, 9, '涓婚〉', 'el-icon-menu', 8, 'home', 1, '2023-09-08 10:56:12', '2023-09-08 11:02:36');
+INSERT INTO `menu_list` VALUES (9, NULL, '涓婚〉', 'el-icon-menu', 0, 'home', 1, '2023-09-08 10:43:34', '2023-09-08 11:02:32');
 INSERT INTO `menu_list` VALUES (11, 5, '鏉冮檺鍒楄〃', '', 11, 'power', 1, '2021-11-28 14:30:28', '2021-11-28 15:06:04');
 INSERT INTO `menu_list` VALUES (12, 6, '瑙掕壊鍒楄〃', '', 12, 'role', 1, '2021-11-28 14:30:28', '2021-11-28 15:06:04');
-INSERT INTO `menu_list` VALUES (49, 2, '鎶ヨ淇℃伅', '', 49, 'Electrical/Action', 1, '2021-11-28 14:30:28', '2023-09-01 16:33:29');
-INSERT INTO `menu_list` VALUES (51, 2, 'I/O鐘舵��', NULL, 51, 'Electrical/State', 1, '2023-08-25 13:29:13', '2023-09-01 16:34:03');
-INSERT INTO `menu_list` VALUES (52, 2, '寮�鍏虫帶鍒�', NULL, 52, 'Electrical/Sign', 1, '2023-08-25 13:29:18', '2023-09-01 16:33:48');
+INSERT INTO `menu_list` VALUES (49, 2, '鎶ヨ淇℃伅', '', 49, 'Electrical/alarm', 1, '2021-11-28 14:30:28', '2023-09-08 11:14:08');
+INSERT INTO `menu_list` VALUES (51, 2, '璁惧鐘舵��', NULL, 51, 'Electrical/State', 1, '2023-08-25 13:29:13', '2023-09-11 17:07:08');
+INSERT INTO `menu_list` VALUES (52, 2, '寮�鍏虫帶鍒�', NULL, 52, 'Electrical/Action', 1, '2023-08-25 13:29:18', '2023-09-12 17:02:54');
 INSERT INTO `menu_list` VALUES (53, 2, '鍙傛暟涓嬪彂', NULL, 53, 'Electrical/Parameter', 1, '2023-08-25 13:29:22', '2023-09-01 16:32:29');
+INSERT INTO `menu_list` VALUES (54, 2, 'IO鐘舵��', NULL, 53, 'Electrical/Sign', 1, '2023-08-25 13:29:22', '2023-09-11 17:06:16');
+
+-- ----------------------------
+-- Table structure for order_out
+-- ----------------------------
+DROP TABLE IF EXISTS `order_out`;
+CREATE TABLE `order_out`  (
+  `id` int NOT NULL AUTO_INCREMENT COMMENT '搴忓彿',
+  `order_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '璁㈠崟鍙�',
+  `state` int NULL DEFAULT NULL COMMENT '鐘舵��(0锛氭寜姝よ鍗曞彿鍑虹墖锛�1缁撴潫鍑虹墖)',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of order_out
+-- ----------------------------
+INSERT INTO `order_out` VALUES (1, 'NG2202302', 1);
+INSERT INTO `order_out` VALUES (2, 'NG2202302', 0);
 
 -- ----------------------------
 -- Table structure for permission
@@ -125,7 +223,7 @@
   `create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '鍒涘缓鏃堕棿',
   `update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '鏇存柊鏃堕棿',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 32 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '鏉冮檺' ROW_FORMAT = Dynamic;
+) ENGINE = InnoDB AUTO_INCREMENT = 32 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '鏉冮檺' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
 -- Records of permission
@@ -167,13 +265,13 @@
   `create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '鍒涘缓鏃堕棿',
   `update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '鏇存柊鏃堕棿',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '瑙掕壊' ROW_FORMAT = Dynamic;
+) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '瑙掕壊' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
 -- Records of role
 -- ----------------------------
 INSERT INTO `role` VALUES (1, NULL, 'admin', '绯荤粺绠$悊鍛�', 1, '2021-01-10 22:49:17', '2021-03-29 15:19:15');
-INSERT INTO `role` VALUES (2, 1, 'user', '鏅�氱敤鎴�', 1, '2021-01-13 00:28:58', '2021-03-29 15:19:15');
+INSERT INTO `role` VALUES (2, 1, 'user2', '鏅�氱敤鎴�', 1, '2021-01-13 00:28:58', '2021-03-29 15:19:15');
 INSERT INTO `role` VALUES (5, 1, 'user3', '777', 1, '2023-08-24 10:02:58', '2023-08-28 14:28:22');
 
 -- ----------------------------
@@ -188,7 +286,7 @@
   `create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '鍒涘缓鏃堕棿',
   `update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '鏇存柊鏃堕棿',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 54 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '瑙掕壊鍜岃彍鍗曞叧鑱旇〃' ROW_FORMAT = Dynamic;
+) ENGINE = InnoDB AUTO_INCREMENT = 57 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '瑙掕壊鍜岃彍鍗曞叧鑱旇〃' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
 -- Records of role_menu_list
@@ -231,6 +329,9 @@
 INSERT INTO `role_menu_list` VALUES (51, 2, 49, 1, '2023-08-28 15:14:27', '2023-08-28 15:53:34');
 INSERT INTO `role_menu_list` VALUES (52, 2, 1, 1, '2023-08-30 16:28:57', '2023-08-30 16:28:57');
 INSERT INTO `role_menu_list` VALUES (53, 2, 7, 1, '2023-08-30 16:29:05', '2023-08-30 16:29:05');
+INSERT INTO `role_menu_list` VALUES (54, 1, 9, 1, '2023-09-08 10:55:54', '2023-09-08 11:02:55');
+INSERT INTO `role_menu_list` VALUES (55, 1, 8, 1, '2023-09-08 10:56:45', '2023-09-08 11:01:43');
+INSERT INTO `role_menu_list` VALUES (56, 2, 54, 1, '2023-09-11 17:09:17', '2023-09-11 17:09:24');
 
 -- ----------------------------
 -- Table structure for role_permission
@@ -244,7 +345,7 @@
   `create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '鍒涘缓鏃堕棿',
   `update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '鏇存柊鏃堕棿',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 76 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '瑙掕壊鏉冮檺' ROW_FORMAT = Dynamic;
+) ENGINE = InnoDB AUTO_INCREMENT = 76 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '瑙掕壊鏉冮檺' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
 -- Records of role_permission
@@ -293,9 +394,452 @@
 INSERT INTO `role_permission` VALUES (69, 2, 26, 1, '2021-11-28 15:07:54', '2021-11-28 15:07:54');
 INSERT INTO `role_permission` VALUES (70, 2, 27, 1, '2021-11-28 15:07:54', '2021-11-28 15:07:54');
 INSERT INTO `role_permission` VALUES (71, 2, 28, 1, '2021-11-28 15:07:54', '2021-11-28 15:07:54');
-INSERT INTO `role_permission` VALUES (72, 2, 30, 1, '2023-08-24 08:55:34', '2023-08-24 08:55:34');
-INSERT INTO `role_permission` VALUES (73, 2, 29, 1, '2023-08-24 08:56:15', '2023-08-28 15:33:14');
+INSERT INTO `role_permission` VALUES (72, 2, 30, 0, '2023-08-24 08:55:34', '2023-08-24 08:55:34');
+INSERT INTO `role_permission` VALUES (73, 2, 29, 0, '2023-08-24 08:56:15', '2023-08-28 15:33:14');
 INSERT INTO `role_permission` VALUES (74, 2, 1, 1, '2023-08-30 16:29:46', '2023-08-30 16:29:46');
+
+-- ----------------------------
+-- Table structure for storage_cage
+-- ----------------------------
+DROP TABLE IF EXISTS `storage_cage`;
+CREATE TABLE `storage_cage`  (
+  `id` int NOT NULL AUTO_INCREMENT COMMENT '搴忓彿',
+  `glass_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '鐜荤拑id',
+  `order_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '璁㈠崟id',
+  `cage` int NULL DEFAULT NULL COMMENT '绗煎瓙id',
+  `cell` int NULL DEFAULT NULL COMMENT '鏍煎瓙id',
+  `tier` int NULL DEFAULT NULL COMMENT '鏍煎瓙灞俰d',
+  `width` decimal(7, 2) NULL DEFAULT NULL COMMENT '鏍煎瓙瀹�',
+  `glasswidth` decimal(7, 2) NULL DEFAULT NULL COMMENT '鐜荤拑瀹�',
+  `glassheight` decimal(7, 2) NULL DEFAULT NULL COMMENT '鐜荤拑楂�',
+  `state` int NULL DEFAULT NULL COMMENT '鐘舵�侊紙0锛氭棤鐜荤拑锛�1锛氭湁鐜荤拑锛�2锛氳繘鐗囦腑锛�3锛氬嚭鐗囦腑锛�4锛氳皟搴︿腑锛�',
+  `coating` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '娑傚眰',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 421 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of storage_cage
+-- ----------------------------
+INSERT INTO `storage_cage` VALUES (1, NULL, NULL, 1, 1, 1, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (2, NULL, NULL, 1, 1, 2, 1760.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (3, NULL, NULL, 1, 2, 1, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (4, NULL, NULL, 1, 2, 2, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (5, NULL, NULL, 1, 3, 1, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (6, NULL, NULL, 1, 3, 2, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (7, NULL, NULL, 1, 4, 1, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (8, NULL, NULL, 1, 4, 2, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (9, NULL, NULL, 1, 5, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (10, NULL, NULL, 1, 5, 2, 1600.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (11, NULL, NULL, 1, 6, 1, 1600.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (12, '12', 'NG2202301', 1, 6, 2, 1602.00, 0.00, 2.00, 2, '2');
+INSERT INTO `storage_cage` VALUES (13, NULL, NULL, 1, 7, 1, 1600.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (14, '122', 'NG2202302', 1, 7, 2, 1500.00, 2.00, 2.00, 3, '3');
+INSERT INTO `storage_cage` VALUES (15, NULL, NULL, 1, 8, 1, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (16, NULL, NULL, 1, 8, 2, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (17, NULL, NULL, 1, 9, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (18, NULL, NULL, 1, 9, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (19, NULL, NULL, 1, 10, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (20, NULL, NULL, 1, 10, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (21, NULL, NULL, 1, 11, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (22, NULL, NULL, 1, 11, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (23, NULL, NULL, 1, 12, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (24, NULL, NULL, 1, 12, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (25, NULL, NULL, 1, 13, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (26, NULL, NULL, 1, 13, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (27, NULL, NULL, 1, 14, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (28, NULL, NULL, 1, 14, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (29, NULL, NULL, 1, 15, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (30, NULL, NULL, 1, 15, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (31, NULL, NULL, 1, 16, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (32, NULL, NULL, 1, 16, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (33, NULL, NULL, 1, 17, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (34, NULL, NULL, 1, 17, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (35, NULL, NULL, 1, 18, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (36, NULL, NULL, 1, 18, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (37, NULL, NULL, 1, 19, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (38, NULL, NULL, 1, 19, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (39, NULL, NULL, 1, 20, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (40, NULL, NULL, 1, 20, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (41, NULL, NULL, 1, 21, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (42, NULL, NULL, 1, 21, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (43, NULL, NULL, 2, 1, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (44, NULL, NULL, 2, 1, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (45, NULL, NULL, 2, 2, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (46, NULL, NULL, 2, 2, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (47, NULL, NULL, 2, 3, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (48, NULL, NULL, 2, 3, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (49, '112', '1145', 2, 4, 1, 330.00, 1220.00, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (50, NULL, NULL, 2, 4, 2, 1550.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (51, NULL, NULL, 2, 5, 1, 1550.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (52, NULL, NULL, 2, 5, 2, 1550.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (53, NULL, NULL, 2, 6, 1, 1550.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (54, NULL, NULL, 2, 6, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (55, NULL, NULL, 2, 7, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (56, NULL, NULL, 2, 7, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (57, NULL, NULL, 2, 8, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (58, NULL, NULL, 2, 8, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (59, NULL, NULL, 2, 9, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (60, NULL, NULL, 2, 9, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (61, NULL, NULL, 2, 10, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (62, NULL, NULL, 2, 10, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (63, NULL, NULL, 2, 11, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (64, NULL, NULL, 2, 11, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (65, NULL, NULL, 2, 12, 1, 1760.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (66, NULL, NULL, 2, 12, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (67, NULL, NULL, 2, 13, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (68, NULL, NULL, 2, 13, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (69, NULL, NULL, 2, 14, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (70, NULL, NULL, 2, 14, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (71, NULL, NULL, 2, 15, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (72, NULL, NULL, 2, 15, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (73, NULL, NULL, 2, 16, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (74, NULL, NULL, 2, 16, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (75, NULL, NULL, 2, 17, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (76, NULL, NULL, 2, 17, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (77, NULL, NULL, 2, 18, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (78, NULL, NULL, 2, 18, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (79, NULL, NULL, 2, 19, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (80, NULL, NULL, 2, 19, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (81, NULL, NULL, 2, 20, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (82, NULL, NULL, 2, 20, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (83, NULL, NULL, 2, 21, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (84, NULL, NULL, 2, 21, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (85, NULL, NULL, 3, 1, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (86, NULL, NULL, 3, 1, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (87, NULL, NULL, 3, 2, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (88, '116', '112', 3, 2, 2, 1500.00, 1200.00, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (89, '117', '112', 3, 3, 1, 1500.00, 1200.00, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (90, '118', '112', 3, 3, 2, 1500.00, 1200.00, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (91, '119', '112', 3, 4, 1, 1500.00, 1200.00, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (92, '120', '112', 3, 4, 2, 1500.00, 1200.00, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (93, '121', '112', 3, 5, 1, 1500.00, 1200.00, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (94, '', '', 3, 5, 2, 2700.00, 0.00, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (95, NULL, NULL, 3, 6, 1, 280.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (96, NULL, NULL, 3, 6, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (97, NULL, NULL, 3, 7, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (98, NULL, NULL, 3, 7, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (99, NULL, NULL, 3, 8, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (100, NULL, NULL, 3, 8, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (101, NULL, NULL, 3, 9, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (102, NULL, NULL, 3, 9, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (103, NULL, NULL, 3, 10, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (104, NULL, NULL, 3, 10, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (105, NULL, NULL, 3, 11, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (106, NULL, NULL, 3, 11, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (107, NULL, NULL, 3, 12, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (108, NULL, NULL, 3, 12, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (109, NULL, NULL, 3, 13, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (110, NULL, NULL, 3, 13, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (111, NULL, NULL, 3, 14, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (112, NULL, NULL, 3, 14, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (113, NULL, NULL, 3, 15, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (114, NULL, NULL, 3, 15, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (115, NULL, NULL, 3, 16, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (116, NULL, NULL, 3, 16, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (117, NULL, NULL, 3, 17, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (118, NULL, NULL, 3, 17, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (119, NULL, NULL, 3, 18, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (120, NULL, NULL, 3, 18, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (121, NULL, NULL, 3, 19, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (122, NULL, NULL, 3, 19, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (123, NULL, NULL, 3, 20, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (124, NULL, NULL, 3, 20, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (125, NULL, NULL, 3, 21, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (126, NULL, NULL, 3, 21, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (127, NULL, NULL, 4, 1, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (128, NULL, NULL, 4, 1, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (129, NULL, NULL, 4, 2, 1, 1550.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (130, NULL, NULL, 4, 2, 2, 1550.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (131, NULL, NULL, 4, 3, 1, 1550.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (132, NULL, NULL, 4, 3, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (133, NULL, NULL, 4, 4, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (134, NULL, NULL, 4, 4, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (135, NULL, NULL, 4, 5, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (136, NULL, NULL, 4, 5, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (137, NULL, NULL, 4, 6, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (138, NULL, NULL, 4, 6, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (139, NULL, NULL, 4, 7, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (140, NULL, NULL, 4, 7, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (141, '123', '112', 4, 8, 1, 1500.00, 1200.00, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (142, '124', '112', 4, 8, 2, 1500.00, 1200.00, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (143, '125', '112', 4, 9, 1, 1500.00, 1200.00, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (144, '126', '112', 4, 9, 2, 1500.00, 1200.00, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (145, '127', '112', 4, 10, 1, 1500.00, 1200.00, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (146, '128', '112', 4, 10, 2, 1500.00, 1200.00, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (147, NULL, NULL, 4, 11, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (148, NULL, NULL, 4, 11, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (149, NULL, NULL, 4, 12, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (150, NULL, NULL, 4, 12, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (151, NULL, NULL, 4, 13, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (152, NULL, NULL, 4, 13, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (153, NULL, NULL, 4, 14, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (154, NULL, NULL, 4, 14, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (155, NULL, NULL, 4, 15, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (156, NULL, NULL, 4, 15, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (157, NULL, NULL, 4, 16, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (158, NULL, NULL, 4, 16, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (159, NULL, NULL, 4, 17, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (160, NULL, NULL, 4, 17, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (161, NULL, NULL, 4, 18, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (162, NULL, NULL, 4, 18, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (163, NULL, NULL, 4, 19, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (164, NULL, NULL, 4, 19, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (165, NULL, NULL, 4, 20, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (166, NULL, NULL, 4, 20, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (167, NULL, NULL, 4, 21, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (168, NULL, NULL, 4, 21, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (169, NULL, NULL, 5, 1, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (170, NULL, NULL, 5, 1, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (171, NULL, NULL, 5, 2, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (172, NULL, NULL, 5, 2, 2, 1550.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (173, NULL, NULL, 5, 3, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (174, NULL, NULL, 5, 3, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (175, NULL, NULL, 5, 4, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (176, NULL, NULL, 5, 4, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (177, NULL, NULL, 5, 5, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (178, NULL, NULL, 5, 5, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (179, NULL, NULL, 5, 6, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (180, NULL, NULL, 5, 6, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (181, NULL, NULL, 5, 7, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (182, NULL, NULL, 5, 7, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (183, NULL, NULL, 5, 8, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (184, NULL, NULL, 5, 8, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (185, NULL, NULL, 5, 9, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (186, NULL, NULL, 5, 9, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (187, NULL, NULL, 5, 10, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (188, NULL, NULL, 5, 10, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (189, NULL, NULL, 5, 11, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (190, NULL, NULL, 5, 11, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (191, NULL, NULL, 5, 12, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (192, NULL, NULL, 5, 12, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (193, NULL, NULL, 5, 13, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (194, NULL, NULL, 5, 13, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (195, NULL, NULL, 5, 14, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (196, NULL, NULL, 5, 14, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (197, NULL, NULL, 5, 15, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (198, NULL, NULL, 5, 15, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (199, NULL, NULL, 5, 16, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (200, NULL, NULL, 5, 16, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (201, NULL, NULL, 5, 17, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (202, NULL, NULL, 5, 17, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (203, NULL, NULL, 5, 18, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (204, NULL, NULL, 5, 18, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (205, NULL, NULL, 5, 19, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (206, NULL, NULL, 5, 19, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (207, NULL, NULL, 5, 20, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (208, NULL, NULL, 5, 20, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (209, NULL, NULL, 5, 21, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (210, NULL, NULL, 5, 21, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (211, '129', '112', 6, 1, 1, 1500.00, 1200.00, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (212, '130', '113', 6, 1, 2, 1500.00, 1200.00, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (213, '', '', 6, 2, 1, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (214, NULL, NULL, 6, 2, 2, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (215, NULL, NULL, 6, 3, 1, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (216, NULL, NULL, 6, 3, 2, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (217, NULL, NULL, 6, 4, 1, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (218, NULL, NULL, 6, 4, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (219, NULL, NULL, 6, 5, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (220, NULL, NULL, 6, 5, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (221, NULL, NULL, 6, 6, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (222, NULL, NULL, 6, 6, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (223, NULL, NULL, 6, 7, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (224, NULL, NULL, 6, 7, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (225, NULL, NULL, 6, 8, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (226, NULL, NULL, 6, 8, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (227, NULL, NULL, 6, 9, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (228, NULL, NULL, 6, 9, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (229, NULL, NULL, 6, 10, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (230, NULL, NULL, 6, 10, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (231, NULL, NULL, 6, 11, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (232, NULL, NULL, 6, 11, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (233, NULL, NULL, 6, 12, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (234, NULL, NULL, 6, 12, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (235, NULL, NULL, 6, 13, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (236, NULL, NULL, 6, 13, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (237, NULL, NULL, 6, 14, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (238, NULL, NULL, 6, 14, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (239, NULL, NULL, 6, 15, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (240, NULL, NULL, 6, 15, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (241, NULL, NULL, 6, 16, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (242, NULL, NULL, 6, 16, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (243, NULL, NULL, 6, 17, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (244, NULL, NULL, 6, 17, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (245, NULL, NULL, 6, 18, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (246, NULL, NULL, 6, 18, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (247, NULL, NULL, 6, 19, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (248, NULL, NULL, 6, 19, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (249, NULL, NULL, 6, 20, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (250, NULL, NULL, 6, 20, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (251, NULL, NULL, 6, 21, 1, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (252, NULL, NULL, 6, 21, 2, 1788.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (253, '1', '1145', 7, 1, 1, 388.00, 1400.00, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (254, '112', '1145', 7, 1, 2, 568.00, 1220.00, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (255, '112', '1145', 7, 2, 1, 568.00, 1220.00, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (256, '001', '1145', 7, 2, 2, 1788.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (257, NULL, NULL, 7, 3, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (258, '112', '1145', 7, 3, 2, 280.00, 1220.00, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (259, NULL, NULL, 7, 4, 1, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (260, NULL, NULL, 7, 4, 2, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (261, NULL, NULL, 7, 5, 1, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (262, NULL, NULL, 7, 5, 2, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (263, NULL, NULL, 7, 6, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (264, NULL, NULL, 7, 6, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (265, NULL, NULL, 7, 7, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (266, NULL, NULL, 7, 7, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (267, NULL, NULL, 7, 8, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (268, NULL, NULL, 7, 8, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (269, NULL, NULL, 7, 9, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (270, NULL, NULL, 7, 9, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (271, NULL, NULL, 7, 10, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (272, NULL, NULL, 7, 10, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (273, NULL, NULL, 7, 11, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (274, NULL, NULL, 7, 11, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (275, NULL, NULL, 7, 12, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (276, NULL, NULL, 7, 12, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (277, NULL, NULL, 7, 13, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (278, NULL, NULL, 7, 13, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (279, NULL, NULL, 7, 14, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (280, NULL, NULL, 7, 14, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (281, NULL, NULL, 7, 15, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (282, NULL, NULL, 7, 15, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (283, NULL, NULL, 7, 16, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (284, NULL, NULL, 7, 16, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (285, NULL, NULL, 7, 17, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (286, NULL, NULL, 7, 17, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (287, NULL, NULL, 7, 18, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (288, NULL, NULL, 7, 18, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (289, NULL, NULL, 7, 19, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (290, NULL, NULL, 7, 19, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (291, NULL, NULL, 7, 20, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (292, NULL, NULL, 7, 20, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (293, NULL, NULL, 7, 21, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (294, NULL, NULL, 7, 21, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (295, NULL, NULL, 8, 1, 1, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (296, NULL, NULL, 8, 1, 2, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (297, NULL, NULL, 8, 2, 1, 1788.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (298, NULL, NULL, 8, 2, 2, 1788.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (299, NULL, NULL, 8, 3, 1, 1788.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (300, NULL, NULL, 8, 3, 2, 1788.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (301, NULL, NULL, 8, 4, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (302, NULL, NULL, 8, 4, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (303, NULL, NULL, 8, 5, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (304, NULL, NULL, 8, 5, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (305, NULL, NULL, 8, 6, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (306, NULL, NULL, 8, 6, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (307, NULL, NULL, 8, 7, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (308, NULL, NULL, 8, 7, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (309, NULL, NULL, 8, 8, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (310, NULL, NULL, 8, 8, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (311, NULL, NULL, 8, 9, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (312, NULL, NULL, 8, 9, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (313, NULL, NULL, 8, 10, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (314, NULL, NULL, 8, 10, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (315, NULL, NULL, 8, 11, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (316, NULL, NULL, 8, 11, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (317, NULL, NULL, 8, 12, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (318, NULL, NULL, 8, 12, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (319, NULL, NULL, 8, 13, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (320, NULL, NULL, 8, 13, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (321, NULL, NULL, 8, 14, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (322, NULL, NULL, 8, 14, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (323, NULL, NULL, 8, 15, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (324, NULL, NULL, 8, 15, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (325, NULL, NULL, 8, 16, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (326, NULL, NULL, 8, 16, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (327, NULL, NULL, 8, 17, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (328, NULL, NULL, 8, 17, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (329, NULL, NULL, 8, 18, 1, 1788.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (330, NULL, NULL, 8, 18, 2, 1788.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (331, NULL, NULL, 8, 19, 1, 1788.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (332, NULL, NULL, 8, 19, 2, 1788.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (333, NULL, NULL, 8, 20, 1, 1788.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (334, NULL, NULL, 8, 20, 2, 1788.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (335, NULL, NULL, 8, 21, 1, 1788.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (336, NULL, NULL, 8, 21, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (337, NULL, NULL, 9, 1, 1, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (338, NULL, NULL, 9, 1, 2, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (339, NULL, NULL, 9, 2, 1, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (340, NULL, NULL, 9, 2, 2, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (341, NULL, NULL, 9, 3, 1, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (342, NULL, NULL, 9, 3, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (343, NULL, NULL, 9, 4, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (344, NULL, NULL, 9, 4, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (345, NULL, NULL, 9, 5, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (346, NULL, NULL, 9, 5, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (347, NULL, NULL, 9, 6, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (348, NULL, NULL, 9, 6, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (349, NULL, NULL, 9, 7, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (350, NULL, NULL, 9, 7, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (351, NULL, NULL, 9, 8, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (352, NULL, NULL, 9, 8, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (353, NULL, NULL, 9, 9, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (354, NULL, NULL, 9, 9, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (355, NULL, NULL, 9, 10, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (356, NULL, NULL, 9, 10, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (357, NULL, NULL, 9, 11, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (358, NULL, NULL, 9, 11, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (359, NULL, NULL, 9, 12, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (360, NULL, NULL, 9, 12, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (361, NULL, NULL, 9, 13, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (362, NULL, NULL, 9, 13, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (363, NULL, NULL, 9, 14, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (364, NULL, NULL, 9, 14, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (365, NULL, NULL, 9, 15, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (366, NULL, NULL, 9, 15, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (367, NULL, NULL, 9, 16, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (368, NULL, NULL, 9, 16, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (369, NULL, NULL, 9, 17, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (370, NULL, NULL, 9, 17, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (371, NULL, NULL, 9, 18, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (372, NULL, NULL, 9, 18, 2, 1788.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (373, NULL, NULL, 9, 19, 1, 1788.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (374, NULL, NULL, 9, 19, 2, 1788.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (375, NULL, NULL, 9, 20, 1, 1788.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (376, NULL, NULL, 9, 20, 2, 1788.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (377, NULL, NULL, 9, 21, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (378, NULL, NULL, 9, 21, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (379, NULL, NULL, 10, 1, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (380, NULL, NULL, 10, 1, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (381, NULL, NULL, 10, 2, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (382, NULL, NULL, 10, 2, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (383, NULL, NULL, 10, 3, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (384, NULL, NULL, 10, 3, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (385, NULL, NULL, 10, 4, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (386, NULL, NULL, 10, 4, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (387, NULL, NULL, 10, 5, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (388, NULL, NULL, 10, 5, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (389, NULL, NULL, 10, 6, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (390, NULL, NULL, 10, 6, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (391, NULL, NULL, 10, 7, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (392, NULL, NULL, 10, 7, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (393, NULL, NULL, 10, 8, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (394, NULL, NULL, 10, 8, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (395, NULL, NULL, 10, 9, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (396, NULL, NULL, 10, 9, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (397, NULL, NULL, 10, 10, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (398, NULL, NULL, 10, 10, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (399, NULL, NULL, 10, 11, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (400, NULL, NULL, 10, 11, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (401, NULL, NULL, 10, 12, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (402, NULL, NULL, 10, 12, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (403, NULL, NULL, 10, 13, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (404, NULL, NULL, 10, 13, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (405, NULL, NULL, 10, 14, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (406, NULL, NULL, 10, 14, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (407, NULL, NULL, 10, 15, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (408, NULL, NULL, 10, 15, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (409, NULL, NULL, 10, 16, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (410, NULL, NULL, 10, 16, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (411, NULL, NULL, 10, 17, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (412, NULL, NULL, 10, 17, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (413, NULL, NULL, 10, 18, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (414, NULL, NULL, 10, 18, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (415, NULL, NULL, 10, 19, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (416, NULL, NULL, 10, 19, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (417, NULL, NULL, 10, 20, 1, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (418, NULL, NULL, 10, 20, 2, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (419, NULL, NULL, 10, 21, 1, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (420, NULL, NULL, 10, 21, 2, 1500.00, NULL, NULL, 0, NULL);
 
 -- ----------------------------
 -- Table structure for storage_rack
@@ -739,6 +1283,28 @@
 INSERT INTO `storage_rack` VALUES (491, 210, 1, NULL, NULL, NULL, 2, 10);
 
 -- ----------------------------
+-- Table structure for storage_task
+-- ----------------------------
+DROP TABLE IF EXISTS `storage_task`;
+CREATE TABLE `storage_task`  (
+  `id` int NOT NULL AUTO_INCREMENT COMMENT '搴忓彿',
+  `task_type` int NULL DEFAULT NULL COMMENT '浠诲姟绫诲瀷锛�0锛氳繘鐗囷紝1锛氬嚭鐗囷紝2锛氳皟搴︼級',
+  `task_state` int NULL DEFAULT NULL COMMENT '浠诲姟鐘舵�侊紙0锛氭湭瀹屾垚锛�1锛氬畬鎴愶級',
+  `shelf_rack` int NULL DEFAULT NULL COMMENT '寮�濮嬩綅缃�',
+  `load_rack` int NULL DEFAULT NULL COMMENT '缁撴潫浣嶇疆',
+  `start_time` datetime(0) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '浠诲姟寮�濮嬫椂闂�',
+  `finsh_time` datetime(0) NULL DEFAULT NULL COMMENT '浠诲姟缁撴潫鏃堕棿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of storage_task
+-- ----------------------------
+INSERT INTO `storage_task` VALUES (1, 0, 1, 6, 105, '2023-09-07 10:11:47', '2023-08-29 00:00:00');
+INSERT INTO `storage_task` VALUES (2, 1, 1, 7, 99, '2023-09-07 16:53:35', '2023-08-29 00:00:00');
+INSERT INTO `storage_task` VALUES (3, 2, 0, 26, 105, '2023-09-05 16:24:30', '2023-08-29 00:00:00');
+
+-- ----------------------------
 -- Table structure for user
 -- ----------------------------
 DROP TABLE IF EXISTS `user`;
@@ -757,7 +1323,7 @@
   `create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '鍒涘缓鏃堕棿',
   `update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '鏇存柊鏃堕棿',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 21 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
+) ENGINE = InnoDB AUTO_INCREMENT = 21 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
 -- Records of user
@@ -765,7 +1331,6 @@
 INSERT INTO `user` VALUES (1, 0, '', 0, 1, 'admin', 'b2f0c414a5ffb6944c424bc18ae3a8a0', NULL, NULL, NULL, 1, '2023-08-25 08:58:58', '2023-09-05 16:12:28');
 INSERT INTO `user` VALUES (2, 1, '1-', 1, 2, 'user1', '601b99523f82de29f87771d5f95accdc', 'user1@qq.com', NULL, NULL, 1, '2021-11-28 14:31:39', '2021-11-28 15:09:36');
 INSERT INTO `user` VALUES (3, 1, '1-', 1, 2, 'user2', 'f403c87893db29eb71b21905b57bbd0d', 'user2@qq.com', NULL, NULL, 1, '2021-11-28 14:31:39', '2021-11-28 15:09:36');
-INSERT INTO `user` VALUES (8, 1, '1-', 1, 5, 'yyyyy', 'fca7e8e6b2fca165de912bd617c8df3c', '2265557248@qq.com', NULL, NULL, 1, '2023-08-23 20:08:44', '2023-08-23 20:08:44');
 INSERT INTO `user` VALUES (9, 1, '1-', 1, 1, 'yttttttttttt', 'b2f0c414a5ffb6944c424bc18ae3a8a0', '666@qq.com', NULL, NULL, 1, '2023-08-23 20:35:32', '2023-08-23 20:35:32');
 INSERT INTO `user` VALUES (10, 1, '1-', 1, 2, '767655555', '500637c0d48b442a3be6d4fce12e0910', NULL, NULL, NULL, 1, '2023-08-23 20:42:58', '2023-08-23 20:42:58');
 INSERT INTO `user` VALUES (11, 1, '1-', 1, 5, 'uiuyiuy', 'e046c4175152aa3001d2c71c5bc1aee5', '767676767tt@qq.com', NULL, NULL, 1, '2023-08-23 20:43:42', '2023-08-23 20:43:42');
diff --git a/springboot-vue3/src/test/java/com/example/springboot/AuthorityApplicationTests.java b/springboot-vue3/src/test/java/com/example/springboot/AuthorityApplicationTests.java
deleted file mode 100644
index 055634d..0000000
--- a/springboot-vue3/src/test/java/com/example/springboot/AuthorityApplicationTests.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.example.springboot;
-
-import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
-
-@SpringBootTest
-class AuthorityApplicationTests {
-
-    @Test
-    void contextLoads() {
-    }
-
-}

--
Gitblit v1.8.0