自动化立体仓库 - WMS系统
ZY
2024-09-21 af212f68a20cfd2549a37093a7850b5a99f1a2ea
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -52,266 +52,268 @@
    @Override
    @Transactional
    public void pakinOrderCreate(OpenOrderPakinParam param) {
        Order order = orderService.selectByNo(param.getOrderNo());
        if (!Cools.isEmpty(order)) {
            throw new CoolException(param.getOrderNo() + "单据已存在,请勿重复提交");
        }
        DocType docType = docTypeService.selectOrAdd(param.getOrderType(), Boolean.TRUE);
        Date now = new Date();
        // 单据主档
        order = new Order(
                String.valueOf(snowflakeIdWorker.nextId()),    // 编号[非空]
                param.getOrderNo(),    // 订单编号
                DateUtils.convert(now),    // 单据日期
                docType.getDocId(),    // 单据类型
                null,    // 项目编号
                null,    //
                null,    // 调拨项目编号
                null,    // 初始票据号
                null,    // 票据号
                null,    // 客户编号
                null,    // 客户
                null,    // 联系方式
                null,    // 操作人员
                null,    // 合计金额
                null,    // 优惠率
                null,    // 优惠金额
                null,    // 销售或采购费用合计
                null,    // 实付金额
                null,    // 付款类型
                null,    // 业务员
                null,    // 结算天数
                null,    // 邮费支付类型
                null,    // 邮费
                null,    // 付款时间
                null,    // 发货时间
                null,    // 物流名称
                null,    // 物流单号
                1L,    // 订单状态
                1,    // 状态
                9527L,    // 添加人员
                now,    // 添加时间
                9527L,    // 修改人员
                now,    // 修改时间
                null    // 备注
        );
        if (!orderService.insert(order)) {
            throw new CoolException("生成单据主档失败,请联系管理员");
        }
        // 单据明细档
        List<DetlDto> list = new ArrayList<>();
        List<DetlDto> orderDetails = param.getOrderDetails();
        for (DetlDto detail : orderDetails) {
            DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getAnfme());
            if (DetlDto.has(list, dto)) {
                DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch());
                assert detlDto != null;
                detlDto.setAnfme(detlDto.getAnfme() + detail.getAnfme());
            } else {
                list.add(dto);
            }
        }
        for (DetlDto detlDto : list) {
            Mat mat = matService.selectByMatnr(detlDto.getMatnr());
            if (Cools.isEmpty(mat)) {
                throw new CoolException(detlDto.getMatnr() + "编号商品检索失败,请先添加商品");
            }
            OrderDetl orderDetl = new OrderDetl();
            orderDetl.sync(mat);
            orderDetl.setBatch(detlDto.getBatch());
            orderDetl.setAnfme(detlDto.getAnfme());
            orderDetl.setOrderId(order.getId());
            orderDetl.setOrderNo(order.getOrderNo());
            orderDetl.setCreateBy(9527L);
            orderDetl.setCreateTime(now);
            orderDetl.setUpdateBy(9527L);
            orderDetl.setUpdateTime(now);
            orderDetl.setStatus(1);
            orderDetl.setQty(0.0D);
            if (!orderDetlService.insert(orderDetl)) {
                throw new CoolException("生成单据明细失败,请联系管理员");
            }
        }
