南骏 池
6 天以前 4910c0fa81d93635e19a57c073c3a62c76053320
service/Warehouse/TransferOutManager.cs
@@ -4,6 +4,7 @@
using NewPdaSqlServer.DB;
using NewPdaSqlServer.Dto.service;
using NewPdaSqlServer.entity;
using NewPdaSqlServer.entity.Base;
using SqlSugar;
namespace NewPdaSqlServer.service.Warehouse;
@@ -52,7 +53,7 @@
    /// </summary>
    /// <param name="query">查询参数,包含单据号</param>
    /// <returns>待处理的调拨出库明细列表</returns>
    public List<TransferOutDetailModel> GetTransferOutDetailListByBillNo(
    public List<ItemDetailModel> GetTransferOutDetailListByBillNo(
        WarehouseQuery query)
    {
        var p_bill_no = query.billNo;
@@ -69,7 +70,7 @@
                && a.FBillNo == p_bill_no // 匹配单据号
                && a.FApproveStatus == 1) // 单据已审核
            .OrderBy((b, a, s) => s.ItemNo)
            .Select((b, a, s) => new TransferOutDetailModel
            .Select((b, a, s) => new ItemDetailModel
            {
                ItemNo = s.ItemNo,
                ItemName = s.ItemName,
@@ -89,7 +90,7 @@
        return result;
    }
    public List<TransferOutDetailModel> GetDBCKDetal(
    public List<ItemDetailModel> GetDBCKDetal(
        WarehouseQuery query)
    {
        var p_bill_no = query.billNo;
@@ -102,17 +103,18 @@
                    JoinType.Left, b.Pid == a.Id,
                    JoinType.Left, b.FMaterialId == s.Id.ToString()))
            .Where((b, a, s) =>
                (b.FQty ?? 0) - (b.SQty ?? 0) > 0 // 未完成数量大于0
                !((b.FQty ?? 0) == (b.SQty ?? 0) && (b.FQty ?? 0) == (b.RQty ?? 0)) // 未完成数量大于0
                && a.FBillNo == p_bill_no // 匹配单据号
                && a.FApproveStatus == 1) // 单据已审核
            .OrderBy((b, a, s) => s.ItemNo)
            .Select((b, a, s) => new TransferOutDetailModel
            .Select((b, a, s) => new ItemDetailModel
            {
                ItemNo = s.ItemNo,
                ItemName = s.ItemName,
                ItemModel = s.ItemModel,
                FQty = b.FQty, // 申请数量
                SQty = b.SQty, // 已扫数量
                RQty = b.RQty,
                // 保留其他必要字段...
                Pid = b.Pid.ToString(),
                FMaterialId = b.FMaterialId,
@@ -128,7 +130,7 @@
    /// </summary>
    /// <param name="query">包含单据号、用户名和条码信息的查询参数</param>
    /// <returns>处理后的表单和待处理明细列表</returns>
    public (WarehouseQuery form, List<TransferOutDetailModel> items)
    public (WarehouseQuery form, List<ItemDetailModel> items)
        ScanMoveBarcode(WarehouseQuery query)
    {
        var p_bill_no = query.billNo;
@@ -217,32 +219,37 @@
    /// </summary>
    /// <param name="query">包含单据号、用户名和条码信息的查询参数</param>
    /// <returns>处理后的表单和待处理明细列表</returns>
    public (WarehouseQuery form, List<TransferOutDetailModel> items)
    public (WarehouseQuery form, List<ItemDetailModel> items)
        ScanReceiveBarcode(WarehouseQuery query)
    {
        var p_bill_no = query.billNo;
        var p_item_barcode = query.barcode;
        var barinfo = Db.Queryable<MesInvItemStocks>()
            .Where(x => x.ItemBarcode == p_item_barcode)
            .First();
        // 验证单据号
        if (string.IsNullOrEmpty(p_bill_no)) throw new Exception("请选取单据号!");
        // 查询出库单并验证状态
        var transferOut = Db.Queryable<TransferOut>()
            .Where(x => x.BillNo == p_bill_no && x.Status == 1)
        var transferOut = Db.Queryable<MesDbck>()
            .Where(x => x.FBillNo == p_bill_no && x.FApproveStatus == 1)
            .First();
        if (transferOut == null) throw new Exception("未找到调拨申请单或者调拨申请单没审核");
        // 查询条码库存信息并验证
        var stock = Db.Queryable<MesInvItemStocks>()
            .Where(x => x.ItemBarcode == p_item_barcode
                        && x.Quantity > 0
                        && !string.IsNullOrEmpty(x.DepotsCode))
        var stock = Db.Queryable<MesDbckDetail>()
            .Where(x => x.FMaterialId == barinfo.ItemId.ToString()
                        && x.FQty > 0
                        && !string.IsNullOrEmpty(x.FStockInId)
                        && !string.IsNullOrEmpty(x.FOwnerInId))
            .First();
        if (stock == null) throw new Exception($"库存中无此条码,请核对!{p_item_barcode}");
        if (stock == null) throw new Exception($"调拨明细中 【物料】或 【调入仓库】或【调入货主】信息不存在,请核对!{p_item_barcode}");
        // 查询物料信息
        var item = Db.Queryable<MesItems>()
            .Where(x => x.Id == stock.ItemId)
            .Where(x => x.Id.ToString() == stock.FMaterialId)
            .First();
        if (item == null) throw new Exception("未找到物料");