自动化立体仓库 - WMS系统
dubin
昨天 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;
@@ -75,7 +77,8 @@
    private CommonService commonService;
    @Autowired
    private LocMastServiceImpl locMastService;
    @Autowired
    private WrkDetlService wrkDetlService;
    @Override
    @Transactional
    public void pakinOrderCreate(OpenOrderPakinParam param) {
@@ -774,7 +777,7 @@
        if (Cools.isEmpty(basArmMast)){
            throw new CoolException("未查询到相关机械臂拆码垛任务!!!"+ JSON.toJSONString(param));
        }
        basArmMastService.updateArmMastStatus(param.getArm_no(),basArmMast.getSortingLine(),basArmMast.getStaNo(),1,3);
//        basArmMastService.updateArmMastStatus(param.getArm_no(),basArmMast.getSortingLine(),basArmMast.getStaNo(),1,3);
        basArmMastService.updateArmMastStatus(param.getArm_no(),basArmMast.getSortingLine(),basArmMast.getStaNo(),2,3);
    }
@@ -798,6 +801,22 @@
        if (!Cools.isEmpty(basArmMast)){
            basArmMastService.updateArmMastStatus(param.getArm_no(),basArmMast.getSortingLine(),basArmMast.getStaNo(), 5,6);
        }
    }
    @Override
    @Transactional
    public boolean taskArmOrderResult(OrderArmEndParam param){
        if(param.getDone_num() == 0){
            if(basArmMastService.delete(new EntityWrapper<BasArmMast>().eq("arm_no",param.getArm_no())
                    .eq("status",1))){
                return true;
            }
        }
        if(param.getDone_num() == 1){
            return true;
        }
        log.error("未找到对应任务"+ param);
        return false;
    }
    @Override
@@ -888,6 +907,164 @@
            throw new CoolException("未能绑定");
        }
    }
    @Override
    @Transactional
    public List<PickWrkDetlListParam> getPickList(PdaPickListParam param) {
        List<WrkDetl> wrkDetls = wrkDetlService.findByBarcode(param.getBarcode());
        List<PickWrkDetlListParam> result = new ArrayList<>();
        wrkDetls.forEach(wrkDetl -> {
            Double total;
            EntityWrapper<LocDetl> wrapper = new EntityWrapper<>();
            LocDetl locDetl = locDetlService.selectOne(
                    wrapper.eq("zpallet", wrkDetl.getZpallet())
                            .eq("matnr", wrkDetl.getMatnr())
                            .eq("box_type3",wrkDetl.getBoxType3())
            );
            // 可拣总量:优先取库存表,否则取作业数量
            if (Cools.isEmpty(locDetl)) {
                total = wrkDetl.getAnfme();
            } else {
                total = locDetl.getAnfme();
            }
            // ===== 组装返回对象 =====
            PickWrkDetlListParam dto = new PickWrkDetlListParam();
            dto.setMatnr(wrkDetl.getMatnr());
            dto.setMaknx(wrkDetl.getMaktx());
            dto.setOrderNo(wrkDetl.getOrderNo());
            dto.setBoxType3(wrkDetl.getBoxType3());
            dto.setStandby1(wrkDetl.getStandby1());
            dto.setStandby2(wrkDetl.getStandby2());
            dto.setStandby3(wrkDetl.getStandby3());
            dto.setManu(wrkDetl.getManu());
            dto.setMemo(wrkDetl.getMemo());
            // 当前拣货数量
            dto.setCount(wrkDetl.getAnfme());
            // 可拣总数量
            dto.setTotal(total);
            result.add(dto);
        });
        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
@@ -914,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();