From a21582607b88104e66f7dc91a5038b3f59ed9f1a Mon Sep 17 00:00:00 2001
From: wuyouming666 <2265557248@qq.com>
Date: 星期三, 13 九月 2023 17:12:00 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/CanadaMes

---
 CanadaMes-ui/src/img/taimian.png                                                 |    0 
 CanadaMes-ui/src/img/dipan.png                                                   |    0 
 CanadaMes-ui/src/views/home/index.vue                                            |  134 ++++++--
 CanadaMes-ui/src/views/Electrical/Sign.vue                                       |    8 
 CanadaMes-ui/src/views/Electrical/State.vue                                      |   44 +-
 springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java   |  590 ++++++++++++++++++------------------
 springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java      |    2 
 CanadaMes-ui/src/lang/locales/zh-CN.json                                         |   30 +
 springboot-vue3/src/main/java/com/example/springboot/component/Plcstate.java     |    8 
 springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java |    8 
 CanadaMes-ui/src/views/Electrical/alarm.vue                                      |   48 +-
 springboot-vue3/src/main/resources/sql/canadames.sql                             |    2 
 CanadaMes-ui/src/lang/locales/en-US.json                                         |   34 +
 13 files changed, 512 insertions(+), 396 deletions(-)

diff --git a/CanadaMes-ui/src/img/dipan.png b/CanadaMes-ui/src/img/dipan.png
new file mode 100644
index 0000000..923b811
--- /dev/null
+++ b/CanadaMes-ui/src/img/dipan.png
Binary files differ
diff --git a/CanadaMes-ui/src/img/taimian.png b/CanadaMes-ui/src/img/taimian.png
new file mode 100644
index 0000000..81e0723
--- /dev/null
+++ b/CanadaMes-ui/src/img/taimian.png
Binary files differ
diff --git a/CanadaMes-ui/src/lang/locales/en-US.json b/CanadaMes-ui/src/lang/locales/en-US.json
index 8140ccb..01ce8da 100644
--- a/CanadaMes-ui/src/lang/locales/en-US.json
+++ b/CanadaMes-ui/src/lang/locales/en-US.json
@@ -172,16 +172,16 @@
   "Alarm": "Alarm",
   "Distribute": "Distribute",
   "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",
@@ -196,10 +196,19 @@
   "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",
@@ -252,6 +261,19 @@
   "glassid":"glassid",
   "order number":"order number",
   "delete":"delete",
-  "out":"out"
+  "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"
 
 }
\ No newline at end of file
diff --git a/CanadaMes-ui/src/lang/locales/zh-CN.json b/CanadaMes-ui/src/lang/locales/zh-CN.json
index e85ed6b..4eeba01 100644
--- a/CanadaMes-ui/src/lang/locales/zh-CN.json
+++ b/CanadaMes-ui/src/lang/locales/zh-CN.json
@@ -168,17 +168,20 @@
   "Parameter": "鍙傛暟涓嬪彂",
   "Action": "寮�鍏虫帶鍒�",
   "Sign": "IO鐘舵��",
-  "State": "State",
+  "State": "璁惧鐘舵��",
   "Alarm": "鎶ヨ淇℃伅",
   "Distribute": "涓嬪彂",
   "Search": "鎼滅储",
+  "dvstate": {
+    "automatic": "鑷姩",
+    "manual": "鎵嬪姩"
+  },
   "langUsernameLabel": "鐢ㄦ埛鍚�",
   "langPasswordLabel": "瀵嗙爜",
   "langPasswordPlaceholder": "璇疯緭鍏ュ瘑鐮�",
   "langConfirmPasswordLabel": "纭瀵嗙爜",
   "langConfirmPasswordPlaceholder": "璇风‘璁ゅ瘑鐮�",
   "langEmailLabel": "閭",
-  
   "langQQLabel": "QQ",
   "langQQPlaceholder": "璇疯緭鍏Q鍙风爜",
   "langPhoneNumberLabel": "鎵嬫満鍙风爜",
@@ -253,6 +256,27 @@
   "glassid":"鐜荤拑id",
   "order number":"璁㈠崟",
   "delete":"鍒犻櫎",
-  "out":"鍑虹墖"
+  "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": "缁撴潫鏃堕棿"
 }
\ No newline at end of file
diff --git a/CanadaMes-ui/src/views/Electrical/Sign.vue b/CanadaMes-ui/src/views/Electrical/Sign.vue
index 66119b8..c73308f 100644
--- a/CanadaMes-ui/src/views/Electrical/Sign.vue
+++ b/CanadaMes-ui/src/views/Electrical/Sign.vue
@@ -2,13 +2,16 @@
   <div class="app">
     <!--闈㈠寘灞戝鑸尯鍩�-->
     <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb">
+
       <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)">
