自动化立体仓库 - WMS系统
#
lty
12 小时以前 6a460f6895f0f09c406c2dc6b2b31e4d77d3ef03
src/main/java/com/zy/asrs/controller/OrderPakinController.java
@@ -44,6 +44,10 @@
    private WrkMastLogService wrkMastLogService;
    @Autowired
    private LocOwnerService locOwnerService;
    @Autowired
    private OrderDetlPakinService orderDetlPakinService;
    @Autowired
    private MatService matService;
    @RequestMapping(value = "/order/nav/list/auth")
    @ManagerAuth
@@ -88,7 +92,27 @@
        }
        wrapper.eq("status", 1);
        wrapper.eq("move_status", 0);
        return R.ok(orderService.selectPage(new Page<>(curr, limit), wrapper));
        Page<OrderPakin> page = orderService.selectPage(new Page<>(curr, limit), wrapper);
        if (page != null && page.getRecords() != null) {
            for (OrderPakin order : page.getRecords()) {
                if (order == null || Cools.isEmpty(order.getOrderNo())) {
                    continue;
                }
                int total = orderDetlPakinService.selectCount(new EntityWrapper<OrderDetlPakin>()
                        .eq("order_no", order.getOrderNo())
                        .eq("status", 1));
                if (total <= 0) {
                    order.setIssueComplete(0);
                    continue;
                }
                int notComplete = orderDetlPakinService.selectCount(new EntityWrapper<OrderDetlPakin>()
                        .eq("order_no", order.getOrderNo())
                        .eq("status", 1)
                        .where("be_batch is null or be_batch < anfme"));
                order.setIssueComplete(notComplete <= 0 ? 1 : 0);
            }
        }
        return R.ok(page);
    }
    @RequestMapping(value = "/actual/shipment/order/report/auth")
@@ -99,6 +123,63 @@
            return R.ok("成功").add("成功");
        } catch (Exception e) {}
        return R.error("失败").add("失败");
    }
    @RequestMapping(value = "/order/oneKey/issue/auth")
    @ManagerAuth(memo = "一键下发")
    @Transactional
    public R oneKeyIssue(@RequestParam String orderNo) {
        if (Cools.isEmpty(orderNo)) {
            return R.error("订单号不能为空");
        }
        List<OrderDetlPakin> detls = orderDetlPakinService.selectList(new EntityWrapper<OrderDetlPakin>()
                .eq("order_no", orderNo)
                .eq("status", 1));
        if (detls == null || detls.isEmpty()) {
            return R.error("未找到对应明细");
        }
        List<String> errorMessages = new ArrayList<>();
        final double LENGTH_MIN = 315, LENGTH_MAX = 1150;
        final double WIDTH_MIN = 160, WIDTH_MAX = 730;
        final double HEIGHT_MIN = 140, HEIGHT_MAX = 810;
        final double WIEGHT_MIN = 0, WIEGHT_MAX = 23;
        for (OrderDetlPakin detl : detls) {
            Mat mat = matService.selectOne(new EntityWrapper<Mat>().eq("matnr", detl.getMatnr()));
            if (mat == null) {
                errorMessages.add("物料编号 " + detl.getMatnr() + " 不存在");
                continue;
            }
            Double len = mat.getManLength();
            Double wid = mat.getWidth();
            Double hei = mat.getHeight();
            Double wet = mat.getWeight();
            if (len == null || len < LENGTH_MIN || len > LENGTH_MAX) {
                errorMessages.add(String.format("物料 %s 长度异常:必须 %.0f~%.0f mm,当前 %s",
                        detl.getMatnr(), LENGTH_MIN, LENGTH_MAX, len));
            }
            if (wid == null || wid < WIDTH_MIN || wid > WIDTH_MAX) {
                errorMessages.add(String.format("物料 %s 宽度异常:必须 %.0f~%.0f mm,当前 %s",
                        detl.getMatnr(), WIDTH_MIN, WIDTH_MAX, wid));
            }
            if (hei == null || hei < HEIGHT_MIN || hei > HEIGHT_MAX) {
                errorMessages.add(String.format("物料 %s 高度异常:必须 %.0f~%.0f mm,当前 %s",
                        detl.getMatnr(), HEIGHT_MIN, HEIGHT_MAX, hei));
            }
            if (wet == null || wet < WIEGHT_MIN || wet > WIEGHT_MAX) {
                errorMessages.add(String.format("物料 %s 毛重异常:必须 %.0f~%.0f kg,当前 %s",
                        detl.getMatnr(), WIEGHT_MIN, WIEGHT_MAX, wet));
            }
        }
        if (!errorMessages.isEmpty()) {
            return R.error(String.join(";\n", errorMessages));
        }
        if (!orderDetlPakinService.issueAll(orderNo)) {
            return R.error("下发明细更新失败");
        }
        if (!orderService.updateOrderStatus(orderNo)) {
            throw new CoolException("订单状态更新失败");
        }
        return R.ok("成功").add("成功");
    }
    @RequestMapping(value = "/order/detl/all/auth")
@@ -389,7 +470,21 @@
                throw new CoolException("存在作业中数据,不能完结。请检查入库通知档和工作档");
            }
        }
        if(order.getSettle() == 66){
            List<OrderDetlPakin> lists = orderDetlPakinService.selectList(new EntityWrapper<OrderDetlPakin>().eq("order_no",order.getOrderNo()));
            for (OrderDetlPakin orderDetlPakin : lists) {
                String boxType3 = orderDetlPakin.getBoxType3();
                if (boxType3 == null || !boxType3.contains("HDU")) {
                    throw new CoolException(
                            String.format("订单 %s 的明细中不存在包含HDU的物料明细: %s (物料: %s)",
                                    order.getOrderNo(),
                                    boxType3,
                                    orderDetlPakin.getMatnr() != null ? orderDetlPakin.getMatnr() : "未知物料"
                            )
                    );
                }
            }
        }
        order.setUpdateBy(getUserId());
        order.setUpdateTime(new Date());
        if (!orderService.updateById(order)) {