自动化立体仓库 - WMS系统
#1
lsh
2024-05-31 37f97c17a695aacd4f658eb86483558ba62374cd
src/main/java/com/zy/asrs/task/AutoMoveScheduler.java
@@ -10,6 +10,7 @@
import com.zy.asrs.service.AgvWrkMastService;
import com.zy.asrs.task.core.ReturnT;
import com.zy.asrs.task.handler.AutoMoveHandler;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@@ -18,6 +19,7 @@
import java.util.List;
// 自动移库
@Slf4j
@Component
public class AutoMoveScheduler {
@@ -49,7 +51,7 @@
    }
    /**
     * 自动调拨任务,从1楼调拨到2楼,
     * 自动调拨任务,从1楼调拨到2楼,3楼
     * wrkSts 22.调拨待分配
     * ioType 108.自动调拨
     * crnNo :2目标楼层
@@ -59,68 +61,97 @@
        List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>()
                .eq("wrk_sts", 22)
                .andNew().eq("io_type",108)
                        .eq("crn_no",2)
                        .andNew()
                        .eq("crn_no",2).or().eq("crn_no",3)
                        .orderBy("appe_time",true)
                );
        if (agvWrkMastList.isEmpty()) {
            return;
        }
        for (AgvWrkMast agvWrkMast : agvWrkMastList) {
            ReturnT<String> returnT = autoMoveHandler.start2(agvWrkMast);
            try{
                autoMoveHandler.start2(agvWrkMast);
            } catch (Exception e){
                log.error("工作号"+agvWrkMast.getWrkNo()+"调拨出库,处理失败:===》异常原因:"+e.getMessage());
            }
        }
    }
//    @Scheduled(cron = "0/2 * * * * ? ")
//    private void execute5(){
//        List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>()
//                .eq("wrk_sts", 22)
//                .andNew().eq("io_type",108)
//                .eq("crn_no",3)
//                .orderBy("appe_time",true)
//        );
//        if (agvWrkMastList.isEmpty()) {
//            return;
//        }
//        for (AgvWrkMast agvWrkMast : agvWrkMastList) {
//            try{
//                autoMoveHandler.start2(agvWrkMast);
//            } catch (Exception e){
//                log.error("工作号"+agvWrkMast.getWrkNo()+"调拨出库,处理失败:===》异常原因:"+e.getMessage());
//            }
//        }
//
//    }
    /**
     * 手动调拨任务(不走电梯流转,人工搬运),从1楼调拨到2、3楼,
     * wrkSts 22.调拨待分配
     * ioType 111.手动调拨
     */
    @Scheduled(cron = "0/2 * * * * ? ")
    private void execute5(){
    private void execute3(){
        List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>()
                .eq("wrk_sts", 22)
                .andNew().eq("io_type",108)
                .eq("crn_no",3)
                .andNew().eq("io_type",111)
                .orderBy("appe_time",true)
        );
        if (agvWrkMastList.isEmpty()) {
            return;
        }
        for (AgvWrkMast agvWrkMast : agvWrkMastList) {
            ReturnT<String> returnT = autoMoveHandler.start2(agvWrkMast);
            try{
                autoMoveHandler.start3(agvWrkMast);
            } catch (Exception e){
                log.error("工作号"+agvWrkMast.getWrkNo()+"调拨出库,处理失败:===》异常原因:"+e.getMessage());
            }
        }
    }
    // 调拨出库
    @Scheduled(cron = "0/2 * * * * ? ")
    private void execute3(){
        List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>()
                .eq("wrk_sts", 22)
                .andNew().eq("io_type",111)
        );
        if (agvWrkMastList.isEmpty()) {
            return;
        }
        for (AgvWrkMast agvWrkMast : agvWrkMastList) {
            ReturnT<String> returnT = autoMoveHandler.start3(agvWrkMast);
        }