@@ -147,7 +150,7 @@
     this.init();
   },
   methods: {
-    onButtonClick() {
+    onButtonClick () {
       this.isButtonClicked = true; // 灏嗘寜閽鑹茶缃负钃濊壊
       setTimeout(() => {
         this.isButtonClicked = false; // 閲嶇疆鎸夐挳棰滆壊
@@ -294,6 +297,7 @@
 .yellow {
   background-color: yellow;
 }
+
 .blue-button {
   background-color: skyblue;
 }
diff --git a/CanadaMes-ui/src/views/Electrical/State.vue b/CanadaMes-ui/src/views/Electrical/State.vue
index e0507ec..7098e1b 100644
--- a/CanadaMes-ui/src/views/Electrical/State.vue
+++ b/CanadaMes-ui/src/views/Electrical/State.vue
@@ -2,20 +2,22 @@
   <div class="app">
     <!--闈㈠寘灞戝鑸尯鍩�-->
     <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb">
+
       <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="item.value" readonly="readonly" style="width: 80px;"></el-input>
+        <el-input v-model="item.value" readonly="readonly" style="width: 90px;"></el-input>
       </div>
 
 
@@ -55,7 +57,7 @@
 
       },
 
-
+      localizedRoles: [],
       messagepack: {
         data: { taskname: "" }
       },
@@ -68,9 +70,10 @@
   },
   created () {
     this.init();
+    this.replaceChineseWithEnglish();
   },
   methods: {
-    onButtonClick() {
+    onButtonClick () {
       this.isButtonClicked = true; // 灏嗘寜閽鑹茶缃负钃濊壊
       setTimeout(() => {
         this.isButtonClicked = false; // 閲嶇疆鎸夐挳棰滆壊
@@ -101,7 +104,6 @@
           //console.log("鏀跺埌鏁版嵁====" + msg.data);
           let obj = JSON.parse(msg.data);
           this.record.params[0] = obj.sta[0];
-          console.log(this.record.params[0]);
           //灏嗚鍙栧埌鐨凱LC鐨勬暟鎹紝涓庡畾涔夌殑xyData锛岀粍鍚堟垚鏂扮殑鏁扮粍
           for (let a = 0; a < this.record.params[0].length; a++) {
             if (!this.record.xyData[a]) {
@@ -111,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);
@@ -124,19 +133,12 @@
         }
       }
     },
-    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);
     },
-    valuezhi (zhi) {
-      if (zhi == 1) {
-        return "鑷姩";
-      }
-      else {
-        return "鎵嬪姩";
-      }
-    }
 
 
   }
@@ -150,6 +152,11 @@
 </script>
 
 <style>
+* {
+  margin: 0px;
+  padding: 0px;
+}
+
 .kuai_div {
   width: 30%;
   margin-bottom: 15px;
@@ -160,7 +167,9 @@
 
 
   .el-input__inner {
+    text-align: center;
     border: 1 solid black;
+    padding: 0 10px;
   }
 
 
@@ -180,6 +189,7 @@
 #btn_div .el-button {
   float: right;
 }
+
 .blue-button {
   background-color: skyblue;
 }
diff --git a/CanadaMes-ui/src/views/Electrical/alarm.vue b/CanadaMes-ui/src/views/Electrical/alarm.vue
index 8d23c07..378a61d 100644
--- a/CanadaMes-ui/src/views/Electrical/alarm.vue
+++ b/CanadaMes-ui/src/views/Electrical/alarm.vue
@@ -2,20 +2,22 @@
   <div class="app">
     <!--闈㈠寘灞戝鑸尯鍩�-->
     <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb">
+
       <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;
@@ -23,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>
@@ -47,7 +49,6 @@
   mixins: [LanguageMixin],
   data () {
     return {
-      activeButton: '',
       record: {
         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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 
@@ -66,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: "",
@@ -109,12 +116,6 @@
 
   },
   methods: {
-    onButtonClick() {
-      this.isButtonClicked = true; // 灏嗘寜閽鑹茶缃负钃濊壊
-      setTimeout(() => {
-        this.isButtonClicked = false; // 閲嶇疆鎸夐挳棰滆壊
-      }, 500); // 杩欓噷鐨�500姣鏄牴鎹偍甯屾湜鎸夐挳棰滆壊鎸佺画澶氶暱鏃堕棿鏉ュ畾鐨勶紝鍙互鏍规嵁闇�姹傝繘琛岃皟鏁�
-    },
 
     load () {
       setAll().then(res => {
@@ -236,8 +237,5 @@
 td div,
 th div {
   text-align: center;
-}
-.blue-button {
-  background-color: skyblue;
 }
 </style>
\ No newline at end of file
diff --git a/CanadaMes-ui/src/views/home/index.vue b/CanadaMes-ui/src/views/home/index.vue
index 98c0f36..c2448cd 100644
--- a/CanadaMes-ui/src/views/home/index.vue
+++ b/CanadaMes-ui/src/views/home/index.vue
@@ -91,11 +91,36 @@
     background-size: 46px 94px;
     background-attachment: local;
     width: 32px;
-
     position: absolute;
     /* left: 116px; */
     /* left:1060px;18.88px */
     background-image: url('../../img/bigcar01.png');
+}
+
+.blocks-img2 {
+    height: 100px;
+    max-width: 100vw;
+    background-repeat: no-repeat;
+    background-size: 85px 100px;
+    background-attachment: local;
+    width: 100px;
+    position: absolute;
+    /* left: 116px; */
+    /* left:1060px;18.88px */
+    background-image: url('../../img/dipan.png');
+}
+
+.blocks-img3 {
+    height: 90px;
+    max-width: 100vw;
+    background-repeat: no-repeat;
+    background-size: 160px 40px;
+    background-attachment: local;
+    width: 160px;
+    position: absolute;
+    /* left: 116px; */
+    /* left:1060px;18.88px */
+    background-image: url('../../img/taimian.png');
 }
 
 .el-table td,
@@ -167,7 +192,7 @@
                     <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>
+                                @click="endtask(0, scope.row.glassId, scope.row.cell)">{{ $t('end task') }}</el-button>
                         </template>
                     </el-table-column>
                 </el-table>
@@ -181,7 +206,7 @@
                     <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>
+                                @click="endtask(1, scope.row.glassId, scope.row.cell)">{{ $t('end task') }}</el-button>
                         </template>
                     </el-table-column>
                 </el-table>
@@ -219,6 +244,8 @@
                 </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="$t('Please confirm the glass information')">
@@ -280,6 +307,8 @@
                     <template slot-scope='scope'>
                         <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
                             @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)">{{ $t('out') }}</el-button>
                     </template>
@@ -441,11 +470,11 @@
             if (this.form1.order != "") {
                 InsertOrder(this.order).then(res => {
                     if (res.data.message == 200) {
-                        this.dialogFormVisible1=false;
-                        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();
                 });
@@ -457,16 +486,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 if(res.data.message2 == 500) {
-                        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("There is no such glass");
+                    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("There is no such grid");
+                    else if (res.data.message2 == 400) {
+                        this.$message.success(this.$t('There is no such grid'));
                     }
                 });
             }
@@ -504,11 +533,23 @@
             this.form1 = {};
         },
         endtask(type, glassid, cell) {
-            UpdateTask(type, glassid, cell).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(() => {
+                UpdateTask(type, glassid, cell).then(res => {
+                    if (res.data.message3 == 200) {
+                        this.$message.success(this.$t('Operation successful'));
+                    }
+                });
+            }).catch(() => {
+                this.$message({
+                    type: 'info',
+                    message: this.$t('Operation canceled')
+                });
             });
+
         },
         showcageinfo(cage) {
             this.cage = cage;
@@ -518,31 +559,52 @@
             });
         },
         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");
-                    }
+            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 {
+                    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>
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java b/springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java
index 9425f7a..cc53b99 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java
@@ -17,7 +17,7 @@
     public void run() {
         while (this != null) {
             try {
-                Thread.sleep(5000);
+                Thread.sleep(1000);
             } catch (InterruptedException e) {
                 e.printStackTrace();
             }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/Plcstate.java b/springboot-vue3/src/main/java/com/example/springboot/component/Plcstate.java
index 69a97b7..877b813 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/Plcstate.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/Plcstate.java
@@ -16,10 +16,10 @@
         e.printStackTrace();
       }
 
-      List<Short> plclist = S7control.getinstance().ReadWord("DB103.DBW0", 10);
-      // Short[] values = { 0, 1, 1, 0, 1, 0, 1, 0,
-      // 1, 0, };
-      // List<Short> plclist = new ArrayList<>(Arrays.asList(values));
+      // List<Short> plclist = S7control.getinstance().ReadWord("DB103.DBW0", 10);
+      Short[] values = { 0, 1, 1, 0, 1, 0, 1, 0,
+          1, 0, };
+      List<Short> plclist = new ArrayList<>(Arrays.asList(values));
       if (plclist != null) {
 
         List<String> Intlist = new ArrayList<>();
diff --git a/springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java b/springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java
index 667bda8..988df23 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java
@@ -25,19 +25,15 @@
     //
     System.out.println("鍚姩瀹屾垚");
 
-
-  new PlcHold().start();
-
-
+    new PlcHold().start();
 
     new Plcaction().start();
-
 
     new Plchome().start();
 
     new PlcParameter().start();
 
- new Plcalarm().start();
+    new Plcalarm().start();
 
     new Plcsign().start();
 
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java b/springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java
index 9f32cd3..4e5c075 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java
@@ -14,323 +14,323 @@
 
 @Service
 public class SpianService {
-    @Autowired
-    private SpianMapper spianMapper;
+  @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;
-        int cages;
-        int cells;
-        double glasswidth = cageout.getGlassWidth();
-        // 鍒ゆ柇鐜荤拑鍐呭鐗�
-        if (tier == 2) {
-            // 鍒ゆ柇鐜荤拑鍙洿鎺ュ嚭鐗囨椂
-            // 淇敼鏁版嵁搴撶瀛愯〃(鍑虹墖)
-            spianMapper.UpdataOutCage(glasswidth, cage, cell);//澧炲姞鍘熸牸瀛愬搴�
-            spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 0);
-           
-            datas.add((short) prcid);
-            datas.add((short) 1000);
-            datas.add((short) 1);
-            datas.add((short) 1);
-            S7control.getinstance().WriteWord(adddresslist, datas);
-            return Result.success(datas);
-        } else {
-            // 鑾峰彇鏍煎瓙鐨勭幓鐠冩暟閲�
-            int state = spianMapper.selectGlassState(cage, cell);
-            // 鍒ゆ柇鍐呯墖鏄惁闇�瑕佽皟鎷�
-            if (state == 0) {
-                spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 0);
-                datas.add((short) prcid);
-                datas.add((short) 1000);
-                datas.add((short) 1);
-                datas.add((short) 1);
-                S7control.getinstance().WriteWord(adddresslist, datas);
-                return Result.success("鐘舵�佷负0,鐩存帴鍑虹墖");
-            } else {
-                // 鐜荤拑闇�瑕佽皟鎷ㄦ椂锛屽垽鏂睘浜庡摢涓崐鍖虹殑绗煎瓙
-                if (cage < 6) {
-                    StorageCage cagecell = spianMapper.selectGlassCage(cage, glasswidth, 0, 6);
-                    if (cagecell == null) {
-                        return Result.success(cagecell);
-                    }
-                    // 鑾峰彇璋冩嫧浣嶇疆杩涜璋冩嫧
-                    prcid2 = cagecell.getPrcId();// 璋冩嫧鐩爣浣峆RCID
-                    ids = cagecell.getId();// 璋冩嫧鐩爣浣岻D
-                    cages=cagecell.getCage();//璋冩嫧鐩爣浣嶇瀛�
-                    cells=cagecell.getCell();//璋冩嫧鐩爣浣嶆牸瀛�
-                    // 鏇存崲鐜荤拑鐨勭瀛�
-                    spianMapper.UpdataAddCage1(glasswidth, cages, cells);//鍑忓皯鏂版牸瀛愬搴�
-                    spianMapper.UpdateDBCage(ids, cage, cell);// 灏嗗師鏍煎瓙鏁版嵁鏇存柊鍒版柊鏍煎瓙閲�
-                    spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 0);// 娓呴櫎鍘熸牸瀛愭暟鎹�
-                    spianMapper.UpdataOutCage(glasswidth, cage, cell);//澧炲姞鍘熸牸瀛愬搴�
-                    // 濉叆璋冩嫧鏁版嵁
-                    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);
-                    // 淇敼鏁版嵁搴撶瀛愯〃(鍑虹墖)
+  // @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;
+    int cages;
+    int cells;
+    double glasswidth = cageout.getGlassWidth();
+    // 鍒ゆ柇鐜荤拑鍐呭鐗�
+    if (tier == 2) {
+      // 鍒ゆ柇鐜荤拑鍙洿鎺ュ嚭鐗囨椂
+      // 淇敼鏁版嵁搴撶瀛愯〃(鍑虹墖)
+      spianMapper.UpdataOutCage(glasswidth, cage, cell);// 澧炲姞鍘熸牸瀛愬搴�
+      spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 0);
 
-                    return Result.success(cagecell); // 璋冩嫧浣嶇疆鐨勫弬鏁板唴瀹�
+      datas.add((short) prcid);
+      datas.add((short) 1000);
+      datas.add((short) 1);
+      datas.add((short) 1);
+      S7control.getinstance().WriteWord(adddresslist, datas);
+      return Result.success(datas);
+    } else {
+      // 鑾峰彇鏍煎瓙鐨勭幓鐠冩暟閲�
+      int state = spianMapper.selectGlassState(cage, cell);
+      // 鍒ゆ柇鍐呯墖鏄惁闇�瑕佽皟鎷�
+      if (state == 0) {
+        spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 0);
+        datas.add((short) prcid);
+        datas.add((short) 1000);
+        datas.add((short) 1);
+        datas.add((short) 1);
+        S7control.getinstance().WriteWord(adddresslist, datas);
+        return Result.success("鐘舵�佷负0,鐩存帴鍑虹墖");
+      } else {
+        // 鐜荤拑闇�瑕佽皟鎷ㄦ椂锛屽垽鏂睘浜庡摢涓崐鍖虹殑绗煎瓙
+        if (cage < 6) {
+          StorageCage cagecell = spianMapper.selectGlassCage(cage, glasswidth, 0, 6);
+          if (cagecell == null) {
+            return Result.success(cagecell);
+          }
+          // 鑾峰彇璋冩嫧浣嶇疆杩涜璋冩嫧
+          prcid2 = cagecell.getPrcId();// 璋冩嫧鐩爣浣峆RCID
+          ids = cagecell.getId();// 璋冩嫧鐩爣浣岻D
+          cages = cagecell.getCage();// 璋冩嫧鐩爣浣嶇瀛�
+          cells = cagecell.getCell();// 璋冩嫧鐩爣浣嶆牸瀛�
+          // 鏇存崲鐜荤拑鐨勭瀛�
+          spianMapper.UpdataAddCage1(glasswidth, cages, cells);// 鍑忓皯鏂版牸瀛愬搴�
+          spianMapper.UpdateDBCage(ids, cage, cell);// 灏嗗師鏍煎瓙鏁版嵁鏇存柊鍒版柊鏍煎瓙閲�
+          spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 0);// 娓呴櫎鍘熸牸瀛愭暟鎹�
+          spianMapper.UpdataOutCage(glasswidth, cage, cell);// 澧炲姞鍘熸牸瀛愬搴�
+          // 濉叆璋冩嫧鏁版嵁
+          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);
+          // 淇敼鏁版嵁搴撶瀛愯〃(鍑虹墖)
 
-                } else {// 绗煎瓙鍙峰ぇ浜�5鏃�
-                    StorageCage cagecell = spianMapper.selectGlassCage(cage, glasswidth, 5, 11);
-                    if (cagecell == null) {
-                        return Result.success(cagecell);
-                    }
-                    // 鑾峰彇璋冩嫧浣嶇疆杩涜璋冩嫧
-                    prcid2 = cagecell.getPrcId();// 璋冩嫧鐩爣浣峱rcID
-                    ids = cagecell.getId();// 璋冩嫧鐩爣浣岻D
-                    cages=cagecell.getCage();//璋冩嫧鐩爣浣嶇瀛�
-                    cells=cagecell.getCell();//璋冩嫧鐩爣浣嶆牸瀛�
-                    // 濉叆璋冩嫧鏁版嵁
-                    datas.add((short) prcid);
-                    datas.add((short) prcid2);
-                    datas.add((short) 2);
-                    datas.add((short) 1);
-                    // 杞Щ鍘熻皟鎷ㄦ牸瀛愭暟鎹�
-                    spianMapper.UpdataAddCage(glasswidth, cages, cells);//鍑忓皯鏂版牸瀛愬搴�
-                    spianMapper.UpdateDBCage(ids, cage, cell);// 灏嗗師鏍煎瓙鏁版嵁鏇存柊鍒版柊鏍煎瓙閲�
-                    spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 0);// 娓呴櫎鍘熸牸瀛愭暟鎹�
-                    spianMapper.UpdataOutCage(glasswidth, cage, cell);//澧炲姞鍘熸牸瀛愬搴�
-                    // 浼犺緭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); // 璋冩嫧浣嶇疆鐨勫弬鏁板唴瀹�
+          return Result.success(cagecell); // 璋冩嫧浣嶇疆鐨勫弬鏁板唴瀹�
 
-                }
+        } else {// 绗煎瓙鍙峰ぇ浜�5鏃�
+          StorageCage cagecell = spianMapper.selectGlassCage(cage, glasswidth, 5, 11);
+          if (cagecell == null) {
+            return Result.success(cagecell);
+          }
+          // 鑾峰彇璋冩嫧浣嶇疆杩涜璋冩嫧
+          prcid2 = cagecell.getPrcId();// 璋冩嫧鐩爣浣峱rcID
+          ids = cagecell.getId();// 璋冩嫧鐩爣浣岻D
+          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.UpdataOutCage(glasswidth, cage, cell);// 澧炲姞鍘熸牸瀛愬搴�
+          // 浼犺緭mes鏁版嵁,鍧愭爣锛屾暟鎹�
+          S7control.getinstance().WriteWord(adddresslist, datas);
+          datas.clear(); // 娓呯┖鏁翠釜鍒楄〃
+          // 鍒ゆ柇璋冩嫧缁撴潫鍚庡啀娆″嚭鐗�
+          // 濉叆鍑虹墖鏁版嵁
+          datas.add((short) prcid);
+          datas.add((short) 1000);
+          datas.add((short) 1);
+          datas.add((short) 1);
+          S7control.getinstance().WriteWord(adddresslist, datas);
+          return Result.success(cagecell); // 璋冩嫧浣嶇疆鐨勫弬鏁板唴瀹�
 
-            }
         }
 
+      }
     }
 
