cp
2024-11-19 676cbdde86ae8ea598be6e9f6776ae5bf67478f6
zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/service/impl/ApiServiceImpl.java
@@ -90,45 +90,31 @@
            throw new CoolException("生成单据主档失败,请联系管理员");
        }
        List<GenerateOrderMatParam> mats = param.getMats();
        orderDetlService.remove(new LambdaQueryWrapper<OrderDetl>().eq(OrderDetl::getOrderNo, order.getOrderNo()));
        for (GenerateOrderMatParam matParam : mats) {
            Mat mat = matService.getOne(new LambdaQueryWrapper<Mat>().eq(Mat::getMatnr, matParam.getMatnr()).eq(Mat::getHostId, param.getHostId()));
            if (Cools.isEmpty(mat)) {
                orderService.remove(new LambdaQueryWrapper<Order>().eq(Order::getOrderNo, order.getOrderNo()));
                throw new CoolException(matParam.getMatnr() + "编号商品检索失败,请先添加商品");
            }
            OrderDetl orderDetl1 = orderDetlService.getOne(new LambdaQueryWrapper<OrderDetl>()
                    .eq(OrderDetl::getOrderNo, order.getOrderNo()).eq(OrderDetl::getBatch,matParam.getBatch())
                    .eq(OrderDetl::getThreeCode, matParam.getWarehouse()).eq(OrderDetl::getSupp,matParam.getOrigin())
                    .eq(OrderDetl::getSuppCode, matParam.getOriginNo()).eq(OrderDetl::getUnit,matParam.getUnit())
            );
            if (Cools.isEmpty(orderDetl1)){
                OrderDetl orderDetl = new OrderDetl();
                orderDetl.sync(mat);
                orderDetl.setBatch(matParam.getBatch());
                orderDetl.setAnfme(matParam.getAnfme());
                orderDetl.setUnit(matParam.getUnit());
                orderDetl.setThreeCode(matParam.getWarehouse());//仓库号
                orderDetl.setSupp(matParam.getOrigin());//来源单号
                orderDetl.setSuppCode(matParam.getOriginNo());//来源序号
                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.save(orderDetl)) {
                    throw new CoolException("生成单据明细失败,请联系管理员");
                }
            } else {
                orderDetl1.setAnfme(matParam.getAnfme());
                orderDetl1.setUpdateBy(9527L);
                orderDetl1.setUpdateTime(now);
                orderDetl1.setStatus(1);
                orderDetl1.setQty(0.0D);
                if (!orderDetlService.updateById(orderDetl1)) {
                    throw new CoolException("更新单据明细失败,请联系管理员");
                }
            OrderDetl orderDetl = new OrderDetl();
            orderDetl.sync(mat);
            orderDetl.setBatch(matParam.getBatch());
            orderDetl.setAnfme(matParam.getAnfme());
            orderDetl.setUnit(matParam.getUnit());
            orderDetl.setThreeCode(matParam.getWarehouse());//仓库号
            orderDetl.setSupp(matParam.getOrigin());//来源单号
            orderDetl.setSuppCode(matParam.getOriginNo());//来源序号
            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.save(orderDetl)) {
                throw new CoolException("生成单据明细失败,请联系管理员");
            }
        }
