wuyouming666
2023-12-12 c7682df2f5ef53c79847ff8cc625f5ad69a7a999
修改布局
26个文件已修改
3344 ■■■■■ 已修改文件
CanadaMes-ui/src/configuration/AutomaticParameterSetting.json 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/configuration/ManualJog.json 226 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/configuration/Positioning1.json 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/lang/locales/en-US.json 61 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/Electrical/AutomaticParameterSetting.vue 76 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/Electrical/ManualJog.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/Electrical/ManualonePosition.vue 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/Electrical/ManualonePosition2.vue 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/Electrical/Parameter1.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/Electrical/Parameter2.vue 803 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/Electrical/Positioning1.vue 313 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/Electrical/Positioning2.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/Electrical/ServoManualone.vue 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/Electrical/Servomanual.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/MessageHandler.java 149 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PLCAutomaticParameterSetting.java 305 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PLCManualJog.java 151 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter2.java 181 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcPositioning1.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcServoManualone.java 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/S7control.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java 53 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/mapper/RolePermissionMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/service/impl/RolePermissionServiceImpl.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/resources/config.properties 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/resources/sql/canadames.sql 527 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/configuration/AutomaticParameterSetting.json
@@ -110,5 +110,163 @@
      "type": "0",
      "value": ""
    }
  ]
  ],
  [
    {
        "title": {
          "name": "D01~D06输送"
        }
      },
  {
    "name": "最高速度",
    "read": 33,
    "sending": 0,
    "type": "0",
    "unit": "m/min",
    "count":3,
    "value":0
  },
  {
    "name": "高速线速度",
    "read": 11,
    "sending": 0,
    "type": "0",
    "unit": "m/min",
    "value":0
  },
  {
    "name": "低速线速度",
    "read": 11,
    "sending": 0,
    "type": "0",
    "unit": "m/min",
    "value":0
  },
  {
    "name": "手动速度",
    "read": 22,
    "sending": 0,
    "type": "0",
    "unit": "m/min",
    "value":0
  }
],
[
  {
      "title": {
        "name": "A01~A02输送"
      }
    },
{
  "name": "最高速度",
  "read": 33,
  "sending": 0,
  "type": "0",
  "unit": "m/min",
  "count":3,
  "value":0
},
{
  "name": "高速线速度",
  "read": 11,
  "sending": 0,
  "unit": "m/min",
  "type": "0",
  "value":0
},
{
  "name": "低速线速度",
  "read": 11,
  "sending": 0,
  "unit": "m/min",
  "type": "0",
  "value":0
},
{
  "name": "手动速度",
  "read": 22,
  "sending": 0,
  "unit": "m/min",
  "type": "0",
  "value":0
}
],[
{
    "title": {
      "name": "B01~B02输送"
    }
  },
{
"name": "最高速度",
"read": 33,
"sending": 0,
"type": "0",
"unit": "m/min",
"count":3,
"value":0
},
{
"name": "高速线速度",
"read": 11,
"sending": 0,
"type": "0",
"unit": "m/min",
"value":0
},
{
"name": "低速线速度",
"read": 11,
"sending": 0,
"type": "0",
"unit": "m/min",
"value":0
},
{
"name": "手动速度",
"read": 22,
"sending": 0,
"type": "0",
"unit": "m/min",
"value":0
}
]
,[
{
"name": "翻转点动速度",
"read": 33,
"sending": 0,
"type": "0",
"unit": "mm/S",
"count":3,
"value":0
}
],
[
{
"name": "小车点动速度",
"read": 11,
"sending": 0,
"unit": "mm/S",
"type": "0",
"value":0
}
]
]
CanadaMes-ui/src/configuration/ManualJog.json
@@ -65,7 +65,83 @@
    },
    {
      "button": {
        "name": "A01输送反向",
        "value": 0,
        "address": "DB10.0",
        "state": 1
      },
      "type": "3"
    },
    {
      "button": {
        "name": "A01行走点动",
        "value": 0,
        "address": "DB10.0",
        "state": 0
      },
      "type": "3"
    },
    {
      "button": {
        "name": "A01翻转",
        "value": 0,
        "address": "DB10.0",
        "state": 1
      },
      "type": "3"
    },
    {
      "button": {
        "name": "A01注电泵",
        "value": 0,
        "address": "DB10.0",
        "state": 0
      },
      "type": "3"
    },
    {
      "button": {
        "name": "A02输送正向",
        "value": 0,
        "address": "DB10.0",
        "state": 0
      },
      "type": "3"
    },
    {
      "button": {
        "name": "A02输送反向",
        "value": 0,
        "address": "DB10.0",
        "state": 1
      },
      "type": "3"
    },
    {
      "button": {
        "name": "A02行走点动",
        "value": 0,
        "address": "DB10.0",
        "state": 0
      },
      "type": "3"
    },
    {
      "button": {
        "name": "A02翻转",
        "value": 0,
        "address": "DB10.0",
        "state": 1
      },
      "type": "3"
    },
    {
      "button": {
        "name": "A02注电泵",
        "value": 0,
        "address": "DB10.0",
        "state": 0
@@ -83,51 +159,6 @@
    },
    {
      "button": {
        "name": "B02输送",
        "value": 0,
        "address": "DB10.0",
        "state": 1
      },
      "type": "3"
    },
    {
      "button": {
        "name": "A01翻转",
        "value": 0,
        "address": "DB10.0",
        "state": 1
      },
      "type": "3"
    },
    {
      "button": {
        "name": "A02翻转",
        "value": 0,
        "address": "DB10.0",
        "state": 1
      },
      "type": "3"
    },
    {
      "button": {
        "name": "A01行走点动",
        "value": 0,
        "address": "DB10.0",
        "state": 0
      },
      "type": "3"
    },
    {
      "button": {
        "name": "A02行走点动",
        "value": 0,
        "address": "DB10.0",
        "state": 0
      },
      "type": "3"
    },
    {
      "button": {
        "name": "B01行走点动",
        "value": 0,
        "address": "DB10.0",
@@ -135,6 +166,46 @@
      },
      "type": "3"
    },
    {
      "button": {
        "name": "B01翻转气缸",
        "value": 0,
        "address": "DB10.0",
        "state": 0
      },
      "type": "3"
    },
    {
      "button": {
        "name": "B01升降气缸",
        "value": 0,
        "address": "DB10.0",
        "state": 0
      },
      "type": "3"
    }, {
      "button": {
        "name": "B01吹气",
        "value": 0,
        "address": "DB10.0",
        "state": 1
      },
      "type": "3"
    },
    {
      "button": {
        "name": "B02输送",
        "value": 0,
        "address": "DB10.0",
        "state": 1
      },
      "type": "3"
    },
    {
      "button": {
        "name": "B02行走点动",
@@ -170,69 +241,8 @@
        "state": 1
      },
      "type": "3"
    },
    {
      "button": {
        "name": "B01翻转气缸",
        "value": 0,
        "address": "DB10.0",
        "state": 0
      },
      "type": "3"
    },
    {
      "button": {
        "name": "B01升降气缸",
        "value": 0,
        "address": "DB10.0",
        "state": 0
      },
      "type": "3"
    },
    {
      "button": {
        "name": "B01吹气",
        "value": 0,
        "address": "DB10.0",
        "state": 1
      },
      "type": "3"
    },
    {
      "button": {
        "name": "A01输送反向",
        "value": 0,
        "address": "DB10.0",
        "state": 1
      },
      "type": "3"
    },
    {
      "button": {
        "name": "A02输送反向",
        "value": 0,
        "address": "DB10.0",
        "state": 1
      },
      "type": "3"
    },
    {
      "button": {
        "name": "A01注电泵",
        "value": 0,
        "address": "DB10.0",
        "state": 0
      },
      "type": "3"
    },
    {
      "button": {
        "name": "A02注电泵",
        "value": 0,
        "address": "DB10.0",
        "state": 0
      },
      "type": "3"
    }
  ]
]
CanadaMes-ui/src/configuration/Positioning1.json
@@ -216,7 +216,114 @@
     
      
     
    ]
    ],
    [
      {
          "title": {
            "name": "B01格位置设定"
          }, "type": "1"
        },
    {
      "name": "1#格地址",
      "read": 33,
      "sending": 0,
      "type": "0",
      "unit": "mm",
      "address":"DB100.0",
      "count":3,
      "value":"0"
    },
    {
      "name": "22#格地址",
      "read": 11,
      "sending": 0,
      "unit": "mm",
      "type": "0"
      ,
      "value":"0"
    },
    {
      "name": "43#格地址",
      "read": 22,
      "sending": 0,
      "unit": "mm",
      "type": "0",
      "value":"0"
    },
    {
      "name": "64#格地址",
      "read": 22,
      "sending": 0,
      "unit": "mm",
      "type": "0",
      "value":"0"
    },
    {
      "name": "85#格地址",
      "read": 22,
      "sending": 0,
      "unit": "mm",
      "type": "0",
      "value":"0"
    }
  ],
  [
      {
          "title": {
            "name": "B02位置设定"
          }, "type": "1"
        },
        {
          "name": "106#格地址",
          "read": 22,
          "sending": 0,
          "unit": "mm",
          "type": "0",
          "value":"0"
        },
        {
          "name": "127#格地址",
          "read": 22,
          "sending": 0,
          "unit": "mm",
          "type": "0",
          "value":"0"
        },
        {
          "name": "148#格地址",
          "read": 22,
          "sending": 0,
          "unit": "mm",
          "type": "0",
          "value":"0"
        },
        {
          "name": "169#格地址",
          "read": 22,
          "sending": 0,
          "unit": "mm",
          "type": "0",
          "value":"0"
        },
        {
          "name": "190#格地址",
          "read": 22,
          "sending": 0,
          "unit": "mm",
          "type": "0",
          "value":"0"
        }
  ]
   
    
CanadaMes-ui/src/lang/locales/en-US.json
@@ -325,8 +325,7 @@
  "Unable to find whether the aluminum frame is flipped or not":"Unable to find whether the aluminum frame is flipped or not",
  "You do not have this permission":"You do not have this permission",
  "This glass is already in the Queue":"This glass is already in the Queue",
  "Complete":"Complete",
  "Not Allow":"Not Allow",
  "complete":"complete",
    "ServoManualone": {
      "A01 所在格子": "A01 Current Grid",
      "数量": "Quantity",
@@ -354,15 +353,7 @@
    },
    "langParameter1": {
      "A01~A02输送": "A01~A02 Conveying",
      "B01~B02输送": "B01~B02 Conveying",
      "D01~D06输送": "D01~D06 Conveying",
      "翻转点动速度": "Flip Jog Speed",
      "小车点动速度": "Cart Jog Speed",
      "最高速度": "Max Speed",
      "高速线速度": "High-Speed Line Speed",
      "低速线速度": "Low-Speed Line Speed",
      "手动速度": "Manual Speed"
      },
    
        "langParameter2": {
@@ -417,26 +408,27 @@
            "复位": "Reset",
            "未回零": "NotZero",
            "回零": "Zero",
            "目标格子": "Target Grid"
            "目标格子": "Target Grid",
            "格子间距": "GridSpacing",
            "存片接片地址": "StorageReceivingAddress",
            "出片接片地址": "OutgoingReceivingAddress",
            "存片格位置设定": "StorageGridPositionSetting",
            "1#格地址": "grid address1# ",
            "22#格地址": "grid address22#",
            "43#格地址": "grid address43#",
            "64#格地址": "grid address64#",
            "85#格地址": "grid address85#",
            "106#格地址": "grid address106#",
            "127#格地址": "grid address127#",
            "148#格地址": "grid address148#",
            "169#格地址": "grid address169#",
            "190#格地址": "grid address190#",
            "出片格位置设定": "OutgoingGridPositionSetting",
            "B01格位置设定":"B01PositionSetting",
            "B02位置设定":"B02PositionSetting"
            },
            "langPositioning2": {
              "格子间距": "GridSpacing",
              "存片接片地址": "StorageReceivingAddress",
              "出片接片地址": "OutgoingReceivingAddress",
              "存片格位置设定": "StorageGridPositionSetting",
              "1#格地址": "grid address1# ",
              "22#格地址": "grid address22#",
              "43#格地址": "grid address43#",
              "64#格地址": "grid address64#",
              "85#格地址": "grid address85#",
              "106#格地址": "grid address106#",
              "127#格地址": "grid address127#",
              "148#格地址": "grid address148#",
              "169#格地址": "grid address169#",
              "190#格地址": "grid address190#",
              "出片格位置设定": "OutgoingGridPositionSetting",
              "B01格位置设定":"B01PositionSetting",
              "B02位置设定":"B02PositionSetting"
              },  "ManualonePositionlang": {
                "A01手动格子": "A01 Target grid(Manual)",
                "A01定位速度": "A01 TRAVEL POS Velocity manual",
@@ -494,7 +486,16 @@
                "A02笼子角度": "A02 turn Angle4",
                "大车自动速度": "A01 A02 TRAVEL POS Velocity AUTO",
                "小车自动速度": "B01 B02 TRAVEL POS Velocity AUTO",
                "自动翻转速度": "A01 A02 TURN POS Velocity AUTO"
                "自动翻转速度": "A01 A02 TURN POS Velocity AUTO",
                "A01~A02输送": "A01~A02 Conveying",
                "B01~B02输送": "B01~B02 Conveying",
                "D01~D06输送": "D01~D06 Conveying",
                "翻转点动速度": "Flip Jog Speed",
                "小车点动速度": "Cart Jog Speed",
                "最高速度": "Max Speed",
                "高速线速度": "High-Speed Line Speed",
                "低速线速度": "Low-Speed Line Speed",
                "手动速度": "Manual Speed"
              },
              "ManualJoglang": {
                "D01输送": "D01 VFD conveyor",
CanadaMes-ui/src/views/Electrical/AutomaticParameterSetting.vue
@@ -30,37 +30,43 @@
<router-link to="/Electrical/Servomanualone" tag="el-button" type="text" active-class="blue-button">{{
        $t('Servomanualone')
      }}</router-link>
      <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
      }}</router-link>
      <!-- <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
      }}</router-link> -->
     
      <router-link to="/Electrical/Positioning1" tag="el-button" type="text" active-class="blue-button">{{
        $t('Address parameter settings')
      }}</router-link>
      <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
      <!-- <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
        $t('Positioning2')
      }}</router-link>
      }}</router-link> -->
     
      <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
      <!-- <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
        $t('ManualonePosition2')
      }}</router-link>
      }}</router-link> -->
      <router-link to="/Electrical/AutomaticParameterSetting" tag="el-button" type="text" active-class="blue-button">{{
        $t('Speed parameter settings')
      }}</router-link>
      
    </el-breadcrumb>
    <el-row :gutter="20">
      <el-col :span="12" v-for="(dataGroup, groupIndex) in jsonData" :key="groupIndex">
        <el-card class="json-block" style="width:585px;">
          <div v-for="(item, itemIndex) in dataGroup" :key="itemIndex" class="item-container">
            <div class="item-row" v-if="item.type === '0'">
              <span class="name" v-if="item.type === '0'" style="width:300px;">{{ item.name }}</span>
              <el-input style="width:250px;" v-if="item.type === '0'" v-model="item.value" class="input-box"
                @keyup.enter.native="submitDataToBackend"></el-input>
                <span v-if="item.unit" :name="item.unit" >{{ item.unit }}</span>
    <el-row :gutter="18" class="card">
      <el-col :span="7" v-for="(dataGroup, groupIndex) in jsonData" :key="groupIndex">
        <el-card class="json-block">
          <div class="button-row" style="display: flex; justify-content: space-between;">
            <div v-for="(item, itemIndex) in dataGroup" :key="itemIndex">
              <span v-if="item.title" :name="item.title.name" class="action-button">{{ item.title.name }}</span>
            </div>
          </div>
          <div v-for="(item, itemIndex) in dataGroup" :key="itemIndex" class="item-container">
            <div class="item-row">
              <span class="name" style="width:250px;">{{ item.name }}</span>
              <el-input v-if="item.type === '0'" v-model="item.value" class="input-box"
                @keyup.enter.native="submitDataToBackend"></el-input>
                <span v-if="item.unit" :name="item.unit" >{{ item.unit }}</span>
            </div>
          </div>
        </el-card>
      </el-col>
    </el-row>
@@ -174,6 +180,10 @@
              const xiaoche = obj.xiaoche;
              const dache = obj.dache1;
              const parms2 = obj.params2;
              const fanzhuan2 = obj.fanzhuan2;
              const xiaoche2 = obj.xiaoche2;
              // console.log('parms:', parms);
              // console.log('fanzhuan:', fanzhuan);
              // console.log('xiaoche:', xiaoche);
@@ -202,8 +212,40 @@
              if (Array.isArray(dache) && Array.isArray(dache[0]) && dache[0][0] !== undefined) {
                jsonData2[2][0]['value'] = dache[0][0];
              }
            let index2 = 0;
              for (let i =5; i < jsonData2.length; i++) {
                let arr = jsonData2[i];
                for (let j = 0; j < arr.length; j++) {
                  let obj2 = arr[j];
                  if (obj2.type === '0' && Object.prototype.hasOwnProperty.call(obj2, 'value')) {
                    if (Array.isArray(parms2) && Array.isArray(parms2[0]) && parms2[0][index2] !== undefined) {
                      obj2.value = parms2[0][index2];
                      index2++;
                    }
                  }
                }
              }
              if (Array.isArray(fanzhuan2) && Array.isArray(fanzhuan2[0]) && fanzhuan2[0][0] !== undefined) {
                jsonData2[8][0]['value'] = fanzhuan2[0][0];
              }
              if (Array.isArray(xiaoche2) && Array.isArray(xiaoche2[0]) && xiaoche2[0][0] !== undefined) {
                jsonData2[9][0]['value'] = xiaoche2[0][0];
              }
            }
          }, 200);
          }, 50);
          document.addEventListener('mouseover', handleMouseMove);
        };
CanadaMes-ui/src/views/Electrical/ManualJog.vue
@@ -30,27 +30,27 @@
<router-link to="/Electrical/Servomanualone" tag="el-button" type="text" active-class="blue-button">{{
        $t('Servomanualone')
      }}</router-link>
      <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
      }}</router-link>
      <!-- <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
      }}</router-link> -->
     
      <router-link to="/Electrical/Positioning1" tag="el-button" type="text" active-class="blue-button">{{
        $t('Address parameter settings')
      }}</router-link>
      <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
      <!-- <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
        $t('Positioning2')
      }}</router-link>
      }}</router-link> -->
     
      <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
      <!-- <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
        $t('ManualonePosition2')
      }}</router-link>
      }}</router-link> -->
      <router-link to="/Electrical/AutomaticParameterSetting" tag="el-button" type="text" active-class="blue-button">{{
        $t('Speed parameter settings')
      }}</router-link>
      
    </el-breadcrumb>
    <el-row :gutter="40" style="width:100%;">
      <el-col :span="18" v-for="(dataGroup, groupIndex) in jsonData" :key="groupIndex">
    <el-row :gutter="40" >
      <el-col :span="16" v-for="(dataGroup, groupIndex) in jsonData" :key="groupIndex">
        <el-card class="json-block" style="width:100%;">
          <div class="button-row" style="display: flex; justify-content: flex-start;flex-wrap:wrap;">
CanadaMes-ui/src/views/Electrical/ManualonePosition.vue
@@ -29,19 +29,19 @@
<router-link to="/Electrical/Servomanualone" tag="el-button" type="text" active-class="blue-button">{{
        $t('Servomanualone')
      }}</router-link>
      <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
      }}</router-link>
      <!-- <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
      }}</router-link> -->
     
      <router-link to="/Electrical/Positioning1" tag="el-button" type="text" active-class="blue-button">{{
        $t('Address parameter settings')
      }}</router-link>
      <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
      <!-- <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
        $t('Positioning2')
      }}</router-link>
      }}</router-link> -->
     
      <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
      <!-- <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
        $t('ManualonePosition2')
      }}</router-link>
      }}</router-link> -->
      <router-link to="/Electrical/AutomaticParameterSetting" tag="el-button" type="text" active-class="blue-button">{{
        $t('Speed parameter settings')
      }}</router-link>
@@ -75,14 +75,23 @@
        </el-card>
      </el-col>
    </el-row>
    <div class="container">
    <!-- 这里是用于显示内嵌 Vue 页面的区域 -->
    <component :is="embeddedComponent"></component>
  </div>
    <!-- <el-button @click="submitDataToBackend">提交数据到后端</el-button> -->
  </div>
</template>
<script>
import LanguageMixin from '../../lang/LanguageMixin'
import data from '../../configuration/Manualoneposition'
import { throttle } from 'lodash';
import ManualonePosition2 from './ManualonePosition2.vue';
let socket;
export default {
  name: "ManualonePosition",
@@ -91,6 +100,7 @@
    return {
      jsonData: data,
      language: this.$i18n.locale,
      embeddedComponent: ManualonePosition2,
      // 加载整个data.json文件作为jsonData
    }
CanadaMes-ui/src/views/Electrical/ManualonePosition2.vue
@@ -1,14 +1,7 @@
<template>
  <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> -->
    <!-- <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb">
      <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign')
      }}</router-link>
      <router-link to="/Electrical/Servomanual" tag="el-button" type="text" active-class="blue-button">{{
@@ -27,18 +20,12 @@
        $t('ManualonePosition')
      }}</router-link>
<router-link to="/Electrical/Servomanualone" tag="el-button" type="text" active-class="blue-button">{{
        $t('Servomanualone')
      }}</router-link>
      <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
      }}</router-link>
     
      <router-link to="/Electrical/Positioning1" tag="el-button" type="text" active-class="blue-button">{{
        $t('Address parameter settings')
      }}</router-link>
      <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
        $t('Positioning2')
      }}</router-link>
     
      <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
        $t('ManualonePosition2')
@@ -47,7 +34,7 @@
        $t('Speed parameter settings')
      }}</router-link>
      
    </el-breadcrumb>
    </el-breadcrumb> -->
    <el-row :gutter="20">
      <el-col :span="12" v-for="(dataGroup, groupIndex) in jsonData" :key="groupIndex">
CanadaMes-ui/src/views/Electrical/Parameter1.vue
@@ -36,13 +36,13 @@
      <router-link to="/Electrical/Positioning1" tag="el-button" type="text" active-class="blue-button">{{
        $t('Address parameter settings')
      }}</router-link>
      <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
      <!-- <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
        $t('Positioning2')
      }}</router-link>
      }}</router-link> -->
     
      <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
      <!-- <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
        $t('ManualonePosition2')
      }}</router-link>
      }}</router-link> -->
      <router-link to="/Electrical/AutomaticParameterSetting" tag="el-button" type="text" active-class="blue-button">{{
        $t('Speed parameter settings')
      }}</router-link>
CanadaMes-ui/src/views/Electrical/Parameter2.vue
@@ -1,232 +1,337 @@
<template>
    <div class="app">
  <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
        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>
         <router-link to="/Electrical/Servomanual" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter')
        }}</router-link>
      </el-breadcrumb>
      <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb">
      <router-link to="/Electrical/Parameter2" tag="el-button" type="text" active-class="blue-button">{{ $t('Automatic State')
      }}</router-link>
      <router-link to="/Electrical/ManualJog" tag="el-button" type="text" active-class="blue-button">{{
        $t('ManualJog')
      }}</router-link>
       <router-link to="/Electrical/ManualonePosition" tag="el-button" type="text" active-class="blue-button">{{
        $t('ManualonePosition')
      }}</router-link>
      <router-link
        to="/Electrical/Sign"
        tag="el-button"
        type="text"
        active-class="blue-button"
        >{{ $t("Sign") }}</router-link
      >
      <router-link
        to="/Electrical/Servomanual"
        tag="el-button"
        type="text"
        active-class="blue-button"
        >{{ $t("Parameter") }}</router-link
      >
    </el-breadcrumb>