-    // @GetMapping("/all")
-    // 杩涚墖浠诲姟,浼犺鍗昳d
-    // 鎸夎鍗曚紭鍏堣繘鐗�
-    public Short selectAll(Short glassid) {
+  }
 
-        int cage1;
-        int cells;
-        int ids;
-        int prcid;
-        int tiers;
-        int prctier;
+  // @GetMapping("/all")
+  // 杩涚墖浠诲姟,浼犺鍗昳d
+  // 鎸夎鍗曚紭鍏堣繘鐗�
+  public Short selectAll(Short glassid) {
 
-        Glass glasslist = spianMapper.selectGlass(glassid);
-        if (glasslist == null) {
-            return (300);
+    int cage1;
+    int cells;
+    int ids;
+    int prcid;
+    int tiers;
+    int prctier;
+
+    Glass glasslist = spianMapper.selectGlass(glassid);
+    if (glasslist == null) {
+      return (300);
+    }
+    double widths = glasslist.getWidth();
+    Short orderids = glasslist.getOrderId();
+
+    List<String> adddresslist = new ArrayList<>();
+    adddresslist.add("DB105.0");// 杩涚墖杞﹁捣濮嬩綅缃�
+    adddresslist.add("DB105.2");// 杩涚墖杞︾洰鏍囦綅缃�
+    adddresslist.add("DB105.4");// 杩涚墖绗肩幓鐠冩暟
+    adddresslist.add("DB105.12");// 杩涚墖杞﹀惎鍔� 1涓哄惎鍔�
+    List<Short> datas = new ArrayList<>();
+
+    // 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);
+      if (cages1 != null) {
+        ids = cages1.getId();// 鏁版嵁搴揑D
+        tiers = cages1.getTier();// 鍐呭鐗�
+        cells = cages1.getCell();// 鏍煎瓙鍙�
+        prcid = cages1.getPrcId();// 浼犵粰prc鐨勭洰鏍囧湴id
+        prctier = spianMapper.selectsum(cage1, cells);// 浼犵粰prc鐨勬牸瀛愬唴鐜荤拑鏁�
+        // 鏈夊悎閫傜┖鏍兼椂杩涚墖
+        if (cages > 1 && cages1.getTier() != null) {
+          // 鎵ц杩涚墖
+          datas.add((short) 1000);
+          datas.add((short) prcid);
+          datas.add((short) prctier);
+          datas.add((short) 1);
+          // 鏁版嵁搴撲慨鏀圭瀛愯〃鏂板涓�鏉$幓鐠�
+          spianMapper.UpdataAddCage(orderids, glassid, widths, cage1, cells, ids, 1);
+          spianMapper.UpdataAddCage1(widths, cage1, cells);// 鍑忓皯鏍煎瓙瀹藉害
+          S7control.getinstance().WriteWord(adddresslist, datas);
+
+          return (200);
         }
-        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<>();
-
-        // 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);
-            if (cages1 != null) {
-                ids = cages1.getId();// 鏁版嵁搴揑D
-                tiers = cages1.getTier();// 鍐呭鐗�
-                cells = cages1.getCell();// 鏍煎瓙鍙�
-                prcid = cages1.getPrcId();// 浼犵粰prc鐨勭洰鏍囧湴id
-                prctier = spianMapper.selectsum(cage1, cells);// 浼犵粰prc鐨勬牸瀛愬唴鐜荤拑鏁�
-                // 鏈夊悎閫傜┖鏍兼椂杩涚墖
-                if (cages > 1 && cages1.getTier() != null) {
-                    // 鎵ц杩涚墖
-                    datas.add((short) 1000);
-                    datas.add((short) prcid);
-                    datas.add((short) prctier);
-                    datas.add((short) 1);
-                    // 鏁版嵁搴撲慨鏀圭瀛愯〃鏂板涓�鏉$幓鐠�
-                    spianMapper.UpdataAddCage(orderids, glassid, widths, cage1, cells, ids, 1);
-                    spianMapper.UpdataAddCage1(widths, cage1, cells);//鍑忓皯鏍煎瓙瀹藉害
-                    S7control.getinstance().WriteWord(adddresslist, datas);
-
-                    return (200);
-                }
-            }
-
-        }
-        return (400);
+      }
 
     }
