#
mrzhssss
2022-03-26 54ff9a76122b2612e263d621298a3ca2d3e78f37
src/main/java/zy/cloud/wms/manager/controller/PickoutController.java
@@ -206,11 +206,59 @@
                orderNos.add(s);
            }
        }
        /**
         * 循环所有拣货单明细,依次分配给所有出库单
         */
        for (PickoutDetl pickoutDetl : pickoutDetls) {
            //获取本次波次生成拣货单之后,该物料总共捡了多少
            Double anfme = pickoutDetl.getAnfme();
            String matnr = pickoutDetl.getMatnr();
            /**
             * 获取所有的物料相同,且被包含在波次明细里的出库订单
             */
            List<OrderDetl> orderDetls = orderDetlService.selectOutList(matnr,new ArrayList<String>(orderNos));
            for (OrderDetl orderDetl : orderDetls) {
                /**
                 * 如果拣货单的剩余数量等于0,代表该物料已经分配完成,直接break
                 */
                if (anfme == 0.0 ){
                    break;
                }
                /**
                 * 如果拣货单的数量大于该出库单的数量,直接把出库所需量(out_qty)拉满
                 */
                if (anfme >= (orderDetl.getAnfme() - orderDetl.getOutQty())){
                    orderDetl.setOutQty(orderDetl.getAnfme());
                    anfme = anfme - (orderDetl.getAnfme() - orderDetl.getOutQty());
                    orderDetlService.update(orderDetl,new EntityWrapper<OrderDetl>()
                            .eq("id",orderDetl.getId()));
                    continue;
                }
                /**
                 * 如果拣货单的数量小于出库单的数量,证明该拣货单的物料已经不够分了,将
                 */
                if (anfme < (orderDetl.getAnfme() - orderDetl.getOutQty())){
                    orderDetl.setOutQty(anfme);
                    anfme = 0.0;
                    orderDetlService.update(orderDetl,new EntityWrapper<OrderDetl>()
                            .eq("id",orderDetl.getId()));
                }
            }
        }
        for (String orderNo : orderNos) {
            Order order = orderService.selectOne(new EntityWrapper<Order>()
                    .eq("order_no", orderNo));
            List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>()
                    .eq("order_no", orderNo));
            for (OrderDetl orderDetl : orderDetls) {
                if (orderDetl.getAnfme() == orderDetl.getOutQty()){
                    break;
                }
            }
            order.setSettle(4L);
            orderService.update(order,new EntityWrapper<Order>()
                    .eq("order_no",orderNo));
        }
        return R.ok();