mrzhssss
2022-04-11 d2adac4e369165ec523c23e7ffd19fc5775d43b5
src/main/java/zy/cloud/wms/manager/controller/PickoutController.java
@@ -131,7 +131,8 @@
    @RequestMapping(value = "/pickout/check/column/auth")
    @ManagerAuth
    public R query(@RequestBody JSONObject param) {
        Wrapper<Pickout> wrapper = new EntityWrapper<Pickout>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
        Wrapper<Pickout> wrapper = new EntityWrapper<Pickout>()
                .eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
        if (null != pickoutService.selectOne(wrapper)){
            return R.parse(BaseRes.REPEAT).add(getComment(Pickout.class, String.valueOf(param.get("key"))));
        }
@@ -193,6 +194,8 @@
                .eq("id",wave.getId()));
        List<WaveDetl> waveDetls = waveDetlService.selectList(new EntityWrapper<WaveDetl>()
                .eq("wave_id", wave.getId()));
        if (Cools.isEmpty(waveDetls)) {
            return R.error("找不到对应波次明细");
        }
@@ -206,11 +209,60 @@
                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();