+    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;
-        int cages;
-        int cells;
-        double glasswidth = cageout.getGlassWidth();
-        // 鍒ゆ柇鐜荤拑鍐呭鐗�
-        if (tier == 2) {
-            // 鍒ゆ柇鐜荤拑鍙洿鎺ュ嚭鐗囨椂
-            // 淇敼鏁版嵁搴撶瀛愯〃(鍑虹墖)
-            spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 0);
-            spianMapper.UpdataOutCage(glasswidth, cage, cell);//澧炲姞鍘熸牸瀛愬搴�
-            datas.add((short) prcid);
-            datas.add((short) 1000);
-            datas.add((short) 1);
-            datas.add((short) 1);
-            S7control.getinstance().WriteWord(adddresslist, datas);
-            return Result.success(datas);
-        } else {
-            // 鑾峰彇鏍煎瓙鐨勭幓鐠冩暟閲�
-            int state = spianMapper.selectGlassState(cage, cell);
-            // 鍒ゆ柇鍐呯墖鏄惁闇�瑕佽皟鎷�
-            if (state == 0) {
-                return Result.success("鐘舵�佷负0,鐩存帴鍑虹墖");
-            } else {
-                // 鐜荤拑闇�瑕佽皟鎷ㄦ椂锛屽垽鏂睘浜庡摢涓崐鍖虹殑绗煎瓙
-                if (cage < 6) {
-                    StorageCage cagecell = spianMapper.selectGlassCage(cage, glasswidth, 0, 6);
-                    if (cagecell == null) {
-                        return Result.success(cagecell);
-                    }
-                    // 鑾峰彇璋冩嫧浣嶇疆杩涜璋冩嫧
-                    prcid2 = cagecell.getPrcId();// 璋冩嫧鐩爣浣峆RCID
-                    ids = cagecell.getId();// 璋冩嫧鐩爣浣岻D
-                    cages=cagecell.getCage();//璋冩嫧鐩爣浣嶇瀛�
-                    cells=cagecell.getCell();//璋冩嫧鐩爣浣嶆牸瀛�
-                    // 鏇存崲鐜荤拑鐨勭瀛�
-                    spianMapper.UpdataAddCage1(glasswidth, cages, cells);//鍑忓皯鏂版牸瀛愬搴�
-                    spianMapper.UpdateDBCage(ids, cage, cell);// 灏嗗師鏍煎瓙鏁版嵁鏇存柊鍒版柊鏍煎瓙閲�
-                    spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 0);// 娓呴櫎鍘熸牸瀛愭暟鎹�
-                    spianMapper.UpdataOutCage(glasswidth, cage, cell);//澧炲姞鍘熸牸瀛愬搴�
-                    // 濉叆璋冩嫧鏁版嵁
-                    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); // 璋冩嫧浣嶇疆鐨勫弬鏁板唴瀹�
+  // @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;
+    int cages;
+    int cells;
+    double glasswidth = cageout.getGlassWidth();
+    // 鍒ゆ柇鐜荤拑鍐呭鐗�
+    if (tier == 2) {
+      // 鍒ゆ柇鐜荤拑鍙洿鎺ュ嚭鐗囨椂
+      // 淇敼鏁版嵁搴撶瀛愯〃(鍑虹墖)
+      spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 0);
+      spianMapper.UpdataOutCage(glasswidth, cage, cell);// 澧炲姞鍘熸牸瀛愬搴�
+      datas.add((short) prcid);
+      datas.add((short) 1000);
+      datas.add((short) 1);
+      datas.add((short) 1);
+      S7control.getinstance().WriteWord(adddresslist, datas);
+      return Result.success(datas);
+    } else {
+      // 鑾峰彇鏍煎瓙鐨勭幓鐠冩暟閲�
+      int state = spianMapper.selectGlassState(cage, cell);
+      // 鍒ゆ柇鍐呯墖鏄惁闇�瑕佽皟鎷�
+      if (state == 0) {
+        return Result.success("鐘舵�佷负0,鐩存帴鍑虹墖");
+      } else {
+        // 鐜荤拑闇�瑕佽皟鎷ㄦ椂锛屽垽鏂睘浜庡摢涓崐鍖虹殑绗煎瓙
+        if (cage < 6) {
+          StorageCage cagecell = spianMapper.selectGlassCage(cage, glasswidth, 0, 6);
+          if (cagecell == null) {
+            return Result.success(cagecell);
+          }
+          // 鑾峰彇璋冩嫧浣嶇疆杩涜璋冩嫧
+          prcid2 = cagecell.getPrcId();// 璋冩嫧鐩爣浣峆RCID
+          ids = cagecell.getId();// 璋冩嫧鐩爣浣岻D
+          cages = cagecell.getCage();// 璋冩嫧鐩爣浣嶇瀛�
+          cells = cagecell.getCell();// 璋冩嫧鐩爣浣嶆牸瀛�
+          // 鏇存崲鐜荤拑鐨勭瀛�
+          spianMapper.UpdataAddCage1(glasswidth, cages, cells);// 鍑忓皯鏂版牸瀛愬搴�
+          spianMapper.UpdateDBCage(ids, cage, cell);// 灏嗗師鏍煎瓙鏁版嵁鏇存柊鍒版柊鏍煎瓙閲�
+          spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 0);// 娓呴櫎鍘熸牸瀛愭暟鎹�
+          spianMapper.UpdataOutCage(glasswidth, cage, cell);// 澧炲姞鍘熸牸瀛愬搴�
+          // 濉叆璋冩嫧鏁版嵁
+          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);
+          // 淇敼鏁版嵁搴撶瀛愯〃(鍑虹墖)
 
-                } else {// 绗煎瓙鍙峰ぇ浜�5鏃�
-                    StorageCage cagecell = spianMapper.selectGlassCage(cage, glasswidth, 5, 11);
-                    if (cagecell == null) {
-                        return Result.success(cagecell);
-                    }
-                    // 鑾峰彇璋冩嫧浣嶇疆杩涜璋冩嫧
-                    prcid2 = cagecell.getPrcId();// 璋冩嫧鐩爣浣峱rcID
-                    ids = cagecell.getId();// 璋冩嫧鐩爣浣岻D
-                    cages=cagecell.getCage();//璋冩嫧鐩爣浣嶇瀛�
-                    cells=cagecell.getCell();//璋冩嫧鐩爣浣嶆牸瀛�
-                   
-                    // 濉叆璋冩嫧鏁版嵁
-                    datas.add((short) prcid);
-                    datas.add((short) prcid2);
-                    datas.add((short) 2);
-                    datas.add((short) 1);
-                    // 杞Щ鍘熻皟鎷ㄦ牸瀛愭暟鎹�
-                    spianMapper.UpdateDBCage(ids, cage, cell);// 灏嗗師鏍煎瓙鏁版嵁鏇存柊鍒版柊鏍煎瓙閲�
-                    spianMapper.UpdataAddCage(glasswidth, cages, cells);//鍑忓皯鏂版牸瀛愬搴�
-                    spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 0);// 娓呴櫎鍘熸牸瀛愭暟鎹�
-                    spianMapper.UpdataOutCage(glasswidth, cage, cell);//澧炲姞鍘熸牸瀛愬搴�
-                    // 浼犺緭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); // 璋冩嫧浣嶇疆鐨勫弬鏁板唴瀹�
+          return Result.success(cagecell); // 璋冩嫧浣嶇疆鐨勫弬鏁板唴瀹�
 
