wu
2023-12-12 9378b8427a86982cb7f408d787384dad12496310
优化任务完成的逻辑处理
3个文件已修改
79 ■■■■ 已修改文件
springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java 53 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java
@@ -1,4 +1,5 @@
package com.example.springboot.component;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import com.example.springboot.service.JdbcConnections;
@@ -15,7 +16,7 @@
  private JdbcConnections jdbcConnections;
  private SpianMapper spianMapper;
  private SpianService spianService;
  @Override
  public void run() {
    boolean inglassbegin = false;
@@ -28,7 +29,7 @@
        // \\ TODO Auto-generated catch block
        e.printStackTrace();
      }
       spianService = WebSocketServer.applicationContext.getBean(SpianService.class);
      spianService = WebSocketServer.applicationContext.getBean(SpianService.class);
      spianMapper = WebSocketServer.applicationContext.getBean(SpianMapper.class);
      jdbcConnections = WebSocketServer.applicationContext.getBean(JdbcConnections.class);
      // 根据玻璃id获取订单号,单独数据源
@@ -37,9 +38,8 @@
      // // System.out.println(glass.getOrderId());
      // } catch (SQLException e) {
      // // TODO Auto-generated catch block
      // e.printStackTrace();
      // e.printStackTrace();
      // }
      //spianService.selectAll("X12345610102GV");
      List<Short> datas1List = S7control.getinstance().ReadWord("DB106.24", 1);// 获取prc进片请求数据
      List<Short> datas1ListState = S7control.getinstance().ReadWord("DB106.8", 1);// 获取进片车状态
      List<Short> datas1ListState2 = S7control.getinstance().ReadWord("DB105.16", 1);// 获取进片车任务是否启动
@@ -50,27 +50,17 @@
      StringBuilder B02glassid = spianService.queGlassid("DB103.212", 14);// B02的玻璃id
      // 当进片小车完成任务时
      if (B01backs == true) {
        // 当B01小车汇报完成时更改玻璃状态  为1
        spianMapper.UpdateCageOver(B01glassid.toString(), 1);// 更改笼子表进片状态
        spianMapper.Updatetask(1, 0);// 更改进片任务状态为1
        spianMapper.UpdatetaskOut(B01glassid.toString()); // 完成上一次出片或者进片任务
        spianMapper.OverOutSlice(B01glassid.toString(), 2);// 完成出片队列任务
        spianMapper.UpdataGlassCage(B01glassid.toString(),0);// 清除出片格子玻璃信息
        // 当B01小车汇报完成时更改玻璃状态 为1
        spianService.overtask(B01glassid.toString());// 完成任务
        S7control.getinstance().WriteWord("DB106.60", (short) 0);// 恢复B01小车应答改为0
        System.out.println("汇报时B01|" + B01glassid);
        // S7control.getinstance().WriteWord("DB105.48", (short) 1);//汇报B01小车收到
      }
      // 当出片小车完成任务时
      if (B02backs == true) {
        // 当B02小车汇报完成时更改玻璃状态为0
        spianMapper.UpdateCageOver(B02glassid.toString(), 0);// 更改笼子表出片状态
        spianMapper.UpdatetaskOut(B02glassid.toString()); // 完成上一次出片或者进片任务
        spianMapper.OverOutSlice(B02glassid.toString(), 2);// 完成出片队列任务
        spianMapper.UpdataGlassCage(B01glassid.toString(),0);// 清除出片格子玻璃信息
        spianService.overtask(B02glassid.toString());// 完成任务
        S7control.getinstance().WriteWord("DB106.62", (short) 0);// 恢复B02小车应答改为0
        // S7control.getinstance().WriteWord("DB105.50", (short) 1);//汇报B02小车收到
        System.out.println("汇报时B02|" + B02glassid);
      }
@@ -78,8 +68,7 @@
      StringBuilder queueid1 = spianService.queGlassid("DB106.26", 14);// 获取请求的id跟DO1同时清
      // 获取DO2数据
      StringBuilder queueid2 = spianService.queGlassid("DB103.58", 14);
