wuyouming666
2023-12-02 17b583422095aff6bb91bd8ddff5faeb41c8edb2
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;
@@ -45,8 +43,10 @@
        List<String> adddresslist = new ArrayList<>();
        adddresslist.add("DB105.0");// 进片车起始位置
        adddresslist.add("DB105.2");// 进片车目标位置
        adddresslist.add("DB105.4");// 进片笼玻璃数
        adddresslist.add("DB105.12");// 进片车启动 1为启动
        adddresslist.add("DB105.4");// 进片玻璃宽
        adddresslist.add("DB105.8");//进片笼内已有玻璃数
        adddresslist.add("DB105.16");// 进片车启动 1为启动
        List<Short> datas = new ArrayList<>();
        // String orderid="A001";
@@ -79,10 +79,11 @@
                widths = glasslist.getglasslengthmm();
                // 执行进片
                datas.add((short) 1000);
                datas.add((short) prcid);
                datas.add((short) prctier);
                datas.add((short) 1);
                datas.add((short) 1000);//起始位置
                datas.add((short) prcid);//目标位置
                datas.add((short) widths);//进片玻璃宽
                datas.add((short) prctier); //玻璃数
                datas.add((short) 1);//任务启动
                //获取该格子内是否有玻璃
                int cellint=spianMapper.selectcell(cage1,cells);
                if(cellint==1){
@@ -93,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);
@@ -102,7 +104,7 @@
                // S7control.getinstance().WriteByte("DB105.16",glassid);
                }
                outmesid(glassid,"DB105.20");
                return (200);
            }
@@ -154,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);// 减少格子宽度
@@ -169,7 +173,7 @@
                    datas.add((short) 0);
                    datas.add((short) 1);
                    S7control.getinstance().WriteWord(adddresslist, datas);
                    outmesid(glassid,"DB105.20");
                    return (200);
                }
@@ -217,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);
@@ -238,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);
@@ -288,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();
@@ -349,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时
@@ -376,7 +381,7 @@
                        // 传输mes数据,坐标,数据
                        S7control.getinstance().WriteWord(adddresslist, datas);// 派发出片车任务
                        outmesid(glassids);// 派发调拨玻璃ID
                        outmesid(glassids,"DB105.34");// 派发调拨玻璃ID
                        return Result.success(cagecell); // 结束
                    }
@@ -389,13 +394,14 @@
    
    public Short selectout2(String glassid) {
        // 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为启动
        char[] a=glassid.toCharArray();
        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.selectOut2(glassid);
@@ -431,23 +437,23 @@
                spianMapper.UpdateDBCage2(cage, cell);// 清除内片数据
            }
            S7control.getinstance().WriteWord(adddresslist, datas);// 派发出片车任务
            outmesid(glassid);// 派发出片ID
            outmesid(glassid,"DB105.34");// 派发出片ID
            return (200);// 结束
        } else {
            // 获取格子的玻璃数量
            int state = spianMapper.selectGlassState(cage, cell);
            // 判断内片是否需要调拨
            if (state == 0) {
            if (state == 1) {
                // spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 3);
                datas.add((short) prcid);
                datas.add((short) 1000);
                datas.add((short) 1);
                datas.add((short) 1);
                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);// 清除格子玻璃信息
                outmesid(glassid);// 派发出片ID
                S7control.getinstance().WriteWord(adddresslist, datas);// 派发出片车任务
                return (200);// 结束
@@ -481,7 +487,7 @@
                    // 传输mes数据,坐标,数据
                    S7control.getinstance().WriteWord(adddresslist, datas);// 派发出片车任务
                    outmesid(glassids);// 派发调拨玻璃ID
                    outmesid(glassids,"DB105.34");// 派发调拨玻璃ID
                    return (200); // 结束
                } else {// 笼子号大于5时
@@ -509,7 +515,7 @@
                    // 传输mes数据,坐标,数据
                    S7control.getinstance().WriteWord(adddresslist, datas);// 派发出片车任务
                    outmesid(glassids);// 派发调拨玻璃ID
                    outmesid(glassids,"DB105.34");// 派发调拨玻璃ID
                    return (200);// 结束
                }
@@ -517,21 +523,22 @@
        }
    }
    //派发调拨任务玻璃id
    public void outmesid(String glassid) {
        System.out.println("outmesid:" + glassid);
    //派发任务玻璃id
    public void outmesid(String glassid,String address) {
        //System.out.println("outmesid:" + glassid);
        List<Byte> glassidlist = new ArrayList();
        for (char iditem : glassid.toCharArray()) {
            glassidlist.add(Byte.valueOf(String.valueOf(iditem)));
        char ds[]=glassid.toCharArray();
        for (char iditem : ds) {
            glassidlist.add((byte)iditem);
        }
        byte[] bytes = Bytes.toArray(glassidlist);
        System.out.println("outmesidbytes:" + bytes.length);
        S7control.getinstance().WriteByte("DB105.30", 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, 13);
        byte[] writedglassidbytesOut = S7control.getinstance().ReadByte(address, count);
      if (writedglassidbytesOut != null) {
        // 获取玻璃id
        for (byte iditem : writedglassidbytesOut) {
@@ -550,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;
    }
}