-                }
+        } else {// 绗煎瓙鍙峰ぇ浜�5鏃�
+          StorageCage cagecell = spianMapper.selectGlassCage(cage, glasswidth, 5, 11);
+          if (cagecell == null) {
+            return Result.success(cagecell);
+          }
+          // 鑾峰彇璋冩嫧浣嶇疆杩涜璋冩嫧
+          prcid2 = cagecell.getPrcId();// 璋冩嫧鐩爣浣峱rcID
+          ids = cagecell.getId();// 璋冩嫧鐩爣浣岻D
+          cages = cagecell.getCage();// 璋冩嫧鐩爣浣嶇瀛�
+          cells = cagecell.getCell();// 璋冩嫧鐩爣浣嶆牸瀛�
 
-            }
+          // 濉叆璋冩嫧鏁版嵁
+          datas.add((short) prcid);
+          datas.add((short) prcid2);
+          datas.add((short) 2);
+          datas.add((short) 1);
+          // 杞Щ鍘熻皟鎷ㄦ牸瀛愭暟鎹�
+          spianMapper.UpdateDBCage(ids, cage, cell);// 灏嗗師鏍煎瓙鏁版嵁鏇存柊鍒版柊鏍煎瓙閲�
+          spianMapper.UpdataAddCage1(glasswidth, cages, cells);// 鍑忓皯鏂版牸瀛愬搴�
+          spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 0);// 娓呴櫎鍘熸牸瀛愭暟鎹�
+          spianMapper.UpdataOutCage(glasswidth, cage, cell);// 澧炲姞鍘熸牸瀛愬搴�
+          // 浼犺緭mes鏁版嵁,鍧愭爣锛屾暟鎹�
+          S7control.getinstance().WriteWord(adddresslist, datas);
+          datas.clear(); // 娓呯┖鏁翠釜鍒楄〃
+          // 鍒ゆ柇璋冩嫧缁撴潫鍚庡啀娆″嚭鐗�
+          // 濉叆鍑虹墖鏁版嵁
+          datas.add((short) prcid);
+          datas.add((short) 1000);
+          datas.add((short) 1);
+          datas.add((short) 1);
+          S7control.getinstance().WriteWord(adddresslist, datas);
+          return Result.success(cagecell); // 璋冩嫧浣嶇疆鐨勫弬鏁板唴瀹�
+
         }
 
