From 731d32992d51e945bbeb7402d1a9acd87ced9e9d Mon Sep 17 00:00:00 2001
From: ZengTao <2773468879@qq.com>
Date: 星期五, 08 九月 2023 17:25:49 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.150:10101/r/CanadaMes

---
 CanadaMes-ui/src/views/Electrical/Sign.vue                                           |   16 
 springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java          |   36 +
 springboot-vue3/src/main/java/com/example/springboot/controller/AlarmController.java |   25 +
 CanadaMes-ui/src/views/Electrical/State.vue                                          |   69 +-
 springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java         |   23 
 CanadaMes-ui/src/api/alarm.js                                                        |    8 
 CanadaMes-ui/src/views/Electrical/Parameter.vue                                      |  137 +++---
 springboot-vue3/src/main/java/com/example/springboot/component/Plcalarm.java         |   74 ---
 springboot-vue3/src/main/java/com/example/springboot/component/Plcsign.java          |   69 ---
 springboot-vue3/src/main/java/com/example/springboot/controller/SpianController.java |   77 ---
 springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java       |  142 ++++++
 CanadaMes-ui/src/views/user/index.vue                                                |    9 
 CanadaMes-ui/src/layout/tag.vue                                                      |    2 
 CanadaMes-ui/src/layout/index.vue                                                    |   30 
 springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java  |    1 
 CanadaMes-ui/src/lang/locales/zh-CN.json                                             |    5 
 CanadaMes-ui/package.json                                                            |    1 
 springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter.java     |   99 ++--
 springboot-vue3/src/main/java/com/example/springboot/component/Plcstate.java         |   62 --
 CanadaMes-ui/src/views/Electrical/alarm.vue                                          |  100 ++++
 CanadaMes-ui/package-lock.json                                                       |   14 
 CanadaMes-ui/src/lang/locales/en-US.json                                             |    1 
 springboot-vue3/src/main/java/com/example/springboot/mapper/AlarmMapper.java         |    5 
 springboot-vue3/src/main/java/com/example/springboot/component/Plcaction.java        |  141 +++---
 24 files changed, 608 insertions(+), 538 deletions(-)

diff --git a/CanadaMes-ui/package-lock.json b/CanadaMes-ui/package-lock.json
index f0dcccf..8a2960a 100644
--- a/CanadaMes-ui/package-lock.json
+++ b/CanadaMes-ui/package-lock.json
@@ -14,6 +14,7 @@
         "js-cookie": "^3.0.1",
         "less": "^3.12.2",
         "less-loader": "^6.2.0",
+        "moment": "^2.29.4",
         "vue": "^2.6.11",
         "vue-i18n": "^8.26.5",
         "vue-router": "^3.3.4",
@@ -9041,6 +9042,14 @@
       },
       "bin": {
         "mkdirp": "bin/cmd.js"
+      }
+    },
+    "node_modules/moment": {
+      "version": "2.29.4",
+      "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
+      "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==",
+      "engines": {
+        "node": "*"
       }
     },
     "node_modules/move-concurrently": {
@@ -21750,6 +21759,11 @@
         "minimist": "^1.2.5"
       }
     },
+    "moment": {
+      "version": "2.29.4",
+      "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
+      "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w=="
+    },
     "move-concurrently": {
       "version": "1.0.1",
       "resolved": "https://registry.npm.taobao.org/move-concurrently/download/move-concurrently-1.0.1.tgz",
diff --git a/CanadaMes-ui/package.json b/CanadaMes-ui/package.json
index 276a358..895a0f4 100644
--- a/CanadaMes-ui/package.json
+++ b/CanadaMes-ui/package.json
@@ -14,6 +14,7 @@
     "js-cookie": "^3.0.1",
     "less": "^3.12.2",
     "less-loader": "^6.2.0",
+    "moment": "^2.29.4",
     "vue": "^2.6.11",
     "vue-i18n": "^8.26.5",
     "vue-router": "^3.3.4",
diff --git a/CanadaMes-ui/src/api/alarm.js b/CanadaMes-ui/src/api/alarm.js
index cba7528..38c7b0f 100644
--- a/CanadaMes-ui/src/api/alarm.js
+++ b/CanadaMes-ui/src/api/alarm.js
@@ -20,3 +20,11 @@
     data
   })
 }
+
+export function setTime (shijian1, shijian2) {
+  return request({
+    url: '/alarm/stTime?shijian1=' + shijian1 + '&shijian2=' + shijian2,
+    method: 'get',
+    data: ""
+  })
+}
diff --git a/CanadaMes-ui/src/lang/locales/en-US.json b/CanadaMes-ui/src/lang/locales/en-US.json
index 20e6f97..5942770 100644
--- a/CanadaMes-ui/src/lang/locales/en-US.json
+++ b/CanadaMes-ui/src/lang/locales/en-US.json
@@ -164,6 +164,7 @@
     "B02 OUT DEC error": "B02 OUT DEC error",
     "B02 OUT pos error": "B02 OUT pos error"
   },
+  "Electrical": "Electrical",
   "Parameter": "Parameter",
   "Action": "Action",
   "Sign": "Sign",
diff --git a/CanadaMes-ui/src/lang/locales/zh-CN.json b/CanadaMes-ui/src/lang/locales/zh-CN.json
index ee14dae..d1971e8 100644
--- a/CanadaMes-ui/src/lang/locales/zh-CN.json
+++ b/CanadaMes-ui/src/lang/locales/zh-CN.json
@@ -35,6 +35,7 @@
   "exit": "閫�鍑�",
   "changePassword": "淇敼瀵嗙爜",
   "resetPassword": "閲嶇疆瀵嗙爜",
+
   "home": "涓婚〉",
   "role": "瑙掕壊",
   "langRoleManagement": "瑙掕壊绠$悊",
@@ -164,10 +165,12 @@
     "B02 OUT DEC error": "B02 OUT DEC 閿欒",
     "B02 OUT pos error": "B02 OUT pos 閿欒"
   },
+  "Electrical": "璁惧绠$悊",
   "Parameter": "鍙傛暟涓嬪彂",
   "Action": "寮�鍏虫帶鍒�",
   "Sign": "IO鐘舵��",
   "State": "State",
   "Alarm": "鎶ヨ淇℃伅",
   "Distribute": "涓嬪彂"
-}
\ No newline at end of file
+}
+
diff --git a/CanadaMes-ui/src/layout/index.vue b/CanadaMes-ui/src/layout/index.vue
index 8ae46e0..4e5d820 100644
--- a/CanadaMes-ui/src/layout/index.vue
+++ b/CanadaMes-ui/src/layout/index.vue
@@ -13,14 +13,14 @@
                       background-color="#222f3e" text-color="#fff" active-text-color="#ffd04b"
                       :collapse="isCollapse" :unique-opened="true"
                       :collapse-transition="false" :router="true">
-              <el-menu-item index="/" @click="goToHome">
+              <!-- <el-menu-item index="/" @click="goToHome">
                 <template slot="title">
-                  <!--鍥炬爣-->
+               
                   <i class="el-icon-menu"></i>
-                  <!--鏂囨湰-->
+                
                   <span>{{ $t('home') }}</span>
                 </template>
-              </el-menu-item>
+              </el-menu-item> -->
               <!--涓�绾ц彍鍗�-->
               <el-submenu :index="item.id.toString()" v-for="item in menuList" :key="item.id">
                 <!--涓�绾ц彍鍗曟ā鏉垮尯鍩�-->
@@ -31,6 +31,7 @@
                   <span>{{ item.name }}</span>
                 </template>
                 <!--浜岀骇鑿滃崟-->
+              
                 <el-menu-item :index="'/'+menu.router"
                               v-for="menu in item.menuLists" :key="menu.id"
                               @click="addTag(menu.router)">
@@ -53,16 +54,15 @@
         <el-menu :default-active="activePath1" class="el-menu-demo" mode="horizontal"
                  background-color="#576574" text-color="#fff" active-text-color="#ffd04b">
           <div class="header-left">
-            <el-button :icon="isCollapse ? 'el-icon-s-unfold' : 'el-icon-s-fold'" @click="toggleCollapse" style="height:30px"></el-button>
+            <el-button :icon="isCollapse ? 'el-icon-s-unfold' : 'el-icon-s-fold'" @click="toggleCollapse" style="height:30px;"></el-button>
           </div>
-          <div class="tagContainer">
-            <tag v-for="(tag, index) in tags" :key="index" :tag="tag" @removeTag="removeTag(index)" @switchTag="switchTag(index)"></tag>
-            <!-- <el-button icon="el-icon-circle-close" class="close-all-btn" @click="removeAllTags"></el-button> -->
-          </div>
+          <div class="tagContainer" style="display: flex;">
+  <tag v-for="(tag, index) in tags" :key="index" :tag="tag" @removeTag="removeTag(index)" @switchTag="switchTag(index)"></tag>
+</div>
           <template>
