自动化立体仓库 - WMS系统
zhangc
2025-02-08 0379bbe120f509f8c330713958b59687d25b80b3
src/main/java/com/zy/asrs/task/AutoMoveScheduler.java
@@ -213,12 +213,14 @@
     * 优先选择先到接驳位(接驳位可入) 后选择直接回库
     * 2楼或3楼站点可入信号全部没有,代表走电梯自动搬运模式
     */
    @Scheduled(cron = "0/2 * * * * ? ")
    @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).ne("floor", 1).ne("lev1", 1));
                .eq("loc_sts", "D").eq("loc_type1", 3)
                .andNew()
                .ne("floor", 1).or().ne("lev1", 1));
        if (agvLocMasts.isEmpty()) {
            return;
        }
@@ -236,7 +238,7 @@
     * 将二厂的6类型的空货架调拨回吸塑二楼
     */
    // TODO 四期
    @Scheduled(cron = "0/2 * * * * ? ")
    @Scheduled(cron = "0/30 * * * * ? ")
    private void autoEmptyBackSiqi() {
        // 查询6类型空货架返回的执行时间点
        Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "RETURN_6_TIME"));
@@ -245,7 +247,7 @@
            try {
                // 判断是否在执行时间内
                ProcesTimeData procesTimeData = JSONObject.parseObject(config.getValue(), ProcesTimeData.class);
                if (procesTimeData != null && TimeUtils.between(procesTimeData)) {
                if (procesTimeData != null && config.getStatus() == 1 && TimeUtils.between(procesTimeData)) {
                    flag = true;
                }
            } catch (Exception e) {
@@ -255,9 +257,10 @@
            if (flag) {
                executeLocType6();
            }
        } else {
            executeLocType6();
        }
//        else {
//            executeLocType6();
//        }
    }
@@ -298,7 +301,6 @@
     * 自动: 生成 109 自动回流
     * 手动: 生成 113 手动回流
     * 优先选择先到接驳位(接驳位可入) 后选择直接回库
     *
     */
    @Scheduled(cron = "0/2 * * * * ? ")
    private void autoEmptyBack5() {
@@ -335,8 +337,7 @@
    }
    /**
     * 自动移库
     *
     * 跨层自动移库
     */
    @Scheduled(cron = "0/2 * * * * ? ")
    private void autoEmptyBack7() throws ParseException {
@@ -382,4 +383,50 @@
    }
    /**
     * 打标记的库位进行自动移库,四期
     * 在库位不够的情况下,箱壳入库别的楼层库位的时候,晚上进行跨层移库
     */
    @Scheduled(cron = "0/2 * * * * ? ")
    private void autoEmptyBack8() throws ParseException {
        Date now = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String currentDay = sdf.format(now);
        Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "autoTime2"));
        if (Cools.isEmpty(config)) {
        } else {
            if (config.getStatus().intValue() == 0) {
                return;
            }
            JSONObject jsonObject = JSON.parseObject(config.getValue().toString());
            Integer maxTansk = jsonObject.getInteger("maxTansk");
            //Integer startTime = jsonObject.getInteger("startTime");
            String startTime = jsonObject.getString("startTime");
            long time1 = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(currentDay + " " + startTime).getTime();
            long time = now.getTime();
            long time3 = time - time1;
            if (time3 > 0) {
                List<AgvWrkMast> agvWrkMasts = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>().eq("io_type", 12));
                if (agvWrkMasts != null && maxTansk <= agvWrkMasts.size()) {
                    return;
                }
                List<AgvLocMast> agvLocMasts = agvLocMastService.selectList(new EntityWrapper<AgvLocMast>().eq("floor", 1).eq("loc_sts", "F").eq("loc_type1", 3).eq("ctn_no", "1"));
                if (agvLocMasts.isEmpty()) {
                    return;
                }
                for (AgvLocMast agvLocMast : agvLocMasts) {
                    try {
                        autoMoveHandler.autoTransfersV2(agvLocMast, maxTansk);
                    } catch (Exception e) {
                        log.error("库位号" + agvLocMast.getLocNo() + "四期定时移库任务 吸塑 --> 吸塑,处理失败:===》异常原因:" + e.getMessage());
                    }
                }
            }
        }
    }
}