自动化立体仓库 - WMS系统
*
lsh
3 天以前 49f306cb470a8ee824204b701796d1d8f63ff223
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -98,6 +98,12 @@
    @Resource
    private OrderPakoutService orderPakOutService;
    @Resource
    private BasAgvLocDetlService basAgvLocDetlService;
    @Resource
    private BasAgvWrkDetlService basAgvWrkDetlService;
    @Override
    @Transactional
    public String startupFullPutStore(FullStoreParam param, Long userId) {
@@ -311,14 +317,7 @@
                dtos.add(new OutLocDto(locNo, locDetlDto));
            }
        }
        Config config = configService.selectConfigByCode("AutoMPArea");
        List<LocMast> list = locMastMapper.selectList(
                new EntityWrapper<LocMast>()
                        .eq("whs_type", 5)
                        .eq("loc_sts", "O")
        );
        LocMast locMastRgv = list.isEmpty() ? null : list.get(0);
        Config configAutoMPArea = configService.selectConfigByCode("AutoMPArea");
        Integer ioType = null;
        // 生成工作档
@@ -364,10 +363,26 @@
            wrkMast.setEmptyMk("N"); // 空板
            wrkMast.setLinkMis("N");
            wrkMast.setBarcode(locMast.getBarcode());
            if (Boolean.parseBoolean(config.getValue()) && locMastRgv.getLocNo() != null && ioType != 107) {  //若有空库位且配置允许则绑定其备料库位号
                wrkMast.setLocNo(locMastRgv.getLocNo());
                wrkMast.setTakeNone("0");  //0rgv未取,1rgv已取货
            }
            wrkMast.setTakeNone("0");  //0非自动
            List<BasAgvWrkDetl> basAgvWrkDetls = null;
            List<BasAgvLocDetl> basAgvLocDetls = null;
            try{
                if (Boolean.parseBoolean(configAutoMPArea.getValue())){
                    if (wrkMast.getStaNoAgvSign()){
                        if (ioType==101){
                            // 全板出库
                            basAgvLocDetls = new ArrayList<>();
                        } else {
                            // 拣料出库
                            basAgvWrkDetls = new ArrayList<>();
                        }
                        wrkMast.setTakeNone("1"); //等待下发
                    } else {
                        wrkMast.setTakeNone("3");  //无需AGV搬运
                    }
                }
            } catch (Exception e) {}  //配置项不存在,不做处理
            wrkMast.setAppeUser(userId); // 操作人员数据
            wrkMast.setAppeTime(now);
            wrkMast.setModiUser(userId);
@@ -375,6 +390,7 @@
            if (!wrkMastService.insert(wrkMast)) {
                throw new CoolException("保存工作档失败,出库库位号:"+dto.getLocNo());
            }
            // 生成工作档明细
            for (LocDetlDto detlDto : dto.getLocDetlDtos()) {
                if (detlDto.getCount()==null || detlDto.getCount() <= 0.0D) {continue;}
@@ -389,22 +405,48 @@
                wrkDetl.setAppeUser(userId);
                wrkDetl.setModiTime(now);
                wrkDetl.setModiUser(userId);
                try{
                    if (basAgvWrkDetls != null){
                        BasAgvWrkDetl basAgvWrkDetl = new BasAgvWrkDetl();
                        basAgvWrkDetl.sync(wrkDetl);
                        basAgvWrkDetls.add(basAgvWrkDetl);
                    }
                } catch (Exception e) {}  //配置项不存在,不做处理
                if (!wrkDetlService.insert(wrkDetl)) {
                    throw new CoolException("保存工作档明细失败");
                }
            }
            //修改agv备料区状态
            if(locMastRgv.getLocSts().equals("O") && ioType != 107){
                locMastRgv.setLocSts("S");
                locMastRgv.setModiUser(userId);
                locMastRgv.setModiTime(now);
                if (!locMastService.updateById(locMastRgv)) {
                    throw new CoolException("预约agv备料区库位状态失败,库位号:"+locMastRgv.getLocNo());
                }
            }
//            if(locMastRgv !=null){
//                if (Boolean.parseBoolean(config.getValue()) && locMastRgv.getLocNo() != null && ioType != 107) {  //若有空库位且配置允许则绑定其备料库位号
//                    //修改agv备料区状态
//                    if(locMastRgv.getLocSts().equals("O") && ioType != 107){
//                        locMastRgv.setLocSts("S");
//                        locMastRgv.setModiUser(userId);
//                        locMastRgv.setModiTime(now);
//                        if (!locMastService.updateById(locMastRgv)) {
//                            throw new CoolException("预约agv备料区库位状态失败,库位号:"+locMastRgv.getLocNo());
//                        }
//                    }
//                }
//            }
            // 修改库位状态:   F.在库 ====>>> R.出库预约/P.拣料/盘点/并板出库中
            locMast = locMastService.selectById(dto.getLocNo());
            if (locMast.getLocSts().equals("F")) {
                try{
                    if (basAgvLocDetls != null){
                        List<LocDetl> locDetlList = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", locMast.getLocNo()));
                        for (LocDetl locDetl : locDetlList) {
                            BasAgvLocDetl basAgvLocDetl = new BasAgvLocDetl();
                            basAgvLocDetl.sync(locDetl);
                            basAgvLocDetls.add(basAgvLocDetl);
                        }
                    }
                } catch (Exception e) {}  //配置项不存在,不做处理
                locMast.setLocSts(ioType==101?"R":"P");
                locMast.setModiUser(userId);
                locMast.setModiTime(now);
@@ -414,6 +456,21 @@
            } else {
                throw new CoolException(dto.getLocNo() + "库位不是在库状态");
            }
            try{
                // 增加AGV库存中转数量
                if (basAgvLocDetls != null){
                    for (BasAgvLocDetl basAgvLocDetl : basAgvLocDetls) {
                        basAgvLocDetlService.insert(basAgvLocDetl);
                    }
                }
                if (basAgvWrkDetls != null){
                    for (BasAgvWrkDetl basAgvWrkDetl : basAgvWrkDetls) {
                        basAgvWrkDetlService.insert(basAgvWrkDetl);
                    }
                }
            }catch (Exception e){}
        }
    }
