自动化立体仓库 - WMS系统
skyouc
2 天以前 707d414c0e6a8baff3ce7affec820f0fc1a13c19
src/main/java/com/zy/asrs/task/handler/AutoLocMoveHandler.java
@@ -10,7 +10,9 @@
import com.zy.asrs.service.WorkService;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
import com.zy.asrs.utils.Utils;
import com.zy.common.model.StartupDto;
import com.zy.common.properties.SlaveProperties;
import com.zy.common.service.CommonService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -20,6 +22,7 @@
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
@@ -37,33 +40,73 @@
    @Autowired
    private WorkService workService;
    @Autowired
    private SlaveProperties slaveProperties;
    @Transactional(isolation = Isolation.REPEATABLE_READ)
    public ReturnT<String> start(Integer crnNo, Integer ioType) {
        try {
            //11  穿梭移单边
            if (ioType==11){
                for (int bay = 1;bay < 27;bay++){
                    for (int lev = 1 ; lev <6 ; lev++){
                        List<LocMast> locMasts = locMastService.selectLocMastShuttleMoveUnilateral(bay,lev,crnNo);
                        if (!Cools.isEmpty(locMasts) && locMasts.size()<4){
                            for (LocMast locMast:locMasts){
                                LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locMast.getLocNo()));
//                                StartupDto startupDto = commonService.getLocNo(crnNo == 1 ? 6 : 5, ioType, crnNo == 1 ? 917 : 918, locDetl.getMatnr(), locDetl.getBatch(),locDetl.getBrand(), null);
                                FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(locDetl.getMatnr(),locDetl.getBatch(),locDetl.getBrand());
            if (ioType == 11) {
                for (int bay = 2; bay < 141; bay++) {
                    for (int lev = 1; lev < 22; lev++) {
                        List<LocMast> locMasts = locMastService.selectLocMastShuttleMoveUnilateral(bay, lev, crnNo);
                        if (!Cools.isEmpty(locMasts) && locMasts.size() < 4) {
                            for (LocMast locMast : locMasts) {
                                if (Utils.isDeepLoc(slaveProperties, locMast.getLocNo())) {
                                    String shallowLoc = Utils.getShallowLoc(slaveProperties, locMast.getLocNo());
                                    LocMast locNo = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", shallowLoc));
                                    if (!Objects.isNull(locNo)) {
                                        StartupDto startupDto = commonService.getLocNo(ioType, crnNo == 1 ? 109 : 126, 1, null, null);
                                        workService.locMove(locNo.getLocNo(), startupDto.getLocNo(), 9527L);
                                        break;
                                    }
                                }
                                StartupDto startupDto = commonService.getLocNo( ioType, crnNo == 1 ? 917 : 918, findLocNoAttributeVo, null);
                                workService.locMove(locMast.getLocNo(), startupDto.getLocNo(),9527L);
                                StartupDto startupDto = commonService.getLocNo(ioType, crnNo == 1 ? 109 : 126, 1, null, null);
                                workService.locMove(locMast.getLocNo(), startupDto.getLocNo(), 9527L);
                                break;
                            }
                            return SUCCESS;
                        }
                    }
                }
            } else if (ioType == 12) {
                for (int bay = 2; bay < 61; bay++) {
                    for (int lev = 1; lev < 7; lev++) {
                        List<LocMast> locMasts = locMastService.selectLocMastShuttleMoveUnilateral(bay, lev, crnNo );
                        if (!Cools.isEmpty(locMasts) && locMasts.size() < 4) {
                            for (LocMast locMast : locMasts) {
//                                if (Utils.isDeepLoc(slaveProperties, locMast.getLocNo())) {
//                                    String shallowLoc = Utils.getShallowLoc(slaveProperties, locMast.getLocNo());
//                                    LocMast locNo = locMastService.selectOne(new EntityWrapper<LocMast>()
//                                            .eq("crn_no", crnNo)
//                                            .eq("loc_no", shallowLoc));
//                                    if (!Objects.isNull(locNo)) {
//                                        StartupDto startupDto = commonService.getLocNo(ioType, crnNo == 1 ? 205 : 215, 3, null, null);
//                                        workService.locMove(locNo.getLocNo(), startupDto.getLocNo(), 9527L);
//                                        break;
//                                    }
//                                }
//                                LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locMast.getLocNo()));
//                                StartupDto startupDto = commonService.getLocNo(crnNo == 1 ? 6 : 5, ioType, crnNo == 1 ? 917 : 918, locDetl.getMatnr(), locDetl.getBatch(),locDetl.getBrand(), null);
//                                FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(locDetl);
                                StartupDto startupDto = commonService.getLocNo(ioType, crnNo == 1 ? 205 : 215, 3, null, null);
                                workService.locMove(locMast.getLocNo(), startupDto.getLocNo(), 9527L);
                                break;
                            }
                            return SUCCESS;
                        }
                    }
                }
            }else {//11  单边移穿梭
                List<Map<String, Object>> list = locDetlService.selectLocDetlUnilateralMoveShuttleMap(crnNo);//111   单边移穿梭
                for (Map<String, Object> map : list) {
                    String matnr = map.getOrDefault("matnr","").toString();//物料号
                    String batch = map.getOrDefault("batch","").toString();//批号
                    String grade = map.getOrDefault("brand","").toString();//等级
                    String matnr = map.getOrDefault("matnr", "").toString();//物料号
                    String batch = map.getOrDefault("batch", "").toString();//批号
                    String grade = map.getOrDefault("brand", "").toString();//等级
                    int count = Integer.parseInt(map.get("count").toString());//单边库数量
                    if (count < 4) {
                        continue;
@@ -72,16 +115,16 @@
                    List<LocDetl> locDetlList = locDetlService.selectLocDetlUnilateralMoveShuttle(matnr, batch, grade, crnNo);
                    for (LocDetl locDetl : locDetlList) {
//                        StartupDto startupDto = commonService.getLocNo(crnNo == 1 ? 4 : 3, ioType, crnNo == 1 ? 901 : 932, locDetl.getMatnr(), locDetl.getBatch(), locDetl.getBrand(), null);
                        FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(locDetl.getMatnr(),locDetl.getBatch(),locDetl.getBrand());
                        FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(locDetl);
                        StartupDto startupDto = commonService.getLocNo( ioType, crnNo == 1 ? 901 : 932, findLocNoAttributeVo, null);
                        StartupDto startupDto = commonService.getLocNo(ioType, crnNo == 1 ? 901 : 932, null, findLocNoAttributeVo, null);
                        workService.locMove(locDetl.getLocNo(), startupDto.getLocNo(), 9527L);
                    }
                }
                return SUCCESS;
            }
        }catch (Exception e){
            log.error("自动移库出错,堆垛机号{},工作类型{}",crnNo,ioType);
        } catch (Exception e) {
            log.error("自动移库出错,堆垛机号{},工作类型{}", crnNo, ioType);
        }
        return SUCCESS;
    }