+      }
     }
 
-    /*** 淇敼鐢ㄦ埛* @throws SQLException */
-    // public static int updateUser(Glass user) throws SQLException {conn =
-    // getConn();
-    // String sql = "update t_user set name=?,gender=?,age=?,score=?"+ " where
-    // id=?";ps = conn.prepareStatement(sql);
-    // ps.setString(1, user.getName());ps.setString(2, user.getGender());
-    // ps.setInt(3, user.getAge());ps.setDouble(4, user.getScore());ps.setInt(5,
-    // user.getId());return ps.executeUpdate();}
-    // /*** 澧炲姞鐢ㄦ埛* @throws SQLException */
-    // public static int insertUser(User user) throws SQLException {
-    // conn = getConn();
-    // String sql = "insert into t_user(name,gender,age,score)"+ " values(?,?,?,?)";
-    // ps = conn.prepareStatement(sql);ps.setString(1,
-    // user.getName());ps.setString(2, user.getGender());
-    // ps.setInt(3, user.getAge());ps.setDouble(4, user.getScore());return
-    // ps.executeUpdate();
-    // }
+  }
+
+  /*** 淇敼鐢ㄦ埛* @throws SQLException */
+  // public static int updateUser(Glass user) throws SQLException {conn =
+  // getConn();
+  // String sql = "update t_user set name=?,gender=?,age=?,score=?"+ " where
+  // id=?";ps = conn.prepareStatement(sql);
+  // ps.setString(1, user.getName());ps.setString(2, user.getGender());
+  // ps.setInt(3, user.getAge());ps.setDouble(4, user.getScore());ps.setInt(5,
+  // user.getId());return ps.executeUpdate();}
+  // /*** 澧炲姞鐢ㄦ埛* @throws SQLException */
+  // public static int insertUser(User user) throws SQLException {
+  // conn = getConn();
+  // String sql = "insert into t_user(name,gender,age,score)"+ " values(?,?,?,?)";
+  // ps = conn.prepareStatement(sql);ps.setString(1,
+  // user.getName());ps.setString(2, user.getGender());
+  // ps.setInt(3, user.getAge());ps.setDouble(4, user.getScore());return
+  // ps.executeUpdate();
+  // }
 
 }
diff --git a/springboot-vue3/src/main/resources/sql/canadames.sql b/springboot-vue3/src/main/resources/sql/canadames.sql
index e74de2a..09a2669 100644
--- a/springboot-vue3/src/main/resources/sql/canadames.sql
+++ b/springboot-vue3/src/main/resources/sql/canadames.sql
@@ -11,7 +11,7 @@
  Target Server Version : 80019
  File Encoding         : 65001
 
- Date: 13/09/2023 09:22:22
+ Date: 13/09/2023 09:48:14
 */
 
 SET NAMES utf8mb4;

--
Gitblit v1.8.0