ZengTao
2024-04-29 7687eb6cc76ab8ca20b39e7567255939abc4ff66
修改进片逻辑判断,添加异常捕获
26个文件已修改
2个文件已删除
2591 ■■■■■ 已修改文件
CanadaMes-ui/src/lang/locales/en-US.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/lang/locales/zh-CN.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/home/index.vue 84 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PLCAutomaticParameterSetting.java 220 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PLCManualJog.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcHoldNew.java 176 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcInteractionState.java 145 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcLayout.java 95 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition2.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter2.java 428 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcPositioning1.java 52 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcServoManualone.java 428 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/Plcalarm.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlchomeNew.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/Plclog.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/Plcsign.java 85 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/Plcstate.java 62 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/service/JdbcConnections.java 75 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/service/OutSliceServive.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/service/SpianServiceNew.java 321 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/service/StorageCageService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/lang/locales/en-US.json
@@ -1,6 +1,6 @@
{
  "Clear":"Clear",
  "ip":"10.168.10.21",
  "ip":"localhost",
  "systemTitle": "Login System",
  "usernamePlaceholder": "Please enter username",
  "passwordPlaceholder": "Please enter password",
CanadaMes-ui/src/lang/locales/zh-CN.json
@@ -1,6 +1,6 @@
{
  "Clear":"清除",
  "ip":"10.168.10.21",
  "ip":"localhost",
  "systemTitle": "登录系统",
  "usernamePlaceholder": "请输入用户名",
  "passwordPlaceholder": "请输入密码",
CanadaMes-ui/src/views/home/index.vue
@@ -249,7 +249,7 @@
                    </label>
                </div>
            </div>
            <div style="display:flex;justify-content: space-around;width: 9zz5%;margin: 0 auto;">
            <div style="display:flex;justify-content: space-around;width: 95%;margin: 0 auto;">
                <!-- <el-input style="width:15%;" :placeholder="$t('Enter the glass barcode')" v-model="glassid1"
                    :class="ManuallyInfeedGlass == true ? 'hide' : ''"></el-input> -->
                <el-button type="primary" @click="SelectGlassByGlassIDs()" :disabled="ManuallyInfeedGlass"
@@ -257,6 +257,9 @@
                    {{ $t('Manually Infeed Glass') }}</el-button>
                <el-button type="primary" @click="showform2()" :disabled="OrderInfo"
                    :class="OrderInfo == true ? 'hide' : ''">{{ $t('Order Info')
                    }}</el-button>
                <el-button type="primary" @click="showcageinfo(1)" :disabled="OrderInfo"
                    :class="CageDetails == true ? 'hide' : ''">{{ $t('Cage Details')
                    }}</el-button>
                <el-button type="primary" @click="showform6()" :disabled="OutingQueue"
                    :class="OutingQueue == true ? 'hide' : ''">
@@ -278,7 +281,11 @@
                    <el-table-column :min-width="180" prop="glassId"
                        :label="$t('Outfeed glass barcode')"></el-table-column>
                    <el-table-column :min-width="130" prop="cage" :label="$t('Cage No')"></el-table-column>
                    <el-table-column :min-width="130" prop="cell" :label="$t('Slot No')"></el-table-column>
                    <el-table-column :min-width="130" prop="cell" :label="$t('Slot No')">
                        <template slot-scope='scope'>
                            {{ (scope.row.cage - 1) * 21 + scope.row.cell }}
                        </template>
                    </el-table-column>
                    <el-table-column :min-width="130" prop="orderId" :label="$t('Order No')"></el-table-column>
                    <el-table-column prop="orderId" :label="$t('List No')"></el-table-column>
                    <el-table-column prop="orderId" :label="$t('Box No')"></el-table-column>
@@ -299,7 +306,11 @@
                    <el-table-column :min-width="180" prop="glassId"
                        :label="$t('Infeed glass barcode')"></el-table-column>
                    <el-table-column :min-width="130" prop="cage" :label="$t('Cage No')"></el-table-column>
                    <el-table-column :min-width="130" prop="cell" :label="$t('Slot No')"></el-table-column>
                    <el-table-column :min-width="130" prop="cell" :label="$t('Slot No')">
                        <template slot-scope='scope'>
                            {{ (scope.row.cage - 1) * 21 + scope.row.cell }}
                        </template>
                    </el-table-column>
                    <el-table-column :min-width="130" prop="orderId" :label="$t('Order No')"></el-table-column>
                    <el-table-column prop="orderId" :label="$t('List No')"></el-table-column>
                    <el-table-column prop="orderId" :label="$t('Box No')"></el-table-column>
@@ -543,7 +554,11 @@
            <el-table :data="cageinfo.slice((currentPages - 1) * pagesizes, currentPages * pagesizes)" :height="700"
                border style="width: 100%;overflow: auto;">
                <el-table-column :min-width="50" prop="cage" :label="$t('Cage No')"></el-table-column>
                <el-table-column :min-width="50" prop="cell" :label="$t('Slot No')"></el-table-column>
                <el-table-column :min-width="50" prop="cell" :label="$t('Slot No')">
                    <template slot-scope='scope'>
                        {{ (scope.row.cage - 1) * 21 + scope.row.cell }}
                    </template>
                </el-table-column>
                <el-table-column :min-width="55" prop="tier" :label="$t('The Side')">
                    <template slot-scope='scope'>
                        {{
@@ -632,8 +647,8 @@
                            {{ this.isConfirm == true ? $t('Not Allow') : $t('Allow') }}</el-button>
                    </el-form-item>
                    <el-form-item>
                        {{ $t('Current State') }}:{{ this.Scanningmethod == false ? $t('Automatic') :
                        $t('Hand Movement') }}
                        {{ $t('Current State') }}:{{ this.Scanningmethod == false ? $t('Automatic') :
                $t('Hand Movement') }}
                        <el-button type="primary" @click="SwitchScanMethod()">{{ $t('Switch')
                            }}</el-button>
                    </el-form-item>
@@ -842,7 +857,11 @@
                <el-table-column prop="glasslength" :label="$t('Length')"></el-table-column>
                <el-table-column prop="glassheight" :label="$t('Width')"></el-table-column>
                <el-table-column prop="storageCage.cage" :label="$t('Cage No')"></el-table-column>
                <el-table-column prop="storageCage.cell" :label="$t('Slot No')"></el-table-column>
                <el-table-column prop="storageCage.cell" :label="$t('Slot No')">
                    <template slot-scope='scope'>
                        {{ (scope.row.cage - 1) * 21 + scope.row.cell }}
                    </template>
                </el-table-column>
                <el-table-column prop="storageCage.tier" :label="$t('The Side')">
                    <template slot-scope='scope'>
                        {{
@@ -978,12 +997,23 @@
            DeviceList: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
            GlassIdList: [],
            Scanningmethod: true,
            CurrrentGlassId: ""
            CurrrentGlassId: "",
            feedglassid:"",
            count1:0,
            count2:1
        };
    },
    created() {
        this.load();
        // setInterval(() => {
        //     if(this.count1<this.count2){
        //         this.count1=this.count2;
        //     }else{
        //         const now = new Date();
        //         console.log(now);
        //         alert("websocket停止"+now);
        //     }
        // }, 3000);
    },
    activated() {
        this.init();
@@ -1009,6 +1039,7 @@
                };
                //  浏览器端收消息,获得从服务端发送过来的文本消息
                socket.onmessage = function (msg) {
                    this.count2=this.count2+1;
                    //console.log("收到数据====" + msg.data);
                    let obj = JSON.parse(msg.data);
                    if (obj.params != null) {
@@ -1052,6 +1083,7 @@
                    }
                    //获取待确认的铝框玻璃信息
                    if (obj.AluminumFrame != null) {
                        this.AluminumFrame = obj.AluminumFrame[0];
                        if (this.dialogFormVisible6 == true) {
                            this.dialogFormVisible7 = true;
@@ -1065,6 +1097,9 @@
                        }
                    }
                    if(obj.feedglassid!=null){
                        this.feedglassid=obj.feedglassid[0];
                    }
                    // if (obj.alarmmg[0].length > 0) {
                    //     if (this.alarm.length > 0) {
@@ -1271,7 +1306,16 @@
        //手动上片
        sbumitglassid() {
            if (this.form.order != "") {
                if (this.form.height < 380 || this.form.width < 390 || this.form.height > 1810 || this.form.width > 2760) {
                let width=0;
                let height=0;
                if(this.form.glassheight<this.form.glasswidth){
                    width=this.form.glasswidth;
                    height=this.form.glassheight;
                }else{
                    height=this.form.glasswidth;
                    width=this.form.glassheight;
                }
                if (height < 380 || width < 380 || height > 1810 || width > 2760) {
                    this.$message.error(this.$t('The glass size is not within the range'));
                } else {
                    if (this.zhuangtai == true) {
@@ -1355,9 +1399,9 @@
        },
        //显示客户玻璃信息
        showform2() {
            SelectGlass(this.orderid).then(res => {
                this.GlassInfo = res.data.glass;
            });
            // SelectGlass(this.orderid).then(res => {
            //     this.GlassInfo = res.data.glass;
            // });
            this.dialogFormVisible4 = true;
        },
        //显示出片队列
@@ -1631,7 +1675,7 @@
                                this.$message.success(this.$t('Operation successful'));
                            }
                            else if (res.data.message == 400) {
                                this.$message.error(this.$t('The glass size is not within the range'));
                                this.$message.error(this.$t('There is no such slot'));
                            } else {
                                this.$message.error(this.$t('This glass ID already exists in the sorting cage'));
                            }
@@ -1902,8 +1946,18 @@
        },
        //判断玻璃是否超出范围
        Sizerange(Glass, position) {
            console.log(position);
            if (this.ManuallyInfeedGlass == false) {
                if ((Glass.glassheight < 380 || Glass.glasswidth < 390 || Glass.glassheight > 1810 || Glass.glasswidth > 2760) || (Glass.glassheight < 390 || Glass.glasswidth < 380 || Glass.glassheight > 2760 || Glass.glasswidth > 1810)) {
                let width=0;
                let height=0;
                if(Glass.glassheight<Glass.glasswidth){
                    width=Glass.glasswidth;
                    height=Glass.glassheight;
                }else{
                    height=Glass.glasswidth;
                    width=Glass.glassheight;
                }
                if (height < 380 || width < 380 || height > 1810 || width > 2760) {
                    this.$alert(this.$t('The glass size is not within the range'), this.$t('confirm'), {
                        confirmButtonText: this.$t('Yes'),
                        type: 'info',
springboot-vue3/src/main/java/com/example/springboot/component/PLCAutomaticParameterSetting.java
@@ -17,121 +17,79 @@
  // 创建一个自定义的 S7 控制器消息处理器对象
  MessageHandler customS7Control = new MessageHandler();
  public PLCAutomaticParameterSetting() throws IOException {
    config = new Configuration("config.properties");
  }
  @Override
  public void run() {
    while (this != null) {
      try {
        Thread.sleep(1000);
        // System.out.println(stt);
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
        List<Short> arraylist = S7control.getinstance().ReadWord("DB100.120", 8);
        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);
        List<String> addresses = Arrays.asList(config.getProperty("Auto.addresses").split(","));
        List<Short> arraylist2 = S7control.getinstance().readWords(addresses);
        // System.out.println("lastMessage:" + arraylist2);
        // 翻转
        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));
      // System.out.println(stt);
        JSONObject jsonObject = new JSONObject();
        // new short[]{1,1, 1, 1, 1, 1, 2, 33, 2,3, 4, 5}
        // new short[]{0,0, 0, 0, 0, 0, 0, 0, 0, 0}
      List<Short> arraylist = S7control.getinstance().ReadWord("DB100.120", 8);
      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);
      List<String> addresses = Arrays.asList(config.getProperty("Auto.addresses").split(","));
      List<Short> arraylist2 = S7control.getinstance().readWords(addresses);
      //System.out.println("lastMessage:" + arraylist2);
//翻转
      List<Short> fanzhuan2 = S7control.getinstance().ReadWord("DB100.8", 1);
      List<Short> xiaoche2 = S7control.getinstance().ReadWord("DB100.12", 1);
        jsonObject.append("params", arraylist);
        jsonObject.append("dache1", dache1);
        jsonObject.append("xiaoche", xiaoche1);
        jsonObject.append("fanzhuan", fanzhuan1);
        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());
//       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));
            // 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";
      JSONObject jsonObject = new JSONObject();
      // new short[]{1,1, 1, 1, 1, 1, 2, 33, 2,3, 4, 5}
      // new short[]{0,0, 0, 0, 0, 0, 0, 0, 0, 0}
      jsonObject.append("params", arraylist);
      jsonObject.append("dache1", dache1);
      jsonObject.append("xiaoche", xiaoche1);
      jsonObject.append("fanzhuan", fanzhuan1);
      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 (!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);
                    }
                  }
                }
              }
              System.out.println(messageArray);
              // 写入第一个地址
              customS7Control.WriteWordsToPLC(messageArray, addressList2,2);
              // 写入第二个地址
              customS7Control.WriteWordsToPLC(messageArray, addressList3,3);
              // 写入第三个地址
              customS7Control.WriteWordsToPLC(messageArray, addressList4,4);
              // 写入第四个地址
              if (!mergedList.isEmpty()) {
                S7control.getinstance().WriteWord(addressList1, mergedList);
                System.out.println("messageValue:" + mergedList + " written to PLC at address " + addressList1);
              }
              List<String> waddresses1 = Arrays.asList(config.getProperty("Auto.shusong").split(","));
              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++) {
                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);
@@ -139,7 +97,7 @@
                      try {
                        String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
                        short sValue = Short.parseShort(cleanedValue.trim());
                        mergedList2.add(sValue);
                        mergedList.add(sValue);
                      } catch (NumberFormatException e) {
                        // 如果无法解析为 short 类型,则忽略该部分
                        System.err.println("Could not parse value: " + value);
@@ -147,23 +105,63 @@
                    }
                  }
                }
                // 写入第伍个地址
                customS7Control.WriteWordsToPLC(messageArray, addressList22,8);
                // 写入第六个地址
                customS7Control.WriteWordsToPLC(messageArray, addressList33,9);
                // 写入第七个地址
                if (!mergedList2.isEmpty()) {
                  S7control.getinstance().WriteWord(waddresses1, mergedList2);
                  System.out.println("messageValue:" + mergedList2 + " written to PLC at address " + waddresses1);
                System.out.println(messageArray);
                // 写入第一个地址
                customS7Control.WriteWordsToPLC(messageArray, addressList2, 2);
                // 写入第二个地址
                customS7Control.WriteWordsToPLC(messageArray, addressList3, 3);
                // 写入第三个地址
                customS7Control.WriteWordsToPLC(messageArray, addressList4, 4);
                // 写入第四个地址
                if (!mergedList.isEmpty()) {
                  S7control.getinstance().WriteWord(addressList1, mergedList);
                  System.out.println("messageValue:" + mergedList + " written to PLC at address " + addressList1);
                }
                // 清空消息列表
                webserver.clearMessages();
                List<String> waddresses1 = Arrays.asList(config.getProperty("Auto.shusong").split(","));
                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);
                        }
                      }
                    }
                  }
                  // 写入第伍个地址
                  customS7Control.WriteWordsToPLC(messageArray, addressList22, 8);
                  // 写入第六个地址
                  customS7Control.WriteWordsToPLC(messageArray, addressList33, 9);
                  // 写入第七个地址
                  if (!mergedList2.isEmpty()) {
                    S7control.getinstance().WriteWord(waddresses1, mergedList2);
                    System.out.println("messageValue:" + mergedList2 + " written to PLC at address " + waddresses1);
                  }
                  // 清空消息列表
                  webserver.clearMessages();
                }
              }
            }
          }
          }
        }
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
    }
