自动化立体仓库 - WMS系统
zyx
2024-07-11 6298f178c71f1eb95d4066ffe88d4becd6fc6bfc
src/main/java/com/zy/asrs/task/AutoMoveScheduler.java
@@ -63,7 +63,7 @@
                .andNew().eq("io_type",108)
                        .andNew()
                        .eq("crn_no",2).or().eq("crn_no",3)
                        .orderBy("appe_time",true)
                        .orderBy("io_pri",false).orderBy("appe_time",true)
                );
        if (agvWrkMastList.isEmpty()) {
            return;
@@ -72,7 +72,7 @@
            try{
                autoMoveHandler.start2(agvWrkMast);
            } catch (Exception e){
                log.error("工作号"+agvWrkMast.getWrkNo()+"调拨出库,处理失败:===》异常原因:"+e.getMessage());
                //log.error("工作号"+agvWrkMast.getWrkNo()+"调拨出库,处理失败:===》异常原因:"+e.getMessage());
            }
        }
@@ -110,6 +110,7 @@
        List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>()
                .eq("wrk_sts", 22)
                .andNew().eq("io_type",111)
                .orderBy("io_pri",false)
                .orderBy("appe_time",true)
        );
        if (agvWrkMastList.isEmpty()) {
@@ -119,7 +120,7 @@
            try{
                autoMoveHandler.start3(agvWrkMast);
            } catch (Exception e){
                log.error("工作号"+agvWrkMast.getWrkNo()+"调拨出库,处理失败:===》异常原因:"+e.getMessage());
                //log.error("工作号"+agvWrkMast.getWrkNo()+"调拨出库,处理失败:===》异常原因:"+e.getMessage());
            }
        }
@@ -158,7 +159,8 @@
        List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>()
                .eq("wrk_sts", 214)
                .eq("loc_no","")
                .eq("io_type",113));
                .eq("io_type",113)
                .orderBy("io_pri",false));
        if (agvWrkMastList.isEmpty()) {
            return;
        }
@@ -197,26 +199,45 @@
     * 库位-接驳点  库位-吸塑车间
     * 每层最大 在 回库数量限制5条
     * 优先选择先到接驳位(接驳位可入) 后选择直接回库
     * 2楼或3楼站点可入信号全部没有,代表走电梯自动搬运模式
     */
    @Scheduled(cron = "0/2 * * * * ? ")
    private void autoEmptyBack4(){
        // 查询 不为1楼的空货架
        List<AgvLocMast> agvLocMasts = agvLocMastService.selectList(
                new EntityWrapper<AgvLocMast>()
                        .ne("floor", 1)
                        .eq("loc_sts","D")
                        .eq("loc_type1",3));
        if (agvLocMasts.isEmpty()) {
            return;
        }
        for (AgvLocMast agvLocMast : agvLocMasts) {
            try{
                autoMoveHandler.autoEmptyBack4(agvLocMast);
            } catch (Exception e){
                log.error("库位号"+agvLocMast.getLocNo()+"空板自动回库 库位-接驳点  库位-吸塑车间,处理失败:===》异常原因:"+e.getMessage());
//        if (determineFloorConnection(2)){
            // 查询 不为1楼的空货架
            List<AgvLocMast> agvLocMasts = agvLocMastService.selectList(
                    new EntityWrapper<AgvLocMast>()
                            .ne("floor", 1)
                            .eq("loc_sts","D")
                            .eq("loc_type1",3));
            if (agvLocMasts.isEmpty()) {
                return;
            }
            for (AgvLocMast agvLocMast : agvLocMasts) {
                try{
                    autoMoveHandler.autoEmptyBack4(agvLocMast);
                } catch (Exception e){
                    log.error("库位号"+agvLocMast.getLocNo()+"空板自动回库 库位-接驳点  库位-吸塑车间,处理失败:===》异常原因:"+e.getMessage());
                }
            }
//        }
    }
    private boolean determineFloorConnection(Integer floor){
        try{
            List<AgvBasDevp> agvBasDevps = agvBasDevpService.selectList(new EntityWrapper<AgvBasDevp>().eq("floor", floor).like("dev_no", "DB_"));
            if (!agvBasDevps.isEmpty()){
                for (AgvBasDevp agvBasDevp:agvBasDevps){
                    if (agvBasDevp.getInEnable().equals("Y")){
                        return false;
                    }
                }
                return true;
            }
        }catch (Exception e){
            log.error("判断当前楼层接驳位是否全部关闭,异常"+e.getMessage());
        }
        return false;
    }
    /**
@@ -224,6 +245,7 @@
     * 自动: 生成 109 自动回流
     * 手动: 生成 113 手动回流
     * 优先选择先到接驳位(接驳位可入) 后选择直接回库
     *
     */
    @Scheduled(cron = "0/2 * * * * ? ")
    private void autoEmptyBack5(){