admin
2023-09-15 e4e6c1a0e34cbd5aca446018d19166497d8d7814
Merge branch 'master' of http://10.153.19.25:10101/r/CanadaMes

# Conflicts:
# springboot-vue3/src/main/java/com/example/springboot/AuthorityApplication.java
42个文件已修改
5个文件已添加
1个文件已删除
3697 ■■■■ 已修改文件
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/img/dipan.png 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/img/taimian.png 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/lang/locales/en-US.json 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/lang/locales/zh-CN.json 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/layout/index.vue 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/main.js 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/router/index.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/store/index.js 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/utils/request.js 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/Electrical/Action.vue 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/Electrical/Parameter.vue 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/Electrical/Sign.vue 237 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/Electrical/State.vue 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/Electrical/alarm.vue 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/home/index.vue 313 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/power/index.vue 183 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/register/index.vue 184 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/user/index.vue 152 ●●●● 补丁 | 查看 | 原始文档 | 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 71 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/Plcaction.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/Plcalarm.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/Plcsign.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/Plcstate.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/S7control.java 40 ●●●● 补丁 | 查看 | 原始文档 | 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 31 ●●●● 补丁 | 查看 | 原始文档 | 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 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/service/JdbcConnections.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java 591 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/resources/application.properties 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/resources/sql/canadames.sql 597 ●●●●● 补丁 | 查看 | 原始文档 | 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/img/dipan.png
CanadaMes-ui/src/img/taimian.png
CanadaMes-ui/src/lang/locales/en-US.json
@@ -171,5 +171,109 @@
  "State": "State",
  "Alarm": "Alarm",
  "Distribute": "Distribute",
  "Search": "Search"
  "Search": "Search",
  "dvstate": {
    "自动": "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",
  "langRegisterSuccessMessage": "Registration successful",
  "添加用户成功":"Successfully add user ",
  "confirmResetPassword": "Are you sure you want to reset the password to the default value?",
  "confirm": "Confirm",
  "cancel": "Cancel",
  "passwordResetSuccess": "Password has been reset to the default value",
  "confirmDeleteCategory": "This operation will permanently delete the category. Do you want to continue?",
  "prompt": "Prompt",
  "userDeleteSuccess": "User deleted successfully",
  "deleteCanceled": "Deletion canceled",
  "addUserSuccess": "User added successfully",
  "editUserSuccess": "User edited successfully",
  "addSuccessMessage": "Added successfully",
"deleteConfirmMessage": "Are you sure you want to delete this permission?",
"confirmButtonText": "Confirm",
"cancelButtonText": "Cancel",
"deleteSuccessMessage": "Deleted successfully",
"deleteCancelledMessage": "Deletion cancelled",
  "Enter the glass lD":"Enter the glass lD",
  "Manually feed the glass":"Manually feed the glass",
  "Enter the order number":"Enter the order number",
  "Exit the glass by order number":"Exit the glass by order number",
  "Please confirm the glass information":"Please confirm the glass information",
  "Please confirm the Ordering Information":"Please confirm the Ordering Information",
  "Alarm Information":"Alarm Information",
  "Cage Details":"Cage Details",
  "order":"order",
  "length":"length",
  "width":"width",
  "coating":"coating",
  "Operate":"Operate",
  "end task":"end task",
  "cancal":"cancal",
  "confirm":"confirm",
  "number":"number",
  "Coming out glass ID":"Coming out glass ID",
  "Incoming glass ID":"Incoming glass ID",
  "The Cage number being used":"The Cage number being used",
  "The Grille number being used":"The Grille number being used",
  "Order Nmuber":"Order Nmuber",
  "Length and width":"Length and width",
  "id":"id",
  "content":"content",
  "timeon":"timeon",
  "endTime":"endTime",
  "The Cage number":"The Cage number",
  "tier":"tier",
  "cell":"cell",
  "glassid":"glassid",
  "order number":"order number",
  "delete":"delete",
  "out":"out",
  "Operation successful":"Operation successful",
  "Operation canceled":"Operation canceled",
  "There is no glass for this order":"There is no glass for this order",
  "There are currently tasks":"There are currently tasks",
  "There is no such glass":"There is no such glass",
  "There is no such grid":"There is no such grid",
  "No delete allowed":"No delete allowed",
  "No out allowed":"No out allowed",
  "Are you sure to perform this operation ?":"Are you sure to perform this operation ?",
  "prompt":"prompt",
  "Yes":"Yes",
  "No":"No"
}
CanadaMes-ui/src/lang/locales/zh-CN.json
@@ -168,8 +168,115 @@
  "Parameter": "参数下发",
  "Action": "开关控制",
  "Sign": "IO状态",
  "State": "State",
  "State": "设备状态",
  "Alarm": "报警信息",
  "Distribute": "下发",
  "Search": "搜索"
  "Search": "搜索",
  "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": "注册成功",
  "添加用户成功":"添加用户成功",
  "confirmResetPassword": "确认重置密码为默认值吗?",
  "confirm": "确定",
  "cancel": "取消",
  "passwordResetSuccess": "密码已重置为默认值",
  "confirmDeleteCategory": "此操作将永久删除该分类, 是否继续?",
  "prompt": "提示",
  "userDeleteSuccess": "删除用户成功",
  "deleteCanceled": "已取消删除",
  "addUserSuccess": "添加用户成功",
  "editUserSuccess": "修改用户成功",
  "effective": "有效",
"invalid": "无效",
"addSuccessMessage": "添加成功",
"deleteConfirmMessage": "确定要删除该权限吗?",
"confirmButtonText": "确定",
"cancelButtonText": "取消",
"deleteSuccessMessage": "删除成功",
"deleteCancelledMessage": "已取消删除操作",
  "Enter the glass lD":"输入玻璃id",
  "Manually feed the glass":"手动上片",
  "Enter the order number":"输入订单号",
  "Exit the glass by order number":"按订单出片",
  "Please confirm the glass information":"请确认玻璃信息",
  "Please confirm the Ordering Information":"请确认订单信息",
  "Alarm Information":"报警信息",
  "Cage Details":"理片笼详情",
  "order":"订单",
  "length":"长",
  "width":"宽",
  "coating":"涂层",
  "Operate":"操作",
  "end task":"完成任务",
  "cancal":"取消",
  "confirm":"确认",
  "number":"数量",
  "Coming out glass ID":"进片玻璃id",
  "Incoming glass ID":"出片玻璃id",
  "The Cage number being used":"笼子",
  "The Grille number being used":"格子",
  "Order Nmuber":"订单编号",
  "Length and width":"尺寸",
  "id":"id",
  "content":"内容",
  "timeon":"报警时间",
  "endTime":"结束时间",
  "The Cage number":"笼子",
  "tier":"层",
  "cell":"格子",
  "glassid":"玻璃id",
  "order number":"订单",
  "delete":"删除",
  "out":"出片",
  "Operation successful":"操作成功",
  "Operation canceled":"操作取消",
  "There is no such order":"没有此订单的玻璃",
  "There are currently tasks":"当前有任务",
  "There is no such glass":"没有此玻璃",
  "There is no such grid":"没有空闲格子",
  "No delete allowed":"不能删除",
  "No out allowed":"不能出片",
  "Are you sure to perform this operation ?":"确定执行此操作?",
  "prompt":"提示",
  "Yes":"是",
  "No":"否",
  "today": "今天",
  "yesterday": "昨天",
  "week": "一周前",
  "shijian": "日期",
  "Pick a day": "选择日期",
  "alarmid": "id",
  "alacontent": "报警内容",
  "time-on": "开始时间",
  "End-Time": "结束时间"
}
CanadaMes-ui/src/layout/index.vue
@@ -1,5 +1,5 @@
<template>
  <el-container style="flex: 1;">
  <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">
@@ -204,15 +204,18 @@
        '用户管理': 'UserManagement',
        '用户列表': 'UserList',
        '设备管理': 'DeviceManagement',
        '报警信息': 'AlarmInformation',
        '参数下发': 'ParameterSetting',
        '开关控制': 'SwitchControl',
        'I/O状态': 'I/O Status',
        '报警信息': 'Alarm',
        '参数下发': 'Parameter',
        '开关控制': 'Action',
        'IO状态': 'Sign',
        '权限管理': 'PermissionManagement',
        '权限列表': 'PermissionList',
        '角色管理': 'RoleManagement',
        '角色列表': 'RoleList',
        '电气管理': 'Electrical management'
        '电气管理': 'Electrical management',
        '设备状态':'State',
        '主页': 'Home'
        // 根据实际需求继续添加对照关系
      };
