自动化立体仓库 - WMS系统
zwl
2026-01-16 f60955e2ffe9b183e72911e361fa0632e3c780c7
src/main/java/com/zy/asrs/task/AutoAssignAGVTasks.java
@@ -5,11 +5,9 @@
import com.core.common.R;
import com.core.exception.CoolException;
import com.zy.asrs.controller.MobileController;
import com.zy.asrs.entity.BasDevp;
import com.zy.asrs.entity.RowLastno;
import com.zy.asrs.entity.WaitPakin;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.entity.*;
import com.zy.asrs.service.*;
import com.zy.asrs.service.impl.LocMastServiceImpl;
import com.zy.asrs.task.core.ReturnT;
import com.zy.common.service.CommonService;
import org.slf4j.Logger;
@@ -30,7 +28,7 @@
 */
@Component
public class AutoAssignAGVTasks {
    private static final Logger log = LoggerFactory.getLogger(WorkMastScheduler.class);
    private static final Logger log = LoggerFactory.getLogger(AutoAssignAGVTasks.class);
    @Autowired
    private WaitPakinService waitPakinService;
@@ -46,12 +44,14 @@
    private WrkMastService wrkMastService;
    @Autowired
    private BasDevpService basDevpService;
    @Autowired
    private LocMastServiceImpl locMastService;
    /**
     * 自动派发入库任务给AGV
     */
    @Scheduled(cron = "0/3 * * * * ? ")
    private synchronized void execute(){
    public synchronized void execute(){
        /**
         * agv状态
         * be_batch
@@ -127,17 +127,37 @@
                            }else {
                                staNo = "101";
                            }
                            break;
                        }
                    }
                }
            }
            //当站点有出库任务时跳过派发任务
            List<WrkMast> wrkMasts1 = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("sta_no", staNo).lt("wrk_sts",33));
            if(!Cools.isEmpty(wrkMasts1)){
                continue;
            }
            if (Cools.isEmpty(staNo)) {
                return;
            }
            //AGV目标站点已经在做任务时跳过
            WaitPakin waitPakin1 = waitPakinService.selectOne(new EntityWrapper<WaitPakin>().eq("sku", staNo).in("be_batch", 2,3));
            if (!Cools.isEmpty(waitPakin1)) {
                continue;
            }
            //查看该巷道库位空库位数量>3
            Integer crnNo=1;
            if(staNo.equals("103")){
                crnNo=2;
            }else if(staNo.equals("101")){
                crnNo=3;
            }
            int i1 = locMastService.selectCount(new EntityWrapper<LocMast>().eq("crn_no", crnNo).eq("loc_sts", "O"));
            if(i1<=3){
                log.info("巷道={},空库位数量小于3,跳过agv入库搬运",crnNo);
                continue;
            }
            R bind = mobileController.siteBindAndUnbind(waitPakin.getMemo(),waitPakin.getZpallet(), "BIND");
@@ -166,7 +186,7 @@
     * 自动派发补空板任务给AGV
     */
    @Scheduled(cron = "0/3 * * * * ? ")
    private synchronized void autoFillEmptyPallets(){
    public synchronized void autoFillEmptyPallets(){
        /**
         * 该字段是组托入库自动出发补空托盘标记
         * item_num
@@ -212,7 +232,7 @@
     * 自动派发出库任务给agv搬运
     */
    @Scheduled(cron = "0/3 * * * * ? ")
    private synchronized void autoOut(){
    public synchronized void autoOut(){
        List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", 30));
        if (wrkMasts.isEmpty()) {
            return;
@@ -257,7 +277,7 @@
     * 入库任务自动解绑agv站点
     */
    @Scheduled(cron = "0/3 * * * * ? ")
    private synchronized void UnbindTheSite(){
    public synchronized void UnbindTheSite(){
        List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
                .in("io_type",1,53)
                .ge("wrk_sts", 2)