springboot-vue3/src/main/java/com/example/springboot/component/PLCManualJog.java
@@ -33,14 +33,7 @@
        while (this != null) {
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
           List<String> addressList21 = Arrays.asList(config.getProperty("PLCManualJog.button").split(","));
                List<String> addressList21 = Arrays.asList(config.getProperty("PLCManualJog.button").split(","));
       List<Boolean> arraylist = S7control.getinstance().readBits(addressList21);
@@ -112,6 +105,13 @@
                }
            }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java
@@ -3,17 +3,16 @@
import java.sql.SQLException;
import java.time.LocalDateTime;
import java.util.List;
import java.util.ArrayList;
import org.springframework.beans.factory.annotation.Autowired;
import com.example.springboot.service.JdbcConnections;
import com.example.springboot.service.SpianService;
import com.example.springboot.entity.StorageCage;
import com.example.springboot.entity.north_glass_buffer1;
import com.example.springboot.mapper.AlarmMapper;
import com.example.springboot.mapper.SpianMapper;
public class PlcHold extends Thread {
  private AlarmMapper alarmMapper;
  @Autowired
  private JdbcConnections jdbcConnections;
@@ -27,14 +26,9 @@
    while (this != null) {
      try {
        Thread.sleep(100);
      } catch (InterruptedException e) {
        // \\ TODO Auto-generated catch block
        e.printStackTrace();
      }
      // if (S7control.getinstance().CheckConnected() == false) {
        spianService.result=new ArrayList<>();
        Thread.sleep(300);
        // if (S7control.getinstance().CheckConnected() == false) {
      spianService = WebSocketServer.applicationContext.getBean(SpianService.class);
      spianMapper = WebSocketServer.applicationContext.getBean(SpianMapper.class);
      
@@ -48,12 +42,8 @@
      //   // TODO Auto-generated catch block
      //   e.printStackTrace();
      // }
        //spianService.selectout2("X12345610102GV");
      // 出片任务////////////////////////////////
     //spianService.selectout2("X21942613103GV");
      //        spianService.selectout2("X21942610602GV");
      List<Short> outlist = S7control.getinstance().ReadWord("DB106.20", 1); // 出片车状态
      List<Short> outlist1 = S7control.getinstance().ReadWord("DB105.18", 1); // 出片任务是否启动
@@ -89,14 +79,18 @@
          // 当有待出片的玻璃时
          if (outglassid != null) {
            // 获取该玻璃是否被禁用
            int glassdisabled = spianMapper.SelectCageGlassState(outglassid);
            // 未禁用下发任务
            if (glassdisabled == 0) {
            StorageCage glassdisabled = spianMapper.SelectCageGlassState(outglassid);
            if(glassdisabled!=null){
              // 未禁用下发任务
            if (glassdisabled.getDisabled() == 0) {
              spianService.selectout2(outglassid);
              Plchome.isQueueWarning = false;
            } else { // 禁用更改状态弹出提示
              Plchome.isQueueWarning = true;
              System.out.println("禁用" + outglassid);
            }
            }
          }
        }
@@ -120,12 +114,15 @@
        if (HB > 0) {
          // 当B01小车汇报完成时更改玻璃状态 为1
          S7control.getinstance().WriteWord("DB105.48", (short) 1);// 恢复B01小车应答改为1
          boolean yingda = spianService.listbool("DB105.48");// b01汇报
          boolean yingda = spianService.listbool("DB105.48");// b01应答
          if (yingda == true) {
            spianService.overtask(B01glassid.toString());// 完成任务
          }
          System.out.println("汇报时B01|第" + aaa + "次" + B01glassid + "应答" + yingda);
          aaa += 1;
          System.out.println("汇报时B01|"  + B01glassid + "应答" + yingda);
          Plchome.feedglassid=B01glassid;
        }else{
          S7control.getinstance().WriteWord("DB105.48", (short) 1);// 恢复B01小车应答改为1
          System.out.println("HB:|" + HB+"glassid|"+B01glassid);
        }
      }else{
@@ -136,17 +133,19 @@
      if (B02backs == true) {
        // 判断是否汇报正确的id
        int HB = spianMapper.SelectHB(B02glassid.toString());
        System.out.println("汇报时B02|" + B02glassid);
        System.out.println("huibaoshiB02ID|" + B02glassid);
        if (HB > 0) {
          // 当B02小车汇报完成时更改玻璃状态为0
          S7control.getinstance().WriteWord("DB105.50", (short) 1);// 恢复B02小车应答改为1
          System.out.println("汇报时B02ID|" + B02glassid);
          boolean yingda = spianService.listbool("DB105.50");// b02汇报
          if (yingda == true) {
         if (yingda == true) {
            spianService.overtask(B02glassid.toString());// 完成任务
          }
          System.out.println("汇报时B02|第" + aaa + "次" + B02glassid + "应答" + yingda);
          System.out.println("汇报时B02|" + B02glassid + "应答" + yingda);
          Plchome.feedglassid=B01glassid;
        }else{
          S7control.getinstance().WriteWord("DB105.50", (short) 1);// 恢复B02小车应答改为1
          System.out.println("HB:|" + HB+"glassid|"+B02glassid);
        }
      }else{
         S7control.getinstance().WriteWord("DB105.50", (short) 0);// 恢复B02小车应答改为0
@@ -159,22 +158,29 @@
      StringBuilder queueid2 = spianService.queGlassid("DB103.58", 14);
      int questate = spianMapper.Selectquecount(queueid1.toString());// 判断扫码位是否有玻璃已确认
      // queueid1.toString().isEmpty()
      //queueid1.toString().isEmpty();
      // north_glass_buffer1 glass1 = spianMapper.selectGlass(queueid1.toString());// D01的玻璃信息
      // north_glass_buffer1 glass2 = spianMapper.selectGlass(queueid2.toString());// D02玻璃信息
      north_glass_buffer1 glass1=null;
      north_glass_buffer1 glass2=null;
      north_glass_buffer1 glass1 =new north_glass_buffer1();
      north_glass_buffer1 glass2 =new north_glass_buffer1();
      try {
        glass1 = jdbcConnections.SelectGlassByGlassIdOrderIdFrameId(queueid1.toString(),"","");// D01玻璃信息
        glass2 = jdbcConnections.SelectGlassByGlassIdOrderIdFrameId(queueid2.toString(),"","");// D02玻璃信息
        if(queueid1.toString()!=""){
          glass1 = jdbcConnections.SelectGlassByGlassIdOrderIdFrameIdplchold(queueid1.toString(),"","");// D01玻璃信息
        }
        if(queueid2.toString()!=""){
          glass2 = jdbcConnections.SelectGlassByGlassIdOrderIdFrameIdplchold(queueid2.toString(),"","");// D02玻璃信息
        }
      } catch (SQLException e) {
        e.printStackTrace();
      }
      // 当扫码位玻璃id为空时 宽度为0
      if (queueid1 != null && questate == 0) {
        // 写入D01的数据到上片队列表
        if (glass1 == null) { // 当没有值时传空
        if (glass1 == null ||glass1.getordernumber()==null) { // 当没有值时传空
          spianMapper.Updatequeue(null, null, null, null, 0, null, null, null, null, 1);
        } else {
@@ -187,7 +193,7 @@
      if (queueid2 != null) {
        // 写入D02的数据到上片队列表
        if (glass2 == null) {
        if (glass2 == null ||glass2.getordernumber()==null) {
          spianMapper.Updatequeue(null, null, null, null, 0, null, null, null, null, 2);
        } else {
          spianMapper.Updatequeue(queueid2.toString(), glass2.getordernumber(), glass2.getlistnumber(),
@@ -198,11 +204,18 @@
        }
      }
      System.out.println(spianService.result);
      // 查询数据库
      // 推送到前端
      // }
      } catch (InterruptedException e) {
        // \\ TODO Auto-generated catch block
        e.printStackTrace();
      }
    }
  }
springboot-vue3/src/main/java/com/example/springboot/component/PlcHoldNew.java
File was deleted
springboot-vue3/src/main/java/com/example/springboot/component/PlcInteractionState.java
@@ -15,95 +15,88 @@
        config = new Configuration("config.properties");
    }
    // 创建一个自定义的 S7 控制器消息处理器对象
    MessageHandler customS7Control = new MessageHandler();
    @Override
    public void run() {
        while (this != null) {
            try {
                Thread.sleep(100);
                // this.readValue();
                // String PlcAddress = this.name;
                // Integer Plccount = this.count;
                List<String> addresses = Arrays
                        .asList(config.getProperty("PlcInteractionState.MESImporttask").split(","));
                List<String> arraylist = S7control.getinstance().readStringsandword(addresses);
                // System.out.println(arraylist);
                List<String> addresses2 = Arrays
                        .asList(config.getProperty("PlcInteractionState.PLCImporttask").split(","));
                List<String> arraylist2 = S7control.getinstance().readStringsandword(addresses2);
                List<String> addresses3 = Arrays
                        .asList(config.getProperty("PlcInteractionState.MESProductiontask").split(","));
                List<String> arraylist3 = S7control.getinstance().readStringsandword(addresses3);
                List<String> addresses4 = Arrays
                        .asList(config.getProperty("PlcInteractionState.PLCProductiontask").split(","));
                List<String> arraylist4 = S7control.getinstance().readStringsandword(addresses4);
                List<String> addresses5 = Arrays
                        .asList(config.getProperty("PlcInteractionState.MEStaskinformation").split(","));
                List<String> arraylist5 = S7control.getinstance().readStringsandword(addresses5);
                List<String> addresses6 = Arrays
                        .asList(config.getProperty("PlcInteractionState.MEStaskinformation2").split(","));
                List<String> arraylist6 = S7control.getinstance().readStringsandword(addresses6);
                // String[] values = { ".x11","x21 ","x21 ","x21 ","x21 ","x21"};
                // List<String> arraylist = new ArrayList<>(Arrays.asList(values));
                // String[] values2 = { ".x11 ","x21 ","x21 ","x21 ","x21 ","x21 ","x21 "};
                // List<String> arraylist2 = new ArrayList<>(Arrays.asList(values2));
                // String[] values3 = { ".x11 ","x21 ","x21 ","x21 ","x21 ","x21 "};
                // List<String> arraylist3 = new ArrayList<>(Arrays.asList(values3));
                // String[] values4 = { ".x11 ","x21 ","x21 ","x21 "};
                // List<String> arraylist4 = new ArrayList<>(Arrays.asList(values4));
                // String[] values5 = { ".x11 ","x21 ","x21 ","b02","x21 ","x21 "};
                // List<String> arraylist5 = new ArrayList<>(Arrays.asList(values5));
                //
                // String[] values6 = { "x21 ","x21 ","x21 ","x21 ","x21 ","x21 ","x21 "};
                // List<String> arraylist6 = new ArrayList<>(Arrays.asList(values6));
                JSONObject jsonObject = new JSONObject();
                // System.out.println(arraylist6);
                JSONArray jsonArray = new JSONArray();
                jsonArray.put(arraylist);
                jsonArray.put(arraylist2);
                jsonArray.put(arraylist3);
                jsonArray.put(arraylist4);
                jsonArray.put(arraylist5);
                jsonArray.put(arraylist6);
                jsonObject.put("zuhe1", jsonArray);
                // WebSocketServer sendwServer =
                // WebSocketServer.sessionMap.get("ManualonePosition");
                // if (sendwServer != null) {
                // sendwServer.sendMessage(jsonObject.toString());
                // }
                ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("InteractionState");
                if (sendwServer != null) {
                    for (WebSocketServer webserver : sendwServer) {
                        webserver.sendMessage(jsonObject.toString());
                    }
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            // this.readValue();
            // String PlcAddress = this.name;
            // Integer Plccount = this.count;
            List<String> addresses = Arrays.asList(config.getProperty("PlcInteractionState.MESImporttask").split(","));
            List<String> arraylist = S7control.getinstance().readStringsandword(addresses);
            // System.out.println(arraylist);
            List<String> addresses2 = Arrays.asList(config.getProperty("PlcInteractionState.PLCImporttask").split(","));
            List<String> arraylist2 = S7control.getinstance().readStringsandword(addresses2);
            List<String> addresses3 = Arrays.asList(config.getProperty("PlcInteractionState.MESProductiontask").split(","));
            List<String> arraylist3 = S7control.getinstance().readStringsandword(addresses3);
            List<String> addresses4 = Arrays.asList(config.getProperty("PlcInteractionState.PLCProductiontask").split(","));
            List<String> arraylist4 = S7control.getinstance().readStringsandword(addresses4);
            List<String> addresses5 = Arrays.asList(config.getProperty("PlcInteractionState.MEStaskinformation").split(","));
            List<String> arraylist5 = S7control.getinstance().readStringsandword(addresses5);
            List<String> addresses6 = Arrays.asList(config.getProperty("PlcInteractionState.MEStaskinformation2").split(","));
            List<String> arraylist6 = S7control.getinstance().readStringsandword(addresses6);
//            String[] values = { ".x11","x21 ","x21 ","x21 ","x21 ","x21"};
//   List<String> arraylist = new ArrayList<>(Arrays.asList(values));
//            String[] values2 = { ".x11 ","x21 ","x21 ","x21 ","x21 ","x21 ","x21 "};
//            List<String> arraylist2 = new ArrayList<>(Arrays.asList(values2));
//            String[] values3 = { ".x11 ","x21 ","x21 ","x21 ","x21 ","x21 "};
//            List<String> arraylist3 = new ArrayList<>(Arrays.asList(values3));
//            String[] values4 = { ".x11 ","x21 ","x21 ","x21 "};
//            List<String> arraylist4 = new ArrayList<>(Arrays.asList(values4));
//            String[] values5 = { ".x11 ","x21 ","x21 ","b02","x21 ","x21 "};
//            List<String> arraylist5 = new ArrayList<>(Arrays.asList(values5));
//
//            String[] values6 = { "x21 ","x21 ","x21 ","x21 ","x21 ","x21 ","x21 "};
//            List<String> arraylist6 = new ArrayList<>(Arrays.asList(values6));
            JSONObject jsonObject = new JSONObject();
            // System.out.println(arraylist6);
            JSONArray jsonArray = new JSONArray();
            jsonArray.put(arraylist);
            jsonArray.put(arraylist2);
            jsonArray.put(arraylist3);
            jsonArray.put(arraylist4);
            jsonArray.put(arraylist5);
            jsonArray.put(arraylist6);
            jsonObject.put("zuhe1", jsonArray);
//      WebSocketServer sendwServer = WebSocketServer.sessionMap.get("ManualonePosition");
//      if (sendwServer != null) {
//        sendwServer.sendMessage(jsonObject.toString());
//      }
            ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("InteractionState");
            if (sendwServer != null) {
                for (WebSocketServer webserver : sendwServer) {
                    webserver.sendMessage(jsonObject.toString());
                }
            }
        }
    }
}
springboot-vue3/src/main/java/com/example/springboot/component/PlcLayout.java
@@ -52,65 +52,62 @@
        while (this != null) {
            try {
                Thread.sleep(1000);
                JSONObject jsonObject = new JSONObject();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            JSONObject jsonObject = new JSONObject();
                // 注入mapper
            // 注入mapper
                homeMapper = WebSocketServer.applicationContext.getBean(HomeMapper.class);
            homeMapper = WebSocketServer.applicationContext.getBean(HomeMapper.class);
                if (S7control.getinstance().CheckConnected() == true) {
                    // 查询报警信息
                    List<alarmmg> alarmmg = homeMapper.SelectAlarmmgInfo();
                    jsonObject.append("alarmmg", alarmmg);
            if (S7control.getinstance().CheckConnected() == true) {
                // 查询报警信息
            List<alarmmg> alarmmg = homeMapper.SelectAlarmmgInfo();
            jsonObject.append("alarmmg", alarmmg);
                    // 复位倒计时
                    // 地址104.9.6
                    List<Boolean> countdown = S7control.getinstance().ReadBits("DB104.9.6", 1);
                    for (Boolean countdowns : countdown) {
                        jsonObject.append("countdown", countdowns);
                    }
                    // jsonObject.append("countdown", true);
                    // 复位完成信号ss
                    List<Boolean> resetss = S7control.getinstance().ReadBits("DB103.284", 1);
                    for (Boolean reset : resetss) {
                        jsonObject.append("reset", reset);
                    }
                // 复位倒计时
                // 地址104.9.6
                List<Boolean> countdown = S7control.getinstance().ReadBits("DB104.9.6", 1);
                for (Boolean countdowns : countdown) {
                    jsonObject.append("countdown", countdowns);
                }
                // jsonObject.append("countdown", true);
                // 复位完成信号ss
                List<Boolean> resetss = S7control.getinstance().ReadBits("DB103.284", 1);
                for (Boolean reset : resetss) {
                    jsonObject.append("reset", reset);
                }
                // 是否急停
                List<Boolean> emergencystops = S7control.getinstance().ReadBits("DB104.5.1", 1);
                for (Boolean emergencystop : emergencystops) {
                    jsonObject.append("emergencystop", emergencystop);
                }
            }
            // jsonObject.append("params", new short[] { 30, 40, });
            ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("Layout");
            if (sendwServer != null) {
                for (WebSocketServer webserver : sendwServer) {
                    webserver.sendMessage(jsonObject.toString());
                    if (webserver != null) {
                        List<String> messages = webserver.getMessages();
                        if (!messages.isEmpty()) {
                            // // 将最后一个消息转换为整数类型的列表
                            webserver.clearMessages();
                        }
                    // 是否急停
                    List<Boolean> emergencystops = S7control.getinstance().ReadBits("DB104.5.1", 1);
                    for (Boolean emergencystop : emergencystops) {
                        jsonObject.append("emergencystop", emergencystop);
                    }
                }
                // jsonObject.append("params", new short[] { 30, 40, });
                ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("Layout");
                if (sendwServer != null) {
                    for (WebSocketServer webserver : sendwServer) {
                        webserver.sendMessage(jsonObject.toString());
                        if (webserver != null) {
                            List<String> messages = webserver.getMessages();
                            if (!messages.isEmpty()) {
                                // // 将最后一个消息转换为整数类型的列表
                                webserver.clearMessages();
                            }
                        }
                    }
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition.java
@@ -54,11 +54,7 @@
        while (this != null) {
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            // this.readValue();
                // this.readValue();
            // String PlcAddress = this.name;
            // Integer Plccount = this.count;
@@ -245,6 +241,11 @@
                    }
                }
            }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition2.java
@@ -52,11 +52,7 @@
        while (this != null) {
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            // this.readValue();
                // this.readValue();
            // String PlcAddress = this.name;
            // Integer Plccount = this.count;
@@ -215,6 +211,10 @@
                    }
                }
            }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter2.java
@@ -14,7 +14,6 @@
import java.util.Collections;
import java.util.List;
public class PlcParameter2 extends Thread {
    @Autowired
    StorageCageService storageCageService;
@@ -22,7 +21,6 @@
    MessageHandler customS7Control = new MessageHandler();
    // 用于存储应用程序的配置信息
    private Configuration config;
    public PlcParameter2() throws IOException {
        config = new Configuration("config.properties");
@@ -33,251 +31,251 @@
        while (this != null) {
            try {
                Thread.sleep(1000);
                storageCageService = WebSocketServer.applicationContext.getBean(StorageCageService.class);
                // id
                List<String> addressList1 = Arrays.asList(config.getProperty("Parameter2.id").split(","));
                List<String> paramlist = S7control.getinstance().readStrings(addressList1);
                // System.out.println(paramlist);
                // 手动状态
                List<String> addresses = Arrays.asList(config.getProperty("Parameter2.state").split(","));
                List<Short> data = S7control.getinstance().readWords(addresses);
                // 清除id
                List<String> addressList0 = Arrays.asList(config.getProperty("Parameter2.cleanid").split(","));
                // 扫码枪
                List<Boolean> data2 = S7control.getinstance().readBits(addressList0);
                List<String> addressList3 = Arrays.asList(config.getProperty("Parameter2.scanner").split(","));
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            storageCageService = WebSocketServer.applicationContext.getBean(StorageCageService.class);
            //  id
            List<String> addressList1 = Arrays.asList(config.getProperty("Parameter2.id").split(","));
            List<String> paramlist = S7control.getinstance().readStrings(addressList1);
            // System.out.println(paramlist);
            //手动状态
            List<String> addresses = Arrays.asList(config.getProperty("Parameter2.state").split(","));
            List<Short> data = S7control.getinstance().readWords(addresses);
            //清除id
            List<String> addressList0 = Arrays.asList(config.getProperty("Parameter2.cleanid").split(","));
            // 扫码枪
            List<Boolean> data2 = S7control.getinstance().readBits(addressList0);
            List<String> addressList3 = Arrays.asList(config.getProperty("Parameter2.scanner").split(","));
                // 急停按钮
                List<String> niuanaddressList3 = Arrays.asList(config.getProperty("Parameter2.stop").split(","));
                List<String> timeout = Arrays.asList(config.getProperty("Parameter2.timeout").split(","));
                String timeout2 = config.getProperty("Parameter2.timeout");
//急停按钮
            List<String> niuanaddressList3 = Arrays.asList(config.getProperty("Parameter2.stop").split(","));
            List<String> timeout = Arrays.asList(config.getProperty("Parameter2.timeout").split(","));
            String timeout2 = config.getProperty("Parameter2.timeout");
                Long readtimeout = S7control.getinstance().readtime(timeout2);
                List<Boolean> anniuread = S7control.getinstance().readBits(niuanaddressList3);
                List<String> data3 = S7control.getinstance().readStrings(addressList3);
                // A01 A02 B01 B02
                List<String> addresses4 = Arrays.asList(config.getProperty("Parameter2.Currentcell").split(","));
                List<Short> data4 = S7control.getinstance().readWords(addresses4);
                // System.out.println(data);
                // List<Long> TIME2 =
                // Collections.singletonList(S7control.getinstance().readtime("DB100.194"));
                // System.out.println("addressList:" + TIME2);
            Long readtimeout = S7control.getinstance().readtime(timeout2);
            List<Boolean> anniuread = S7control.getinstance().readBits(niuanaddressList3);
            List<String> data3 = S7control.getinstance().readStrings(addressList3);
// A01 A02 B01 B02
            List<String> addresses4 = Arrays.asList(config.getProperty("Parameter2.Currentcell").split(","));
            List<Short> data4 = S7control.getinstance().readWords(addresses4);
            //System.out.println(data);
//      List<Long> TIME2 = Collections.singletonList(S7control.getinstance().readtime("DB100.194"));
//      System.out.println("addressList:" + TIME2);
                //
                //
                // String[] values6 = { ".x1 ","x2
                // ","x3",";;x4","x5","x6","x7","x8","x9","x10","x11"};
                // List<String> paramlist = new ArrayList<>(Arrays.asList(values6));
                // Short[] values1 = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1};
                // List<Short> data = new ArrayList<>(Arrays.asList(values1));
                // Boolean[] value4 = { false, false, false, false, false, false, false, false,
                // false,
                // false};
                // List<Boolean> data2 = new ArrayList<>(Arrays.asList(value4));
                // String[] values3 = { ".x11 ","x21 "};
                // List<String> data3 = new ArrayList<>(Arrays.asList(values3));
                // Short[] values4 = { 2,2,3,4};
                // List<Short> data4 = new ArrayList<>(Arrays.asList(values4));
                //
                //
                // JSONObject jsonObject = new JSONObject();
                // short[] params = new short[data2.size()];
                // for (int i = 0; i < data2.size(); i++) {
                // boolean value = data2.get(i);
                // params[i] = value ? (short) 1 : (short) 0;
                // }
                ////
                // short[] anniuparams = new short[anniuread.size()];
                // for (int i = 0; i < anniuread.size(); i++) {
                // boolean value = anniuread.get(i);
                // anniuparams[i] = value ? (short) 1 : (short) 0;
                // }
                // boolean转为0 1
                short[] params = customS7Control.convertBooleanListToShortArray(data2);
                short[] anniuparams = customS7Control.convertBooleanListToShortArray(anniuread);
                JSONObject jsonObject = new JSONObject();
                jsonObject.append("params", params);
                jsonObject.append("params", paramlist);
                jsonObject.append("params", data);
                jsonObject.append("params", data3);
                jsonObject.append("params", data4);
                jsonObject.append("jiting", anniuparams);
                jsonObject.append("timeout", readtimeout);
            //
                // WebSocketServer sendwServer =
                // WebSocketServer.getWebSocketServer("Parameter2");
                // if (sendwServer != null) {
                // JSONObject jsonObject = new JSONObject();
                // jsonObject.set("message", "Hello, Parameter2!");
                // sendwServer.sendMessage(jsonObject.toString());
                // }
                // HomeController controller = new HomeController();
                ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("Parameter2");
                if (sendwServer != null) {
                    for (WebSocketServer webserver : sendwServer) {
                        webserver.sendMessage(jsonObject.toString());
//
//      String[] values6 = { ".x1 ","x2 ","x3",";;x4","x5","x6","x7","x8","x9","x10","x11"};
//      List<String> paramlist = new ArrayList<>(Arrays.asList(values6));
//      Short[] values1 = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1};
//     List<Short> data = new ArrayList<>(Arrays.asList(values1));
//      Boolean[] value4 = { false, false, false, false, false, false, false, false, false,
//              false};
//     List<Boolean> data2 = new ArrayList<>(Arrays.asList(value4));
//      String[] values3 = { ".x11 ","x21 "};
//      List<String> data3 = new ArrayList<>(Arrays.asList(values3));
//      Short[] values4 = { 2,2,3,4};
//      List<Short> data4 = new ArrayList<>(Arrays.asList(values4));
//
//
//            JSONObject jsonObject = new JSONObject();
//            short[] params = new short[data2.size()];
//            for (int i = 0; i < data2.size(); i++) {
//                boolean value = data2.get(i);
//                params[i] = value ? (short) 1 : (short) 0;
//            }
////
//            short[] anniuparams = new short[anniuread.size()];
//            for (int i = 0; i < anniuread.size(); i++) {
//                boolean value = anniuread.get(i);
//                anniuparams[i] = value ? (short) 1 : (short) 0;
//            }
            //boolean转为0 1
            short[] params = customS7Control.convertBooleanListToShortArray(data2);
            short[] anniuparams = customS7Control.convertBooleanListToShortArray(anniuread);
            JSONObject jsonObject = new JSONObject();
            jsonObject.append("params", params);
            jsonObject.append("params", paramlist);
            jsonObject.append("params", data);
            jsonObject.append("params", data3);
            jsonObject.append("params", data4);
            jsonObject.append("jiting", anniuparams);
            jsonObject.append("timeout", readtimeout);
                        if (webserver != null) {
                            List<String> messages = webserver.getMessages();
//      WebSocketServer sendwServer = WebSocketServer.getWebSocketServer("Parameter2");
//      if (sendwServer != null) {
//        JSONObject jsonObject = new JSONObject();
//        jsonObject.set("message", "Hello, Parameter2!");
//        sendwServer.sendMessage(jsonObject.toString());
//      }
//            HomeController controller = new HomeController();
            ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("Parameter2");
            if (sendwServer != null) {
                for (WebSocketServer webserver : sendwServer) {
                            if (!messages.isEmpty()) {
                                // 将最后一个消息转换为整数类型的列表
                                String lastMessage = messages.get(messages.size() - 1);
                                // System.out.println("lastMessage:" + lastMessage);
                                JSONArray messageArray = new JSONArray(lastMessage);
                                // 清除ID
                                // customS7Control.writeBitToPLC(messageArray, addressList0, 0);
                    webserver.sendMessage(jsonObject.toString());
                                try {
                                    // 检查索引是否有效
                                    if (messageArray.getJSONArray(0).size() > 0) {
                                        // 获取消息数组
                                        JSONArray jsonArray = messageArray.getJSONArray(0);
                                        // 创建一个布尔值列表
                                        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);
                                                }
                                            }
                                        }
                                        // 完成出片
                                        boolean containsOne = data.stream().anyMatch(number -> number == 1);
                                        for (int i = 1; i <= 5; i++) {
                                            boolean value = sValue.get(i);
                                            String id = paramlist.get(i);
                                            // 判断是否自动状态
                                            if (!containsOne) {
                                                // 判断id是否包含数字
                                                if (id.matches(".*\\d.*")) {
                                                    // 判断清除id是否true
                                                    if (value) {
                                                        System.out.println(id);
                                                        switch (i) {
                                                            case 1:
                                                                storageCageService.UpdateTask(2, 0, paramlist.get(i));
                                                                break;
                                                            case 2:
                                                            case 3:
                                                            case 4:
                                                            case 5:
                                                                storageCageService.UpdateTask(3, 0, paramlist.get(i));
                                                                break;
                                                            default:
                                                                // 处理索引值不在范围内的情况
                                                                break;
                                                        }
                                                    }
                                                }
                    if (webserver != null) {
                                                // 检查布尔值列表是否为空
                                                if (!sValue.isEmpty()) {
                        List<String> messages = webserver.getMessages();
                        if (!messages.isEmpty()) {
                            // 将最后一个消息转换为整数类型的列表
                            String lastMessage = messages.get(messages.size() - 1);
//        System.out.println("lastMessage:" + lastMessage);
                            JSONArray messageArray = new JSONArray(lastMessage);
                            //清除ID
                            // customS7Control.writeBitToPLC(messageArray, addressList0, 0);
                            try {
                                // 检查索引是否有效
                                if (messageArray.getJSONArray(0).size() > 0) {
                                    // 获取消息数组
                                    JSONArray jsonArray = messageArray.getJSONArray(0);
                                    // 创建一个布尔值列表
                                    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);
                                                    // 调用 S7control.getinstance().WriteBit 方法将布尔值列表写入地址列表
                                                    S7control.getinstance().WriteBit(addressList0, sValue);
                                                    System.out
                                                            .println("Values " + sValue + " written to PLC at address "
                                                                    + addressList0);
                                                }
                                            }
                                        }
                                    }
//完成出片
                                    boolean containsOne = data.stream().anyMatch(number -> number == 1);
                                    for (int i = 1; i <= 5; i++) {
                                        boolean value = sValue.get(i);
                                        String id = paramlist.get(i);
                                        //判断是否自动状态
                                        if (!containsOne) {
                                            //判断id是否包含数字
                                            if (id.matches(".*\\d.*")) {
                                                //判断清除id是否true
                                                if (value) {
                                                    System.out.println(id);
                                                    switch (i) {
                                                        case 1:
                                                            storageCageService.UpdateTask(2, 0, paramlist.get(i));
                                                            break;
                                                        case 2:
                                                        case 3:
                                                        case 4:
                                                        case 5:
                                                            storageCageService.UpdateTask(3, 0, paramlist.get(i));
                                                            break;
                                                        default:
                                                            // 处理索引值不在范围内的情况
                                                            break;
                                                    }
                                } catch (Exception e) {
                                    System.err.println("An error occurred while writing bit to PLC: " + e.getMessage());
                                }
                                // 急停
                                // customS7Control.writeBitToPLC(messageArray, niuanaddressList3, 1);
                                try {
                                    // 检查索引是否有效
                                    if (messageArray.getJSONArray(1).size() > 0) {
                                        // 获取消息数组
                                        JSONArray jsonArray = messageArray.getJSONArray(1);
                                        // 创建一个布尔值列表
                                        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);
                                                }
                                            }
                                        }
                                        // 终止进片任务
                                        boolean Value1 = sValue.get(0);
                                        boolean Value2 = sValue.get(1);
                                        if (Value1) {
                                            storageCageService.EndTask(0);
                                        }
                                        if (Value2) {
                                            storageCageService.EndTask(1);
                                        }
                                        // 检查布尔值列表是否为空
                                        if (!sValue.isEmpty()) {
                                            // 调用 S7control.getinstance().WriteBit 方法将布尔值列表写入地址列表
                                            S7control.getinstance().WriteBit(addressList0, sValue);
                                            System.out.println("Values " + sValue + " written to PLC at address " + addressList0);
                                        }
                                            S7control.getinstance().WriteBit(niuanaddressList3, sValue);
                                            System.out.println(
                                                    "Values " + sValue + " written to PLC at address "
                                                            + niuanaddressList3);
                                        }
                                    }
                                } catch (Exception e) {
                                    System.err.println("An error occurred while writing bit to PLC: " + e.getMessage());
                                }
                            } catch (Exception e) {
                                System.err.println("An error occurred while writing bit to PLC: " + e.getMessage());
                                // 存片等待延迟
                                customS7Control.Writetime(messageArray, timeout2, 2);
                                // 清空消息列表
                                webserver.clearMessages();
                            }
                            //急停
//                            customS7Control.writeBitToPLC(messageArray, niuanaddressList3, 1);
                            try {
                                // 检查索引是否有效
                                if (messageArray.getJSONArray(1).size() > 0) {
                                    // 获取消息数组
                                    JSONArray jsonArray = messageArray.getJSONArray(1);
                                    // 创建一个布尔值列表
                                    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);
                                            }
                                        }
                                    }
// 终止进片任务
                                    boolean Value1 = sValue.get(0);
                                    boolean Value2 = sValue.get(1);
                                    if (Value1) {
                                        storageCageService.EndTask(0);
                                    }
                                    if (Value2) {
                                        storageCageService.EndTask(1);
                                    }
                                    // 检查布尔值列表是否为空
                                    if (!sValue.isEmpty()) {
                                        // 调用 S7control.getinstance().WriteBit 方法将布尔值列表写入地址列表
                                        S7control.getinstance().WriteBit(niuanaddressList3, sValue);
                                        System.out.println("Values " + sValue + " written to PLC at address " + niuanaddressList3);
                                    }
                                }
                            } catch (Exception e) {
                                System.err.println("An error occurred while writing bit to PLC: " + e.getMessage());
                            }
                            //存片等待延迟
                            customS7Control.Writetime(messageArray, timeout2, 2);
                            // 清空消息列表
                            webserver.clearMessages();
                        }
                    }
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
springboot-vue3/src/main/java/com/example/springboot/component/PlcPositioning1.java
@@ -24,31 +24,25 @@
    // 创建一个自定义的 S7 控制器消息处理器对象
    MessageHandler customS7Control = new MessageHandler();
    public PlcPositioning1() throws IOException {
        config = new Configuration("config.properties");
    }
    @Override
    public void run() {
        while (this != null) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            // System.out.println(stt);
            //存片格  出片格读取
                // System.out.println(stt);
            // 存片格 出片格读取
            String address = config.getProperty("PlcPositioning1.address");
          List<Short> arraylist = S7control.getinstance().ReadWord(address, 33);
//            System.out.println(arraylist);
            List<Short> arraylist = S7control.getinstance().ReadWord(address, 33);
            // System.out.println(arraylist);
//            Short[] values1 = {1,1,1, 1,2, 3, 4, 5, 6, 7, 8, 9, 10,11, 12,13,14,15,16,17,18,19,20,11, 12,13,14,15,16,17,18,19,20 };
//            List<Short> arraylist = new ArrayList<>(Arrays.asList(values1));
            // Short[] values1 = {1,1,1, 1,2, 3, 4, 5, 6, 7, 8, 9, 10,11,
            // 12,13,14,15,16,17,18,19,20,11, 12,13,14,15,16,17,18,19,20 };
            // List<Short> arraylist = new ArrayList<>(Arrays.asList(values1));
            List<Short> arraylist5 = S7control.getinstance().ReadWord("DB106.0", 1);
            List<Short> arraylist6 = S7control.getinstance().ReadWord("DB106.12", 1);
            List<Short> arraylist7 = S7control.getinstance().ReadWord("DB106.40", 1);
@@ -58,17 +52,16 @@
            arraylist5.addAll(arraylist8);
            JSONObject jsonObject = new JSONObject();
            jsonObject.append("params", arraylist);
            jsonObject.append("shishi1", arraylist5);
            // WebSocketServer sendwServer = WebSocketServer.sessionMap.get("Positioning1");
            // if (sendwServer != null) {
            // sendwServer.sendMessage(jsonObject.toString());
            // }
//            WebSocketServer sendwServer = WebSocketServer.sessionMap.get("Positioning1");
//            if (sendwServer != null) {
//                sendwServer.sendMessage(jsonObject.toString());
//            }
//            WebSocketServer webSocketServer = WebSocketServer.sessionMap.get("Positioning1");
            // WebSocketServer webSocketServer =
            // WebSocketServer.sessionMap.get("Positioning1");
            ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("Positioning1");
            if (sendwServer != null) {
                for (WebSocketServer webserver : sendwServer) {
@@ -76,13 +69,12 @@
                    if (webserver != null) {
                        List<String> messages = webserver.getMessages();
                        //存片格  出片格地址
                        // 存片格 出片格地址
                        if (!messages.isEmpty()) {
                            // 将最后一个消息转换为 short 类型的列表
                            String lastMessage = messages.get(messages.size() - 1);
//        System.out.println("lastMessage:" + lastMessage);
                            // System.out.println("lastMessage:" + lastMessage);
                            JSONArray messageArray = new JSONArray(lastMessage);
                            // 整合第 1 到 3 个数组并去掉 null 元素
@@ -104,11 +96,11 @@
                                }
                            }
                            // 写入存片格  出片格位置设定数据
                            // 写入存片格 出片格位置设定数据
                            if (!mergedList.isEmpty()) {
                                S7control.getinstance().WriteWord(address, mergedList);
                                System.out.println("messageValue:" + mergedList + " written to PLC at address " + address);
                                System.out.println(
                                        "messageValue:" + mergedList + " written to PLC at address " + address);
                            }
                            // 清空消息列表
@@ -117,8 +109,12 @@
                    }
                }
            }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
springboot-vue3/src/main/java/com/example/springboot/component/PlcServoManualone.java
@@ -12,19 +12,17 @@
public class PlcServoManualone extends Thread {
    // 用于存储应用程序的配置信息
    private Configuration config;
    // 创建一个自定义的 S7 控制器消息处理器对象
    MessageHandler customS7Control = new MessageHandler();
    public PlcServoManualone() throws IOException {
        config = new Configuration("config.properties");
    }
    //将布尔列表转换为二进制的 short 数组
    // 将布尔列表转换为二进制的 short 数组
    public static class PLCBooleanConverter {
        public static short[] convertListsToBinaryShortArray(List<Boolean>... lists) {
@@ -52,7 +50,7 @@
        }
    }
    //读取id
    // 读取id
    public StringBuilder queGlassid(String address, int count) {
        StringBuilder writedstrIdOut = new StringBuilder();
        byte[] writedglassidbytesOut = S7control.getinstance().ReadByte(address, count);
@@ -65,234 +63,220 @@
        return writedstrIdOut;
    }
    @Override
    public void run() {
        while (this != null) {
            try {
                Thread.sleep(1000);
                // A01组合中地址表集合
                List<String> addresses = Arrays.asList(config.getProperty("A01.addresses").split(","));
                // System.out.println(addresses);
                List<Short> arraylist = S7control.getinstance().readWords(addresses);
                // A02组合中地址表集合
                List<String> addresses2 = Arrays.asList(config.getProperty("A02.addresses").split(","));
                List<Short> arraylist2 = S7control.getinstance().readWords(addresses2);
                // A01翻转地址
                List<String> addresses3 = Arrays.asList(config.getProperty("A01.flipAddress"));
                List<Short> arraylist3 = S7control.getinstance().readWords(addresses3);
                // A02翻转地址
                List<String> addresses4 = Arrays.asList(config.getProperty("A02.flipAddress"));
                List<Short> arraylist4 = S7control.getinstance().readWords(addresses4);
                // B01组合中地址
                String b01Address = config.getProperty("B01.address");
                List<Short> arraylist5 = S7control.getinstance().ReadWord(b01Address, 2);
                // B02组合地址
                String b02Address = config.getProperty("B02.address");
                List<Short> arraylist6 = S7control.getinstance().ReadWord(b02Address, 2);
                // System.out.println(b02Address);
                // 所有故障按钮地址
                List<String> addresses7 = Arrays.asList(config.getProperty("faultButtonAddresses").split(","));
                List<Boolean> arraylist7 = S7control.getinstance().readBits(addresses7);
                // A01启动地址
                List<String> A01start = Arrays.asList(config.getProperty("A01start"));
                // A02启动地址
                List<String> A02start = Arrays.asList(config.getProperty("A02start"));
                // A01半自动地址
                List<String> A01Bstart = Arrays.asList(config.getProperty("A01Bstart"));
                // A02半自动地址
                List<String> A02Bstart = Arrays.asList(config.getProperty("A02Bstart"));
                //
                List<String> abortresumeTasks = Arrays.asList(config.getProperty("abortresumeTasks"));
                // 回零按钮地址
                List<String> waddresses4 = Arrays.asList(config.getProperty("HomedButtonAddresses").split(","));
                // 所有复位按钮地址
                List<String> Reset = Arrays.asList(config.getProperty("resetButtonAddresses").split(","));
                // System.out.println(Reset);
                // 所有未回零按钮地址
                List<String> addresses8 = Arrays.asList(config.getProperty("notHomedButtonAddresses").split(","));
                // 进片id地址
                String inputGlassIdAddress = config.getProperty("inputGlassIdAddress");
                String outputGlassIdAddress = config.getProperty("outputGlassIdAddress");
                StringBuilder queueid1 = queGlassid(inputGlassIdAddress, 14);
                // 存片id地址
                StringBuilder queueid2 = queGlassid(outputGlassIdAddress, 14);
                // A01 A02启动 半自动启动
                List<Boolean> A01readstart = S7control.getinstance().readBits(A01start);
                List<Boolean> A02readstart = S7control.getinstance().readBits(A02start);
                List<Boolean> A01readBstart = S7control.getinstance().readBits(A01Bstart);
                List<Boolean> A02readsBtart = S7control.getinstance().readBits(A02Bstart);
                List<Boolean> resumeTasks = S7control.getinstance().readBits(abortresumeTasks);
                short[] combinedBinaryShortArray = PLCBooleanConverter.convertListsToBinaryShortArray(
                        A01readBstart, A01readstart, A02readsBtart, A02readstart);
                // 回零地址
                List<Boolean> readhuiling = S7control.getinstance().readBits(waddresses4);
                short[] huiling7 = PlcManualonePosition.PLCBooleanConverter.convertListsToBinaryShortArray(readhuiling);
                // System.out.println(A01readBstart);
                // 所有故障按钮转换为1和0
                short[] params2 = new short[arraylist7.size()];
                for (int i = 0; i < arraylist7.size(); i++) {
                    boolean value = arraylist7.get(i);
                    params2[i] = value ? (short) 1 : (short) 0;
                }
                // 急停中止按钮
                short[] resumeTask = new short[resumeTasks.size()];
                for (int i = 0; i < resumeTasks.size(); i++) {
                    boolean value = resumeTasks.get(i);
                    resumeTask[i] = value ? (short) 1 : (short) 0;
                }
                List<Boolean> Reset1 = S7control.getinstance().readBits(Reset);
                // System.out.println(Reset1);
                // 所有故障按钮转换为1和0
                short[] rReset = new short[Reset1.size()];
                for (int i = 0; i < Reset1.size(); i++) {
                    boolean value = Reset1.get(i);
                    rReset[i] = value ? (short) 1 : (short) 0;
                }
                // 所有未回零按钮转换为1和0
                List<Boolean> arraylist8 = S7control.getinstance().readBits(addresses8);
                short[] params = new short[arraylist8.size()];
                for (int i = 0; i < arraylist8.size(); i++) {
                    boolean value = arraylist8.get(i);
                    params[i] = value ? (short) 1 : (short) 0;
                }
                // Short[] values1 = { 1, 2, 3, 4, 5, 6, 7};
                // List<Short> arraylist = new ArrayList<>(Arrays.asList(values1));
                // Short[] values2 = { 1, 2, 3, 4, 5};
                // List<Short> arraylist2 = new ArrayList<>(Arrays.asList(values2));
                //
                // Short[] values3 = {1};
                // List<Short> arraylist3 = new ArrayList<>(Arrays.asList(values3));
                // Short[] values4 = {2};
                // List<Short> arraylist4 = new ArrayList<>(Arrays.asList(values4));
                // Short[] values5 = {3,3};
                // List<Short> arraylist5 = new ArrayList<>(Arrays.asList(values5));
                // Short[] values6 = { 4,4};
                // List<Short> arraylist6 = new ArrayList<>(Arrays.asList(values6));
                // Boolean[] values7 = { false, true, true, true, true, true};
                // List<Boolean> arraylist7 = new ArrayList<>(Arrays.asList(values7));
                // Boolean[] values8 = { false, true, true, true, true, true};
                // List<Boolean> arraylist8 = new ArrayList<>(Arrays.asList(values8));
                //
                // String queueid1 = "x1234567890123";
                // String queueid2 = "x1234567890123";
                //
                // short[] params2 = new short[arraylist7.size()];
                // for (int i = 0; i < arraylist7.size(); i++) {
                // boolean value = arraylist7.get(i);
                // params2[i] = value ? (short) 1 : (short) 0;
                // }
                //
                //
                // short[] params = new short[arraylist8.size()];
                // for (int i = 0; i < arraylist8.size(); i++) {
                // boolean value = arraylist8.get(i);
                // params[i] = value ? (short) 1 : (short) 0;
                // }
                JSONObject jsonObject = new JSONObject();
                jsonObject.append("zuhe1", arraylist);
                jsonObject.append("zuhe2", arraylist2);
                jsonObject.append("zuhe3", arraylist3);
                jsonObject.append("zuhe4", arraylist4);
                jsonObject.append("zuhe5", arraylist5);
                jsonObject.append("zuhe6", arraylist6);
                jsonObject.append("guzhang", params2);
                jsonObject.append("weihuiling", params);
                jsonObject.append("jinpianid", queueid1);
                jsonObject.append("qupianid", queueid2);
                jsonObject.append("fuwei", rReset);
                jsonObject.append("qidong", combinedBinaryShortArray);
                jsonObject.append("huiling", huiling7);
                jsonObject.append("resumeTasks", resumeTask);
                // WebSocketServer sendwServer =
                // WebSocketServer.sessionMap.get("ServoManualone");
                // if (sendwServer != null) {
                // sendwServer.sendMessage(jsonObject.toString());
                // }
                ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("ServoManualone");
                if (sendwServer != null) {
                    for (WebSocketServer webserver : sendwServer) {
                        webserver.sendMessage(jsonObject.toString());
                        if (webserver != null) {
                            List<String> messages = webserver.getMessages();
                            if (!messages.isEmpty()) {
                                // 将最后一个消息转换为 short 类型的列表
                                String lastMessage = messages.get(messages.size() - 1);
                                // System.out.println("lastMessage:" + lastMessage);
                                JSONArray messageArray = new JSONArray(lastMessage);
                                // 写入AO1组合
                                customS7Control.WriteWordToPLC(messageArray, addresses, 0);
                                // 写入AO2组合
                                customS7Control.WriteWordToPLC(messageArray, addresses2, 1);
                                // 复位按钮写入
                                customS7Control.writeBitToPLC(messageArray, Reset, 2);
                                // 回零按钮写入
                                customS7Control.writeBitToPLC(messageArray, waddresses4, 3);
                                // 进片ID写入
                                customS7Control.writeStringToPLC(messageArray, inputGlassIdAddress, 4);
                                // 取片ID写入
                                customS7Control.writeStringToPLC(messageArray, outputGlassIdAddress, 5);
                                // A01半自动
                                customS7Control.writeBitToPLC(messageArray, A01Bstart, 6);
                                // A02半自动
                                customS7Control.writeBitToPLC(messageArray, A02Bstart, 7);
                                // A01半自动启动
                                customS7Control.writeBitToPLC(messageArray, A01start, 8);
                                // A02半自动启动
                                customS7Control.writeBitToPLC(messageArray, A02start, 9);
                                // 清空消息列表
                                webserver.clearMessages();
                            }
                        }
                    }
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
//A01组合中地址表集合
            List<String> addresses = Arrays.asList(config.getProperty("A01.addresses").split(","));
            //System.out.println(addresses);
            List<Short> arraylist = S7control.getinstance().readWords(addresses);
//A02组合中地址表集合
            List<String> addresses2 = Arrays.asList(config.getProperty("A02.addresses").split(","));
            List<Short> arraylist2 = S7control.getinstance().readWords(addresses2);
            //A01翻转地址
            List<String> addresses3 = Arrays.asList(config.getProperty("A01.flipAddress"));
            List<Short> arraylist3 = S7control.getinstance().readWords(addresses3);
            //A02翻转地址
            List<String> addresses4 = Arrays.asList(config.getProperty("A02.flipAddress"));
            List<Short> arraylist4 = S7control.getinstance().readWords(addresses4);
            //B01组合中地址
            String b01Address = config.getProperty("B01.address");
            List<Short> arraylist5 = S7control.getinstance().ReadWord(b01Address, 2);
            //B02组合地址
            String b02Address = config.getProperty("B02.address");
            List<Short> arraylist6 = S7control.getinstance().ReadWord(b02Address, 2);
//      System.out.println(b02Address);
            // 所有故障按钮地址
            List<String> addresses7 = Arrays.asList(config.getProperty("faultButtonAddresses").split(","));
            List<Boolean> arraylist7 = S7control.getinstance().readBits(addresses7);
            //A01启动地址
            List<String> A01start = Arrays.asList(config.getProperty("A01start"));
            //A02启动地址
            List<String> A02start = Arrays.asList(config.getProperty("A02start"));
//A01半自动地址
            List<String> A01Bstart = Arrays.asList(config.getProperty("A01Bstart"));
            //A02半自动地址
            List<String> A02Bstart = Arrays.asList(config.getProperty("A02Bstart"));
            //
            List<String> abortresumeTasks = Arrays.asList(config.getProperty("abortresumeTasks"));
            //回零按钮地址
            List<String> waddresses4 = Arrays.asList(config.getProperty("HomedButtonAddresses").split(","));
            // 所有复位按钮地址
            List<String> Reset = Arrays.asList(config.getProperty("resetButtonAddresses").split(","));
//      System.out.println(Reset);
            // 所有未回零按钮地址
            List<String> addresses8 = Arrays.asList(config.getProperty("notHomedButtonAddresses").split(","));
            // 进片id地址
            String inputGlassIdAddress = config.getProperty("inputGlassIdAddress");
            String outputGlassIdAddress = config.getProperty("outputGlassIdAddress");
            StringBuilder queueid1 = queGlassid(inputGlassIdAddress, 14);
            // 存片id地址
            StringBuilder queueid2 = queGlassid(outputGlassIdAddress, 14);
//A01 A02启动   半自动启动
            List<Boolean> A01readstart = S7control.getinstance().readBits(A01start);
            List<Boolean> A02readstart = S7control.getinstance().readBits(A02start);
            List<Boolean> A01readBstart = S7control.getinstance().readBits(A01Bstart);
            List<Boolean> A02readsBtart = S7control.getinstance().readBits(A02Bstart);
            List<Boolean> resumeTasks = S7control.getinstance().readBits(abortresumeTasks);
            short[] combinedBinaryShortArray = PLCBooleanConverter.convertListsToBinaryShortArray(
                    A01readBstart, A01readstart, A02readsBtart, A02readstart
            );
            // 回零地址
            List<Boolean> readhuiling = S7control.getinstance().readBits(waddresses4);
            short[] huiling7 = PlcManualonePosition.PLCBooleanConverter.convertListsToBinaryShortArray(readhuiling);
//      System.out.println(A01readBstart);
// 所有故障按钮转换为1和0
            short[] params2 = new short[arraylist7.size()];
            for (int i = 0; i < arraylist7.size(); i++) {
                boolean value = arraylist7.get(i);
                params2[i] = value ? (short) 1 : (short) 0;
            }
//急停中止按钮
            short[] resumeTask = new short[resumeTasks.size()];
            for (int i = 0; i < resumeTasks.size(); i++) {
                boolean value = resumeTasks.get(i);
                resumeTask[i] = value ? (short) 1 : (short) 0;
            }
            List<Boolean> Reset1 = S7control.getinstance().readBits(Reset);
            //  System.out.println(Reset1);
// 所有故障按钮转换为1和0
            short[] rReset = new short[Reset1.size()];
            for (int i = 0; i < Reset1.size(); i++) {
                boolean value = Reset1.get(i);
                rReset[i] = value ? (short) 1 : (short) 0;
            }
//所有未回零按钮转换为1和0
            List<Boolean> arraylist8 = S7control.getinstance().readBits(addresses8);
            short[] params = new short[arraylist8.size()];
            for (int i = 0; i < arraylist8.size(); i++) {
                boolean value = arraylist8.get(i);
                params[i] = value ? (short) 1 : (short) 0;
            }
//      Short[] values1 = { 1, 2, 3, 4, 5, 6, 7};
//      List<Short> arraylist = new ArrayList<>(Arrays.asList(values1));
//      Short[] values2 = { 1, 2, 3, 4, 5};
//      List<Short> arraylist2 = new ArrayList<>(Arrays.asList(values2));
//
//      Short[] values3 = {1};
//      List<Short> arraylist3 = new ArrayList<>(Arrays.asList(values3));
//      Short[] values4 = {2};
//      List<Short> arraylist4 = new ArrayList<>(Arrays.asList(values4));
//      Short[] values5 = {3,3};
//      List<Short> arraylist5 = new ArrayList<>(Arrays.asList(values5));
//      Short[] values6 = { 4,4};
//      List<Short> arraylist6 = new ArrayList<>(Arrays.asList(values6));
//      Boolean[] values7 = { false, true, true, true, true, true};
//     List<Boolean> arraylist7 = new ArrayList<>(Arrays.asList(values7));
//      Boolean[] values8 = { false, true, true, true, true, true};
//      List<Boolean> arraylist8 = new ArrayList<>(Arrays.asList(values8));
//
//      String queueid1 = "x1234567890123";
//      String queueid2 = "x1234567890123";
//
//      short[] params2 = new short[arraylist7.size()];
//      for (int i = 0; i < arraylist7.size(); i++) {
//        boolean value = arraylist7.get(i);
//        params2[i] = value ? (short) 1 : (short) 0;
//      }
//
//
//      short[] params = new short[arraylist8.size()];
//      for (int i = 0; i < arraylist8.size(); i++) {
//        boolean value = arraylist8.get(i);
//        params[i] = value ? (short) 1 : (short) 0;
//      }
            JSONObject jsonObject = new JSONObject();
            jsonObject.append("zuhe1", arraylist);
            jsonObject.append("zuhe2", arraylist2);
            jsonObject.append("zuhe3", arraylist3);
            jsonObject.append("zuhe4", arraylist4);
            jsonObject.append("zuhe5", arraylist5);
            jsonObject.append("zuhe6", arraylist6);
            jsonObject.append("guzhang", params2);
            jsonObject.append("weihuiling", params);
            jsonObject.append("jinpianid", queueid1);
            jsonObject.append("qupianid", queueid2);
            jsonObject.append("fuwei", rReset);
            jsonObject.append("qidong", combinedBinaryShortArray);
            jsonObject.append("huiling", huiling7);
            jsonObject.append("resumeTasks", resumeTask);
//      WebSocketServer sendwServer = WebSocketServer.sessionMap.get("ServoManualone");
//      if (sendwServer != null) {
//        sendwServer.sendMessage(jsonObject.toString());
//      }
            ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("ServoManualone");
            if (sendwServer != null) {
                for (WebSocketServer webserver : sendwServer) {
                    webserver.sendMessage(jsonObject.toString());
                    if (webserver != null) {
                        List<String> messages = webserver.getMessages();
                        if (!messages.isEmpty()) {
                            // 将最后一个消息转换为 short 类型的列表
                            String lastMessage = messages.get(messages.size() - 1);
//        System.out.println("lastMessage:" + lastMessage);
                            JSONArray messageArray = new JSONArray(lastMessage);
                            // 写入AO1组合
                            customS7Control.WriteWordToPLC(messageArray, addresses, 0);
                            // 写入AO2组合
                            customS7Control.WriteWordToPLC(messageArray, addresses2, 1);
                            // 复位按钮写入
                            customS7Control.writeBitToPLC(messageArray, Reset, 2);
                            //回零按钮写入
                            customS7Control.writeBitToPLC(messageArray, waddresses4, 3);
                            // 进片ID写入
                            customS7Control.writeStringToPLC(messageArray, inputGlassIdAddress, 4);
                            //取片ID写入
                            customS7Control.writeStringToPLC(messageArray, outputGlassIdAddress, 5);
                            //A01半自动
                            customS7Control.writeBitToPLC(messageArray, A01Bstart, 6);
                            //A02半自动
                            customS7Control.writeBitToPLC(messageArray, A02Bstart, 7);
                          //A01半自动启动
                          customS7Control.writeBitToPLC(messageArray, A01start, 8);
                          //A02半自动启动
                          customS7Control.writeBitToPLC(messageArray, A02start, 9);
                          // 清空消息列表
                            webserver.clearMessages();
                        }
                    }
                }
            }
        }
    }
}
springboot-vue3/src/main/java/com/example/springboot/component/Plcalarm.java
@@ -78,11 +78,7 @@
    while (this != null) {
      try {
        Thread.sleep(1000);
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
      this.readValue();
        this.readValue();
      String PlcAddress = this.name;
      Integer Plccount = this.count;
@@ -141,7 +137,10 @@
              }
            }
          }
        }
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
    }
    }
  }
}
springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java
@@ -12,6 +12,8 @@
import java.util.Map;
import com.example.springboot.service.*;
import org.apache.ibatis.annotations.Result;
import org.springframework.beans.factory.annotation.Autowired;
import com.example.springboot.entity.Glass;
@@ -51,6 +53,8 @@
    public static Boolean FeedState = false;
    public static StringBuilder feedglassid;
    // public Plchome() throws IOException {
    // config = new Configuration("config.properties");
    // }
@@ -61,6 +65,7 @@
    public void run() {
        while (this != null) {
            JSONObject jsonObject = new JSONObject();
            jsonObject.append("feedglassid", feedglassid);
            try {
                Thread.sleep(1000);
                // 注入mapper
@@ -216,7 +221,7 @@
                    // }
                    // // 获取铝框idDB106.DBW64,添加到出片队列
                    // String frameno="X21763329601FB";
                    String frameno = spianService.queGlassid("DB103.270", 14).toString();
                    String frameno = spianService.queGlassid("DB103.270", 11).toString();
                    if (!frameno.equals(Plchome.FrameNo)) {
                        Plchome.FrameNo = frameno;
                        try {
@@ -272,11 +277,16 @@
                    // jsonObject.append("D01RequestState", D01RequestState);
                    // 自动进片
                    if (isConfirm == true && form3.getglassId() != null && form3.getglassId() != "") {
                        if ((form3.getglassheight() < 380 || form3.getglasswidth() < 390
                                || form3.getglassheight() > 1810
                                || form3.getglasswidth() > 2760)
                                || (form3.getglassheight() < 390 || form3.getglasswidth() < 380
                                        || form3.getglassheight() > 2760 || form3.getglasswidth() > 1810)) {
                        double width = 0;
                        double height = 0;
                        if (form3.getglassheight() < form3.getglasswidth()) {
                            height = form3.getglassheight();
                            width = form3.getglasswidth();
                        } else {
                            height = form3.getglasswidth();
                            width = form3.getglassheight();
                        }
                        if (height < 380 || width < 380 || height > 1810 || width > 2760) {
                            FeedState = true;
                            jsonObject.append("FeedState", FeedState);
                            FeedState = false;
@@ -286,41 +296,39 @@
                            }
                        }
                    }
                }
                boolean dbconnected = false;
                try {
                    dbserve.getConn();
                    dbconnected = true;
                } catch (Exception e) {
                    // TODO: handle exception
                    dbconnected = false;
                }
                jsonObject.append("dbconnected", dbconnected);
                // jsonObject.append("params", new short[] { 30, 40, });
                ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("Home");
                if (sendwServer != null) {
                    for (WebSocketServer webserver : sendwServer) {
                        webserver.sendMessage(jsonObject.toString());
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
                        if (webserver != null) {
            boolean dbconnected = false;
            try {
                dbserve.getConn();
                dbconnected = true;
            } catch (Exception e) {
                // TODO: handle exception
                dbconnected = false;
            }
            jsonObject.append("dbconnected", dbconnected);
            // jsonObject.append("params", new short[] { 30, 40, });
            ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("Home");
            if (sendwServer != null) {
                for (WebSocketServer webserver : sendwServer) {
                    webserver.sendMessage(jsonObject.toString());
                            List<String> messages = webserver.getMessages();
                    if (webserver != null) {
                            if (!messages.isEmpty()) {
                                // // 将最后一个消息转换为整数类型的列表
                                webserver.clearMessages();
                            }
                        List<String> messages = webserver.getMessages();
                        if (!messages.isEmpty()) {
                            // // 将最后一个消息转换为整数类型的列表
                            webserver.clearMessages();
                        }
                    }
                }
            } catch (InterruptedException | SQLException e) {
                e.printStackTrace();
            }
        }
    }
}
springboot-vue3/src/main/java/com/example/springboot/component/PlchomeNew.java
@@ -368,6 +368,9 @@
            } catch (InterruptedException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            boolean dbconnected = false;
springboot-vue3/src/main/java/com/example/springboot/component/Plclog.java
@@ -15,11 +15,7 @@
        while (this != null) {
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                // \\ TODO Auto-generated catch block
                e.printStackTrace();
            }
            spianMapper = WebSocketServer.applicationContext.getBean(SpianMapper.class);
                spianMapper = WebSocketServer.applicationContext.getBean(SpianMapper.class);
            spianService = WebSocketServer.applicationContext.getBean(SpianService.class);
            StringBuilder B01glassid = spianService.queGlassid("DB103.184", 14);// BO1的玻璃id
            StringBuilder B02glassid = spianService.queGlassid("DB103.212", 14);// B02的玻璃id
@@ -42,6 +38,11 @@
                }
                b02 = B02backs;
            }
            } catch (InterruptedException e) {
                // \\ TODO Auto-generated catch block
                e.printStackTrace();
            }
            
        }
    }
springboot-vue3/src/main/java/com/example/springboot/component/Plcsign.java
@@ -61,52 +61,53 @@
    while (this != null) {
      try {
        Thread.sleep(1000);
        // this.readValue();
        // String PlcAddress = this.name;
        // Integer Plccount = this.count;
        // System.out.println(PlcAddress);
        // List<Boolean> plclist = S7control.getinstance().ReadBits(PlcAddress,
        // Plccount);
        List<Boolean> plclist = S7control.getinstance().ReadBits("DB102.0.0", 112);
        // Boolean[] values = { true, true, true, true, true, false, true, false,
        // true, false, true, false, true, false,
        // true, false, true, false, true, false, true, false, true, false, true, false,
        // true, false, true, false, true,
        // false, true, false, true, false,
        // true, false, true, false, true, false, true, false, null,
        // true, false,
        // true, false, true, false, true, false,
        // true, false, true, false, true, };
        // List<Boolean> plclist = new ArrayList<>(Arrays.asList(values));
        if (plclist != null) {
          // 将获取的布尔类型转换为整数类型
          List<Integer> Intlist = new ArrayList<>();
          for (Boolean value : plclist) {
            if (value != null) {
              Intlist.add(value == true ? 0 : 1);
            }
          }
          JSONObject jsonObject = new JSONObject();
          jsonObject.append("sig", Intlist);
          // WebSocketServer sendwServer3 = WebSocketServer.sessionMap.get("Sign");
          // if (sendwServer3 != null) {
          // sendwServer3.sendMessage(jsonObject.toString());
          // }
          ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("Sign");
          if (sendwServer != null) {
            for (WebSocketServer webserver : sendwServer) {
              webserver.sendMessage(jsonObject.toString());
            }
          }
        }
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
//      this.readValue();
//      String PlcAddress = this.name;
//      Integer Plccount = this.count;
      // System.out.println(PlcAddress);
//      List<Boolean> plclist = S7control.getinstance().ReadBits(PlcAddress, Plccount);
       List<Boolean> plclist = S7control.getinstance().ReadBits("DB102.0.0", 112);
//       Boolean[] values = { true, true, true, true, true, false, true, false,
//       true, false, true, false, true, false,
//       true, false, true, false, true, false, true, false, true, false, true, false,
//       true, false, true, false, true,
//       false, true, false, true, false,
//       true, false, true, false, true, false, true, false, null,
//       true, false,
//       true, false, true, false, true, false,
//       true, false, true, false, true, };
//       List<Boolean> plclist = new ArrayList<>(Arrays.asList(values));
      if (plclist != null) {
        // 将获取的布尔类型转换为整数类型
        List<Integer> Intlist = new ArrayList<>();
        for (Boolean value : plclist) {
          if (value != null) {
            Intlist.add(value == true ? 0 : 1);
          }
        }
        JSONObject jsonObject = new JSONObject();
        jsonObject.append("sig", Intlist);
//        WebSocketServer sendwServer3 = WebSocketServer.sessionMap.get("Sign");
//        if (sendwServer3 != null) {
//          sendwServer3.sendMessage(jsonObject.toString());
//        }
        ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("Sign");
        if (sendwServer != null) {
          for (WebSocketServer webserver : sendwServer) {
            webserver.sendMessage(jsonObject.toString());
          }
        }
      }
    }
  }
}
springboot-vue3/src/main/java/com/example/springboot/component/Plcstate.java
@@ -61,41 +61,41 @@
    while (this != null) {
      try {
        Thread.sleep(1000);
        // this.readValue();
        // String PlcAddress = this.name;
        // Integer Plccount = this.count;
        // System.out.println(PlcAddress);
        // 读取状态数据
        List<Short> plclist = S7control.getinstance().ReadWord("DB103.0", 44);
        // Short[] values = { 0, 1, 1, 0, 1, 0, 1, 0,
        // 1, 0, };
        // List<Short> plclist = new ArrayList<>(Arrays.asList(values));
        if (plclist != null) {
          List<String> Intlist = new ArrayList<>();
          for (Short value : plclist) {
            Intlist.add(value == 1 ? "AUTO" : "Manual");
          }
          JSONObject jsonObject = new JSONObject();
          jsonObject.append("sta", Intlist);
          // WebSocketServer sendwServer = WebSocketServer.sessionMap.get("State");
          // if (sendwServer != null) {
          // sendwServer.sendMessage(jsonObject.toString());
          // }
          ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("State");
          if (sendwServer != null) {
            for (WebSocketServer webserver : sendwServer) {
              webserver.sendMessage(jsonObject.toString());
            }
          }
        }
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
//      this.readValue();
//      String PlcAddress = this.name;
//      Integer Plccount = this.count;
      // System.out.println(PlcAddress);
      //读取状态数据
List<Short> plclist = S7control.getinstance().ReadWord("DB103.0", 44);
//      Short[] values = { 0, 1, 1, 0, 1, 0, 1, 0,
//          1, 0, };
//      List<Short> plclist = new ArrayList<>(Arrays.asList(values));
      if (plclist != null) {
        List<String> Intlist = new ArrayList<>();
        for (Short value : plclist) {
          Intlist.add(value == 1 ? "AUTO" : "Manual");
        }
        JSONObject jsonObject = new JSONObject();
        jsonObject.append("sta", Intlist);
//        WebSocketServer sendwServer = WebSocketServer.sessionMap.get("State");
//        if (sendwServer != null) {
//          sendwServer.sendMessage(jsonObject.toString());
//        }
        ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("State");
        if (sendwServer != null) {
          for (WebSocketServer webserver : sendwServer) {
            webserver.sendMessage(jsonObject.toString());
          }
        }
      }
    }
  }
}
springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java
@@ -17,7 +17,7 @@
        //
        System.out.println("启动完成");
         new PlcHoldNew().start();
         new PlcHold().start();
         new Plchome().start(); 
         new PlcLayout().start();
         new Plcalarm().start();
@@ -30,14 +30,6 @@
         new PlcManualonePosition2().start();
         new PlcServoManualone().start();
         new PLCManualJog().start();
         new Plclog().start();
        //  new PlcInteractionState().start();
        //  new PlcParameter1Review().start();
        //  new PLCAutomaticParameterSettingReview2().start();
        //  new PLCManualJogReview().start();
         new PlcInteractionState().start();
    }
}
springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java
@@ -274,7 +274,7 @@
  // 手动添加扫码位玻璃
  @PostMapping("/InsertQueueGlassId")
  public Result InsertQueueGlassId(Short id, @RequestBody Queue queue) {
  public Result InsertQueueGlassId(Short id, @RequestBody Queue queue) throws SQLException {
    return storageCageService.InsertQueueGlassId(id, queue);
    
  }
@@ -329,6 +329,7 @@
    // public Result AddOutSliceS(@RequestBody String[][] AluminumFrames) throws
    // SQLException {
    north_Glass_Buffer1Service.AddOutSliceS(FrameNo);
    Plchome.AluminumFrame = null;
    Map<String, Object> map = new HashMap<>();
    map.put("message", "200");
    return Result.success(map);
springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java
@@ -12,8 +12,8 @@
public interface SpianMapper {
    // 判断相邻笼子是否有空格
    @Select("select COUNT(if(a.state1=0,cell,0))as cell,ROUND(id/2)as id from (select *,max(state)as state1 from storage_cage a  GROUP BY cage,cell)as a where (a.cage=#{cage1}-1 or a.cage=#{cage1}+1)and if(a.cage<6,a.cage>0 and a.cage<6,a.cage>5) and disabled=0 GROUP BY cage ORDER BY cell desc LIMIT 1")
    int selectCage(int cage1);
    @Select("select COUNT(if(a.state1=0,cell,0))as cell from (select *,max(state)as state1 from storage_cage a  GROUP BY cage,cell)as a where (a.cage=#{cage1}-1 or a.cage=#{cage1}+1 or a.cage=#{cage1})and if(a.cage<6,a.cage>0 and a.cage<6,a.cage>5) and disabled=0 GROUP BY cage ORDER BY cell desc LIMIT 1")
    StorageCage selectCage(int cage1);
    // 获取笼子号订单号排序的空订单笼子
    @Select("select a.cage,FrameBarcode,COUNT(if(a.order_id=#{orderids},a.order_id,null))as orderid,b.shu,c.shu2,a.cell,min(a.state)as state1,max(a.state)as state2,disabled,FrameBarcode from storage_cage a left join (select COUNT(*)shu,cage from storage_cage  where order_id=#{orderids} GROUP BY cage)as b on a.cage=b.cage left join(select cage ,COUNT(glass_id)as shu2 from storage_cage GROUP BY cage)c  on a.cage=c.cage where (order_id=#{orderids} or ''='') and a.disabled=0 GROUP BY cage,cell HAVING state1=0 ORDER BY shu desc,shu2,state2 asc,cage asc;")
    List<StorageCage> selectAll(String orderids,String Fbarcode);
@@ -79,7 +79,7 @@
    void UpdataAddCage(String orderid, String glassid, double width, int cage, int cell, int id, int state);
    @Update("update storage_cage set state=#{state},glass_id=#{glassid},order_id=#{glass.ordernumber},glasswidth=#{glass.glasslengthmm},glassheight=#{glass.glassheightmm},glasswidthmm=#{glass.glasslength},glassheightmm=#{glass.glassheight},listid=#{glass.listnumber},boxid=#{glass.boxnumber},FrameBarcode=#{glass.frameBarcode} where id=#{id};")
    void UpdataAddCage2(String orderid, String glassid, north_glass_buffer1 glass, int cage, int cell, int id,int state);
    void UpdataAddCage2(String orderid, String glassid, north_glass_buffer1 glass, int cage, int cell, int id,int state,Double widths);
    // 修改笼子信息(多片进片)
    @Update("update storage_cage set state=#{state},glass_id=#{glassid},order_id=#{orderid},glasswidth=#{width} where cage=#{cage} and cell=#{cell} and tier=#{tier};")
@@ -100,6 +100,9 @@
    // 调拨更换笼子信息
    @Update("update storage_cage as a,(select*from storage_cage b where b.cage=#{cage} and b.cell=#{cell} and b.tier=#{tier})as b set a.glass_id=b.glass_id,a.order_id=b.order_id,a.state=2,a.glasswidth=b.glasswidth,a.glassheight=b.glassheight,a.glasswidthmm=b.glasswidthmm,a.glassheightmm=b.glassheightmm,a.listid=b.listid,a.boxid=b.boxid,a.FrameBarcode=b.FrameBarcode where a.id=#{id1}")
    void UpdateDBCage(int id1, int cage, int cell, int tier);
     // 进片更换笼子信息
     @Update("update storage_cage as a,(select*from storage_cage b where b.cage=#{cage} and b.cell=#{cell} and b.tier=#{tier})as b set a.glass_id=b.glass_id,a.order_id=b.order_id,a.state=1,a.glasswidth=b.glasswidth,a.glassheight=b.glassheight,a.glasswidthmm=b.glasswidthmm,a.glassheightmm=b.glassheightmm,a.listid=b.listid,a.boxid=b.boxid,a.FrameBarcode=b.FrameBarcode where a.id=#{id1}")
     void UpdateDBCageAdd(int id1, int cage, int cell, int tier);
    // @Insert("insert into user(name, date, address, user_no) values (#{name},
    // #{date}, #{address}, #{userNo})")
@@ -133,8 +136,8 @@
    north_glass_buffer1 SelectDBOut();
    // 根据笼子格子层数获取玻璃id
    @Select("select glass_id from storage_cage where cage=#{cage} and cell=#{cell} and tier=2;")
    String SelectGlassid(int cage, int cell);
    @Select("select glass_id,glasswidth from storage_cage where cage=#{cage} and cell=#{cell} and tier=2;")
    StorageCage SelectGlassid(int cage, int cell);
    // 判断有几块玻璃还在出片中
    @Select("SELECT COUNT(*) FROM `storage_cage` where state=3;")
@@ -231,7 +234,7 @@
    int SelectCageTask(int state,int cage1,int cage2);
    //判断玻璃是否禁用
    @Select(" select disabled from storage_cage where glass_id=#{glassid} limit 1;")
    int SelectCageGlassState(String glassid);
    StorageCage SelectCageGlassState(String glassid);
    //判断汇报的id是否正确
    @Select("SELECT count(*) FROM `storage_cage` where state!=0 and glass_id=#{glassid}")
    int SelectHB(String glassid);
springboot-vue3/src/main/java/com/example/springboot/service/JdbcConnections.java
@@ -23,17 +23,17 @@
    private static final String USERNAME = "root";
    private static final String PASSWORD = "beibo.123/";
    
    private static Connection conn = null;
    private static Connection conns = null;
    private static PreparedStatement ps = null;
    private static ResultSet rs = null;
    private static ResultSet rss = null;
    
    public  north_glass_buffer1 selectGlass(int glassid) throws SQLException {
        conn = getConn();
        Connection conn = getConn();
        north_glass_buffer1 glass=new north_glass_buffer1();
        String sql = "select ordernumber from north_glass_buffer1 where glassid=?";
         ps = conn.prepareStatement(sql);
         ps.setInt(1, glassid);
         rs= ps.executeQuery();
         ResultSet rs= ps.executeQuery();
         while (rs.next()) {
            glass.setordernumber(rs.getString("ordernumber"));
         }
@@ -42,14 +42,14 @@
    }
    public  north_glass_buffer1 SelectGlassByGlassIdOrderIdFrameId(String glassid,String orderid,String frameid) throws SQLException {
        conn = getConn();
        Connection conn = getConn();
        north_glass_buffer1 north_glass_buffer1s=new north_glass_buffer1();
        String sql = "select * from north_glass_buffer1 where barcode=? or ordernumber=? or FrameBarcode=?";
         ps = conn.prepareStatement(sql);
         ps.setString(1, glassid);
         ps.setString(2, orderid);
         ps.setString(3, frameid);
         rs= ps.executeQuery();
         ResultSet rs= ps.executeQuery();
         while (rs.next()) {
            north_glass_buffer1s.setId(rs.getInt("Id"));
            north_glass_buffer1s.setordernumber(rs.getString("ordernumber"));
@@ -66,19 +66,49 @@
            north_glass_buffer1s.setdatecreated(rs.getString("datecreated"));
            north_glass_buffer1s.setFrameBarcode(rs.getString("FrameBarcode"));
         }
        //  conn.close();
         conn.close();
         return north_glass_buffer1s;
    }
    public  north_glass_buffer1 SelectGlassByGlassIdOrderIdFrameIdplchold(String glassid,String orderid,String frameid) throws SQLException {
        Connection conn = getConn();
        north_glass_buffer1 north_glass_buffer1s=new north_glass_buffer1();
        String sql = "select * from north_glass_buffer1 where barcode=? or ordernumber=? or FrameBarcode=?";
         ps = conn.prepareStatement(sql);
         ps.setString(1, glassid);
         ps.setString(2, orderid);
         ps.setString(3, frameid);
         ResultSet rs= ps.executeQuery();
         while (rs.next()) {
            north_glass_buffer1s.setId(rs.getInt("Id"));
            north_glass_buffer1s.setordernumber(rs.getString("ordernumber"));
            north_glass_buffer1s.setlistnumber(rs.getString("listnumber"));
            north_glass_buffer1s.setboxnumber(rs.getString("boxnumber"));
            north_glass_buffer1s.setbarcode(rs.getString("barcode"));
            north_glass_buffer1s.setglasslength(rs.getDouble("glasslength"));
            north_glass_buffer1s.setglassheight(rs.getDouble("glassheight"));
            north_glass_buffer1s.setglasslengthmm(rs.getDouble("glasslength_mm"));
            north_glass_buffer1s.setglassheightmm(rs.getDouble("glassheight_mm"));
            north_glass_buffer1s.setitemtype(rs.getString("itemtype"));
            north_glass_buffer1s.setslotnumber(rs.getString("slotnumber"));
            north_glass_buffer1s.setdatemodified(rs.getString("datemodified"));
            north_glass_buffer1s.setdatecreated(rs.getString("datecreated"));
            north_glass_buffer1s.setFrameBarcode(rs.getString("FrameBarcode"));
         }
         conn.close();
         return north_glass_buffer1s;
    }
    //根据玻璃id,订单id,铝框id查询客户玻璃信息
    public  Queue SelectGlassByGlassIdOrderIdFrameIdQueue(String glassid,String orderid,String frameid) throws SQLException {
        conn = getConn();
        Connection conn = getConn();
        Queue queue=new Queue();
        String sql = "select * from north_glass_buffer1 where barcode=? or ordernumber=? or FrameBarcode=?";
         ps = conn.prepareStatement(sql);
         ps.setString(1, glassid);
         ps.setString(2, orderid);
         ps.setString(3, frameid);
         rs= ps.executeQuery();
         ResultSet rs= ps.executeQuery();
         while (rs.next()) {
            queue.setid(rs.getInt("Id"));
            queue.setorderId(rs.getString("ordernumber"));
@@ -103,7 +133,7 @@
    //根据玻璃id,订单id,铝框id查询客户玻璃信息
    public  List<north_glass_buffer1> SelectGlassByGlassIdOrderIdFrameIds(String glassid,String orderid,String frameid) throws SQLException {
        conn = getConn();
        Connection conn = getConn();
        // north_glass_buffer1 glass=new north_glass_buffer1();
        List<north_glass_buffer1> glass=new ArrayList<north_glass_buffer1>();
        String sql = "select * from north_glass_buffer1 where position(? in barcode) and position(? in ordernumber) and position(? in FrameBarcode)";
@@ -111,7 +141,7 @@
         ps.setString(1, glassid);
         ps.setString(2, orderid);
         ps.setString(3, frameid);
         rs= ps.executeQuery();
         ResultSet rs= ps.executeQuery();
         while (rs.next()) {
            north_glass_buffer1 north_glass_buffer1s=new north_glass_buffer1();
@@ -140,13 +170,13 @@
    //根据铝框id查询客户玻璃信息
    public  List<north_glass_buffer1> SelectGlassByGlassIdOrderIdFrameIdss(String frameid) throws SQLException {
        conn = getConn();
        Connection conn = getConn();
        // north_glass_buffer1 glass=new north_glass_buffer1();
        List<north_glass_buffer1> glass=new ArrayList<north_glass_buffer1>();
        String sql = "select * from north_glass_buffer1 where FrameBarcode=?";
         ps = conn.prepareStatement(sql);
         ps.setString(1, frameid);
         rs= ps.executeQuery();
         ResultSet rs= ps.executeQuery();
         while (rs.next()) {
            north_glass_buffer1 north_glass_buffer1s=new north_glass_buffer1();
@@ -175,13 +205,13 @@
    //根据铝框id查询l铝框是否翻转
    public String SelectFlipByFrameBarcode(String frameBarcode) throws SQLException {
        conn = getConn();
        Connection conn = getConn();
        // north_glass_buffer1 glass=new north_glass_buffer1();
        String flip="";
        String sql1 = "select * from north_glass_buffer1_frames where Barcode=? limit 1";
         ps = conn.prepareStatement(sql1);
         ps.setString(1, frameBarcode);
         rs= ps.executeQuery();
         ResultSet rs= ps.executeQuery();
         while (rs.next()) {
            flip=rs.getString("Flip");
            
@@ -191,15 +221,15 @@
    }
    //根据铝框id查询是否铝框摆放
    public String SelectPositionByFrameBarcode(String frameBarcode) throws SQLException {
           conn = getConn();
        Connection conn = getConn();
        // north_glass_buffer1 glass=new north_glass_buffer1();
        String position="";
        String sql1 = "select * from north_glass_buffer1_frames where Barcode=? limit 1";
         ps = conn.prepareStatement(sql1);
         ps.setString(1, frameBarcode);
         rs= ps.executeQuery();
         ResultSet rs= ps.executeQuery();
         while (rs.next()) {
            position=rs.getString("position");
            position=rs.getString("flip");
         }
         conn.close();
         return position;
@@ -207,13 +237,13 @@
    //根据铝框id查询铝框宽
    public String SelectFrameLengthByFrameBarcode(String frameBarcode) throws SQLException {
           conn = getConn();
        Connection conn = getConn();
        // north_glass_buffer1 glass=new north_glass_buffer1();
        String position="";
        String sql1 = "select * from north_glass_buffer1_frames where Barcode=? limit 1";
         ps = conn.prepareStatement(sql1);
         ps.setString(1, frameBarcode);
         rs= ps.executeQuery();
         ResultSet rs= ps.executeQuery();
         while (rs.next()) {
            position=rs.getString("framelength");
         }
@@ -223,13 +253,13 @@
    //根据铝框id查询铝框高
    public String SelectFrameHeightByFrameBarcode(String frameBarcode) throws SQLException {
           conn = getConn();
        Connection conn = getConn();
        // north_glass_buffer1 glass=new north_glass_buffer1();
        String position="";
        String sql1 = "select * from north_glass_buffer1_frames where Barcode=? limit 1";
         ps = conn.prepareStatement(sql1);
         ps.setString(1, frameBarcode);
         rs= ps.executeQuery();
         ResultSet rs= ps.executeQuery();
         while (rs.next()) {
            position=rs.getString("frameheight");
         }
@@ -257,6 +287,7 @@
    public static Connection getConn() throws SQLException {
        Connection conn = null;
        conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/canadames?serverTimezone=GMT%2B8&characterEncoding=utf-8", "root", "beibo.123/");
        // conn = DriverManager.getConnection("jdbc:mysql://192.168.102.9:3306/production?serverTimezone=GMT%2B8&characterEncoding=utf-8", "northglass", "n0rthgla55");
        return conn;
    }
springboot-vue3/src/main/java/com/example/springboot/service/OutSliceServive.java
@@ -97,7 +97,6 @@
      }
    }
    homeMapper.DeleteByGlassID(glassid);
    
  }
springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java
@@ -7,6 +7,7 @@
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
@@ -17,15 +18,16 @@
import com.example.springboot.mapper.SpianMapper;
import com.google.common.primitives.Bytes;
@Service
public class SpianService {
    @Autowired
    private SpianMapper spianMapper;
    public static List<String> result=new ArrayList<String>();
    // @GetMapping("/all")
    public Short selectAll(north_glass_buffer1 glasslist) {
    try {
        int cage1 = 0;
        int cells;
        int ids;
@@ -34,17 +36,23 @@
        int prctier;
        double width;
        double minwidth = 0;
        //north_glass_buffer1 glasslist = spianMapper.selectGlass(glassid); // 获取玻璃参数
        double widths;
        // north_glass_buffer1 glasslist = spianMapper.selectGlass(glassid); // 获取玻璃参数
        // 如果没有此id时
        if (glasslist == null) {
            return (300);
        }
        if(glasslist.getglasslengthmm()>glasslist.getglassheightmm()) {
            widths= glasslist.getglasslengthmm();
        }else{
            widths= glasslist.getglassheightmm();
        }
        // Map result=new HashMap();
        double widths = glasslist.getglasslengthmm();
        String orderids = glasslist.getordernumber();
        String FrameBarcode = glasslist.getFrameBarcode();
        String glassid=glasslist.getbarcode();
        String glassid = glasslist.getbarcode();
        List<String> adddresslist = new ArrayList<>();
        adddresslist.add("DB105.0");// 进片车起始位置
        adddresslist.add("DB105.2");// 进片车目标位置
@@ -70,10 +78,10 @@
            // 保存订单优先顺序笼子号
            cage1 = storageCage2.getCage();
            // 判断该笼子号相邻最大的空格数
            int cages = spianMapper.selectCage(cage1);
            StorageCage cages = spianMapper.selectCage(cage1);
            // 如果相邻笼子没有空格,或者有正在执行的出片任务时返回400
            if (cages == 0) {
            if (cages == null) {
                return (400);
            }
            StorageCage cages1;
@@ -86,13 +94,13 @@
            }
            // 判断选中笼子是否有合适宽度空格
            // 有合适空格时进片
            if (cages1 != null && cages >= 1 && storageCage2.getDisabled() == 0) {
            if (cages1 != null && cages.getCell() >= 1 && storageCage2.getDisabled() == 0) {
                ids = cages1.getId();// 数据库ID
                tiers = cages1.getTier();// 内外片
                cells = cages1.getCell();// 格子号
                prcid = cages1.getPrcId();// 传给prc的目标地id
                width = cages1.getWidth();// 格子剩余宽度
                widths = glasslist.getglasslengthmm();
                // 执行进片
                datas.add((short) 1000);// 起始位置
@@ -103,54 +111,66 @@
                // 获取该格子内是否有玻璃
                int cellint = spianMapper.selectcell(cage1, cells);
                if (cellint == 1) {
                    // 将外片玻璃的数据更新到内片
                    spianMapper.UpdateDBCage(ids, cage1, cells, 1);
                    // 将新入的玻璃存入外片
                    spianMapper.UpdataAddCage2(orderids, glassid, glasslist, cage1, cells, ids - 1, 2);
                    spianMapper.UpdataAddCage1(widths, cage1, cells);// 减少格子宽度
                    result.add("进片任务|feedstart1:" + datas+ LocalDateTime.now());
                    outmesid(glassid, "DB105.20");
                    S7control.getinstance().WriteWord(adddresslist, datas);
                    boolean qidong = listbool("DB105.16");
                    int qidong2 = 0;
                    if (qidong == true) {
                        qidong2 = 1;
                    }else{
                    } else {
                        while (qidong) {
                            S7control.getinstance().WriteWord("DB105.16", (short) 1);// 出片任务发送字改为1
                            qidong = listbool("DB105.16");
                        }
                    }
                    spianMapper.Inserttask(0, 0, 1000, ids, glassid.toString(), prctier,qidong2);// 新增任务
                    System.out.println("进片任务|" + datas);
                    // 将外片玻璃的数据更新到内片
                    spianMapper.UpdateDBCageAdd(ids, cage1, cells, 1);
                    // 将新入的玻璃存入外片
                    spianMapper.UpdataAddCage2(orderids, glassid, glasslist, cage1, cells, ids - 1, 2,widths);
                    spianMapper.UpdataAddCage1(widths, cage1, cells);// 减少格子宽度
                    spianMapper.Inserttask(0, 0, 1000, ids, glassid.toString(), prctier, qidong2);// 新增任务
                    result.add("进片任务|feedend1" + datas+ LocalDateTime.now());
                } else {
                    // 数据库修改笼子表新增一条玻璃
                    spianMapper.UpdataAddCage2(orderids, glassid, glasslist, cage1, cells, ids, 2);
                    spianMapper.UpdataAddCage1(widths, cage1, cells);// 减少格子宽度
                    S7control.getinstance().WriteWord(adddresslist, datas);
                    result.add("进片任务|feedstart2" + datas+ LocalDateTime.now());
                    outmesid(glassid, "DB105.20");
                    S7control.getinstance().WriteWord(adddresslist, datas);
                    boolean qidong = listbool("DB105.16");
                    int qidong2 = 0;
                    if (qidong == true) {
                        qidong2 = 1;
                    } else {
                        while (qidong) {
                            S7control.getinstance().WriteWord("DB105.16", (short) 1);// 出片任务发送字改为1
                            qidong = listbool("DB105.16");
                        }
                    }
                    spianMapper.Inserttask(0, 0, 1000, ids, glassid.toString(), prctier,qidong2);// 新增任务
                    System.out.println("进片任务|" + datas);
                    spianMapper.UpdataAddCage2(orderids, glassid, glasslist, cage1, cells, ids, 2,widths);
                    spianMapper.UpdataAddCage1(widths, cage1, cells);// 减少格子宽度
                    spianMapper.Inserttask(0, 0, 1000, ids, glassid.toString(), prctier, qidong2);// 新增任务
                    result.add("进片任务|feedend2" + datas+ LocalDateTime.now());
                }
                outmesid(glassid, "DB105.20");
                return (200);
            }
        }
        return (400);
    } catch (Exception e) {
        e.printStackTrace();
        return (500);
        // TODO: handle exception
    }
    }
    public Short selectout2(String glassid) {
        try {
        // 定义PRC数据传送数组
        List<String> adddresslist = new ArrayList<>();
        char[] a = glassid.toCharArray();
@@ -189,14 +209,14 @@
            spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 增加原格子宽度
            spianMapper.UpdataGlassCageState(glassid.toString(), 3);// 更改笼子表的玻璃状态
            System.out.println("出片任务|" + datas);
            result.add("出片任务|outstart1" + datas+ LocalDateTime.now());
            S7control.getinstance().WriteWord(adddresslist, datas);// 派发出片车任务
            S7control.getinstance().WriteWord("DB105.18", (short) 1);// 出片任务发送字改为1
            //S7control.getinstance().WriteWord("DB105.18", (short) 1);// 出片任务发送字改为1
            boolean qidong = listbool("DB105.18");
            int qidong2 = 0;
            if (qidong == true) {
                qidong2 = 1;
            }else{
            } else {
                while (qidong) {
                    S7control.getinstance().WriteWord("DB105.18", (short) 1);// 出片任务发送字改为1
                    qidong = listbool("DB105.18");
@@ -204,7 +224,7 @@
            }
            spianMapper.Inserttask(1, 0, cageout.getId(), 1000, glassid, state, qidong2);// 新增任务
            outmesid(glassid, "DB105.34");// 派发出片ID
            result.add("出片任务|outend1" + datas+ LocalDateTime.now());
            return (200);// 结束
        } else {
            // 获取格子的玻璃数量
@@ -216,26 +236,25 @@
                datas.add((short) 1000);
                datas.add((short) 1);
                datas.add((short) 1);
                spianMapper.OverOutSlice(glassid.toString(), 1, 0);// 更新出片队列任务状态为进行中
                spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 增加原格子宽度
                spianMapper.UpdataGlassCageState(glassid, 3);// 更改笼子表的玻璃状态
                System.out.println("出片任务|" + datas);
                result.add("出片任务|outstart2" + datas+ LocalDateTime.now());
                outmesid(glassid, "DB105.34");// 派发出片ID
                S7control.getinstance().WriteWord(adddresslist, datas);// 派发出片车任务
                S7control.getinstance().WriteWord("DB105.18", (short) 1);// 出片任务发送字改为1
                //S7control.getinstance().WriteWord("DB105.18", (short) 1);// 出片任务发送字改为1
                boolean qidong = listbool("DB105.18");
                int qidong2 = 0;
                if (qidong == true) {
                    qidong2 = 1;
                }else{
                } else {
                    while (qidong) {
                        S7control.getinstance().WriteWord("DB105.18", (short) 1);// 出片任务发送字改为1
                        qidong = listbool("DB105.18");
                    }
                }
                spianMapper.OverOutSlice(glassid.toString(), 1, 0);// 更新出片队列任务状态为进行中
                spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 增加原格子宽度
                spianMapper.UpdataGlassCageState(glassid, 3);// 更改笼子表的玻璃状态
                spianMapper.Inserttask(1, 0, cageout.getId(), 1000, glassid, 1, qidong2);// 新增任务
                result.add("出片任务|outend2" + datas+ LocalDateTime.now());
                return (200);// 结束
            } else {
@@ -257,29 +276,29 @@
                    datas.add((short) 2);
                    datas.add((short) 1);
                    // 更换玻璃的笼子
                    String glassids = spianMapper.SelectGlassid(cage, cell); // 获取被调拨的玻璃id
                    spianMapper.UpdataGlassCageState(glassids, 3);// 更改笼子表的玻璃状态
                    spianMapper.UpdateDBCage(ids, cage, cell, 2);// 将原格子数据更新到新格子里
                    spianMapper.UpdataAddCage1(glasswidth, cages, cells);// 减少新格子宽度
                    spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 增加原格子宽度
                    // 传输mes数据,坐标,数据
                    System.out.println("出片任务|" + datas);
                    S7control.getinstance().WriteWord(adddresslist, datas);// 派发出片车任务
                    S7control.getinstance().WriteWord("DB105.18", (short) 1);// 出片任务发送字改为1
                    outmesid(glassids, "DB105.34");// 派发调拨玻璃ID
                    StorageCage glassids = spianMapper.SelectGlassid(cage, cell); // 获取被调拨的玻璃id
                    // 传输mes数据,坐标,数据
                    result.add("出片任务|outstart3" + datas+ LocalDateTime.now());
                    outmesid(glassids.getGlassId(), "DB105.34");// 派发调拨玻璃ID
                    S7control.getinstance().WriteWord(adddresslist, datas);// 派发出片车任务
                    //S7control.getinstance().WriteWord("DB105.18", (short) 1);// 出片任务发送字改为1
                    boolean qidong = listbool("DB105.18");
                    int qidong2 = 0;
                    if (qidong == true) {
                        qidong2 = 1;
                    }else{
                    } else {
                        while (qidong) {
                            S7control.getinstance().WriteWord("DB105.18", (short) 1);// 出片任务发送字改为1
                            qidong = listbool("DB105.18");
                        }
                    }
                    spianMapper.Inserttask(2, 0, cageout.getId(), ids, glassids, 2, qidong2);// 新增调度任务
                    spianMapper.UpdataGlassCageState(glassids.getGlassId(), 3);// 更改笼子表的玻璃状态
                    spianMapper.UpdateDBCage(ids, cage, cell, 2);// 将原格子数据更新到新格子里
                    spianMapper.UpdataAddCage1(glassids.getGlassWidth(), cages, cells);// 减少新格子宽度
                    spianMapper.UpdataOutCage1(glassids.getGlassWidth(), cage, cell);// 增加原格子宽度
                    spianMapper.Inserttask(2, 0, cageout.getId(), ids, glassids.getGlassId(), 2, qidong2);// 新增调度任务
                    result.add("出片任务|outend3" + datas+ LocalDateTime.now());
                    return (200); // 结束
                } else {// 笼子号大于5时
@@ -297,39 +316,45 @@
                    datas.add((short) prcid2);
                    datas.add((short) 2);
                    datas.add((short) 1);
                    String glassids = spianMapper.SelectGlassid(cage, cell); // 获取被调拨的玻璃id
                    StorageCage glassids = spianMapper.SelectGlassid(cage, cell); // 获取被调拨的玻璃id
                    // 传输mes数据,坐标,数据
                    System.out.println("出片任务|" + datas);
                    result.add("出片任务|outstart4" + datas+ LocalDateTime.now());
                    outmesid(glassids.getGlassId(), "DB105.34");// 派发调拨玻璃ID
                    S7control.getinstance().WriteWord(adddresslist, datas);// 派发出片车任务
                    S7control.getinstance().WriteWord("DB105.18", (short) 1);// 出片任务发送字改为1
                    outmesid(glassids, "DB105.34");// 派发调拨玻璃ID
                    spianMapper.UpdataGlassCageState(glassids, 3);// 更改笼子表的玻璃状态
                    //S7control.getinstance().WriteWord("DB105.18", (short) 1);// 出片任务发送字改为1
                    boolean qidong = listbool("DB105.18");
                    int qidong2 = 2;
                    if (qidong == true) {
                        qidong2 = 1;
                    }else{
                    } else {
                        while (qidong) {
                            S7control.getinstance().WriteWord("DB105.18", (short) 1);// 出片任务发送字改为1
                            qidong = listbool("DB105.18");
                        }
                    }
                    spianMapper.Inserttask(2, 0, cageout.getId() + 1, ids, glassids, 2, qidong2);// 新增调度任务
                    spianMapper.UpdataGlassCageState(glassids.getGlassId(), 3);// 更改笼子表的玻璃状态
                    spianMapper.UpdateDBCage(ids, cage, cell, 2);// 将原格子数据更新到新格子里
                    spianMapper.UpdataAddCage1(glasswidth, cages, cells);// 减少新格子宽度
                    spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 增加原格子宽度
                    spianMapper.UpdataAddCage1(glassids.getGlassWidth(), cages, cells);// 减少新格子宽度
                    spianMapper.UpdataOutCage1(glassids.getGlassWidth(), cage, cell);// 增加原格子宽度
                    spianMapper.Inserttask(2, 0, cageout.getId() + 1, ids, glassids.getGlassId(), 2, qidong2);// 新增调度任务
                    result.add("出片任务|outend4" + datas+ LocalDateTime.now());
                    return (200);// 结束
                }
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
        return (500);
        // TODO: handle exception
    }
}
    // 派发任务玻璃id
    public void outmesid(String glassid, String address) {
        try {
        // System.out.println("outmesid:" + glassid);
        List<Byte> glassidlist = new ArrayList();
        char ds[] = glassid.toCharArray();
@@ -339,7 +364,9 @@
        byte[] bytes = Bytes.toArray(glassidlist);
        System.out.println("outmesidbytes:" + bytes.length);
        S7control.getinstance().WriteByte(address, bytes);// 派发出片id
    } catch (Exception e) {
        e.printStackTrace();
    }
    }
    // 获取地址内的玻璃id转字符串
springboot-vue3/src/main/java/com/example/springboot/service/SpianServiceNew.java
File was deleted
springboot-vue3/src/main/java/com/example/springboot/service/StorageCageService.java
@@ -38,6 +38,7 @@
        String A02glassid1 = spianService.queGlassid("DB103.156", 14).toString();
        String B01glassid = spianService.queGlassid("DB103.184", 14).toString();
        String B02glassid = spianService.queGlassid("DB103.212", 14).toString();
        String D02glassid = spianService.queGlassid("DB103.58", 14).toString();
        List<Short> DeviceList = S7control.getinstance().ReadWord("DB103.0", 10);
        if (types == 0) {// 终止进片任务
            List<StorageTask> cageList = homeMapper.SelectTaskByState(types);
@@ -56,6 +57,10 @@
                    ClearGlassId("DB101.10.3");
                    outSliceServive.StopTask(storageTask.getGlassId(), types);
                }
                if (storageTask.getGlassId().equals(D02glassid) && DeviceList.get(1) == 0) {
                    ClearGlassId("DB101.9.3");
                    outSliceServive.StopTask(storageTask.getGlassId(), types);
                }
            }
            // 发送终止进片任务信号
        } else {// 终止出片任务