自动化立体仓库 - WMS系统
dubin
1 天以前 4315c959d95e106ff9e18c28398087aeee7d077d
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -66,6 +66,8 @@
    @Autowired
    private BasArmMastService basArmMastService;
    @Autowired
    private BasAgvLocDetlService basAgvLocDetlService;
    @Autowired
    private BasArmMastSignService basArmMastSignService;
    @Autowired
    private BasAgvMastService basAgvMastService;
@@ -916,6 +918,7 @@
            LocDetl locDetl = locDetlService.selectOne(
                    wrapper.eq("zpallet", wrkDetl.getZpallet())
                            .eq("matnr", wrkDetl.getMatnr())
                            .eq("box_type3",wrkDetl.getBoxType3())
            );
            // 可拣总量:优先取库存表,否则取作业数量
            if (Cools.isEmpty(locDetl)) {
@@ -944,6 +947,125 @@
        return result;
    }
    /**
     * 入/出库通知单下发
     * @param param
     */
    @Override
    public void orderCreate(OpenOrderParam param) {
        Order order = orderService.selectByNo(param.getOrderNo());
        if (!Cools.isEmpty(order)){
            throw new CoolException(param.getOrderNo() + "订单已存在,请勿重复创建");
        }
        Date now = new Date();
        order = new Order(
                String.valueOf(snowflakeIdWorker.nextId()), // 编号[非空]
                param.getOrderNo(), // 订单编码[非空]
                DateUtils.convert(now), //单据日期
                param.getOrderType(), //订单类型
                null, //项目编号
                null, //项目名称 客户PO号
                null, //调拨项目编号
                null, //初始票据号
                null, //票据号
                null, //客户编号
                null, //客户
                param.getOrderInternalCode(), //单据内码
                param.getWkType(), //业务类型
                null, //合计金额
                null, //优惠率
                null, //优惠金额
                null, //销售或采购费用合计
                null, //实付金额
                null, //付款类型 1: 现金  2: 记账
                null, //业务员
                null, //结算天数
                null, //邮费支付类型 1: 在线支付  2: 货到付款
                null, //邮费
                param.getBusinessTime(), //业务日期
                param.getCreateTime(), //创建日期
                null, //物流名称
                null, //物流单号
                1L, //订单状态
                1, //状态 1: 正常  0: 禁用
                9527L, //添加人员
                now, //添加时间
                9527L, //修改人员
                now, //修改时间
                param.getStationId(), //入/出库接驳站点
                param.getOperateType() // 操作类型 1.新增 2.修改 3.取消
        );
        if (!orderService.insert(order)){
            throw new CoolException("保存订单主档失败,请联系管理员!"+order);
        }
        List<OpenOrderParam.OrderItem> list = new ArrayList<>();
        List<OpenOrderParam.OrderItem> orderItems = param.getOrderItems();
        for (OpenOrderParam.OrderItem item : orderItems){
            OpenOrderParam.OrderItem orderItem = new OpenOrderParam.OrderItem(
                    item.getLineId(),
                    item.getMatNr(),
                    item.getMakTx(),
                    item.getAnfme(),
                    item.getSpec(),
                    item.getModel(),
                    item.getUnit(),
                    item.getBatch(),
                    item.getPalletId(),
                    item.getPlanNo(),
                    item.getTargetWareHouseId(),
                    item.getSourceWareHouseId()
            );
            if (OpenOrderParam.OrderItem.hasLineNumber(list,orderItem)){
                OpenOrderParam.OrderItem oi = OpenOrderParam.OrderItem.findLineNumber(
                        list,
                        item.getLineId(),
                        item.getMatNr(),
                        item.getMakTx(),
                        item.getAnfme(),
                        item.getSpec(),
                        item.getModel(),
                        item.getUnit(),
                        item.getBatch(),
                        item.getPalletId(),
                        item.getPlanNo(),
                        item.getTargetWareHouseId(),
                        item.getSourceWareHouseId()
                );
                assert oi != null;
                oi.setAnfme(oi.getAnfme() + orderItem.getAnfme());
            } else {
                list.add(orderItem);
            }
        }
        for (OpenOrderParam.OrderItem orderItem : list) {
            Mat mat = matService.selectByMatnr(orderItem.getMatNr());
            if (Cools.isEmpty(mat)){
                throw new CoolException("订单明细中的商品编号不存在:" + orderItem.getMatNr());
            }
            OrderDetl orderDetl = new OrderDetl();
            orderDetl.sync(mat);
            orderDetl.setOrderNo(order.getOrderNo()); // 订单编号
            orderDetl.setOrderId(order.getId()); // 订单内码
            orderDetl.setStandby1(order.getTel()); // 行内码 唯一标识
            orderDetl.setAnfme(orderItem.getAnfme()); // 订单数量
            orderDetl.setBarcode(orderItem.getBatch()); // 批次
            orderDetl.setStandby2(orderItem.getPalletId()); // 托盘码
            orderDetl.setStandby3(orderItem.getPlanNo()); // 计划跟踪号
            orderDetl.setBoxType1(orderItem.getSourceWareHouseId()); // 建议入库仓库
            orderDetl.setBoxType2(orderItem.getTargetWareHouseId()); // 建议出库仓库
            orderDetl.setCreateBy(9527L);
            orderDetl.setCreateTime(now);
            orderDetl.setUpdateBy(9527L);
            orderDetl.setUpdateTime(now);
            orderDetl.setStatus(1);
            orderDetl.setQty(0.0D);
//            orderDetl.setPakinPakoutStatus(1);
            if (!orderDetlService.insert(orderDetl)) {
                throw new CoolException("保存订单明细失败,请联系管理员!"+orderDetl);
            }
        }
    }
    @Override
    @Transactional
    public List<AgvLocListDetlParam> getAgvLocList(AgvLocListParam param) {
@@ -969,8 +1091,8 @@
    }
    private AgvLocListDetlParam buildAgvLocListDetlParam(String locNo, String locSts) {
        List<LocDetl> detlList = locDetlService.selectList(
                new EntityWrapper<LocDetl>().eq("loc_no", locNo)
        List<BasAgvLocDetl> detlList = basAgvLocDetlService.selectList(
                new EntityWrapper<BasAgvLocDetl>().eq("loc_no", locNo)
        );
        
        AgvLocListDetlParam dto = new AgvLocListDetlParam();