Junjie
2025-05-23 1b007b8d43f82cf86e3cf5f2a316f30bae51deb2
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -117,7 +117,10 @@
            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
                    .in("wrk_sts"
                            , WrkStsType.INBOUND_LIFT_RUN_COMPLETE.sts
                    ));
                    )
                    .orderBy("io_pri", false)
                    .orderBy("appe_time", true)
            );
            for (WrkMast wrkMast : wrkMasts) {
                boolean step1 = this.shuttleInExecuteStep1(wrkMast);//小车搬入库中
                Thread.sleep(100);
@@ -240,7 +243,10 @@
            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
                    .in("wrk_sts"
                            , WrkStsType.NEW_OUTBOUND.sts
                    ));
                    )
                    .orderBy("io_pri", false)
                    .orderBy("appe_time", true)
            );
            for (WrkMast wrkMast : wrkMasts) {
                boolean step1 = this.shuttleOutExecuteStep1(wrkMast);//小车搬出库中
                Thread.sleep(100);
@@ -300,6 +306,12 @@
            if (liftSta.getHasTray()) {
                News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}站点有托盘,禁止派发", wrkMast.getWrkNo(), liftSta.getStaNo());
                return false;
            }
            boolean checkLocPathIsAvailable = navigateUtils.checkLocPathIsAvailable(wrkMast.getSourceLocNo(), liftSta.getLocNo());
            if(!checkLocPathIsAvailable) {
                News.taskInfo(wrkMast.getWrkNo(), "{}任务,未计算到可执行路径,等待中", wrkMast.getWrkNo());
                return false;
            }
@@ -497,7 +509,11 @@
    public synchronized void shuttleLocMoveExecute() {
        try {
            //查询移库任务
            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().in("wrk_sts", WrkStsType.NEW_LOC_MOVE.sts));
            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
                    .in("wrk_sts", WrkStsType.NEW_LOC_MOVE.sts)
                    .orderBy("io_pri", false)
                    .orderBy("appe_time", true)
            );
            for (WrkMast wrkMast : wrkMasts) {
                boolean stepToTarget = this.shuttleLocMoveExecuteToTarget(wrkMast);//移库任务-小车去目标点
                if (!stepToTarget) {
@@ -521,6 +537,12 @@
        //小车移动至站点  501.生成移库任务 ==> 502.小车搬运中
        if (wrkMast.getWrkSts() == WrkStsType.NEW_LOC_MOVE.sts) {
            boolean checkLocPathIsAvailable = navigateUtils.checkLocPathIsAvailable(wrkMast.getSourceLocNo(), wrkMast.getLocNo());
            if(!checkLocPathIsAvailable) {
                News.taskInfo(wrkMast.getWrkNo(), "{}任务,未计算到可执行路径,等待中", wrkMast.getWrkNo());
                return false;
            }
            if (wrkMast.getShuttleNo() == null) {//没有绑定小车,进行调度
                boolean result = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo());//调度小车到货物点进行取货
                News.info("{}任务,调度小车{}系统等待中", wrkMast.getWrkNo(), result ? "成功" : "失败");
@@ -1292,7 +1314,7 @@
                return false;
            }
            if (!shuttleProtocol.getCurrentLocNo().equals(wrkMast.getLocNo())) {
            if (!wrkMast.getLocNo().equals(shuttleProtocol.getCurrentLocNo())) {
                return false;
            }
@@ -1873,7 +1895,7 @@
    public void outTaskPreviewDispatchForkLift() {
        List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
                .in("wrk_sts"
                        , WrkStsType.OUTBOUND_SHUTTLE_RUN.sts
                        , WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts
                ));
        for (WrkMast wrkMast : wrkMasts) {
            if(wrkMast.getShuttleNo() == null){
@@ -1912,6 +1934,12 @@
                continue;
            }
            //存在调度锁
            Object object = redisUtil.get(RedisKeyType.OUT_TASK_PREVIEW_DISPATCH_FORKLIFT.key + forkLiftProtocol.getLiftNo());
            if (object != null) {
                continue;
            }
            //判断提升机是否有其他任务
            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
            if (liftWrkMast != null) {
@@ -1923,7 +1951,7 @@
            }
            //提升机不在出库层
            if (forkLiftProtocol.getLev() != Utils.getLev(wrkMast.getSourceLocNo())) {
            if (forkLiftProtocol.getLev().equals(Utils.getLev(wrkMast.getSourceLocNo()))) {
                continue;
            }
@@ -1943,6 +1971,8 @@
            assignCommand.setTaskMode(ForkLiftTaskModeType.MOVE.id.shortValue());
            forkLiftAction.assignWork(forkLiftProtocol.getLiftNo(), assignCommand);
            redisUtil.set(RedisKeyType.OUT_TASK_PREVIEW_DISPATCH_FORKLIFT.key + forkLiftProtocol.getLiftNo(), "lock", 30);//30秒不再调度
        }
    }