自动化立体仓库 - WMS系统
pang.jiabao
2024-12-25 62b94e763b07ce64e5b43274bb428c1c9c46ed6e
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -88,18 +88,29 @@
    public R inLocCallAgv(String sta, String inSta) {
        BasDevp basDevp = basDevpMapper.selectById(inSta);
        // 0.出库模式,1.agv入库中,2.生成入库任务
        if (basDevp.getDevMk().equals("0")) { // 是出库
             // 判断是否有出库任务
            int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>()
                    .eq("sta_no", inSta).lt("wrk_sts",14).in("io_type",101,103,107,110));
            if (count == 0) {
                // 没有出库任务,更改为入库模式
                basDevp.setDevMk("1");
                basDevpMapper.updateById(basDevp);
            } else {
                return R.parse(inSta + "站点存在出库任务");
            }
        // 判断是否有出库任务
        Wrapper<WrkMast> wrapper = new EntityWrapper<WrkMast>().lt("wrk_sts", 14).in("io_type", 101, 103, 107, 110);
        switch (inSta) {
            case "1040":
                wrapper.in("source_sta_no", "1043", "1044");
                break;
            case "2010":
                wrapper.in("source_sta_no", "2013", "2014");
                break;
            case "2000":
                wrapper.in("source_sta_no", "2003", "2004");
                break;
            case "3010":
                wrapper.in("source_sta_no", "3013", "3014");
                break;
            default:
        }
        int count = wrkMastService.selectCount(wrapper);
        log.info("入库呼叫agv呼叫站点:{},目标站点:{},出库任务数:{}",sta,inSta,count);
        if (count != 0) {
            return R.parse(inSta + "站点存在出库任务");
        }
        // 先绑定
@@ -131,10 +142,13 @@
                    .build()
                    .doPost();
            JSONObject jsonObject = JSON.parseObject(response);
            jsonObject.getString("message");
            if (jsonObject.getInteger("code").equals(0)) {
                success = true;
                // 入库暂存+1
                basDevp.setInQty(basDevp.getInQty() + 1);
                basDevpMapper.updateById(basDevp);
            } else {
                message = jsonObject.getString("message");
                log.error("入库呼叫agv失败!!!url:{};request:{};response:{}", ApiInterfaceConstant.AGV_IP + ApiInterfaceConstant.AGV_CALL_IN_PATH, body, response);
            }
        } catch (Exception e) {
@@ -364,7 +378,9 @@
                    throw new CoolException("修改单据作业数量失败");
                }
                DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme(),orderDetl.getManu());
//                DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme(),orderDetl.getManu());
                DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme(),orderDetl.getSuppCode()
                        , orderDetl.getManu(),orderDetl.getSku(),orderDetl.getSupp(),orderDetl.getTemp1(),orderDetl.getTemp2(),orderDetl.getTemp3(),orderDetl.getTemp4());
                if (DetlDto.has(detlDtos, detlDto)) {
                    DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch());
                    assert one != null;
@@ -393,6 +409,14 @@
                waitPakin.setModiTime(now);
                waitPakin.setManu(detlDto.getMark()); //标记
                waitPakin.setOrigin(order.getItemName());//仓库
                waitPakin.setSupp(detlDto.getSuppName()); //供应商
                waitPakin.setSku(detlDto.getCustomer()); //客户名称
                waitPakin.setThreeCode(detlDto.getOrderNo()); //u8发过来的订单号
                waitPakin.setSuppCode(detlDto.getFromOrderNo()); //来源单号
                waitPakin.setTemp1(detlDto.getTemp1());
                waitPakin.setTemp2(detlDto.getTemp2());
                waitPakin.setTemp3(detlDto.getTemp3());
                waitPakin.setTemp4(detlDto.getTemp4());
                if (!waitPakinService.insert(waitPakin)) {
                    throw new CoolException("保存入库通知档失败");
                }
@@ -781,7 +805,7 @@
        Date now = new Date();
        for(OrderDetl orderDetl : orderDetls){
            //查询所有库位状态为F的库位信息
            List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(),orderDetl.getBatch(),null,null);
            List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(),orderDetl.getBatch(),null,null,orderDetl.getSupp(),orderDetl.getTemp1(),orderDetl.getTemp2());
            if (locDetls.size() == 0) {
                throw new CoolException("库存中没有该物料");
            }