//        Order order = orderService.selectByNo(param.getOrderNo());
//        if (!Cools.isEmpty(order)) {
//            throw new CoolException(param.getOrderNo() + "单据已存在,请勿重复提交");
//        }
//        DocType docType = docTypeService.selectOrAdd(param.getOrderType(), Boolean.TRUE);
//        Date now = new Date();
//        // 单据主档
//        order = new Order(
//                String.valueOf(snowflakeIdWorker.nextId()),    // 编号[非空]
//                param.getOrderNo(),    // 订单编号
//                DateUtils.convert(now),    // 单据日期
//                docType.getDocId(),    // 单据类型
//                null,    // 项目编号
//                null,    //
//                null,    // 调拨项目编号
//                null,    // 初始票据号
//                null,    // 票据号
//                null,    // 客户编号
//                null,    // 客户
//                null,    // 联系方式
//                null,    // 操作人员
//                null,    // 合计金额
//                null,    // 优惠率
//                null,    // 优惠金额
//                null,    // 销售或采购费用合计
//                null,    // 实付金额
//                null,    // 付款类型
//                null,    // 业务员
//                null,    // 结算天数
//                null,    // 邮费支付类型
//                null,    // 邮费
//                null,    // 付款时间
//                null,    // 发货时间
//                null,    // 物流名称
//                null,    // 物流单号
//                1L,    // 订单状态
//                1,    // 状态
//                9527L,    // 添加人员
//                now,    // 添加时间
//                9527L,    // 修改人员
//                now,    // 修改时间
//                null    // 备注
//        );
//        if (!orderService.insert(order)) {
//            throw new CoolException("生成单据主档失败,请联系管理员");
//        }
//        // 单据明细档
//        List<DetlDto> list = new ArrayList<>();
//        List<DetlDto> orderDetails = param.getOrderDetails();
//        for (DetlDto detail : orderDetails) {
//            DetlDto dto = new DetlDto(detail);
//            if (DetlDto.has(list, dto)) {
//                DetlDto detlDto = DetlDto.find(list, dto);
//                assert detlDto != null;
//                detlDto.setAnfme(detlDto.getAnfme() + detail.getAnfme());
//            } else {
//                list.add(dto);
//            }
//        }
//        for (DetlDto detlDto : list) {
//            Mat mat = matService.selectByMatnr(detlDto.getMatnr());
//            if (Cools.isEmpty(mat)) {
//                throw new CoolException(detlDto.getMatnr() + "编号商品检索失败,请先添加商品");
//            }
//            OrderDetl orderDetl = new OrderDetl();
//            orderDetl.sync(mat);
//            orderDetl.setBatch(detlDto.getBatch());
//            orderDetl.setAnfme(detlDto.getAnfme());
//            orderDetl.setOrderId(order.getId());
//            orderDetl.setOrderNo(order.getOrderNo());
//            orderDetl.setCreateBy(9527L);
//            orderDetl.setCreateTime(now);
//            orderDetl.setUpdateBy(9527L);
//            orderDetl.setUpdateTime(now);
//            orderDetl.setStatus(1);
//            orderDetl.setQty(0.0D);
//            if (!orderDetlService.insert(orderDetl)) {
//                throw new CoolException("生成单据明细失败,请联系管理员");
//            }
//        }
    }
    @Override
    @Transactional
    public List<OpenOrderCompeteResult> pakinOrderComplete(OpenOrderCompleteParam param) {
        List<OpenOrderCompeteResult> results = new ArrayList<>();
        if (!Cools.isEmpty(param) && !Cools.isEmpty(param.getOrderNo())) {
            // 指定订单
            Order order = orderService.selectByNo(param.getOrderNo());
            if (null != order) {
                OpenOrderCompeteResult result = new OpenOrderCompeteResult();
                results.add(result);
                result.setOrderNo(order.getOrderNo());
                result.setOrderTime(order.getOrderTime());
                result.setOrderType(order.getDocType$());
                List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
                for (OrderDetl orderDetl : orderDetls) {
                    result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getQty()));
                }
                if (order.getSettle() == 4L) {
                    // 修改订单状态 4.完成 ===>> 6.已上报
                    if (!orderService.updateSettle(order.getId(), 6L, null)) {
                        throw new CoolException("服务器内部错误,请联系管理员");
                    }
                }
            }
        } else {
            // 所有订单
            List<Order> orders = orderService.selectList(new EntityWrapper<Order>().eq("settle", 4L));
            for (Order order : orders) {
                OpenOrderCompeteResult result = new OpenOrderCompeteResult();
                results.add(result);
                result.setOrderNo(order.getOrderNo());
                result.setOrderTime(order.getOrderTime());
                result.setOrderType(order.getDocType$());
                List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
                for (OrderDetl orderDetl : orderDetls) {
                    result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getQty()));
                }
                // 修改订单状态 4.完成 ===>> 6.已上报
                if (!orderService.updateSettle(order.getId(), 6L, null)) {
                    throw new CoolException("服务器内部错误,请联系管理员");
                }
            }
        }
        return results;
