From 631fcb03ef97a7a53d211877c6d5ec7a833a4649 Mon Sep 17 00:00:00 2001 From: “wangming” <“wangming@antissoft.com”> Date: Sun, 16 Nov 2025 20:54:23 +0800 Subject: [PATCH] feat: 开单品项明细记录列表接口新增门店信息 --- netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/BillingItemDetailListOutput.cs | 10 ++++++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/BillingItemDetailListQueryInput.cs | 5 +++++ netcore/src/Modularity/Extend/NCC.Extend/LqKdKdjlbService.cs | 35 +++++++++++++++++++++++++++++++---- 3 files changed, 46 insertions(+), 4 deletions(-) diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/BillingItemDetailListOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/BillingItemDetailListOutput.cs index 132e466..d3b0432 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/BillingItemDetailListOutput.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/BillingItemDetailListOutput.cs @@ -66,6 +66,16 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb /// 备注 /// public string remark { get; set; } + + /// + /// 门店ID + /// + public string storeId { get; set; } + + /// + /// 门店名称 + /// + public string storeName { get; set; } } } diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/BillingItemDetailListQueryInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/BillingItemDetailListQueryInput.cs index 1d5f3a4..b5669e6 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/BillingItemDetailListQueryInput.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/BillingItemDetailListQueryInput.cs @@ -66,6 +66,11 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb /// 来源类型(购买/赠送/体验) /// public string SourceType { get; set; } + + /// + /// 门店ID + /// + public string StoreId { get; set; } } } diff --git a/netcore/src/Modularity/Extend/NCC.Extend/LqKdKdjlbService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqKdKdjlbService.cs index a81735b..b8dff6a 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend/LqKdKdjlbService.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend/LqKdKdjlbService.cs @@ -3237,7 +3237,8 @@ namespace NCC.Extend.LqKdKdjlb /// "ItemId": "品项ID", /// "ItemName": "品项名称", /// "ItemType": "品项类型", - /// "SourceType": "来源类型" + /// "SourceType": "来源类型", + /// "StoreId": "门店ID" /// } /// ``` /// @@ -3258,6 +3259,7 @@ namespace NCC.Extend.LqKdKdjlb /// - ItemName: 品项名称(可选,模糊查询) /// - ItemType: 品项类型(可选,精确匹配,对应项目资料表的qt2字段) /// - SourceType: 来源类型(可选,精确匹配,如:购买、赠送、体验) + /// - StoreId: 门店ID(可选,精确匹配,根据开单记录表的门店ID筛选) /// /// 返回数据结构: /// ```json @@ -3280,7 +3282,9 @@ namespace NCC.Extend.LqKdKdjlb /// "actualPrice": 500.00, /// "projectNumber": 5.0, /// "sourceType": "购买", - /// "remark": "备注" + /// "remark": "备注", + /// "storeId": "门店ID", + /// "storeName": "门店名称" /// } /// ] /// } @@ -3299,6 +3303,8 @@ namespace NCC.Extend.LqKdKdjlb /// - projectNumber: 项目次数(decimal类型,支持小数) /// - sourceType: 来源类型(字符串,如:购买、赠送、体验) /// - remark: 备注(字符串) + /// - storeId: 门店ID(关联开单记录表的门店ID) + /// - storeName: 门店名称(关联门店表的店名字段) /// /// 查询参数 /// 开单品项明细记录列表(分页) @@ -3341,7 +3347,8 @@ namespace NCC.Extend.LqKdKdjlb // 2. 通过 EXISTS 子查询筛选关联字段(在分页前筛选,确保分页准确) baseQuery = baseQuery.WhereIF(!string.IsNullOrEmpty(input.MemberName), pxmx => SqlFunc.Subqueryable().Where(x => x.Id == pxmx.MemberId && x.Khmc != null && x.Khmc.Contains(input.MemberName)).Any()) .WhereIF(!string.IsNullOrEmpty(input.MemberPhone), pxmx => SqlFunc.Subqueryable().Where(x => x.Id == pxmx.MemberId && x.Sjh == input.MemberPhone).Any()) - .WhereIF(!string.IsNullOrEmpty(input.ItemType), pxmx => SqlFunc.Subqueryable().Where(x => x.Id == pxmx.Px && x.Fl4 == input.ItemType).Any()); + .WhereIF(!string.IsNullOrEmpty(input.ItemType), pxmx => SqlFunc.Subqueryable().Where(x => x.Id == pxmx.Px && x.Fl4 == input.ItemType).Any()) + .WhereIF(!string.IsNullOrEmpty(input.StoreId), pxmx => SqlFunc.Subqueryable().Where(x => x.Id == pxmx.Glkdbh && x.Djmd == input.StoreId).Any()); // 3. 先分页查询主表数据(查询实体类,提高性能) var pagedData = await baseQuery.OrderBy(sidx + " " + sort).ToPagedListAsync(input.currentPage, input.pageSize); @@ -3351,6 +3358,7 @@ namespace NCC.Extend.LqKdKdjlb var memberIds = pagedData.list.Where(x => !string.IsNullOrEmpty(x.MemberId)).Select(x => x.MemberId).Distinct().ToList(); var activityIds = pagedData.list.Where(x => !string.IsNullOrEmpty(x.ActivityId)).Select(x => x.ActivityId).Distinct().ToList(); var projectIds = pagedData.list.Where(x => !string.IsNullOrEmpty(x.Px)).Select(x => x.Px).Distinct().ToList(); + var billingIds = pagedData.list.Where(x => !string.IsNullOrEmpty(x.Glkdbh)).Select(x => x.Glkdbh).Distinct().ToList(); // 批量查询会员信息 var memberDict = new Dictionary(); @@ -3376,6 +3384,23 @@ namespace NCC.Extend.LqKdKdjlb projectDict = projects.ToDictionary(x => x.Id, x => x.Qt2 ?? ""); } + // 批量查询开单记录,获取门店ID + var billingStoreDict = new Dictionary(); + if (billingIds.Any()) + { + var billings = await _db.Queryable().Where(x => billingIds.Contains(x.Id)).Select(x => new { x.Id, x.Djmd }).ToListAsync(); + billingStoreDict = billings.ToDictionary(x => x.Id, x => x.Djmd ?? ""); + } + + // 批量查询门店信息 + var storeDict = new Dictionary(); + var storeIds = billingStoreDict.Values.Where(x => !string.IsNullOrEmpty(x)).Distinct().ToList(); + if (storeIds.Any()) + { + var stores = await _db.Queryable().Where(x => storeIds.Contains(x.Id)).Select(x => new { x.Id, x.Dm }).ToListAsync(); + storeDict = stores.ToDictionary(x => x.Id, x => x.Dm ?? ""); + } + // 5. 组装返回数据 var resultList = pagedData.list.Select(pxmx => new BillingItemDetailListOutput { @@ -3390,7 +3415,9 @@ namespace NCC.Extend.LqKdKdjlb actualPrice = pxmx.ActualPrice, projectNumber = pxmx.ProjectNumber, sourceType = pxmx.SourceType, - remark = pxmx.Remark + remark = pxmx.Remark, + storeId = pxmx.Glkdbh != null && billingStoreDict.ContainsKey(pxmx.Glkdbh) ? billingStoreDict[pxmx.Glkdbh] : "", + storeName = pxmx.Glkdbh != null && billingStoreDict.ContainsKey(pxmx.Glkdbh) && !string.IsNullOrEmpty(billingStoreDict[pxmx.Glkdbh]) && storeDict.ContainsKey(billingStoreDict[pxmx.Glkdbh]) ? storeDict[billingStoreDict[pxmx.Glkdbh]] : "" }).ToList(); // 6. 返回分页结果 -- libgit2 0.21.4