//      System.out.println("D01|" + queueid1);
//      System.out.println("D02|" + queueid2);
      int questate = spianMapper.Selectquecount(queueid1.toString());// 判断扫码位是否有玻璃已确认
      // queueid1.toString().isEmpty()
@@ -124,36 +113,18 @@
      boolean outstate = false;// 出片车空闲判断
      boolean outstate1 = false;// 出片车任务是否启动
      if (outlist != null && outlist1 != null) {
        // 判断按订单出片
        outstate = outlist.contains((short) 0);// 出片车空闲判断 当出片车空闲时为true
        outstate1 = outlist1.contains((short) 1);// 出片车任务是否启动 当出片车任务启动时为true
        north_glass_buffer1 glass = spianMapper.SelectDBOut();// 判断是否有调拨后的出片任务未完成
        if (!outglassbegin & !outstate)// 当任务还未开始,且出片车不空闲时,任务状态改为开始
        {
          outglassbegin = true;
        }
        if (outglassbegin & outstate)// 当任务开始且出片车空闲时
        {
          outglassbegin = false;
        }
        if (outstate == true & glass.getbarcode() != null&&Plchome.isAllowQueue==true) { // 当出片车空闲且有出片任务待完成时
          // 判断有两个出片或调拨任务时并且出片id和未完成的出片任务id不一样时执行出片
          if (!writedstrIdOut.toString().equals(glass.getbarcode().toString())) {
            spianService.selectout2(glass.getbarcode().toString());
            outstate = false;
          }
        }
        // 判断当前是否有未执行的任务
        int outnum = spianMapper.SelectOutSliceshu();
        // 当没有任务执行并且出片车空闲时
        if (outnum == 0 && outstate == true&&Plchome.isAllowQueue==true) {
        if (outnum == 0 && outstate == true && Plchome.isAllowQueue == true) {
          // 判断铝框出片队列表是否有待出片的玻璃
          String outglassid = spianMapper.SelectOutSlice();
          if (outglassid != null) {
            spianService.selectout2(outglassid);
            outstate = false;
          }
springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java
@@ -163,6 +163,17 @@
     //更新出片队列的任务状态
     @Update("update out_slice set state=#{state} where glassid=#{glassid}")
     void OverOutSlice(String glassid,int state);
     //获取玻璃的铝框id
     @Select("select barcode from out_slice where glassid=#{glassid};")
     String SelectBarcode(String glassId);
     //获取出片队列的铝框是否全部完成
     @Select("select MIN(state) from out_slice where barcode=#{barcode};")
     int SelectOverState(String barcode);
     //删除出片队列该铝框的id
     @Delete("delete from out_slice where barcode=#{barcode};")
     void DeleteQueue(String barcode);
     //把该进片的玻璃更新到出片队列
     @Select("update out_slice set state=0 where glassId=#{glassId} and state=3")
     void UpdateAddQueue(String glassId);
}   
    
springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java
@@ -288,4 +288,17 @@
       boolean listbool = list.contains((short) 1);
        return listbool;
    }
    //根据玻璃id完成在进行中的任务
    public void overtask(String glassid){
        spianMapper.UpdateCageOver(glassid, 0);// 更改笼子表出片状态
        spianMapper.UpdatetaskOut(glassid); // 完成上一次出片或者进片任务
        spianMapper.OverOutSlice(glassid, 2);// 完成出片队列任务
        spianMapper.UpdataGlassCage(glassid,0);// 清除出片格子玻璃信息
        String barcode=spianMapper.SelectBarcode(glassid);//获取该玻璃的铝框id
        spianMapper.UpdateAddQueue(glassid);//把进片的玻璃更新到出片队列中
        int barcodeState=spianMapper.SelectOverState(barcode);//获取该铝框的状态
        if(barcodeState==2){//当该铝框所有的玻璃都是完成状态时删除在出片队列的数据
            spianMapper.DeleteQueue(barcode);
        }
    }
}