CanadaMes-ui/src/main.js
@@ -2,6 +2,8 @@
import App from './App.vue'
import router from './router'
import ElementUI, {Message, MessageBox} from 'element-ui';
import locale from 'element-ui/lib/locale/lang/en' // lang i18n
import 'element-ui/lib/theme-chalk/index.css';
// 导入全局样式表
import './assets/css/global.css'
@@ -23,7 +25,7 @@
const EventBus = new Vue();
Vue.prototype.$bus = EventBus;
Vue.use(ElementUI);
Vue.use(ElementUI,{locale});
Vue.config.productionTip = false;
CanadaMes-ui/src/router/index.js
@@ -97,7 +97,10 @@
  }
];
const router = new VueRouter({
  // base: '/canadames/',
  routes
});
CanadaMes-ui/src/store/index.js
@@ -10,9 +10,9 @@
  modules: {
    tags,
  },
  state: {
    tagData: {} // 存储标签数据的对象
  },
  // state: {
  //   tagData: {} // 存储标签数据的对象
  // },
  mutations: {
    // 更新标签数据
    updateTagData(state, payload) {
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,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/alarm" tag="el-button" type="text" active-class="blue-button">{{ $t('Alarm') }}</router-link>
      <router-link to="/Electrical/State" tag="el-button" type="text" active-class="blue-button">{{ $t('State') }}</router-link>
      <router-link to="/Electrical/Action" tag="el-button" type="text" active-class="blue-button">{{ $t('Action') }}</router-link>
      <router-link to="/Electrical/Parameter" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter') }}</router-link>
    <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign') }}</router-link>
    </el-breadcrumb>
    <div>Action</div>
    <el-form label-width="100px" style="display: flex;flex-wrap: wrap;" :model="{ messagepack }">
@@ -31,12 +29,13 @@
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],
        params: [0, 0, 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: [
          'D01 VFD conveyor',
          'D02 VFD conveyor',
@@ -68,7 +67,7 @@
        xyData: [
          { name: 'D01 VFD conveyor', value: "0" },
          { name: 'D02 VFD conveyor', value: "0" },
          { name: 'D03 VFD conveyor', value: "1" },
          { name: 'D03 VFD conveyor', value: "0" },
          { name: 'D04 VFD conveyor', value: "0" },
          { name: 'D05 VFD conveyor', value: "0" },
          { name: 'D06 VFD conveyor', value: "0" },
@@ -111,6 +110,9 @@
    this.init();
  },
  methods: {
    setActiveButton(buttonName) {
    this.activeButton = buttonName;
  },
    init () {
      let viewname = "action";
@@ -137,6 +139,7 @@
          }
          let obj = JSON.parse(msg.data);
          if (obj.params ){
          this.record.params[0] = obj.params[0];
          for (let a = 0; a <= this.record.params[0].length - 1; a++) {
@@ -146,7 +149,7 @@
              this.record.xyData[a].value = this.record.params[0][a].toString();
            }
          }
        }
          // console.log(this.record.xyData);
          this.$forceUpdate();
        };
@@ -179,7 +182,7 @@
</script>
 
 
<style>
<style scoped>
.kuai_div {
  /* width: 30%; */
  margin-bottom: 30px;
@@ -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/alarm" tag="el-button" type="text" active-class="blue-button">{{ $t('Alarm') }}</router-link>
      <router-link to="/Electrical/State" tag="el-button" type="text" active-class="blue-button">{{ $t('State') }}</router-link>
      <router-link to="/Electrical/Action" tag="el-button" type="text" active-class="blue-button">{{ $t('Action') }}</router-link>
      <router-link to="/Electrical/Parameter" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter') }}</router-link>
    <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign') }}</router-link>
    </el-breadcrumb>
    <div>Parameter</div>
@@ -20,10 +18,11 @@
      </div>
      <div class="kuai_div" v-for="(item, index) in record.xyData" :key="index">
        <el-input style="width: 280px; border:none;" class="in_mc" v-model="item.name" readonly></el-input>
        <span style="margin-right: 5px; width: 50px;">{{ item.value }}</span>
        <span style="margin-right: 5px; font-size: 14px;">|</span>
        <input v-model="item.value2" type="number"
          style="width: 30px; margin-right: 5px; margin-top: 5px; font-size: 16px;">
  <span style="margin-right: 5px; width: 50px;">{{ item.value }}</span>
  <span style="margin-right: 5px; font-size: 14px;color: red;">|</span>
  <input v-model="item.value2" type="number" style="width: 43px; margin-right: 5px; margin-top: 5px; font-size: 16px;">
      </div>
    </el-form>
  </div>
@@ -31,11 +30,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 +71,9 @@
    this.isButtonDisabled = true;
  },
  methods: {
    setActiveButton(buttonName) {
      this.activeButton = buttonName;
    },
    initWebSocket () {
      let viewname = "Parameter";
@@ -98,13 +102,23 @@
          }
          let obj = JSON.parse(msg.data);
          if (obj.params && obj.state){
          this.record.params[0] = obj.params[0];
          this.record.state = obj.state[0];
          if (obj.state && obj.state.length > 0) {
  let isButtonDisabled = this.record.state.includes(1);
  this.isButtonDisabled = isButtonDisabled;
          let isButtonDisabled = this.record.state.includes(1);
          // 判断state中是否存在1
          //console.log(isButtonDisabled)
          this.isButtonDisabled = isButtonDisabled; // 将判断结果保存到变量isButtonDisabled中
         // 将判断结果保存到变量isButtonDisabled中
          for (let a = 0; a <= this.record.params[0].length - 1; a++) {
            if (!this.record.xyData[a]) {
@@ -113,7 +127,8 @@
              this.record.xyData[a].value = this.record.params[0][a];
            }
          }
        }
      }
          //console.log(this.record.xyData);
          this.$forceUpdate();
        };
@@ -141,14 +156,15 @@
};
</script>
<style>
<style scoped>
.kuai_div {
  width: calc(100% / 3);
  width: calc(100% / 2);
  margin-bottom: 15px;
}
.el-input__inner {
  border: 1px solid black;
  border: none;
}
.in_mc {
@@ -156,7 +172,10 @@
  border: none;
}
.blue-button {
  background-color: skyblue;
}
#btn_div {
  width: 100%;
}
CanadaMes-ui/src/views/Electrical/Sign.vue
@@ -2,15 +2,16 @@
  <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/alarm" tag="el-button" type="text" active-class="blue-button">{{ $t('Alarm') }}</router-link>
      <router-link to="/Electrical/State" tag="el-button" type="text" active-class="blue-button">{{ $t('State') }}</router-link>
      <router-link to="/Electrical/Action" tag="el-button" type="text" active-class="blue-button">{{ $t('Action') }}</router-link>
      <router-link to="/Electrical/Parameter" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter') }}</router-link>
    <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign') }}</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,104 +33,105 @@
  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,
          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, 1, 0, 1, 0, 1, 0, 1,],
        xyData: [
          { name: 'D01.SR dec', value: 0 },
          { name: "D01.SR in pos", value: 0 },
          { name: "D02.SR dec", value: 0 },
          { name: "D02.SR in pos", value: 0 },
          { name: "D03.SR into", value: 0 },
          { name: "D03.SR dec", value: 0 },
          { name: 'D03.SR in pos', value: 0 },
          { name: "D04.SR dec", value: 0 },
          { name: "D04.SR in pos", value: 0 },
          { name: "D05.SR dec", value: 0 },
          { name: "D05.SR in pos", value: 0 },
          { name: "D06.SR dec", value: 0 },
          { name: 'D06.SR in pos', value: 0 },
          { name: "B01.SR out dec", value: 0 },
          { name: "B01.SR out in pos", value: 0 },
          { name: "B01.SR in dec", value: 0 },
          { name: "B01.SR in in pos", value: 0 },
          { name: "B01.SR turn on", value: 0 },
          { name: 'B01.SR turn off', value: 0 },
          { name: "B01.SR up", value: 0 },
          { name: "B01.SR down", value: 0 },
          { name: "B02.SR out dec", value: 0 },
          { name: "B02.SR out in pos", value: 0 },
          { name: "B02.SR in dec", value: 0 },
          { name: 'B02.SR in in pos', value: 0 },
          { name: "B02.SR turn on", value: 0 },
          { name: "B02.SR turn off", value: 0 },
          { name: "B02.SR up", value: 0 },
          { name: "B02.SR down", value: 0 },
          { name: "B01.SR out safety", value: 0 },
          { name: "B01.SR in safety", value: 0 },
          { name: "B02.SR out safety", value: 0 },
          { name: "SB.start(+)", value: 0 },
          { name: "SB.stop(1)", value: 0 },
          { name: "SB.reset", value: 0 },
          { name: "SB.auto/manul", value: 0 },
          { name: "SB.pause", value: 0 },
          { name: "SB.emg", value: 0 },
          { name: "D01.SB.start", value: 0 },
          { name: "D06.SB.start", value: 0 },
          { name: "B02.SR in safety", value: 0 },
          { name: "SAFETYDOOR.requset", value: 0 },
          { name: "SAFETYDOOR.confirm", value: 0 },
          { name: "SAFETYDOOR.reset", value: 0 },
          { name: "LED.red", value: 0 },
          { name: "LED.green", value: 0 },
          { name: "LED.yellow", value: 0 },
          { name: "D01.LED.green", value: 0 },
          { name: "D06.LED.green", value: 0 },
          { name: "B01.YV.turn", value: 0 },
          { name: "B01.YV.up down", value: 0 },
          { name: "B01.YV.gassing", value: 0 },
          { name: "B02.YV.turn", value: 0 },
          { name: "B02.YV.up down", value: 0 },
          { name: "B02.YV.gassing", value: 0 },
          { name: "SAFETYDOOR.led", value: 0 },
          { name: "SAFETYDOOR.open", value: 0 },
          { name: 'D01.SR dec', value: 1 },
          { name: "D01.SR in pos", value: 1 },
          { name: "D02.SR dec", value: 1 },
          { name: "D02.SR in pos", value: 1 },
          { name: "D03.SR into", value: 1 },
          { name: "D03.SR dec", value: 1 },
          { name: 'D03.SR in pos', value: 1 },
          { name: "D04.SR dec", value: 1 },
          { name: "D04.SR in pos", value: 1 },
          { name: "D05.SR dec", value: 1 },
          { name: "D05.SR in pos", value: 1 },
          { name: "D06.SR dec", value: 1 },
          { name: 'D06.SR in pos', value: 1 },
          { name: "B01.SR out dec", value: 1 },
          { name: "B01.SR out in pos", value: 1 },
          { name: "B01.SR in dec", value: 1 },
          { name: "B01.SR in in pos", value: 1 },
          { name: "B01.SR turn on", value: 1 },
          { name: 'B01.SR turn off', value: 1 },
          { name: "B01.SR up", value: 1 },
          { name: "B01.SR down", value: 1 },
          { name: "B02.SR out dec", value: 1 },
          { name: "B02.SR out in pos", value: 1 },
          { name: "B02.SR in dec", value: 1 },
          { name: 'B02.SR in in pos', value: 1 },
          { name: "B02.SR turn on", value: 1 },
          { name: "B02.SR turn off", value: 1 },
          { name: "B02.SR up", value: 1 },
          { name: "B02.SR down", value: 1 },
          { name: "B01.SR out safety", value: 1 },
          { name: "B01.SR in safety", value: 1 },
          { name: "B02.SR out safety", value: 1 },
          { name: "SB.start(+)", value: 1 },
          { name: "SB.stop(1)", value: 1 },
          { name: "SB.reset", value: 1 },
          { name: "SB.auto/manul", value: 1 },
          { name: "SB.pause", value: 1 },
          { name: "SB.emg", value: 1 },
          { name: "D01.SB.start", value: 1 },
          { name: "D06.SB.start", value: 1 },
          { name: "B02.SR in safety", value: 1 },
          { name: "SAFETYDOOR.requset", value: 1 },
          { name: "SAFETYDOOR.confirm", value: 1 },
          { name: "SAFETYDOOR.reset", value: 1 },
          { name: "LED.red", value: 1 },
          { name: "LED.green", value: 1 },
          { name: "LED.yellow", value: 1 },
          { name: "D01.LED.green", value: 1 },
          { name: "D06.LED.green", value: 1 },
          { name: "B01.YV.turn", value: 1 },
          { name: "B01.YV.up down", value: 1 },
          { name: "B01.YV.gassing", value: 1 },
          { name: "B02.YV.turn", value: 1 },
          { name: "B02.YV.up down", value: 1 },
          { name: "B02.YV.gassing", value: 1 },
          { name: "SAFETYDOOR.led", value: 1 },
          { name: "SAFETYDOOR.open", value: 1 },
        ],
        // canshu: [
        //   'D01.SR dec',
        //   'D01.SR in pos',
        //   'D02.SR dec',
        //   'D02.SR in pos',
        //   'D03.SR into',
        //   'D03.SR dec',
        //   'D03.SR in pos',
        //   'D04.SR dec',
        //   'D04.SR in pos',
        //   'D05.SR dec',
        //   'D05.SR in pos',
        //   'D06.SR dec',
        //   'D06.SR in pos',
        //   'B01.SR out dec',
        //   'B01.SR out in pos',
        //   'B01.SR in dec',
        //   'B01.SR in in pos',
        //   'B01.SR turn on',
        //   'B01.SR turn off',
        //   'B01.SR up',
        //   'B01.SR down',
        //   'B02.SR out dec',
        //   'B02.SR out in pos',
        //   'B02.SR in dec',
        //   'B02.SR in in pos',
        //   'B02.SR turn on',
        //   'B02.SR turn off',
        //   'B02.SR up',
        //   'B02.SR down',
        //   'LED.red',
        //   'LED.green',
        //   'LED.yellow',
        // ],
        canshu: [
          'D01.SR dec',
          'D01.SR in pos',
          'D02.SR dec',
          'D02.SR in pos',
          'D03.SR into',
          'D03.SR dec',
          'D03.SR in pos',
          'D04.SR dec',
          'D04.SR in pos',
          'D05.SR dec',
          'D05.SR in pos',
          'D06.SR dec',
          'D06.SR in pos',
          'B01.SR out dec',
          'B01.SR out in pos',
          'B01.SR in dec',
          'B01.SR in in pos',
          'B01.SR turn on',
          'B01.SR turn off',
          'B01.SR up',
          'B01.SR down',
          'B02.SR out dec',
          'B02.SR out in pos',
          'B02.SR in dec',
          'B02.SR in in pos',
          'B02.SR turn on',
          'B02.SR turn off',
          'B02.SR up',
          'B02.SR down',
          'LED.red',
          'LED.green',
          'LED.yellow',
        ],
      },
