自动化立体仓库 - WMS系统
zyx
2024-04-10 e8eb22e3ab73fabe436b8c24d372e7f48b711b30
src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
@@ -42,6 +42,8 @@
    private AgvLocDetlService agvLocDetlService;
    @Autowired
    private AgvWrkMastService agvWrkMastService;
    @Autowired
    private AgvWorkService agvWorkService;
    /*
@@ -53,11 +55,12 @@
        if (Cools.isEmpty(param.getBarcode(), param.getCombMats())) {
            throw new CoolException(BaseRes.PARAM);
        }
        param.setContainerType(Short.valueOf(param.getBarcode().substring(0,2)));
        //检查是否已存在相同的托盘条码,存在则抛出异常
        if (agvWaitPakinService.selectCount(new EntityWrapper<AgvWaitPakin>().eq("supp_code", param.getBarcode())) > 0) {
            throw new CoolException(param.getBarcode() + "料想码已存在AGV入库通知档中");
        }
//        //检查是否已存在相同的托盘条码,存在则抛出异常
//        if (agvWaitPakinService.selectCount(new EntityWrapper<AgvWaitPakin>().eq("supp_code", param.getBarcode())) > 0) {
//            throw new CoolException(param.getBarcode() + "料想码已存在AGV入库通知档中");
//        }
        //检查库存是否有相同料箱,存在则抛出异常
        if(!Cools.isEmpty(agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("supp_code",param.getBarcode())))){
@@ -80,7 +83,7 @@
        if(StringUtils.isEmpty(param.getLocno())){
            return "组托成功";
        }else {
            combBinding(param.getBarcode(),param.getLocno());
            combBinding(param.getBarcode(),param.getLocno(),param.getContainerType());
            return "组托成功,绑定站点成功";
        }
@@ -136,10 +139,10 @@
                checkOrderQty(order,combMat);
            }
            DetlDto detlDto = new DetlDto(combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme(), combMat.getCsocode(), combMat.getIsoseq(),combMat.getContainerCode());
            DetlDto detlDto = new DetlDto(combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme(), combMat.getCsocode(), combMat.getIsoseq(),combMat.getContainerCode(),param.getLocType());
            //同一托盘下相同物料信息和批号转为一个入库通知档
            if (DetlDto.has(detlDtos, detlDto)) {
                DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch(), detlDto.getCsocode(), detlDto.getIsoseq(),null);
                DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch(), detlDto.getCsocode(), detlDto.getIsoseq(),detlDto.getContainerCode());
                assert one != null;
                one.setAnfme(one.getAnfme() + detlDto.getAnfme());
            } else {
@@ -191,6 +194,8 @@
        //销售订单行号
        waitPakin.setDeadTime(detlDto.getIsoseq());
        waitPakin.setLocType(detlDto.getLocType());
        waitPakin.setAppeUser(userId);
        waitPakin.setAppeTime(now);
@@ -215,28 +220,38 @@
    }
    @Override
    public void combBinding(String barcode, String stationCode) {
    public void combBinding(String barcode, String stationCode, Short containerType) {
        AgvBasDevp agvBasDevp = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>().eq("dev_no", stationCode));
        if(Cools.eq(agvBasDevp.getBarcode(),barcode)){
            return;
        }
        if(Cools.isEmpty(agvWaitPakinService.selectByContainerCode(barcode))){
            throw new CoolException("该料箱未组托,无法绑定站点");
        }
        AgvBasDevp agvBasDevp = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>().eq("barcode", barcode));
        AgvBasDevp agvBasDevp1 = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>().eq("barcode", barcode));
        if(!Cools.isEmpty(agvBasDevp)){
        if(!Cools.isEmpty(agvBasDevp1)){
            throw new CoolException(barcode + "已经绑定在"+ agvBasDevp.getDevNo() +"站点");
        }
        agvBasDevp = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>().eq("dev_no",stationCode));
        if(agvBasDevp == null){
            throw new CoolException(stationCode + "站点信息错误");
        }
        if(!"O".equals(agvBasDevp.getLocSts())){
            throw new CoolException(stationCode + "该站点货位状态非空");
        }
        AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", agvBasDevp.getDevNo()));
        if(!Cools.isEmpty(agvWrkMast)){
            throw new CoolException(stationCode + "该站点已被工作号为" + agvWrkMast.getWrkNo() + "占用,无法绑定");
        }
        agvBasDevp.setBarcode(barcode);
        agvBasDevp.setLocSts("F");
        agvBasDevp.setLocType2(containerType);
        agvBasDevpService.update(agvBasDevp,(new EntityWrapper<AgvBasDevp>().eq("dev_no",stationCode)));
    }
@@ -249,4 +264,20 @@
        }).collect(Collectors.toList());
    }
    @Override
    public void pakinEmpty(String devNo, boolean pakin) {
        //当前站点信息
        AgvBasDevp agvBasDevp = agvBasDevpService.selectById(devNo);
        //寻找相同类型的库位
        //生成空盘工作档
        //更改库位状态以及站点状态
    }
    @Override
    public void pakoutEmpty(String devNo) {
    }
}