ZengTao
2024-04-29 7687eb6cc76ab8ca20b39e7567255939abc4ff66
修改进片逻辑判断,添加异常捕获
26个文件已修改
2个文件已删除
1193 ■■■■■ 已修改文件
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 80 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PLCAutomaticParameterSetting.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PLCManualJog.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java 75 ●●●●● 补丁 | 查看 | 原始文档 | 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 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcLayout.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition2.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter2.java 52 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcPositioning1.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcServoManualone.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/Plcalarm.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java 32 ●●●●● 补丁 | 查看 | 原始文档 | 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 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/Plcsign.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/Plcstate.java 8 ●●●● 补丁 | 查看 | 原始文档 | 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 139 ●●●●● 补丁 | 查看 | 原始文档 | 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'>
                        {{
@@ -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,21 +17,15 @@
  // 创建一个自定义的 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);
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
      // System.out.println(stt);
      List<Short> arraylist = S7control.getinstance().ReadWord("DB100.120", 8);
@@ -44,7 +38,6 @@
//翻转
      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));
@@ -79,7 +72,8 @@
        for (WebSocketServer webserver : sendwServer) {
          webserver.sendMessage(jsonObject.toString());
//      WebSocketServer webSocketServer = WebSocketServer.sessionMap.get("AutomaticParameterSetting");
            // WebSocketServer webSocketServer =
            // WebSocketServer.sessionMap.get("AutomaticParameterSetting");
          if (webserver != null) {
            List<String> messages = webserver.getMessages();
            String addressList1 = "DB100.120";
@@ -166,6 +160,10 @@
        }
      }
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
    }
  }
}
springboot-vue3/src/main/java/com/example/springboot/component/PLCManualJog.java
@@ -33,13 +33,6 @@
        while (this != null) {
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
           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,13 +26,8 @@
    while (this != null) {
      try {
        Thread.sleep(100);
      } catch (InterruptedException e) {
        // \\ TODO Auto-generated catch block
        e.printStackTrace();
      }
        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,11 +42,7 @@
      //   // 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);
            StorageCage glassdisabled = spianMapper.SelectCageGlassState(outglassid);
            if(glassdisabled!=null){
            // 未禁用下发任务
            if (glassdisabled == 0) {
            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) {
            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,14 +158,21 @@
      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();
      }
@@ -174,7 +180,7 @@
      // 当扫码位玻璃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,53 +15,45 @@
        config = new Configuration("config.properties");
    }
    // 创建一个自定义的 S7 控制器消息处理器对象
    MessageHandler customS7Control = new MessageHandler();
    @Override
    public void run() {
        while (this != null) {
            try {
                Thread.sleep(100);
            } 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> 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> 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> 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> 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> 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> 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));
@@ -77,8 +69,6 @@
//            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();
@@ -90,8 +80,8 @@
            jsonArray.put(arraylist6);
            jsonObject.put("zuhe1", jsonArray);
//      WebSocketServer sendwServer = WebSocketServer.sessionMap.get("ManualonePosition");
                // WebSocketServer sendwServer =
                // WebSocketServer.sessionMap.get("ManualonePosition");
//      if (sendwServer != null) {
//        sendwServer.sendMessage(jsonObject.toString());
//      }
@@ -101,9 +91,12 @@
                for (WebSocketServer webserver : sendwServer) {
                    webserver.sendMessage(jsonObject.toString());
                    }
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
                }
            }
        }
    }
}
springboot-vue3/src/main/java/com/example/springboot/component/PlcLayout.java
@@ -52,20 +52,13 @@
        while (this != null) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            JSONObject jsonObject = new JSONObject();
            // 注入mapper
            homeMapper = WebSocketServer.applicationContext.getBean(HomeMapper.class);
            if (S7control.getinstance().CheckConnected() == true) {
               
                // 查询报警信息
            List<alarmmg> alarmmg = homeMapper.SelectAlarmmgInfo();
@@ -111,6 +104,10 @@
                }
            }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition.java