//        List<OpenOrderCompeteResult> results = new ArrayList<>();
//        if (!Cools.isEmpty(param) && !Cools.isEmpty(param.getOrderNo())) {
//            // 指定订单
//            Order order = orderService.selectByNo(param.getOrderNo());
//            if (null != order) {
//                OpenOrderCompeteResult result = new OpenOrderCompeteResult();
//                results.add(result);
//                result.setOrderNo(order.getOrderNo());
//                result.setOrderTime(order.getOrderTime());
//                result.setOrderType(order.getDocType$());
//                List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
//                for (OrderDetl orderDetl : orderDetls) {
//                    result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getQty()));
//                }
//                if (order.getSettle() == 4L) {
//                    // 修改订单状态 4.完成 ===>> 6.已上报
//                    if (!orderService.updateSettle(order.getId(), 6L, null)) {
//                        throw new CoolException("服务器内部错误,请联系管理员");
//                    }
//                }
//            }
//        } else {
//            // 所有订单
//            List<Order> orders = orderService.selectList(new EntityWrapper<Order>().eq("settle", 4L));
//            for (Order order : orders) {
//                OpenOrderCompeteResult result = new OpenOrderCompeteResult();
//                results.add(result);
//                result.setOrderNo(order.getOrderNo());
//                result.setOrderTime(order.getOrderTime());
//                result.setOrderType(order.getDocType$());
//                List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
//                for (OrderDetl orderDetl : orderDetls) {
//                    result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getQty()));
//                }
//                // 修改订单状态 4.完成 ===>> 6.已上报
//                if (!orderService.updateSettle(order.getId(), 6L, null)) {
//                    throw new CoolException("服务器内部错误,请联系管理员");
//                }
//            }
//        }
//        return results;
        return null;
    }
    @Override
    @Transactional
    public void pakoutOrderCreate(OpenOrderPakoutParam param) {
        Order order = orderService.selectByNo(param.getOrderNo());
        // 如果单据不存在则添加;如果单据存在,作业中无法修改,反之则修改单据
        if (!Cools.isEmpty(order)) {
            if (order.getSettle() > 1L) {
                throw new CoolException(param.getOrderNo() + "正在出库,无法修改单据");
            }
            orderService.remove(order.getId());
        }
        DocType docType = docTypeService.selectOrAdd(param.getOrderType(), Boolean.FALSE);
        Date now = new Date();
        // 单据主档
        order = new Order(
                String.valueOf(snowflakeIdWorker.nextId()),    // 编号[非空]
                param.getOrderNo(),    // 订单编号
                DateUtils.convert(now),    // 单据日期
                docType.getDocId(),    // 单据类型
                null,    // 项目编号
                null,    //
                null,    // 调拨项目编号
                null,    // 初始票据号
                null,    // 票据号
                null,    // 客户编号
                null,    // 客户
                null,    // 联系方式
                null,    // 操作人员
                null,    // 合计金额
                null,    // 优惠率
                null,    // 优惠金额
                null,    // 销售或采购费用合计
                null,    // 实付金额
                null,    // 付款类型
                null,    // 业务员
                null,    // 结算天数
                null,    // 邮费支付类型
                null,    // 邮费
                null,    // 付款时间
                null,    // 发货时间
                null,    // 物流名称
                null,    // 物流单号
                1L,    // 订单状态
                1,    // 状态
                9527L,    // 添加人员
                now,    // 添加时间
                9527L,    // 修改人员
                now,    // 修改时间
                null    // 备注
        );
        if (!orderService.insert(order)) {
            throw new CoolException("生成单据主档失败,请联系管理员");
        }
        // 单据明细档
        List<DetlDto> list = new ArrayList<>();
        List<DetlDto> orderDetails = param.getOrderDetails();
        for (DetlDto detail : orderDetails) {
            DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getAnfme());
            if (DetlDto.has(list, dto)) {
                DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch());
                assert detlDto != null;
                detlDto.setAnfme(detlDto.getAnfme() + detail.getAnfme());
            } else {
                list.add(dto);
            }
        }
        for (DetlDto detlDto : list) {
            Mat mat = matService.selectByMatnr(detlDto.getMatnr());
            if (Cools.isEmpty(mat)) {
                throw new CoolException(detlDto.getMatnr() + "编号商品检索失败,请先添加商品");
            }
            OrderDetl orderDetl = new OrderDetl();
            orderDetl.sync(mat);
            orderDetl.setBatch(detlDto.getBatch());
            orderDetl.setAnfme(detlDto.getAnfme());
            orderDetl.setOrderId(order.getId());
            orderDetl.setOrderNo(order.getOrderNo());
            orderDetl.setCreateBy(9527L);
            orderDetl.setCreateTime(now);
            orderDetl.setUpdateBy(9527L);
            orderDetl.setUpdateTime(now);
            orderDetl.setStatus(1);
            orderDetl.setQty(0.0D);
            if (!orderDetlService.insert(orderDetl)) {
                throw new CoolException("生成单据明细失败,请联系管理员");
            }
        }
