wuyouming666
2023-11-30 f35b7028fc2c980f1ad1afefa17e9adf55b7a1d0
springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java
@@ -22,8 +22,6 @@
    private SpianMapper spianMapper;
    // @GetMapping("/all")
    // 进片任务,传订单id
    // 按订单优先进片
    public Short selectAll(String glassid) {
        int cage1;
@@ -96,6 +94,7 @@
                    spianMapper.UpdataAddCage1(widths, cage1, cells);// 减少格子宽度
                    spianMapper.Inserttask(0, 0, 1000, ids, glassid.toString());// 新增任务
                    S7control.getinstance().WriteWord(adddresslist, datas);
                }else{
                 // 数据库修改笼子表新增一条玻璃
                spianMapper.UpdataAddCage(orderids.toString(), glassid, widths, cage1, cells, ids, 2);
@@ -105,7 +104,7 @@
                // S7control.getinstance().WriteByte("DB105.16",glassid);
                }
                outmesid(glassid,"DB105.20");
                return (200);
            }
@@ -157,10 +156,12 @@
                    ids = cages1.getId();// 数据库ID
                    cells = cages1.getCell();// 格子号
                    prcid = cages1.getPrcId();// 传给prc的目标地id
                    String glassid="";
                    // 数据库修改笼子表新增一条玻璃
                    for (int i = 2; i > 0; i--) {
                        north_glass_buffer1 qglass = spianMapper.SelectQueueGlass(i);
                        width = qglass.getglasslengthmm();// 格子剩余宽度
                        glassid=qglass.getbarcode();
                        spianMapper.UpdataAddqueCage(qglass.getordernumber(), qglass.getbarcode(), width, cage1, cells, i,
                                1);
                        spianMapper.UpdataAddCage1(width, cage1, cells);// 减少格子宽度
@@ -172,7 +173,7 @@
                    datas.add((short) 0);
                    datas.add((short) 1);
                    S7control.getinstance().WriteWord(adddresslist, datas);
                    outmesid(glassid,"DB105.20");
                    return (200);
                }
@@ -220,6 +221,7 @@
                        spianMapper.UpdataAddCage(orderid, glassid, widths, cage1, cells, ids, 2);
                        spianMapper.UpdataAddCage1(widths, cage1, cells);// 减少格子宽度
                        spianMapper.Inserttask(0, 0, 1000, ids, glassid.toString());// 新增任务
                        outmesid(glassid,"DB105.20");
                        // S7control.getinstance().WriteWord(adddresslist, datas);
                        break;
                        // S7control.getinstance().WriteByte("DB105.16",glassid);
@@ -241,10 +243,10 @@
        // spianMapper.UpdatetaskOut(); //完成上一次出片或者调度任务,改到plchold里,出片或调度任务完成立即改变结束任务;
        // 定义PRC数据传送数组
        List<String> adddresslist = new ArrayList<>();
        adddresslist.add("DB105.6");// 出片车起始位置
        adddresslist.add("DB105.8");// 出片车目标位置
        adddresslist.add("DB105.10");// 出片笼玻璃数
        adddresslist.add("DB105.14");// 出片车启动 1为启动
        adddresslist.add("DB105.10");// 出片车起始位置
        adddresslist.add("DB105.12");// 出片车目标位置
        adddresslist.add("DB105.14");// 出片笼玻璃数
        adddresslist.add("DB105.18");// 出片车启动 1为启动
        List<Short> datas = new ArrayList<>();
        // 获取优先出片的位置
        StorageCage cageout = spianMapper.selectOut(orderid);