@@ -54,10 +54,6 @@
        while (this != null) {
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            // 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,10 +52,6 @@
        while (this != null) {
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            // 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,10 +31,6 @@
        while (this != null) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            storageCageService = WebSocketServer.applicationContext.getBean(StorageCageService.class);
            //  id
            List<String> addressList1 = Arrays.asList(config.getProperty("Parameter2.id").split(","));
@@ -63,19 +57,20 @@
            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"));
                // 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"};
                // 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,
                // Boolean[] value4 = { false, false, false, false, false, false, false, false,
                // false,
//              false};
//     List<Boolean> data2 = new ArrayList<>(Arrays.asList(value4));
//      String[] values3 = { ".x11 ","x21 "};
@@ -108,8 +103,8 @@
            jsonObject.append("jiting", anniuparams);
            jsonObject.append("timeout", readtimeout);
//      WebSocketServer sendwServer = WebSocketServer.getWebSocketServer("Parameter2");
                // WebSocketServer sendwServer =
                // WebSocketServer.getWebSocketServer("Parameter2");
//      if (sendwServer != null) {
//        JSONObject jsonObject = new JSONObject();
//        jsonObject.set("message", "Hello, Parameter2!");
@@ -122,7 +117,6 @@
                    webserver.sendMessage(jsonObject.toString());
                    if (webserver != null) {
                        List<String> messages = webserver.getMessages();
@@ -134,7 +128,6 @@
                            JSONArray messageArray = new JSONArray(lastMessage);
                            //清除ID
                            // customS7Control.writeBitToPLC(messageArray, addressList0, 0);
                            try {
                                // 检查索引是否有效
@@ -156,8 +149,9 @@
                                                boolean val = "1".equals(cleanedValue.trim());
                                                // 将布尔值添加到布尔值列表中
                                                sValue.add(val);
                                                System.out.println("messageValue: " + Arrays.asList(val) + " added to the list");
                                                    System.out.println(
                                                            "messageValue: " + Arrays.asList(val)
                                                                    + " added to the list");
                                            } catch (NumberFormatException e) {
                                                // 如果无法解析为 boolean 类型,则忽略该部分
@@ -194,13 +188,14 @@
                                                }
                                            }
                                        // 检查布尔值列表是否为空
                                        if (!sValue.isEmpty()) {
                                            // 调用 S7control.getinstance().WriteBit 方法将布尔值列表写入地址列表
                                            S7control.getinstance().WriteBit(addressList0, sValue);
                                            System.out.println("Values " + sValue + " written to PLC at address " + addressList0);
                                                    System.out
                                                            .println("Values " + sValue + " written to PLC at address "
                                                                    + addressList0);
                                        }
                                        }
                                    }
@@ -208,7 +203,6 @@
                            } catch (Exception e) {
                                System.err.println("An error occurred while writing bit to PLC: " + e.getMessage());
                            }
                            //急停
//                            customS7Control.writeBitToPLC(messageArray, niuanaddressList3, 1);
@@ -233,8 +227,9 @@
                                                boolean val = "1".equals(cleanedValue.trim());
                                                // 将布尔值添加到布尔值列表中
                                                sValue.add(val);
                                                System.out.println("messageValue: " + Arrays.asList(val) + " added to the list");
                                                    System.out.println(
                                                            "messageValue: " + Arrays.asList(val)
                                                                    + " added to the list");
                                            } catch (NumberFormatException e) {
                                                // 如果无法解析为 boolean 类型,则忽略该部分
@@ -259,17 +254,17 @@
                                        // 调用 S7control.getinstance().WriteBit 方法将布尔值列表写入地址列表
                                        S7control.getinstance().WriteBit(niuanaddressList3, sValue);
                                        System.out.println("Values " + sValue + " written to PLC at address " + niuanaddressList3);
                                            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();
@@ -277,7 +272,10 @@
                    }
                }
            }
        }
    }
            } catch (InterruptedException e) {
                e.printStackTrace();
}
        }
    }
}
springboot-vue3/src/main/java/com/example/springboot/component/PlcPositioning1.java
@@ -24,21 +24,15 @@
    // 创建一个自定义的 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);
            //存片格  出片格读取
@@ -46,8 +40,8 @@
          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 };
            // 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);