//        Order order = orderService.selectByNo(param.getOrderNo());
//        // 如果单据不存在则添加;如果单据存在,作业中无法修改,反之则修改单据
//        if (!Cools.isEmpty(order)) {
//            if (order.getSettle() > 1L) {
//                throw new CoolException(param.getOrderNo() + "正在出库,无法修改单据");
//            }
//            orderService.remove(order.getId());
//        }
//        DocType docType = docTypeService.selectOrAdd(param.getOrderType(), Boolean.FALSE);
//        Date now = new Date();
//        // 单据主档
//        order = new Order(
//                String.valueOf(snowflakeIdWorker.nextId()),    // 编号[非空]
//                param.getOrderNo(),    // 订单编号
//                DateUtils.convert(now),    // 单据日期
//                docType.getDocId(),    // 单据类型
//                null,    // 项目编号
//                null,    //
//                null,    // 调拨项目编号
//                null,    // 初始票据号
//                null,    // 票据号
//                null,    // 客户编号
//                null,    // 客户
//                null,    // 联系方式
//                null,    // 操作人员
//                null,    // 合计金额
//                null,    // 优惠率
//                null,    // 优惠金额
//                null,    // 销售或采购费用合计
//                null,    // 实付金额
//                null,    // 付款类型
//                null,    // 业务员
//                null,    // 结算天数
//                null,    // 邮费支付类型
//                null,    // 邮费
//                null,    // 付款时间
//                null,    // 发货时间
//                null,    // 物流名称
//                null,    // 物流单号
//                1L,    // 订单状态
//                1,    // 状态
//                9527L,    // 添加人员
//                now,    // 添加时间
//                9527L,    // 修改人员
//                now,    // 修改时间
//                null    // 备注
//        );
//        if (!orderService.insert(order)) {
//            throw new CoolException("生成单据主档失败,请联系管理员");
//        }
//        // 单据明细档
//        List<DetlDto> list = new ArrayList<>();
//        List<DetlDto> orderDetails = param.getOrderDetails();
//        for (DetlDto detail : orderDetails) {
//            DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getAnfme());
//            if (DetlDto.has(list, dto)) {
//                DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch());
//                assert detlDto != null;
//                detlDto.setAnfme(detlDto.getAnfme() + detail.getAnfme());
//            } else {
//                list.add(dto);
//            }
//        }
//        for (DetlDto detlDto : list) {
//            Mat mat = matService.selectByMatnr(detlDto.getMatnr());
//            if (Cools.isEmpty(mat)) {
//                throw new CoolException(detlDto.getMatnr() + "编号商品检索失败,请先添加商品");
//            }
//            OrderDetl orderDetl = new OrderDetl();
//            orderDetl.sync(mat);
//            orderDetl.setBatch(detlDto.getBatch());
//            orderDetl.setAnfme(detlDto.getAnfme());
//            orderDetl.setOrderId(order.getId());
//            orderDetl.setOrderNo(order.getOrderNo());
//            orderDetl.setCreateBy(9527L);
//            orderDetl.setCreateTime(now);
//            orderDetl.setUpdateBy(9527L);
//            orderDetl.setUpdateTime(now);
//            orderDetl.setStatus(1);
//            orderDetl.setQty(0.0D);
//            if (!orderDetlService.insert(orderDetl)) {
//                throw new CoolException("生成单据明细失败,请联系管理员");
//            }
//        }
    }
    @Override
    public List<OpenOrderCompeteResult> pakoutOrderComplete(OpenOrderCompleteParam param) {
        List<OpenOrderCompeteResult> results = new ArrayList<>();
        if (!Cools.isEmpty(param) && !Cools.isEmpty(param.getOrderNo())) {
            // 指定订单
            Order order = orderService.selectByNo(param.getOrderNo());
            if (null != order) {
                OpenOrderCompeteResult result = new OpenOrderCompeteResult();
                results.add(result);
                result.setOrderNo(order.getOrderNo());
                result.setOrderTime(order.getOrderTime());
                result.setOrderType(order.getDocType$());
                List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
                for (OrderDetl orderDetl : orderDetls) {
                    result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getQty()));
                }
                if (order.getSettle() == 4L) {
                    // 修改订单状态 4.完成 ===>> 6.已上报
                    if (!orderService.updateSettle(order.getId(), 6L, null)) {
                        throw new CoolException("服务器内部错误,请联系管理员");
                    }
                }
            }
        } else {
            // 所有订单
            List<Order> orders = orderService.selectList(new EntityWrapper<Order>().eq("settle", 4L));
            for (Order order : orders) {
                OpenOrderCompeteResult result = new OpenOrderCompeteResult();
                results.add(result);
                result.setOrderNo(order.getOrderNo());
                result.setOrderTime(order.getOrderTime());
                result.setOrderType(order.getDocType$());
                List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
                for (OrderDetl orderDetl : orderDetls) {
                    result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getQty()));
                }
                // 修改订单状态 4.完成 ===>> 6.已上报
                if (!orderService.updateSettle(order.getId(), 6L, null)) {
                    throw new CoolException("服务器内部错误,请联系管理员");
                }
            }
        }
        return results;