<router-link to="/Electrical/Servomanualone" tag="el-button" type="text" active-class="blue-button">{{
        $t('Servomanualone')
      }}</router-link>
      <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
      }}</router-link>
      <router-link to="/Electrical/Positioning1" tag="el-button" type="text" active-class="blue-button">{{
        $t('Address parameter settings')
      }}</router-link>
      <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
    <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb">
      <router-link
        to="/Electrical/Parameter2"
        tag="el-button"
        type="text"
        active-class="blue-button"
        >{{ $t("Automatic State") }}</router-link
      >
      <router-link
        to="/Electrical/ManualJog"
        tag="el-button"
        type="text"
        active-class="blue-button"
        >{{ $t("ManualJog") }}</router-link
      >
      <router-link
        to="/Electrical/ManualonePosition"
        tag="el-button"
        type="text"
        active-class="blue-button"
        >{{ $t("ManualonePosition") }}</router-link
      >
      <router-link
        to="/Electrical/Servomanualone"
        tag="el-button"
        type="text"
        active-class="blue-button"
        >{{ $t("Servomanualone") }}</router-link
      >
      <!-- <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
      }}</router-link> -->
      <router-link
        to="/Electrical/Positioning1"
        tag="el-button"
        type="text"
        active-class="blue-button"
        >{{ $t("Address parameter settings") }}</router-link
      >
      <!-- <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
        $t('Positioning2')
      }}</router-link>
      }}</router-link> -->
      <!--
      <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
        $t('ManualonePosition2')
      }}</router-link>
      <router-link to="/Electrical/AutomaticParameterSetting" tag="el-button" type="text" active-class="blue-button">{{
        $t('Speed parameter settings')
      }}</router-link>
      }}</router-link> -->
      <router-link
        to="/Electrical/AutomaticParameterSetting"
        tag="el-button"
        type="text"
        active-class="blue-button"
        >{{ $t("Speed parameter settings") }}</router-link
      >
    </el-breadcrumb>
    <el-row :gutter="40">
      <el-col :span="6" v-for="(dataGroup, groupIndex) in jsonData" :key="groupIndex"   style="margin-bottom: -20px;">
        <el-card class="json-block"  style="width:300px;margin-bottom: 2px;">
          <div class="button-row" style="display: flex; justify-content: space-between;">
            <div v-for="(item, itemIndex) in dataGroup" :key="itemIndex">
              <span v-if="item.title" :name="item.title.name" class="action-button" >{{ item.title.name }}</span>
            </div>
          </div>
          <div class="button-row" style="display: flex; justify-content: space-between;">
            <div v-for="(item, itemIndex) in dataGroup" :key="itemIndex">
              <el-button v-if="item.button && language==='en-US'" :name="item.button.name" v-model="item.button.value" class="action-button"
  @click="updateButtonValue(dataGroup, itemIndex);submitDataToBackend(item.button.name)"
  :class="{ 'green-button':  (item.button.value === 0  && item.button.name !==  'Clear ID' ) ,'red-button': item.button.value === 2 && (item.button.name !==  'Clear ID' ) ,'yellow-button': item.button.value === 1 && (item.button.name !==  'Clear ID' ),'id': item.button.value === 1 && (item.button.name ==  'Clear ID' ) }">{{ item.button.name }}</el-button>
  <el-button v-if="item.button && language==='zh-CN'" :name="item.button.name" v-model="item.button.value" class="action-button"
  @click="updateButtonValue(dataGroup, itemIndex);submitDataToBackend(item.button.name)"
  :class="{ 'green-button':  (item.button.value === 0  && item.button.name !==  '清除ID' ) ,'red-button': item.button.value === 2 && (item.button.name !==  '清除ID' ) ,'yellow-button': item.button.value === 1 && (item.button.name !==  '清除ID' ),'id': item.button.value === 1 && (item.button.name ==  '清除ID' ) }">{{ item.button.name }}</el-button>
</div>
          </div>
          <div v-for="(item, itemIndex) in dataGroup" :key="itemIndex" class="item-container">
            <div class="item-row">
              <span class="name" v-if="groupIndex === 12" style="width:250px;">{{ item.name }}</span>
              <span class="name" v-else style="width:150px;">{{ item.name }}</span>
              <el-input v-if="item.type === '0'" v-model="item.value" readonly="readonly"     style="width:300px;" class="input-box"></el-input>
            </div>
          </div>
      <el-col
        :span="6"
        v-for="(dataGroup, groupIndex) in jsonData"
        :key="groupIndex"
        
        style="margin-bottom: -20px;"
      >
        <el-card class="json-block" style="width: 300px; margin-bottom: 2px">
          <div
            class="button-row"
            style="display: flex; justify-content: space-between"
          >
            <div v-for="(item, itemIndex) in dataGroup" :key="itemIndex">
              <span
                v-if="item.title"
                :name="item.title.name"
                class="action-button"
                >{{ item.title.name }}</span
              >
            </div>
          </div>
          <div
            class="button-row"
            style="display: flex; justify-content: space-between"
          >
            <div v-for="(item, itemIndex) in dataGroup" :key="itemIndex">
              <el-button
                v-if="item.button && language === 'en-US'"
                :name="item.button.name"
                v-model="item.button.value"
                class="action-button"
                @click="
                  updateButtonValue(dataGroup, itemIndex);
                  submitDataToBackend(item.button.name);
                "
                :class="{
                  'green-button':
                    item.button.value === 0 && item.button.name !== 'Clear ID',
                  'red-button':
                    item.button.value === 2 && item.button.name !== 'Clear ID',
                  'yellow-button':
                    item.button.value === 1 && item.button.name !== 'Clear ID',
                  id: item.button.value === 1 && item.button.name == 'Clear ID',
                }"
                >{{ item.button.name }}</el-button
              >
              <el-button
                v-if="item.button && language === 'zh-CN'"
                :name="item.button.name"
                v-model="item.button.value"
                class="action-button"
                @click="
                  updateButtonValue(dataGroup, itemIndex);
                  submitDataToBackend(item.button.name);
                "
                :class="{
                  'green-button':
                    item.button.value === 0 && item.button.name !== '清除ID',
                  'red-button':
                    item.button.value === 2 && item.button.name !== '清除ID',
                  'yellow-button':
                    item.button.value === 1 && item.button.name !== '清除ID',
                  id: item.button.value === 1 && item.button.name == '清除ID',
                }"
                >{{ item.button.name }}</el-button
              >
            </div>
          </div>
          <div
            v-for="(item, itemIndex) in dataGroup"
            :key="itemIndex"
            class="item-container"
          >
            <div class="item-row">
              <span
                class="name"
                v-if="groupIndex === 12"
                style="width: 250px"
                >{{ item.name }}</span
              >
              <span class="name" v-else style="width: 150px">{{
                item.name
              }}</span>
              <el-input
                v-if="item.type === '0'"
                v-model="item.value"
                readonly="readonly"
                style="width: 300px"
                class="input-box"
              ></el-input>
            </div>
          </div>
        </el-card>
      </el-col>
    </el-row>
    <!-- <el-button @click="submitDataToBackend">提交数据到后端</el-button> -->
  </div>
  </template>
</template>
  
  <script>
  import LanguageMixin from '../../lang/LanguageMixin'
  import data from '../../configuration/parameter2'
  // import { throttle } from 'lodash';
  let socket;
import LanguageMixin from "../../lang/LanguageMixin";
import data from "../../configuration/parameter2";
// import { throttle } from 'lodash';
let socket;
  // window.onload=function(){
  //   console.log("44");
  // }
  export default {
    destroyed() {
// window.onload=function(){
//   console.log("44");
// }
export default {
  destroyed() {
    socket.close();
  },
  name: "Parameter2",
  mixins: [LanguageMixin],
  data() {
    return {
      jsonData: data ,
      inputValue: '',
      language:this.$i18n.locale,
      jsonData: data,
      inputValue: "",
      language: this.$i18n.locale,
      // 加载整个data.json文件作为jsonData
    }
    };
  },
  activated(){
    this.initWebSocket ();
  activated() {
    this.initWebSocket();
    this.filteredData();
   const language = this.$i18n.locale;
  console.log(language);
  if (language === 'en-US') {
    this.replaceChineseWithEnglish();
  }
  this.$forceUpdate();
    const language = this.$i18n.locale;
    console.log(language);
    if (language === "en-US") {
      this.replaceChineseWithEnglish();
    }
    this.$forceUpdate();
  },
    computed: {
},
  computed: {},
  methods: {
    filteredData() {
    return this.jsonData.map(item => {
      const filteredValue = item.map(obj => {
        if (typeof obj.button !== 'undefined' && typeof obj.button.value !== 'undefined') {
          obj.button.value = obj.button.value.toString().replace(/[^a-zA-Z0-9]/g, '');
        } else if (typeof obj.value !== 'undefined') {
          obj.value = obj.value.toString().replace(/[^a-zA-Z0-9]/g, '');
        }
        return obj;
      return this.jsonData.map((item) => {
        const filteredValue = item.map((obj) => {
          if (
            typeof obj.button !== "undefined" &&
            typeof obj.button.value !== "undefined"
          ) {
            obj.button.value = obj.button.value
              .toString()
              .replace(/[^a-zA-Z0-9]/g, "");
          } else if (typeof obj.value !== "undefined") {
            obj.value = obj.value.toString().replace(/[^a-zA-Z0-9]/g, "");
          }
          return obj;
        });
        return filteredValue;
      });
      return filteredValue;
    });
  },
  updateButtonValue(dataGroup, itemIndex) {
  if (dataGroup[itemIndex].button.value === 0) {
    // 如果当前按钮的值是 0,将其设为 1
    this.$set(dataGroup[itemIndex].button, 'value', 1);
  } else {
    // 否则将其设为 0
    this.$set(dataGroup[itemIndex].button, 'value', 0);
  }
},
    },
    updateButtonValue(dataGroup, itemIndex) {
      if (dataGroup[itemIndex].button.value === 0) {
        // 如果当前按钮的值是 0,将其设为 1
        this.$set(dataGroup[itemIndex].button, "value", 1);
      } else {
        // 否则将其设为 0
        this.$set(dataGroup[itemIndex].button, "value", 0);
      }
    },
    submitDataToBackend(currentButtonName) {
      if (currentButtonName === "清除ID" || currentButtonName === "Clear ID") {
        const data2 = [];
        const resetButtonValues = this.jsonData
          .map((item) => {
            const buttonItem = item.find(
              (subItem) =>
                subItem.button &&
                ["清除ID", "Clear ID"].includes(subItem.button.name)
            );
            return buttonItem ? buttonItem.button.value : null;
          })
          .filter((value) => value !== null);
        // 将得到的值添加到 data 数组中
        data2.push(resetButtonValues.flat());
        data2.push([]);
        // 在 data2 数组前面添加两个空数组
  if (currentButtonName === '清除ID'  || currentButtonName === 'Clear ID' ) {
  const data2 = [];
  const resetButtonValues = this.jsonData.map(item => {
    const buttonItem = item.find(subItem => subItem.button && ['清除ID', 'Clear ID'].includes(subItem.button.name));
        // 创建 jsonObject2 对象,并添加 data2 属性
        const jsonObject2 = { data: data2 };
    return buttonItem ? buttonItem.button.value : null;
  }).filter(value => value !== null);
        // 提交数据到后端
        const jsonString2 = JSON.stringify(jsonObject2);
        console.log("所有Type为0的value:", jsonString2);
        socket?.send(jsonString2);
      }
  // 将得到的值添加到 data 数组中
  data2.push(resetButtonValues.flat());
  data2.push([]);
  // 在 data2 数组前面添加两个空数组
      if (
        currentButtonName === "Abort/ResumeTasks" ||
        currentButtonName === "急停后中止/继续选择"
      ) {
        const data3 = [];
        const resetButtonValues3 = [this.jsonData[13][0].button.value];
  // 创建 jsonObject2 对象,并添加 data2 属性
  const jsonObject2 = { data: data2 };
        // 将得到的值添加到 data 数组中
        data3.push(resetButtonValues3.flat());
        data3.unshift([]);
        // 在 data3 数组前面添加两个空数组
  // 提交数据到后端
  const jsonString2 = JSON.stringify(jsonObject2);
  console.log('所有Type为0的value:', jsonString2);
  socket?.send(jsonString2);
}
        // 创建 jsonObject3 对象,并添加 data3 属性
        const jsonObject3 = { data: data3 };
if (currentButtonName === 'Abort/ResumeTasks' || currentButtonName === '急停后中止/继续选择') {
  const data3 = [];
  const resetButtonValues3 = [this.jsonData[13][0].button.value];
  // 将得到的值添加到 data 数组中
  data3.push(resetButtonValues3.flat());
  data3.unshift([]);
  // 在 data3 数组前面添加两个空数组
  // 创建 jsonObject3 对象,并添加 data3 属性
  const jsonObject3 = { data: data3 };
  // 提交数据到后端
  const jsonString3 = JSON.stringify(jsonObject3);
  console.log('急停后中止/继续选择:', jsonString3);
  socket?.send(jsonString3);
  // setTimeout(()=>
  //   window.location.reload(),2000
  // )
}
},
    initWebSocket () {
        // 提交数据到后端
        const jsonString3 = JSON.stringify(jsonObject3);
        console.log("急停后中止/继续选择:", jsonString3);
        socket?.send(jsonString3);
        // setTimeout(()=>
        //   window.location.reload(),2000
        // )
      }
    },
    initWebSocket() {
      let viewname = "Parameter2";
      if (typeof WebSocket === "undefined") {
        console.log("您的浏览器不支持WebSocket");
      } else {
        let socketUrl = "ws://" + this.$t('ip')+":8888" + "/springboot-vue3/api/talk/" + viewname;
        let socketUrl =
          "ws://" +
          this.$t("ip") +
          ":8888" +
          "/springboot-vue3/api/talk/" +
          viewname;
        if (socket != null) {
          socket.close();
@@ -243,156 +348,138 @@
        // 收到消息
        socket.onmessage = (msg) => {
  if (!msg.data) {
    return; // 如果收到空数据,则直接返回,不执行后续逻辑
  }
          if (!msg.data) {
            return; // 如果收到空数据,则直接返回,不执行后续逻辑
          }
  let obj = JSON.parse(msg.data);
  const jsonData2 = this.jsonData;
          let obj = JSON.parse(msg.data);
      const parms = obj.params;
          const jsonData2 = this.jsonData;
     console.log(obj);
          const parms = obj.params;
          console.log(obj);
          // const handleMouseMove = throttle(function(event) {
          // const inputBox = document.querySelectorAll('.id');
          // const target = event.target;
  // const handleMouseMove = throttle(function(event) {
  // const inputBox = document.querySelectorAll('.id');
  // const target = event.target;
          // if (parms && inputBox && Array.from(inputBox).every(box => !box.contains(target))) {
          //急停按钮
          jsonData2[13][0].button.value = obj.jiting[0][0];
  // if (parms && inputBox && Array.from(inputBox).every(box => !box.contains(target))) {
//急停按钮
    // jsonData2[13][0].button.value = obj.jiting[0][0];
          //清除id
    //清除id
      for (let i = 0; i < jsonData2.length; i++) {
  let arr = jsonData2[i];
  for (let j = 0; j < arr.length; j++) {
    let obj = arr[j];
    if (obj.type === '3') {
      obj.button.value = parms[0][i];
      // console.log(obj.button.value);
    }
  }
}
//ID
const specialChars = /[^\w\s]/g; // 正则表达式匹配非字母、数字、下划线和空格的字符
for (let i = 0; i < jsonData2.length; i++) {
  let arr = jsonData2[i];
  for (let j = 0; j < arr.length; j++) {
    let obj = arr[j];
    if (obj.type === '0') {
  if (parms[1] && parms[1][i]) {
    obj.value = parms[1][i].replace(specialChars, '');
    // console.log(obj.value);
  }
  if (obj.name === 'ID2') {
        obj.value = parms[1][7].replace(specialChars, ''); // 将ID2对应的值赋为parms[1][6]
      }
      if (obj.name === 'A02ID') {
        obj.value = parms[1][8].replace(specialChars, ''); // 将ID2对应的值赋为parms[1][6]
      }
      if (obj.name === 'B01ID') {
        obj.value = parms[1][9].replace(specialChars, ''); // 将ID2对应的值赋为parms[1][6]
      }
      if (obj.name === 'B02ID') {
        obj.value = parms[1][10].replace(specialChars, ''); // 将ID2对应的值赋为parms[1][6]
      }
}
  }
}
//手动状态
for (let i = 0; i < jsonData2.length; i++) {
  let arr = jsonData2[i];
  for (let j = 0; j < arr.length; j++) {
    let obj = arr[j];
    if (obj.type === '4') {
      obj.button.value = parms[2][i];
    }
  }
}
//改变状态文字
for (let i = 0; i < jsonData2.length; i++) {
  let arr = jsonData2[i];
  for (let j = 0; j < arr.length; j++) {
    let obj = arr[j];
    if (obj.type === '4' && obj.button.value===1) {
      if ( obj.button.name.includes("状态")&& this.language==="zh-CN") {
      obj.button.name =obj.button.name.replace("手动","自动") ;
    }
    if ( obj.button.name.includes("Status")) {
      obj.button.name =obj.button.name.replace("Manual","Auto") ;
    }
  }
}
}
//扫描枪扫码的ID
jsonData2.forEach((item) => {
  item.forEach((subItem) => {
    if (subItem.read === 66) {
      subItem.value = parms[3][0].replace(specialChars, '');
    }
  });
});
jsonData2.forEach((item) => {
  item.forEach((subItem) => {
    if (subItem.read === 666) {
      subItem.value = parms[3][1].replace(specialChars, '');
    }
  });
});
//A01当前格子
let lastParmsArray = parms[parms.length - 1];
let lastParmsIndex = 0;
for (let i = 0; i < jsonData2.length; i++) {
    for (let j = 0; j < jsonData2[i].length; j++) {
        if (jsonData2[i][j].read === 333) {
            jsonData2[i][j].value = lastParmsArray[lastParmsIndex];
            lastParmsIndex++;
            if (lastParmsIndex === lastParmsArray.length) {
                lastParmsIndex = 0;
          for (let i = 0; i < jsonData2.length; i++) {
            let arr = jsonData2[i];
            for (let j = 0; j < arr.length; j++) {
              let obj = arr[j];
              if (obj.type === "3") {
                obj.button.value = parms[0][i];
                // console.log(obj.button.value);
              }
            }
        }
    }
}
          }
          //ID
          const specialChars = /[^\w\s]/g; // 正则表达式匹配非字母、数字、下划线和空格的字符
          for (let i = 0; i < jsonData2.length; i++) {
            let arr = jsonData2[i];
            for (let j = 0; j < arr.length; j++) {
              let obj = arr[j];
              if (obj.type === "0") {
                if (parms[1] && parms[1][i]) {
                  obj.value = parms[1][i].replace(specialChars, "");
                  // console.log(obj.value);
                }
                if (obj.name === "ID2") {
                  obj.value = parms[1][7].replace(specialChars, ""); // 将ID2对应的值赋为parms[1][7]
                }
  }
//  console.log(jsonData2);
// }, 50);
// document.addEventListener('mouseover', handleMouseMove);
// };
                if (obj.name === "A02ID") {
                  obj.value = parms[1][8].replace(specialChars, "");
                }
                if (obj.name === "B01ID") {
                  obj.value = parms[1][9].replace(specialChars, "");
                }
                if (obj.name === "B02ID") {
                  obj.value = parms[1][10].replace(specialChars, "");
                }
              }
            }
          }
          //手动状态
          for (let i = 0; i < jsonData2.length; i++) {
            let arr = jsonData2[i];
            for (let j = 0; j < arr.length; j++) {
              let obj = arr[j];
              if (obj.type === "4") {
                obj.button.value = parms[2][i];
              }
            }
          }
          //改变状态文字
          for (let i = 0; i < jsonData2.length; i++) {
            let arr = jsonData2[i];
            for (let j = 0; j < arr.length; j++) {
              let obj = arr[j];
              if (obj.type === "4" && obj.button.value === 1) {
                if (
                  obj.button.name.includes("状态") &&
                  this.language === "zh-CN"
                ) {
                  obj.button.name = obj.button.name.replace("手动", "自动");
                }
                if (obj.button.name.includes("Status")) {
                  obj.button.name = obj.button.name.replace("Manual", "Auto");
                }
              }
            }
          }
          //扫描枪扫码的ID
          jsonData2.forEach((item) => {
            item.forEach((subItem) => {
              if (subItem.read === 66) {
                subItem.value = parms[3][0].replace(specialChars, "");
              }
            });
          });
          jsonData2.forEach((item) => {
            item.forEach((subItem) => {
              if (subItem.read === 666) {
                subItem.value = parms[3][1].replace(specialChars, "");
              }
            });
          });
          //A01当前格子
          let lastParmsArray = parms[parms.length - 1];
          let lastParmsIndex = 0;
          for (let i = 0; i < jsonData2.length; i++) {
            for (let j = 0; j < jsonData2[i].length; j++) {
              if (jsonData2[i][j].read === 333) {
                jsonData2[i][j].value = lastParmsArray[lastParmsIndex];
                lastParmsIndex++;
                if (lastParmsIndex === lastParmsArray.length) {
                  lastParmsIndex = 0;
                }
              }
            }
          }
        };
        //  console.log(jsonData2);
        // }, 50);
        // document.addEventListener('mouseover', handleMouseMove);
        // };
        // 关闭事件
        socket.onclose = function () {
@@ -403,62 +490,55 @@
        socket.onerror = function () {
          console.log("websocket发生了错误");
        };
        this.$router.afterEach(function(){
          socket.close();
        })
        this.$router.afterEach(function () {
          socket.close();
        });
      }
    },
    replaceChineseWithEnglish() {
 const nameMap=  this.$t('langParameter2')
 this.jsonData = this.jsonData.map((item) => {
return item.map((obj) => {
if (obj.name) {
 const newName = nameMap[obj.name] || obj.name;
 return { ...obj, name: newName };
} else if (obj.button && obj.button.name) {
 const newName = nameMap[obj.button.name] || obj.button.name;
 return { ...obj, button: { ...obj.button, name: newName } };
} else {
 return obj;
}
});
});
      const nameMap = this.$t("langParameter2");
      this.jsonData = this.jsonData.map((item) => {
        return item.map((obj) => {
          if (obj.name) {
            const newName = nameMap[obj.name] || obj.name;
            return { ...obj, name: newName };
          } else if (obj.button && obj.button.name) {
            const newName = nameMap[obj.button.name] || obj.button.name;
            return { ...obj, button: { ...obj.button, name: newName } };
          } else {
            return obj;
          }
        });
      });
// console.log(this.jsonData)
},
    send () {
      // console.log(this.jsonData)
    },
    send() {
      socket?.send(JSON.stringify(this.messagepack));
    }
  }
  }
  </script>
    },
  },
};
</script>
  
  <style scoped>
  html,body{
width:100%;
height:85%;
html,
body {
  width: 100%;
  height: 85%;
}
  .item-row {
.item-row {
  display: flex;
  align-items: center;
  margin-bottom: 5px; /* 调整每个项目之间的间距 */
  }
  .action-button {
}
.action-button {
  margin-right: 30px;
  background: #66b1ff;
  color: #FFF;
  }
  .blue-button {
  color: #fff;
}
.blue-button {
  background-color: skyblue;
}
@@ -466,15 +546,14 @@
  background-color: green;
}
.red-button{
.red-button {
  background-color: red;
}
.yellow-button{
.yellow-button {
  background-color: blue;
}
.id{
.id {
  background-color: green;
}
  </style>
</style>
CanadaMes-ui/src/views/Electrical/Positioning1.vue
@@ -1,75 +1,151 @@
<template>
  <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/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>
      <router-link to="/Electrical/Servomanual" 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
      >
      <router-link
        to="/Electrical/Servomanual"
        tag="el-button"
        type="text"
        active-class="blue-button"
        >{{ $t("Parameter") }}</router-link
      >
    </el-breadcrumb>
    <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb">
      <router-link to="/Electrical/Parameter2" tag="el-button" type="text" active-class="blue-button">{{ $t('Automatic State')
      }}</router-link>
      <router-link to="/Electrical/ManualJog" tag="el-button" type="text" active-class="blue-button">{{
        $t('ManualJog')
      }}</router-link>
       <router-link to="/Electrical/ManualonePosition" tag="el-button" type="text" active-class="blue-button">{{
        $t('ManualonePosition')
      }}</router-link>
      <router-link
        to="/Electrical/Parameter2"
        tag="el-button"
        type="text"
        active-class="blue-button"
        >{{ $t("Automatic State") }}</router-link
      >
      <router-link
        to="/Electrical/ManualJog"
        tag="el-button"
        type="text"
        active-class="blue-button"
        >{{ $t("ManualJog") }}</router-link
      >
<router-link to="/Electrical/Servomanualone" tag="el-button" type="text" active-class="blue-button">{{
        $t('Servomanualone')
      }}</router-link>
      <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
      }}</router-link>
      <router-link to="/Electrical/Positioning1" tag="el-button" type="text" active-class="blue-button">{{
        $t('Address parameter settings')
      }}</router-link>
      <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
      <router-link
        to="/Electrical/ManualonePosition"
        tag="el-button"
        type="text"
        active-class="blue-button"
        >{{ $t("ManualonePosition") }}</router-link
      >
      <router-link
        to="/Electrical/Servomanualone"
        tag="el-button"
        type="text"
        active-class="blue-button"
        >{{ $t("Servomanualone") }}</router-link
      >
      <!-- <router-link
        to="/Electrical/Parameter1"
        tag="el-button"
        type="text"
        active-class="blue-button"
        >{{ $t("Parameter1") }}</router-link
      > -->
      <router-link
        to="/Electrical/Positioning1"
        tag="el-button"
        type="text"
        active-class="blue-button"
        >{{ $t("Address parameter settings") }}</router-link
      >
      <!-- <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
        $t('Positioning2')
      }}</router-link>
      <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
        $t('ManualonePosition2')
      }}</router-link>
      <router-link to="/Electrical/AutomaticParameterSetting" tag="el-button" type="text" active-class="blue-button">{{
        $t('Speed parameter settings')
      }}</router-link>
      }}</router-link> -->
      <!-- <router-link
        to="/Electrical/ManualonePosition2"
        tag="el-button"
        type="text"
        active-class="blue-button"
        >{{ $t("ManualonePosition2") }}</router-link
      > -->
      <router-link
        to="/Electrical/AutomaticParameterSetting"
        tag="el-button"
        type="text"
        active-class="blue-button"
        >{{ $t("Speed parameter settings") }}</router-link
      >
    </el-breadcrumb>
    <el-row :gutter="18" class='card'>
      <el-col :span="7" v-for="(dataGroup, groupIndex) in jsonData" :key="groupIndex">
    <el-row :gutter="18" class="card">
      <el-col
        :span="7"
        v-for="(dataGroup, groupIndex) in jsonData"
        :key="groupIndex"
      >
        <el-card class="json-block">
          <div class="button-row" style="display: flex; justify-content: space-between;">
          <div
            class="button-row"
            style="display: flex; justify-content: space-between"
          >
            <div v-for="(item, itemIndex) in dataGroup" :key="itemIndex">
              <span v-if="item.title" :name="item.title.name" class="action-button">{{ item.title.name }}</span>
              <span
                v-if="item.title"
                :name="item.title.name"
                class="action-button"
                >{{ item.title.name }}</span
              >
            </div>
          </div>
          <div v-for="(item, itemIndex) in dataGroup" :key="itemIndex" class="item-container">
          <div
            v-for="(item, itemIndex) in dataGroup"
            :key="itemIndex"
            class="item-container"
          >
            <div class="item-row">
              <span class="name" style="width:250px;">{{ item.name }}</span>
              <el-input v-if="item.type === '0'" v-model="item.value" class="input-box"      @keyup.enter.native="submitDataToBackend" ></el-input>
              <span v-if="item.unit" :name="item.unit" >{{ item.unit }}</span>
              <span class="name" style="width: 250px">{{ item.name }}</span>
              <el-input
                v-if="item.type === '0'"
                v-model="item.value"
                class="input-box"
                @keyup.enter.native="submitDataToBackend"
              ></el-input>
              <span v-if="item.unit" :name="item.unit">{{ item.unit }}</span>
              <!-- <el-button
                v-if="item.type === '0' && item.name !== '格子间距' && item.name !== '出片接片地址' && item.name !== '存片接片地址'"
                class="input-box" @click="submitDataToBackend();">取地址</el-button> -->
            </div>
          </div>
        </el-card>
      </el-col>
    </el-row>