-            <el-submenu index="1" class="custom-submenu">
+            <el-submenu index="1" class="custom-submenu"  >
               <template slot="title">
-                <el-avatar src="../assets/emi.png" style="width:30px;height:30px;margin-top:2px;"></el-avatar>
+                <el-avatar src="../assets/emi.png"   style="width:20px;height:20px;margin-top:30px;background-color: white;"></el-avatar>
               </template>
               <el-menu-item index="1-1" @click="logout">{{ $t('exit') }}</el-menu-item>
               <el-menu-item index="1-2" @click="showChangePasswordDialog">{{ $t('changePassword') }}</el-menu-item>
@@ -149,6 +149,7 @@
     ...mapState('tags', ['tags'])
   },
   methods: {
+    
     logout: function () {
       removeToken()
       this.$router.push('/login')
@@ -168,6 +169,7 @@
     this.$store.commit('tags/addTag', tag);
   }
 },
+
 
     removeTag(index) {
       this.$store.commit('tags/removeTag', index); // 浠� Vuex Store 涓Щ闄ゆ爣绛�
@@ -235,11 +237,16 @@
 </script>
 
 <style scoped lang="less">
+
+.el-menu--horizontal > .el-submenu .el-submenu__title {
+  height: 45px !important;
+}
 .custom-submenu  {
  
  
  height: 90px   !important;
 }
+
 
 .header-container {
 
@@ -250,6 +257,7 @@
 
 .header-left {
  margin-right: auto;
+width:30px;
  
 }
 .el-aside {
diff --git a/CanadaMes-ui/src/layout/tag.vue b/CanadaMes-ui/src/layout/tag.vue
index 01a1b7d..63c425f 100644
--- a/CanadaMes-ui/src/layout/tag.vue
+++ b/CanadaMes-ui/src/layout/tag.vue
@@ -64,7 +64,7 @@
 
 .tag i {
   margin-left: 5px;
-  font-size: 12px;
+  font-size: 5px;
   cursor: pointer;
 }
 </style>
\ No newline at end of file
diff --git a/CanadaMes-ui/src/views/Electrical/Parameter.vue b/CanadaMes-ui/src/views/Electrical/Parameter.vue
index ed3cb31..d30361f 100644
--- a/CanadaMes-ui/src/views/Electrical/Parameter.vue
+++ b/CanadaMes-ui/src/views/Electrical/Parameter.vue
@@ -1,55 +1,55 @@
 <template>
   <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('Distribute') }}</el-button>
+      <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>
     </el-breadcrumb>
+    
     <div>Parameter</div>
-
-    <el-form label-width="100px" style="display: flex;flex-wrap: wrap;" :model="messagepack.data">
+  
+    <el-form label-width="100px" style="display: flex; flex-wrap: wrap;" :model="messagepack.data">
       <div id="btn_div">
-        <el-button type="primary" @click="send()">{{ $t('Distribute') }}</el-button>
+        <el-button type="primary" @click="send()" id="xiafa"  :disabled="isButtonDisabled">涓嬪彂鍙傛暟</el-button>
+       
       </div>
       <div class="kuai_div" v-for="(item, index) in record.xyData" :key="index">
-        <el-input style="width: 280px;" class="in_mc" v-model="item.name" readonly></el-input>
-        <el-input v-model.number="item.value" style="width: 80px;"
-          @input="handleChange(index, $event.target.value)"></el-input>
-      </div>
+  <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;">
+</div>
     </el-form>
   </div>
 </template>
-  
-<script>
 
-import LanguageMixin from '../../lang/LanguageMixin'
+<script>
 let socket;
 
 export default {
   name: "Parameter",
-  mixins: [LanguageMixin],
-  data () {
+  data() {
     return {
       record: {
         params: [100, 200, 10, 10, 10, 10],
         xyData: [
-          { name: "conveyor Velocity(Auto FAST)", value: 0 },
-          { name: "conveyor Velocity(Auto SLOW)", value: 0 },
-          { name: "conveyor Velocity(Manual)", value: 0 },
-          { name: "A01 A02 TURN JOG Velocity", value: 0 },
-          { name: "A01 A02 TRAVEL JOG Velocity", value: 0 },
-          { name: "B01 B02 TRAVEL JOG Velocity", value: 0 },
-          { name: "A01 A02 TURN POS Velocity AUTO", value: 0 },
-          { name: "A01 A02 TURN POS Velocity manual", value: 0 },
-          { name: "A01 A02 TRAVEL POS Velocity AUTO", value: 0 },
-          { name: "A01 A02 TRAVEL POS Velocity manual", value: 0 },
-          { name: "B01 B02 TRAVEL POS Velocity AUTO", value: 0 },
-          { name: "B01 B02 TRAVEL POS Velocity manual", value: 0 }
+          { name: "conveyor Velocity(Auto FAST)", value: 0, value2: 0 },
+          { name: "conveyor Velocity(Auto SLOW)", value: 0, value2: 0 },
+          { name: "conveyor Velocity(Manual)", value: 0 ,value2: 0 },
+          { name: "A01 A02 TURN JOG Velocity", value: 0, value2: 0 },
+          { name: "A01 A02 TRAVEL JOG Velocity", value: 0, value2: 0 },
+          { name: "B01 B02 TRAVEL JOG Velocity", value: 0, value2: 0 },
+          { name: "A01 A02 TURN POS Velocity AUTO", value: 0, value2: 0 },
+          { name: "A01 A02 TURN POS Velocity manual", value: 0, value2: 0 },
+          { name: "A01 A02 TRAVEL POS Velocity AUTO", value: 0, value2: 0 },
+          { name: "A01 A02 TRAVEL POS Velocity manual", value: 0, value2: 0 },
+          { name: "B01 B02 TRAVEL POS Velocity AUTO", value: 0, value2: 0 },
+          { name: "B01 B02 TRAVEL POS Velocity manual", value: 0, value2: 0 }
         ],
         canshu: []
       },
@@ -62,92 +62,98 @@
       }
     };
   },
-  created () {
+  
+ 
+  created() {
     this.initWebSocket();
+    this.isButtonDisabled = true;
   },
   methods: {
-    initWebSocket () {
+    initWebSocket() {
       let viewname = "Parameter";
-
+  
       if (typeof WebSocket === "undefined") {
         console.log("鎮ㄧ殑娴忚鍣ㄤ笉鏀寔WebSocket");
       } else {
         let socketUrl = "ws://" + "localhost:8888" + "/springboot-vue3/api/talk/" + viewname;
-
+  
         if (socket != null) {
           socket.close();
           socket = null;
         }
-
+  
         // 寮�鍚竴涓獁ebsocket鏈嶅姟
         socket = new WebSocket(socketUrl);
-
+  
         // 鎵撳紑浜嬩欢
         socket.onopen = function () {
           console.log("websocket宸叉墦寮�");
         };
-
+  
         // 鏀跺埌娑堟伅
         socket.onmessage = (msg) => {
-          if (!msg.data) {
-            return; // 濡傛灉鏀跺埌绌烘暟鎹紝鍒欑洿鎺ヨ繑鍥烇紝涓嶆墽琛屽悗缁�昏緫
-          }
+  if (!msg.data) {
+    return; // 濡傛灉鏀跺埌绌烘暟鎹紝鍒欑洿鎺ヨ繑鍥烇紝涓嶆墽琛屽悗缁�昏緫
+  }
 
-          let obj = JSON.parse(msg.data);
-          this.record.params[0] = obj.params[0];
+  let obj = JSON.parse(msg.data);
+  this.record.params[0] = obj.params[0];
+  this.record.state = obj.state[0];
 
-          for (let a = 0; a <= this.record.params[0].length - 1; 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];
-            }
-          }
+  let isButtonDisabled = this.record.state.includes(1); 
+  // 鍒ゆ柇state涓槸鍚﹀瓨鍦�1
+  console.log(isButtonDisabled)
+  this.isButtonDisabled = isButtonDisabled; // 灏嗗垽鏂粨鏋滀繚瀛樺埌鍙橀噺isButtonDisabled涓�
 
-          console.log(this.record.xyData);
-          this.$forceUpdate();
-        };
+  for (let a = 0; a <= this.record.params[0].length - 1; 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];
+    }
+  }
 
+  console.log(this.record.xyData);
+  this.$forceUpdate();
+};
+  
         // 鍏抽棴浜嬩欢
         socket.onclose = function () {
           console.log("websocket宸插叧闂�");
         };
-
+  
         // 鍙戠敓閿欒浜嬩欢
         socket.onerror = function () {
           console.log("websocket鍙戠敓浜嗛敊璇�");
         };
       }
     },
