clll
2023-09-13 86467589b2fd4f1fb108edfa00227e793049e481
Merge branch 'master' of http://10.153.19.25:10101/r/CanadaMes

# Conflicts:
# CanadaMes-ui/src/lang/locales/en-US.json
# CanadaMes-ui/src/lang/locales/zh-CN.json
# CanadaMes-ui/src/layout/index.vue
34个文件已修改
3个文件已添加
1个文件已删除
2509 ■■■■ 已修改文件
CanadaMes-ui/.env 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/package-lock.json 320 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/package.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/api/home.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/lang/locales/en-US.json 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/lang/locales/zh-CN.json 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/layout/index.vue 154 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/router/index.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/utils/request.js 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/Electrical/Action.vue 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/Electrical/Parameter.vue 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/Electrical/Sign.vue 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/Electrical/State.vue 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/Electrical/alarm.vue 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/home/index.vue 62 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/register/index.vue 184 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/vue.config.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/.idea/artifacts/springboot_vue3_war.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/.idea/artifacts/springboot_vue3_war_exploded.xml 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/.idea/misc.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/pom.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/springboot-vue3.iml 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/AuthorityApplication.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/Plcaction.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/controller/DefaultController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/controller/SpianController.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/service/JdbcConnections.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java 530 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/resources/application.properties 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/resources/sql/canadames.sql 605 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/test/java/com/example/springboot/AuthorityApplicationTests.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/.env
@@ -1 +1 @@
VUE_APP_BASE_API=/api
VUE_APP_BASE_API=/api
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",
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",
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 :""
    })
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"
}
CanadaMes-ui/src/lang/locales/zh-CN.json
@@ -175,5 +175,34 @@
  "dvstate": {
    "automatic": "自动",
    "manual": "手动"
  }
  },
  "langUsernameLabel": "用户名",
  "langPasswordLabel": "密码",
  "langPasswordPlaceholder": "请输入密码",
  "langConfirmPasswordLabel": "确认密码",
  "langConfirmPasswordPlaceholder": "请确认密码",
  "langEmailLabel": "邮箱",
  "langQQLabel": "QQ",
  "langQQPlaceholder": "请输入QQ号码",
  "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": "结束时间"
}
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>
CanadaMes-ui/src/router/index.js
@@ -97,7 +97,10 @@
  }
];
const router = new VueRouter({
  // base: '/canadames/',
  routes
});
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(
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>
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%;
}
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>
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>
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: "",
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");
                    }
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="请输入QQ" 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>
CanadaMes-ui/vue.config.js
@@ -13,6 +13,7 @@
                pathRewrite: {
                    '^/api': ''
                }
            }
        }
    },
springboot-vue3/.idea/artifacts/springboot_vue3_war.xml
New file
@@ -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>
springboot-vue3/.idea/artifacts/springboot_vue3_war_exploded.xml
New file
@@ -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>
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>
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>
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" />
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) {
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 @@
    }
  }
}
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());
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
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进片车与出片车位置W
            // 读去Plc进片车与出片车位置W
            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");
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();
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);
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);
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")
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")
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);
    //按玻璃ID出片任务查询
    @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时,是否可直接出片
springboot-vue3/src/main/java/com/example/springboot/service/JdbcConnections.java
New file
@@ -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();
        }
    }
}
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();//调拨目标位PRCID
                ids=cagecell.getId();//调拨目标位ID
                //更换玻璃的笼子
                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();//调拨目标位prcID
                ids=cagecell.getId();//调拨目标位ID
                //填入调拨数据
                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")
   //进片任务,传订单id
   //按订单优先进片
    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();// 调拨目标位PRCID
                    ids = cagecell.getId();// 调拨目标位ID
                    // 更换玻璃的笼子
                    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();// 调拨目标位prcID
                    ids = cagecell.getId();// 调拨目标位ID
                    // 填入调拨数据
                    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")
    // 进片任务,传订单id
    // 按订单优先进片
    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();//数据库ID
            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();// 数据库ID
                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();// 调拨目标位PRCID
                    ids = cagecell.getId();// 调拨目标位ID
                    // 更换玻璃的笼子
                    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();// 调拨目标位prcID
                    ids = cagecell.getId();// 调拨目标位ID
                    // 填入调拨数据
                    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();//调拨目标位PRCID
                ids=cagecell.getId();//调拨目标位ID
                //更换玻璃的笼子
                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();//调拨目标位prcID
                ids=cagecell.getId();//调拨目标位ID
                //填入调拨数据
                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();
    // }
}
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
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=*
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 '格子层id',
  `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');
springboot-vue3/src/test/java/com/example/springboot/AuthorityApplicationTests.java
File was deleted