//        List<OpenOrderCompeteResult> results = new ArrayList<>();
//        if (!Cools.isEmpty(param) && !Cools.isEmpty(param.getOrderNo())) {
//            // 指定订单
//            Order order = orderService.selectByNo(param.getOrderNo());
//            if (null != order) {
//                OpenOrderCompeteResult result = new OpenOrderCompeteResult();
//                results.add(result);
//                result.setOrderNo(order.getOrderNo());
//                result.setOrderTime(order.getOrderTime());
//                result.setOrderType(order.getDocType$());
//                List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
//                for (OrderDetl orderDetl : orderDetls) {
//                    result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getQty()));
//                }
//                if (order.getSettle() == 4L) {
//                    // 修改订单状态 4.完成 ===>> 6.已上报
//                    if (!orderService.updateSettle(order.getId(), 6L, null)) {
//                        throw new CoolException("服务器内部错误,请联系管理员");
//                    }
//                }
//            }
//        } else {
//            // 所有订单
//            List<Order> orders = orderService.selectList(new EntityWrapper<Order>().eq("settle", 4L));
//            for (Order order : orders) {
//                OpenOrderCompeteResult result = new OpenOrderCompeteResult();
//                results.add(result);
//                result.setOrderNo(order.getOrderNo());
//                result.setOrderTime(order.getOrderTime());
//                result.setOrderType(order.getDocType$());
//                List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
//                for (OrderDetl orderDetl : orderDetls) {
//                    result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getQty()));
//                }
//                // 修改订单状态 4.完成 ===>> 6.已上报
//                if (!orderService.updateSettle(order.getId(), 6L, null)) {
//                    throw new CoolException("服务器内部错误,请联系管理员");
//                }
//            }
//        }
//        return results;
        return null;
    }
    @Override