@@ -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 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) {
@@ -77,7 +70,6 @@
                    if (webserver != null) {
                        List<String> messages = webserver.getMessages();
                        //存片格  出片格地址
                        if (!messages.isEmpty()) {
                            // 将最后一个消息转换为 short 类型的列表
@@ -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,13 +12,11 @@
public class PlcServoManualone extends Thread {
    // 用于存储应用程序的配置信息
    private Configuration config;
    // 创建一个自定义的 S7 控制器消息处理器对象
    MessageHandler customS7Control = new MessageHandler();
    public PlcServoManualone() throws IOException {
        config = new Configuration("config.properties");
@@ -65,18 +63,11 @@
        return writedstrIdOut;
    }
    @Override
    public void run() {
        while (this != null) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
//A01组合中地址表集合
            List<String> addresses = Arrays.asList(config.getProperty("A01.addresses").split(","));
            //System.out.println(addresses);
@@ -138,9 +129,7 @@
            List<Boolean> resumeTasks = S7control.getinstance().readBits(abortresumeTasks);
            short[] combinedBinaryShortArray = PLCBooleanConverter.convertListsToBinaryShortArray(
                    A01readBstart, A01readstart, A02readsBtart, A02readstart
            );
                        A01readBstart, A01readstart, A02readsBtart, A02readstart);
            // 回零地址
@@ -172,7 +161,6 @@
                rReset[i] = value ? (short) 1 : (short) 0;
            }
//所有未回零按钮转换为1和0
            List<Boolean> arraylist8 = S7control.getinstance().readBits(addresses8);
            short[] params = new short[arraylist8.size()];
@@ -180,7 +168,6 @@
                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));
@@ -234,8 +221,8 @@
            jsonObject.append("resumeTasks", resumeTask);
//      WebSocketServer sendwServer = WebSocketServer.sessionMap.get("ServoManualone");
                // WebSocketServer sendwServer =
                // WebSocketServer.sessionMap.get("ServoManualone");
//      if (sendwServer != null) {
//        sendwServer.sendMessage(jsonObject.toString());
//      }
@@ -245,10 +232,8 @@
                for (WebSocketServer webserver : sendwServer) {
                    webserver.sendMessage(jsonObject.toString());
                    if (webserver != null) {
                        List<String> messages = webserver.getMessages();
                        if (!messages.isEmpty()) {
                            // 将最后一个消息转换为 short 类型的列表
@@ -256,14 +241,11 @@
//        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);
@@ -285,14 +267,16 @@
                          //A02半自动启动
                          customS7Control.writeBitToPLC(messageArray, A02start, 9);
                          // 清空消息列表
                            webserver.clearMessages();
                        }
                    }
                }
            }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
springboot-vue3/src/main/java/com/example/springboot/component/Plcalarm.java
@@ -78,10 +78,6 @@
    while (this != null) {
      try {
        Thread.sleep(1000);
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
      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,13 +296,7 @@
                            }
                        }
                    }
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            boolean dbconnected = false;
            try {
                dbserve.getConn();
@@ -321,6 +325,10 @@
                }
            }
            } 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,10 +15,6 @@
        while (this != null) {
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                // \\ TODO Auto-generated catch block
                e.printStackTrace();
            }
            spianMapper = WebSocketServer.applicationContext.getBean(SpianMapper.class);
            spianService = WebSocketServer.applicationContext.getBean(SpianService.class);
            StringBuilder B01glassid = spianService.queGlassid("DB103.184", 14);// BO1的玻璃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,16 +61,13 @@
    while (this != null) {
      try {
        Thread.sleep(1000);
      } 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(PlcAddress,
        // Plccount);
       List<Boolean> plclist = S7control.getinstance().ReadBits("DB102.0.0", 112);
//       Boolean[] values = { true, true, true, true, true, false, true, false,
@@ -107,6 +104,10 @@
          }
        }
      }
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
    }
  }
}
springboot-vue3/src/main/java/com/example/springboot/component/Plcstate.java
@@ -61,10 +61,6 @@
    while (this != null) {
      try {
        Thread.sleep(1000);
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
//      this.readValue();
//      String PlcAddress = this.name;
//      Integer Plccount = this.count;
@@ -96,6 +92,10 @@
        }
      }
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
    }
  }
}
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,14 +18,15 @@
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;
@@ -34,14 +36,20 @@
        int prctier;
        double width;
        double minwidth = 0;
        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();
@@ -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,13 +111,8 @@
                // 获取该格子内是否有玻璃
                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;
@@ -121,36 +124,53 @@
                            qidong = listbool("DB105.16");
                        }
                    }
                    // 将外片玻璃的数据更新到内片
                    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);// 新增任务
                    System.out.println("进片任务|" + datas);
                    result.add("进片任务|feedend1" + datas+ LocalDateTime.now());
                } else {
                    // 数据库修改笼子表新增一条玻璃
                    spianMapper.UpdataAddCage2(orderids, glassid, glasslist, cage1, cells, ids, 2);
                    spianMapper.UpdataAddCage1(widths, cage1, cells);// 减少格子宽度
                    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.UpdataAddCage2(orderids, glassid, glasslist, cage1, cells, ids, 2,widths);
                    spianMapper.UpdataAddCage1(widths, cage1, cells);// 减少格子宽度
                    spianMapper.Inserttask(0, 0, 1000, ids, glassid.toString(), prctier,qidong2);// 新增任务
                    System.out.println("进片任务|" + datas);
                    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,9 +209,9 @@
            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) {
@@ -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,15 +236,10 @@
                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) {
@@ -235,7 +250,11 @@
                        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,17 +276,13 @@
                    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) {
@@ -278,8 +293,12 @@
                            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,14 +316,12 @@
                    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) {
@@ -315,21 +332,29 @@
                            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 {// 终止出片任务