@@ -79,36 +155,35 @@
  
<script>
let socket;
import LanguageMixin from '../../lang/LanguageMixin'
import data from '../../configuration/Positioning1'
import LanguageMixin from "../../lang/LanguageMixin";
import data from "../../configuration/Positioning1";
export default {
  name: "Positioning1",
  mixins: [LanguageMixin],
  data () {
  data() {
    return {
      jsonData: data // 加载整个data.json文件作为jsonData
    }
      jsonData: data, // 加载整个data.json文件作为jsonData
    };
  },
  activated(){
   this.initWebSocket ();
   const language = this.$i18n.locale;
  console.log(language);
  if (language === 'en-US') {
    this.replaceChineseWithEnglish();
  }
  this.$forceUpdate();
 },
  activated() {
    this.initWebSocket();
    const language = this.$i18n.locale;
    console.log(language);
    if (language === "en-US") {
      this.replaceChineseWithEnglish();
    }
    this.$forceUpdate();
  },
  methods: {
    updateButtonValue (dataGroup, itemIndex) {
      this.$set(dataGroup[itemIndex].button, 'value', 1); // 点击按钮后将值改为1
    updateButtonValue(dataGroup, itemIndex) {
      this.$set(dataGroup[itemIndex].button, "value", 1); // 点击按钮后将值改为1
    },
    //提交数据到后端
    submitDataToBackend () {
      const inputData = this.jsonData.map(dataGroup => {
        return dataGroup.map(item => {
          if (item.type === '0') {
    submitDataToBackend() {
      const inputData = this.jsonData.map((dataGroup) => {
        return dataGroup.map((item) => {
          if (item.type === "0") {
            return { value: parseInt(item.value) };
          } else if (item.button) {
            return { value: parseInt(item.title.value) };
@@ -118,8 +193,8 @@
      });
      // 将inputData转换为整数数组
      const integerArray = inputData.map(dataGroup => {
        return dataGroup.map(item => {
      const integerArray = inputData.map((dataGroup) => {
        return dataGroup.map((item) => {
          if (item !== null) {
            return item.value;
          }
@@ -134,14 +209,18 @@
      // console.log('提交以下数据到后端:', jsonString);
      socket?.send(jsonString);
    },
    initWebSocket () {
    initWebSocket() {
      let viewname = "Positioning1";
      if (typeof WebSocket === "undefined") {
        console.log("您的浏览器不支持WebSocket");
      } else {
        let socketUrl = "ws://" + this.$t('ip')+":8888" + "/springboot-vue3/api/talk/" + viewname;
        let socketUrl =
          "ws://" +
          this.$t("ip") +
          ":8888" +
          "/springboot-vue3/api/talk/" +
          viewname;
        if (socket != null) {
          socket.close();
@@ -164,41 +243,39 @@
          let obj = JSON.parse(msg.data);
          const jsonData2 = this.jsonData;
          document.addEventListener('mouseover', function (event) {
            const inputBox = document.querySelectorAll('.el-card__body');
          document.addEventListener("mouseover", function (event) {
            const inputBox = document.querySelectorAll(".el-card__body");
            const target = event.target;
            const parms = obj.params;
            if (parms && inputBox && Array.from(inputBox).every(box => !box.contains(target))) {
            if (
              parms &&
              inputBox &&
              Array.from(inputBox).every((box) => !box.contains(target))
            ) {
              // 如果鼠标不在输入框内,更新输入框的值
              // this.submitDataToBackend()
              // console.log(parms)
              // console.log(parms)
              let index = 0;
              for (let i = 0; i < jsonData2.length; i++) {
                let arr = jsonData2[i];
                for (let j = 0; j < arr.length; j++) {
                  let obj = arr[j];
                  if (obj.type === '0' && Object.prototype.hasOwnProperty.call(obj, 'value')) {
                  if (
                    obj.type === "0" &&
                    Object.prototype.hasOwnProperty.call(obj, "value")
                  ) {
                    obj.value = parms[0][index];
                    index++;
                  }
                }
              }
              // console.log(jsonData2);
            }
          });
        };
        // 关闭事件
        socket.onclose = function () {
@@ -209,46 +286,38 @@
        socket.onerror = function () {
          console.log("websocket发生了错误");
        };
        this.$router.afterEach(function(){
        this.$router.afterEach(function () {
          socket.close();
        })
        });
      }
    },
    //语言替换
    replaceChineseWithEnglish() {
 const nameMap=  this.$t('langPositioning1')
 this.jsonData = this.jsonData.map((item) => {
  return item.map((obj) => {
    if (obj.name) {
      const newName = nameMap[obj.name] || obj.name;
      return { ...obj, name: newName };
    } else if (obj.button && obj.button.name) {
      const newName = nameMap[obj.button.name] || obj.button.name;
      return { ...obj, button: { ...obj.button, name: newName } };
    } else if (obj.title && obj.title.name) {
      const newName = nameMap[obj.title.name] || obj.title.name;
      return { ...obj, title: { ...obj.title, name: newName } };
    } else {
      return obj;
    }
  });
});
      const nameMap = this.$t("langPositioning1");
      this.jsonData = this.jsonData.map((item) => {
        return item.map((obj) => {
          if (obj.name) {
            const newName = nameMap[obj.name] || obj.name;
            return { ...obj, name: newName };
          } else if (obj.button && obj.button.name) {
            const newName = nameMap[obj.button.name] || obj.button.name;
            return { ...obj, button: { ...obj.button, name: newName } };
          } else if (obj.title && obj.title.name) {
            const newName = nameMap[obj.title.name] || obj.title.name;
            return { ...obj, title: { ...obj.title, name: newName } };
          } else {
            return obj;
          }
        });
      });
// console.log(this.jsonData)
},
    send () {
      // console.log(this.jsonData)
    },
    send() {
      socket?.send(JSON.stringify(this.messagepack));
    },
  }
}
  },
};
</script>
  
<style scoped>
@@ -262,7 +331,7 @@
.action-button {
  margin-right: 30px;
  background: #66b1ff;
  color: #FFF;
  color: #fff;
}
.blue-button {
CanadaMes-ui/src/views/Electrical/Positioning2.vue
@@ -30,19 +30,19 @@
<router-link to="/Electrical/Servomanualone" tag="el-button" type="text" active-class="blue-button">{{
        $t('Servomanualone')
      }}</router-link>
      <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
      }}</router-link>
      <!-- <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
      }}</router-link> -->
     
      <router-link to="/Electrical/Positioning1" tag="el-button" type="text" active-class="blue-button">{{
        $t('Address parameter settings')
      }}</router-link>
      <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
      <!-- <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
        $t('Positioning2')
      }}</router-link>
      }}</router-link> -->
<!--
      <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
        $t('ManualonePosition2')
      }}</router-link>
      }}</router-link> -->
      <router-link to="/Electrical/AutomaticParameterSetting" tag="el-button" type="text" active-class="blue-button">{{
        $t('Speed parameter settings')
      }}</router-link>
CanadaMes-ui/src/views/Electrical/ServoManualone.vue
@@ -29,19 +29,19 @@
<router-link to="/Electrical/Servomanualone" tag="el-button" type="text" active-class="blue-button">{{
        $t('Servomanualone')
      }}</router-link>
      <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
      }}</router-link>
      <!-- <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
      }}</router-link> -->
     
      <router-link to="/Electrical/Positioning1" tag="el-button" type="text" active-class="blue-button">{{
        $t('Address parameter settings')
      }}</router-link>
      <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
      <!-- <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
        $t('Positioning2')
      }}</router-link>
      }}</router-link> -->
     
      <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
      <!-- <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
        $t('ManualonePosition2')
      }}</router-link>
      }}</router-link> -->
      <router-link to="/Electrical/AutomaticParameterSetting" tag="el-button" type="text" active-class="blue-button">{{
        $t('Speed parameter settings')
      }}</router-link>
@@ -63,7 +63,7 @@
      </el-row>
      <div class="button-row" style="display: flex; justify-content: space-between;">
        <div v-for="(item, itemIndex) in dataGroup" :key="itemIndex">
          <el-button v-if="item.button && language === 'en-US' " :name="item.button.name" v-model="item.button.value" :class="{'action-button': true, 'error-button': item.button.name === 'Fault' && item.button.value === 1,'error-button2': item.button.name === 'NotZero' && item.button.value === 0,'error-button3': item.button.name === 'NotZero' && item.button.value === 1,'fuwei': item.button.name === 'Reset' && item.button.value === 1,'huiling': item.button.name === 'Home' && item.button.value === 1,'qidong': item.button.name === 'A01 Semi-Auto' && item.button.value === 1,'qidong2': item.button.name === 'A02 Semi-Auto' && item.button.value === 1,'qidong3': item.button.name === 'A01 Semi-Auto Start' && item.button.value === 1,'qidong4': item.button.name === 'A02 Semi-Auto Start' && item.button.value === 1,'qidong5': item.button.name === 'A02 Semi-Auto Start' && item.button.value === 1,'jiting': item.button.name === 'Abort/ResumeTasks' && item.button.value === 1}" @click="updateButtonValue(dataGroup, itemIndex); submitDataToBackend(item.button.name);">{{ item.button.name }}</el-button>
          <el-button v-if="item.button && language === 'en-US' " :name="item.button.name" v-model="item.button.value" :class="{'action-button': true, 'error-button': item.button.name === 'Fault' && item.button.value === 1,'error-button2': item.button.name === 'NotZero' && item.button.value === 0,'error-button3': item.button.name === 'NotZero' && item.button.value === 1,'fuwei': item.button.name === 'Reset' && item.button.value === 1,'huiling': item.button.name === 'Home' && item.button.value === 1,'qidong': item.button.name === 'A01 Semi-Auto' && item.button.value === 1,'qidong2': item.button.name === 'A02 Semi-Auto' && item.button.value === 1,'qidong3': item.button.name === 'A01 Semi-Auto Start' && item.button.value === 1,'qidong4': item.button.name === 'A02 Semi-Auto Start' && item.button.value === 1,'qidong5': item.button.name === 'A02 Semi-Auto' && item.button.value === 1,'jiting': item.button.name === 'Abort/ResumeTasks' && item.button.value === 1}" @click="updateButtonValue(dataGroup, itemIndex); submitDataToBackend(item.button.name);">{{ item.button.name }}</el-button>
          <el-button v-if="item.button && language === 'zh-CN' " :name="item.button.name" v-model="item.button.value" :class="{'action-button': true, 'error-button': item.button.name === '故障' && item.button.value === 1,'error-button3': item.button.name === '未回零' && item.button.value === 1,'error-button2': item.button.name === '未回零' && item.button.value === 0,'fuwei': item.button.name === '复位' && item.button.value === 1,'huiling': item.button.name === '回零' && item.button.value === 1,'qidong': item.button.name === 'A01半自动' && item.button.value === 1,'qidong2': item.button.name === 'A02半自动' && item.button.value === 1,'qidong3': item.button.name === 'A01半自动启动' && item.button.value === 1,'qidong4': item.button.name === 'A02半自动启动' && item.button.value === 1,'qidong5': item.button.name === 'A02半自动' && item.button.value === 1,'jiting': item.button.name === '急停后中止/继续选择' && item.button.value === 1  }" @click="updateButtonValue(dataGroup, itemIndex); submitDataToBackend(item.button.name);">{{ item.button.name }}</el-button>
        </div>
      </div>
CanadaMes-ui/src/views/Electrical/Servomanual.vue
@@ -31,19 +31,19 @@
<router-link to="/Electrical/Servomanualone" tag="el-button" type="text" active-class="blue-button">{{
        $t('Servomanualone')
      }}</router-link>
      <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
      }}</router-link>
      <!-- <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
      }}</router-link> -->
     
      <router-link to="/Electrical/Positioning1" tag="el-button" type="text" active-class="blue-button">{{
        $t('Address parameter settings')
      }}</router-link>
      <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
      <!-- <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
        $t('Positioning2')
      }}</router-link>
      }}</router-link> -->
     
      <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
      <!-- <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
        $t('ManualonePosition2')
      }}</router-link>
      }}</router-link> -->
      <router-link to="/Electrical/AutomaticParameterSetting" tag="el-button" type="text" active-class="blue-button">{{
        $t('Speed parameter settings')
      }}</router-link>