-    send () {
-      this.messagepack.data = this.record.xyData.map((item) => parseInt(item.value)); // 杞崲涓烘暣鏁版暟缁�
+    send() {
+      this.messagepack.data = this.record.xyData.map((item) => parseInt(item.value2)); // 杞崲涓烘暣鏁版暟缁�
       console.log(this.messagepack);
       socket?.send(JSON.stringify(this.messagepack));
     },
-    handleChange (index, value) {
+    handleChange(index, value) {
       this.record.xyData[index].value = value;
     }
   }
 };
 </script>
-  
+
 <style>
 .kuai_div {
-  width: 30%;
+  width: calc(100% / 3);
   margin-bottom: 15px;
-}
-
-.el-input {
-  border: none;
 }
 
 .el-input__inner {
   border: 1px solid black;
 }
+.in_mc{
 
-.in_mc .el-input__inner {
-  border: none;
+  border:none;
 }
+
 
 #btn_div {
   width: 100%;
@@ -156,4 +162,13 @@
 #btn_div .el-button {
   float: right;
 }
-</style>
\ No newline at end of file
+input[type="number"]::-webkit-inner-spin-button,
+  input[type="number"]::-webkit-outer-spin-button {
+    -webkit-appearance: none;
+    margin: 0;
+  }
+
+  input[type="number"] {
+    -moz-appearance: textfield; /* Firefox涓鐢ㄤ笂涓嬬澶� */
+  }
+</style>
diff --git a/CanadaMes-ui/src/views/Electrical/Sign.vue b/CanadaMes-ui/src/views/Electrical/Sign.vue
index c96d683..eee5b45 100644
--- a/CanadaMes-ui/src/views/Electrical/Sign.vue
+++ b/CanadaMes-ui/src/views/Electrical/Sign.vue
@@ -3,12 +3,12 @@
     <!--闈㈠寘灞戝鑸尯鍩�-->
     <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>
+      <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>
     </el-breadcrumb>
     <div>Sign</div>
     <div style="padding-right: 30px;display: flex;flex-wrap: wrap;" class="neir">
@@ -26,9 +26,11 @@
 </template>
 
 <script >
