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;
}