自动化立体仓库 - WMS系统
skyouc
3 天以前 56b1b873191d6e7022ed225cf81c3eda774f210e
src/main/java/com/zy/asrs/task/WorkMastScheduler.java
@@ -1,8 +1,13 @@
package com.zy.asrs.task;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.zy.api.controller.params.WorkTaskParams;
import com.zy.api.service.WcsApiService;
import com.zy.asrs.entity.Task;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.entity.param.CompleteParam;
import com.zy.asrs.service.TaskService;
import com.zy.asrs.service.WorkService;
import com.zy.asrs.service.WrkMastService;
import com.zy.asrs.task.core.ReturnT;
import com.zy.asrs.task.handler.WorkMastHandler;
@@ -12,8 +17,8 @@
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
 * Created by vincent on 2020/7/7
@@ -29,6 +34,10 @@
    private WorkMastHandler workMastHandler;
    @Autowired
    private TaskService taskService;
    @Autowired
    private WcsApiService wcsApiService;
    @Autowired
    private WorkService workService;
    @Scheduled(cron = "0/3 * * * * ? ")
    private void execute() {
@@ -68,4 +77,47 @@
        }
    }
    /**
     * 任务自动下发出库任务
     *
     * @author Ryan
     * @date 2026/1/10 14:42
     */
    @Scheduled(cron = "0/5 * * * * ? ")
    private void autoPubTasks() {
        List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
                .in("wrk_sts", Arrays.asList(11L, 1L))
                .orderDesc(Arrays.asList("io_pri")));
        if (wrkMasts.isEmpty()) {
            return;
        }
        Map<Integer, List<WrkMast>> listMap = wrkMasts.stream().collect(Collectors.groupingBy(WrkMast::getCrnNo));
        listMap.keySet().forEach(key -> {
            List<WrkMast> wrkMasts1 = listMap.get(key);
            Collections.shuffle(wrkMasts1);
            try {
                wrkMasts1.forEach(wrkMast -> {
                    WorkTaskParams params = new WorkTaskParams();
                    if (wrkMast.getIoType().equals(11)) {
                        CompleteParam param = new CompleteParam();
                        param.setTaskNo(wrkMast.getWrkNo() + "");
                        param.setSourceLocNo(wrkMast.getSourceLocNo());
                        param.setLocNo(wrkMast.getLocNo());
                        workService.taskMove(param, 9527L);
                    } else if (wrkMast.getIoType() > 100) {
                        params.setType("in")
                                .setTaskNo(wrkMast.getWrkNo() + "")
                                .setLocNo(wrkMast.getSourceLocNo())
                                .setBarcode(wrkMast.getBarcode())
                                .setStaNo(wrkMast.getStaNo())
                                .setTaskPri(wrkMast.getIoPri().intValue());
                        wcsApiService.pubWrkToWcs(params);
                    }
                });
            } catch (Exception e) {
                log.error(e.getMessage());
            }
        });
    }
}