+import LanguageMixin from '../../lang/LanguageMixin'
 let socket;
 export default {
   name: "Sign",
+  mixins: [LanguageMixin],
   data () {
     return {
       record: {
@@ -198,7 +200,7 @@
           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.params.length; a++) {
+          for (let a = 0; a <= this.record.xyData[0] - 1; a++) {
             if (!this.record.xyData[a]) {
               this.record.xyData[a] = { name: this.record.canshu[a], value: this.record.params[0][a] };
             } else {
diff --git a/CanadaMes-ui/src/views/Electrical/State.vue b/CanadaMes-ui/src/views/Electrical/State.vue
index bd0b977..c9a3310 100644
--- a/CanadaMes-ui/src/views/Electrical/State.vue
+++ b/CanadaMes-ui/src/views/Electrical/State.vue
@@ -3,24 +3,21 @@
     <!--闈㈠寘灞戝鑸尯鍩�-->
     <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>
+      <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>
     </el-breadcrumb>
     <div>State</div>
 
 
     <el-form label-width="100px" style="display: flex;flex-wrap: wrap;" :model="messagepack.data">
-      <div id="btn_div">
-        <el-button type="primary" @click="send()">Distribute</el-button>
-        <!-- <button @click="send()">娴嬭瘯鍙戦��</button> -->
-      </div>
+
       <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" style="width: 80px;"></el-input>
+        <el-input v-model.number="item.value" style="width: 80px;"></el-input>
       </div>
 
 
@@ -34,14 +31,15 @@
 </template>
 
 <script >
-
+import LanguageMixin from '../../lang/LanguageMixin'
 let socket;
 export default {
   name: "State",
+  mixins: [LanguageMixin],
   data () {
     return {
       record: {
-        params: [0, 0, 0, 0, 0, 0, 0, 0, 0,],
+        params: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0,],
         xyData: [
           { name: 'D01.State', value: 0 },
           { name: 'D02.State', value: 0 },
@@ -54,18 +52,18 @@
           { name: 'D05.State', value: 0 },
           { name: 'D06.State', value: 0 },
         ],
-        canshu: [
-          'D01.State',
-          'D02.State',
-          'B01.State',
-          'B02.State',
-          'A01.State',
-          'A02.State',
-          'D03.State',
-          'D04.State',
-          'D05.State',
-          'D06.State',
-        ],
+        // canshu: [
+        //   'D01.State',
+        //   'D02.State',
+        //   'B01.State',
+        //   'B02.State',
+        //   'A01.State',
+        //   'A02.State',
+        //   'D03.State',
+        //   'D04.State',
+        //   'D05.State',
+        //   'D06.State',
+        // ],
 
       },
 
@@ -109,14 +107,15 @@
           //console.log("鏀跺埌鏁版嵁====" + msg.data);
           let obj = JSON.parse(msg.data);
           this.record.params[0] = obj.sta[0];
-          for (let a = 0; a <= this.record.params.length; a++) {
-            //this.record.xyData[a] = [this.record.params[0][a], this.record.canshu[a]];
-            this.record.xyData[a] = { name: this.record.canshu[a], value: this.record.params[0][a] };
+          for (let a = 0; a <= this.record.xyData[0].length - 1; 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();
-          console.log(this.record.xyData);
-          //console.log(this.record.params[0])
-          // console.log(this.records.canshu);
 
         }.bind(this);
         //鍏抽棴浜嬩欢
@@ -130,8 +129,12 @@
       }
     },
     send () {
-      this.messagepack.data = { taskname: "鍓嶇鍒板悗鍙�" };
-      socket?.send(JSON.stringify(this.messagepack));  // 灏嗙粍瑁呭ソ鐨刯son鍙戦�佺粰鏈嶅姟绔紝鐢辨湇鍔$杩涜杞彂
+      this.messagepack.data = this.record.xyData.map((item) => parseInt(item.value)); // 杞崲涓烘暣鏁版暟缁�
+      console.log(this.messagepack);
+      socket?.send(JSON.stringify(this.messagepack));
+    },
+    handleChange (index, value) {
+      this.record.xyData[index].value = value;
     }
 
   }
diff --git a/CanadaMes-ui/src/views/Electrical/alarm.vue b/CanadaMes-ui/src/views/Electrical/alarm.vue
index f3dd37c..c96986c 100644
--- a/CanadaMes-ui/src/views/Electrical/alarm.vue
+++ b/CanadaMes-ui/src/views/Electrical/alarm.vue
@@ -3,22 +3,27 @@
     <!--闈㈠寘灞戝鑸尯鍩�-->
     <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>
+      <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>
     </el-breadcrumb>
     <div>Alarm</div>
-    <!-- <el-form label-width="100px" style="display: flex;flex-wrap: wrap;" :model="{ messagepack }">
-        <div class="kuai_div" v-for="item in this.record.xyData" :key="item[1]">
-          <el-input v-model="item[1]" style="width: 240px;" class="in_mc"></el-input>
-          <el-switch v-model="item[0]" active-value="0" inactive-value="1"></el-switch>
-        </div>
-      </el-form> -->
+    <div class="block">
+      <span class="demonstration">鏃堕棿锛�</span>
+      <el-date-picker v-model="shijian1" type="datetime" placeholder="閫夋嫨鏃ユ湡鏃堕棿" align="right"
+        :picker-options="pickerOptions">
+      </el-date-picker>
+      ~
+      <el-date-picker v-model="shijian2" type="datetime" placeholder="閫夋嫨鏃ユ湡鏃堕棿" align="right"
+        :picker-options="pickerOptions">
+      </el-date-picker>
+      <el-button type="primary" @click="selectTime()">鏌ヨ</el-button>
+    </div>
 
-    <el-table :data="localizedRoles" style="width: 100%;" height="590">
+    <el-table :data="localizedRoles" style="width: 100%;" height="550">
       <el-table-column prop="id" label="id" width="80">
       </el-table-column>
       <el-table-column prop="content" label="content">
@@ -32,7 +37,10 @@
 </template>
 
 <script >
-import { setAll } from "../../api/alarm";
+import { setAll, setTime } from "../../api/alarm";
+
+import moment from 'moment';
+//setTime
 import LanguageMixin from '../../lang/LanguageMixin'
 let socket;
 export default {
@@ -47,7 +55,9 @@
 
       },
       roles: [],
+
       localizedRoles: [],
+
       messagepack: {
         data: { taskname: "" }
       },
@@ -55,15 +65,49 @@
         data: "1",
         pageSize: 10
       },
+      pickerOptions: {
+        shortcuts: [{
+          text: '浠婂ぉ',
+          onClick (picker) {
+            picker.$emit('pick', new Date());
+          }
+        }, {
+          text: '鏄ㄥぉ',
+          onClick (picker) {
+            const date = new Date();
+            date.setTime(date.getTime() - 3600 * 1000 * 24);
+            picker.$emit('pick', date);
+          }
+        }, {
+          text: '涓�鍛ㄥ墠',
+          onClick (picker) {
+            const date = new Date();
+            date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
+            picker.$emit('pick', date);
+          }
+        }],
 
+      },
+      shijian1: "",
+      shijian2: "",
     }
+
+
   },
   created () {
     this.init();
-    this.load();
+
+
+    if (this.shijian1 == "" || this.shijian2 == "") {
+      this.load();
+    }
+    else {
+      this.selectTime();
+    }
 
   },
   methods: {
+
     load () {
       setAll().then(res => {
         this.roles = res.data.list;
@@ -73,9 +117,25 @@
         } else {
           this.localizedRoles = [...this.roles];
         }
-        console.log(this.localizedRoles);
+        //console.log(this.localizedRoles);
+      });
+
+    },
+    selectTime () {
+      let sj1 = moment(this.shijian1).format('YYYY-MM-DD%20HH:mm');
+      let sj2 = moment(this.shijian2).format('YYYY-MM-DD%20HH:mm')
+
+      setTime(sj1, sj2).then(res => {
+        this.roles = res.data.list;
+        const language = this.$i18n.locale;
+        if (language === 'zh-CN') {
+          this.replaceChineseWithEnglish();
+        } else {
+          this.localizedRoles = [...this.roles];
+        }
       });
     },
+
     replaceChineseWithEnglish () {
       const translation = this.$t('translation');
       this.localizedRoles = this.roles.map(role => ({
@@ -83,6 +143,7 @@
         content: translation[role.content] || role.content
       }));
     },
+
     init () {
       let viewname = "alarm";
 
@@ -110,7 +171,12 @@
 
           this.record.params[0] = obj.arm;
           //姣忔璇锋眰鏇存柊鏁版嵁
-          this.load();
+          if (this.shijian1 == "" || this.shijian2 == "") {
+            this.load();
+          }
+          else {
+            this.selectTime();
+          }
           this.$forceUpdate();
         }.bind(this);
         //鍏抽棴浜嬩欢
diff --git a/CanadaMes-ui/src/views/user/index.vue b/CanadaMes-ui/src/views/user/index.vue
index c91da6e..82dbf5f 100644
--- a/CanadaMes-ui/src/views/user/index.vue
+++ b/CanadaMes-ui/src/views/user/index.vue
@@ -109,8 +109,8 @@
           </el-select>
         </el-form-item>
 
-        <el-form-item label="瑙掕壊" prop="roleId">
-          <el-select filterable v-model="addUserForm.roleId" placeholder="璇烽�夋嫨">
+        <el-form-item :label="$t('role')" prop="roleId">
+          <el-select filterable v-model="addUserForm.roleId" :placeholder="$t('langSelect')"  >
             <el-option v-for="item in roleList"
                        :key="item.id"
                        :value="item.id"
@@ -135,7 +135,7 @@
           <el-input v-model="editUserForm.username" disabled></el-input>
         </el-form-item>
         <el-form-item :label="$t('role')" prop="roleId">
-          <el-select filterable v-model="editUserForm.roleId" placeholder="璇烽�夋嫨">
+          <el-select filterable v-model="editUserForm.roleId" :placeholder="$t('langSelect')" >
             <el-option v-for="item in roleList"
                        :key="item.id"
                        :value="item.id"
@@ -342,7 +342,8 @@
         if (!valid) return;
        
         saveOrUpdate(this.editUserForm).then(() => {
-          this.$message.success("淇敼鐢ㄦ埛鎴愬姛");
+          const 淇敼鐢ㄦ埛鎴愬姛 = this.$t('淇敼鐢ㄦ埛鎴愬姛');
+          this.$message.success(淇敼鐢ㄦ埛鎴愬姛);
           // 闅愯棌娣诲姞鍒嗙被瀵硅瘽妗�
           this.editDialogVisible = false;
           // 閲嶆柊鑾峰彇鍒嗙被鍒楄〃
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java
index 5e776f9..f4daa38 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java
@@ -1,9 +1,11 @@
 package com.example.springboot.component;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import javax.websocket.Session;
 
+import com.example.springboot.controller.SpianController;
 import com.example.springboot.mapper.AlarmMapper;
 
 import cn.hutool.json.JSONArray;
@@ -18,15 +20,45 @@
     while (this != null) {
       try {
 
-        Thread.sleep(10000);
+        Thread.sleep(500);
       } catch (InterruptedException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
       }
       List<Boolean> bitlist = S7control.getinstance().ReadBits("DB2.0.0", 100);
-
       List<Short> paramlist = S7control.getinstance().ReadWord("DB100.6", 1);
+      
 
+      //鍒ゆ柇杩涚墖璇锋眰 
+      // List<Short> datas1List=S7control.getinstance().ReadWord("DB106.24", 1);
+      // List<Short> datas1ListState=S7control.getinstance().ReadWord("DB106.8", 1);
+      SpianController spianController=new SpianController();
+      List<Short> datas1List1=new ArrayList<>();
+      List<Short> datas1List2=new ArrayList<>();
+      datas1List1.add((short)1);
+      datas1List2.add((short)0);
+      //鑾峰彇prc杩涚墖璇锋眰鏁版嵁
+      boolean exist = datas1List1.contains((short)1); 
+      boolean exist1 = datas1List2.contains((short)0); 
+      //杩涚墖璇锋眰涓�1鏃�
+      if(exist=true){
+        //褰撹繘鐗囪溅绌洪棽鏃�
+        if(exist=true){
+        List<Short> datas1ListID=S7control.getinstance().ReadWord("DB106.26", 13);
+        //鑾峰彇鐜荤拑id
+        for(Short list1:datas1ListID)
+        spianController.selectAll(list1);
+        }
+        //System.out.println(exist);
+
+      }
+            //鑾峰彇杩涚墖id
+            // List<Short> datas1ListID=S7control.getinstance().ReadWord("DB106.26", 13);
+            
+            
+            
+        
+      
       // 鏌ヨ鏁版嵁搴�
       // 鎺ㄩ�佸埌鍓嶇
 
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter.java
index 601fd7e..d416822 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter.java
@@ -6,76 +6,57 @@
 import java.util.List;
 
 public class PlcParameter extends Thread {
-    private static final int SEND_INTERVAL = 10000;
-    private static final int WRITE_INTERVAL = 100;
-
     @Override
-
     public void run() {
-        try {
-            // 鍙戦�佷竴娆℃秷鎭�
-            sendMessages();
-
-            // 寤惰繜涓�娈垫椂闂�
-            Thread.sleep(SEND_INTERVAL);
-
-            while (true) {
-                // 鍐欏叆PLC
-                writeToPlc();
-                Thread.sleep(WRITE_INTERVAL);
-
-                // 鍙戦�佹秷鎭�
-                sendMessages();
-                Thread.sleep(SEND_INTERVAL);
+        while (this != null) {
+            try {
+                Thread.sleep(1000);
+            } catch (InterruptedException e) {
+                e.printStackTrace();
             }
 
-        } catch (InterruptedException e) {
-            e.printStackTrace();
-        }
-    }
-
-    private void sendMessages() {
-        WebSocketServer sendwServer = WebSocketServer.sessionMap.get("Parameter");
-        if (sendwServer != null) {
             List<Short> paramlist = S7control.getinstance().ReadWord("DB100.DBW", 12);
+            List<Short> state = S7control.getinstance().ReadWord("DB103.DBW0", 10);
             JSONObject jsonObject = new JSONObject();
-//            new short[]{1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0}
-            jsonObject.append("params", new short[]{1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0});
-            sendwServer.sendMessage(jsonObject.toString());
-        }
-    }
+            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});
+            WebSocketServer sendwServer = WebSocketServer.sessionMap.get("Parameter");
+            if (sendwServer != null) {
+                sendwServer.sendMessage(jsonObject.toString());
+            }
 
-    private void writeToPlc() {
-        WebSocketServer webSocketServer = WebSocketServer.sessionMap.get("Parameter");
-        if (webSocketServer != null) {
-            List<String> messages = webSocketServer.getMessages();
+            WebSocketServer webSocketServer = WebSocketServer.sessionMap.get("Parameter");
+            if (webSocketServer != null) {
+                List<String> messages = webSocketServer.getMessages();
 
-            String addressList = "DB100.DBW0";
+                String addressList = "DB100.DBW0";
 
-            if (!messages.isEmpty()) {
-                // 灏嗘渶鍚庝竴涓秷鎭浆鎹负 short 绫诲瀷鐨勫垪琛�
-                String lastMessage = messages.get(messages.size() - 1);
-                System.out.println("messages锛�" + messages);
-                String[] parts = lastMessage.split(",");
-                List<Short> messageValues = new ArrayList<>();
-                for (String part : parts) {
-                    try {
-                        // 浣跨敤姝e垯琛ㄨ揪寮忔竻闄ら潪鏁板瓧瀛楃
-                        String cleanedPart = part.replaceAll("[^0-9-]", "");
-                        short value = Short.parseShort(cleanedPart.trim());
-                        messageValues.add(value);
-                    } catch (NumberFormatException e) {
-                        // 濡傛灉鏃犳硶瑙f瀽涓� short 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
-                        e.printStackTrace();
+                if (!messages.isEmpty()) {
+                    // 灏嗘渶鍚庝竴涓秷鎭浆鎹负 short 绫诲瀷鐨勫垪琛�
+                    String lastMessage = messages.get(messages.size() - 1);
+                    System.out.println("messages锛�" + messages);
+                    String[] parts = lastMessage.split(",");
+                    List<Short> messageValues = new ArrayList<>();
+                    for (String part : parts) {
+                        try {
+                            // 浣跨敤姝e垯琛ㄨ揪寮忔竻闄ら潪鏁板瓧瀛楃
+                            String cleanedPart = part.replaceAll("[^0-9-]", "");
+                            short value = Short.parseShort(cleanedPart.trim());
+                            messageValues.add(value);
+                        } catch (NumberFormatException e) {
+                            // 濡傛灉鏃犳硶瑙f瀽涓� short 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+
+                            e.printStackTrace();
+                        }
                     }
-                }
 
-                // 灏嗘秷鎭�煎啓鍏� PLC
-                S7control.getinstance().WriteWord(addressList, messageValues);
-                System.out.println("messageValues锛�" + messageValues);
-                System.out.println("addressList锛�" + addressList);
-                // 娓呯┖娑堟伅鍒楄〃
-                webSocketServer.clearMessages();
+                    // 灏嗘秷鎭�煎啓鍏� PLC
+                    S7control.getinstance().WriteWord(addressList, messageValues);
+                    System.out.println("messageValues锛�" + messageValues);
+                    System.out.println("addressList锛�" + addressList);
+                    // 娓呯┖娑堟伅鍒楄〃
+                    webSocketServer.clearMessages();
+                }
             }
         }
     }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/Plcaction.java b/springboot-vue3/src/main/java/com/example/springboot/component/Plcaction.java
index c6e197c..5e4d59e 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/Plcaction.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/Plcaction.java
@@ -3,97 +3,84 @@
 import cn.hutool.json.JSONObject;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 public class Plcaction extends Thread {
-  private static final long SEND_INTERVAL = 2000; // 鍙戦�佹秷鎭殑鏃堕棿闂撮殧
-  private static final long WRITE_INTERVAL = 100; // 鍐欏叆PLC鐨勬椂闂撮棿闅�
-
   @Override
   public void run() {
-    try {
-      // 鍙戦�佷竴娆℃秷鎭�
-      sendMessages();
-
-      // 寤惰繜涓�娈垫椂闂�
-      Thread.sleep(SEND_INTERVAL);
-
-      while (true) {
-        // 鍐欏叆PLC
-        writeToPlc();
-        Thread.sleep(WRITE_INTERVAL);
-
-        // 鍙戦�佹秷鎭�
-        sendMessages();
-        Thread.sleep(SEND_INTERVAL);
+    while (this != null) {
+      try {
+        Thread.sleep(1000);
+      } catch (InterruptedException e) {
+        e.printStackTrace();
       }
 
-    } catch (InterruptedException e) {
-      e.printStackTrace();
-    }
-  }
+//      List<Boolean> paramlist = S7control.getinstance().ReadBits("DB100.DBW", 12);
+////
+//      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});
 
-  private void sendMessages() {
-    WebSocketServer sendwServer = WebSocketServer.sessionMap.get("action");
-    if (sendwServer != null) {
+//      List<Boolean> paramlist = S7control.getinstance().ReadBits("DB100.DBW", 12);
+      Boolean[] values = {false, true,false, true,false, true,false, true,false, true,false, true,false, true,false, true,false, true,false, true,false, true};
+      List<Boolean> paramlist = new ArrayList<>(Arrays.asList(values));
+      if (paramlist == null) {
 
-      List<Boolean> paramlist = S7control.getinstance().ReadBits("DB100.DBW", 12);
-      // 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}
-      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 });
+      } else {
+        short[] params = new short[paramlist.size()];
 
-      sendwServer.sendMessage(jsonObject.toString());
-    }
-
-  }
-
-  private void writeToPlc() {
-    WebSocketServer webSocketServer = WebSocketServer.sessionMap.get("action");
-    if (webSocketServer != null) {
-      List<String> messages = webSocketServer.getMessages();
-
-      String addressList = "DB100.DBW0";
-
-      if (!messages.isEmpty()) {
-        // 灏嗘渶鍚庝竴涓秷鎭浆鎹负鏁存暟绫诲瀷鐨勫垪琛�
-        String lastMessage = messages.get(messages.size() - 1);
-        System.out.println("messages锛�" + messages);
-        String[] parts = lastMessage.split(",");
-        List<Integer> messageValues = new ArrayList<>();
-        for (String part : parts) {
-          try {
-            // 浣跨敤姝e垯琛ㄨ揪寮忔竻闄ら潪鏁板瓧瀛楃
-            String cleanedPart = part.replaceAll("[^0-9-]", "");
-            Integer value = Integer.parseInt(cleanedPart.trim());
-            messageValues.add(value);
-          } catch (NumberFormatException e) {
-            // 濡傛灉鏃犳硶瑙f瀽涓烘暣鏁扮被鍨嬶紝鍒欏拷鐣ヨ閮ㄥ垎
-            e.printStackTrace();
-          }
+        for (int i = 0; i < paramlist.size(); i++) {
+          boolean value = paramlist.get(i);
+          params[i] = value ? (short) 1 : (short) 0;
         }
-
-        // 灏嗘秷鎭�艰浆鎹负甯冨皵鍒楄〃
-        List<Boolean> messageBooleans = new ArrayList<>();
-        for (Integer value : messageValues) {
-          messageBooleans.add(value == 0 ? true : false);
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.append("params", params);
+        WebSocketServer sendwServer = WebSocketServer.sessionMap.get("action");
+        if (sendwServer != null) {
+          sendwServer.sendMessage(jsonObject.toString());
         }
+      }
 
-        // 灏嗗竷灏斿垪琛ㄥ啓鍏� PLC
-        S7control.getinstance().WriteBit(addressList, messageBooleans);
-        System.out.println("messageValues锛�" + messageBooleans);
-        System.out.println("addressList锛�" + addressList);
 
-        // 娓呯┖娑堟伅鍒楄〃
-        webSocketServer.clearMessages();
+      WebSocketServer webSocketServer = WebSocketServer.sessionMap.get("action");
+      if (webSocketServer != null) {
+
+          List<String> messages = webSocketServer.getMessages();
+
+          String addressList = "DB100.DBW0";
+
+          if (!messages.isEmpty()) {
+            // 灏嗘渶鍚庝竴涓秷鎭浆鎹负鏁存暟绫诲瀷鐨勫垪琛�
+            String lastMessage = messages.get(messages.size() - 1);
+            System.out.println("messages锛�" + messages);
+            String[] parts = lastMessage.split(",");
+            List<Integer> messageValues = new ArrayList<>();
+            for (String part : parts) {
+              try {
+                // 浣跨敤姝e垯琛ㄨ揪寮忔竻闄ら潪鏁板瓧瀛楃
+                String cleanedPart = part.replaceAll("[^0-9-]", "");
+                Integer value = Integer.parseInt(cleanedPart.trim());
+                messageValues.add(value);
+              } catch (NumberFormatException e) {
+                // 濡傛灉鏃犳硶瑙f瀽涓烘暣鏁扮被鍨嬶紝鍒欏拷鐣ヨ閮ㄥ垎
+                e.printStackTrace();
+              }
+            }
+
+            // 灏嗘秷鎭�艰浆鎹负甯冨皵鍒楄〃
+            List<Boolean> messageBooleans = new ArrayList<>();
+            for (Integer value : messageValues) {
+              messageBooleans.add(value == 0 ? true : false);
+            }
+
+            // 灏嗗竷灏斿垪琛ㄥ啓鍏� PLC
+            S7control.getinstance().WriteBit(addressList, messageBooleans);
+            System.out.println("messageValues锛�" + messageBooleans);
+            System.out.println("addressList锛�" + addressList);
+          // 娓呯┖娑堟伅鍒楄〃
+          webSocketServer.clearMessages();
+        }
       }
     }
   }
-
-  private List<Boolean> paramList() {
-    // 鑾峰彇鍙傛暟鍒楄〃鐨勯�昏緫
-
-    return new ArrayList<>(); // 鍋囪杩斿洖绌哄垪琛�
-  }
-}
\ No newline at end of file
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/Plcalarm.java b/springboot-vue3/src/main/java/com/example/springboot/component/Plcalarm.java
index e90d7a4..01d9ef1 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/Plcalarm.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/Plcalarm.java
@@ -19,31 +19,22 @@
         e.printStackTrace();
       }
 
-      List<Short> paramlist = S7control.getinstance().ReadWord("DB100.DBW", 12);
-
-      // JSONObject jsonObject = new JSONObject();
-      // // jsonObject.append("params", paramlist);
-      // jsonObject.append("params", new short[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
-      // 11, });
-      // WebSocketServer sendwServer = WebSocketServer.sessionMap.get("Parameter");
-      // if (sendwServer != null) {
-      // sendwServer.sendMessage(jsonObject.toString());
-      // }
+      List<Boolean> plclist = S7control.getinstance().ReadBits("DB104.DBx0.0", 40);
 
       JSONObject jsonObject = new JSONObject();
 
-      jsonObject.append("arm",
-          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, 1, 0, 1, 0, 1, 0, 0,
-              1, 0, 1, 0, 1, 0, 1, 0, 1, });
+      jsonObject.append("params", plclist);
       WebSocketServer sendwServer = WebSocketServer.sessionMap.get("alarm");
       if (sendwServer != null) {
         sendwServer.sendMessage(jsonObject.toString());
       }
 
-      Short[] shuzu1 = {
-          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,
-          1, 0, 1, 0, 1, 0, 1, 0, 1,
-      };
+      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,
+      // };
 
       String[] shuzu = {
           "D01 VFD error",
@@ -96,53 +87,6 @@
           // alarmMapper.updatealarm(shuzu[i]);
         }
       }
-
-      // 鍐�
-      WebSocketServer webSocketServer = WebSocketServer.sessionMap.get("Parameter");
-      if (webSocketServer != null) {
-        List<String> messages = webSocketServer.getMessages();
-
-        String addressList = "DB100.DBW0";
-        // addressList.add("DB100.DBW0");
-        // addressList.add("DB100.DBW2");
-        // addressList.add("DB100.DBW4");
-        // addressList.add("DB100.DBW6");
-        // addressList.add("DB100.DBW8");
-        // addressList.add("DB100.DBW10");
-        // addressList.add("DB100.DBW12");
-        // addressList.add("DB100.DBW14");
-        // addressList.add("DB100.DBW16");
-        // addressList.add("DB100.DBW18");
-        // addressList.add("DB100.DBW20");
-        // addressList.add("DB100.DBW22");
-
-        if (!messages.isEmpty()) {
-          // 灏嗘渶鍚庝竴涓秷鎭浆鎹负 short 绫诲瀷鐨勫垪琛�
-          String lastMessage = messages.get(messages.size() - 1);
-          System.out.println("messages锛�" + messages);
-          String[] parts = lastMessage.split(",");
-          List<Short> messageValues = new ArrayList<>();
-          for (String part : parts) {
-            try {
-              // 浣跨敤姝e垯琛ㄨ揪寮忔竻闄ら潪鏁板瓧瀛楃
-              String cleanedPart = part.replaceAll("[^0-9-]", "");
-              short value = Short.parseShort(cleanedPart.trim());
-              messageValues.add(value);
-            } catch (NumberFormatException e) {
-              // 濡傛灉鏃犳硶瑙f瀽涓� short 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
-
-              e.printStackTrace();
-            }
-          }
-
-          // 灏嗘秷鎭�煎啓鍏� PLC
-          // S7control.getinstance().WriteWord(addressList, messageValues);
-          System.out.println("messageValues锛�" + messageValues);
-          System.out.println("addressList锛�" + addressList);
-          // 娓呯┖娑堟伅鍒楄〃
-          webSocketServer.clearMessages();
-        }
-      }
     }
   }
-}
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/Plcsign.java b/springboot-vue3/src/main/java/com/example/springboot/component/Plcsign.java
index 7c9c446..b641602 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/Plcsign.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/Plcsign.java
@@ -15,71 +15,20 @@
         e.printStackTrace();
       }
 
-      List<Short> paramlist = S7control.getinstance().ReadWord("DB100.DBW", 12);
+      List<Boolean> plclist = S7control.getinstance().ReadBits("DB102.DBX0.0", 58);
 
-      // JSONObject jsonObject = new JSONObject();
-      // // jsonObject.append("params", paramlist);
-      // jsonObject.append("params", new short[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
-      // 11, });
-      // WebSocketServer sendwServer = WebSocketServer.sessionMap.get("Parameter");
-      // if (sendwServer != null) {
-      // sendwServer.sendMessage(jsonObject.toString());
-      // }
-
-      JSONObject jsonObject3 = 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 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);
       WebSocketServer sendwServer3 = WebSocketServer.sessionMap.get("Sign");
       if (sendwServer3 != null) {
-        sendwServer3.sendMessage(jsonObject3.toString());
+        sendwServer3.sendMessage(jsonObject.toString());
       }
 
-      WebSocketServer webSocketServer = WebSocketServer.sessionMap.get("Sign");
-      if (webSocketServer != null) {
-        List<String> messages = webSocketServer.getMessages();
-
-        String addressList = "DB100.DBW0";
-        // addressList.add("DB100.DBW0");
-        // addressList.add("DB100.DBW2");
-        // addressList.add("DB100.DBW4");
-        // addressList.add("DB100.DBW6");
-        // addressList.add("DB100.DBW8");
-        // addressList.add("DB100.DBW10");
-        // addressList.add("DB100.DBW12");
-        // addressList.add("DB100.DBW14");
-        // addressList.add("DB100.DBW16");
-        // addressList.add("DB100.DBW18");
-        // addressList.add("DB100.DBW20");
-        // addressList.add("DB100.DBW22");
-
-        if (!messages.isEmpty()) {
-          // 灏嗘渶鍚庝竴涓秷鎭浆鎹负 short 绫诲瀷鐨勫垪琛�
-          String lastMessage = messages.get(messages.size() - 1);
-          System.out.println("messages锛�" + messages);
-          String[] parts = lastMessage.split(",");
-          List<Short> messageValues = new ArrayList<>();
-          for (String part : parts) {
-            try {
-              // 浣跨敤姝e垯琛ㄨ揪寮忔竻闄ら潪鏁板瓧瀛楃
-              String cleanedPart = part.replaceAll("[^0-9-]", "");
-              short value = Short.parseShort(cleanedPart.trim());
-              messageValues.add(value);
-            } catch (NumberFormatException e) {
-              // 濡傛灉鏃犳硶瑙f瀽涓� short 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
-
-              e.printStackTrace();
-            }
-          }
-
-          // 灏嗘秷鎭�煎啓鍏� PLC
-          // S7control.getinstance().WriteWord(addressList, messageValues);
-          System.out.println("messageValues锛�" + messageValues);
-          System.out.println("addressList锛�" + addressList);
-          // 娓呯┖娑堟伅鍒楄〃
-          webSocketServer.clearMessages();
-        }
-      }
     }
   }
 }
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 9596db9..b3556f7 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
@@ -15,71 +15,17 @@
         e.printStackTrace();
       }
 