@@ -148,29 +150,20 @@
    this.init();
  },
  methods: {
    onButtonClick () {
      this.isButtonClicked = true; // 将按钮颜色设置为蓝色
      setTimeout(() => {
        this.isButtonClicked = false; // 重置按钮颜色
      }, 500); // 这里的500毫秒是根据您希望按钮颜色持续多长时间来定的,可以根据需求进行调整
    },
    //根据读取PLC的值,根据名称改变颜色
    getStatusClass (zhuangtai) {
      // if (mc === "LED.green" && zhuangtai === 0) {
      //   return "green";
      // }
      // if (mc === "LED.red" && zhuangtai === 0) {
      //   return "red";
      // }
      // if (mc === "LED.yellow" && zhuangtai === 0) {
      //   return "yellow"
      // }
      if (zhuangtai === 0) {
        return "op";
      }
      else {
        return "dow";
      }
    },
    init () {
@@ -197,14 +190,16 @@
          //console.log("收到数据====" + msg.data);
          let obj = JSON.parse(msg.data);
          //this.$set(this.record.params, 0, obj.params[0]);
          this.record.params[0] = obj.sig[0];
          for (let a = 0; a <= this.record.xyData[0] - 1; a++) {
          for (let a = 0; a < this.record.params[0].length; a++) {
            if (!this.record.xyData[a]) {
              this.record.xyData[a] = { name: this.record.canshu[a], value: this.record.params[0][a] };
            } else {
              this.record.xyData[a].value = this.record.params[0][a];
            }
          }
          this.$forceUpdate();
@@ -220,10 +215,6 @@
        }
      }
    },
    send () {
      this.messagepack.data = { taskname: "前端到后台" };
      socket?.send(JSON.stringify(this.messagepack));  // 将组装好的json发送给服务端,由服务端进行转发
    }
  }
}
@@ -234,7 +225,7 @@
</script>
<style>
<style >
* {
  margin: 0;
  padding: 0;
@@ -306,4 +297,8 @@
.yellow {
  background-color: yellow;
}
.blue-button {
  background-color: skyblue;
}
</style>
CanadaMes-ui/src/views/Electrical/State.vue
@@ -2,22 +2,22 @@
  <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/alarm" tag="el-button" type="text" active-class="blue-button">{{ $t('Alarm') }}</router-link>
      <router-link to="/Electrical/State" tag="el-button" type="text" active-class="blue-button">{{ $t('State') }}</router-link>
      <router-link to="/Electrical/Action" tag="el-button" type="text" active-class="blue-button">{{ $t('Action') }}</router-link>
      <router-link to="/Electrical/Parameter" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter') }}</router-link>
    <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign') }}</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.number="item.value" style="width: 80px;"></el-input>
        <el-input style="width: 280px;" class="in_mc" v-model="item.name" readonly></el-input>
        <el-input v-model="item.value" readonly="readonly" style="width: 90px;"></el-input>
      </div>
@@ -38,36 +38,26 @@
  mixins: [LanguageMixin],
  data () {
    return {
      activeButton: '',
      record: {
        params: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0,],
        params: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1,],
        xyData: [
          { name: 'D01.State', value: 0 },
          { name: 'D02.State', value: 0 },
          { name: 'B01.State', value: 0 },
          { name: 'B02.State', value: 0 },
          { name: 'A01.State', value: 0 },
          { name: 'A02.State', value: 0 },
          { name: 'D03.State', value: 0 },
          { name: 'D04.State', value: 0 },
          { name: 'D05.State', value: 0 },
          { name: 'D06.State', value: 0 },
          { name: 'D01.State', value: "自动" },
          { name: 'D02.State', value: "自动" },
          { name: 'B01.State', value: "自动" },
          { name: 'B02.State', value: "自动" },
          { name: 'A01.State', value: "自动" },
          { name: 'A02.State', value: "自动" },
          { name: 'D03.State', value: "自动" },
          { name: 'D04.State', value: "自动" },
          { name: 'D05.State', value: "自动" },
          { name: 'D06.State', value: "自动" },
        ],
        // canshu: [
        //   'D01.State',
        //   'D02.State',
        //   'B01.State',
        //   'B02.State',
        //   'A01.State',
        //   'A02.State',
        //   'D03.State',
        //   'D04.State',
        //   'D05.State',
        //   'D06.State',
        // ],
      },
      localizedRoles: [],
      messagepack: {
        data: { taskname: "" }
      },
@@ -80,8 +70,15 @@
  },
  created () {
    this.init();
    this.replaceChineseWithEnglish();
  },
  methods: {
    onButtonClick () {
      this.isButtonClicked = true; // 将按钮颜色设置为蓝色
      setTimeout(() => {
        this.isButtonClicked = false; // 重置按钮颜色
      }, 500); // 这里的500毫秒是根据您希望按钮颜色持续多长时间来定的,可以根据需求进行调整
    },
    init () {
      let viewname = "State";
@@ -108,7 +105,7 @@
          let obj = JSON.parse(msg.data);
          this.record.params[0] = obj.sta[0];
          //将读取到的PLC的数据,与定义的xyData,组合成新的数组
          for (let a = 0; a <= this.record.xyData[0].length - 1; a++) {
          for (let a = 0; a < this.record.params[0].length; a++) {
            if (!this.record.xyData[a]) {
              this.record.xyData[a] = { name: this.record.canshu[a], value: this.record.params[0][a] };
            } else {
@@ -116,6 +113,13 @@
            }
          }
          const language = this.$i18n.locale;
          if (language === 'en-US') {
            this.replaceChineseWithEnglish();
          } else {
            this.localizedRoles = [...this.record.xyData];
          }
          //console.log(this.localizedRoles);
          this.$forceUpdate();
        }.bind(this);
@@ -129,11 +133,13 @@
        }
      }
    },
    send () {
      this.messagepack.data = this.record.xyData.map((item) => parseInt(item.value)); // 转换为整数数组
      console.log(this.messagepack);
      socket?.send(JSON.stringify(this.messagepack));
    //语言转换
    replaceChineseWithEnglish () {
      const translation = this.$t('dvstate');
      this.record.xyData = this.record.xyData.map(item => { return { name: item.name, value: translation[item.value] || item.value }; });
      console.log(translation);
    },
  }
@@ -145,7 +151,12 @@
</script>
<style>
<style scoped>
/* * {
  margin: 0px;
  padding: 0px;
} */
.kuai_div {
  width: 30%;
  margin-bottom: 15px;
@@ -156,7 +167,9 @@
  .el-input__inner {
    text-align: center;
    border: 1 solid black;
    padding: 0 10px;
  }
@@ -176,4 +189,8 @@
#btn_div .el-button {
  float: right;
}
.blue-button {
  background-color: skyblue;
}
</style>
CanadaMes-ui/src/views/Electrical/alarm.vue
@@ -2,22 +2,22 @@
  <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/alarm" tag="el-button" type="text" active-class="blue-button">{{ $t('Alarm') }}</router-link>
      <router-link to="/Electrical/State" tag="el-button" type="text" active-class="blue-button">{{ $t('State') }}</router-link>
      <router-link to="/Electrical/Action" tag="el-button" type="text" active-class="blue-button">{{ $t('Action') }}</router-link>
      <router-link to="/Electrical/Parameter" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter') }}</router-link>
    <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign') }}</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: "",
