From 8307d1d9419e2b04314263a891560fe97a0e6582 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Mon, 18 Mar 2024 15:57:18 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E9=A4=90=E6=AC=A1=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E8=A1=A5=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/BusinessPlacesController.cs | 6 +-- .../Response/BusinessPlaceListResponse.cs | 11 +++++ .../Response/BusinessPlaceResponse.cs | 4 +- .../Services/IBusinessPlaceService.cs | 2 +- .../Implements/BusinessPlaceService.cs | 40 +++++++++++++++++-- 5 files changed, 53 insertions(+), 10 deletions(-) create mode 100644 Src/Dlhis.Basic/BusinessPlace/Response/BusinessPlaceListResponse.cs diff --git a/Src/Dlhis.Basic/BusinessPlace/Controllers/BusinessPlacesController.cs b/Src/Dlhis.Basic/BusinessPlace/Controllers/BusinessPlacesController.cs index 09b347a6..acbc9541 100644 --- a/Src/Dlhis.Basic/BusinessPlace/Controllers/BusinessPlacesController.cs +++ b/Src/Dlhis.Basic/BusinessPlace/Controllers/BusinessPlacesController.cs @@ -43,9 +43,9 @@ public class BusinessPlacesController : ControllerBase /// /// [HttpGet("list")] - public async Task> GetOpenedListAsync() + public async Task> GetOpenedListAsync(Guid? placeCode) { - return await _businessPlaceService.GetOpenedListAsync(); + return await _businessPlaceService.GetOpenedListAsync(placeCode); } /// @@ -100,7 +100,7 @@ public class BusinessPlacesController : ControllerBase /// /// [HttpGet("devicenos")] - public async Task> GetDevicesByCode([FromQuery]BusinessPlaceGetByCodeRequest request) + public async Task> GetDevicesByCode([FromQuery] BusinessPlaceGetByCodeRequest request) { return await _businessPlaceShiftService.GetDevicesByCode(request); } diff --git a/Src/Dlhis.Basic/BusinessPlace/Response/BusinessPlaceListResponse.cs b/Src/Dlhis.Basic/BusinessPlace/Response/BusinessPlaceListResponse.cs new file mode 100644 index 00000000..8010fb57 --- /dev/null +++ b/Src/Dlhis.Basic/BusinessPlace/Response/BusinessPlaceListResponse.cs @@ -0,0 +1,11 @@ +using Dlhis.Entity.Canteen.Enums; + +namespace Dlhis.Basic.BusinessPlace.Response; + +public class BusinessPlaceListResponse : BusinessPlaceResponse +{ + /// + /// 餐次 + /// + public List ShiftTypes { get; set; } +} diff --git a/Src/Dlhis.Basic/BusinessPlace/Response/BusinessPlaceResponse.cs b/Src/Dlhis.Basic/BusinessPlace/Response/BusinessPlaceResponse.cs index ae186627..acc4bf9f 100644 --- a/Src/Dlhis.Basic/BusinessPlace/Response/BusinessPlaceResponse.cs +++ b/Src/Dlhis.Basic/BusinessPlace/Response/BusinessPlaceResponse.cs @@ -50,12 +50,12 @@ public class BusinessPlaceResponse /// - /// 餐次code + /// 餐别code /// public Guid? ShiftCode { get; set; } /// - /// 餐次名称 + /// 餐别名称 /// public string ShiftName { get; set; } } diff --git a/Src/Dlhis.Basic/BusinessPlace/Services/IBusinessPlaceService.cs b/Src/Dlhis.Basic/BusinessPlace/Services/IBusinessPlaceService.cs index 2ada296c..7228c137 100644 --- a/Src/Dlhis.Basic/BusinessPlace/Services/IBusinessPlaceService.cs +++ b/Src/Dlhis.Basic/BusinessPlace/Services/IBusinessPlaceService.cs @@ -17,7 +17,7 @@ public interface IBusinessPlaceService : IScopeDependency /// 获取可用的营业点 /// /// - Task> GetOpenedListAsync(); + Task> GetOpenedListAsync(Guid? placeCode); /// /// 保存营业点 diff --git a/Src/Dlhis.Basic/BusinessPlace/Services/Implements/BusinessPlaceService.cs b/Src/Dlhis.Basic/BusinessPlace/Services/Implements/BusinessPlaceService.cs index 17e4f88e..0baabf27 100644 --- a/Src/Dlhis.Basic/BusinessPlace/Services/Implements/BusinessPlaceService.cs +++ b/Src/Dlhis.Basic/BusinessPlace/Services/Implements/BusinessPlaceService.cs @@ -49,12 +49,44 @@ public class BusinessPlaceService : IBusinessPlaceService } - public async Task> GetOpenedListAsync() + public async Task> GetOpenedListAsync(Guid? placeCode) { - return await _dbContext.Queryable() - .Where(x => x.Status == CanteenBusinessPlaceStatusEnumType.Opened) - .Select() + var list = await _dbContext.Queryable() + .LeftJoin((x, ps) => x.Code == ps.PlaceCode) + .LeftJoin((x, ps, s) => s.Code == ps.ShiftCode) + .Where(x => x.Status == CanteenBusinessPlaceStatusEnumType.Opened) + .WhereIF(placeCode.HasValue, x => x.Code == placeCode) + .Select((x, ps, s) => new BusinessPlaceListResponse + { + Id = x.Id, + Code = x.Code, + Status = x.Status, + Name = x.Name, + Catalog = x.Catalog, + CustomCode = x.CustomCode, + Source = x.Source, + Supplier = x.Supplier, + ShiftCode = s.Code, + ShiftName = s.Name, + }) .ToListAsync(); + + var shiftCodes = list.Where(x => x.ShiftCode.HasValue).Select(x => x.ShiftCode.Value).ToList(); + + var shiftTypes = await _dbContext.Queryable() + .Where(x => shiftCodes.Contains(x.ShiftCode)) + .Select(x => new { x.ShiftCode, x.ShiftType }) + .ToListAsync(); + + list.ForEach(item => + { + if (item.ShiftCode.HasValue) + { + item.ShiftTypes = shiftTypes.Where(x => x.ShiftCode == item.ShiftCode.Value).Select(x => x.ShiftType).ToList(); + } + }); + + return list; }