@@ -291,7 +293,7 @@
                spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 3);// 清除格子玻璃信息
                spianMapper.Inserttask(1, 0, cageout.getId(), 1000, orderid);// 新增任务
                S7control.getinstance().WriteWord(adddresslist, datas);// 派发出片车任务
                outmesid(glassid);// 派发出片ID
                outmesid(glassid,"DB105.34");// 派发出片ID
                if (pd != null) {
                    cage = pd.getCage();
                    cell = pd.getCage();
@@ -352,7 +354,7 @@
                        // 传输mes数据,坐标,数据
                        S7control.getinstance().WriteWord(adddresslist, datas);// 派发出片车任务
                        System.out.println(datas);
                        outmesid(glassids);// 派发调拨玻璃ID
                        outmesid(glassids,"DB105.34");// 派发调拨玻璃ID
                        return Result.success(cagecell); // 结束
                    } else {// 笼子号大于5时
@@ -379,7 +381,7 @@
                        // 传输mes数据,坐标,数据
                        S7control.getinstance().WriteWord(adddresslist, datas);// 派发出片车任务
                        outmesid(glassids);// 派发调拨玻璃ID
                        outmesid(glassids,"DB105.34");// 派发调拨玻璃ID
                        return Result.success(cagecell); // 结束
                    }
@@ -392,7 +394,6 @@
    
    public Short selectout2(String glassid) {
        // spianMapper.UpdatetaskOut(); //完成上一次出片或者调度任务,改到plchold里,出片或调度任务完成立即改变结束任务;
        // 定义PRC数据传送数组
        List<String> adddresslist = new ArrayList<>();
        char[] a=glassid.toCharArray();
@@ -436,7 +437,7 @@
                spianMapper.UpdateDBCage2(cage, cell);// 清除内片数据
            }
            S7control.getinstance().WriteWord(adddresslist, datas);// 派发出片车任务
            outmesid(glassid);// 派发出片ID
            outmesid(glassid,"DB105.34");// 派发出片ID
            return (200);// 结束
        } else {
@@ -449,7 +450,7 @@
                datas.add((short) 1000);
                datas.add((short) 1);
                datas.add((short) 1);
                outmesid(glassid);// 派发出片ID
                outmesid(glassid,"DB105.34");// 派发出片ID
                spianMapper.Inserttask(1, 0, cageout.getId(), 1000, glassid);// 新增任务
                spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 增加原格子宽度
                spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 3);// 清除格子玻璃信息
@@ -486,7 +487,7 @@
                    // 传输mes数据,坐标,数据
                    S7control.getinstance().WriteWord(adddresslist, datas);// 派发出片车任务
                    outmesid(glassids);// 派发调拨玻璃ID
                    outmesid(glassids,"DB105.34");// 派发调拨玻璃ID
                    return (200); // 结束
                } else {// 笼子号大于5时
@@ -514,7 +515,7 @@
                    // 传输mes数据,坐标,数据
                    S7control.getinstance().WriteWord(adddresslist, datas);// 派发出片车任务
                    outmesid(glassids);// 派发调拨玻璃ID
                    outmesid(glassids,"DB105.34");// 派发调拨玻璃ID
                    return (200);// 结束
                }
@@ -522,8 +523,8 @@
        }
    }
    //派发调拨任务玻璃id
    public void outmesid(String glassid) {
    //派发任务玻璃id
    public void outmesid(String glassid,String address) {
        //System.out.println("outmesid:" + glassid);
        List<Byte> glassidlist = new ArrayList();
        char ds[]=glassid.toCharArray();
@@ -532,12 +533,12 @@
        }
        byte[] bytes = Bytes.toArray(glassidlist);
        System.out.println("outmesidbytes:" + bytes.length);
        S7control.getinstance().WriteByte("DB105.34", bytes);// 派发出片id
        S7control.getinstance().WriteByte(address, bytes);// 派发出片id
    }
    //获取地址内的玻璃id转字符串
    public StringBuilder queGlassid(String address) {
    public StringBuilder queGlassid(String address,int count) {
        StringBuilder writedstrIdOut = new StringBuilder();
        byte[] writedglassidbytesOut = S7control.getinstance().ReadByte(address, 14);
        byte[] writedglassidbytesOut = S7control.getinstance().ReadByte(address, count);
      if (writedglassidbytesOut != null) {
        // 获取玻璃id
        for (byte iditem : writedglassidbytesOut) {
@@ -556,4 +557,10 @@
        String s = new String(bytes, StandardCharsets.UTF_8);
        return s.toCharArray();
    }
    //判断集合里是否为1
    public  boolean listbool(String address) {
       List<Short> list = S7control.getinstance().ReadWord(address, 1);//返回为ture时为1
       boolean listbool = list.contains((short) 1);
        return listbool;
    }
}