自动化立体仓库 - WMS系统
1
zhang
13 小时以前 0a1dceaa6478ec0081c38721be88fa6d807c6094
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -1227,7 +1227,7 @@
    @Override
    @Transactional
    public R gwmsGenerateInventory(GwmsGenerateInventoryDto param) {
    public synchronized R gwmsGenerateInventory(GwmsGenerateInventoryDto param) {
        if (Cools.isEmpty(param)) {
            throw new CoolException("请求参数有误:" + param);
@@ -1246,6 +1246,10 @@
                HashMap<String, Object> xx = new HashMap<>();
                List<GwmsGenerateInventoryDto.MatList> matList = param.getMatList();
                for (GwmsGenerateInventoryDto.MatList obj : matList) {
                    int barcodeCount2 = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("brand", obj.getPackageGroupNo()));
                    if (barcodeCount2 > 0) {
                        throw new CoolException("包装组号已存在工作档(输送线):" + obj.getPackageGroupNo());
                    }
                    int zpalletCount2 = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("brand", obj.getPackageGroupNo()));
                    if (zpalletCount2 > 0) {
                        throw new CoolException("包装组号已存在:" + obj.getPackageGroupNo());
@@ -2344,53 +2348,115 @@
    @Override
    @Transactional
    public R returnOrder(GroupOrderConfirmParam param) {
    public R returnOrder(ReturnOrderConfirmParam param) {
        if (Cools.isEmpty(param.getOrderNumber())) {
            param.setOrderNumber("THCK" + DateUtils.convert(new Date(), DateUtils.yyyyMMdd));
        }
        // 1. 查询单据是否存在
        Order order = orderMapper.selectOrderByOrderNo(param.getGroupOrderNumber());
        Order order = orderMapper.selectOrderByOrderNo(param.getOrderNumber());
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        if (order == null) {
            // 1.1 不存在,新建单据
            order = new Order();
            order.setOrderNo(param.getGroupOrderNumber());
            order.setStatus(Integer.valueOf(param.getGroupStatus()));
            order.setOrderNo(param.getOrderNumber());
            order.setStatus(1);
            order.setOrderTime(sdf.format(new Date()));
            order.setCreateTime(new Date());
            order.setSettle(1L);
            order.setDocType(26L);
            order.setMemo(param.getMemo());
            orderMapper.insert(order);
        } else {
            // 1.2 存在,更新单据状态
            order.setStatus(Integer.valueOf(param.getGroupStatus()));
            if (order.getStatus() == 4) {
                order.setStatus(2);
            }
            orderMapper.updateById(order);
        }
        orderDetlMapper.delete(
                new EntityWrapper<OrderDetl>().eq("order_no", param.getGroupOrderNumber())
        );
        // 2. 一一对应遍历
        List<GroupOrderConfirmParam.PackageGroupNo> pkgList = param.getPackageGroupNos();
        List<GroupOrderConfirmParam.VolumeNumber> volList = param.getVolumeNumbers();
        List<ReturnOrderConfirmParam.VolumeNumber> volList = param.getVolumeNumbers();
        int size = Math.min(pkgList.size(), volList.size()); // 防止越界
        for (int i = 0; i < size; i++) {
            GroupOrderConfirmParam.PackageGroupNo pg = pkgList.get(i);
            GroupOrderConfirmParam.VolumeNumber vn = volList.get(i);
        for (int i = 0; i < volList.size(); i++) {
            ReturnOrderConfirmParam.VolumeNumber vn = volList.get(i);
            // 查询是否已存在该 detl
            OrderDetl detl = orderDetlMapper.selectByOrderNoAndPkgGroupNoAndVolumeNo(
                    param.getGroupOrderNumber(), pg.getPackageGroupNo(), vn.getVolumeNumber()
                    param.getOrderNumber(), param.getPackageGroupNo(), vn.getVolumeNumber()
            );
            if (detl == null) {
                detl = new OrderDetl();
                detl.setOrderId(order.getId());
                detl.setOrderNo(param.getGroupOrderNumber());
                detl.setOrderNo(param.getOrderNumber());
                detl.setCreateTime(new Date());
                detl.setAnfme(1.0);
                detl.setBrand(pg.getPackageGroupNo());   // 包装组号
                detl.setBrand(param.getPackageGroupNo());   // 包装组号
                detl.setModel(vn.getVolumeNumber());     // 卷号
                detl.setMemo(param.getMemo());
                orderDetlMapper.insert(detl);
            } else {
                throw new RuntimeException("该单据的卷号已存在," + vn.getVolumeNumber());
            }
        }
        return R.ok("组货确认成功");
    }
    @Override
    @Transactional
    public R unQualifiedOrder(UnQualifiedOrderConfirmParam param) {
        if (Cools.isEmpty(param.getOrderNumber())) {
            param.setOrderNumber("UQCK" + DateUtils.convert(new Date(), DateUtils.yyyyMMdd));
        }
        // 1. 查询单据是否存在
        Order order = orderMapper.selectOrderByOrderNo(param.getOrderNumber());
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        if (order == null) {
            // 1.1 不存在,新建单据
            order = new Order();
            order.setOrderNo(param.getOrderNumber());
            order.setStatus(1);
            order.setOrderTime(sdf.format(new Date()));
            order.setCreateTime(new Date());
            order.setSettle(1L);
            order.setDocType(27L);
            order.setMemo(param.getMemo());
            orderMapper.insert(order);
        } else {
            // 1.2 存在,更新单据状态
            if (order.getStatus() == 4) {
                order.setStatus(2);
            }
            orderMapper.updateById(order);
        }
        // 2. 一一对应遍历
        List<UnQualifiedOrderConfirmParam.VolumeNumber> volList = param.getVolumeNumbers();
        for (int i = 0; i < volList.size(); i++) {
            UnQualifiedOrderConfirmParam.VolumeNumber vn = volList.get(i);
            // 查询是否已存在该 detl
            OrderDetl detl = orderDetlMapper.selectByOrderNoAndVolumeNo(
                    param.getOrderNumber(), vn.getVolumeNumber()
            );
            if (detl == null) {
                detl = new OrderDetl();
                detl.setOrderId(order.getId());
                detl.setOrderNo(param.getOrderNumber());
                detl.setCreateTime(new Date());
                detl.setAnfme(1.0);
                detl.setModel(vn.getVolumeNumber());     // 卷号
                detl.setMemo(param.getMemo());
                orderDetlMapper.insert(detl);
            } else {
                throw new RuntimeException("该单据的卷号已存在," + vn.getVolumeNumber());
            }
        }