//    // 空板自动回库  库位-接驳点
//    //@Scheduled(cron = "0/2 * * * * ? ")
//    private void autoEmptyBack(){
//        // 查询 不为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.autoEmptyBack(agvLocMast);
//            } catch (Exception e){
//                log.error("库位号"+agvLocMast.getLocNo()+"空板自动回库  库位-接驳点,处理失败:===》异常原因:"+e.getMessage());
//            }
//        }
//    }
    }
    // 空板自动回库  库位-接驳点
    //@Scheduled(cron = "0/2 * * * * ? ")
    private void autoEmptyBack(){
        // 查询 不为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) {
            ReturnT<String> returnT = autoMoveHandler.autoEmptyBack(agvLocMast);
        }
    }
    // 空板自动回库  接驳点 - 1楼库位
    /**
     * 手工作业不通过电梯时,空板从2、3楼接驳位人工搬运到1楼接驳位以后,
     * 回流到1楼接驳位,1楼接驳点 - 1楼库位
     * wrkSts 214.空料架回流待分配
     * ioType 113.空托盘手动回流
     */
    @Scheduled(cron = "0/2 * * * * ? ")
    private void autoEmptyBack3(){
        // 工作档为201 且 入出库类型为109
@@ -132,47 +163,79 @@
            return;
        }
        for (AgvWrkMast agvWrkMast : agvWrkMastList) {
            ReturnT<String> returnT = autoMoveHandler.autoEmptyBack3(agvWrkMast);
            try{
                autoMoveHandler.autoEmptyBack3(agvWrkMast);
            } catch (Exception e){
                log.error("工作号"+agvWrkMast.getWrkNo()+"空板自动回库  接驳点 - 1楼库位,处理失败:===》异常原因:"+e.getMessage());
            }
        }
    }
    // 空板自动回库
//    @Scheduled(cron = "0/2 * * * * ? ")
    private void autoEmptyBack2(){
        // 查询 不为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) {
            ReturnT<String> returnT = autoMoveHandler.autoEmptyBack2(agvLocMast);
        }
    }
//    // 空板自动回库
////    @Scheduled(cron = "0/2 * * * * ? ")
//    private void autoEmptyBack2(){
//        // 查询 不为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.autoEmptyBack2(agvLocMast);
//            } catch (Exception e){
//                log.error("库位号"+agvLocMast.getLocNo()+"空板自动回库,处理失败:===》异常原因:"+e.getMessage());
//            }
//        }
//    }
    /**
     * 空板自动回库
     * 空板自动回库(通过电梯),2、3楼库位的箱壳空料架,直接回流到1楼库位
     * 库位-接驳点  库位-吸塑车间
     * 每层最大 在 回库数量限制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;
//        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());
        }
        for (AgvLocMast agvLocMast : agvLocMasts) {
            ReturnT<String> returnT = autoMoveHandler.autoEmptyBack4(agvLocMast);
        }
        return false;
    }
    /**
@@ -180,6 +243,7 @@
     * 自动: 生成 109 自动回流
     * 手动: 生成 113 手动回流
     * 优先选择先到接驳位(接驳位可入) 后选择直接回库
     *
     */
    @Scheduled(cron = "0/2 * * * * ? ")
    private void autoEmptyBack5(){
@@ -191,7 +255,11 @@
            return;
        }
        for (AgvBasDevp agvBasDevp : agvBasDevps) {
            ReturnT<String> returnT = autoMoveHandler.autoEmptyBack5(agvBasDevp);
            try{
                autoMoveHandler.autoEmptyBack5(agvBasDevp);
            } catch (Exception e){
                log.error("站点号"+agvBasDevp.getDevNo()+"站点是否自动 优先选择先到接驳位(接驳位可入) 后选择直接回库,处理失败:===》异常原因:"+e.getMessage());
            }
        }
    }
@@ -209,7 +277,11 @@
            return;
        }
        for (AgvBasDevp agvBasDevp : agvBasDevps) {
            ReturnT<String> returnT = autoMoveHandler.autoEmptyBack6(agvBasDevp);
            try{
                autoMoveHandler.autoEmptyBack6(agvBasDevp);
            } catch (Exception e){
                log.error("站点号"+agvBasDevp.getDevNo()+"检测1楼接驳点 生成 113 手动回流,处理失败:===》异常原因:"+e.getMessage());
            }
        }
    }
}