@@ -205,7 +211,7 @@
</script>
<style>
<style >
.kuai_div {
  /* width: 30%; */
  margin-bottom: 30px;
CanadaMes-ui/src/views/home/index.vue
@@ -60,42 +60,78 @@
.gezi {
    height: 35px;
    width: 4.22px;
    width: 3.07px;
    /* width: 4.22px; */
}
.gezi:nth-child(22),
.gezi:nth-child(43),
.gezi:nth-child(64),
.gezi:nth-child(85) {
    margin-left: 10px;
    margin-left: 7px;
    /* margin-left: 10px; */
}
.blocks {
    min-height: 55vh;
    max-width: 100vw;
    max-width: 94vw;
    background-image: url('../../img/xmjc.png');
    margin: 0 auto;
    background-repeat: no-repeat;
    /* background-size: 100% 100%; */
    background-size: 1660px 560px;
    background-attachment: local;
    width: 1660px;
    min-height: 55vh;
    background-size: 1200px 510px;
    /* max-width: 100vw;
    background-size: 1660px 560px; */
}
.blocks-img {
    height: 100px;
    max-width: 100vw;
    background-repeat: no-repeat;
    background-size: 46px 94px;
    background-attachment: local;
    width: 32px;
    position: absolute;
    /* left: 116px; */
    /* left:1060px;18.88px */
    background-image: url('../../img/bigcar01.png');
    background-size: 40px 87px;
    /* background-size: 46px 94px; */
}
.blocks-img2 {
    height: 100px;
    max-width: 100vw;
    background-repeat: no-repeat;
    background-attachment: local;
    width: 100px;
    position: absolute;
    background-image: url('../../img/dipan.png');
    background-size: 70px 85px;
    left: 654px;
    top: 333px;
    /* background-size: 85px 100px;
    left: 912px;
    top: 366px; */
}
.blocks-img3 {
    height: 90px;
    max-width: 100vw;
    background-repeat: no-repeat;
    background-attachment: local;
    width: 160px;
    position: absolute;
    background-image: url('../../img/taimian.png');
    background-size: 120px 30px;
    left: 630px;
    top: 420px;
    /* background-size: 160px 40px;
    left: 875px;
    top: 455px;  */
}
.el-table td,
@@ -151,32 +187,38 @@
                </div>
            </div>
            <div style="display:flex;justify-content: space-around;width: 95%;margin: 0 auto;">
                <el-input style="width:15%;" placeholder="Enter the glass lD" v-model="glassid"></el-input>
                <el-button type="primary" @click="showform()">Manually feed the glass</el-button>
                <el-input style="width:15%;" placeholder="Enter the order number" v-model="order"></el-input>
                <el-button type="warning" @click="showform1();">Exit the glass by order number</el-button>
                <el-input style="width:15%;" :placeholder="$t('Enter the glass lD')" v-model="glassid"></el-input>
                <el-button type="primary" @click="showform()">{{ $t('Manually feed the glass') }}</el-button>
                <el-input style="width:15%;" :placeholder="$t('Enter the order number')" v-model="order"></el-input>
                <el-button type="warning" @click="showform1();">{{ $t('Exit the glass by order number') }}</el-button>
            </div>
            <div>
                <el-table :data="this.tasklist1" border style="width: 100%">
                    <el-table-column prop="glassId" label="Coming out glass ID"></el-table-column>
                    <el-table-column :width="250" prop="cell" label="The Grille number being used"></el-table-column>
                    <el-table-column prop="orderId" label="Order Nmuber"></el-table-column>
                    <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>
                    <el-table-column prop="glassId" :label="$t('Coming out glass ID')"></el-table-column>
                    <el-table-column :width="250" prop="cage" :label="$t('The Cage number being used')"></el-table-column>
                    <el-table-column :width="250" prop="cell" :label="$t('The Grille number being used')"></el-table-column>
                    <el-table-column prop="orderId" :label="$t('Order Nmuber')"></el-table-column>
                    <el-table-column prop="lengthWidth" :label="$t('Length and width')"></el-table-column>
                    <el-table-column prop="coating" :label="$t('coating')"></el-table-column>
                    <el-table-column :label="$t('Operate')">
                        <template slot-scope='scope'>
                            <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
                                @click="endtask(0, scope.row.glassId, scope.row.cell)">{{ $t('end task') }}</el-button>
                        </template>
                    </el-table-column>
                </el-table>
                <el-table :data="this.tasklist2" border style="width: 100%">
                    <el-table-column prop="glassId" label="Incoming glass ID"></el-table-column>
                    <el-table-column :width="250" prop="cell" label="The Grille number being used"></el-table-column>
                    <el-table-column prop="orderId" label="Order Nmuber"></el-table-column>
                    <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>
                    <el-table-column prop="glassId" :label="$t('Incoming glass ID')"></el-table-column>
                    <el-table-column :width="250" prop="cage" :label="$t('The Cage number being used')"></el-table-column>
                    <el-table-column :width="250" prop="cell" :label="$t('The Grille number being used')"></el-table-column>
                    <el-table-column prop="orderId" :label="$t('Order Nmuber')"></el-table-column>
                    <el-table-column prop="lengthWidth" :label="$t('Length and width')"></el-table-column>
                    <el-table-column prop="coating" :label="$t('coating')"></el-table-column>
                    <el-table-column :label="$t('Operate')">
                        <template slot-scope='scope'>
                            <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
                                @click="endtask(1, scope.row.glassId, scope.row.cell)">{{ $t('end task') }}</el-button>
                        </template>
                    </el-table-column>
                </el-table>
            </div>
@@ -195,7 +237,27 @@
        </el-main>
        <el-footer>
            <div class="blocks" style="position: relative;">
                <div style="display:flex;position: absolute;float:left;z-index: 999;top:112px;left:328px;">
                <div style="display:flex;position: absolute;float:left;z-index: 999;top:102px;left:237px;">
                    <div :class="getStatusClass(item.state)" v-for="item in cagelist1" :key="item['date']"
                        @click="showcageinfo(item['cage'])"></div>
                </div>
                <div style="display:flex;position: absolute;float:left;z-index: 999;top:102px;left:640px;">
                    <div :class="getStatusClass(item.state)" v-for="item in cagelist2" :key="item['date']"
                        @click="showcageinfo(item['cage'])"></div>
                </div>
                <div style="display:flex;position: absolute;float:left;z-index: 999;top:138px;left:237px;">
                    <div :class="getStatusClass(item.state)" v-for="item in cagelist3" :key="item['date']"
                        @click="showcageinfo(item['cage'])"></div>
                </div>
                <div style="display:flex;position: absolute;float:left;z-index: 999;top:138px;left:640px;">
                    <div :class="getStatusClass(item.state)" v-for="item in cagelist4" :key="item['date']"
                        @click="showcageinfo(item['cage'])"></div>
                </div>
                <div class="blocks-img" :style="{ left: car1 + 'px', top: '16px' }"></div>
                <div class="blocks-img" :style="{ left: car2 + 'px', top: '175px' }"></div>
                <div class="blocks-img2"></div>
                <div class="blocks-img3"></div>
                <!-- <div style="display:flex;position: absolute;float:left;z-index: 999;top:112px;left:328px;">
                    <div :class="getStatusClass(item.state)" v-for="item in cagelist1" :key="item['date']"
                        @click="showcageinfo(item['cage'])"></div>
                </div>
@@ -213,70 +275,73 @@
                </div>
                <div class="blocks-img" :style="{ left: car1 + 'px', top: '16px' }"></div>
                <div class="blocks-img" :style="{ left: car2 + 'px', top: '194px' }"></div>
                <div class="blocks-img2" :style="{ left: '912px', top: '366px' }"></div>
                <div class="blocks-img3" :style="{ left: '875px', top: '455px' }"></div> -->
            </div>
        </el-footer>
        <el-dialog :visible.sync="dialogFormVisible" title="Please confirm the information">
        <el-dialog :visible.sync="dialogFormVisible" :title="$t('Please confirm the glass information')">
            <el-form :model="form" label-width="100px" style="padding-right: 30px">
                <el-form-item label="order">
                <el-form-item :label="$t('order')">
                    <el-input v-model="form.orderno" autocomplete="off" />
                </el-form-item>
                <el-form-item label="length">
                <el-form-item :label="$t('length')">
                    <el-input v-model="form.length" autocomplete="off" />
                </el-form-item>
                <el-form-item label="width">
                <el-form-item :label="$t('width')">
                    <el-input v-model="form.width" autocomplete="off" />
                </el-form-item>
                <el-form-item label="coating">
                <el-form-item :label="$t('coating')">
                    <el-input v-model="form.coating" autocomplete="off" />
                </el-form-item>
            </el-form>
            <template #footer>
                <span class="dialog-footer">
                    <el-button @click="cancal()">cancal</el-button>
                    <el-button @click="sbumitglassid()" type="primary">confirm</el-button>
                    <el-button @click="cancal()">{{ $t('cancal') }}</el-button>
                    <el-button @click="sbumitglassid()" type="primary">{{ $t('confirm') }}</el-button>
                </span>
            </template>
        </el-dialog>
        <el-dialog :visible.sync="dialogFormVisible1" title="Ordering Information">
        <el-dialog :visible.sync="dialogFormVisible1" :title="$t('Please confirm the Ordering Information')">
            <el-form :model="form1" label-width="100px" style="padding-right: 30px">
                <el-form-item label="order">
                <el-form-item :label="$t('order')">
                    <el-input v-model="form1.order" autocomplete="off" />
                </el-form-item>
                <el-form-item label="number">
                <el-form-item :label="$t('number')">
                    <el-input v-model="form1.number" autocomplete="off" />
                </el-form-item>
            </el-form>
            <template #footer>
                <span class="dialog-footer">
                    <el-button @click="cancal1()">cancal</el-button>
                    <el-button @click="getOrder();" type="primary">confirm</el-button>
                    <el-button @click="cancal1()">{{ $t('cancal') }}</el-button>
                    <el-button @click="getOrder();" type="primary">{{ $t('confirm') }}</el-button>
                </span>
            </template>
        </el-dialog>
        <el-dialog :visible.sync="dialogFormVisible2" title="Ordering Information">
        <el-dialog :visible.sync="dialogFormVisible2" :title="$t('Alarm Information')">
            <el-table :data="this.alarm" border style="width: 100%;">
                <el-table-column prop="id" label="id"></el-table-column>
                <el-table-column prop="content" label="content"></el-table-column>
                <el-table-column prop="timeons" label="timeon"></el-table-column>
                <el-table-column prop="endTime" label="endTime"></el-table-column>
                <el-table-column prop="id" :label="$t('id')"></el-table-column>
                <el-table-column prop="content" :label="$t('content')"></el-table-column>
                <el-table-column prop="timeons" :label="$t('timeon')"></el-table-column>
                <el-table-column prop="endTime" :label="$t('endTime')"></el-table-column>
            </el-table>
        </el-dialog>
        <el-dialog :visible.sync="dialogFormVisible3" title="Ordering Information">
            <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>
                <el-table-column prop="tier" label="tier"></el-table-column>
                <el-table-column prop="glassId" label="glassid"></el-table-column>
                <el-table-column :width="130" prop="orderId" label="order number"></el-table-column>
                <el-table-column :width="150" prop="lengthWidth" label="length and width"></el-table-column>
                <el-table-column prop="coating" label="coating"></el-table-column>
                <el-table-column :width="150" label="operate">
        <el-dialog :visible.sync="dialogFormVisible3" :title="$t('Cage Details')">
            <el-table :data="this.cageinfo" :height="700" border style="width: 100%;overflow: auto;">
                <el-table-column :width="150" prop="cage" :label="$t('The Cage number')"></el-table-column>
                <el-table-column prop="cell" :label="$t('cell')"></el-table-column>
                <el-table-column prop="tier" :label="$t('tier')"></el-table-column>
                <el-table-column prop="glassId" :label="$t('glassid')"></el-table-column>
                <el-table-column :width="130" prop="orderId" :label="$t('order number')"></el-table-column>
                <el-table-column :width="150" prop="lengthWidth" :label="$t('Length and width')"></el-table-column>
                <el-table-column prop="coating" :label="$t('coating')"></el-table-column>
                <el-table-column :width="140" :label="$t('Operate')">
                    <template slot-scope='scope'>
                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
                            @click="deleteglass(scope.row.glassId, scope.row.state)">delete</el-button>
                            @click="deleteglass(scope.row.glassId, scope.row.state)">{{ $t('delete') }}</el-button>
                        <!-- <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" @click="open">{{ $t('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)">{{ $t('out') }}</el-button>
                    </template>
                </el-table-column>
            </el-table>
@@ -322,10 +387,10 @@
            order: "",
            glassid: "",
            url: "../../img/bigcar01.png",
            car1: 150,
            car2: 242,
            incell: "",
            outcell: "",
            car1: 107,
            car2: 175,
            // car1: 150,
            // car2: 242,
            cageinfo: [],
            cage: 0
        };