-      List<Short> paramlist = S7control.getinstance().ReadWord("DB100.DBW", 12);
-
-      // JSONObject jsonObject = new JSONObject();
-      // // jsonObject.append("params", paramlist);
-      // jsonObject.append("params", new short[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
-      // 11, });
-      // WebSocketServer sendwServer = WebSocketServer.sessionMap.get("Parameter");
-      // if (sendwServer != null) {
-      // sendwServer.sendMessage(jsonObject.toString());
-      // }
+      List<Short> plclist = S7control.getinstance().ReadWord("DB103.DBW0", 10);
 
       JSONObject jsonObject = new JSONObject();
-      jsonObject.append("sta",
-          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, 1, 0, 1, 0, 1, 0, 0,
-              1, });
+      // jsonObject.append("sta",
+      // new short[] { 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, });
+      jsonObject.append("sta", plclist);
       WebSocketServer sendwServer = WebSocketServer.sessionMap.get("State");
       if (sendwServer != null) {
         sendwServer.sendMessage(jsonObject.toString());
       }
 
-      WebSocketServer webSocketServer = WebSocketServer.sessionMap.get("State");
-      if (webSocketServer != null) {
-        List<String> messages = webSocketServer.getMessages();
-
-        String addressList = "DB100.DBW0";
-        // addressList.add("DB100.DBW0");
-        // addressList.add("DB100.DBW2");
-        // addressList.add("DB100.DBW4");
-        // addressList.add("DB100.DBW6");
-        // addressList.add("DB100.DBW8");
-        // addressList.add("DB100.DBW10");
-        // addressList.add("DB100.DBW12");
-        // addressList.add("DB100.DBW14");
-        // addressList.add("DB100.DBW16");
-        // addressList.add("DB100.DBW18");
-        // addressList.add("DB100.DBW20");
-        // addressList.add("DB100.DBW22");
-
-        if (!messages.isEmpty()) {
-          // 灏嗘渶鍚庝竴涓秷鎭浆鎹负 short 绫诲瀷鐨勫垪琛�
-          String lastMessage = messages.get(messages.size() - 1);
-          System.out.println("messages锛�" + messages);
-          String[] parts = lastMessage.split(",");
-          List<Short> messageValues = new ArrayList<>();
-          for (String part : parts) {
-            try {
-              // 浣跨敤姝e垯琛ㄨ揪寮忔竻闄ら潪鏁板瓧瀛楃
-              String cleanedPart = part.replaceAll("[^0-9-]", "");
-              short value = Short.parseShort(cleanedPart.trim());
-              messageValues.add(value);
-            } catch (NumberFormatException e) {
-              // 濡傛灉鏃犳硶瑙f瀽涓� short 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
-
-              e.printStackTrace();
-            }
-          }
-
-          // 灏嗘秷鎭�煎啓鍏� PLC
-          // S7control.getinstance().WriteWord(addressList, messageValues);
-          System.out.println("messageValues锛�" + messageValues);
-          System.out.println("addressList锛�" + addressList);
-          // 娓呯┖娑堟伅鍒楄〃
-          webSocketServer.clearMessages();
-        }
-      }
     }
   }
 }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/controller/AlarmController.java b/springboot-vue3/src/main/java/com/example/springboot/controller/AlarmController.java
