新框架PDA后端(祈禧6月初版本)
南骏 池
2025-11-25 770f02888443c1be46549f164abfd3be78a3dbd3
service/Warehouse/MesStrkManager.cs
@@ -20,13 +20,33 @@
    ///     获取受托入库申请列表
    /// </summary>
    /// <returns>受托入库申请列表</returns>
    public List<string> GetStrkBillNo(WarehouseQuery query)
    public List<string> GetStrkBillNo(WarehouseQuery query, dynamic RequestInfo)
    {
        var list = Db.Queryable<MesShouTuo>()
            .Where(s => s.IsCheck == true && s.IsFinish == false)
            .Select(s => s.BillNo).ToList();
        var orgId = RequestInfo.OrgId;
        if (orgId == null)
            throw new Exception("组织不存在!");
        // 获取未完成的退料单号列表
        var parameters = new[]
        {
        new SugarParameter("@pi_orgId", orgId),
        new SugarParameter("@inP1", null),
        new SugarParameter("@inP2", null),
        new SugarParameter("@inP3", null),
        new SugarParameter("@inP4", null)
        };
        try
        {
            // 返回单号字符串列表Get_Qt_ck_List
            var list = Db.Ado.SqlQuery<string>(
                "EXEC prc_pda_strk_list @pi_orgId,@inP1,@inP2,@inP3,@inP4", parameters);
        return list;
        }
        catch (Exception ex)
        {
            throw new Exception($"{ex.Message}");
        }
    }
    /// <summary>
@@ -34,35 +54,68 @@
    /// </summary>
    /// <param name="query">仓库查询参数</param>
    /// <returns>物料明细列表</returns>
    public List<ItemDetailModel> GetMesItemDetailByBillNo(
        WarehouseQuery query)
    public dynamic GetMesItemDetailByBillNo(WarehouseQuery query, dynamic RequestInfo)
    {
        // 关联查询物料表、物料明细表和物料基础信息表
        var mesItemTblDetails = Db
            .Queryable<MesShouTuo, MesShouTuoDetail, MesItems>(
                (a, b, c) => new JoinQueryInfos(
                    JoinType.Left,
                    a.Guid == b.PGuid,
                    JoinType.Left,
                    b.FMaterialId == c.Id.ToString())
            ).Where((a, b, c) => a.BillNo == query.billNo && a.IsCheck == true)
            .Select<ItemDetailModel>((a, b, c) => new ItemDetailModel
        if (string.IsNullOrEmpty(query.billNo))
            throw new Exception("请选单据号!");
        if (query == null)
            throw new ArgumentNullException(nameof(query), "参数对象不能为null");
        if (string.IsNullOrEmpty(query.billNo?.ToString()))
            throw new ArgumentException("单据号不能为空", nameof(query.billNo));
        var orgId = RequestInfo.OrgId;
        if (orgId == null)
            throw new Exception("组织不存在!");
        // 获取未完成的发货通知单明细
        var parameters = new[]
            {
                ItemNo = c.ItemNo,
                ItemName = c.ItemName,
                ItemModel = c.ItemModel,
                FQty = b.FQty, // 申请数量
                SQty = b.SQty, // 已扫数量
                Pid = b.PGuid.ToString(),
                FMaterialId = b.FMaterialId,
                Id = b.Guid.ToString()
            }).ToList();
        new SugarParameter("@billNo", query.billNo),
        new SugarParameter("@pi_orgId",orgId),
        new SugarParameter("@inP1", null),
        new SugarParameter("@inP2", null),
        new SugarParameter("@inP3", null),
        new SugarParameter("@inP4", null)
    };
        try
        {
            List<dynamic>? blDetails = Db.Ado.SqlQuery<dynamic>(
                "EXEC prc_pda_strk_detailList @billNo,@pi_orgId,@inP1,@inP2,@inP3,@inP4", parameters);
            var items = blDetails.Where(x => x.DSQty > 0).ToList();    // 待扫物料
            var ysitems = blDetails.Where(x => x.SQty > 0).ToList();   // 已扫物料
        // 筛选出待退数量大于已退数量的记录
        //var itemTblDetails = mesItemTblDetails
        //    .Where(s => (s.Tld005 ?? 0) - (s.Tld006 ?? 0) > 0).ToList();
        return mesItemTblDetails;
            //// 这里返回所有明细列表
            //var result = blDetails.Select(b => new ItemDetailModel
            //{
            //    ItemNo = b.ItemNo,
            //    ItemName = b.ItemName,
            //    ItemModel = b.ItemModel,
            //    FQty = b.FQty,
            //    SQty = b.SQty,
            //    DSQty = b.DSQty,
            //    Pid = b.Pid,
            //    FMaterialId = b.FMaterialId,
            //    Id = b.Id,
            //    RecoKw = b.RecoKw,
            //    ItemId = b.FMaterialId
            //}).ToList();
            //return result;
            return new
            {
                //tbBillList = result,
                blDetails = blDetails.Where(x => x.DSQty > 0).ToList(),
                ysDetails = blDetails.Where(x => x.SQty > 0).ToList(),
                Count = items.Count + ysitems.Count
            };
        }
        catch (Exception ex)
        {
            // 保留原有异常处理逻辑
            throw new Exception($"{ex.Message}");
        }
    }
    /// <summary>