自动化立体仓库 - WMS系统
#
lsh
2024-06-08 21e9b4b7d15e10cec7c8ad0b14006f225e16de1c
src/main/java/com/zy/asrs/task/handler/WrkMastSplitTwinInItHandler.java
@@ -1,13 +1,12 @@
package com.zy.asrs.task.handler;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.zy.asrs.entity.BasDevp;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.entity.WrkMastSta;
import com.zy.asrs.service.WrkMastStaService;
import com.zy.asrs.entity.WrkMastSplitTwin;
import com.zy.asrs.service.WrkMastService;
import com.zy.asrs.service.WrkMastSplitTwinService;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
import com.zy.asrs.utils.LocAndStaCodeUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -24,61 +23,67 @@
@Transactional
public class WrkMastSplitTwinInItHandler extends AbstractHandler<String> {
    @Autowired
    private WrkMastStaService wrkMastStaService;
    private WrkMastSplitTwinService wrkMastSplitTwinService;
    @Autowired
    private WrkMastService wrkMastService;
    public ReturnT<String> start(WrkMast wrkMast,BasDevp basDevp,Integer type) {
    public ReturnT<String> start(WrkMastSplitTwin wrkMastSplitTwin) {  //取货任务完成  放货
        try {
            WrkMastSta wrkMastSta = wrkMastStaService.selectOne(new EntityWrapper<WrkMastSta>().eq("wrk_no", wrkMast.getWrkNo().longValue()));
            if (!Cools.isEmpty(wrkMastSta)){
                return SUCCESS;
            }
            switch (type){
                case 13://出  3:取放
                    if (Cools.isEmpty(wrkMastSta)){
                        WrkMastSta wrkMastSta1 = new WrkMastSta(wrkMast,new Date(),basDevp);
                        wrkMastSta1.setType(1);      //类型 1:非空  2:空板
                        wrkMastSta1.setWrkType(3);                    //工作类型  1:取(叠盘)  2:拆盘  3:取放 5:满取  6:满放
                        wrkMastStaService.insert(wrkMastSta1);
                    }
                    break;
                case 21://1:取(叠盘)
                    if (Cools.isEmpty(wrkMastSta)){
                        WrkMastSta wrkMastSta1 = new WrkMastSta(wrkMast,new Date(),basDevp);
                        wrkMastSta1.setType(fullKM(wrkMast)? 1:2);
                        wrkMastSta1.setWrkType(1);//工作类型  1:取(叠盘)  2:拆盘  3:取放 5:满取  6:满放
                        wrkMastStaService.insert(wrkMastSta1);
                    };
                    break;
                case 22://2:放(拆盘)
                    if (Cools.isEmpty(wrkMastSta)){
                        WrkMastSta wrkMastSta1 = new WrkMastSta(wrkMast,new Date(),basDevp);
                        wrkMastSta1.setType(fullKM(wrkMast)? 1:2);
                        wrkMastSta1.setWrkType(5);//工作类型  1:取(叠盘)  2:拆盘  3:取放 5:满取  6:满放
                        wrkMastStaService.insert(wrkMastSta1);
                    };
                    break;
                case 23://3:满取
                    if (Cools.isEmpty(wrkMastSta)){
                        WrkMastSta wrkMastSta1 = new WrkMastSta(wrkMast,new Date(),basDevp);
                        wrkMastSta1.setType(fullKM(wrkMast)? 1:2);
                        wrkMastSta1.setWrkType(5);
                        wrkMastStaService.insert(wrkMastSta1);
                    }
                default:
                    return SUCCESS;
            }
            Date now = new Date();
            WrkMastSplitTwin wrkMastSplitTwinNew = new WrkMastSplitTwin(wrkMastSplitTwin);
            wrkMastSplitTwin.setWrkSts(4);//工作状态 0: 初始  1: 等待取货完成  2: 取货完成待作业  3: 等待放货完成  4: 完成
            wrkMastSplitTwin.setUpdateTime(now);
            wrkMastSplitTwinService.updateById(wrkMastSplitTwin);
            wrkMastSplitTwinNew.setCreateTime(now);
            wrkMastSplitTwinNew.setUpdateTime(now);
            wrkMastSplitTwinNew.setWrkSts(0);//工作状态 0: 初始  1: 等待取货完成  2: 取货完成待作业  3: 等待放货完成  4: 完成
            wrkMastSplitTwinNew.setWrkType(2);//工作类型 0: 未知  1: 取  2: 放  3: 取放  4: 完成
            wrkMastSplitTwinService.insert(wrkMastSplitTwinNew);
        }catch (Exception e){
            log.error("异常!!!"+e);
            log.error("前后双工位拆分堆垛机执行作业生成异常!!!"+e.getMessage());
            return FAIL;
        }
        return SUCCESS;
    }
    public boolean fullKM(WrkMast wrkMast){
        if (wrkMast.getIoType()!=10 && wrkMast.getIoType()!=110){
            return true;
    public ReturnT<String> start(WrkMastSplitTwin wrkMastSplitTwin,WrkMast wrkMast,Integer crnStation) {  //取货任务完成  放货
        try {
            Date now = new Date();
            WrkMastSplitTwin wrkMastSplitTwinNew = new WrkMastSplitTwin(wrkMast,crnStation,now);
            switch (wrkMastSplitTwin.getIoType()){
                case 1:
                    wrkMastSplitTwinNew.setWrkStart(wrkMast.getStaNo().toString());
                    wrkMastSplitTwinNew.setWrkEnd(wrkMast.getLocNo());
                    break;
                case 2:
                    wrkMastSplitTwinNew.setWrkStart(wrkMast.getSourceLocNo());
                    wrkMastSplitTwinNew.setWrkEnd(wrkMast.getIoType()==11? wrkMast.getLocNo():wrkMast.getSourceStaNo().toString());
                    break;
                default:
                    log.error("前后双工位拆分堆垛机执行作业生成异常!!!====>工作号={},任务类型={},任务类型异常!",wrkMastSplitTwin.getWrkNo(),wrkMastSplitTwin.getIoType$());
                    return FAIL;
            }
            wrkMastSplitTwinNew.setStartRow(LocAndStaCodeUtil.getRow(wrkMastSplitTwin.getWrkStart()));
            wrkMastSplitTwinNew.setStartBay(LocAndStaCodeUtil.getBay(wrkMastSplitTwin.getWrkStart()));
            wrkMastSplitTwinNew.setStartLev(LocAndStaCodeUtil.getLev(wrkMastSplitTwin.getWrkStart()));
            wrkMastSplitTwinNew.setEndRow(LocAndStaCodeUtil.getRow(wrkMastSplitTwin.getWrkStart()));
            wrkMastSplitTwinNew.setEndBay(LocAndStaCodeUtil.getBay(wrkMastSplitTwin.getWrkStart()));
            wrkMastSplitTwinNew.setEndLev(LocAndStaCodeUtil.getLev(wrkMastSplitTwin.getWrkStart()));
            wrkMastSplitTwinNew.setWrkType(1);//工作类型 0: 未知  1: 取  2: 放  3: 取放  4: 完成
            wrkMastSplitTwinNew.setIoType(wrkMastSplitTwin.getIoType());//任务类型 0: 未知  1: 入库  2: 出库
            wrkMastSplitTwinNew.setWrkSts(0);//工作状态 0: 初始  1: 等待取货完成  2: 取货完成待作业  3: 等待放货完成  4: 完成
            wrkMastSplitTwinService.insert(wrkMastSplitTwinNew);
            wrkMast.setWrkSts(wrkMast.getWrkSts()+1);
            wrkMast.setAppeTime(now);
            wrkMastService.updateById(wrkMast);
        }catch (Exception e){
            log.error("前后双工位拆分堆垛机执行作业生成异常!!!"+e.getMessage());
            return FAIL;
        }
        return false;
        return SUCCESS;
    }
}