index 43aeeb4..034beb9 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/controller/AlarmController.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/controller/AlarmController.java
@@ -13,6 +13,7 @@
 import com.example.springboot.entity.alarmmg;
 import com.example.springboot.mapper.AlarmMapper;
 import com.example.springboot.service.AlarmService;
+import com.microsoft.schemas.office.office.STInsetMode;
 
 @RestController
 @RequestMapping("/alarm")
@@ -25,10 +26,32 @@
 
   @GetMapping("/load")
   public Result selectAll() {
-    List<alarmmg> storageCagelist = alarmMapper.selectAll();
+
     Map<String, Object> map = new HashMap<>();
+    List<alarmmg> storageCagelist = alarmMapper.selectAll();
     map.put("list", storageCagelist);
     return Result.success(map);
   }
 
+  @GetMapping("/stTime")
+  public Result selecttime(String shijian1, String shijian2) {
+    System.out.println("++++++");
+    System.out.println(shijian1);
+
+    if (shijian1 != "" || shijian2 != "") {
+      String sj1 = shijian1.replace("#20", " ");
+      String sj2 = shijian2.replace("#20", " ");
+      List<alarmmg> storageCagelist = alarmMapper.selecttime(sj1, sj2);
+      Map<String, Object> map = new HashMap<>();
+      map.put("list", storageCagelist);
+      return Result.success(map);
+    } else {
+      List<alarmmg> storageCagelist = alarmMapper.selectAll();
+      Map<String, Object> map = new HashMap<>();
+      map.put("list", storageCagelist);
+      return Result.success(map);
+    }
+
+  }
+
 }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java b/springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java