@@ -427,7 +484,7 @@
                throw new CoolException("订单出库异常,请联系管理员");
            }
        }
        Config config = configService.selectConfigByCode("AutoMPArea");
        Config configAutoMPArea = configService.selectConfigByCode("AutoMPArea");
        // 获取库位
        LocMast locMast = locMastService.selectById(taskDto.getLocNo());
@@ -459,10 +516,27 @@
        wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 源站
        wrkMast.setStaNo(staDesc.getStnNo()); // 目标站
        wrkMast.setSourceLocNo(taskDto.getLocNo()); // 源库位
        if (Boolean.parseBoolean(config.getValue()) && locMastRgv.getLocNo() != null) {  //若有空库位且配置允许则绑定其备料库位号
            wrkMast.setLocNo(locMastRgv.getLocNo());
            wrkMast.setTakeNone("0");  //0rgv未取,1rgv已取货
        }
        wrkMast.setTakeNone("0");  //0非自动
        List<BasAgvWrkDetl> basAgvWrkDetls = null;
        List<BasAgvLocDetl> basAgvLocDetls = null;
        try{
            if (Boolean.parseBoolean(configAutoMPArea.getValue())){
                if (wrkMast.getStaNoAgvSign()){
                    if (ioType==101){
                        // 全板出库
                        basAgvLocDetls = new ArrayList<>();
                    } else {
                        // 拣料出库
                        basAgvWrkDetls = new ArrayList<>();
                    }
                    wrkMast.setTakeNone("1"); //等待下发
                } else {
                    wrkMast.setTakeNone("3");  //无需AGV搬运
                }
            }
        } catch (Exception e) {}  //配置项不存在,不做处理
        wrkMast.setFullPlt("Y"); // 满板:Y
        wrkMast.setPicking("N"); // 拣料
        wrkMast.setExitMk("N"); // 退出
@@ -499,6 +573,15 @@
            wrkDetl.setAppeUser(userId);
            wrkDetl.setModiTime(now);
            wrkDetl.setModiUser(userId);
            try{
                if (basAgvWrkDetls != null){
                    BasAgvWrkDetl basAgvWrkDetl = new BasAgvWrkDetl();
                    basAgvWrkDetl.sync(wrkDetl);
                    basAgvWrkDetls.add(basAgvWrkDetl);
                }
            } catch (Exception e) {}  //配置项不存在,不做处理
            if (!wrkDetlService.insert(wrkDetl)) {
                throw new CoolException("保存工作档明细失败");
            }
@@ -528,6 +611,17 @@
        // 修改库位状态:   F.在库 ====>>> R.出库预约/P.拣料/盘点/并板出库中
        locMast = locMastService.selectById(taskDto.getLocNo());
        if (locMast.getLocSts().equals("F")) {
            try{
                if (basAgvLocDetls != null){
                    List<LocDetl> locDetlList = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", locMast.getLocNo()));
                    for (LocDetl locDetl : locDetlList) {
                        BasAgvLocDetl basAgvLocDetl = new BasAgvLocDetl();
                        basAgvLocDetl.sync(locDetl);
                        basAgvLocDetls.add(basAgvLocDetl);
                    }
                }
            } catch (Exception e) {}  //配置项不存在,不做处理
            locMast.setLocSts(ioType==101?"R":"P");
            locMast.setModiUser(userId);
            locMast.setModiTime(now);
@@ -537,6 +631,23 @@
        } else {
            throw new CoolException(taskDto.getLocNo() + "库位不是在库状态");
        }
        try{
            // 增加AGV库存中转数量
            if (basAgvLocDetls != null){
                for (BasAgvLocDetl basAgvLocDetl : basAgvLocDetls) {
                    basAgvLocDetlService.insert(basAgvLocDetl);
                }
            }
            if (basAgvWrkDetls != null){
                for (BasAgvWrkDetl basAgvWrkDetl : basAgvWrkDetls) {
                    basAgvWrkDetlService.insert(basAgvWrkDetl);
                }
            }
        }catch (Exception e){}
    }
    @Override