自动化立体仓库 - WMS系统
Junjie
2025-07-17 98d33bd648770ce2f81a25d5fb16ead6610e3774
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -27,6 +27,7 @@
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
@@ -715,6 +716,53 @@
    }
    @Override
    public void combCancel(CombCancelParam param, Long userId) {
        if (Cools.isEmpty(param.getBarcode())) {
            throw new CoolException(BaseRes.PARAM);
        }
        List<WaitPakin> waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().
                eq("zpallet", param.getBarcode()));
        if (waitPakins.isEmpty()) {
            throw new CoolException("托盘未组托");
        }
        for (WaitPakin waitPakin : waitPakins) {
            if (!Cools.isEmpty(waitPakin.getOrderNo())) {
                Order order = OrderInAndOutUtil.selectByNo(Boolean.TRUE, waitPakin.getOrderNo());
                if (Cools.isEmpty(order)) {
                    throw new CoolException("单据编号不存在");
                }
                if (order.getSettle() > 2) {
                    throw new CoolException("单据编号已作业完成");
                }
                // 订单明细数量校验
                OrderDetl orderDetl = OrderInAndOutUtil.selectItem(Boolean.TRUE, order.getId(), waitPakin.getMatnr(), waitPakin.getBatch(), waitPakin.getBrand(), waitPakin.getStandby1(), waitPakin.getStandby2(), waitPakin.getStandby3(),
                        waitPakin.getBoxType1(), waitPakin.getBoxType2(), waitPakin.getBoxType3());
                if (orderDetl == null) {
                    continue;
                }
                Double workQty = orderDetl.getWorkQty();
                BigDecimal workQtyDecimal = new BigDecimal(workQty);
                workQtyDecimal = workQtyDecimal.subtract(BigDecimal.valueOf(waitPakin.getAnfme()));
                double newWorkQty = workQtyDecimal.doubleValue();
                if (newWorkQty <= 0) {
                    newWorkQty = 0D;
                }
                orderDetl.setWorkQty(newWorkQty);
                orderDetlService.updateById(orderDetl);
            }
        }
        waitPakinService.delete(new EntityWrapper<WaitPakin>()
                .eq("zpallet", param.getBarcode()));
    }
    // 商品上架
    @Override
    public void onSale(CombParam param) {