wu
2024-01-11 df856570b237ad66ce8c5383211acd58b6d49fda
更改理片优先逻辑
4个文件已修改
66 ■■■■ 已修改文件
springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java
@@ -29,7 +29,7 @@
        // \\ TODO Auto-generated catch block
        e.printStackTrace();
      }
      if (S7control.getinstance().CheckConnected() == true) {
      if (S7control.getinstance().CheckConnected() == false) {
        spianService = WebSocketServer.applicationContext.getBean(SpianService.class);
        spianMapper = WebSocketServer.applicationContext.getBean(SpianMapper.class);
        jdbcConnections = WebSocketServer.applicationContext.getBean(JdbcConnections.class);
@@ -41,7 +41,7 @@
        // // TODO Auto-generated catch block
        // e.printStackTrace();
        // }
        // spianService.selectAll("X12345610402GV");
         spianService.selectAll("X21942610402GV");
        // 出片任务////////////////////////////////
        List<Short> outlist = S7control.getinstance().ReadWord("DB106.20", 1); // 出片车状态
        List<Short> outlist1 = S7control.getinstance().ReadWord("DB105.18", 1); // 出片任务是否启动
springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java
@@ -21,21 +21,21 @@
        new Plchome().start();
        new Plcalarm().start();
        // new Plcalarm().start();
        new Plcsign().start();
        // new Plcsign().start();
        new Plcstate().start();
        new PlcPositioning1().start();
        // new Plcstate().start();
        // new PlcPositioning1().start();
        new PlcParameter2().start();
        // new PlcParameter2().start();
        new PLCAutomaticParameterSetting().start();
        // new PLCAutomaticParameterSetting().start();
        new PlcManualonePosition().start();
        new PlcManualonePosition2().start();
        new PlcServoManualone().start();
        new PLCManualJog().start();
        new Plclog().start();
        // new PlcManualonePosition().start();
        // new PlcManualonePosition2().start();
        // new PlcServoManualone().start();
        // new PLCManualJog().start();
        // new Plclog().start();
    }
}
springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java
@@ -7,7 +7,6 @@
import java.util.List;
import javax.print.DocFlavor.STRING;
@Mapper
@@ -15,10 +14,12 @@
    // 判断相邻笼子是否有空格
    @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 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,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 ''='') GROUP BY cage,cell HAVING state1=0 ORDER BY (FrameBarcode=#{Fbarcode} or ''='') desc,shu desc,shu2,cage asc; ")
    // 获取笼子号订单号排序的空订单笼子
    @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 ''='') GROUP BY cage,cell HAVING state1=0 ORDER BY (FrameBarcode=#{Fbarcode} or ''='') desc,shu desc,shu2,state2 asc,cage asc;")
    List<StorageCage> selectAll(String orderids,String Fbarcode);
    //优先判断一次是否有同铝框的空位
    @Select("select *,min(state) state1 from storage_cage  GROUP BY cage,cell HAVING state1=0 and  FrameBarcode=#{FrameBarcode} LIMIT 1;")
    List<StorageCage> selectAllFbarcode(String Fbarcode);
    // 获取判断该格子是否需要把外片推入内片位置
    @Select("select state from storage_cage where  cage=#{cage} and cell=#{cell} and tier=1;")
    int selectcell(int cage, int cell);
springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java
@@ -34,7 +34,7 @@
        }
        double widths = glasslist.getglasslengthmm();
        String orderids = glasslist.getordernumber();
        String FrameBarcode=glasslist.getFrameBarcode();
        String FrameBarcode = glasslist.getFrameBarcode();
        List<String> adddresslist = new ArrayList<>();
        adddresslist.add("DB105.0");// 进片车起始位置
@@ -47,7 +47,11 @@
        // String orderid="A001";
        // 获取订单相关度最高的笼子排序
        List<StorageCage> storageCage = spianMapper.selectAll(orderids,FrameBarcode);
        List<StorageCage> storageCage = spianMapper.selectAllFbarcode(FrameBarcode);
        if (storageCage.size() == 0) {
            storageCage = spianMapper.selectAll(orderids, FrameBarcode);
        }
        if (storageCage == null) {
            return (400);
        }