@@ -138,70 +124,87 @@
    public void generateOrderPakOut(GenerateOrderPakOutParam param) {
        Order order = orderService.selectByNo(param.getOrderNo(), param.getHostId());
        // 如果单据不存在则添加;如果单据存在,作业中无法修改,反之则修改单据
        boolean boo = false;
        if (!Cools.isEmpty(order)) {
            List<OrderDetl> orderDetls = orderDetlService.list(new LambdaQueryWrapper<OrderDetl>()
                    .eq(OrderDetl::getOrderId, order.getId()).eq(OrderDetl::getHostId, param.getHostId()));
            if (orderDetls.size() == param.getMats().size()) {
                for (OrderDetl o : orderDetls
                ) {
                    for (GenerateOrderMatParam matParam : param.getMats()
                    ) {
                        if (o.getMatnr().equals(matParam.getMatnr()) && !o.getAnfme().equals(matParam.getAnfme())) {
                            boo = true;
                            break;
                        }
                    }
                    if (boo) {
                        break;
                    }
                }
            } else {
                boo = true;
            }
        }
        if (boo) {
            if (order.getSettle() > 1L) {
                throw new CoolException(param.getOrderNo() + "正在出库,无法修改单据");
            }
            orderService.removeById(order.getId());
        }
        DocType docType = docTypeService.getOne(new LambdaQueryWrapper<DocType>().eq(DocType::getDocId, param.getOrderType()));
        if (docType == null) {
            throw new CoolException("订单类型不存在");
        }
        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,    // 备注
                param.getHostId() //仓库ID
        );
        if (!orderService.save(order)) {
            throw new CoolException("生成单据主档失败,请联系管理员");
        }
        List<GenerateOrderMatParam> mats = param.getMats();
        for (GenerateOrderMatParam matParam : mats) {
            Mat mat = matService.getOne(new LambdaQueryWrapper<Mat>().eq(Mat::getMatnr, matParam.getMatnr()).eq(Mat::getHostId, param.getHostId()));
            if (Cools.isEmpty(mat)) {
                throw new CoolException(matParam.getMatnr() + "编号商品检索失败,请先添加商品");
            DocType docType = docTypeService.getOne(new LambdaQueryWrapper<DocType>().eq(DocType::getDocId, param.getOrderType()));
            if (docType == null) {
                throw new CoolException("订单类型不存在");
            }
            OrderDetl orderDetl1 = orderDetlService.getOne(new LambdaQueryWrapper<OrderDetl>()
                    .eq(OrderDetl::getOrderNo, order.getOrderNo()).eq(OrderDetl::getBatch,matParam.getBatch())
                    .eq(OrderDetl::getThreeCode, matParam.getWarehouse()).eq(OrderDetl::getSupp,matParam.getOrigin())
                    .eq(OrderDetl::getSuppCode, matParam.getOriginNo()).eq(OrderDetl::getUnit,matParam.getUnit())
            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,    // 备注
                    param.getHostId() //仓库ID
            );
            if (Cools.isEmpty(orderDetl1)){
            if (!orderService.save(order)) {
                throw new CoolException("生成单据主档失败,请联系管理员");
            }
            List<GenerateOrderMatParam> mats = param.getMats();
            orderDetlService.remove(new LambdaQueryWrapper<OrderDetl>().eq(OrderDetl::getOrderNo, order.getOrderNo()));
            for (GenerateOrderMatParam matParam : mats) {
                Mat mat = matService.getOne(new LambdaQueryWrapper<Mat>().eq(Mat::getMatnr, matParam.getMatnr()).eq(Mat::getHostId, param.getHostId()));
                if (Cools.isEmpty(mat)) {
                    throw new CoolException(matParam.getMatnr() + "编号商品检索失败,请先添加商品");
                }
                OrderDetl orderDetl = new OrderDetl();
                orderDetl.sync(mat);
                orderDetl.setBatch(matParam.getBatch());
@@ -221,17 +224,7 @@
                if (!orderDetlService.save(orderDetl)) {
                    throw new CoolException("生成单据明细失败,请联系管理员");
                }
            } else {
                orderDetl1.setAnfme(matParam.getAnfme());
                orderDetl1.setUpdateBy(9527L);
                orderDetl1.setUpdateTime(now);
                orderDetl1.setStatus(1);
                orderDetl1.setQty(0.0D);
                if (!orderDetlService.save(orderDetl1)) {
                    throw new CoolException("更新单据明细失败,请联系管理员");
                }
            }
        }
    }
@@ -323,7 +316,7 @@
            }
            if (!Cools.isEmpty(matParam.getStatus())) {
                mat.setStatus(matParam.getStatus());
            }else {
            } else {
                mat.setStatus(1);
            }