自动化立体仓库 - WMS系统
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -78,6 +78,10 @@
    private SlaveProperties slaveProperties;
    @Autowired
    private WaitPakinService waitPakinService;
    @Autowired
    private OrderDetl1ServiceImpl orderDetl1Service;
    @Autowired
    private Order1ServiceImpl order1Service;
    @Override
    @Transactional
@@ -404,7 +408,15 @@
        }
        // 获取库位
        LocMast locMast = locMastService.selectById(taskDto.getLocNo());
        String orderNo = "";
        int i = 0;
        for (LocDto locDto : taskDto.getLocDtos()) {
            if (i++ == 0) {
                orderNo = locDto.getOrderNo();
            } else if (!orderNo.equals(locDto.getOrderNo())) {
                throw new CoolException("出库订单不一致无法出库");
            }
            if (locDto.getAnfme() == null || locDto.getAnfme() <= 0.0D) {
                continue;
            }
@@ -412,9 +424,9 @@
            if (orderDetl == null) {
                orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null);
            }
            if (orderDetl.getAnfme() - orderDetl.getWorkQty() == 0) {
                return;
            }
//            if (orderDetl.getAnfme() - orderDetl.getWorkQty() == 0) {
//                return;
//            }
        }
@@ -457,8 +469,28 @@
        if (!wrkMastService.insert(wrkMast)) {
            throw new CoolException("保存工作档失败,出库库位号:" + taskDto.getLocNo());
        }
        Order order = orderService.selectByNo(orderNo);
        if (Cools.isEmpty(order.getAccountDay())) {
            order.setAccountDay(1);
        } else {
            order.setAccountDay(order.getAccountDay() + 1);
        }
        orderNo = order.getOrderNo() + "-" + order.getAccountDay();
        Order1 order2 = order1Service.selectByNo(orderNo);
        if (Cools.isEmpty(order2)) {
            //创建子表表头
            Order1 order1 = new Order1();
            order1.sync(order);
            order1.setOrderNo(orderNo);
            order1.setCreateBy(user.getId());
            order1.setCreateTime(now);
            order1.setUpdateTime(new Date());
            order1.setSettle(2L);
            order1Service.insert(order1);
        }
        // 生成工作档明细
        for (LocDto locDto : taskDto.getLocDtos()) {
            if (locDto.getAnfme() == null || locDto.getAnfme() <= 0.0D) {
                continue;
            }
@@ -473,9 +505,9 @@
            wrkDetl.setIoTime(now);
            wrkDetl.setWrkNo(workNo);
            wrkDetl.setBatch(locDto.getBatch());
            wrkDetl.setOrderNo(locDto.getOrderNo());
            wrkDetl.setOrderNo(orderNo);
            wrkDetl.setModel(mat.getModel());
            wrkDetl.setAnfme(locDto.getAnfme() > (orderDetl.getAnfme() - orderDetl.getWorkQty()) ? (orderDetl.getAnfme() - orderDetl.getWorkQty()) : locDto.getAnfme()); // 数量
            wrkDetl.setAnfme(locDto.getAnfme()); // 数量
            wrkDetl.setAppeTime(now);
            wrkDetl.setAppeUser(user.getId());
            wrkDetl.setModiTime(now);
@@ -487,6 +519,18 @@
            if (!orderDetlService.increaseWorkQty2(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), wrkDetl.getAnfme(), user.getEmail())) {
                throw new CoolException("修改订单明细数量失败");
            }
            //生成出货单
            OrderDetl1 orderDetl1 = new OrderDetl1();
            orderDetl1.sync(wrkDetl);
            orderDetl1.setOrderId(order2.getId());
            orderDetl1.setWorkQty(wrkDetl.getAnfme());
            orderDetl1.setStatus(1);
            orderDetl1.setCreateBy(user.getId());
            orderDetl1.setUpdateBy(user.getId());
            orderDetl1.setCreateTime(new Date());
            orderDetl1.setUpdateTime(new Date());
            orderDetl1Service.insert(orderDetl1);
            orderService.updateSettle(orderDetl.getOrderId(), 2L, user.getId());
        }
        // 修改库位状态:   F.在库 ====>>> R.出库预约/P.拣料/盘点/并板出库中
@@ -954,30 +998,43 @@
            List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
            for (WrkDetl wrkDetl : wrkDetls) {
                //字符串不为空
                String orderNo = wrkDetl.getOrderNo().split("-")[0];
                if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
                    if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) {
                    if (!orderDetlService.decrease(orderNo, wrkDetl.getMatnr(), null, wrkDetl.getAnfme())) {
                        throw new CoolException("订单数据回滚失败");
                    }
                    //修改订单主表状态,没有作业数量时才可以修改
                    boolean flag = true;
                    List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no", wrkDetl.getOrderNo()));
                    List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no", orderNo));
                    for (OrderDetl orderDetl : orderDetls) {
                        if (orderDetl.getWorkQty() > 0) {
                            flag = false;
                        }
                    }
                    if (flag) {
                        Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", wrkDetl.getOrderNo()));
                        Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", orderNo));
                        if (!Cools.isEmpty(order) && order.getSettle() == 2) {
                            order.setSettle(1L);
                            order.setUpdateBy(userId);
                            order.setUpdateTime(now);
                        }
                        if (!orderService.update(order, new EntityWrapper<Order>().eq("order_no", wrkDetl.getOrderNo()))) {
                        if (!orderService.update(order, new EntityWrapper<Order>().eq("order_no", orderNo))) {
                            throw new CoolException("修改订单状态失败");
                        }
                    }
                    //对子表进行删减
                    if (Cools.isEmpty(wrkDetl.getBatch())) {
                        orderDetl1Service.delete(new EntityWrapper<OrderDetl1>().eq("order_no", wrkDetl.getOrderNo()).eq("matnr", wrkDetl.getMatnr()));
                    } else {
                        orderDetl1Service.delete(new EntityWrapper<OrderDetl1>().eq("order_no", wrkDetl.getOrderNo()).eq("matnr", wrkDetl.getMatnr()).eq("batch", wrkDetl.getBatch()));
                    }
                    int orderNo1 = orderDetl1Service.selectCount(new EntityWrapper<OrderDetl1>().eq("order_no", wrkDetl.getOrderNo()));
                    if (orderNo1 == 0) {
                        order1Service.delete(new EntityWrapper<Order1>().eq("order_no", wrkDetl.getOrderNo()));
                    }
                }
            }