自动化立体仓库 - WMS系统
zhangc
2025-03-03 24bc9aa5888c7b98cf0a7d1bf05ec6c5624d3719
src/main/java/com/zy/asrs/task/AutoMoveScheduler.java
@@ -66,7 +66,7 @@
     * ioType 108.自动调拨
     * crnNo :2目标楼层
     */
    @Scheduled(cron = "0/1 * * * * ? ")
    @Scheduled(cron = "0/10 * * * * ? ")
    private synchronized void execute2() {
        List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>().eq("wrk_sts", 22).andNew().eq("io_type", 108).andNew().eq("crn_no", 2).or().eq("crn_no", 3).orderBy("io_pri", false).orderBy("appe_time", true));
        if (agvWrkMastList.isEmpty()) {
@@ -110,7 +110,7 @@
     * wrkSts 22.调拨待分配
     * ioType 111.手动调拨
     */
    @Scheduled(cron = "0/2 * * * * ? ")
    @Scheduled(cron = "0/10 * * * * ? ")
    private void execute3() {
        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()) {
@@ -215,22 +215,48 @@
     */
    @Scheduled(cron = "0/30 * * * * ? ")
    private void autoEmptyBack4() {
        // 查询 不为1楼的空货架
        List<AgvLocMast> agvLocMasts = agvLocMastService.selectList(new EntityWrapper<AgvLocMast>()
                // TODO 四期
                .eq("loc_sts", "D").eq("loc_type1", 3)
                .andNew()
                .ne("floor", 1).or().ne("lev1", 1));
                .eq("loc_sts", "D").eq("loc_type1", 3).andNew().ne("floor", 1).or().ne("lev1", 1));
        if (agvLocMasts.isEmpty()) {
            return;
        }
        Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "RETURN_3_TIME"));
        for (AgvLocMast agvLocMast : agvLocMasts) {
            try {
                autoMoveHandler.autoEmptyBack4(agvLocMast);
            } catch (Exception e) {
                log.error("库位号" + agvLocMast.getLocNo() + "空板自动回库 库位-接驳点  库位-吸塑车间,处理失败:===》异常原因:" + e.getMessage());
            if (agvLocMast.getLocNo().contains("02F1")) {
                boolean flag = false;
                if (config != null && !Cools.isEmpty(config.getValue())) {
                    try {
                        // 判断是否在执行时间内
                        ProcesTimeData procesTimeData = JSONObject.parseObject(config.getValue(), ProcesTimeData.class);
                        if (procesTimeData != null && config.getStatus() == 1 && TimeUtils.between(procesTimeData)) {
                            flag = true;
                        }
                    } catch (Exception e) {
                        log.error("6类型空货架返回的执行时间点解析异常:===》异常原因:" + e.getMessage());
                        flag = true;
                    }
                }
                if (flag) {
                    try {
                        autoMoveHandler.autoEmptyBack4(agvLocMast);
                    } catch (Exception e) {
                        //log.error("库位号" + agvLocMast.getLocNo() + "空板自动回库 库位-接驳点  库位-吸塑车间,处理失败:===》异常原因:" + e.getMessage());
                    }
                }
            } else {
                try {
                    autoMoveHandler.autoEmptyBack4(agvLocMast);
                } catch (Exception e) {
                    //log.error("库位号" + agvLocMast.getLocNo() + "空板自动回库 库位-接驳点  库位-吸塑车间,处理失败:===》异常原因:" + e.getMessage());
                }
            }
        }
    }
@@ -321,7 +347,7 @@
     * 检测1楼接驳点
     * 手动: 生成 113 手动回流
     */
    @Scheduled(cron = "0/2 * * * * ? ")
    @Scheduled(cron = "0/30 * * * * ? ")
    private void autoEmptyBack6() {
        List<AgvBasDevp> agvBasDevps = agvBasDevpService.selectList(new EntityWrapper<AgvBasDevp>().eq("floor", 1).eq("loc_sts", "F").like("dev_no", "DB"));
        if (agvBasDevps.isEmpty()) {
@@ -387,7 +413,7 @@
     * 打标记的库位进行自动移库,四期
     * 在库位不够的情况下,箱壳入库别的楼层库位的时候,晚上进行跨层移库
     */
    @Scheduled(cron = "0/2 * * * * ? ")
    @Scheduled(cron = "0/30 * * * * ? ")
    private void autoEmptyBack8() throws ParseException {
        Date now = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
@@ -415,16 +441,25 @@
                    return;
                }
                List<AgvLocMast> agvLocMasts = agvLocMastService.selectList(new EntityWrapper<AgvLocMast>().eq("floor", 1).eq("loc_sts", "F").eq("loc_type1", 3).eq("ctn_no", "1"));
                List<AgvLocMast> agvLocMasts = agvLocMastService.selectList(new EntityWrapper<AgvLocMast>().eq("floor", 1).eq("loc_sts", "F").eq("loc_type1", 3).isNotNull("ctn_no"));
                if (agvLocMasts.isEmpty()) {
                    return;
                }
                for (AgvLocMast agvLocMast : agvLocMasts) {
                    try {
                        autoMoveHandler.autoTransfersV2(agvLocMast, maxTansk);
                    } catch (Exception e) {
                        log.error("库位号" + agvLocMast.getLocNo() + "四期定时移库任务 吸塑 --> 吸塑,处理失败:===》异常原因:" + e.getMessage());
                    if (agvLocMast.getLev1() == 1 && agvLocMast.getFloor() == 1 && !Cools.isEmpty(agvLocMast.getCtnNo()) && agvLocMast.getCtnNo().toString().equals("2")) {
                        try {
                            autoMoveHandler.autoTransfersV2(agvLocMast, maxTansk);
                        } catch (Exception e) {
                            log.error("库位号" + agvLocMast.getLocNo() + "四期定时移库任务 吸塑 --> 吸塑,处理失败:===》异常原因:" + e.getMessage());
                        }
                    } else if (agvLocMast.getLev1() == 2 && agvLocMast.getFloor() == 1 && !Cools.isEmpty(agvLocMast.getCtnNo()) && agvLocMast.getCtnNo().toString().equals("1")) {
                        try {
                            autoMoveHandler.autoTransfersV2(agvLocMast, maxTansk);
                        } catch (Exception e) {
                            log.error("库位号" + agvLocMast.getLocNo() + "四期定时移库任务 吸塑 --> 吸塑,处理失败:===》异常原因:" + e.getMessage());
                        }
                    }
                }
            }
        }