@@ -359,10 +424,11 @@
                    //console.log("收到数据====" + msg.data);
                    let obj = JSON.parse(msg.data);
                    if (obj.params != null) {
                        this.car1 = 150 + 24.6 * obj.params[0][0];
                        this.car2 = 242 + 24.6 * obj.params[0][1];
                        this.car1 = 107 + 17.62 * obj.params[0][0];
                        this.car2 = 175 + 17.62 * obj.params[0][1];
                        // 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 +436,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 => {
@@ -445,9 +505,11 @@
            if (this.form1.order != "") {
                InsertOrder(this.order).then(res => {
                    if (res.data.message == 200) {
                        this.$message.success("Operation successful");
                        this.dialogFormVisible1 = false;
                        this.$message.success(this.$t('Operation successful'));
                    } else {
                        this.$message.success("There is no such order");
                        this.$message.success(this.$t('There is no glass for this order'));
                    }
                    this.load();
                });
@@ -459,10 +521,16 @@
            if (this.form.order != "") {
                Addglassid(this.glassid).then(res => {
                    if (res.data.message2 == 200) {
                        this.$message.success("Operation successful");
                        this.$message.success(this.$t('Operation successful'));
                        this.cancal();
                    } else {
                        this.$message.success("There are currently tasks");
                    } else if (res.data.message2 == 500) {
                        this.$message.success(this.$t('There are currently tasks'));
                    }
                    else if (res.data.message2 == 300) {
                        this.$message.success(this.$t('There is no such glass'));
                    }
                    else if (res.data.message2 == 400) {
                        this.$message.success(this.$t('There is no such grid'));
                    }
                });
            }
@@ -499,20 +567,23 @@
            this.dialogFormVisible1 = false;
            this.form1 = {};
        },
        endtask(type) {
            if (type == 0) {
                UpdateTask(type, this.incell).then(res => {
        endtask(type, glassid, cell) {
            this.$confirm(this.$t('Are you sure to perform this operation ?'), this.$t('prompt'), {
                confirmButtonText: this.$t('Yes'),
                cancelButtonText: this.$t('No'),
                type: 'warning'
            }).then(() => {
                UpdateTask(type, glassid, cell).then(res => {
                    if (res.data.message3 == 200) {
                        this.$message.success("Operation successful");
                        this.$message.success(this.$t('Operation successful'));
                    }
                });
            } else {
                UpdateTask(type, this.outcell).then(res => {
                    if (res.data.message3 == 200) {
                        this.$message.success("Operation successful");
                    }
            }).catch(() => {
                this.$message({
                    type: 'info',
                    message: this.$t('Operation canceled')
                });
            }
            });
        },
        showcageinfo(cage) {
@@ -523,31 +594,55 @@
            });
        },
        deleteglass(glassid, state) {
            if (state == 1) {
                DeleteByGlassID(glassid).then(res=>{
                    if (res.data.message3 == 200) {
                        this.$message.success("Operation successful");
                    }
            this.$confirm(this.$t('Are you sure to perform this operation ?'), this.$t('prompt'), {
                confirmButtonText: this.$t('Yes'),
                cancelButtonText: this.$t('No'),
                type: 'warning'
            }).then(() => {
                if (state == 1) {
                    DeleteByGlassID(glassid).then(res => {
                        if (res.data.message3 == 200) {
                            this.$message.success(this.$t('Operation successful'));
                        }
                    });
                } else {
                    this.$message.success(this.$t('No delete allowed'));
                }
            }).catch(() => {
                this.$message({
                    type: 'info',
                    message: this.$t('Operation canceled')
                });
            } else {
                this.$message.success("No out allowed");
            }
            });
        },
        outglass(glassid,state){
            if (state == 1) {
                OutByGlassID(glassid).then(res=>{
                    if (res.data.message3 == 200) {
                        this.$message.success("Operation successful");
                    }
        outglass(glassid, state) {
            this.$confirm(this.$t('Are you sure to perform this operation ?'), this.$t('prompt'), {
                confirmButtonText: this.$t('Yes'),
                cancelButtonText: this.$t('No'),
                type: 'warning'
            }).then(() => {
                if (state == 1) {
                    OutByGlassID(glassid).then(res => {
                        if (res.data.message3 == 200) {
                            this.$message.success(this.$t('Operation successful'));
                        }
                        else if (res.data.message2 == 300) {
                            this.$message.success(this.$t('There is no such grid'));
                        }
                    });
                } else {
                    this.$message.success(this.$t('No out allowed'));
                }
            }).catch(() => {
                this.$message({
                    type: 'info',
                    message: this.$t('Operation canceled')
                });
            } else {
                this.$message.success("No out allowed");
            }
            });
        }
    }
}
</script>
CanadaMes-ui/src/views/power/index.vue
@@ -201,100 +201,101 @@
    this.getPowerList();
  },
  methods: {
    getPowerList() {
      selectPage(this.queryInfo).then(res => {
        this.powerList.total = res.data.total;
        this.powerList.records = res.data.records;
  getPowerList() {
    selectPage(this.queryInfo).then(res => {
      this.powerList.total = res.data.total;
      this.powerList.records = res.data.records;
    });
  },
  // 监听pageSize改变的事件
  handleSizeChange(newSize) {
    this.queryInfo.pageSize = newSize;
    this.getPowerList()
  },
  // 监听pageNum改变的事件
  handleCurrentChange(newPage) {
    this.queryInfo.pageNum = newPage;
    this.getPowerList()
  },
  stateChange(info) {
    saveOrUpdate(info).then(() => {
      this.$message.success(this.$t('updateSuccessMessage'))
    });
  },
  // 监听添加权限对话框的关闭事件
  addDialogClosed() {
    this.$refs['powerRef'].resetFields();
  },
  // 点击按钮添加新权限
  addPower() {
    this.$refs.powerRef.validate(async valid => {
      if (!valid) return;
      // 发起添加权限的网络请求
      saveOrUpdate(this.addPowerForm).then(() => {
        // 重新获取权限列表
        this.getPowerList();
        // 隐藏添加权限对话框
        this.addDialogVisible = false;
        this.$message.success(this.$t('addSuccessMessage'));
      });
    },
    // 监听pageSize改变的事件
    handleSizeChange(newSize) {
      this.queryInfo.pageSize = newSize;
      this.getPowerList()
    },
    // 监听pageNum改变的事件
    handleCurrentChange(newPage) {
      this.queryInfo.pageNum = newPage;
      this.getPowerList()
    },
    stateChange(info) {
      saveOrUpdate(info).then(() => {
        this.$message.success("更新状态成功")
    })
  },
  // 展示修改权限的对话框
  showEditDialog(role) {
    getById({id: role.id}).then(res => {
      this.editRoleForm = res.data;
    });
    select(this.addPowerForm).then(res => {
      this.roleList = res.data;
    });
    selectPermission(this.addPowerForm).then(res => {
      this.permissionList = res.data;
    });
    this.editDialogVisible = true;
  },
  // 展示添加权限的对话框
  showAddDialog() {
    select(this.addPowerForm).then(res => {
      this.roleList = res.data;
    });
    selectPermission(this.addPowerForm).then(res => {
      this.permissionList = res.data;
    });
    this.addDialogVisible = true;
  },
  // 修改权限信息并提交
  editRoleInfo() {
    this.$refs.powerRef.validate(async valid => {
      if (!valid) return;
      // 发起修改权限的网络请求
      saveOrUpdate(this.editRoleForm).then(() => {
        // 重新获取权限列表
        this.getPowerList();
        // 隐藏添加权限对话框
        this.editDialogVisible = false;
        this.$message.success(this.$t('updateSuccessMessage'));
      });
    },
    // 监听添加权限对话框的关闭事件
    addDialogClosed() {
      this.$refs['powerRef'].resetFields();
    },
    // 点击按钮添加新权限
    addPower() {
      this.$refs.powerRef.validate(async valid => {
        if (!valid) return;
        // 发起添加权限的网络请求
        saveOrUpdate(this.addPowerForm).then(() => {
          // 重新获取权限列表
          this.getPowerList();
          // 隐藏添加权限对话框
          this.addDialogVisible = false;
          this.$message.success("添加权限成功");
        });
      })
    },
    // 展示修改权限的对话框
    showEditDialog(role) {
      getById({id: role.id}).then(res => {
        this.editRoleForm = res.data;
    })
  },
  // 根据id删除权限信息
  removeById(power) {
    // 弹框询问用户是否删除权限
    this.$confirm(this.$t('deleteConfirmMessage'), this.$t('prompt'), {
      confirmButtonText: this.$t('confirmButtonText'),
      cancelButtonText: this.$t('cancelButtonText'),
      type: 'warning'
    }).then(() => {
      // 删除权限
      removeById({id: power.id}).then(() => {
        // 重新获取权限列表
        this.getPowerList();
        this.$message.success(this.$t('deleteSuccessMessage'));
      });
      select(this.addPowerForm).then(res => {
        this.roleList = res.data;
      });
      selectPermission(this.addPowerForm).then(res => {
        this.permissionList = res.data;
      });
      this.editDialogVisible = true;
    },
    // 展示添加权限的对话框
    showAddDialog() {
      select(this.addPowerForm).then(res => {
        this.roleList = res.data;
      });
      selectPermission(this.addPowerForm).then(res => {
        this.permissionList = res.data;
      });
      this.addDialogVisible = true;
    },
    // 修改权限信息并提交
    editRoleInfo() {
      this.$refs.powerRef.validate(async valid => {
        if (!valid) return;
        // 发起修改权限的网络请求
        saveOrUpdate(this.editRoleForm).then(() => {
          // 重新获取权限列表
          this.getPowerList();
          // 隐藏添加权限对话框
          this.editDialogVisible = false;
          this.$message.success("修改权限成功");
        });
      })
    },
    // 根据id删除权限信息
    removeById(power) {
      // 弹框询问用户是否删除权限
      this.$confirm('此操作将永久删除该权限, 是否继续?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        // 删除权限
        removeById({id: power.id}).then(() => {
          // 重新获取权限列表
          this.getPowerList();
          this.$message.success("删除权限成功");
        });
      }).catch(() => {
        this.$message.info('已取消删除');
      })
    }
    }).catch(() => {
      this.$message.info(this.$t('deleteCancelledMessage'));
    })
  }
  }
}
</script>
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/src/views/user/index.vue
@@ -40,7 +40,7 @@
            </el-switch>
          </template>
        </el-table-column>
        <el-table-column label="操作">
        <el-table-column :label="$t('langOperation')">
          <template slot-scope="scope">
            <el-button type="primary" icon="el-icon-refresh" @click="resetPassword(scope.row)">
@@ -241,84 +241,84 @@
      });
    },
    resetPassword (info) {
      this.$confirm('确认重置密码为默认值吗?', '重置密码', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning',
      })
        .then(() => {
          resetPass(info).then(() => {
            this.$message.success('密码已重置为默认值');
          });
        })
        .catch(() => {
          // 用户取消重置密码操作
        });
    },
    showEditDialog (id) {
      getById({ id: id }).then(res => {
        this.editUserForm = res.data;
        this.editDialogVisible = true;
  this.$confirm(this.$t('confirmResetPassword'), this.$t('resetPassword'), {
    confirmButtonText: this.$t('confirm'),
    cancelButtonText: this.$t('cancel'),
    type: 'warning',
  })
    .then(() => {
      resetPass(info).then(() => {
        this.$message.success(this.$t('passwordResetSuccess'));
      });
    })
    .catch(() => {
      // 用户取消重置密码操作
    });
},
showEditDialog (id) {
  getById({ id: id }).then(res => {
    this.editUserForm = res.data;
    this.editDialogVisible = true;
  });
  select().then(res => {
    this.roleList = res.data;
  });
},
removeUserById (user) {
  // 弹框询问用户是否删除分类
  this.$confirm(this.$t('confirmDeleteCategory'), this.$t('prompt'), {
    confirmButtonText: this.$t('confirm'),
    cancelButtonText: this.$t('cancel'),
    type: 'warning'
  }).then(() => {
    removeById({ id: user.id }).then(() => {
      // 重新获取分类列表
      this.getUserList();
      this.$message.success(this.$t('userDeleteSuccess'));
    });
  }).catch(() => {
    this.$message.info(this.$t('deleteCanceled'));
  });
},
handleSizeChange (newSize) {
  this.queryInfo.pageSize = newSize;
  this.getUserList()
},
handleCurrentChange (newPage) {
  this.queryInfo.pageNum = newPage;
  this.getUserList()
},
addDialogClosed () {
  this.$refs['addUserRef'].resetFields();
},
addUser () {
  this.$refs.addUserRef.validate(async valid => {
    if (!valid) return;
    saveOrUpdate(this.addUserForm).then(() => {
      const successMessage = this.$t('addUserSuccess');
      this.$message.success(successMessage);
      // 隐藏添加分类对话框
      this.addDialogVisible = false;
      // 重新获取分类列表
      this.getUserList();
    });
  })
},
editUserInfo () {
  this.$refs.addCategoryRef.validate(async valid => {
    if (!valid) return;
      select().then(res => {
        this.roleList = res.data;
      });
    },
    removeUserById (user) {
      // 弹框询问用户是否删除分类
      this.$confirm('此操作将永久删除该分类, 是否继续?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        removeById({ id: user.id }).then(() => {
          // 重新获取分类列表
          this.getUserList();
          this.$message.success("删除用户成功");
        });
      }).catch(() => {
        this.$message.info('已取消删除');
      });
    },
    handleSizeChange (newSize) {
      this.queryInfo.pageSize = newSize;
      this.getUserList()
    },
    handleCurrentChange (newPage) {
      this.queryInfo.pageNum = newPage;
      this.getUserList()
    },
    addDialogClosed () {
      this.$refs['addUserRef'].resetFields();
    },
    addUser () {
      this.$refs.addUserRef.validate(async valid => {
        if (!valid) return;
        saveOrUpdate(this.addUserForm).then(() => {
          this.$message.success("添加用户成功");
          // 隐藏添加分类对话框
          this.addDialogVisible = false;
          // 重新获取分类列表
          this.getUserList();
        });
      })
    },
    editUserInfo () {
      this.$refs.addCategoryRef.validate(async valid => {
        if (!valid) return;
        saveOrUpdate(this.editUserForm).then(() => {
          const 修改用户成功 = this.$t('修改用户成功');
          this.$message.success(修改用户成功);
          // 隐藏添加分类对话框
          this.editDialogVisible = false;
          // 重新获取分类列表
          this.getUserList();
        });
      })
    }
    saveOrUpdate(this.editUserForm).then(() => {
      const successMessage = this.$t('editUserSuccess');
      this.$message.success(successMessage);
      // 隐藏添加分类对话框
      this.editDialogVisible = false;
      // 重新获取分类列表
      this.getUserList();
    });
  })
}
  }
}
</script>
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,26 @@
package com.example.springboot.component;
import java.sql.SQLException;
import java.util.ArrayList;
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;
import com.example.springboot.mapper.SpianMapper;
public class PlcHold extends Thread {
  private AlarmMapper alarmMapper;
  @Autowired
  private JdbcConnections jdbcConnections;
  private SpianMapper spianMapper;
  private SpianService spianService;
  @Override
  public void run() {
@@ -19,15 +30,29 @@
        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");
      spianMapper = WebSocketServer.applicationContext.getBean(SpianMapper.class);
      jdbcConnections = WebSocketServer.applicationContext.getBean(JdbcConnections.class);
      //根据玻璃id获取订单号
      try {
          Glass glass=jdbcConnections.selectGlass(112);
          //System.out.println(glass.getOrderId());
        } catch (SQLException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
      //spianService.selectout("11");
      //判断进片请求 
       List<Short> datas1List=S7control.getinstance().ReadWord("DB106.24", 1);
       List<Short> datas1ListState=S7control.getinstance().ReadWord("DB106.8", 1);
      if(datas1List!=null &&datas1ListState!=null){
          //获取prc进片请求数据
       boolean exist = datas1List.contains((short)1); 
@@ -41,17 +66,38 @@
        List<Short> datas1ListID=S7control.getinstance().ReadWord("DB106.26", 13);
        //获取玻璃id    
        for(Short list1:datas1ListID){
            spianService.selectAll((short)list1);
         }
        }
        //System.out.println(exist);
       }
     }
     List<Short> outlist=S7control.getinstance().ReadWord("DB106.20", 1); //出片车状态
     List<Short> outlist2=S7control.getinstance().ReadWord("DB106.20", 1); //出片任务完成
     List<Short>ceshi1=new ArrayList<Short>();//出片车状态
     List<Short>ceshi2=new ArrayList<Short>();//出片任务完成
     ceshi1.add((short)0);
     ceshi2.add((short)1);
     if(outlist!=null && outlist2!=null){
      //判断按订单出片
      boolean outstate = outlist.contains((short)0);
      boolean outstate2 = outlist2.contains((short)1);
      if(outstate=true){ //出片车状态空闲时
        if(outstate2=true){  //出片车任务完成时
           String orderid=spianMapper.SelectOrderout();
           if(orderid!=null){
           spianService.selectout(orderid);
        }
        }
      }
     }
     
        //System.out.println(exist);
      }
    }
          
      
@@ -60,4 +106,5 @@
    }
  }
}
springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter.java
@@ -15,11 +15,13 @@
                e.printStackTrace();
            }
            List<Short> paramlist = S7control.getinstance().ReadWord("DB100.DBW", 12);
            List<Short> state = S7control.getinstance().ReadWord("DB103.DBW0", 10);
            List<Short> arraylist = S7control.getinstance().ReadWord("DB100.0", 12);
            List<Short> state = S7control.getinstance().ReadWord("DB103.0", 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[]{1,1, 1, 1, 1, 1, 2, 33, 2,3, 4, 5}
            //            new short[]{0,0, 0, 0, 0, 0, 0, 0, 0, 0}
            jsonObject.append("params",  arraylist );
            jsonObject.append("state",   state);
            WebSocketServer sendwServer = WebSocketServer.sessionMap.get("Parameter");
            if (sendwServer != null) {
                sendwServer.sendMessage(jsonObject.toString());
@@ -29,7 +31,7 @@
            if (webSocketServer != null) {
                List<String> messages = webSocketServer.getMessages();
                String addressList = "DB100.DBW0";
                String addressList = "DB100.0";
                if (!messages.isEmpty()) {
                    // 将最后一个消息转换为 short 类型的列表
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("DB2.0.0", 26);
//      Boolean[] values = {true, true,true, true,true, true,true, true,true, true,true, true,true, true,true, true,true, true,true, true,true, true,true, true,false, true};
//      List<Boolean> paramlist = new ArrayList<>(Arrays.asList(values));
      if (paramlist == null) {
      } else {
@@ -47,7 +47,7 @@
          List<String> messages = webSocketServer.getMessages();
          String addressList = "DB100.DBW0";
          String addressList = "DB100.0";
          if (!messages.isEmpty()) {
            // 将最后一个消息转换为整数类型的列表
@@ -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/Plcalarm.java
@@ -3,6 +3,7 @@
import cn.hutool.json.JSONObject;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import com.example.springboot.mapper.AlarmMapper;
@@ -19,10 +20,15 @@
        e.printStackTrace();
      }
      List<Boolean> plclist = S7control.getinstance().ReadBits("DB104.DBx0.0", 40);
      if (plclist == null) {
      } else {
      List<Boolean> plclist = S7control.getinstance().ReadBits("DB104.0.0", 40);
      // Boolean[] values = { true, false, true, false, true, false, true, false,
      // true, false, true, false, true, false,
      // true, false, true, false, true, false, true, false, true, false, true, false,
      // true, false, true, false, true,
      // false, true, false, true, false,
      // true, false, true, false };
      // List<Boolean> plclist = new ArrayList<>(Arrays.asList(values));
      if (plclist != null) {
        JSONObject jsonObject = new JSONObject();
@@ -31,13 +37,15 @@
        if (sendwServer != null) {
          sendwServer.sendMessage(jsonObject.toString());
        }
        // 将读取plc数据的plclist转换为数组
        Short[] shuzu1 = plclist.toArray(new Short[0]);
        // Short[] shuzu1 = {
        // 0, 1, 0, 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, 0,
        // 1, 0, 1, 0, 1, 0, 1, 0, 1,
        // };
        // 将获取的布尔类型转换为整数类型
        List<Integer> Intlist = new ArrayList<>();
        for (Boolean value : plclist) {
          Intlist.add(value == true ? 1 : 0);
        }
        // 将Intlist转换为数组
        Integer[] shuzu1 = Intlist.toArray(new Integer[0]);
        String[] shuzu = {
            "D01 VFD error",
@@ -82,7 +90,7 @@
            "B02 OUT pos error",
        };
        alarmMapper = WebSocketServer.applicationContext.getBean(AlarmMapper.class);
        for (short i = 0; i < shuzu1.length; i++) {
        for (short i = 0; i < shuzu.length; i++) {
          short result = alarmMapper.selectnullti(shuzu[i]);
          if (shuzu1[i] == 1 && result == 0) {
            alarmMapper.Insertalarm(shuzu[i]);
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(1000);
            } 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/component/Plcsign.java
@@ -4,6 +4,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Arrays;
public class Plcsign extends Thread {
  @Override
@@ -15,17 +16,25 @@
        e.printStackTrace();
      }
      List<Boolean> plclist = S7control.getinstance().ReadBits("DB102.DBX0.0", 58);
      if (plclist == null) {
      List<Boolean> plclist = S7control.getinstance().ReadBits("DB102.0.0", 58);
      // Boolean[] values = { true, false, true, false, true, false, true, false,
      // true, false, true, false, true, false,
      // true, false, true, false, true, false, true, false, true, false, true, false,
      // true, false, true, false, true,
      // false, true, false, true, false,
      // true, false, true, false, true, false, true, false, true, false,
      // true, false, true, false, true, false,
      // true, false, true, false, true, };
      // List<Boolean> plclist = new ArrayList<>(Arrays.asList(values));
      if (plclist != null) {
        // 将获取的布尔类型转换为整数类型
        List<Integer> Intlist = new ArrayList<>();
        for (Boolean value : plclist) {
          Intlist.add(value == true ? 0 : 1);
      } else {
        }
        JSONObject jsonObject = new JSONObject();
        // jsonObject3.append("sig",
        // new short[] { 0, 0, 0, 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, 1, 0,
        // 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
        // });
        jsonObject.append("sig", plclist);
        jsonObject.append("sig", Intlist);
        WebSocketServer sendwServer3 = WebSocketServer.sessionMap.get("Sign");
        if (sendwServer3 != null) {
          sendwServer3.sendMessage(jsonObject.toString());
springboot-vue3/src/main/java/com/example/springboot/component/Plcstate.java
@@ -4,6 +4,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Arrays;
public class Plcstate extends Thread {
  @Override
@@ -15,15 +16,19 @@
        e.printStackTrace();
      }
      List<Short> plclist = S7control.getinstance().ReadWord("DB103.DBW0", 10);
      if (plclist == null) {
      List<Short> plclist = S7control.getinstance().ReadWord("DB103.0", 10);
      // Short[] values = { 0, 1, 1, 0, 1, 0, 1, 0,
      // 1, 0, };
      // List<Short> plclist = new ArrayList<>(Arrays.asList(values));
      if (plclist != null) {
      } else {
        List<String> Intlist = new ArrayList<>();
        for (Short value : plclist) {
          Intlist.add(value == 1 ? "自动" : "手动");
        }
        JSONObject jsonObject = new JSONObject();
        // jsonObject.append("sta",
        // new short[] { 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, });
        jsonObject.append("sta", plclist);
        jsonObject.append("sta", Intlist);
        WebSocketServer sendwServer = WebSocketServer.sessionMap.get("State");
        if (sendwServer != null) {
          sendwServer.sendMessage(jsonObject.toString());
springboot-vue3/src/main/java/com/example/springboot/component/S7control.java
@@ -10,15 +10,15 @@
public class S7control {
    S7PLC s7PLC; // PLC通讯类实例
    private EPlcType plcType = EPlcType.S1200; // 西门子PLC类型
    private String ip = "127.0.0.1"; // plc ip地址
    private int port = 21; // plc 端口号
    private EPlcType plcType = EPlcType.S1500; // 西门子PLC类型
    private String ip = "192.168.10.1"; // plc ip地址
    private int port = 102; // plc 端口号
    private static volatile S7control instance = null;
    private S7control() {
        if (s7PLC == null)
            s7PLC = new S7PLC(plcType, ip, port);
            s7PLC = new S7PLC(plcType, ip, port,0,0);
    }
    // 单例模式 获取类的唯一实例
@@ -47,8 +47,10 @@
     * @param data    word的值
     */
    public void WriteWord(String address, short data) {
        if (!s7PLC.checkConnected())
        if (s7PLC==null)
        {
            return;
        }
        s7PLC.writeInt16(address, data);
    }
@@ -59,7 +61,7 @@
     * @param datas   word的值
     */
    public void WriteWord(String address, List<Short> datas) {
        if (!s7PLC.checkConnected())
        if (s7PLC==null)
            return;
        // s7PLC.write(address, data);
        List<String> addresslist = GetAddressList(address, datas.size(), 16);
@@ -77,7 +79,7 @@
     * @param datas   word的值
     */
    public void WriteWord(List<String> address, List<Short> datas) {
        if (!s7PLC.checkConnected())
        if (s7PLC==null)
            return;
        // s7PLC.write(address, data);
@@ -95,7 +97,7 @@
     * @param data    Bit的值
     */
    public void WriteBit(String address, Boolean data) {
        if (!s7PLC.checkConnected())
        if (s7PLC==null)
            return;
        s7PLC.writeBoolean(address, data);
    }
@@ -107,7 +109,7 @@
     * @param datas   bit的值
     */
    public void WriteBit(List<String> address, List<Boolean> datas) {
        if (!s7PLC.checkConnected())
        if (s7PLC==null)
            return;
        // s7PLC.write(address, data);
@@ -125,7 +127,7 @@
     * @param datas   word的值
     */
    public void WriteBit(String address, List<Boolean> datas) {
        if (!s7PLC.checkConnected())
        if (s7PLC==null)
            return;
        // s7PLC.write(address, data);
        List<String> addresslist = GetAddressList(address, datas.size(), 1);
@@ -143,8 +145,8 @@
     * @return 结果
     */
    public List<Short> ReadWord(List<String> address) {
        if (!s7PLC.checkConnected())
            return null;
        if (s7PLC==null)
              return null;
        return s7PLC.readInt16(address);
    }
@@ -156,8 +158,8 @@
     * @return 结果
     */
    public List<Short> ReadWord(String address, int count) {
        if (!s7PLC.checkConnected())
            return null;
        if (s7PLC==null)
             return null;
        List<String> addresslist = GetAddressList(address, count, 16);
        return s7PLC.readInt16(addresslist);
@@ -170,8 +172,8 @@
     * @return Boolean结果
     */
    public List<Boolean> ReadBits(List<String> addresslist) {
        if (!s7PLC.checkConnected())
            return null;
        if (s7PLC==null)
             return null;
        return s7PLC.readBoolean(addresslist);
    }
@@ -183,16 +185,16 @@
     * @return Boolean结果
     */
    public List<Boolean> ReadBits(String address, int count) {
        if (!s7PLC.checkConnected())
        if (s7PLC==null)
            return null;
        List<String> addresslist = GetAddressList(address, count, 1);
        return s7PLC.readBoolean(addresslist);
    }
    private List<String> GetAddressList(String address, int count, int addedbit) {
        List<String> addresslist = new ArrayList<>();
        List<String> addresslist = new ArrayList<String>();
        String[] stringdatas = address.split(".");
        String[] stringdatas = address.trim().split("\\.");
        if (stringdatas.length < 2 || !address.startsWith("DB"))
            return null;
        int dbwindex = 0;
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);
@@ -124,10 +130,19 @@
    @GetMapping("/OutByGlassID")
    public Result OutByGlassID(String glassid) {
        spianService.selectout2(glassid);
        Map<String, Object> map = new HashMap<>();
        map.put("message3", "200");
        // 调用伍上片函数
        Short results = spianService.selectout2(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);
    }
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,11 +18,11 @@
     
     //@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")
     @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 asc,tier desc LIMIT 1")
     StorageCage selectCage1(int  cage1,double width);
     //判断笼子内玻璃数
     @Select("select COUNT(tier)as tier from storage_cage where  cage=#{cage} and cell=#{cell} and state=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时,是否可直接出片
@@ -54,16 +54,33 @@
     StorageCage selectGlassCage(int cage,double width,int cage1,int cage2);
    //删除笼子信息(出片)
    @Update("update storage_cage set state=#{state},width=width+#{width},glass_id=#{glassid},order_id=#{orderid},glasswidth=0 where cage=#{cage} and cell=#{cell} and tier=#{tier};")
    @Update("update storage_cage set state=#{state},glass_id=#{glassid},order_id=#{orderid},glasswidth=0 where cage=#{cage} and cell=#{cell} and tier=#{tier};")
    void UpdataGlassCage(String orderid,String glassid,double width,int cage,int cell,int tier,int state);
    //修改笼子信息(进片)
    @Update("update storage_cage set state=#{state},width=width-#{width},glass_id=#{glassid},order_id=#{orderid},glasswidth=#{width} where id=#{id};")
    @Update("update storage_cage set state=#{state},glass_id=#{glassid},order_id=#{orderid},glasswidth=#{width} where id=#{id};")
    void UpdataAddCage(Short orderid,Short glassid,double width,int cage,int cell,int id,int state);
    //修改同笼子格子宽度
     @Update("update storage_cage set width=width-#{width} where   cage=#{cage} and cell=#{cell};")
    void UpdataAddCage1(double width,int cage,int cell);
    //修改同笼子格子宽度(出片)
     @Update("update storage_cage set width=width+#{width} where   cage=#{cage} and cell=#{cell};")
    void UpdataOutCage1(double width,int cage,int cell);
    //调拨更换笼子信息
    @Update("update storage_cage as a,(select*from storage_cage b where b.cage=#{cage} and b.cell=#{cell} and b.tier=2)as b set a.glass_id=b.glass_id,a.order_id=b.order_id,a.glasswidth=b.glasswidth,a.width=a.width-b.glasswidth,a.state=1 where a.id=#{id1}")
    @Update("update storage_cage as a,(select*from storage_cage b where b.cage=#{cage} and b.cell=#{cell} and b.tier=2)as b set a.glass_id=b.glass_id,a.order_id=b.order_id,a.state=1 where a.id=#{id1}")
    void UpdateDBCage(int id1,int cage,int cell);
    // @Insert("insert into user(name, date, address, user_no) values (#{name}, #{date}, #{address}, #{userNo})")
    // void insert (Spian spian);
    //新增任务表
    @Insert("INSERT INTO `canadames`.`storage_task`(`task_type`, `task_state`, `shelf_rack`, `load_rack`,start_time) VALUES (#{tasktype},#{taskstate},#{shelfrack},#{loadrack},now());")
    void Inserttask(int tasktype,int taskstate,int shelfrack,int loadrack);
    //修改任务表
    @Update("update storage_task set task_state=#{state} where task_type=#{type} and task_state=0;")
    void Updatetask(int state,int type);
    //修改任务表
    @Update("update storage_task set task_state=1 where (task_type=1 or task_type=2) and task_state=0;")
    void UpdatetaskOut();
    //查询按订单出片
    @Select("select order_id state from order_out where state=0")
    String  SelectOrderout();
}
springboot-vue3/src/main/java/com/example/springboot/service/JdbcConnections.java
New file
@@ -0,0 +1,72 @@
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"));
         }
         conn.close();
         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,271 +16,355 @@
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) {
        spianMapper.UpdatetaskOut(); //完成上一次出片或者调度任务
        // 定义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);
        if(cageout==null){
           return Result.success("200");
        }
        int cage = cageout.getCage(); // 储存出片位置,笼子格子几号玻璃
        int cell = cageout.getCell();// 出片格号
        int tier = cageout.getTier();// 出片内外片
        int prcid = cageout.getPrcId();// prcid
        int prcid2;
        int ids;
        int cages;
        int cells;
        double glasswidth = cageout.getGlassWidth();
        // 判断玻璃内外片
        if (tier == 2) {
            // 判断玻璃可直接出片时
            // 修改数据库笼子表(出片)
            datas.add((short) prcid);
            datas.add((short) 1000);
            datas.add((short) 1);
            datas.add((short) 1);
            spianMapper.UpdataOutCage1(glasswidth, cage, cell);//增加原格子宽度
            spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 0);//清除格子玻璃信息
            spianMapper.Inserttask(1, 0,cageout.getId(),1000 );//新增任务
            S7control.getinstance().WriteWord("DB106.22", (short)0); //出片任务完成改成0
            S7control.getinstance().WriteWord("DB106.20", (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);
                spianMapper.Inserttask(1, 0,cageout.getId(),1000 );//新增任务
                spianMapper.UpdataOutCage1(glasswidth, cage, cell);//增加原格子宽度
                spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 0);//清除格子玻璃信息
                S7control.getinstance().WriteWord("DB106.22", (short)0); //出片任务完成改成0
                S7control.getinstance().WriteWord("DB106.20", (short)1); //出片车状态改成忙碌
                S7control.getinstance().WriteWord(adddresslist, datas);//派发出片车任务
                //spianMapper.Updatetask(1, 1);//完成任务
                return Result.success(datas);//结束
            } 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
                    cages=cagecell.getCage();//调拨目标位笼子
                    cells=cagecell.getCell();//调拨目标位格子
                    // 填入调拨数据
                    datas.add((short) prcid);// 调拨外片起始位置
                    datas.add((short) prcid2);
                    datas.add((short) 2);
                    datas.add((short) 1);
                   // 更换玻璃的笼子
                   spianMapper.UpdataAddCage1(glasswidth, cages, cells);//减少新格子宽度
                   spianMapper.UpdateDBCage(ids, cage, cell);// 将原格子数据更新到新格子里
                   spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 0);// 清除被调拨格子数据
                   spianMapper.Inserttask(2, 0,cageout.getId(),ids );//新增调度任务
                    // 传输mes数据,坐标,数据
                        S7control.getinstance().WriteWord("DB106.22", (short)0); //出片任务完成改成0
                        S7control.getinstance().WriteWord("DB106.20", (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
                    cages=cagecell.getCage();//调拨目标位笼子
                    cells=cagecell.getCell();//调拨目标位格子
                    // 填入调拨数据
                    datas.add((short) prcid);
                    datas.add((short) prcid2);
                    datas.add((short) 2);
                    datas.add((short) 1);
                    spianMapper.Inserttask(2, 0,cageout.getId(),ids );//新增调度任务
                    spianMapper.UpdataAddCage1(glasswidth, cages, cells);//减少新格子宽度
                    spianMapper.UpdateDBCage(ids, cage, cell);// 将原格子数据更新到新格子里
                    spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 0);// 清除被调拨格子数据
                    // 传输mes数据,坐标,数据
                        S7control.getinstance().WriteWord("DB106.22", (short)0); //出片任务完成改成0
                        S7control.getinstance().WriteWord("DB106.20", (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;
        int prcid;
        int tiers;
        int prctier;
        spianMapper.Updatetask(1, 0);//完成任务
        Glass glasslist = spianMapper.selectGlass(glassid);
        if(glasslist==null){
          return (300);
        }
        double widths = glasslist.getWidth();
        Short orderids = glasslist.getOrderId();
        Glass glasslist=spianMapper.selectGlass(glassid);
        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
               if (glasslist == null) {
                    return (300);
                }
                spianMapper.Inserttask(0, 0, 1000, ids);//新增任务
                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);
                    spianMapper.UpdataAddCage1(widths, cage1, cells);//减少格子宽度
                    S7control.getinstance().WriteWord(adddresslist, datas);
                    S7control.getinstance().WriteWord("DB106.10", (short)0); //进片任务完成改成0
                    S7control.getinstance().WriteWord("DB106.8", (short)1); //进片车状态改成忙碌
                    return (200);
                }
            }
        }
        return Result.success("不可进片");
        }
        return (400);
    }
   @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);  //调拨位置的参数内容
               }
             }
    // @GetMapping("/all2")
    public Short 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);
        if(cageout==null){
           return (300);
        }
        int cage = cageout.getCage(); // 储存出片位置,笼子格子几号玻璃
        int cell = cageout.getCell();// 出片格号
        int tier = cageout.getTier();// 出片内外片
        int prcid = cageout.getPrcId();// prcid
        int prcid2;
        int ids;
        int cages;
        int cells;
        double glasswidth = cageout.getGlassWidth();
        // 判断玻璃内外片
        if (tier == 2) {
            // 判断玻璃可直接出片时
            // 修改数据库笼子表(出片)
            datas.add((short) prcid);
            datas.add((short) 1000);
            datas.add((short) 1);
            datas.add((short) 1);
            spianMapper.UpdataOutCage1(glasswidth, cage, cell);//增加原格子宽度
            spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 0);//清除格子玻璃信息
            spianMapper.Inserttask(1, 0,cageout.getId(),1000 );//新增任务
            S7control.getinstance().WriteWord("DB106.22", (short)0); //出片任务完成改成0
            S7control.getinstance().WriteWord("DB106.20", (short)1); //出片车状态改成忙碌
            S7control.getinstance().WriteWord(adddresslist, datas);//派发出片车任务
            return (200);//结束
        } 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);
                spianMapper.Inserttask(1, 0,cageout.getId(),1000 );//新增任务
                spianMapper.UpdataOutCage1(glasswidth, cage, cell);//增加原格子宽度
                spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 0);//清除格子玻璃信息
                S7control.getinstance().WriteWord("DB106.22", (short)0); //出片任务完成改成0
                S7control.getinstance().WriteWord("DB106.20", (short)1); //出片车状态改成忙碌
                S7control.getinstance().WriteWord(adddresslist, datas);//派发出片车任务
                //spianMapper.Updatetask(1, 1);//完成任务
                return (200);//结束
            } else {
                // 玻璃需要调拨时,判断属于哪个半区的笼子
                if (cage < 6) {
                    StorageCage cagecell = spianMapper.selectGlassCage(cage, glasswidth, 0, 6);
                    if (cagecell == null) {
                        return (300);
                    }
                    // 获取调拨位置进行调拨
                    prcid2 = cagecell.getPrcId();// 调拨目标位PRCID
                    ids = cagecell.getId();// 调拨目标位ID
                    cages=cagecell.getCage();//调拨目标位笼子
                    cells=cagecell.getCell();//调拨目标位格子
                    // 填入调拨数据
                    datas.add((short) prcid);// 调拨外片起始位置
                    datas.add((short) prcid2);
                    datas.add((short) 2);
                    datas.add((short) 1);
                   // 更换玻璃的笼子
                   spianMapper.UpdataAddCage1(glasswidth, cages, cells);//减少新格子宽度
                   spianMapper.UpdateDBCage(ids, cage, cell);// 将原格子数据更新到新格子里
                   spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 0);// 清除被调拨格子数据
                   spianMapper.Inserttask(2, 0,cageout.getId(),ids );//新增调度任务
                    // 传输mes数据,坐标,数据
                        S7control.getinstance().WriteWord("DB106.22", (short)0); //出片任务完成改成0
                        S7control.getinstance().WriteWord("DB106.20", (short)1); //出片车状态改成忙碌
                        S7control.getinstance().WriteWord(adddresslist, datas);//派发出片车任务
                    return (200); //结束
                } else {// 笼子号大于5时
                    StorageCage cagecell = spianMapper.selectGlassCage(cage, glasswidth, 5, 11);
                    if (cagecell == null) {
                        return (300);
                    }
                    // 获取调拨位置进行调拨
                    prcid2 = cagecell.getPrcId();// 调拨目标位prcID
                    ids = cagecell.getId();// 调拨目标位ID
                    cages=cagecell.getCage();//调拨目标位笼子
                    cells=cagecell.getCell();//调拨目标位格子
                    // 填入调拨数据
                    datas.add((short) prcid);
                    datas.add((short) prcid2);
                    datas.add((short) 2);
                    datas.add((short) 1);
                    spianMapper.Inserttask(2, 0,cageout.getId(),ids );//新增调度任务
                    spianMapper.UpdataAddCage1(glasswidth, cages, cells);//减少新格子宽度
                    spianMapper.UpdateDBCage(ids, cage, cell);// 将原格子数据更新到新格子里
                    spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 0);// 清除被调拨格子数据
                    // 传输mes数据,坐标,数据
                        S7control.getinstance().WriteWord("DB106.22", (short)0); //出片任务完成改成0
                        S7control.getinstance().WriteWord("DB106.20", (short)1); //出片车状态改成忙碌
                        S7control.getinstance().WriteWord(adddresslist, datas);//派发出片车任务
                     return (200);//结束
                }
            }
        }
    }
    /*** 修改用户* @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,13 +6,13 @@
#\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
#\u6570\u636E\u5E93\u7528\u6237\u5BC6\u7801
spring.datasource.password=beibo.123/
#\u6620\u5C04\u6587\u4EF6\u7684\u4F4D\u7F6E
mybatis-plus.mapper-locations=classpath:com/example/springboot/dao/*Dao.xml
mybatis-plus.mapper-locations=classpath:com/example/springboot/mapper/*Mapper.xml
#\u7C7B\u578B\u522B\u540D
mybatis-plus.type-aliases-package=com.example.springboot.entity
#\u914D\u7F6Esql\u6253\u5370
@@ -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
@@ -11,11 +11,69 @@
 Target Server Version : 80022
 File Encoding         : 65001
 Date: 05/09/2023 16:20:45
 Date: 14/09/2023 09:47:12
*/
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 = 1378 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 = 3 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
@@ -296,6 +397,449 @@
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 (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, 1, '2');
INSERT INTO `storage_cage` VALUES (13, NULL, NULL, 1, 7, 1, 1600.00, NULL, NULL, 0, NULL);
INSERT INTO `storage_cage` VALUES (14, NULL, NULL, 1, 7, 2, 1500.00, NULL, NULL, 0, NULL);
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 = 23 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of user
@@ -765,14 +1331,11 @@
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');
INSERT INTO `user` VALUES (13, 1, '1-', 1, 2, 'user3', '500637c0d48b442a3be6d4fce12e0910', '2265557345@qq.com', NULL, NULL, 1, '2023-08-24 09:58:40', '2023-08-24 09:58:40');
INSERT INTO `user` VALUES (13, 1, '1-', 1, 2, 'user3', 'b2f0c414a5ffb6944c424bc18ae3a8a0', '2265557345@qq.com', NULL, NULL, 1, '2023-08-24 09:58:40', '2023-08-24 09:58:40');
INSERT INTO `user` VALUES (15, 1, '1-', 1, 2, '99999', 'b2f0c414a5ffb6944c424bc18ae3a8a0', '2267666@qq.com', NULL, NULL, 1, '2023-08-25 09:37:05', '2023-08-28 14:37:27');
INSERT INTO `user` VALUES (16, 1, '1-', 1, 2, '5656tttt', 'b2f0c414a5ffb6944c424bc18ae3a8a0', '5454@qq.com', NULL, NULL, 1, '2023-08-28 14:17:44', '2023-08-28 14:37:24');
INSERT INTO `user` VALUES (17, 1, '1-', 1, 2, '6767ttt', 'b2f0c414a5ffb6944c424bc18ae3a8a0', '225@qq.com', NULL, NULL, 1, '2023-08-28 14:20:05', '2023-08-28 14:23:53');
INSERT INTO `user` VALUES (18, 1, '1-', 1, 2, '8989ttt', 'b2f0c414a5ffb6944c424bc18ae3a8a0', '224@qq.com', NULL, NULL, 1, '2023-08-28 14:26:17', '2023-08-28 14:37:22');
INSERT INTO `user` VALUES (19, 1, '1-', 1, 5, '8080ttt', 'b2f0c414a5ffb6944c424bc18ae3a8a0', '87@qq.com', NULL, NULL, 1, '2023-08-28 14:34:39', '2023-08-29 16:03:38');
springboot-vue3/src/test/java/com/example/springboot/AuthorityApplicationTests.java
File was deleted