@@ -56,7 +60,7 @@
            cage1 = storageCage2.getCage();
            // 判断该笼子号相邻最大的空格数
            int cages = spianMapper.selectCage(cage1);
            // 如果相邻笼子没有空格,或者有正在执行的出片任务时返回400
            if (cages == 0) {
                return (400);
@@ -145,7 +149,6 @@
        int cells;
        double glasswidth = cageout.getGlassWidth();
        // 判断玻璃内外片
        if (tier == 2) {
            int state = spianMapper.selectGlassState(cage, cell);// 获取格子数量
@@ -155,7 +158,7 @@
            datas.add((short) 1000);
            datas.add((short) state);
            datas.add((short) 1);
            spianMapper.OverOutSlice(glassid.toString(), 1,0);// 更新出片队列任务状态为进行中
            spianMapper.OverOutSlice(glassid.toString(), 1, 0);// 更新出片队列任务状态为进行中
            spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 增加原格子宽度
            spianMapper.UpdataGlassCageState(glassid.toString(), 3);// 更改笼子表的玻璃状态
@@ -180,11 +183,11 @@
                datas.add((short) 1000);
                datas.add((short) 1);
                datas.add((short) 1);
                spianMapper.OverOutSlice(glassid.toString(), 1,0);// 更新出片队列任务状态为进行中
                spianMapper.OverOutSlice(glassid.toString(), 1, 0);// 更新出片队列任务状态为进行中
                spianMapper.Inserttask(1, 0, cageout.getId(), 1000, glassid, 1);// 新增任务
                spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 增加原格子宽度
                spianMapper.UpdataGlassCageState(glassid, 3);// 更改笼子表的玻璃状态
                System.out.println("出片任务|" + datas);
                outmesid(glassid, "DB105.34");// 派发出片ID
                S7control.getinstance().WriteWord(adddresslist, datas);// 派发出片车任务
@@ -194,7 +197,7 @@
            } else {
                // 玻璃需要调拨时,判断属于哪个半区的笼子
                if (cage < 6) {
                    StorageCage cagecell = spianMapper.selectGlassCage(cage, glasswidth, 0, 6,cell);
                    StorageCage cagecell = spianMapper.selectGlassCage(cage, glasswidth, 0, 6, cell);
                    if (cagecell == null) {
                        return (300);
                    }
@@ -224,7 +227,7 @@
                    return (200); // 结束
                } else {// 笼子号大于5时
                    StorageCage cagecell = spianMapper.selectGlassCage(cage, glasswidth, 5, 11,cell);
                    StorageCage cagecell = spianMapper.selectGlassCage(cage, glasswidth, 5, 11, cell);
                    if (cagecell == null) {
                        return (300);
                    }
@@ -307,17 +310,17 @@
    public void overtask(String glassid) {
        spianMapper.UpdatetaskOut(glassid.toString());// 完成上一次 出片或者进片任务
        spianMapper.OverOutSlice(glassid.toString(), 2,1);// 完成出片队列任务
        spianMapper.OverOutSlice(glassid.toString(), 2, 1);// 完成出片队列任务
        spianMapper.UpdataGlassCage(glassid.toString(), 0);// 清除出片格子玻璃信息
        spianMapper.UpdateCageOver(glassid.toString(), 0);// 更改笼子表出片状态
        spianMapper.UpdateCageadd(glassid.toString(), 1);// 更改笼子表进片状态
        String barcode = spianMapper.SelectBarcode(glassid.toString());// 获取该玻璃的铝框id
        spianMapper.UpdateAddQueue(glassid.toString());// 把进片的玻璃更新到出片队列中
        // if (barcode != null) {
        //     int barcodeState = spianMapper.SelectOverState(barcode);// 获取该铝框的状态
        //     if (barcodeState == 0) {// 当该铝框所有的玻璃都是完成状态时删除在出片队列的数据
        //         spianMapper.DeleteQueue(barcode);
        //     }
        // int barcodeState = spianMapper.SelectOverState(barcode);// 获取该铝框的状态
        // if (barcodeState == 0) {// 当该铝框所有的玻璃都是完成状态时删除在出片队列的数据
        // spianMapper.DeleteQueue(barcode);
        // }
        // }
    }