springboot-vue3/src/main/java/com/example/springboot/component/MessageHandler.java
@@ -10,89 +10,104 @@
public class MessageHandler {
    //写入byte
    public void outmesid(String glassid,String address) {
        //System.out.println("outmesid:" + glassid);
        List<Byte> glassidlist = new ArrayList();
        char ds[]=glassid.toCharArray();
        for (char iditem : ds) {
            glassidlist.add((byte)iditem);
        try {
            List<Byte> glassidlist = new ArrayList<>();
            char ds[]=glassid.toCharArray();
            for (char iditem : ds) {
                glassidlist.add((byte)iditem);
            }
            byte[] bytes = Bytes.toArray(glassidlist);
            System.out.println("outmesidbytes:" + bytes.length);
            S7control.getinstance().WriteByte(address, bytes);
        } catch (Exception e) {
            System.err.println("An error occurred while writing byte to PLC: " + e.getMessage());
        }
        byte[] bytes = Bytes.toArray(glassidlist);
        System.out.println("outmesidbytes:" + bytes.length);
        S7control.getinstance().WriteByte(address, bytes);
    }
    //写入bit
    public void writeBitToPLC( JSONArray messageArray,List<String> addresses, int index) {
        if (messageArray.getJSONArray(index).size() > 0) {
            JSONArray jsonArray = messageArray.getJSONArray(index);
            List<Boolean> sValue = new ArrayList<>();
            for (int i = 0; i < jsonArray.size(); i++) {
                Object value = jsonArray.get(i);
                if (value != null && !value.toString().equals("null")) {
                    try {
                        String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
                        boolean val = "1".equals(cleanedValue.trim());
                        sValue.add(val);
                        System.out.println("messageValue: " + Arrays.asList(val) + " added to the list");
                    } catch (NumberFormatException e) {
                        // 如果无法解析为 boolean 类型,则忽略该部分
                        System.err.println("Could not parse value: " + value);
    public void writeBitToPLC(JSONArray messageArray, List<String> addresses, int index) {
        try {
            // 检查索引是否有效
            if (messageArray.getJSONArray(index).size() > 0) {
                // 获取消息数组
                JSONArray jsonArray = messageArray.getJSONArray(index);
                // 创建一个布尔值列表
                List<Boolean> sValue = new ArrayList<>();
                // 遍历消息数组
                for (int i = 0; i < jsonArray.size(); i++) {
                    // 获取消息数组中的值
                    Object value = jsonArray.get(i);
                    // 检查值是否有效
                    if (value != null && !value.toString().equals("null")) {
                        try {
                            // 移除非数字和数字字符
                            String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
                            // 解析为布尔值
                            boolean val = "1".equals(cleanedValue.trim());
                            // 将布尔值添加到布尔值列表中
                            sValue.add(val);
                            System.out.println("messageValue: " + Arrays.asList(val) + " added to the list");
                        } catch (NumberFormatException e) {
                            // 如果无法解析为 boolean 类型,则忽略该部分
                            System.err.println("Could not parse value: " + value);
                        }
                    }
                }
                // 检查布尔值列表是否为空
                if (!sValue.isEmpty()) {
                    // 调用 S7control.getinstance().WriteBit 方法将布尔值列表写入地址列表
                    S7control.getinstance().WriteBit(addresses, sValue);
                    System.out.println("Values " + sValue + " written to PLC at address " + addresses);
                }
            }
            if (!sValue.isEmpty()) {
                // 这里假设 S7control.getinstance().WriteBit 方法可以正确写入 sValue 到地址列表 addresses
              S7control.getinstance().WriteBit(addresses, sValue);
                System.out.println("Values " + sValue + " written to PLC at address " + addresses);
            }
        } catch (Exception e) {
            System.err.println("An error occurred while writing bit to PLC: " + e.getMessage());
        }
    }
    //写入Word
    public void WriteWordToPLC( JSONArray messageArray,List<String> addresses, int index) {
        if (messageArray.getJSONArray(index).size() > 0) {
            JSONArray jsonArray = messageArray.getJSONArray(index);
            List<Short> sValues = new ArrayList<>();
            for (int i = 0; i < jsonArray.size(); i++) {
                Object value = jsonArray.get(i);
                if (value != null && !value.toString().equals("null")) {
                    try {
                        String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
                        short val = Short.parseShort(cleanedValue.trim());
                        sValues.add(val);
                        System.out.println("messageValue:" + Arrays.asList(val) + " added to the list");
                    } catch (NumberFormatException e) {
                        // 如果无法解析为 short 类型,则忽略该部分
                        System.err.println("Could not parse value: " + value);
    public void WriteWordToPLC(JSONArray messageArray, List<String> addresses, int index) {
        try {
            if (messageArray.getJSONArray(index).size() > 0) {
                JSONArray jsonArray = messageArray.getJSONArray(index);
                List<Short> sValues = new ArrayList<>();
                for (int i = 0; i < jsonArray.size(); i++) {
                    Object value = jsonArray.get(i);
                    if (value != null && !value.toString().equals("null")) {
                        try {
                            String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
                            short val = Short.parseShort(cleanedValue.trim());
                            sValues.add(val);
                            System.out.println("messageValue:" + Arrays.asList(val) + " added to the list");
                        } catch (NumberFormatException e) {
                            System.err.println("Could not parse value: " + value);
                        }
                    }
                }
                if (!sValues.isEmpty()) {
                    S7control.getinstance().WriteWord(addresses, sValues);
                    System.out.println("Values " + sValues + " written to PLC at address " + addresses);
                }
            }
            if (!sValues.isEmpty()) {
                S7control.getinstance().WriteWord(addresses.get(index), sValues);
                System.out.println("Values " + sValues + " written to PLC at address " + addresses.get(index));
            }
        } catch (Exception e) {
            System.err.println("An error occurred while writing word to PLC: " + e.getMessage());
        }
    }
//写入String
    public void writeStringToPLC( JSONArray messageArray, String addresses,int index) {
        if (messageArray.getJSONArray(index).size() > 0) {
            JSONArray jsonArray = messageArray.getJSONArray(index);
            if (!jsonArray.isEmpty()) {
                String value = (String) jsonArray.get(0);
                outmesid(value.trim(), addresses);
                System.out.println("Value " + value + " written to PLC at address " + addresses);
    //写入String
    public void writeStringToPLC(JSONArray messageArray, String addresses, int index) {
        try {
            if (messageArray.getJSONArray(index).size() > 0) {
                JSONArray jsonArray = messageArray.getJSONArray(index);
                if (!jsonArray.isEmpty()) {
                    String value = (String) jsonArray.get(0);
                    outmesid(value.trim(), addresses);
                    System.out.println("Value " + value + " written to PLC at address " + addresses);
                }
            }
        } catch (Exception e) {
            System.err.println("An error occurred while writing string to PLC: " + e.getMessage());
        }
    }
}
}
springboot-vue3/src/main/java/com/example/springboot/component/PLCAutomaticParameterSetting.java
@@ -75,14 +75,40 @@
      List<Short> dache1 = S7control.getinstance().ReadWord("DB100.18", 1);
      List<Short> xiaoche1 = S7control.getinstance().ReadWord("DB100.22", 1);
      List<Short> fanzhuan1 = S7control.getinstance().ReadWord("DB100.14", 1);
      // Short[] values1 = { 1, 2, 3, 4, 5, 6, 7, 8 };
      // List<Short> arraylist = new ArrayList<>(Arrays.asList(values1));
      // Short[] fanzhuan = { 4 };
      // List<Short> fanzhuan1 = new ArrayList<>(Arrays.asList(fanzhuan));
      // Short[] dache = { 5 };
      // List<Short> dache1 = new ArrayList<>(Arrays.asList(dache));
      // Short[] xiaoche = { 6 };
      // List<Short> xiaoche1 = new ArrayList<>(Arrays.asList(xiaoche));
      List<String> addresses = new ArrayList<>();
      addresses.add("DB100.0");
      addresses.add("DB100.2");
      addresses.add("DB100.4");
      addresses.add("DB100.6");
      addresses.add("DB100.26");
      addresses.add("DB100.28");
      addresses.add("DB100.30");
      addresses.add("DB100.32");
      addresses.add("DB100.34");
      addresses.add("DB100.36");
      addresses.add("DB100.38");
      addresses.add("DB100.40");
      List<Short> arraylist2 = S7control.getinstance().readWords(addresses);
//翻转
      List<Short> fanzhuan2 = S7control.getinstance().ReadWord("DB100.8", 1);
      List<Short> xiaoche2 = S7control.getinstance().ReadWord("DB100.12", 1);
//       Short[] values1 = { 1, 2, 3, 4, 5, 6, 7, 8 };
//       List<Short> arraylist = new ArrayList<>(Arrays.asList(values1));
//       Short[] fanzhuan = { 4 };
//       List<Short> fanzhuan1 = new ArrayList<>(Arrays.asList(fanzhuan));
//       Short[] dache = { 5 };
//       List<Short> dache1 = new ArrayList<>(Arrays.asList(dache));
//       Short[] xiaoche = { 6 };
//       List<Short> xiaoche1 = new ArrayList<>(Arrays.asList(xiaoche));
//
//       Short[] values2 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
//       List<Short> arraylist2 = new ArrayList<>(Arrays.asList(values2));
//       Short[] fanzhuan22 = { 4 };
//       List<Short> fanzhuan2 = new ArrayList<>(Arrays.asList(fanzhuan22));
//       Short[] xiaoche22 = {5};
//       List<Short> xiaoche2 = new ArrayList<>(Arrays.asList(xiaoche22));
      JSONObject jsonObject = new JSONObject();
      // new short[]{1,1, 1, 1, 1, 1, 2, 33, 2,3, 4, 5}
@@ -92,111 +118,194 @@
      jsonObject.append("dache1", dache1);
      jsonObject.append("xiaoche", xiaoche1);
      jsonObject.append("fanzhuan", fanzhuan1);
//
//      WebSocketServer sendwServer = WebSocketServer.sessionMap.get("AutomaticParameterSetting");
//      if (sendwServer != null) {
//        sendwServer.sendMessage(jsonObject.toString());
//      }
      jsonObject.append("params2", arraylist2);
      jsonObject.append("fanzhuan2", fanzhuan2);
      jsonObject.append("xiaoche2", xiaoche2);
      ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("AutomaticParameterSetting");
      if (sendwServer != null) {
        for (WebSocketServer webserver : sendwServer) {
          webserver.sendMessage(jsonObject.toString());
//      WebSocketServer webSocketServer = WebSocketServer.sessionMap.get("AutomaticParameterSetting");
      if (webserver != null) {
        List<String> messages = webserver.getMessages();
        String addressList1 = "DB100.120";
        String addressList2 = "DB100.18";
        String addressList3 = "DB100.22";
        String addressList4 = "DB100.14";
          if (webserver != null) {
            List<String> messages = webserver.getMessages();
            String addressList1 = "DB100.120";
            String addressList2 = "DB100.18";
            String addressList3 = "DB100.22";
            String addressList4 = "DB100.14";
        if (!messages.isEmpty()) {
          // 将最后一个消息转换为 short 类型的列表
          String lastMessage = messages.get(messages.size() - 1);
          // System.out.println("lastMessage:" + lastMessage);
          JSONArray messageArray = new JSONArray(lastMessage);
            if (!messages.isEmpty()) {
              // 将最后一个消息转换为 short 类型的列表
              String lastMessage = messages.get(messages.size() - 1);
              // System.out.println("lastMessage:" + lastMessage);
              JSONArray messageArray = new JSONArray(lastMessage);
          // 整合第 1 到 2 个数组并去掉 null 元素
          List<Short> mergedList = new ArrayList<>();
          for (int i = 0; i < 2; i++) {
            JSONArray sublist = messageArray.getJSONArray(i);
            for (int j = 0; j < sublist.size(); j++) {
              Object value = sublist.get(j);
              if (value != null && !value.toString().equals("null")) {
                try {
                  String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
                  short sValue = Short.parseShort(cleanedValue.trim());
                  mergedList.add(sValue);
                } catch (NumberFormatException e) {
                  // 如果无法解析为 short 类型,则忽略该部分
                  System.err.println("Could not parse value: " + value);
              // 整合第 1 到 2 个数组并去掉 null 元素
              List<Short> mergedList = new ArrayList<>();
              for (int i = 0; i < 2; i++) {
                JSONArray sublist = messageArray.getJSONArray(i);
                for (int j = 0; j < sublist.size(); j++) {
                  Object value = sublist.get(j);
                  if (value != null && !value.toString().equals("null")) {
                    try {
                      String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
                      short sValue = Short.parseShort(cleanedValue.trim());
                      mergedList.add(sValue);
                    } catch (NumberFormatException e) {
                      // 如果无法解析为 short 类型,则忽略该部分
                      System.err.println("Could not parse value: " + value);
                    }
                  }
                }
              }
            }
          }
          System.out.println(messageArray);
          // 写入第一个地址
          if (messageArray.getJSONArray(2).size() > 0) {
            Object value = messageArray.getJSONArray(2).get(0);
            if (value != null && !value.toString().equals("null")) {
              try {
                String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
                short sValue = Short.parseShort(cleanedValue.trim());
                S7control.getinstance().WriteWord(addressList2, Arrays.asList(sValue));
                System.out
                        .println("messageValue:" + Arrays.asList(sValue) + " written to PLC at address " + addressList2);
              } catch (NumberFormatException e) {
                // 如果无法解析为 short 类型,则忽略该部分
                System.err.println("Could not parse value: " + value);
              System.out.println(messageArray);
              // 写入第一个地址
              if (messageArray.getJSONArray(2).size() > 0) {
                Object value = messageArray.getJSONArray(2).get(0);
                if (value != null && !value.toString().equals("null")) {
                  try {
                    String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
                    short sValue = Short.parseShort(cleanedValue.trim());
                    S7control.getinstance().WriteWord(addressList2, Arrays.asList(sValue));
                    System.out
                            .println("messageValue:" + Arrays.asList(sValue) + " written to PLC at address " + addressList2);
                  } catch (NumberFormatException e) {
                    // 如果无法解析为 short 类型,则忽略该部分
                    System.err.println("Could not parse value: " + value);
                  }
                }
              }
              // 写入第二个地址
              if (messageArray.getJSONArray(3).size() > 0) {
                Object value = messageArray.getJSONArray(3).get(0);
                if (value != null && !value.toString().equals("null")) {
                  try {
                    String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
                    short sValue = Short.parseShort(cleanedValue.trim());
                    S7control.getinstance().WriteWord(addressList3, Arrays.asList(sValue));
                    System.out
                            .println("messageValue:" + Arrays.asList(sValue) + " written to PLC at address " + addressList3);
                  } catch (NumberFormatException e) {
                    // 如果无法解析为 short 类型,则忽略该部分
                    System.err.println("Could not parse value: " + value);
                  }
                }
              }
              // 写入第三个地址
              if (messageArray.getJSONArray(4).size() > 0) {
                Object value = messageArray.getJSONArray(4).get(0);
                if (value != null && !value.toString().equals("null")) {
                  try {
                    String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
                    short sValue = Short.parseShort(cleanedValue.trim());
                    S7control.getinstance().WriteWord(addressList4, Arrays.asList(sValue));
                    System.out
                            .println("messageValue:" + Arrays.asList(sValue) + " written to PLC at address " + addressList4);
                  } catch (NumberFormatException e) {
                    // 如果无法解析为 short 类型,则忽略该部分
                    System.err.println("Could not parse value: " + value);
                  }
                }
              }
              // 写入第四个地址
              if (!mergedList.isEmpty()) {
                S7control.getinstance().WriteWord(addressList1, mergedList);
                System.out.println("messageValue:" + mergedList + " written to PLC at address " + addressList1);
              }
              List<String> waddresses1 = new ArrayList<>();
              waddresses1.add("DB100.0");
              waddresses1.add("DB100.2");
              waddresses1.add("DB100.4");
              waddresses1.add("DB100.6");
              waddresses1.add("DB100.26");
              waddresses1.add("DB100.28");
              waddresses1.add("DB100.30");
              waddresses1.add("DB100.32");
              waddresses1.add("DB100.34");
              waddresses1.add("DB100.36");
              waddresses1.add("DB100.38");
              waddresses1.add("DB100.40");
              String addressList22 = "DB100.8";
              String addressList33 = "DB100.12";
              if (!messages.isEmpty()) {
                // 将最后一个消息转换为 short 类型的列表
                // 整合第 1 到 3 个数组并去掉 null 元素
                List<Short> mergedList2 = new ArrayList<>();
                for (int i = 5; i < 8; i++) {
                  JSONArray sublist = messageArray.getJSONArray(i);
                  for (int j = 0; j < sublist.size(); j++) {
                    Object value = sublist.get(j);
                    if (value != null && !value.toString().equals("null")) {
                      try {
                        String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
                        short sValue = Short.parseShort(cleanedValue.trim());
                        mergedList2.add(sValue);
                      } catch (NumberFormatException e) {
                        // 如果无法解析为 short 类型,则忽略该部分
                        System.err.println("Could not parse value: " + value);
                      }
                    }
                  }
                }
                // 写入第伍个地址
                if (messageArray.getJSONArray(8).size() > 0) {
                  Object value = messageArray.getJSONArray(8).get(0);
                  if (value != null && !value.toString().equals("null")) {
                    try {
                      String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
                      short sValue = Short.parseShort(cleanedValue.trim());
                      S7control.getinstance().WriteWord(addressList22, Arrays.asList(sValue));
                      System.out
                              .println("messageValue:" + Arrays.asList(sValue) + " written to PLC at address " + addressList2);
                    } catch (NumberFormatException e) {
                      // 如果无法解析为 short 类型,则忽略该部分
                      System.err.println("Could not parse value: " + value);
                    }
                  }
                }
                // 写入第六个地址
                if (messageArray.getJSONArray(9).size() > 0) {
                  Object value = messageArray.getJSONArray(9).get(0);
                  if (value != null && !value.toString().equals("null")) {
                    try {
                      String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
                      short sValue = Short.parseShort(cleanedValue.trim());
                      S7control.getinstance().WriteWord(addressList33, Arrays.asList(sValue));
                      System.out
                              .println("messageValue:" + Arrays.asList(sValue) + " written to PLC at address " + addressList3);
                    } catch (NumberFormatException e) {
                      // 如果无法解析为 short 类型,则忽略该部分
                      System.err.println("Could not parse value: " + value);
                    }
                  }
                }
                // 写入第七个地址
                if (!mergedList2.isEmpty()) {
                  S7control.getinstance().WriteWord(waddresses1, mergedList2);
                  System.out.println("messageValue:" + mergedList2 + " written to PLC at address " + waddresses1);
                }
                // 清空消息列表
                webserver.clearMessages();
              }
            }
          }
          // 写入第二个地址
          if (messageArray.getJSONArray(3).size() > 0) {
            Object value = messageArray.getJSONArray(3).get(0);
            if (value != null && !value.toString().equals("null")) {
              try {
                String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
                short sValue = Short.parseShort(cleanedValue.trim());
                S7control.getinstance().WriteWord(addressList3, Arrays.asList(sValue));
                System.out
                        .println("messageValue:" + Arrays.asList(sValue) + " written to PLC at address " + addressList3);
              } catch (NumberFormatException e) {
                // 如果无法解析为 short 类型,则忽略该部分
                System.err.println("Could not parse value: " + value);
              }
            }
          }
          // 写入第三个地址
          if (messageArray.getJSONArray(4).size() > 0) {
            Object value = messageArray.getJSONArray(4).get(0);
            if (value != null && !value.toString().equals("null")) {
              try {
                String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
                short sValue = Short.parseShort(cleanedValue.trim());
                S7control.getinstance().WriteWord(addressList4, Arrays.asList(sValue));
                System.out
                        .println("messageValue:" + Arrays.asList(sValue) + " written to PLC at address " + addressList4);
              } catch (NumberFormatException e) {
                // 如果无法解析为 short 类型,则忽略该部分
                System.err.println("Could not parse value: " + value);
              }
            }
          }
          // 写入第四个地址
          if (!mergedList.isEmpty()) {
            S7control.getinstance().WriteWord(addressList1, mergedList);
            System.out.println("messageValue:" + mergedList + " written to PLC at address " + addressList1);
          }
          // 清空消息列表
          webserver.clearMessages();
        }
      }}
      }
    }
springboot-vue3/src/main/java/com/example/springboot/component/PLCManualJog.java
@@ -10,52 +10,21 @@
import java.util.List;
public class PLCManualJog extends Thread {
  String name = "";
  Integer count = 0;
  public static String readFileToString(String filePath) throws IOException {
    File file = new File(filePath);
    return FileUtils.readFileToString(file, "UTF-8");
  // 用于存储应用程序的配置信息
  private Configuration config;
  // 创建一个自定义的 S7 控制器消息处理器对象
  MessageHandler customS7Control = new MessageHandler();
  public PLCManualJog() throws IOException {
    config = new Configuration("config.properties");
  }
  public void readValue() {
    String str = "";
    BufferedReader bufferedReader = null;
    FileInputStream fileInputStream;
    try {
      // 从文件中读取字节数据存入 fileInputStream
      fileInputStream = new FileInputStream("CanadaMes-ui/src/configuration/address.json");
      // 读取 fileInputStream 中字节并将其解码为字符
      InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "utf-8");
      // 提高读取效率,在 BufferedReader 内包装 InputStreamReader
      bufferedReader = new BufferedReader(inputStreamReader);
      String line = null;
      // 将 bufferedReader 内容一行一行赋值给str
      while ((line = bufferedReader.readLine()) != null) {
        str += line;
      }
      // 将str字符串格式转为json
      JSONObject jsonObject = new JSONObject(str);
      // 获取json中的值
      JSONArray address = jsonObject.getJSONArray("address");
      for (int i = 0; i < address.size(); i++) {
        JSONObject ress = (JSONObject) address.get(i);
        this.name = ress.getStr("name");
        this.count = ress.getInt("count");
      }
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (UnsupportedEncodingException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
  @Override
  public void run() {
@@ -72,36 +41,14 @@
      // System.out.println(stt);
      List<String> addressList0 = new ArrayList<>();
      addressList0.add("DB101.2.6");
      addressList0.add("DB101.2.7");
      addressList0.add("DB101.3.0");
      addressList0.add("DB101.3.1");
      addressList0.add("DB101.3.2");
      addressList0.add("DB101.3.3");
      addressList0.add("DB101.3.4");
      addressList0.add("DB101.3.5");
      List<String> addressList21 = new ArrayList<>();
      addressList21.add("DB101.0.0");
      addressList21.add("DB101.0.1");
      addressList21.add("DB101.0.2");
      addressList21.add("DB101.0.3");
      addressList21.add("DB101.0.4");
      addressList21.add("DB101.0.5");
      addressList21.add("DB101.0.6");
      addressList21.add("DB101.0.7");
      addressList21.add("DB101.1.0");
      addressList21.add("DB101.1.1");
      addressList21.add("DB101.1.2");
      addressList21.add("DB101.1.3");
      addressList21.add("DB101.1.4");
      addressList21.add("DB101.1.5");
      addressList21.add("DB101.1.6");
      addressList21.add("DB101.1.7");
      List<String> addressList21 = Arrays.asList(config.getProperty("PLCManualJog.button").split(","));
      List<Boolean> arraylist = S7control.getinstance().readBits(addressList21);
      List<Boolean> arraylist2 = S7control.getinstance().readBits(addressList0);
      List<Boolean> arraylist3 = S7control.getinstance().ReadBits("DB101.5.2", 2);
      // Boolean[] values1 = { false, true, true, true, false, false, true, false,
      // false, true, true, true, false, false,
      // true, false };
@@ -111,8 +58,7 @@
      // Boolean[] values3 = { false, false };
      // List<Boolean> arraylist3 = new ArrayList<>(Arrays.asList(values3));
      arraylist.addAll(arraylist2);
      arraylist.addAll(arraylist3);
      JSONObject jsonObject = new JSONObject();
@@ -138,43 +84,8 @@
//      WebSocketServer webSocketServer = WebSocketServer.sessionMap.get("ManualJog");
          if (webserver != null) {
            //       String addressList1 = "DB101.0.0";
//        String addressList2 = "DB101.2.6";
            String addressList3 = "DB101.5.2";
            List<String> addressList2 = new ArrayList<>();
            addressList2.add("DB101.2.6");
            addressList2.add("DB101.2.7");
            addressList2.add("DB101.3.0");
            addressList2.add("DB101.3.1");
            addressList2.add("DB101.3.2");
            addressList2.add("DB101.3.3");
            addressList2.add("DB101.3.4");
            addressList2.add("DB101.3.5");
            List<String> addressList211 = new ArrayList<>();
            addressList211.add("DB101.0.0");
            addressList211.add("DB101.0.1");
            addressList211.add("DB101.0.2");
            addressList211.add("DB101.0.3");
            addressList211.add("DB101.0.4");
            addressList211.add("DB101.0.5");
            addressList211.add("DB101.0.6");
            addressList211.add("DB101.0.7");
            addressList211.add("DB101.1.0");
            addressList211.add("DB101.1.1");
            addressList211.add("DB101.1.2");
            addressList211.add("DB101.1.3");
            addressList211.add("DB101.1.4");
            addressList211.add("DB101.1.5");
            addressList211.add("DB101.1.6");
            addressList211.add("DB101.1.7");
            List<String> addressList311 = new ArrayList<>();
            addressList311.add("DB101.5.2");
            addressList311.add("DB101.5.3");
            List<String> messages = webserver.getMessages();
            if (!messages.isEmpty()) {
@@ -202,36 +113,18 @@
              }
              // System.out.println(messageBooleans);
              List<Boolean> bolList = new ArrayList<>();
              List<Boolean> bolList2 = new ArrayList<>();
              List<Boolean> bolList3 = new ArrayList<>();
              for (int i = 0; i < 16 && i < messageBooleans.size(); i++) {
              for (int i = 0; i < 26 && i < messageBooleans.size(); i++) {
                bolList.add(messageBooleans.get(i));
              }
              for (int i = 16; i < 24 && i < messageBooleans.size(); i++) {
                bolList2.add(messageBooleans.get(i));
              }
              for (int i = 24; i < 26 && i < messageBooleans.size(); i++) {
                bolList3.add(messageBooleans.get(i));
              }
              // System.out.println(bolList);
              // System.out.println(bolList2);
              // System.out.println(bolList3);
              if (!bolList.isEmpty()) {
                S7control.getinstance().WriteBit(addressList211, bolList);
                System.out.println("messageValue:" + bolList + " written to PLC at address " + addressList211);
                S7control.getinstance().WriteBit(addressList21, bolList);
                System.out.println("messageValue:" + bolList + " written to PLC at address " + addressList21);
              }
              if (!bolList2.isEmpty()) {
                S7control.getinstance().WriteBit(addressList2, bolList2);
                System.out.println("messageValue:" + bolList2 + " written to PLC at address " + addressList2);
              }
              if (!bolList3.isEmpty()) {
                S7control.getinstance().WriteBit(addressList311, bolList3);
                System.out.println("messageValue:" + bolList3 + " written to PLC at address " + addressList311);
              }
              webserver.clearMessages();
            }
          }
springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter2.java
@@ -12,52 +12,26 @@
public class PlcParameter2 extends Thread {
  String name = "";
  Integer count = 0;
  // 用于存储应用程序的配置信息
  private Configuration config;
  // 创建一个自定义的 S7 控制器消息处理器对象
  MessageHandler customS7Control = new MessageHandler();
  public PlcParameter2() throws IOException {
    config = new Configuration("config.properties");
  }
  public static String readFileToString(String filePath) throws IOException {
    File file = new File(filePath);
    return FileUtils.readFileToString(file, "UTF-8");
  }
  public void readValue() {
    String str = "";
    BufferedReader bufferedReader = null;
    FileInputStream fileInputStream;
    try {
      // 从文件中读取字节数据存入 fileInputStream
      fileInputStream = new FileInputStream("CanadaMes-ui/src/configuration/address.json");
      // 读取 fileInputStream 中字节并将其解码为字符
      InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "utf-8");
      // 提高读取效率,在 BufferedReader 内包装 InputStreamReader
      bufferedReader = new BufferedReader(inputStreamReader);
      String line = null;
      // 将 bufferedReader 内容一行一行赋值给str
      while ((line = bufferedReader.readLine()) != null) {
        str += line;
      }
      // 将str字符串格式转为json
      JSONObject jsonObject = new JSONObject(str);
      // 获取json中的值
      JSONArray address = jsonObject.getJSONArray("Positioning1");
      for (int i = 0; i < address.size(); i++) {
        JSONObject ress = (JSONObject) address.get(i);
        this.name = ress.getStr("name");
        this.count = ress.getInt("count");
      }
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (UnsupportedEncodingException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
  @Override
  public void run() {
@@ -69,78 +43,42 @@
        e.printStackTrace();
      }
   //    手动状态地址
      List<String> addressList1 = new ArrayList<>();
   //    id
      List<String> addressList1 = Arrays.asList(config.getProperty("Parameter2.id").split(","));
      addressList1.add("DB103.44");//D01
      addressList1.add("DB103.58");//D02
      addressList1.add("DB103.72");//D03
      addressList1.add("DB103.86");//D04
      addressList1.add("DB103.100");//D05
      addressList1.add("DB103.114");//D06
      addressList1.add("DB103.128");//A01
      addressList1.add("DB103.142");//A01 2
      addressList1.add("DB103.156");//A02
      addressList1.add("DB103.184");//B01
      addressList1.add("DB103.212");//B02
      List<String> paramlist = S7control.getinstance().readStrings(addressList1);
   //清除ID地址
      List<String> addresses = new ArrayList<>();
      addresses.add("DB103.0");
      addresses.add("DB103.2");
      addresses.add("DB103.12");
      addresses.add("DB103.14");
      addresses.add("DB103.16");
      addresses.add("DB103.18");
      addresses.add("DB103.8");
      addresses.add("DB103.10");
      addresses.add("DB103.4");
      addresses.add("DB103.6");
      List<String> addresses = Arrays.asList(config.getProperty("Parameter2.cleanid").split(","));
      List<Short> data = S7control.getinstance().readWords(addresses);
      //id
      List<String> addressList0 = new ArrayList<>();
      //手动状态
      List<String> addressList0 = Arrays.asList(config.getProperty("Parameter2.state").split(","));
      addressList0.add("DB101.9.2");
      addressList0.add("DB101.9.3");
      addressList0.add("DB101.9.4");
      addressList0.add("DB101.9.5");
      addressList0.add("DB101.9.6");
      addressList0.add("DB101.9.7");
      addressList0.add("DB101.10.0");
      addressList0.add("DB101.10.1");
      addressList0.add("DB101.10.2");
      addressList0.add("DB101.10.3");
     // 扫码枪
      List<Boolean> data2 = S7control.getinstance().readBits(addressList0);
      List<String> addressList3 = new ArrayList<>();
      addressList3.add("DB103.256");
      addressList3.add("DB103.270");
      // 扫码枪
      List<String> addressList3 = Arrays.asList(config.getProperty("Parameter2.scanner").split(","));
      List<String> data3 = S7control.getinstance().readStrings(addressList3);
//急停
      List<String> niuanaddressList3 = Arrays.asList(config.getProperty("Parameter2.stop").split(","));
      List<String> niuanaddressList3 = new ArrayList<>();
      niuanaddressList3.add("DB101.10.4");
      List<Boolean> anniuread = S7control.getinstance().readBits(niuanaddressList3);
      List<String> data3 = S7control.getinstance().readStrings(addressList3);
// A01 A02 B01 B02
      List<String> addresses4 = new ArrayList<>();
      addresses4.add("DB103.32");
      addresses4.add("DB103.34");
      addresses4.add("DB103.36");
      addresses4.add("DB103.40");
// A01 A02 B01 B02 当前格子
      List<String> addresses4 = Arrays.asList(config.getProperty("Parameter2.Currentcell").split(","));
    List<Short> data4 = S7control.getinstance().readWords(addresses4);
@@ -197,18 +135,8 @@
        List<String> messages = webserver.getMessages();
        List<String> addressList = new ArrayList<>();
        addressList.add("DB101.9.2");
        addressList.add("DB101.9.3");
        addressList.add("DB101.9.4");
        addressList.add("DB101.9.5");
        addressList.add("DB101.9.6");
        addressList.add("DB101.9.7");
        addressList.add("DB101.10.0");
        addressList.add("DB101.10.1");
        addressList.add("DB101.10.2");
        addressList.add("DB101.10.3");
@@ -218,52 +146,11 @@
//        System.out.println("lastMessage:" + lastMessage);
          JSONArray messageArray = new JSONArray(lastMessage);
          if (messageArray.getJSONArray(0).size() > 0) {
            JSONArray jsonArray3 = messageArray.getJSONArray(0);
            List<Boolean> sValue3 = new ArrayList<>();
            for (int i = 0; i < jsonArray3.size(); i++) {
              Object value = jsonArray3.get(i);
              if (value != null && !value.toString().equals("null")) {
                try {
                  String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
                  boolean val = "1".equals(cleanedValue.trim());
                  sValue3.add(val);
                  System.out.println("messageValue: " + Arrays.asList(val) + " added to the list");
                } catch (NumberFormatException e) {
                  // 如果无法解析为 boolean 类型,则忽略该部分
                  System.err.println("Could not parse value: " + value);
                }
              }
            }
            if (!sValue3.isEmpty()) {
             S7control.getinstance().WriteBit(addressList, sValue3);
              System.out.println("Values " + sValue3 + " written to PLC at address " + sValue3);
            }
          }
          // 将布尔列表写入 PLC
          if (messageArray.getJSONArray(1).size() > 0) {
            JSONArray jsonArray3 = messageArray.getJSONArray(1);
            List<Boolean> sValue3 = new ArrayList<>();
            for (int i = 0; i < jsonArray3.size(); i++) {
              Object value = jsonArray3.get(i);
              if (value != null && !value.toString().equals("null")) {
                try {
                  String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
                  boolean val = "1".equals(cleanedValue.trim());
                  sValue3.add(val);
                  System.out.println("messageValue: " + Arrays.asList(val) + " added to the list");
                } catch (NumberFormatException e) {
                  // 如果无法解析为 boolean 类型,则忽略该部分
                  System.err.println("Could not parse value: " + value);
                }
              }
            }
            if (!sValue3.isEmpty()) {
            S7control.getinstance().WriteBit(niuanaddressList3, sValue3);
        //清除id
          customS7Control.writeBitToPLC( messageArray, addresses,0);
              System.out.println("Values " + sValue3 + " written to PLC at address " + sValue3);
            }
          }
         //急停
          customS7Control.writeBitToPLC( messageArray, niuanaddressList3,1);
          // 清空消息列表
springboot-vue3/src/main/java/com/example/springboot/component/PlcPositioning1.java
@@ -80,7 +80,7 @@
            // System.out.println(stt);
            //存片格  出片格读取
  List<Short> arraylist = S7control.getinstance().ReadWord("DB100.42", 23);
  List<Short> arraylist = S7control.getinstance().ReadWord("DB100.42", 33);
//            System.out.println(arraylist);
//            Short[] 存片 = { 1 };
//            List<Short> 存片1 = new ArrayList<>(Arrays.asList(存片));
springboot-vue3/src/main/java/com/example/springboot/component/PlcServoManualone.java
@@ -255,35 +255,36 @@
              // 写入AO1组合
              customS7Control.WriteWordToPLC(messageArray, addresses,0);
              if (A01readstart != null && !A01readstart.isEmpty()) {
                // 创建一个新的列表用于写入新值
                List<Boolean> a01startval = new ArrayList<>();
                // 遍历所有读取到的位值
                for (Boolean bit : A01readstart) {
                  // 取反当前位的值并添加到新的列表中
                  a01startval.add(!bit);
              if (messageArray.getJSONArray(0).size() > 0) {
                if (A01readstart != null && !A01readstart.isEmpty()) {
                  // 创建一个新的列表用于写入新值
                  List<Boolean> a01startval = new ArrayList<>();
                  // 遍历所有读取到的位值
                  for (Boolean bit : A01readstart) {
                    // 取反当前位的值并添加到新的列表中
                    a01startval.add(!bit);
                  }
                  // 写入新的位值列表
                  S7control.getinstance().WriteBit(A01start, a01startval);
                }
                // 写入新的位值列表
                S7control.getinstance().WriteBit(A01start, a01startval);
              }
              // 写入AO2组合
              customS7Control.WriteWordToPLC(messageArray, addresses2,1);
              if (A02readstart != null && !A02readstart.isEmpty()) {
                // 创建一个新的列表用于写入新值
                List<Boolean> a02startval = new ArrayList<>();
                // 遍历所有读取到的位值
                for (Boolean bit : A02readstart) {
                  // 取反当前位的值并添加到新的列表中
                  a02startval.add(!bit);
              if (messageArray.getJSONArray(1).size() > 0) {
                if (A02readstart != null && !A02readstart.isEmpty()) {
                  // 创建一个新的列表用于写入新值
                  List<Boolean> a02startval = new ArrayList<>();
                  // 遍历所有读取到的位值
                  for (Boolean bit : A02readstart) {
                    // 取反当前位的值并添加到新的列表中
                    a02startval.add(!bit);
                  }
                  // 写入新的位值列表
                  S7control.getinstance().WriteBit(A02start, a02startval);
                }
                // 写入新的位值列表
                S7control.getinstance().WriteBit(A02start, a02startval);
              }
              // 复位按钮写入
              customS7Control.writeBitToPLC( messageArray, Reset,2);
springboot-vue3/src/main/java/com/example/springboot/component/S7control.java
@@ -215,7 +215,7 @@
             return null;
        return s7PLC.readBoolean(addresslist);
    }
//读取不连续地址bit
    public List<Boolean> readBits(List<String> addressList) {
        if (s7PLC == null || addressList.isEmpty()) {
            return null;
@@ -230,7 +230,7 @@
        return values;
    }
//读取String
    public List<String> readStrings(List<String> addressList) {
        if (s7PLC == null) {
            return null;
@@ -264,7 +264,7 @@
        return result;
    }
//不连续地址写入Word
    public void WriteWord(List<String> address, List<Short> datas) {
        if (s7PLC == null)
            return;
@@ -283,7 +283,7 @@
    
    
    
//字符串写入
    public void outmesid(String data, String addr) {
//        System.out.println("outmesid: " + data);
        List<Byte> glassidlist = new ArrayList<>();
@@ -316,7 +316,7 @@
        return data;
    }
//读取时间
    public Long readtime(String address) {
        if (s7PLC==null)
            return null;
springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java
@@ -11,34 +11,31 @@
public class AppRunnerConfig implements ApplicationRunner {
  @Override
  public void run(ApplicationArguments args) throws Exception {
    // TODO Auto-generated method stub
    //
    System.out.println("启动完成");
    @Override
    public void run(ApplicationArguments args) throws Exception {
        // TODO Auto-generated method stub
        //
        System.out.println("启动完成");
//new PlcHold().start();
//
    //
  new Plchome().start();
////    //
//      new PlcParameter().start();
//      //
//      new Plcalarm().start();
//      //
//      new Plcsign().start();
//      //
//      new Plcaction().start();
//      new Plcstate().start();
//      new PlcPositioning1().start();
//      new PlcPositioning2().start();
    //  new PlcParameter2().start();
//      new PlcParameter1().start();
//      new PLCAutomaticParameterSetting().start();
//
//      new PlcManualonePosition().start();
//      new PlcManualonePosition2().start();
//      new PlcServoManualone().start();
//      new PLCManualJog().start();
  }
        new Plchome().start();
        new Plcalarm().start();
        new Plcsign().start();
        new Plcaction().start();
        new Plcstate().start();
        new PlcPositioning1().start();
        new PlcParameter2().start();
        new PLCAutomaticParameterSetting().start();
        new PlcManualonePosition().start();
        new PlcManualonePosition2().start();
        new PlcServoManualone().start();
        new PLCManualJog().start();
    }
}
springboot-vue3/src/main/java/com/example/springboot/mapper/RolePermissionMapper.java
@@ -13,7 +13,7 @@
@Mapper
@Repository
public interface RolePermissionMapper extends BaseMapper<RolePermission> {
    List<RolePermission> selectByNameLike(@Param("name") String name);
    @Select("SELECT rp.state,rp.permission_id,rp.role_id, p.* FROM role_permission AS rp JOIN permission AS p ON rp.permission_id = p.id WHERE rp.role_id = #{roleId}")
    List<Map<String, Object>> selectquanxian(@Param("roleId") int roleId);
springboot-vue3/src/main/java/com/example/springboot/service/impl/RolePermissionServiceImpl.java
@@ -1,12 +1,15 @@
package com.example.springboot.service.impl;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.springboot.entity.MenuList;
import com.example.springboot.service.PermissionService;
import com.example.springboot.mapper.RolePermissionMapper;
import com.example.springboot.entity.RolePermission;
import com.example.springboot.entity.vo.RolePermissionVo;
import com.example.springboot.service.RolePermissionService;
import com.example.springboot.service.RoleService;
import lombok.extern.slf4j.Slf4j;
@@ -22,14 +25,19 @@
    private PermissionService permissionService;
    @Override
    public IPage<RolePermission> selectPage(RolePermissionVo rolePermissionVO) {
        IPage<RolePermission> rolePermissionIPage = lambdaQuery()
                .orderByAsc(RolePermission::getRoleId)
                .like(StrUtil.isNotBlank(rolePermissionVO.getName()), RolePermission::getName, rolePermissionVO.getName())
                .page(new Page<>(rolePermissionVO.getPageNum(), rolePermissionVO.getPageSize()));
        rolePermissionIPage.getRecords().forEach(rolePermission -> {
            rolePermission.setRole(roleService.getById(rolePermission.getRoleId()));
            rolePermission.setPermission(permissionService.getById(rolePermission.getPermissionId()));
        });
        return rolePermissionIPage;
    }
}
springboot-vue3/src/main/resources/config.properties
@@ -53,4 +53,60 @@
#PLCManualJog--------------------------
#PLCManualJog--------------------------
#Parameter2--------------------------
#id
Parameter2.id=DB103.44,DB103.58,DB103.72,DB103.86,DB103.100,DB103.114,DB103.128,DB103.142,DB103.156,DB103.184,DB103.212
#清除id
Parameter2.cleanid=DB103.0,DB103.2,DB103.12,DB103.14,DB103.16,DB103.18,DB103.8,DB103.10,DB103.4,DB103.6
#手动状态
Parameter2.state=DB101.9.2,DB101.9.3,DB101.9.4,DB101.9.5,DB101.9.6,DB101.9.7,DB101.10.0,DB101.10.1,DB101.10.2,DB101.10.3
#扫码枪
Parameter2.scanner=DB103.256,DB103.270
#急停
Parameter2.stop=DB101.10.4
#当前格子
Parameter2.Currentcell=DB103.32,DB103.34,DB103.36,DB103.40
#PLCManualJog-------------------------------------
#List<String> addressList21 = new ArrayList<>();
#addressList21.add("DB101.0.0");
#addressList21.add("DB101.0.1");
#addressList21.add("DB101.0.2");
#addressList21.add("DB101.0.3");
#addressList21.add("DB101.0.4");
#addressList21.add("DB101.0.5");
#addressList21.add("DB101.0.6");
#addressList21.add("DB101.3.4");
#addressList21.add("DB101.1.4");
#addressList21.add("DB101.1.2"); //A01 SERVE TURN
#addressList21.add("DB101.5.2");
#addressList21.add("DB101.0.7");//A02 VFD conveyor
#addressList21.add("DB101.3.5");
#addressList21.add("DB101.1.5");
#addressList21.add("DB101.1.3");
#addressList21.add("DB101.5.3");
#addressList21.add("DB101.1.0");//B01 VFD conveyor
#addressList21.add("DB101.1.6");
#addressList21.add("DB101.2.6");
#addressList21.add("DB101.2.7");
#addressList21.add("DB101.3.2");
#
#addressList21.add("DB101.1.1");//B02 VFD conveyor
#addressList21.add("DB101.1.7");
#addressList21.add("DB101.3.0");
#addressList21.add("DB101.3.1");
#addressList21.add("DB101.3.3");
#按钮
PLCManualJog.button=DB101.0.0,DB101.0.1,DB101.0.2,DB101.0.3,DB101.0.4,DB101.0.5,DB101.0.6,DB101.3.4,DB101.1.4,DB101.1.2,DB101.5.2,DB101.0.7,DB101.3.5,DB101.1.5,DB101.1.3,DB101.5.3,DB101.1.0,DB101.1.6,DB101.2.6,DB101.2.7,DB101.3.2,DB101.1.1,DB101.1.7,DB101.3.0,DB101.3.1,DB101.3.3
springboot-vue3/src/main/resources/sql/canadames.sql
@@ -11,7 +11,7 @@
 Target Server Version : 80022
 File Encoding         : 65001
 Date: 07/12/2023 11:39:42
 Date: 11/12/2023 13:35:48
*/
SET NAMES utf8mb4;
@@ -27,7 +27,7 @@
  `timeon` datetime(0) NULL DEFAULT NULL COMMENT '开始时间',
  `endTime` datetime(0) NULL DEFAULT NULL COMMENT '结束时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1397 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 1742 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of alarmmg
@@ -171,10 +171,273 @@
INSERT INTO `alarmmg` VALUES (1472, 'A02 conveyor Left safety alarm', '2023-12-06 16:20:28', '2023-12-06 16:20:31');
INSERT INTO `alarmmg` VALUES (1473, 'A01 conveyor right safety alarm', '2023-12-06 16:31:59', '2023-12-06 16:32:02');
INSERT INTO `alarmmg` VALUES (1474, 'A01 conveyor right safety alarm', '2023-12-06 16:32:17', '2023-12-06 16:32:20');
INSERT INTO `alarmmg` VALUES (1475, 'A01 servo turn error', '2023-12-07 11:21:49', NULL);
INSERT INTO `alarmmg` VALUES (1476, 'A02 servo turn error', '2023-12-07 11:21:49', NULL);
INSERT INTO `alarmmg` VALUES (1477, 'A01 servo travel error', '2023-12-07 11:22:19', NULL);
INSERT INTO `alarmmg` VALUES (1478, 'A02 servo travel error', '2023-12-07 11:22:22', NULL);
INSERT INTO `alarmmg` VALUES (1475, 'A01 servo turn error', '2023-12-07 11:21:49', '2023-12-07 13:34:48');
INSERT INTO `alarmmg` VALUES (1476, 'A02 servo turn error', '2023-12-07 11:21:49', '2023-12-07 13:34:48');
INSERT INTO `alarmmg` VALUES (1477, 'A01 servo travel error', '2023-12-07 11:22:19', '2023-12-07 13:34:48');
INSERT INTO `alarmmg` VALUES (1478, 'A02 servo travel error', '2023-12-07 11:22:22', '2023-12-07 13:34:48');
INSERT INTO `alarmmg` VALUES (1479, 'D02 VFD error', '2023-12-07 13:45:51', '2023-12-07 13:45:52');
INSERT INTO `alarmmg` VALUES (1480, 'A01 servo turn error', '2023-12-07 13:45:55', '2023-12-07 13:46:35');
INSERT INTO `alarmmg` VALUES (1481, 'A02 servo turn error', '2023-12-07 13:45:55', '2023-12-07 13:46:35');
INSERT INTO `alarmmg` VALUES (1482, 'D03 VFD error', '2023-12-07 13:46:17', '2023-12-07 13:46:37');
INSERT INTO `alarmmg` VALUES (1483, 'D04 VFD error', '2023-12-07 13:46:17', '2023-12-07 13:46:37');
INSERT INTO `alarmmg` VALUES (1484, 'D05 VFD error', '2023-12-07 13:46:17', '2023-12-07 13:46:37');
INSERT INTO `alarmmg` VALUES (1485, 'A01 servo travel error', '2023-12-07 13:46:30', '2023-12-07 13:46:37');
INSERT INTO `alarmmg` VALUES (1486, 'A02 servo travel error', '2023-12-07 13:46:30', '2023-12-07 13:46:37');
INSERT INTO `alarmmg` VALUES (1487, 'A01 servo turn error', '2023-12-07 13:46:50', '2023-12-07 13:47:37');
INSERT INTO `alarmmg` VALUES (1488, 'A02 servo turn error', '2023-12-07 13:46:50', '2023-12-07 13:47:37');
INSERT INTO `alarmmg` VALUES (1489, 'A01 servo travel error', '2023-12-07 13:47:16', '2023-12-07 13:47:37');
INSERT INTO `alarmmg` VALUES (1490, 'A02 servo travel error', '2023-12-07 13:47:16', '2023-12-07 13:47:37');
INSERT INTO `alarmmg` VALUES (1491, 'More glass than known', '2023-12-07 13:56:56', '2023-12-07 13:57:35');
INSERT INTO `alarmmg` VALUES (1492, 'less glass than known', '2023-12-07 13:57:36', '2023-12-07 13:57:48');
INSERT INTO `alarmmg` VALUES (1493, 'More glass than known', '2023-12-07 13:57:48', '2023-12-07 14:07:27');
INSERT INTO `alarmmg` VALUES (1494, 'More glass than known', '2023-12-07 14:09:01', '2023-12-07 14:09:14');
INSERT INTO `alarmmg` VALUES (1495, 'less glass than known', '2023-12-07 14:09:15', '2023-12-07 14:19:19');
INSERT INTO `alarmmg` VALUES (1496, 'A01 servo travel error', '2023-12-07 14:40:51', '2023-12-07 14:41:14');
INSERT INTO `alarmmg` VALUES (1497, 'A01 conveyor right safety alarm', '2023-12-07 14:47:06', '2023-12-07 14:47:09');
INSERT INTO `alarmmg` VALUES (1498, 'A01 servo turn error', '2023-12-07 14:49:31', '2023-12-07 14:51:34');
INSERT INTO `alarmmg` VALUES (1499, 'A02 servo turn error', '2023-12-07 14:49:31', '2023-12-07 14:51:34');
INSERT INTO `alarmmg` VALUES (1500, 'A01 servo travel error', '2023-12-07 14:50:05', '2023-12-07 14:51:34');
INSERT INTO `alarmmg` VALUES (1501, 'A02 servo travel error', '2023-12-07 14:50:05', '2023-12-07 14:51:34');
INSERT INTO `alarmmg` VALUES (1502, 'A01 conveyor right safety alarm', '2023-12-07 15:11:25', '2023-12-07 15:11:28');
INSERT INTO `alarmmg` VALUES (1503, 'A01 servo turn error', '2023-12-07 15:12:17', '2023-12-07 15:12:26');
INSERT INTO `alarmmg` VALUES (1504, 'A02 servo turn error', '2023-12-07 15:12:17', '2023-12-07 15:12:26');
INSERT INTO `alarmmg` VALUES (1505, 'A02 servo travel error', '2023-12-07 15:12:17', '2023-12-07 15:12:26');
INSERT INTO `alarmmg` VALUES (1506, 'A01 servo travel error', '2023-12-07 15:12:20', '2023-12-07 15:12:26');
INSERT INTO `alarmmg` VALUES (1507, 'A01 servo turn error', '2023-12-07 15:12:27', '2023-12-07 15:12:29');
INSERT INTO `alarmmg` VALUES (1508, 'A01 conveyor right safety alarm', '2023-12-07 15:13:30', '2023-12-07 15:14:59');
INSERT INTO `alarmmg` VALUES (1509, 'A01 VFD error', '2023-12-07 15:14:57', '2023-12-07 15:14:58');
INSERT INTO `alarmmg` VALUES (1510, 'A01 servo turn error', '2023-12-07 15:15:08', '2023-12-07 15:16:49');
INSERT INTO `alarmmg` VALUES (1511, 'A02 servo turn error', '2023-12-07 15:15:08', '2023-12-07 15:16:49');
INSERT INTO `alarmmg` VALUES (1512, 'A02 servo travel error', '2023-12-07 15:15:38', '2023-12-07 15:16:49');
INSERT INTO `alarmmg` VALUES (1513, 'A01 conveyor right safety alarm', '2023-12-07 15:15:38', '2023-12-07 15:18:11');
INSERT INTO `alarmmg` VALUES (1514, 'A01 servo travel error', '2023-12-07 15:15:40', '2023-12-07 15:16:49');
INSERT INTO `alarmmg` VALUES (1515, 'A01 servo turn error', '2023-12-07 15:25:11', '2023-12-07 15:25:46');
INSERT INTO `alarmmg` VALUES (1516, 'A02 servo turn error', '2023-12-07 15:25:11', '2023-12-07 15:25:46');
INSERT INTO `alarmmg` VALUES (1517, 'A01 servo travel error', '2023-12-07 15:25:38', '2023-12-07 15:25:46');
INSERT INTO `alarmmg` VALUES (1518, 'A02 servo travel error', '2023-12-07 15:25:38', '2023-12-07 15:25:46');
INSERT INTO `alarmmg` VALUES (1519, 'A02 conveyor Left safety alarm', '2023-12-07 15:31:15', '2023-12-07 15:31:18');
INSERT INTO `alarmmg` VALUES (1520, 'A01 servo turn error', '2023-12-07 15:31:48', '2023-12-07 15:32:24');
INSERT INTO `alarmmg` VALUES (1521, 'A02 servo turn error', '2023-12-07 15:31:48', '2023-12-07 15:32:20');
INSERT INTO `alarmmg` VALUES (1522, 'A02 servo travel error', '2023-12-07 15:32:10', '2023-12-07 15:32:13');
INSERT INTO `alarmmg` VALUES (1523, 'A01 servo travel error', '2023-12-07 15:32:17', '2023-12-07 15:32:18');
INSERT INTO `alarmmg` VALUES (1524, 'A02 conveyor Left safety alarm', '2023-12-07 15:33:06', '2023-12-07 15:33:09');
INSERT INTO `alarmmg` VALUES (1525, 'A01 servo turn error', '2023-12-07 15:33:21', '2023-12-07 15:35:32');
INSERT INTO `alarmmg` VALUES (1526, 'A02 servo turn error', '2023-12-07 15:33:21', '2023-12-07 15:35:32');
INSERT INTO `alarmmg` VALUES (1527, 'A02 servo travel error', '2023-12-07 15:33:47', '2023-12-07 15:35:34');
INSERT INTO `alarmmg` VALUES (1528, 'A02 conveyor Left safety alarm', '2023-12-07 15:33:47', '2023-12-07 15:35:34');
INSERT INTO `alarmmg` VALUES (1529, 'A01 servo travel error', '2023-12-07 15:33:53', '2023-12-07 15:35:34');
INSERT INTO `alarmmg` VALUES (1530, 'A01 servo turn error', '2023-12-07 15:37:15', '2023-12-07 15:38:14');
INSERT INTO `alarmmg` VALUES (1531, 'A02 servo turn error', '2023-12-07 15:37:15', '2023-12-07 15:38:14');
INSERT INTO `alarmmg` VALUES (1532, 'A01 servo travel error', '2023-12-07 15:37:45', '2023-12-07 15:38:13');
INSERT INTO `alarmmg` VALUES (1533, 'A01 conveyor right safety alarm', '2023-12-07 16:01:56', '2023-12-07 16:01:59');
INSERT INTO `alarmmg` VALUES (1534, 'D02 VFD error', '2023-12-07 16:01:58', '2023-12-07 16:01:59');
INSERT INTO `alarmmg` VALUES (1535, 'A01 VFD error', '2023-12-07 16:01:58', '2023-12-07 16:01:59');
INSERT INTO `alarmmg` VALUES (1536, 'A01 servo turn error', '2023-12-07 16:05:46', '2023-12-07 16:06:22');
INSERT INTO `alarmmg` VALUES (1537, 'A02 servo turn error', '2023-12-07 16:05:46', '2023-12-07 16:06:22');
INSERT INTO `alarmmg` VALUES (1538, 'A01 servo travel error', '2023-12-07 16:06:12', '2023-12-07 16:06:21');
INSERT INTO `alarmmg` VALUES (1539, 'A02 servo travel error', '2023-12-07 16:06:12', '2023-12-07 16:06:21');
INSERT INTO `alarmmg` VALUES (1540, 'A01 conveyor right safety alarm', '2023-12-07 16:10:13', '2023-12-07 16:10:15');
INSERT INTO `alarmmg` VALUES (1541, 'A01 conveyor right safety alarm', '2023-12-07 16:10:34', '2023-12-07 16:10:35');
INSERT INTO `alarmmg` VALUES (1542, 'A01 servo turn error', '2023-12-07 16:12:10', '2023-12-07 16:12:36');
INSERT INTO `alarmmg` VALUES (1543, 'A02 servo turn error', '2023-12-07 16:12:10', '2023-12-07 16:12:36');
INSERT INTO `alarmmg` VALUES (1544, 'A01 servo turn error', '2023-12-07 16:13:28', '2023-12-07 16:14:06');
INSERT INTO `alarmmg` VALUES (1545, 'A02 servo turn error', '2023-12-07 16:13:28', '2023-12-07 16:14:06');
INSERT INTO `alarmmg` VALUES (1546, 'A01 servo travel error', '2023-12-07 16:13:57', '2023-12-07 16:14:06');
INSERT INTO `alarmmg` VALUES (1547, 'A02 servo travel error', '2023-12-07 16:13:57', '2023-12-07 16:14:06');
INSERT INTO `alarmmg` VALUES (1548, 'A01 conveyor right safety alarm', '2023-12-07 16:15:51', '2023-12-07 16:15:54');
INSERT INTO `alarmmg` VALUES (1549, 'A01 conveyor right safety alarm', '2023-12-07 16:16:12', '2023-12-07 16:16:14');
INSERT INTO `alarmmg` VALUES (1550, '1# buffer safety alarm', '2023-12-07 16:16:13', '2023-12-07 16:19:27');
INSERT INTO `alarmmg` VALUES (1551, 'A01 servo turn error', '2023-12-07 16:16:27', '2023-12-07 16:16:59');
INSERT INTO `alarmmg` VALUES (1552, 'A02 servo turn error', '2023-12-07 16:16:27', '2023-12-07 16:17:11');
INSERT INTO `alarmmg` VALUES (1553, 'A01 servo travel error', '2023-12-07 16:16:58', '2023-12-07 16:16:59');
INSERT INTO `alarmmg` VALUES (1554, 'A02 servo travel error', '2023-12-07 16:16:58', '2023-12-07 16:16:59');
INSERT INTO `alarmmg` VALUES (1555, 'A01 conveyor right safety alarm', '2023-12-07 16:16:58', '2023-12-07 16:18:35');
INSERT INTO `alarmmg` VALUES (1556, 'A01 servo turn error', '2023-12-07 16:17:00', '2023-12-07 16:17:10');
INSERT INTO `alarmmg` VALUES (1557, 'B01 VFD error', '2023-12-07 16:18:35', '2023-12-07 16:18:36');
INSERT INTO `alarmmg` VALUES (1558, 'A01 servo turn error', '2023-12-07 16:18:53', '2023-12-07 16:19:05');
INSERT INTO `alarmmg` VALUES (1559, 'A02 servo turn error', '2023-12-07 16:18:53', '2023-12-07 16:19:05');
INSERT INTO `alarmmg` VALUES (1560, 'D02 VFD error', '2023-12-07 16:18:58', '2023-12-07 16:19:06');
INSERT INTO `alarmmg` VALUES (1561, 'D03 VFD error', '2023-12-07 16:18:58', '2023-12-07 16:19:06');
INSERT INTO `alarmmg` VALUES (1562, 'D04 VFD error', '2023-12-07 16:18:58', '2023-12-07 16:19:06');
INSERT INTO `alarmmg` VALUES (1563, 'D05 VFD error', '2023-12-07 16:18:58', '2023-12-07 16:19:06');
INSERT INTO `alarmmg` VALUES (1564, 'D06 VFD error', '2023-12-07 16:18:58', '2023-12-07 16:19:06');
INSERT INTO `alarmmg` VALUES (1565, 'A01 servo turn error', '2023-12-07 16:21:09', '2023-12-07 16:23:03');
INSERT INTO `alarmmg` VALUES (1566, 'A02 servo turn error', '2023-12-07 16:21:09', '2023-12-07 16:23:03');
INSERT INTO `alarmmg` VALUES (1567, 'A01 servo travel error', '2023-12-07 16:21:41', '2023-12-07 16:23:03');
INSERT INTO `alarmmg` VALUES (1568, 'A01 conveyor right safety alarm', '2023-12-07 16:27:01', '2023-12-07 16:27:03');
INSERT INTO `alarmmg` VALUES (1569, 'A01 conveyor right safety alarm', '2023-12-07 16:27:22', '2023-12-07 16:27:24');
INSERT INTO `alarmmg` VALUES (1570, '1# buffer safety alarm', '2023-12-07 16:27:22', '2023-12-07 16:34:37');
INSERT INTO `alarmmg` VALUES (1571, 'B01 VFD error', '2023-12-07 16:27:23', '2023-12-07 16:27:24');
INSERT INTO `alarmmg` VALUES (1572, 'A01 VFD error', '2023-12-07 16:27:23', '2023-12-07 16:27:24');
INSERT INTO `alarmmg` VALUES (1573, 'A01 servo travel error', '2023-12-07 16:28:02', '2023-12-07 16:28:22');
INSERT INTO `alarmmg` VALUES (1574, 'A02 servo travel error', '2023-12-07 16:28:02', '2023-12-07 16:28:22');
INSERT INTO `alarmmg` VALUES (1575, 'A01 conveyor right safety alarm', '2023-12-07 16:28:02', '2023-12-07 16:34:37');
INSERT INTO `alarmmg` VALUES (1576, 'A02 servo turn error', '2023-12-07 16:28:22', '2023-12-07 16:28:23');
INSERT INTO `alarmmg` VALUES (1577, 'A01 servo turn error', '2023-12-07 16:34:41', '2023-12-07 16:39:08');
INSERT INTO `alarmmg` VALUES (1578, 'A01 servo turn error', '2023-12-07 16:39:22', '2023-12-07 16:40:18');
INSERT INTO `alarmmg` VALUES (1579, 'A02 servo turn error', '2023-12-07 16:39:22', '2023-12-07 16:40:18');
INSERT INTO `alarmmg` VALUES (1580, 'A02 servo travel error', '2023-12-07 16:39:49', '2023-12-07 16:40:16');
INSERT INTO `alarmmg` VALUES (1581, 'A01 servo travel error', '2023-12-07 16:39:52', '2023-12-07 16:40:16');
INSERT INTO `alarmmg` VALUES (1582, 'A01 conveyor right safety alarm', '2023-12-07 16:44:24', '2023-12-07 16:44:27');
INSERT INTO `alarmmg` VALUES (1583, 'A01 conveyor right safety alarm', '2023-12-07 16:44:36', '2023-12-07 16:44:39');
INSERT INTO `alarmmg` VALUES (1584, '1# buffer safety alarm', '2023-12-07 16:44:37', '2023-12-07 16:46:27');
INSERT INTO `alarmmg` VALUES (1585, 'A01 servo turn error', '2023-12-07 16:44:58', '2023-12-07 16:45:31');
INSERT INTO `alarmmg` VALUES (1586, 'A02 servo turn error', '2023-12-07 16:44:58', '2023-12-07 16:45:32');
INSERT INTO `alarmmg` VALUES (1587, 'A01 servo travel error', '2023-12-07 16:45:25', '2023-12-07 16:45:31');
INSERT INTO `alarmmg` VALUES (1588, 'A02 servo travel error', '2023-12-07 16:45:25', '2023-12-07 16:45:31');
INSERT INTO `alarmmg` VALUES (1589, 'A01 conveyor right safety alarm', '2023-12-07 16:45:25', '2023-12-07 16:46:27');
INSERT INTO `alarmmg` VALUES (1590, 'A01 servo turn error', '2023-12-07 16:46:30', '2023-12-07 16:47:59');
INSERT INTO `alarmmg` VALUES (1591, 'A01 servo turn error', '2023-12-07 16:48:00', '2023-12-07 16:48:46');
INSERT INTO `alarmmg` VALUES (1592, 'A02 servo turn error', '2023-12-07 16:48:00', '2023-12-07 16:48:46');
INSERT INTO `alarmmg` VALUES (1593, 'A01 servo travel error', '2023-12-07 16:48:32', '2023-12-07 16:48:34');
INSERT INTO `alarmmg` VALUES (1594, 'A02 servo travel error', '2023-12-07 16:48:32', '2023-12-07 16:48:34');
INSERT INTO `alarmmg` VALUES (1595, 'A01 conveyor right safety alarm', '2023-12-07 16:50:42', '2023-12-07 16:50:44');
INSERT INTO `alarmmg` VALUES (1596, 'A01 conveyor right safety alarm', '2023-12-07 16:50:53', '2023-12-07 16:50:56');
INSERT INTO `alarmmg` VALUES (1597, 'B01 VFD error', '2023-12-07 16:50:54', '2023-12-07 16:50:56');
INSERT INTO `alarmmg` VALUES (1598, '1# buffer safety alarm', '2023-12-07 16:50:54', '2023-12-07 17:01:21');
INSERT INTO `alarmmg` VALUES (1599, 'A01 servo turn error', '2023-12-07 16:51:07', '2023-12-07 16:59:23');
INSERT INTO `alarmmg` VALUES (1600, 'A02 servo turn error', '2023-12-07 16:51:07', '2023-12-07 16:59:23');
INSERT INTO `alarmmg` VALUES (1601, 'A01 servo travel error', '2023-12-07 16:51:36', '2023-12-07 16:59:23');
INSERT INTO `alarmmg` VALUES (1602, 'A01 conveyor right safety alarm', '2023-12-07 16:51:36', '2023-12-07 17:01:21');
INSERT INTO `alarmmg` VALUES (1603, 'A02 servo turn error', '2023-12-08 08:37:43', '2023-12-08 08:51:23');
INSERT INTO `alarmmg` VALUES (1604, 'A01 servo travel error', '2023-12-08 08:37:43', '2023-12-08 08:51:23');
INSERT INTO `alarmmg` VALUES (1605, 'A02 servo travel error', '2023-12-08 08:37:43', '2023-12-08 08:51:23');
INSERT INTO `alarmmg` VALUES (1606, 'A01 conveyor right safety alarm', '2023-12-08 08:58:27', '2023-12-08 08:58:30');
INSERT INTO `alarmmg` VALUES (1607, 'A01 conveyor right safety alarm', '2023-12-08 08:58:39', '2023-12-08 08:58:42');
INSERT INTO `alarmmg` VALUES (1608, '1# buffer safety alarm', '2023-12-08 08:58:39', '2023-12-08 09:00:30');
INSERT INTO `alarmmg` VALUES (1609, 'B01 VFD error', '2023-12-08 08:58:40', '2023-12-08 08:58:42');
INSERT INTO `alarmmg` VALUES (1610, 'A01 VFD error', '2023-12-08 08:58:40', '2023-12-08 08:58:42');
INSERT INTO `alarmmg` VALUES (1611, 'A01 servo turn error', '2023-12-08 08:58:52', '2023-12-08 08:59:36');
INSERT INTO `alarmmg` VALUES (1612, 'A02 servo turn error', '2023-12-08 08:58:52', '2023-12-08 08:59:36');
INSERT INTO `alarmmg` VALUES (1613, 'A01 servo travel error', '2023-12-08 08:59:19', '2023-12-08 08:59:36');
INSERT INTO `alarmmg` VALUES (1614, 'A01 conveyor right safety alarm', '2023-12-08 08:59:19', '2023-12-08 09:00:28');
INSERT INTO `alarmmg` VALUES (1615, 'A02 servo travel error', '2023-12-08 08:59:22', '2023-12-08 08:59:36');
INSERT INTO `alarmmg` VALUES (1616, 'A01 conveyor right safety alarm', '2023-12-08 09:02:34', '2023-12-08 09:02:37');
INSERT INTO `alarmmg` VALUES (1617, 'A01 conveyor right safety alarm', '2023-12-08 09:02:46', '2023-12-08 09:02:48');
INSERT INTO `alarmmg` VALUES (1618, 'A01 servo turn error', '2023-12-08 09:03:01', '2023-12-08 09:03:42');
INSERT INTO `alarmmg` VALUES (1619, 'A02 servo turn error', '2023-12-08 09:03:01', '2023-12-08 09:03:31');
INSERT INTO `alarmmg` VALUES (1620, 'A02 servo travel error', '2023-12-08 09:03:25', '2023-12-08 09:03:31');
INSERT INTO `alarmmg` VALUES (1621, 'A01 servo travel error', '2023-12-08 09:03:28', '2023-12-08 09:03:31');
INSERT INTO `alarmmg` VALUES (1622, 'A01 conveyor right safety alarm', '2023-12-08 09:03:28', '2023-12-08 09:04:06');
INSERT INTO `alarmmg` VALUES (1623, 'A02 conveyor Left safety alarm', '2023-12-08 09:06:48', '2023-12-08 09:06:50');
INSERT INTO `alarmmg` VALUES (1624, '2# buffer safety alarm', '2023-12-08 09:06:48', '2023-12-08 09:06:50');
INSERT INTO `alarmmg` VALUES (1625, 'A02 conveyor Left safety alarm', '2023-12-08 09:07:18', '2023-12-08 09:07:21');
INSERT INTO `alarmmg` VALUES (1626, 'D03 VFD error', '2023-12-08 09:07:20', '2023-12-08 09:07:21');
INSERT INTO `alarmmg` VALUES (1627, 'A02 VFD error', '2023-12-08 09:07:20', '2023-12-08 09:07:21');
INSERT INTO `alarmmg` VALUES (1628, 'A01 servo turn error', '2023-12-08 09:07:53', '2023-12-08 09:08:10');
INSERT INTO `alarmmg` VALUES (1629, 'A02 servo turn error', '2023-12-08 09:07:53', '2023-12-08 09:08:08');
INSERT INTO `alarmmg` VALUES (1630, 'A01 servo travel error', '2023-12-08 09:08:01', '2023-12-08 09:08:08');
INSERT INTO `alarmmg` VALUES (1631, 'A02 conveyor Left safety alarm', '2023-12-08 09:08:01', '2023-12-08 09:11:19');
INSERT INTO `alarmmg` VALUES (1632, 'A02 servo travel error', '2023-12-08 09:08:03', '2023-12-08 09:08:08');
INSERT INTO `alarmmg` VALUES (1633, 'A02 conveyor Left safety alarm', '2023-12-08 09:16:57', '2023-12-08 09:17:00');
INSERT INTO `alarmmg` VALUES (1634, 'A02 conveyor Left safety alarm', '2023-12-08 09:17:27', '2023-12-08 09:17:30');
INSERT INTO `alarmmg` VALUES (1635, 'A01 servo turn error', '2023-12-08 09:17:54', '2023-12-08 09:18:23');
INSERT INTO `alarmmg` VALUES (1636, 'A02 servo turn error', '2023-12-08 09:17:54', '2023-12-08 09:18:14');
INSERT INTO `alarmmg` VALUES (1637, 'A02 servo travel error', '2023-12-08 09:18:10', '2023-12-08 09:18:14');
INSERT INTO `alarmmg` VALUES (1638, 'A02 conveyor Left safety alarm', '2023-12-08 09:18:10', '2023-12-08 09:18:37');
INSERT INTO `alarmmg` VALUES (1639, 'A01 servo travel error', '2023-12-08 09:18:12', '2023-12-08 09:18:14');
INSERT INTO `alarmmg` VALUES (1640, 'A02 servo turn error', '2023-12-08 09:18:15', '2023-12-08 09:18:18');
INSERT INTO `alarmmg` VALUES (1641, 'A01 conveyor right safety alarm', '2023-12-08 09:37:04', '2023-12-08 09:37:08');
INSERT INTO `alarmmg` VALUES (1642, 'A01 servo turn error', '2023-12-08 09:45:50', '2023-12-08 09:46:38');
INSERT INTO `alarmmg` VALUES (1643, 'A02 servo turn error', '2023-12-08 09:45:50', '2023-12-08 09:46:38');
INSERT INTO `alarmmg` VALUES (1644, 'A02 servo travel error', '2023-12-08 09:46:17', '2023-12-08 09:46:37');
INSERT INTO `alarmmg` VALUES (1645, 'A01 servo travel error', '2023-12-08 09:46:25', '2023-12-08 09:46:37');
INSERT INTO `alarmmg` VALUES (1646, 'More glass than known', '2023-12-08 09:47:13', '2023-12-08 09:57:18');
INSERT INTO `alarmmg` VALUES (1647, 'A01 servo turn error', '2023-12-08 09:57:18', '2023-12-08 09:57:22');
INSERT INTO `alarmmg` VALUES (1648, 'A02 servo turn error', '2023-12-08 09:57:18', '2023-12-08 09:57:22');
INSERT INTO `alarmmg` VALUES (1649, 'A01 servo turn error', '2023-12-08 09:57:43', '2023-12-08 09:58:47');
INSERT INTO `alarmmg` VALUES (1650, 'A02 servo turn error', '2023-12-08 09:57:43', '2023-12-08 09:58:47');
INSERT INTO `alarmmg` VALUES (1651, 'A01 servo travel error', '2023-12-08 09:58:14', '2023-12-08 09:58:45');
INSERT INTO `alarmmg` VALUES (1652, 'less glass than known', '2023-12-08 10:33:05', '2023-12-08 10:40:57');
INSERT INTO `alarmmg` VALUES (1653, 'D01 VFD error', '2023-12-08 10:41:52', '2023-12-08 10:42:21');
INSERT INTO `alarmmg` VALUES (1654, 'D02 VFD error', '2023-12-08 10:41:52', '2023-12-08 10:42:21');
INSERT INTO `alarmmg` VALUES (1655, 'D03 VFD error', '2023-12-08 10:41:52', '2023-12-08 10:42:21');
INSERT INTO `alarmmg` VALUES (1656, 'D04 VFD error', '2023-12-08 10:41:52', '2023-12-08 10:42:21');
INSERT INTO `alarmmg` VALUES (1657, 'D05 VFD error', '2023-12-08 10:41:52', '2023-12-08 10:42:21');
INSERT INTO `alarmmg` VALUES (1658, 'D06 VFD error', '2023-12-08 10:41:52', '2023-12-08 10:42:21');
INSERT INTO `alarmmg` VALUES (1659, 'B01 VFD error', '2023-12-08 10:41:52', '2023-12-08 10:42:21');
INSERT INTO `alarmmg` VALUES (1660, 'B02 VFD error', '2023-12-08 10:41:52', '2023-12-08 10:42:21');
INSERT INTO `alarmmg` VALUES (1661, 'A01 servo travel error', '2023-12-08 10:41:52', '2023-12-08 10:42:20');
INSERT INTO `alarmmg` VALUES (1662, 'A02 servo travel error', '2023-12-08 10:41:52', '2023-12-08 10:42:21');
INSERT INTO `alarmmg` VALUES (1663, 'A01 servo turn error', '2023-12-08 10:42:29', '2023-12-08 10:43:17');
INSERT INTO `alarmmg` VALUES (1664, 'A02 servo turn error', '2023-12-08 10:42:29', '2023-12-08 10:43:17');
INSERT INTO `alarmmg` VALUES (1665, 'A02 servo travel error', '2023-12-08 10:43:01', '2023-12-08 10:43:16');
INSERT INTO `alarmmg` VALUES (1666, 'less glass than known', '2023-12-08 10:46:25', '2023-12-08 10:49:17');
INSERT INTO `alarmmg` VALUES (1667, 'A01 conveyor right safety alarm', '2023-12-08 11:02:49', '2023-12-08 11:02:51');
INSERT INTO `alarmmg` VALUES (1668, 'A01 conveyor right safety alarm', '2023-12-08 11:03:01', '2023-12-08 11:03:03');
INSERT INTO `alarmmg` VALUES (1669, '2# buffer safety alarm', '2023-12-08 11:03:03', '2023-12-08 11:10:41');
INSERT INTO `alarmmg` VALUES (1670, 'More glass than known', '2023-12-08 11:15:18', '2023-12-08 11:17:01');
INSERT INTO `alarmmg` VALUES (1671, '1# buffer safety alarm', '2023-12-08 11:16:30', '2023-12-08 11:16:31');
INSERT INTO `alarmmg` VALUES (1672, 'A01 servo turn error', '2023-12-08 11:17:02', '2023-12-08 11:18:24');
INSERT INTO `alarmmg` VALUES (1673, 'A02 servo turn error', '2023-12-08 11:17:02', '2023-12-08 11:18:24');
INSERT INTO `alarmmg` VALUES (1674, 'A01 servo travel error', '2023-12-08 11:17:34', '2023-12-08 11:18:23');
INSERT INTO `alarmmg` VALUES (1675, 'A02 servo travel error', '2023-12-08 11:17:34', '2023-12-08 11:18:23');
INSERT INTO `alarmmg` VALUES (1676, 'A01 conveyor right safety alarm', '2023-12-08 11:21:07', '2023-12-08 11:21:10');
INSERT INTO `alarmmg` VALUES (1677, 'More glass than known', '2023-12-08 11:21:14', '2023-12-08 11:22:33');
INSERT INTO `alarmmg` VALUES (1678, 'A01 servo turn error', '2023-12-08 13:51:58', '2023-12-08 13:52:37');
INSERT INTO `alarmmg` VALUES (1679, 'A02 servo turn error', '2023-12-08 13:51:58', '2023-12-08 13:52:37');
INSERT INTO `alarmmg` VALUES (1680, 'A01 servo travel error', '2023-12-08 13:52:26', '2023-12-08 13:52:31');
INSERT INTO `alarmmg` VALUES (1681, 'A02 servo travel error', '2023-12-08 13:52:26', '2023-12-08 13:52:31');
INSERT INTO `alarmmg` VALUES (1682, 'A01 servo turn error', '2023-12-08 13:56:08', '2023-12-08 13:56:43');
INSERT INTO `alarmmg` VALUES (1683, 'A02 servo turn error', '2023-12-08 13:56:08', '2023-12-08 13:56:43');
INSERT INTO `alarmmg` VALUES (1684, 'A02 servo travel error', '2023-12-08 13:56:32', '2023-12-08 13:56:35');
INSERT INTO `alarmmg` VALUES (1685, 'A01 servo turn error', '2023-12-08 14:02:20', '2023-12-08 14:02:33');
INSERT INTO `alarmmg` VALUES (1686, 'A02 servo turn error', '2023-12-08 14:02:20', '2023-12-08 14:02:29');
INSERT INTO `alarmmg` VALUES (1687, 'A01 servo travel error', '2023-12-08 14:02:22', '2023-12-08 14:02:27');
INSERT INTO `alarmmg` VALUES (1688, 'A01 conveyor right safety alarm', '2023-12-08 14:04:06', '2023-12-08 14:04:09');
INSERT INTO `alarmmg` VALUES (1689, 'less glass than known', '2023-12-08 14:12:29', '2023-12-08 14:13:51');
INSERT INTO `alarmmg` VALUES (1690, 'A01 servo travel error', '2023-12-08 14:13:45', '2023-12-08 14:13:51');
INSERT INTO `alarmmg` VALUES (1691, 'A02 servo travel error', '2023-12-08 14:13:45', '2023-12-08 14:13:51');
INSERT INTO `alarmmg` VALUES (1692, 'A01 servo turn error', '2023-12-08 14:13:52', '2023-12-08 14:14:03');
INSERT INTO `alarmmg` VALUES (1693, 'A02 servo turn error', '2023-12-08 14:13:52', '2023-12-08 14:14:03');
INSERT INTO `alarmmg` VALUES (1694, '1# buffer safety alarm', '2023-12-08 14:14:57', '2023-12-08 14:15:06');
INSERT INTO `alarmmg` VALUES (1695, 'A01 servo turn error', '2023-12-08 14:15:58', '2023-12-08 14:16:30');
INSERT INTO `alarmmg` VALUES (1696, 'A02 servo turn error', '2023-12-08 14:15:58', '2023-12-08 14:16:31');
INSERT INTO `alarmmg` VALUES (1697, 'A01 servo travel error', '2023-12-08 14:16:17', '2023-12-08 14:16:18');
INSERT INTO `alarmmg` VALUES (1698, 'A02 servo travel error', '2023-12-08 14:16:17', '2023-12-08 14:16:18');
INSERT INTO `alarmmg` VALUES (1699, 'A01 conveyor right safety alarm', '2023-12-08 14:20:24', '2023-12-08 14:20:26');
INSERT INTO `alarmmg` VALUES (1700, 'less glass than known', '2023-12-08 14:20:37', '2023-12-08 14:21:58');
INSERT INTO `alarmmg` VALUES (1701, 'A01 servo turn error', '2023-12-08 14:21:58', '2023-12-08 14:22:34');
INSERT INTO `alarmmg` VALUES (1702, 'A02 servo turn error', '2023-12-08 14:21:58', '2023-12-08 14:22:37');
INSERT INTO `alarmmg` VALUES (1703, 'A01 servo travel error', '2023-12-08 14:22:25', '2023-12-08 14:22:33');
INSERT INTO `alarmmg` VALUES (1704, 'A02 servo travel error', '2023-12-08 14:22:27', '2023-12-08 14:22:33');
INSERT INTO `alarmmg` VALUES (1705, 'less glass than known', '2023-12-08 14:28:18', '2023-12-08 14:29:07');
INSERT INTO `alarmmg` VALUES (1706, 'A01 servo turn error', '2023-12-08 14:29:08', '2023-12-08 14:30:26');
INSERT INTO `alarmmg` VALUES (1707, 'A02 servo turn error', '2023-12-08 14:29:08', '2023-12-08 14:30:26');
INSERT INTO `alarmmg` VALUES (1708, 'less glass than known', '2023-12-08 14:33:25', '2023-12-08 14:33:42');
INSERT INTO `alarmmg` VALUES (1709, 'less glass than known', '2023-12-08 14:33:43', '2023-12-08 14:33:46');
INSERT INTO `alarmmg` VALUES (1710, 'A01 servo turn error', '2023-12-08 14:33:47', '2023-12-08 14:34:27');
INSERT INTO `alarmmg` VALUES (1711, 'A02 servo turn error', '2023-12-08 14:33:47', '2023-12-08 14:34:27');
INSERT INTO `alarmmg` VALUES (1712, 'A02 servo travel error', '2023-12-08 14:34:21', '2023-12-08 14:34:24');
INSERT INTO `alarmmg` VALUES (1713, 'A01 servo travel error', '2023-12-08 14:34:23', '2023-12-08 14:34:24');
INSERT INTO `alarmmg` VALUES (1714, 'less glass than known', '2023-12-08 14:35:31', '2023-12-08 14:36:20');
INSERT INTO `alarmmg` VALUES (1715, 'A01 servo turn error', '2023-12-08 14:36:20', '2023-12-08 14:37:04');
INSERT INTO `alarmmg` VALUES (1716, 'A02 servo turn error', '2023-12-08 14:36:20', '2023-12-08 14:37:04');
INSERT INTO `alarmmg` VALUES (1717, 'A01 servo turn error', '2023-12-08 14:40:35', '2023-12-08 14:41:16');
INSERT INTO `alarmmg` VALUES (1718, 'A02 servo turn error', '2023-12-08 14:40:35', '2023-12-08 14:41:16');
INSERT INTO `alarmmg` VALUES (1719, 'A01 servo travel error', '2023-12-08 14:41:05', '2023-12-08 14:41:08');
INSERT INTO `alarmmg` VALUES (1720, 'less glass than known', '2023-12-08 15:03:34', '2023-12-08 15:04:26');
INSERT INTO `alarmmg` VALUES (1721, 'A02 conveyor Left safety alarm', '2023-12-08 15:10:39', '2023-12-08 15:10:42');
INSERT INTO `alarmmg` VALUES (1722, '2# buffer safety alarm', '2023-12-08 15:10:39', '2023-12-08 15:10:42');
INSERT INTO `alarmmg` VALUES (1723, 'less glass than known', '2023-12-08 15:10:51', '2023-12-08 15:12:08');
INSERT INTO `alarmmg` VALUES (1724, 'A01 servo turn error', '2023-12-08 15:12:30', '2023-12-08 15:13:20');
INSERT INTO `alarmmg` VALUES (1725, 'A02 servo turn error', '2023-12-08 15:12:30', '2023-12-08 15:13:01');
INSERT INTO `alarmmg` VALUES (1726, 'A02 servo turn error', '2023-12-08 15:13:02', '2023-12-08 15:13:20');
INSERT INTO `alarmmg` VALUES (1727, 'A02 conveyor Left safety alarm', '2023-12-08 15:14:13', '2023-12-08 15:14:55');
INSERT INTO `alarmmg` VALUES (1728, 'More glass than known', '2023-12-08 15:14:14', '2023-12-08 15:16:56');
INSERT INTO `alarmmg` VALUES (1729, 'B01 VFD error', '2023-12-08 15:14:54', '2023-12-08 15:14:55');
INSERT INTO `alarmmg` VALUES (1730, '1# buffer safety alarm', '2023-12-08 15:16:13', '2023-12-08 15:16:24');
INSERT INTO `alarmmg` VALUES (1731, 'A01 servo turn error', '2023-12-08 15:16:56', '2023-12-08 15:18:54');
INSERT INTO `alarmmg` VALUES (1732, 'A02 servo turn error', '2023-12-08 15:16:56', '2023-12-08 15:18:54');
INSERT INTO `alarmmg` VALUES (1733, 'A01 servo travel error', '2023-12-08 15:17:29', '2023-12-08 15:18:54');
INSERT INTO `alarmmg` VALUES (1734, 'A02 servo travel error', '2023-12-08 15:17:29', '2023-12-08 15:18:54');
INSERT INTO `alarmmg` VALUES (1735, 'A01 servo turn error', '2023-12-08 15:20:41', '2023-12-08 15:21:22');
INSERT INTO `alarmmg` VALUES (1736, 'A02 servo turn error', '2023-12-08 15:20:41', '2023-12-08 15:21:22');
INSERT INTO `alarmmg` VALUES (1737, 'A02 servo travel error', '2023-12-08 15:21:11', '2023-12-08 15:21:14');
INSERT INTO `alarmmg` VALUES (1738, 'A01 servo turn error', '2023-12-08 15:23:23', '2023-12-08 15:24:02');
INSERT INTO `alarmmg` VALUES (1739, 'A02 servo turn error', '2023-12-08 15:23:23', '2023-12-08 15:24:01');
INSERT INTO `alarmmg` VALUES (1740, 'A01 servo travel error', '2023-12-08 15:23:55', '2023-12-08 15:23:59');
INSERT INTO `alarmmg` VALUES (1741, 'A02 servo turn error', '2023-12-08 15:24:02', '2023-12-08 15:24:03');
-- ----------------------------
-- Table structure for car_position
@@ -208,7 +471,7 @@
  `create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
  `update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '商品分类' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '商品分类' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of category
@@ -252,7 +515,7 @@
  `last_product_count_date` date NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE INDEX `device_id_idx`(`device_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 46 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 47 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of device
@@ -283,7 +546,7 @@
  `height` decimal(10, 2) NULL DEFAULT NULL,
  `Conversionrate` varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of glass
@@ -325,7 +588,7 @@
INSERT INTO `menu_list` VALUES (51, 2, '设备状态', NULL, 51, 'Electrical/State', 1, '2023-08-25 13:29:13', '2023-09-11 17:07:08');
INSERT INTO `menu_list` VALUES (52, 2, '开关控制', NULL, 52, 'Electrical/Action', 1, '2023-08-25 13:29:18', '2023-09-12 17:02:54');
INSERT INTO `menu_list` VALUES (53, 2, '参数下发', NULL, 53, 'Electrical/Servomanual', 1, '2023-08-25 13:29:22', '2023-12-07 09:10:42');
INSERT INTO `menu_list` VALUES (54, 2, 'IO状态', NULL, 53, 'Electrical/Sign', 1, '2023-08-25 13:29:22', '2023-09-11 17:06:16');
INSERT INTO `menu_list` VALUES (54, 2, 'IO状态', NULL, 54, 'Electrical/Sign', 1, '2023-08-25 13:29:22', '2023-12-08 11:35:20');
-- ----------------------------
-- Table structure for north_glass_buffer1
@@ -350,7 +613,7 @@
  `datecreated` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `FrameBarcode` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1393 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 1394 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of north_glass_buffer1
@@ -1095,7 +1358,7 @@
  `order_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '订单号',
  `state` int NULL DEFAULT NULL COMMENT '状态(0:按此订单号出片,1结束出片)',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of order_out
@@ -1117,7 +1380,7 @@
  `sequence` int NULL DEFAULT NULL COMMENT '序列',
  `position` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '铝框摆放',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 102 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 111 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of out_slice
@@ -1139,7 +1402,7 @@
  `create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
  `update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 32 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '权限' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 36 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '权限' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of permission
@@ -1167,6 +1430,7 @@
INSERT INTO `permission` VALUES (29, 'alarm:select', '报警信息查询', 1, '2021-11-28 15:07:36', '2023-08-28 15:16:24');
INSERT INTO `permission` VALUES (30, 'alarm:add', '报警信息添加', 1, '2023-08-24 08:48:53', '2023-08-28 15:16:27');
INSERT INTO `permission` VALUES (31, 'alarm:update', '报警信息修改', 1, '2023-08-24 08:49:23', '2023-08-28 15:16:29');
INSERT INTO `permission` VALUES (32, 'hom:ManuallyInfeedGlass', '上片信息', 1, '2023-12-08 11:07:18', '2023-12-08 11:07:18');
INSERT INTO `permission` VALUES (33, 'home:OutingQueue', '出片队列', 1, '2023-12-05 08:52:57', '2023-12-05 15:03:51');
INSERT INTO `permission` VALUES (34, 'home:OrderInfo', '玻璃信息', 1, '2023-12-05 08:53:18', '2023-12-05 08:53:30');
INSERT INTO `permission` VALUES (35, 'home:CageDetails', '理片笼信息', 1, '2023-12-05 14:52:28', '2023-12-05 14:52:43');
@@ -1194,8 +1458,8 @@
-- ----------------------------
-- Records of queue
-- ----------------------------
INSERT INTO `queue` VALUES (1, 'X21942610302GV', '123456', '210', '103', 610.0000, 1015.0000, 36.8125, 22.5625, 1, 0, '2023-12-07 11:21:57');
INSERT INTO `queue` VALUES (2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 2, 0, '2023-12-06 16:32:20');
INSERT INTO `queue` VALUES (1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 0, '2023-12-08 14:03:55');
INSERT INTO `queue` VALUES (2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 2, 0, '2023-12-08 14:04:09');
-- ----------------------------
-- Table structure for role
@@ -1231,52 +1495,55 @@
  `create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
  `update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 57 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色和菜单关联表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 62 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色和菜单关联表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of role_menu_list
-- ----------------------------
INSERT INTO `role_menu_list` VALUES (1, 1, 1, 1, '2021-11-28 15:10:03', '2021-11-28 15:10:03');
INSERT INTO `role_menu_list` VALUES (2, 1, 2, 1, '2021-11-28 15:10:03', '2021-11-28 15:10:03');
INSERT INTO `role_menu_list` VALUES (3, 1, 3, 1, '2021-11-28 15:10:03', '2021-11-28 15:10:03');
INSERT INTO `role_menu_list` VALUES (4, 1, 4, 1, '2021-11-28 15:10:03', '2021-11-28 15:10:03');
INSERT INTO `role_menu_list` VALUES (5, 1, 5, 1, '2021-11-28 15:10:03', '2021-11-28 15:10:03');
INSERT INTO `role_menu_list` VALUES (6, 1, 6, 1, '2021-11-28 15:10:03', '2021-11-28 15:10:03');
INSERT INTO `role_menu_list` VALUES (7, 1, 7, 1, '2021-11-28 15:10:03', '2021-11-28 15:10:03');
INSERT INTO `role_menu_list` VALUES (8, 1, 8, 1, '2021-11-28 15:10:03', '2021-11-28 15:10:03');
INSERT INTO `role_menu_list` VALUES (9, 1, 9, 1, '2021-11-28 15:10:03', '2021-11-28 15:10:03');
INSERT INTO `role_menu_list` VALUES (10, 1, 10, 1, '2021-11-28 15:10:03', '2021-11-28 15:10:03');
INSERT INTO `role_menu_list` VALUES (11, 1, 11, 1, '2021-11-28 15:10:03', '2021-11-28 15:10:03');
INSERT INTO `role_menu_list` VALUES (12, 1, 12, 1, '2021-11-28 15:10:03', '2021-11-28 15:10:03');
INSERT INTO `role_menu_list` VALUES (19, 1, 50, 1, '2023-08-24 09:13:00', '2023-08-24 09:13:00');
INSERT INTO `role_menu_list` VALUES (20, 1, 49, 1, '2023-08-24 10:08:38', '2023-08-28 15:39:54');
INSERT INTO `role_menu_list` VALUES (21, 1, 51, 1, '2023-08-24 10:08:56', '2023-08-28 15:39:54');
INSERT INTO `role_menu_list` VALUES (22, 1, 52, 1, '2023-08-24 10:08:56', '2023-08-28 15:39:54');
INSERT INTO `role_menu_list` VALUES (23, 1, 53, 1, '2023-08-24 10:08:56', '2023-08-28 15:39:54');
INSERT INTO `role_menu_list` VALUES (25, 1, 60, 1, '2023-08-25 13:05:53', '2023-08-25 13:05:53');
INSERT INTO `role_menu_list` VALUES (26, 1, 1, 1, '2023-08-28 14:29:17', '2023-08-28 15:39:54');
INSERT INTO `role_menu_list` VALUES (27, 1, 7, 1, '2023-08-28 15:11:09', '2023-08-28 15:39:54');
INSERT INTO `role_menu_list` VALUES (28, 1, 2, 1, '2023-08-28 15:14:19', '2023-08-28 15:39:54');
INSERT INTO `role_menu_list` VALUES (29, 1, 49, 1, '2023-08-28 15:14:27', '2023-08-28 15:39:54');
INSERT INTO `role_menu_list` VALUES (31, 2, 2, 1, '2023-08-28 15:14:27', '2023-08-28 15:53:34');
INSERT INTO `role_menu_list` VALUES (32, 2, 3, 1, '2023-08-28 15:14:27', '2023-08-28 15:53:34');
INSERT INTO `role_menu_list` VALUES (33, 2, 4, 1, '2023-08-28 15:14:27', '2023-08-28 15:53:34');
INSERT INTO `role_menu_list` VALUES (37, 2, 8, 1, '2023-08-28 15:14:27', '2023-08-28 15:53:34');
INSERT INTO `role_menu_list` VALUES (38, 2, 9, 1, '2023-08-28 15:14:27', '2023-08-28 15:53:34');
INSERT INTO `role_menu_list` VALUES (39, 2, 10, 1, '2023-08-28 15:14:27', '2023-08-28 15:53:34');
INSERT INTO `role_menu_list` VALUES (42, 2, 50, 1, '2023-08-28 15:14:27', '2023-08-28 15:53:34');
INSERT INTO `role_menu_list` VALUES (43, 2, 49, 1, '2023-08-28 15:14:27', '2023-08-28 15:53:34');
INSERT INTO `role_menu_list` VALUES (44, 2, 51, 1, '2023-08-28 15:14:27', '2023-08-28 15:53:34');
INSERT INTO `role_menu_list` VALUES (45, 2, 52, 1, '2023-08-28 15:14:27', '2023-08-28 15:53:34');
INSERT INTO `role_menu_list` VALUES (46, 2, 53, 1, '2023-08-28 15:14:27', '2023-08-28 15:53:34');
INSERT INTO `role_menu_list` VALUES (47, 2, 60, 1, '2023-08-28 15:14:27', '2023-08-28 15:53:34');
INSERT INTO `role_menu_list` VALUES (50, 2, 2, 1, '2023-08-28 15:14:27', '2023-08-28 15:53:34');
INSERT INTO `role_menu_list` VALUES (51, 2, 49, 1, '2023-08-28 15:14:27', '2023-08-28 15:53:34');
INSERT INTO `role_menu_list` VALUES (52, 2, 1, 1, '2023-08-30 16:28:57', '2023-08-30 16:28:57');
INSERT INTO `role_menu_list` VALUES (53, 2, 7, 1, '2023-08-30 16:29:05', '2023-08-30 16:29:05');
INSERT INTO `role_menu_list` VALUES (54, 1, 9, 1, '2023-09-08 10:55:54', '2023-09-08 11:02:55');
INSERT INTO `role_menu_list` VALUES (55, 1, 8, 1, '2023-09-08 10:56:45', '2023-09-08 11:01:43');
INSERT INTO `role_menu_list` VALUES (56, 2, 54, 1, '2023-09-11 17:09:17', '2023-09-11 17:09:24');
INSERT INTO `role_menu_list` VALUES (1, 1, 1, 1, '2021-11-28 15:10:03', '2023-12-08 11:55:22');
INSERT INTO `role_menu_list` VALUES (2, 1, 2, 1, '2021-11-28 15:10:03', '2023-12-08 11:55:22');
INSERT INTO `role_menu_list` VALUES (3, 1, 3, 1, '2021-11-28 15:10:03', '2023-12-08 11:55:22');
INSERT INTO `role_menu_list` VALUES (4, 1, 4, 1, '2021-11-28 15:10:03', '2023-12-08 11:55:22');
INSERT INTO `role_menu_list` VALUES (5, 1, 5, 1, '2021-11-28 15:10:03', '2023-12-08 11:55:22');
INSERT INTO `role_menu_list` VALUES (6, 1, 6, 1, '2021-11-28 15:10:03', '2023-12-08 11:55:22');
INSERT INTO `role_menu_list` VALUES (7, 1, 7, 1, '2021-11-28 15:10:03', '2023-12-08 11:55:22');
INSERT INTO `role_menu_list` VALUES (8, 1, 8, 1, '2021-11-28 15:10:03', '2023-12-08 11:55:22');
INSERT INTO `role_menu_list` VALUES (9, 1, 9, 1, '2021-11-28 15:10:03', '2023-12-08 11:55:22');
INSERT INTO `role_menu_list` VALUES (10, 1, 10, 1, '2021-11-28 15:10:03', '2023-12-08 11:55:22');
INSERT INTO `role_menu_list` VALUES (11, 1, 11, 1, '2021-11-28 15:10:03', '2023-12-08 11:55:22');
INSERT INTO `role_menu_list` VALUES (12, 1, 12, 1, '2021-11-28 15:10:03', '2023-12-08 11:55:22');
INSERT INTO `role_menu_list` VALUES (19, 1, 50, 1, '2023-08-24 09:13:00', '2023-12-08 11:55:22');
INSERT INTO `role_menu_list` VALUES (20, 1, 49, 1, '2023-08-24 10:08:38', '2023-12-08 11:55:22');
INSERT INTO `role_menu_list` VALUES (21, 1, 51, 1, '2023-08-24 10:08:56', '2023-12-08 11:55:22');
INSERT INTO `role_menu_list` VALUES (22, 1, 52, 1, '2023-08-24 10:08:56', '2023-12-08 11:55:22');
INSERT INTO `role_menu_list` VALUES (23, 1, 53, 1, '2023-08-24 10:08:56', '2023-12-08 11:55:22');
INSERT INTO `role_menu_list` VALUES (25, 1, 60, 1, '2023-08-25 13:05:53', '2023-12-08 11:55:22');
INSERT INTO `role_menu_list` VALUES (26, 1, 1, 1, '2023-08-28 14:29:17', '2023-12-08 11:55:22');
INSERT INTO `role_menu_list` VALUES (27, 1, 7, 1, '2023-08-28 15:11:09', '2023-12-08 11:55:22');
INSERT INTO `role_menu_list` VALUES (29, 1, 49, 1, '2023-08-28 15:14:27', '2023-12-08 11:55:22');
INSERT INTO `role_menu_list` VALUES (31, 2, 2, 1, '2023-08-28 15:14:27', '2023-12-08 14:18:20');
INSERT INTO `role_menu_list` VALUES (32, 2, 3, 1, '2023-08-28 15:14:27', '2023-12-08 14:18:20');
INSERT INTO `role_menu_list` VALUES (33, 2, 4, 1, '2023-08-28 15:14:27', '2023-12-08 14:18:20');
INSERT INTO `role_menu_list` VALUES (37, 2, 8, 1, '2023-08-28 15:14:27', '2023-12-08 14:18:20');
INSERT INTO `role_menu_list` VALUES (38, 2, 9, 1, '2023-08-28 15:14:27', '2023-12-08 14:18:20');
INSERT INTO `role_menu_list` VALUES (39, 2, 10, 1, '2023-08-28 15:14:27', '2023-12-08 14:18:20');
INSERT INTO `role_menu_list` VALUES (42, 2, 50, 1, '2023-08-28 15:14:27', '2023-12-08 14:18:20');
INSERT INTO `role_menu_list` VALUES (43, 2, 49, 1, '2023-08-28 15:14:27', '2023-12-08 14:18:20');
INSERT INTO `role_menu_list` VALUES (44, 2, 51, 1, '2023-08-28 15:14:27', '2023-12-08 14:18:20');
INSERT INTO `role_menu_list` VALUES (45, 2, 52, 1, '2023-08-28 15:14:27', '2023-12-08 14:18:20');
INSERT INTO `role_menu_list` VALUES (46, 2, 53, 1, '2023-08-28 15:14:27', '2023-12-08 14:18:20');
INSERT INTO `role_menu_list` VALUES (47, 2, 60, 1, '2023-08-28 15:14:27', '2023-12-08 14:18:20');
INSERT INTO `role_menu_list` VALUES (51, 2, 49, 1, '2023-08-28 15:14:27', '2023-12-08 14:18:20');
INSERT INTO `role_menu_list` VALUES (52, 2, 1, 1, '2023-08-30 16:28:57', '2023-12-08 14:18:20');
INSERT INTO `role_menu_list` VALUES (53, 2, 7, 1, '2023-08-30 16:29:05', '2023-12-08 14:18:20');
INSERT INTO `role_menu_list` VALUES (54, 1, 9, 1, '2023-09-08 10:55:54', '2023-12-08 11:55:27');
INSERT INTO `role_menu_list` VALUES (55, 1, 8, 1, '2023-09-08 10:56:45', '2023-12-08 11:55:27');
INSERT INTO `role_menu_list` VALUES (56, 2, 54, 1, '2023-09-11 17:09:17', '2023-12-08 11:38:39');
INSERT INTO `role_menu_list` VALUES (57, 5, 8, 1, '2023-12-08 11:32:37', '2023-12-08 11:48:14');
INSERT INTO `role_menu_list` VALUES (58, 5, 9, 1, '2023-12-08 11:32:44', '2023-12-08 11:48:14');
INSERT INTO `role_menu_list` VALUES (59, 5, 49, 1, '2023-12-08 11:33:13', '2023-12-08 11:48:14');
INSERT INTO `role_menu_list` VALUES (60, 5, 1, 1, '2023-12-08 11:47:23', '2023-12-08 11:48:14');
INSERT INTO `role_menu_list` VALUES (61, 5, 7, 1, '2023-12-08 11:47:34', '2023-12-08 11:48:14');
-- ----------------------------
-- Table structure for role_permission
@@ -1291,62 +1558,90 @@
  `update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间',
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 76 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色权限' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 108 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色权限' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of role_permission
-- ----------------------------
INSERT INTO `role_permission` VALUES (1, 1, 1, 1, '2021-11-28 15:07:54', '2023-12-05 15:46:40', 'admin');
INSERT INTO `role_permission` VALUES (2, 1, 2, 1, '2021-11-28 15:07:54', '2023-12-05 15:46:54', 'admin');
INSERT INTO `role_permission` VALUES (3, 1, 3, 1, '2021-11-28 15:07:54', '2023-12-05 15:46:54', 'admin');
INSERT INTO `role_permission` VALUES (7, 1, 7, 1, '2021-11-28 15:07:54', '2023-12-05 15:46:54', 'admin');
INSERT INTO `role_permission` VALUES (8, 1, 8, 1, '2021-11-28 15:07:54', '2023-12-05 15:46:54', 'admin');
INSERT INTO `role_permission` VALUES (9, 1, 9, 1, '2021-11-28 15:07:54', '2023-12-05 15:46:55', 'admin');
INSERT INTO `role_permission` VALUES (10, 1, 10, 1, '2021-11-28 15:07:54', '2023-12-05 15:46:54', 'admin');
INSERT INTO `role_permission` VALUES (11, 1, 11, 1, '2021-11-28 15:07:54', '2023-12-05 15:46:54', 'admin');
INSERT INTO `role_permission` VALUES (12, 1, 12, 1, '2021-11-28 15:07:54', '2023-12-05 15:46:54', 'admin');
INSERT INTO `role_permission` VALUES (13, 1, 13, 1, '2021-11-28 15:07:54', '2023-12-05 15:46:54', 'admin');
INSERT INTO `role_permission` VALUES (16, 1, 16, 1, '2021-11-28 15:07:54', '2023-12-05 15:46:54', 'admin');
INSERT INTO `role_permission` VALUES (17, 1, 17, 1, '2021-11-28 15:07:54', '2023-12-05 15:46:54', 'admin');
INSERT INTO `role_permission` VALUES (18, 1, 18, 1, '2021-11-28 15:07:54', '2023-12-05 15:46:54', 'admin');
INSERT INTO `role_permission` VALUES (19, 1, 19, 1, '2021-11-28 15:07:54', '2023-12-05 15:46:54', 'admin');
INSERT INTO `role_permission` VALUES (20, 1, 20, 1, '2021-11-28 15:07:54', '2023-12-05 15:46:54', 'admin');
INSERT INTO `role_permission` VALUES (22, 1, 22, 1, '2021-11-28 15:07:54', '2023-12-05 15:46:54', 'admin');
INSERT INTO `role_permission` VALUES (25, 1, 25, 1, '2021-11-28 15:07:54', '2023-12-05 15:46:54', 'admin');
INSERT INTO `role_permission` VALUES (26, 1, 26, 0, '2021-11-28 15:07:54', '2023-12-05 15:46:55', 'admin');
INSERT INTO `role_permission` VALUES (27, 1, 27, 1, '2021-11-28 15:07:54', '2023-12-05 15:46:55', 'admin');
INSERT INTO `role_permission` VALUES (28, 1, 28, 1, '2021-11-28 15:07:54', '2023-12-05 15:46:55', 'admin');
INSERT INTO `role_permission` VALUES (37, 2, 25, 1, '2021-11-28 16:30:57', '2023-12-05 15:46:33', 'user1');
INSERT INTO `role_permission` VALUES (38, 2, 26, 1, '2021-11-28 16:30:57', '2023-12-05 15:46:33', 'user1');
INSERT INTO `role_permission` VALUES (39, 2, 27, 1, '2021-11-28 16:30:57', '2023-12-05 15:46:33', 'user1');
INSERT INTO `role_permission` VALUES (40, 2, 28, 1, '2021-11-28 16:32:35', '2023-12-05 15:46:33', 'user1');
INSERT INTO `role_permission` VALUES (41, 2, 22, 1, '2021-11-28 19:57:35', '2023-12-05 15:46:25', 'user1');
INSERT INTO `role_permission` VALUES (42, 1, 30, 1, '2023-08-24 08:55:34', '2023-12-05 15:46:55', 'admin');
INSERT INTO `role_permission` VALUES (43, 1, 29, 1, '2023-08-24 08:56:15', '2023-12-05 15:46:55', 'admin');
INSERT INTO `role_permission` VALUES (44, 1, 31, 0, '2023-08-24 08:56:23', '2023-12-05 15:46:55', 'admin');
INSERT INTO `role_permission` VALUES (53, 2, 2, 1, '2021-11-28 15:07:54', '2023-12-05 15:46:33', 'user1');
INSERT INTO `role_permission` VALUES (54, 2, 3, 1, '2021-11-28 15:07:54', '2023-12-05 15:46:33', 'user1');
INSERT INTO `role_permission` VALUES (56, 2, 8, 1, '2021-11-28 15:07:54', '2023-12-05 15:46:33', 'user1');
INSERT INTO `role_permission` VALUES (57, 2, 9, 1, '2021-11-28 15:07:54', '2023-12-05 15:46:33', 'user1');
INSERT INTO `role_permission` VALUES (58, 2, 10, 1, '2021-11-28 15:07:54', '2023-12-05 15:46:33', 'user1');
INSERT INTO `role_permission` VALUES (61, 2, 13, 1, '2021-11-28 15:07:54', '2023-12-05 15:46:33', 'user1');
INSERT INTO `role_permission` VALUES (62, 2, 16, 1, '2021-11-28 15:07:54', '2023-12-05 15:46:33', 'user1');
INSERT INTO `role_permission` VALUES (63, 2, 17, 1, '2021-11-28 15:07:54', '2023-12-05 15:46:33', 'user1');
INSERT INTO `role_permission` VALUES (64, 2, 18, 1, '2021-11-28 15:07:54', '2023-12-05 15:46:33', 'user1');
INSERT INTO `role_permission` VALUES (65, 2, 19, 1, '2021-11-28 15:07:54', '2023-12-05 15:46:33', 'user1');
INSERT INTO `role_permission` VALUES (66, 2, 20, 1, '2021-11-28 15:07:54', '2023-12-05 15:46:33', 'user1');
INSERT INTO `role_permission` VALUES (67, 2, 22, 1, '2021-11-28 15:07:54', '2023-12-05 15:46:33', 'user1');
INSERT INTO `role_permission` VALUES (68, 2, 25, 1, '2021-11-28 15:07:54', '2023-12-05 15:46:33', 'user1');
INSERT INTO `role_permission` VALUES (69, 2, 26, 1, '2021-11-28 15:07:54', '2023-12-05 15:46:33', 'user1');
INSERT INTO `role_permission` VALUES (70, 2, 27, 1, '2021-11-28 15:07:54', '2023-12-05 15:46:33', 'user1');
INSERT INTO `role_permission` VALUES (71, 2, 28, 1, '2021-11-28 15:07:54', '2023-12-05 15:46:33', 'user1');
INSERT INTO `role_permission` VALUES (72, 2, 30, 1, '2023-08-24 08:55:34', '2023-12-05 15:46:33', 'user1');
INSERT INTO `role_permission` VALUES (73, 2, 29, 1, '2023-08-24 08:56:15', '2023-12-05 15:46:33', 'user1');
INSERT INTO `role_permission` VALUES (74, 2, 1, 1, '2023-08-30 16:29:46', '2023-12-05 15:46:33', 'user1');
INSERT INTO `role_permission` VALUES (1, 1, 1, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
INSERT INTO `role_permission` VALUES (2, 1, 2, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
INSERT INTO `role_permission` VALUES (3, 1, 3, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
INSERT INTO `role_permission` VALUES (7, 1, 7, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
INSERT INTO `role_permission` VALUES (8, 1, 8, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
INSERT INTO `role_permission` VALUES (9, 1, 9, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
INSERT INTO `role_permission` VALUES (10, 1, 10, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
INSERT INTO `role_permission` VALUES (11, 1, 11, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
INSERT INTO `role_permission` VALUES (12, 1, 12, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
INSERT INTO `role_permission` VALUES (13, 1, 13, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
INSERT INTO `role_permission` VALUES (16, 1, 16, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
INSERT INTO `role_permission` VALUES (17, 1, 17, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
INSERT INTO `role_permission` VALUES (18, 1, 18, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
INSERT INTO `role_permission` VALUES (19, 1, 19, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
INSERT INTO `role_permission` VALUES (20, 1, 20, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
INSERT INTO `role_permission` VALUES (22, 1, 22, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
INSERT INTO `role_permission` VALUES (25, 1, 25, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
INSERT INTO `role_permission` VALUES (26, 1, 26, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
INSERT INTO `role_permission` VALUES (27, 1, 27, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
INSERT INTO `role_permission` VALUES (28, 1, 28, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
INSERT INTO `role_permission` VALUES (37, 2, 25, 1, '2021-11-28 16:30:57', '2023-12-08 11:53:19', NULL);
INSERT INTO `role_permission` VALUES (38, 2, 26, 1, '2021-11-28 16:30:57', '2023-12-08 11:53:19', NULL);
INSERT INTO `role_permission` VALUES (39, 2, 27, 1, '2021-11-28 16:30:57', '2023-12-08 11:53:19', NULL);
INSERT INTO `role_permission` VALUES (40, 2, 28, 1, '2021-11-28 16:32:35', '2023-12-08 11:53:19', NULL);
INSERT INTO `role_permission` VALUES (41, 2, 22, 1, '2021-11-28 19:57:35', '2023-12-08 11:53:19', NULL);
INSERT INTO `role_permission` VALUES (42, 1, 30, 1, '2023-08-24 08:55:34', '2023-12-08 11:53:19', NULL);
INSERT INTO `role_permission` VALUES (43, 1, 29, 1, '2023-08-24 08:56:15', '2023-12-08 11:53:19', NULL);
INSERT INTO `role_permission` VALUES (44, 1, 31, 1, '2023-08-24 08:56:23', '2023-12-08 11:53:19', NULL);
INSERT INTO `role_permission` VALUES (53, 2, 2, 1, '2021-11-28 15:07:54', '2023-12-08 14:19:11', NULL);
INSERT INTO `role_permission` VALUES (54, 2, 3, 1, '2021-11-28 15:07:54', '2023-12-08 14:19:11', NULL);
INSERT INTO `role_permission` VALUES (56, 2, 8, 1, '2021-11-28 15:07:54', '2023-12-08 14:19:11', NULL);
INSERT INTO `role_permission` VALUES (57, 2, 9, 1, '2021-11-28 15:07:54', '2023-12-08 14:19:11', NULL);
INSERT INTO `role_permission` VALUES (58, 2, 10, 1, '2021-11-28 15:07:54', '2023-12-08 14:19:11', NULL);
INSERT INTO `role_permission` VALUES (61, 2, 13, 1, '2021-11-28 15:07:54', '2023-12-08 14:19:11', NULL);
INSERT INTO `role_permission` VALUES (62, 2, 16, 1, '2021-11-28 15:07:54', '2023-12-08 14:19:11', NULL);
INSERT INTO `role_permission` VALUES (63, 2, 17, 1, '2021-11-28 15:07:54', '2023-12-08 14:19:11', NULL);
INSERT INTO `role_permission` VALUES (64, 2, 18, 1, '2021-11-28 15:07:54', '2023-12-08 14:19:11', NULL);
INSERT INTO `role_permission` VALUES (65, 2, 19, 1, '2021-11-28 15:07:54', '2023-12-08 14:19:11', NULL);
INSERT INTO `role_permission` VALUES (66, 2, 20, 1, '2021-11-28 15:07:54', '2023-12-08 14:19:11', NULL);
INSERT INTO `role_permission` VALUES (67, 2, 22, 1, '2021-11-28 15:07:54', '2023-12-08 14:19:11', NULL);
INSERT INTO `role_permission` VALUES (68, 2, 25, 1, '2021-11-28 15:07:54', '2023-12-08 14:19:11', NULL);
INSERT INTO `role_permission` VALUES (69, 2, 26, 1, '2021-11-28 15:07:54', '2023-12-08 14:19:11', NULL);
INSERT INTO `role_permission` VALUES (70, 2, 27, 1, '2021-11-28 15:07:54', '2023-12-08 14:19:11', NULL);
INSERT INTO `role_permission` VALUES (71, 2, 28, 1, '2021-11-28 15:07:54', '2023-12-08 14:19:11', NULL);
INSERT INTO `role_permission` VALUES (72, 2, 30, 1, '2023-08-24 08:55:34', '2023-12-08 14:19:11', NULL);
INSERT INTO `role_permission` VALUES (73, 2, 29, 1, '2023-08-24 08:56:15', '2023-12-08 14:19:11', NULL);
INSERT INTO `role_permission` VALUES (74, 2, 1, 1, '2023-08-30 16:29:46', '2023-12-08 14:19:11', NULL);
INSERT INTO `role_permission` VALUES (75, 1, 32, 1, '2023-12-05 08:54:59', '2023-12-05 08:54:59', NULL);
INSERT INTO `role_permission` VALUES (76, 1, 33, 1, '2023-12-05 08:55:04', '2023-12-05 08:55:04', NULL);
INSERT INTO `role_permission` VALUES (77, 1, 34, 1, '2023-12-05 08:55:09', '2023-12-05 08:55:09', NULL);
INSERT INTO `role_permission` VALUES (78, 1, 35, 1, '2023-12-05 14:54:43', '2023-12-05 14:54:46', NULL);
INSERT INTO `role_permission` VALUES (79, 2, 33, 1, '2023-12-08 10:58:25', '2023-12-08 11:42:12', NULL);
INSERT INTO `role_permission` VALUES (80, 2, 34, 1, '2023-12-08 10:59:15', '2023-12-08 11:42:12', NULL);
INSERT INTO `role_permission` VALUES (81, 2, 35, 1, '2023-12-08 10:59:23', '2023-12-08 11:42:12', NULL);
INSERT INTO `role_permission` VALUES (82, 5, 33, 1, '2023-12-08 10:59:33', '2023-12-08 11:48:26', NULL);
INSERT INTO `role_permission` VALUES (83, 5, 34, 0, '2023-12-08 10:59:39', '2023-12-08 11:48:26', NULL);
INSERT INTO `role_permission` VALUES (84, 5, 35, 0, '2023-12-08 10:59:51', '2023-12-08 11:48:26', NULL);
INSERT INTO `role_permission` VALUES (85, 5, 32, 0, '2023-12-08 11:08:54', '2023-12-08 11:48:26', NULL);
INSERT INTO `role_permission` VALUES (86, 5, 1, 1, '2023-12-08 11:45:47', '2023-12-08 11:48:26', NULL);
INSERT INTO `role_permission` VALUES (87, 5, 7, 1, '2023-12-08 11:45:55', '2023-12-08 11:48:26', NULL);
INSERT INTO `role_permission` VALUES (89, 5, 2, 1, '2021-11-28 15:07:54', '2023-12-08 14:18:38', NULL);
INSERT INTO `role_permission` VALUES (90, 5, 3, 1, '2021-11-28 15:07:54', '2023-12-08 14:18:38', NULL);
INSERT INTO `role_permission` VALUES (91, 5, 8, 1, '2021-11-28 15:07:54', '2023-12-08 14:18:38', NULL);
INSERT INTO `role_permission` VALUES (92, 5, 9, 1, '2021-11-28 15:07:54', '2023-12-08 14:18:38', NULL);
INSERT INTO `role_permission` VALUES (93, 5, 10, 1, '2021-11-28 15:07:54', '2023-12-08 14:18:38', NULL);
INSERT INTO `role_permission` VALUES (94, 5, 13, 1, '2021-11-28 15:07:54', '2023-12-08 14:18:38', NULL);
INSERT INTO `role_permission` VALUES (95, 5, 16, 1, '2021-11-28 15:07:54', '2023-12-08 14:18:38', NULL);
INSERT INTO `role_permission` VALUES (96, 5, 17, 1, '2021-11-28 15:07:54', '2023-12-08 14:18:38', NULL);
INSERT INTO `role_permission` VALUES (97, 5, 18, 1, '2021-11-28 15:07:54', '2023-12-08 14:18:38', NULL);
INSERT INTO `role_permission` VALUES (98, 5, 19, 1, '2021-11-28 15:07:54', '2023-12-08 14:18:38', NULL);
INSERT INTO `role_permission` VALUES (99, 5, 20, 1, '2021-11-28 15:07:54', '2023-12-08 14:18:38', NULL);
INSERT INTO `role_permission` VALUES (100, 5, 22, 1, '2021-11-28 15:07:54', '2023-12-08 14:18:38', NULL);
INSERT INTO `role_permission` VALUES (101, 5, 25, 1, '2021-11-28 15:07:54', '2023-12-08 14:18:38', NULL);
INSERT INTO `role_permission` VALUES (102, 5, 26, 1, '2021-11-28 15:07:54', '2023-12-08 14:18:38', NULL);
INSERT INTO `role_permission` VALUES (103, 5, 27, 1, '2021-11-28 15:07:54', '2023-12-08 14:18:38', NULL);
INSERT INTO `role_permission` VALUES (104, 5, 28, 1, '2021-11-28 15:07:54', '2023-12-08 14:18:38', NULL);
INSERT INTO `role_permission` VALUES (105, 5, 30, 1, '2023-08-24 08:55:34', '2023-12-08 14:18:38', NULL);
INSERT INTO `role_permission` VALUES (106, 5, 29, 1, '2023-08-24 08:56:15', '2023-12-08 14:18:38', NULL);
INSERT INTO `role_permission` VALUES (107, 5, 1, 1, '2023-08-30 16:29:46', '2023-12-08 14:18:38', NULL);
-- ----------------------------
-- Table structure for storage_cage
@@ -1810,7 +2105,7 @@
  `cageno` int NULL DEFAULT NULL COMMENT '笼子号',
  PRIMARY KEY (`id`) USING BTREE,
  INDEX `raw_package_id1`(`raw_package_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 491 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 492 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of storage_rack
@@ -2250,7 +2545,7 @@
  `finsh_time` datetime(0) NULL DEFAULT NULL COMMENT '任务结束时间',
  `glass_id` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 43 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 67 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of storage_task
@@ -2281,23 +2576,15 @@
  `update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间',
  `dianqimima` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '操作密码',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 22 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 23 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, 0, '', 0, 1, 'admin', 'b2f0c414a5ffb6944c424bc18ae3a8a0', NULL, NULL, NULL, 1, '2023-08-25 08:58:58', '2023-09-18 20:38:44', '112');
INSERT INTO `user` VALUES (2, 1, '1-', 1, 2, 'user1', 'b2f0c414a5ffb6944c424bc18ae3a8a0', 'user1@qq.com', NULL, NULL, 1, '2021-11-28 14:31:39', '2023-11-27 16:34:51', NULL);
INSERT INTO `user` VALUES (3, 1, '1-', 1, 2, 'user2', 'f403c87893db29eb71b21905b57bbd0d', 'user2@qq.com', NULL, NULL, 1, '2021-11-28 14:31:39', '2021-11-28 15:09:36', NULL);
INSERT INTO `user` VALUES (9, 1, '1-', 1, 1, 'yttttttttttt', 'b2f0c414a5ffb6944c424bc18ae3a8a0', '666@qq.com', NULL, NULL, 1, '2023-08-23 20:35:32', '2023-08-23 20:35:32', NULL);
INSERT INTO `user` VALUES (10, 1, '1-', 1, 2, '767655555', '500637c0d48b442a3be6d4fce12e0910', NULL, NULL, NULL, 1, '2023-08-23 20:42:58', '2023-08-23 20:42:58', NULL);
INSERT INTO `user` VALUES (11, 1, '1-', 1, 5, 'uiuyiuy', 'e046c4175152aa3001d2c71c5bc1aee5', '767676767tt@qq.com', NULL, NULL, 1, '2023-08-23 20:43:42', '2023-08-23 20:43:42', NULL);
INSERT INTO `user` VALUES (13, 1, '1-', 1, 2, 'user3', '500637c0d48b442a3be6d4fce12e0910', '2265557345@qq.com', NULL, NULL, 1, '2023-08-24 09:58:40', '2023-08-24 09:58:40', NULL);
INSERT INTO `user` VALUES (15, 1, '1-', 1, 2, '99999', 'b2f0c414a5ffb6944c424bc18ae3a8a0', '2267666@qq.com', NULL, NULL, 1, '2023-08-25 09:37:05', '2023-08-28 14:37:27', NULL);
INSERT INTO `user` VALUES (16, 1, '1-', 1, 2, '5656tttt', 'b2f0c414a5ffb6944c424bc18ae3a8a0', '5454@qq.com', NULL, NULL, 1, '2023-08-28 14:17:44', '2023-08-28 14:37:24', NULL);
INSERT INTO `user` VALUES (17, 1, '1-', 1, 2, '6767ttt', 'b2f0c414a5ffb6944c424bc18ae3a8a0', '225@qq.com', NULL, NULL, 1, '2023-08-28 14:20:05', '2023-08-28 14:23:53', NULL);
INSERT INTO `user` VALUES (18, 1, '1-', 1, 2, '8989ttt', 'b2f0c414a5ffb6944c424bc18ae3a8a0', '224@qq.com', NULL, NULL, 1, '2023-08-28 14:26:17', '2023-08-28 14:37:22', NULL);
INSERT INTO `user` VALUES (19, 1, '1-', 1, 5, '8080ttt', 'b2f0c414a5ffb6944c424bc18ae3a8a0', '87@qq.com', NULL, NULL, 1, '2023-08-28 14:34:39', '2023-08-29 16:03:38', NULL);
INSERT INTO `user` VALUES (2, 1, '1-', 1, 5, 'user1', 'b2f0c414a5ffb6944c424bc18ae3a8a0', 'user1@qq.com', NULL, NULL, 1, '2021-11-28 14:31:39', '2023-11-27 16:34:51', NULL);
INSERT INTO `user` VALUES (3, 1, '1-', 1, 2, 'user2', 'b2f0c414a5ffb6944c424bc18ae3a8a0', 'user2@qq.com', NULL, NULL, 1, '2021-11-28 14:31:39', '2023-12-08 11:18:52', NULL);
INSERT INTO `user` VALUES (22, 1, '1-', 1, 5, 'user3', 'b2f0c414a5ffb6944c424bc18ae3a8a0', NULL, NULL, NULL, 1, '2023-12-08 11:40:31', '2023-12-08 11:40:31', NULL);
-- ----------------------------
-- Procedure structure for Your_Stored_Procedure