index 4216a59..b7332cb 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java
@@ -77,6 +77,7 @@
         }else{
             map.put("message2","200");
             //璋冪敤浼嶄笂鐗囧嚱鏁�
+            
         }
         return Result.success(map);
     }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/controller/SpianController.java b/springboot-vue3/src/main/java/com/example/springboot/controller/SpianController.java
index 0b0e6d2..9a7de54 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/controller/SpianController.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/controller/SpianController.java
@@ -1,6 +1,7 @@
 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;
@@ -13,6 +14,7 @@
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Map;
 @RestController
@@ -23,88 +25,27 @@
     
     @Autowired
     SpianMapper spianMapper;
-    
-    
     @Autowired
     SpianService spianservice;
     //鍑虹墖浠诲姟
 @GetMapping("/all2")
-    public Result selectdd(String orderid){
-        //鑾峰彇浼樺厛鍑虹墖鐨勪綅缃�
-         StorageCage cageout=spianMapper.selectOut(orderid);
-         int cage =cageout.getCage(); //鍌ㄥ瓨鍑虹墖浣嶇疆锛岀瀛愭牸瀛愬嚑鍙风幓鐠�
-         int cell =cageout.getCell();
-         int tier =cageout.getTier();
-         double glasswidth=cageout.getGlassWidth();
-         //鍒ゆ柇鐜荤拑鍐呭鐗�
-         if(tier==2){
-             //鍒ゆ柇鐜荤拑鍙洿鎺ュ嚭鐗囨椂
-                return Result.success("鎵ц鍑虹墖");  
-         }
-         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);
-                //鑾峰彇璋冩嫧浣嶇疆杩涜璋冩嫧
-                return Result.success(cagecell);  //璋冩嫧浣嶇疆鐨勫弬鏁板唴瀹�
-                //鍒ゆ柇璋冩嫧缁撴潫鍚庡啀娆″嚭鐗�
-               }else{
-                StorageCage cagecell= spianMapper.selectGlassCage(cage,glasswidth,5,11);
-                //鑾峰彇璋冩嫧浣嶇疆杩涜璋冩嫧
-                StorageCage ca=cagecell;
-                return Result.success(cagecell);  //璋冩嫧浣嶇疆鐨勫弬鏁板唴瀹� 
-                //鍒ゆ柇璋冩嫧缁撴潫鍚庡啀娆″嚭鐗�
-                
-               }
-               
-             }
-        }
+    public void selectdd(String orderid){
+       SpianService service=new SpianService();
+       service.selectadd(orderid);
     
 }
 
    @GetMapping("/all")
    //杩涚墖浠诲姟,浼犺鍗昳d
    //鎸夎鍗曚紭鍏堣繘鐗�
