自动化立体仓库 - WMS系统
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,11 +127,19 @@
                            }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;
            }
@@ -140,12 +148,29 @@
            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");
//            if (bind.get("code").equals(200)) {
//            }else {
//                log.info("WMS绑定agv站点={},任务号为={}------------失败",wrkMast.getStaNo(),wrkMast.getWrkNo());
//            }
            int workNo = commonService.getWorkNo(0);
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            String format = sdf.format(new Date());
            String s = format+"-" + workNo;
            log.info("给agv下发入库搬运任务={}",waitPakin);
            R r = mobileController.SITESITEAGVMove(waitPakin.getMemo(), staNo,s);
            if (r.get("code").equals(200)) {
                waitPakin.setSupp(s);//发给agv的任务号
@@ -161,7 +186,7 @@
     * 自动派发补空板任务给AGV
     */
    @Scheduled(cron = "0/3 * * * * ? ")
    private synchronized void autoFillEmptyPallets(){
    public synchronized void autoFillEmptyPallets(){
        /**
         * 该字段是组托入库自动出发补空托盘标记
         * item_num
@@ -207,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;
@@ -252,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)