-    public Result selectAll(String orderid){
-        //return spianMapper.selectAll(); 
-        int cage1;
-        //String orderid="A001";
-        //鑾峰彇璁㈠崟鐩稿叧搴︽渶楂樼殑绗煎瓙鎺掑簭
-        List<StorageCage> storageCage=spianMapper.selectAll(orderid);
-        for (StorageCage storageCage2 : storageCage) {
-            //淇濆瓨璁㈠崟浼樺厛椤哄簭绗煎瓙鍙�
-            cage1=storageCage2.getCage();
-            //鍒ゆ柇璇ョ瀛愬彿鐩搁偦鏈�澶х殑绌烘牸鏁�
-            int cages=spianMapper.selectCage(cage1);
-            //鍒ゆ柇閫変腑绗煎瓙鏄惁鏈夌┖鏍�
-            StorageCage cages1=spianMapper.selectCage1(cage1);
-            //鏈夊悎閫傜┖鏍兼椂杩涚墖
-            if(cages>1 &&cages1.getTier()!=null){
-                //鎵ц杩涚墖
-                return Result.success(cages1);
-            }else{
-                //杩斿洖涓嶅彲杩涚墖
-            }
-            
-             
-        }         
-        return Result.success("涓嶅彲杩涚墖");      
+    public void selectAll(Short glassid){
+       SpianService service=new SpianService();
+       service.selectAll(glassid);
       
     }
     
 
-    @PostMapping("/save")
-    public Result save(@RequestBody StorageCage spian){
-        spianservice.Save(spian);
-        return Result.success();
-    }
-
+ 
 
 
 
diff --git a/springboot-vue3/src/main/java/com/example/springboot/mapper/AlarmMapper.java b/springboot-vue3/src/main/java/com/example/springboot/mapper/AlarmMapper.java
index 13238e9..c7f9ccc 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/mapper/AlarmMapper.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/mapper/AlarmMapper.java
@@ -8,7 +8,7 @@
 
 @Mapper
 public interface AlarmMapper {
-  @Select("SELECT * FROM alarmmg")
+  @Select("SELECT * FROM alarmmg where endTime is not null and to_days(timeon)=to_days(now())")
   List<alarmmg> selectAll();
 
   @Select("SELECT count(*) FROM alarmmg where endTime is null and content=#{content}")
@@ -19,4 +19,7 @@
 
   @Insert("UPDATE  `canadames`.`alarmmg` set endTime= now() where endTime is null and content=#{content}")
   void updatealarm(String content);
+
+  @Select("SELECT * FROM alarmmg where timeon between #{sj1} and #{sj2}")
+  List<alarmmg> selecttime(String sj1, String sj2);
 }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java b/springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java
index c8dc1a5..6ee7fbf 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java
@@ -12,17 +12,17 @@
 
 public interface SpianMapper {
     //鍒ゆ柇鐩搁偦绗煎瓙鏄惁鏈夌┖鏍�  
-    @Select("select COUNT(if(a.state1=0,cell,null))as cell from (select *,max(state)as state1 from storage_cage a  GROUP BY cage,cell)as a where (a.cage=#{cage1}-1 or a.cage=#{cage1}+1)and if(#{cage1}<6,a.cage>0 and a.cage<6,a.cage>5) GROUP BY cage ORDER BY cell desc LIMIT 1")
+    @Select("select COUNT(if(a.state1=0,cell,null))as cell,ROUND(id/2)as id from (select *,max(state)as state1 from storage_cage a  GROUP BY cage,cell)as a where (a.cage=#{cage1}-1 or a.cage=#{cage1}+1)and if(#{cage1}<6,a.cage>0 and a.cage<6,a.cage>5) GROUP BY cage ORDER BY cell desc LIMIT 1")
      int selectCage(int  cage1);
      
      //@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(String glassid);
+     List<StorageCage> selectAll(Short glassid);
 
      //鍒ゆ柇璇ョ瀛愭槸鍚︽湁鍚堥�傚搴︾┖鏍�
-     @Select("select COUNT(*),cage,cell,tier from storage_cage where cage=#{cage1} and state=0 and width>=1500 ORDER BY cell,tier")
-     StorageCage selectCage1(int  cage1);
+     @Select("select COUNT(*),cage,cell,IF(tier=1,0,1)as tier,ROUND(id/2)as id from storage_cage where cage=#{cage1} and state=0 and width>=#{width} ORDER BY cell,tier")
+     StorageCage selectCage1(int  cage1,double width);
 
     //@Update("update longzi set glass_id = #{glass_id}, width = #{width}, state = #{state} where cell = #{cell}")
     @Update("update longzi set glass_id =123, width =1600, state =1 where cell =24")
@@ -32,15 +32,24 @@
      void insert(StorageTask storageTask);
     
     //鍑虹墖浠诲姟鏌ヨ
-    @Select("select cage,cell,tier,glasswidth 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 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);
+
     //鍒ゆ柇鍑虹墖涓�1鏃讹紝鏄惁鍙洿鎺ュ嚭鐗�
     @Select("select state from storage_cage where cage=#{cage} and cell=#{cell} and tier=2;")
      int selectGlassState(int  cage,int cell);
+
      //鍒ゆ柇璇ヨ皟鎷ㄧ殑绗煎瓙
-     @Select("select cage,cell,max(state)as shu from storage_cage where width>=#{width} and cage>#{cage1} and cage<#{cage2} GROUP BY cage,cell HAVING shu=0 order by abs(#{cage} - cage) limit 1;")
+     @Select("select cage,cell,max(state)as shu,ROUND(id/2)as id from storage_cage where width>=#{width} and cage>#{cage1} and cage<#{cage2} GROUP BY cage,cell HAVING shu=0 order by abs(#{cage} - cage) limit 1;")
      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};")
+    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 cage=#{cage} and cell=#{cell} and tier=#{tier};")
+    void UpdataAddCage(String orderid,Short glassid,double width,int cage,int cell,int tier,int state);
     // @Insert("insert into user(name, date, address, user_no) values (#{name}, #{date}, #{address}, #{userNo})")
     // void insert (Spian spian);
     
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 4498c05..09c3df4 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
@@ -1,8 +1,14 @@
 package com.example.springboot.service;
 
+import java.util.ArrayList;
+import java.util.List;
+
 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;
 import com.example.springboot.entity.StorageCage;
 import com.example.springboot.mapper.SpianMapper;
 
@@ -10,12 +16,138 @@
 public class SpianService {
     @Autowired
     private SpianMapper spianMapper;
-    public void Save(StorageCage spian){
-        if(spian.getId()==null){
-            spianMapper.update();
-        }else{
-            spianMapper.update();
+    @GetMapping("/all2")
+    public Result selectadd(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 id=cageout.getId();
+         int ids;
+         double glasswidth=cageout.getGlassWidth();
+         //鍒ゆ柇鐜荤拑鍐呭鐗�
+         if(tier==2){
+             //鍒ゆ柇鐜荤拑鍙洿鎺ュ嚭鐗囨椂
+                //淇敼鏁版嵁搴撶瀛愯〃(鍑虹墖)
+                spianMapper.UpdataGlassCage("","",glasswidth, cage, cell, tier, 0);
+                datas.add((short)id);
+                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);
+                //鑾峰彇璋冩嫧浣嶇疆杩涜璋冩嫧
+                ids=cagecell.getId();//璋冩嫧鐩爣浣岻D
+                //濉叆璋冩嫧鏁版嵁
+                datas.add((short)id);
+                datas.add((short)ids);
+                datas.add((short)2);
+                datas.add((short)1);
+                //浼犺緭mes鏁版嵁,鍧愭爣锛屾暟鎹�
+                S7control.getinstance().WriteWord(adddresslist, datas);
+                //鏇存崲鐜荤拑鐨勭瀛�
+                datas.clear(); // 娓呯┖鏁翠釜鍒楄〃
+                //鍒ゆ柇璋冩嫧缁撴潫鍚庡啀娆″嚭鐗�,濉叆鍑虹墖鏁版嵁
+                datas.add((short)id);
+                datas.add((short)1000);
+                datas.add((short)1);
+                datas.add((short)1);
+                S7control.getinstance().WriteWord(adddresslist, datas);
+                 //淇敼鏁版嵁搴撶瀛愯〃(鍑虹墖)
+                spianMapper.UpdataGlassCage("","",glasswidth, cage, cell, tier, 0);
+                return Result.success(cagecell);  //璋冩嫧浣嶇疆鐨勫弬鏁板唴瀹�
+                
+               }else{
+                StorageCage cagecell= spianMapper.selectGlassCage(cage,glasswidth,5,11);
+                //鑾峰彇璋冩嫧浣嶇疆杩涜璋冩嫧
+                ids=cagecell.getId();//璋冩嫧鐩爣浣岻D
+                //濉叆璋冩嫧鏁版嵁
+                datas.add((short)id);
+                datas.add((short)ids);
+                datas.add((short)2);
+                datas.add((short)1);
+                //浼犺緭mes鏁版嵁,鍧愭爣锛屾暟鎹�
+                S7control.getinstance().WriteWord(adddresslist, datas);
+                datas.clear(); // 娓呯┖鏁翠釜鍒楄〃
+                //鍒ゆ柇璋冩嫧缁撴潫鍚庡啀娆″嚭鐗�
+                //濉叆鍑虹墖鏁版嵁
+                datas.add((short)id);
+                datas.add((short)1000);
+                datas.add((short)1);
+                datas.add((short)1);
+                S7control.getinstance().WriteWord(adddresslist, datas);
+                return Result.success(cagecell);  //璋冩嫧浣嶇疆鐨勫弬鏁板唴瀹�
+                
+               }
+               
+             }
         }
+    
+}
+
+   @GetMapping("/all")
+   //杩涚墖浠诲姟,浼犺鍗昳d
+   //鎸夎鍗曚紭鍏堣繘鐗�
+    public Result selectAll(Short glassid){
+        //return spianMapper.selectAll(); 
+        int cage1;
+        int ids;
+        int tier;
+        double widths=1500;
+        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);
+        for (StorageCage storageCage2 : storageCage) {
+            //淇濆瓨璁㈠崟浼樺厛椤哄簭绗煎瓙鍙�
+            cage1=storageCage2.getCage();
+            //鍒ゆ柇璇ョ瀛愬彿鐩搁偦鏈�澶х殑绌烘牸鏁�
+            int cages=spianMapper.selectCage(cage1);
+            //鍒ゆ柇閫変腑绗煎瓙鏄惁鏈夊悎閫傚搴︾┖鏍�
+            StorageCage cages1=spianMapper.selectCage1(cage1,widths);
+            ids=cages1.getId();
+            tier=cages1.getTier();
+            //鏈夊悎閫傜┖鏍兼椂杩涚墖
+            if(cages>1 &&cages1.getTier()!=null){
+                //鎵ц杩涚墖
+                datas.add((short)1000);
+                datas.add((short)ids);
+                datas.add((short)tier);
+                datas.add((short)1);
+                S7control.getinstance().WriteWord(adddresslist, datas);
+                //鏁版嵁搴撲慨鏀圭瀛愯〃鏂板涓�鏉$幓鐠�
+                spianMapper.UpdataAddCage("glassid", glassid, widths, cages, ids, tier, 1);//杩樻湭鑾峰彇鐜荤拑id
+                return Result.success(cages1);
+            }
+            
+             
+        }         
+        return Result.success("涓嶅彲杩涚墖");      
+      
     }
     
 }

--
Gitblit v1.8.0