diff --git a/Src/Dlhis.Basic.Api/Dlhis.Basic.Api.csproj b/Src/Dlhis.Basic.Api/Dlhis.Basic.Api.csproj
index 2311965f..ae3784a1 100644
--- a/Src/Dlhis.Basic.Api/Dlhis.Basic.Api.csproj
+++ b/Src/Dlhis.Basic.Api/Dlhis.Basic.Api.csproj
@@ -10,8 +10,4 @@
-
-
-
-
diff --git a/Src/Dlhis.Basic.Api/Dtos/DishesMenuDetailDto.cs b/Src/Dlhis.Basic.Api/Dtos/DishesMenuDetailDto.cs
new file mode 100644
index 00000000..cb960e51
--- /dev/null
+++ b/Src/Dlhis.Basic.Api/Dtos/DishesMenuDetailDto.cs
@@ -0,0 +1,20 @@
+namespace Dlhis.Basic.Api.Dtos;
+
+public class DishesMenuDetailDto
+{
+ public DateTime Date { get; set; }
+
+ public long MenuId { get; set; }
+
+ public long DishesId { get; set; }
+
+ public string DishesCode { get; set; }
+
+ public string DishesName { get; set; }
+
+ public decimal Price { get; set; }
+
+ public int Number { get; set; }
+
+ public int Version { get; set; }
+}
diff --git a/Src/Dlhis.Basic.Api/IBusinessPlacePermissionsApi.cs b/Src/Dlhis.Basic.Api/IBusinessPlacePermissionsApi.cs
new file mode 100644
index 00000000..3b6be007
--- /dev/null
+++ b/Src/Dlhis.Basic.Api/IBusinessPlacePermissionsApi.cs
@@ -0,0 +1,13 @@
+using Dlhis.Basic.Api.Response;
+using Kurisu.Core.Result;
+using Kurisu.RemoteCall.Attributes;
+
+namespace Dlhis.Basic.Api;
+
+[EnableRemoteClient(Name = "basic-service", BaseUrl = "${InternalRequest:BasicRequestUrl}")]
+public interface IBusinessPlacePermissionsApi
+{
+ [Auth]
+ [Get("/api/businessplacepermissions/my")]
+ Task> GetMyAsync();
+}
diff --git a/Src/Dlhis.Basic.Api/IDisheMenuApi.cs b/Src/Dlhis.Basic.Api/IDisheMenuApi.cs
new file mode 100644
index 00000000..04482e6a
--- /dev/null
+++ b/Src/Dlhis.Basic.Api/IDisheMenuApi.cs
@@ -0,0 +1,21 @@
+using Dlhis.Basic.Api.Dtos;
+using Kurisu.Core.Result;
+using Kurisu.RemoteCall.Attributes;
+
+namespace Dlhis.Basic.Api;
+
+[EnableRemoteClient(Name = "basic-service", BaseUrl = "${InternalRequest:BasicRequestUrl}")]
+public interface IDisheMenuApi
+{
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ [Auth]
+ [Get("/api/dishesMenus/detail")]
+ Task> GetBookingDishesDetailAsync(DateTime date, Guid businessPlaceCode, int shiftType, string dishesCode);
+}
\ No newline at end of file
diff --git a/Src/Dlhis.Basic.Api/Request/SaveBusinessPlacePermissionRequest.cs b/Src/Dlhis.Basic.Api/Request/SaveBusinessPlacePermissionRequest.cs
new file mode 100644
index 00000000..084b595e
--- /dev/null
+++ b/Src/Dlhis.Basic.Api/Request/SaveBusinessPlacePermissionRequest.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Dlhis.Basic.Api.Request
+{
+ public class SaveBusinessPlacePermissionRequest
+ {
+ public long? Id { get; set; }
+
+ ///
+ /// 营业点
+ ///
+ public Guid BusinessPlaceCode { get; set; }
+ }
+}
diff --git a/Src/Dlhis.Basic.Api/Response/BusinessPlaceDto.cs b/Src/Dlhis.Basic.Api/Response/BusinessPlaceDto.cs
new file mode 100644
index 00000000..cffafdb3
--- /dev/null
+++ b/Src/Dlhis.Basic.Api/Response/BusinessPlaceDto.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Dlhis.Basic.Api.Response
+{
+ public class BusinessPlaceDto
+ {
+ public Guid Code { get; set; }
+ public string Name { get; set; }
+ }
+}
diff --git a/Src/Dlhis.Basic.Api/Response/GetMyResponse.cs b/Src/Dlhis.Basic.Api/Response/GetMyResponse.cs
new file mode 100644
index 00000000..9e2df3ee
--- /dev/null
+++ b/Src/Dlhis.Basic.Api/Response/GetMyResponse.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Dlhis.Basic.Api.Response
+{
+ public class GetMyResponse
+ {
+ public List dtos { get; set; }
+ }
+}
diff --git a/Src/Dlhis.Basic/BusinessPlace/Controllers/BusinessPlacePermissionsController.cs b/Src/Dlhis.Basic/BusinessPlace/Controllers/BusinessPlacePermissionsController.cs
new file mode 100644
index 00000000..99ac821c
--- /dev/null
+++ b/Src/Dlhis.Basic/BusinessPlace/Controllers/BusinessPlacePermissionsController.cs
@@ -0,0 +1,59 @@
+using Dlhis.Basic.BusinessPlace.Request;
+using Dlhis.Basic.BusinessPlace.Response;
+using Dlhis.Basic.BusinessPlace.Services;
+using Kurisu.Core.DataAccess.Dto;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Dlhis.Basic.BusinessPlace.Controllers;
+
+///
+/// 营业点管理
+///
+[Authorize]
+[Route("api/[controller]")]
+[ApiController]
+public class BusinessPlacePermissionsController
+{
+ private readonly IBusinessPlacePermissionsService _businessPlacePermissionsService;
+
+ public BusinessPlacePermissionsController(IBusinessPlacePermissionsService businessPlacePermissionsService)
+ {
+ _businessPlacePermissionsService = businessPlacePermissionsService;
+ }
+
+ ///
+ /// 分页
+ ///
+ ///
+ ///
+ [Authorize(Roles = "admin,tenant-admin")]
+ [HttpGet("page")]
+ public async Task> GetPageAsync([FromQuery] BusinessPlacePermissionPageRequest request)
+ {
+ return await _businessPlacePermissionsService.GetPageAsync(request);
+ }
+
+ ///
+ /// 获取我的营业点
+ ///
+ ///
+ [HttpGet("my")]
+ public async Task GetMy()
+ {
+ return await _businessPlacePermissionsService.GetMyAsync();
+ }
+
+
+ ///
+ /// 保存营业点
+ ///
+ ///
+ ///
+ [Authorize(Roles = "admin,tenant-admin")]
+ [HttpPost("save")]
+ public async Task SaveBusinessPlacePermissionAsync(SaveBusinessPlacePermissionRequest request)
+ {
+ await _businessPlacePermissionsService.SaveBusinessPlacePermissionAsync(request);
+ }
+}
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/Request/BusinessPlacePermissionPageRequest.cs b/Src/Dlhis.Basic/BusinessPlace/Request/BusinessPlacePermissionPageRequest.cs
new file mode 100644
index 00000000..4efbd299
--- /dev/null
+++ b/Src/Dlhis.Basic/BusinessPlace/Request/BusinessPlacePermissionPageRequest.cs
@@ -0,0 +1,7 @@
+using Kurisu.Core.DataAccess.Dto;
+
+namespace Dlhis.Basic.BusinessPlace.Request;
+
+public class BusinessPlacePermissionPageRequest : PageDto
+{
+}
diff --git a/Src/Dlhis.Basic/BusinessPlace/Request/SaveBusinessPlacePermissionRequest.cs b/Src/Dlhis.Basic/BusinessPlace/Request/SaveBusinessPlacePermissionRequest.cs
new file mode 100644
index 00000000..744ab2da
--- /dev/null
+++ b/Src/Dlhis.Basic/BusinessPlace/Request/SaveBusinessPlacePermissionRequest.cs
@@ -0,0 +1,18 @@
+using SqlSugar;
+
+namespace Dlhis.Basic.BusinessPlace.Request;
+
+public class SaveBusinessPlacePermissionRequest
+{
+ public long? Id { get; set; }
+
+ ///
+ /// 管理人员userId
+ ///
+ public int UserId { get; set; }
+
+ ///
+ /// 营业点
+ ///
+ public Guid BusinessPlaceCode { get; set; }
+}
diff --git a/Src/Dlhis.Basic/BusinessPlace/Response/BusinessPlaceDto.cs b/Src/Dlhis.Basic/BusinessPlace/Response/BusinessPlaceDto.cs
new file mode 100644
index 00000000..a5dd68f7
--- /dev/null
+++ b/Src/Dlhis.Basic/BusinessPlace/Response/BusinessPlaceDto.cs
@@ -0,0 +1,8 @@
+namespace Dlhis.Basic.BusinessPlace.Response
+{
+ public class BusinessPlaceDto
+ {
+ public Guid Code { get; set; }
+ public string Name { get; set; }
+ }
+}
diff --git a/Src/Dlhis.Basic/BusinessPlace/Response/BusinessPlaceListResponse.cs b/Src/Dlhis.Basic/BusinessPlace/Response/BusinessPlaceListResponse.cs
new file mode 100644
index 00000000..e1ad436b
--- /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/BusinessPlacePermissionPageResponse.cs b/Src/Dlhis.Basic/BusinessPlace/Response/BusinessPlacePermissionPageResponse.cs
new file mode 100644
index 00000000..cac2e41e
--- /dev/null
+++ b/Src/Dlhis.Basic/BusinessPlace/Response/BusinessPlacePermissionPageResponse.cs
@@ -0,0 +1,26 @@
+namespace Dlhis.Basic.BusinessPlace.Response;
+
+public class BusinessPlacePermissionPageResponse
+{
+ public long Id { get; set; }
+
+ ///
+ /// 用户id
+ ///
+ public string UserId { get; set; }
+
+ ///
+ /// 用户name
+ ///
+ public string UserName { get; set; }
+
+ ///
+ /// 营业点code
+ ///
+ public Guid BusinessPlaceCode { get; set; }
+
+ ///
+ /// 营业点名称
+ ///
+ public string BusinessPlaceName { 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/Response/GetMyResponse.cs b/Src/Dlhis.Basic/BusinessPlace/Response/GetMyResponse.cs
new file mode 100644
index 00000000..1a3b6fd2
--- /dev/null
+++ b/Src/Dlhis.Basic/BusinessPlace/Response/GetMyResponse.cs
@@ -0,0 +1,7 @@
+namespace Dlhis.Basic.BusinessPlace.Response
+{
+ public class GetMyResponse
+ {
+ public List dtos { get; set; }
+ }
+}
diff --git a/Src/Dlhis.Basic/BusinessPlace/Services/IBusinessPlacePermissionsService.cs b/Src/Dlhis.Basic/BusinessPlace/Services/IBusinessPlacePermissionsService.cs
new file mode 100644
index 00000000..cbae1cfc
--- /dev/null
+++ b/Src/Dlhis.Basic/BusinessPlace/Services/IBusinessPlacePermissionsService.cs
@@ -0,0 +1,14 @@
+using Dlhis.Basic.BusinessPlace.Request;
+using Dlhis.Basic.BusinessPlace.Response;
+using Kurisu.Core.DataAccess.Dto;
+
+namespace Dlhis.Basic.BusinessPlace.Services;
+
+public interface IBusinessPlacePermissionsService : IScopeDependency
+{
+ Task> GetPageAsync(BusinessPlacePermissionPageRequest request);
+
+ Task SaveBusinessPlacePermissionAsync(SaveBusinessPlacePermissionRequest request);
+
+ Task GetMyAsync();
+}
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/BusinessPlacePermissionsService.cs b/Src/Dlhis.Basic/BusinessPlace/Services/Implements/BusinessPlacePermissionsService.cs
new file mode 100644
index 00000000..55d1fdca
--- /dev/null
+++ b/Src/Dlhis.Basic/BusinessPlace/Services/Implements/BusinessPlacePermissionsService.cs
@@ -0,0 +1,66 @@
+using Dlhis.Basic.BusinessPlace.Request;
+using Dlhis.Basic.BusinessPlace.Response;
+using Dlhis.Entity.Basic.Entity;
+using Kurisu.Core.DataAccess.Dto;
+using Kurisu.Core.User.Abstractions;
+using Kurisu.SqlSugar.Services;
+using Mapster;
+
+namespace Dlhis.Basic.BusinessPlace.Services.Implements;
+
+public class BusinessPlacePermissionsService : IBusinessPlacePermissionsService
+{
+ private readonly IDbContext _dbContext;
+ private readonly ICurrentUser _currentUser;
+
+ public BusinessPlacePermissionsService(IDbContext dbContext, ICurrentUser currentUser)
+ {
+ _dbContext = dbContext;
+ _currentUser = currentUser;
+ }
+
+ public async Task> GetPageAsync(BusinessPlacePermissionPageRequest request)
+ {
+ throw new NotImplementedException();
+ }
+
+ public async Task GetMyAsync()
+ {
+ var userId = _currentUser.GetIntSubjectId();
+
+ var guids = await _dbContext.Queryable()
+ .Where(x => x.ManagerUserId == userId)
+ .Select(x => x.BusinessPlaceCode)
+ .Distinct()
+ .ToListAsync();
+
+ var dtos = await _dbContext.Queryable()
+ .Where(x => guids.Contains(x.Code))
+ .Select()
+ .ToListAsync();
+ var myResponse = new GetMyResponse
+ {
+ dtos = dtos
+ };
+ return myResponse;
+ }
+
+ public async Task SaveBusinessPlacePermissionAsync(SaveBusinessPlacePermissionRequest request)
+ {
+ var userId = _currentUser.GetIntSubjectId();
+ if (request.Id.HasValue)
+ {
+ var entity = await _dbContext.Queryable()
+ .Where(x => x.Id == request.Id).FirstAsync();
+
+ request.Adapt(entity);
+ await _dbContext.UpdateAsync(entity);
+ }
+ else
+ {
+ var entity = request.Adapt();
+ entity.ManagerUserId = userId;
+ await _dbContext.InsertAsync(entity);
+ }
+ }
+}
diff --git a/Src/Dlhis.Basic/BusinessPlace/Services/Implements/BusinessPlaceService.cs b/Src/Dlhis.Basic/BusinessPlace/Services/Implements/BusinessPlaceService.cs
index 17e4f88e..79a25b9f 100644
--- a/Src/Dlhis.Basic/BusinessPlace/Services/Implements/BusinessPlaceService.cs
+++ b/Src/Dlhis.Basic/BusinessPlace/Services/Implements/BusinessPlaceService.cs
@@ -49,12 +49,46 @@ 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 => new Dictionary() { [(int)x.ShiftType] = x.ShiftType.GetDescription() })
+ .ToList();
+ }
+ });
+
+ return list;
}
diff --git a/Src/Dlhis.Basic/BusinessShift/Request/BusinessPlaceShiftSaveMealShiftRequest.cs b/Src/Dlhis.Basic/BusinessShift/Request/BusinessPlaceShiftSaveMealShiftRequest.cs
index 98e63fae..a6512432 100644
--- a/Src/Dlhis.Basic/BusinessShift/Request/BusinessPlaceShiftSaveMealShiftRequest.cs
+++ b/Src/Dlhis.Basic/BusinessShift/Request/BusinessPlaceShiftSaveMealShiftRequest.cs
@@ -1,4 +1,5 @@
using System.ComponentModel.DataAnnotations;
+using Dlhis.Entity.Canteen.Enums;
using Kurisu.Core.CustomClass;
namespace Dlhis.Basic.BusinessShift.Request;
@@ -13,9 +14,10 @@ public class BusinessPlaceShiftSaveMealShiftRequest : IValidatableObject
public Guid ShiftCode { get; set; }
///
- /// mealshift
+ /// 餐次 ShiftEnumType
///
- public string ShiftType { get; set; }
+ [EnumDataType(typeof(ShiftEnumType))]
+ public ShiftEnumType ShiftType { get; set; }
///
/// 序号
diff --git a/Src/Dlhis.Basic/BusinessShift/Response/MealShiftResponse.cs b/Src/Dlhis.Basic/BusinessShift/Response/MealShiftResponse.cs
index bf99cb6a..bd83ed7b 100644
--- a/Src/Dlhis.Basic/BusinessShift/Response/MealShiftResponse.cs
+++ b/Src/Dlhis.Basic/BusinessShift/Response/MealShiftResponse.cs
@@ -1,4 +1,7 @@
-namespace Dlhis.Basic.BusinessShift.Response
+using Dlhis.Entity.Canteen.Enums;
+using Kurisu.AspNetCore.Utils.Extensions;
+
+namespace Dlhis.Basic.BusinessShift.Response
{
public class MealShiftResponse
{
@@ -6,9 +9,9 @@
public Guid ShiftCode { get; set; }
- public string ShiftType { get; set; }
+ public ShiftEnumType ShiftType { get; set; }
- public string Name { get; set; }
+ public string Name => ShiftType.GetDescription();
public TimeOnly Start { get; set; }
diff --git a/Src/Dlhis.Basic/BusinessShift/Services/Implements/BusinessPlaceShiftService.cs b/Src/Dlhis.Basic/BusinessShift/Services/Implements/BusinessPlaceShiftService.cs
index de3fa555..dbf1d513 100644
--- a/Src/Dlhis.Basic/BusinessShift/Services/Implements/BusinessPlaceShiftService.cs
+++ b/Src/Dlhis.Basic/BusinessShift/Services/Implements/BusinessPlaceShiftService.cs
@@ -38,14 +38,12 @@ public class BusinessPlaceShiftService : IBusinessPlaceShiftService
//下级就餐时间段
var mealShifts = await _dbContext.Queryable()
- .LeftJoin((x, bt) => x.ShiftType == bt.Code)
.Where(x => shiftCodes.Contains(x.ShiftCode))
- .Select((x, bt) => new MealShiftResponse
+ .Select((x) => new MealShiftResponse
{
Id = x.Id,
ShiftCode = x.ShiftCode,
- ShiftType = bt.Code,
- Name = bt.Display,
+ ShiftType = x.ShiftType,
Start = x.Start,
End = x.End,
})
@@ -95,14 +93,11 @@ public class BusinessPlaceShiftService : IBusinessPlaceShiftService
public async Task SaveMealShiftsAsync(List requests)
{
- var mealShifts = await GetMealShiftAsync();
-
foreach (var request in requests)
{
var shift = await CheckExistsShiftAsync(request.ShiftCode);
await CheckExistsMealShiftAsync(request);
await DuplicateTimePeriodAsync(request);
- mealShifts.Contains(request.ShiftType).ThrowIfFalse($"{request.ShiftType}不存在");
if (!request.Id.HasValue)
{
@@ -312,11 +307,6 @@ public class BusinessPlaceShiftService : IBusinessPlaceShiftService
return shift;
}
- private async Task> GetMealShiftAsync()
- {
- return await _dbContext.Queryable().Where(x => x.Type == "mealshift").Select(x => x.Code).ToListAsync();
- }
-
private async Task CheckExistsMealShiftAsync(BusinessPlaceShiftSaveMealShiftRequest request)
{
var exists = await _dbContext.Queryable()
diff --git a/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs b/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs
index 7b1ab8ce..b021c5db 100644
--- a/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs
+++ b/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs
@@ -9,7 +9,7 @@ using Microsoft.AspNetCore.Mvc;
namespace Dlhis.Basic.Device.Controllers;
-[Authorize]
+[Authorize(Roles = "admin,tenant-admin")]
[Route("api/[controller]")]
[ApiController]
public class DevicePermissionsController : ControllerBase
diff --git a/Src/Dlhis.Basic/Device/Controllers/DevicesController.cs b/Src/Dlhis.Basic/Device/Controllers/DevicesController.cs
index 3298137a..804e52d1 100644
--- a/Src/Dlhis.Basic/Device/Controllers/DevicesController.cs
+++ b/Src/Dlhis.Basic/Device/Controllers/DevicesController.cs
@@ -2,8 +2,6 @@
using Dlhis.Basic.Device.Response;
using Dlhis.Basic.Device.Services;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop;
-using Kurisu.AspNetCore.EventBus.Abstractions;
-using Kurisu.AspNetCore.Scope;
using Kurisu.Core.DataAccess.Dto;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs
index f3c56a47..d72d3f38 100644
--- a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs
+++ b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs
@@ -11,6 +11,7 @@ using Kurisu.Core.DataAccess.Dto;
using Kurisu.Core.DataAccess.Entity;
using Kurisu.Core.User.Abstractions;
using Kurisu.SqlSugar.Services;
+using SqlSugar;
namespace Dlhis.Basic.Device.Services.Implements;
@@ -302,6 +303,9 @@ public class DevicePermissionService : IDevicePermissionService
///
public async Task> GetAssignDeviceCodesAsync(string userNo)
{
+ var devices = await _dbContext.Queryable().ToListAsync();
+ var deviceRegistries = await _dbContext.Queryable().ToListAsync();
+
var gainfo = await _dbContext.Queryable().Where(x => x.No == userNo).SingleAsync();
var gainfoGroups = await _dbContext.Queryable().ToListAsync();
@@ -309,7 +313,7 @@ public class DevicePermissionService : IDevicePermissionService
var deviceGroups = await _dbContext.Queryable().ToListAsync();
var deviceRelationships = await _dbContext.Queryable().ToListAsync();
- var result = GetAssignDeviceCodesInternal(gainfo, gainfoGroups, devicePermissions, deviceGroups, deviceRelationships);
+ var result = GetAssignDeviceCodesInternal(gainfo, gainfoGroups, devicePermissions, deviceGroups, deviceRelationships, deviceRegistries, devices);
return result.SelectMany(x => x.Codes).ToList();
}
@@ -321,13 +325,22 @@ public class DevicePermissionService : IDevicePermissionService
///
public async Task> GetAssigmentByCodeAsync(AssigmentByCodeRequest request)
{
+ var lst1 = new List();
//所有设备guid
var gds = await GetAssignmentsAsync(DeviceAssignmentTypeEnumType.Device, AssignTypeEnumType.User, request.No);
+ if (gds != null && gds.Count > 0)
+ {
+ lst1.AddRange(gds);
+ }
//所有设备组guid
var ggs = await GetAssignmentsAsync(DeviceAssignmentTypeEnumType.Group, AssignTypeEnumType.User, request.No);
+ //所有营业点guid
+ var gps = await GetAssignmentsAsync(DeviceAssignmentTypeEnumType.BusinessPlace, AssignTypeEnumType.User, request.No);
+
var devices = await _dbContext.Queryable().ToListAsync();
+ var regiss = await _dbContext.Queryable().ToListAsync();
if (ggs != null && ggs.Count > 0)
{
@@ -337,11 +350,23 @@ public class DevicePermissionService : IDevicePermissionService
.Where(x => x.GroupCode == gid)
.Select(x => x.DeviceCode)
.ToListAsync();
- gds.AddRange(ds);
+ lst1.AddRange(ds);
+ }
+ }
+ if (gps != null && gps.Count > 0)
+ {
+ foreach (var placeCode in gps)
+ {
+ var nos = regiss.Where(x => x.BusinessPlaceCode == placeCode)
+ .Select(x => x.DeviceUniqueNo).ToList();
+
+ var dcodes = devices.Where(d => nos.Contains(d.UniqueNo))
+ .Select(d => d.Code).ToList();
+ lst1.AddRange(dcodes);
}
}
- var dds = gds.Distinct().ToList();
+ var dds = lst1.Distinct().ToList();
var lst = devices.Where(x => dds.Contains(x.Code))
.Select(x => new AssigmentByCodeResponse
{
@@ -445,6 +470,9 @@ public class DevicePermissionService : IDevicePermissionService
private async Task>> GetAssignDeviceCodesInternalAsync(List userNos)
{
+ var devices = await _dbContext.Queryable().ToListAsync();
+ var regiss = await _dbContext.Queryable().Where(x => !SqlFunc.IsNullOrEmpty(x.BusinessPlaceCode)).ToListAsync();
+
var gainfos = await _dbContext.Queryable().Where(x => userNos.Contains(x.No)).ToListAsync();
if (!gainfos.Any())
{
@@ -460,23 +488,27 @@ public class DevicePermissionService : IDevicePermissionService
foreach (var gainfo in gainfos)
{
- var codes = GetAssignDeviceCodesInternal(gainfo, gainfoGroupRelationships, devicePermissions, deviceGroups, deviceRelationships);
+ var codes = GetAssignDeviceCodesInternal(gainfo, gainfoGroupRelationships, devicePermissions, deviceGroups, deviceRelationships, regiss, devices);
result.Add(gainfo.No, codes);
}
return result;
}
- private static List GetAssignDeviceCodesInternal(
+ private static List GetAssignDeviceCodesInternal(
GainfoEntity gainfo,
List gainfoGroupRelationships,
List devicePermissions,
List deviceGroups,
- List deviceGroupRelationships)
+ List deviceGroupRelationships,
+ List deviceRegistries,
+ List devices
+ )
{
var userNo = gainfo.No;
var deviceCodes = new List();
var deviceGroupCodes = new List();
+ var placeCodes = new List();
//获取人员的分组,跨基地
var gainfoGroups = gainfoGroupRelationships.Where(x => x.UserNo == userNo).Select(x => x.GroupCode).ToList();
@@ -484,32 +516,43 @@ public class DevicePermissionService : IDevicePermissionService
//按用户
var du = GetAssignCodesInternal(devicePermissions, deviceGroups, DeviceAssignmentTypeEnumType.Device, AssignTypeEnumType.User, userNo);
var gu = GetAssignCodesInternal(devicePermissions, deviceGroups, DeviceAssignmentTypeEnumType.Group, AssignTypeEnumType.User, userNo);
+ var pu = GetAssignCodesInternal(devicePermissions, deviceGroups, DeviceAssignmentTypeEnumType.BusinessPlace, AssignTypeEnumType.User, userNo);
+
deviceCodes.AddRange(du);
deviceGroupCodes.AddRange(gu);
+ placeCodes.AddRange(pu);
//按用户组
foreach (var groupCode in gainfoGroups)
{
var dg = GetAssignCodesInternal(devicePermissions, deviceGroups, DeviceAssignmentTypeEnumType.Device, AssignTypeEnumType.Group, groupCode.ToString());
var gg = GetAssignCodesInternal(devicePermissions, deviceGroups, DeviceAssignmentTypeEnumType.Group, AssignTypeEnumType.Group, groupCode.ToString());
+ var pg = GetAssignCodesInternal(devicePermissions, deviceGroups, DeviceAssignmentTypeEnumType.BusinessPlace, AssignTypeEnumType.Group, groupCode.ToString());
deviceCodes.AddRange(dg);
deviceGroupCodes.AddRange(gg);
+ placeCodes.AddRange(pg);
}
//按部门
var gainfoFactoryDevicePermissions = devicePermissions.Where(x => x.TenantId == gainfo.Factory).ToList();
var dd = GetAssignCodesInternal(gainfoFactoryDevicePermissions, deviceGroups, DeviceAssignmentTypeEnumType.Device, AssignTypeEnumType.Department, gainfo.DepartmentNo);
var gd = GetAssignCodesInternal(gainfoFactoryDevicePermissions, deviceGroups, DeviceAssignmentTypeEnumType.Group, AssignTypeEnumType.Department, gainfo.DepartmentNo);
+ var pd = GetAssignCodesInternal(gainfoFactoryDevicePermissions, deviceGroups, DeviceAssignmentTypeEnumType.BusinessPlace, AssignTypeEnumType.Department, gainfo.DepartmentNo);
deviceCodes.AddRange(dd);
deviceGroupCodes.AddRange(gd);
+ placeCodes.AddRange(pd);
//按厂区
var dt = GetAssignCodesInternal(devicePermissions, deviceGroups, DeviceAssignmentTypeEnumType.Device, AssignTypeEnumType.Tenant, gainfo.Factory);
var gt = GetAssignCodesInternal(devicePermissions, deviceGroups, DeviceAssignmentTypeEnumType.Group, AssignTypeEnumType.Tenant, gainfo.Factory);
- deviceCodes.AddRange(du);
- deviceGroupCodes.AddRange(gu);
+ var pt = GetAssignCodesInternal(devicePermissions, deviceGroups, DeviceAssignmentTypeEnumType.BusinessPlace, AssignTypeEnumType.Tenant, gainfo.Factory);
+ placeCodes.AddRange(pt);
+ deviceCodes.AddRange(dt);
+ deviceGroupCodes.AddRange(gt);
var groupCodes = deviceGroupCodes.SelectMany(x => x.Codes).Distinct().ToList();
+ var placecodes = placeCodes.SelectMany(x => x.Codes).Distinct().ToList();
+
var deveiceCodesByGroup = deviceGroupRelationships.Where(x => groupCodes.Contains(x.GroupCode)).GroupBy(x => x.TenantId)
.Select(x => new UserTenantDeviceCodeDto
{
@@ -517,7 +560,24 @@ public class DevicePermissionService : IDevicePermissionService
Codes = x.Select(item => item.DeviceCode).Distinct().ToList()
});
+ var placeGroup = deviceRegistries.Where(x => placecodes.Contains((Guid)x.BusinessPlaceCode)).GroupBy(x => x.TenantId)
+ .Select(x => new UserTenantDeviceCodeDto
+ {
+ Tenant = x.Key,
+ }).ToList();
+
+ placeGroup.ForEach(t =>
+ {
+ var nos = deviceRegistries.Where(x => placecodes.Contains((Guid)x.BusinessPlaceCode))
+ .Where(x => x.TenantId == t.Tenant)
+ .Select(x => x.DeviceUniqueNo)
+ .ToList();
+
+ t.Codes = devices.Where(d => nos.Contains(d.UniqueNo)).Select(d => d.Code).ToList();
+ });
+
deviceCodes.AddRange(deveiceCodesByGroup);
+ deviceCodes.AddRange(placeGroup);
return deviceCodes.GroupBy(x => x.Tenant).Select(x => new UserTenantDeviceCodeDto
{
diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DeviceService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DeviceService.cs
index c0020c88..2eb8f9df 100644
--- a/Src/Dlhis.Basic/Device/Services/Implements/DeviceService.cs
+++ b/Src/Dlhis.Basic/Device/Services/Implements/DeviceService.cs
@@ -48,19 +48,19 @@ public class DeviceService : IDeviceService
var deviceUniqueNos = page.Data.Select(x => x.UniqueNo).ToList();
var balanceInfos = await _dbContext.Queryable().Where(x => x.Type == BalanceRecordTypeEnumType.Out)
- .Where(x => deviceUniqueNos.Contains(x.DeviceInfo))
+ .Where(x => deviceUniqueNos.Contains(x.DeviceUniqueNo))
.Select(x => new
{
- x.DeviceInfo,
+ x.DeviceUniqueNo,
Amount = SqlFunc.AggregateSum(x.Amount),
UserCount = SqlFunc.AggregateDistinctCount(x.UserCode)
})
- .GroupBy(x => x.DeviceInfo)
+ .GroupBy(x => x.DeviceUniqueNo)
.ToListAsync();
page.Data.ForEach(device =>
{
- var info = balanceInfos.FirstOrDefault(x => x.DeviceInfo == device.UniqueNo);
+ var info = balanceInfos.FirstOrDefault(x => x.DeviceUniqueNo == device.UniqueNo);
if (info != null)
{
device.Amount = info.Amount;
diff --git a/Src/Dlhis.Basic/Dishes/Controller/DishesCategoriesController.cs b/Src/Dlhis.Basic/Dishes/Controller/DishesCategoriesController.cs
new file mode 100644
index 00000000..7370ebe9
--- /dev/null
+++ b/Src/Dlhis.Basic/Dishes/Controller/DishesCategoriesController.cs
@@ -0,0 +1,44 @@
+using Dlhis.Basic.Dishes.Request;
+using Dlhis.Basic.Dishes.Response;
+using Dlhis.Basic.Dishes.Services;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Dlhis.Basic.Dishes.Controller;
+
+///
+/// 菜品分类
+///
+[Authorize]
+[Route("api/[controller]")]
+[ApiController]
+public class DishesCategoriesController : ControllerBase
+{
+ private readonly IDishesCategoryService _dishesCategoryService;
+
+ public DishesCategoriesController(IDishesCategoryService dishesCategoryService)
+ {
+ _dishesCategoryService = dishesCategoryService;
+ }
+
+ ///
+ /// 获取分类树
+ ///
+ ///
+ [HttpGet("tree")]
+ public async Task> TreeAsync()
+ {
+ return await _dishesCategoryService.TreeAsync();
+ }
+
+ ///
+ /// 保存分类
+ ///
+ ///
+ ///
+ [HttpPost("save")]
+ public async Task SaveAsync(DishesCategorySaveRequest request)
+ {
+ await _dishesCategoryService.SaveAsync(request);
+ }
+}
diff --git a/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs b/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs
new file mode 100644
index 00000000..31c24e25
--- /dev/null
+++ b/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs
@@ -0,0 +1,111 @@
+using Dlhis.Basic.Dishes.Dto;
+using Dlhis.Basic.Dishes.Request;
+using Dlhis.Basic.Dishes.Response;
+using Dlhis.Basic.Dishes.Services;
+using Dlhis.Entity.Canteen.Enums;
+using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop;
+using Kurisu.Core.DataAccess.Dto;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Dlhis.Basic.Dishes.Controller;
+
+///
+/// 菜单菜品控制器
+///
+[Authorize]
+[Route("api/[controller]")]
+[ApiController]
+public class DishesMenusController : ControllerBase
+{
+ private readonly IDishesMenuService _dishesMenuService;
+ private readonly IDishesService _dishesService;
+
+ public DishesMenusController(IDishesMenuService dishesMenuService, IDishesService dishesService)
+ {
+ _dishesMenuService = dishesMenuService;
+ _dishesService = dishesService;
+ }
+
+ ///
+ /// 菜单分页
+ ///
+ ///
+ ///
+ [HttpGet("page")]
+ public async Task> GetDishesMenuPageAsync([FromQuery] DisheMenuPageRequest request)
+ {
+ return await _dishesMenuService.GetDishesMenuPageAsync(request);
+ }
+
+ ///
+ /// 菜单保存/更改
+ ///
+ ///
+ ///
+ [HttpPost("save")]
+ [Transactional]
+ public async Task SaveDishesMenuAsync(DishesMenuSaveRequest request)
+ {
+ await _dishesMenuService.SaveDishesMenuAsync(request);
+ }
+
+ ///
+ /// 菜单明细
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ [HttpGet("detail")]
+ public async Task GetBookingDishesDetailAsync(DateTime date, Guid businessPlaceCode, ShiftEnumType shiftType, string dishesCode)
+ {
+ return await _dishesMenuService.GetBookingDishesDetailAsync(date, businessPlaceCode, shiftType, dishesCode);
+ }
+
+ ///
+ /// 菜品分页
+ ///
+ ///
+ ///
+ [HttpGet("dishes/page")]
+ public async Task> GetDishesAsync([FromQuery] DishesPageRequest request)
+ {
+ return await _dishesService.GetDishesPageAsync(request);
+ }
+
+ ///
+ /// 菜品保存/更改
+ ///
+ ///
+ ///
+ [HttpPost("dishes/save")]
+ public async Task SaveDishesAsync(DishesSaveRequest request)
+ {
+ await _dishesService.SaveDishesAsync(request);
+ }
+
+ ///
+ /// 根据id获取菜品详情
+ ///
+ ///
+ ///
+ [HttpGet("dishes/detail/{id}")]
+ public async Task GetDishesDetailByIdAsync(long id)
+ {
+ return await _dishesService.GetDishesDetailByIdAsync(id);
+ }
+
+
+ ///
+ /// 获取预定送餐配置
+ ///
+ ///
+ [HttpGet("setting")]
+ public async Task GetDishesMenusBookingSetting([FromQuery] GetDishesMenusBookingRequest request)
+ {
+ return await _dishesService.GetDishesMenusBookingSetting(request);
+ }
+}
+
diff --git a/Src/Dlhis.Basic/Dishes/Dto/DishesMenuDetailDto.cs b/Src/Dlhis.Basic/Dishes/Dto/DishesMenuDetailDto.cs
new file mode 100644
index 00000000..d21e2ca9
--- /dev/null
+++ b/Src/Dlhis.Basic/Dishes/Dto/DishesMenuDetailDto.cs
@@ -0,0 +1,20 @@
+namespace Dlhis.Basic.Dishes.Dto;
+
+public class DishesMenuDetailDto
+{
+ public DateTime Date { get; set; }
+
+ public long MenuId { get; set; }
+
+ public long DishesId { get; set; }
+
+ public string DishesCode { get; set; }
+
+ public string DishesName { get; set; }
+
+ public decimal Price { get; set; }
+
+ public int Number { get; set; }
+
+ public int Version { get; set; }
+}
diff --git a/Src/Dlhis.Basic/Dishes/Request/DisheMenuPageRequest.cs b/Src/Dlhis.Basic/Dishes/Request/DisheMenuPageRequest.cs
new file mode 100644
index 00000000..4494f433
--- /dev/null
+++ b/Src/Dlhis.Basic/Dishes/Request/DisheMenuPageRequest.cs
@@ -0,0 +1,22 @@
+using Dlhis.Entity.Canteen.Enums;
+using Kurisu.Core.DataAccess.Dto;
+
+namespace Dlhis.Basic.Dishes.Request;
+
+public class DisheMenuPageRequest : PageDto
+{
+ ///
+ /// 营业点code
+ ///
+ public Guid BusinessPlaceCode { get; set; }
+
+ ///
+ /// 餐次
+ ///
+ public List ShiftTypes { get; set; }
+
+ ///
+ /// 分类
+ ///
+ public Guid? CategoryCode { get; set; }
+}
diff --git a/Src/Dlhis.Basic/Dishes/Request/DishesCategorySaveRequest.cs b/Src/Dlhis.Basic/Dishes/Request/DishesCategorySaveRequest.cs
new file mode 100644
index 00000000..80582418
--- /dev/null
+++ b/Src/Dlhis.Basic/Dishes/Request/DishesCategorySaveRequest.cs
@@ -0,0 +1,24 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace Dlhis.Basic.Dishes.Request;
+
+public class DishesCategorySaveRequest
+{
+ public long? Id { get; set; }
+
+ ///
+ /// PCode
+ ///
+ public Guid? PCode { get; set; }
+
+ ///
+ /// 分类名称
+ ///
+ [Required]
+ public string Name { get; set; }
+
+ ///
+ /// 序号
+ ///
+ public int Sequence { get; set; } = 100;
+}
diff --git a/Src/Dlhis.Basic/Dishes/Request/DishesMenuNameDateSaveRequest.cs b/Src/Dlhis.Basic/Dishes/Request/DishesMenuNameDateSaveRequest.cs
new file mode 100644
index 00000000..54b3bb35
--- /dev/null
+++ b/Src/Dlhis.Basic/Dishes/Request/DishesMenuNameDateSaveRequest.cs
@@ -0,0 +1,39 @@
+using System.ComponentModel.DataAnnotations;
+using Kurisu.AspNetCore.Utils.Extensions;
+
+namespace Dlhis.Basic.Dishes.Request;
+
+public class DishesMenuNameDateSaveRequest : IValidatableObject
+{
+ ///
+ /// 菜单编码
+ ///
+ public string CustomCode { get; set; }
+
+ ///
+ /// 菜单日期
+ ///
+ public DateTime Date { get; set; }
+
+ ///
+ /// 餐次数据
+ ///
+ public List ShiftTypes { get; set; }
+
+
+ public IEnumerable Validate(ValidationContext validationContext)
+ {
+ if (Date < DateTime.Today)
+ {
+ yield return new ValidationResult("菜单日期不能小于当天");
+ }
+
+ //格式化
+ Date = Date.Date;
+
+ if (CustomCode.IsEmpty())
+ {
+ CustomCode = Date.ToString("yyyy-MM-dd");
+ }
+ }
+}
diff --git a/Src/Dlhis.Basic/Dishes/Request/DishesMenuSaveRequest.cs b/Src/Dlhis.Basic/Dishes/Request/DishesMenuSaveRequest.cs
new file mode 100644
index 00000000..bbece19f
--- /dev/null
+++ b/Src/Dlhis.Basic/Dishes/Request/DishesMenuSaveRequest.cs
@@ -0,0 +1,18 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace Dlhis.Basic.Dishes.Request;
+
+public class DishesMenuSaveRequest : IValidatableObject
+{
+ ///
+ /// 营业点code
+ ///
+ public Guid BusinessPlaceCode { get; set; }
+
+ public List Items { get; set; }
+
+ public IEnumerable Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+}
diff --git a/Src/Dlhis.Basic/Dishes/Request/DishesMenuShiftTypeSaveRequest.cs b/Src/Dlhis.Basic/Dishes/Request/DishesMenuShiftTypeSaveRequest.cs
new file mode 100644
index 00000000..e76681b3
--- /dev/null
+++ b/Src/Dlhis.Basic/Dishes/Request/DishesMenuShiftTypeSaveRequest.cs
@@ -0,0 +1,18 @@
+using System.ComponentModel.DataAnnotations;
+using Dlhis.Entity.Canteen.Enums;
+
+namespace Dlhis.Basic.Dishes.Request;
+
+public class DishesMenuShiftTypeSaveRequest
+{
+ ///
+ /// 餐次段
+ ///
+ [EnumDataType(typeof(ShiftEnumType))]
+ public ShiftEnumType ShiftType { get; set; }
+
+ ///
+ /// 菜品
+ ///
+ public List Dishes { get; set; }
+}
diff --git a/Src/Dlhis.Basic/Dishes/Request/DishesPageRequest.cs b/Src/Dlhis.Basic/Dishes/Request/DishesPageRequest.cs
new file mode 100644
index 00000000..eb9eac9a
--- /dev/null
+++ b/Src/Dlhis.Basic/Dishes/Request/DishesPageRequest.cs
@@ -0,0 +1,11 @@
+using Kurisu.Core.DataAccess.Dto;
+
+namespace Dlhis.Basic.Dishes.Request;
+
+public class DishesPageRequest : PageDto
+{
+ ///
+ /// 营业点
+ ///
+ public List BusinessPlaceCodes { get; set; }
+}
diff --git a/Src/Dlhis.Basic/Dishes/Request/DishesSaveRequest.cs b/Src/Dlhis.Basic/Dishes/Request/DishesSaveRequest.cs
new file mode 100644
index 00000000..6fb0e1b3
--- /dev/null
+++ b/Src/Dlhis.Basic/Dishes/Request/DishesSaveRequest.cs
@@ -0,0 +1,59 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace Dlhis.Basic.Dishes.Request;
+
+public class DishesSaveRequest
+{
+ public long? Id { get; set; }
+
+ ///
+ /// 分类
+ ///
+ [Required]
+ public Guid CategoryCode { get; set; }
+
+ ///
+ /// 营业点
+ ///
+ [Required]
+ public Guid BusinessPlaceCode { get; set; }
+
+ ///
+ /// 菜品名称
+ ///
+ [Required]
+ public string Name { get; set; }
+
+ ///
+ /// 菜单编码
+ ///
+ [Required]
+ public string CustomCode { get; set; }
+
+ ///
+ /// 描述
+ ///
+ public string Description { get; set; }
+
+ ///
+ /// 单价
+ ///
+ [Range(0, 10000)]
+ public decimal Price { get; set; }
+
+ ///
+ /// 图片
+ ///
+ public string ImageUrl { get; set; }
+
+ ///
+ /// 单位
+ ///
+ [MinLength(1)]
+ public List Units { get; set; }
+
+ ///
+ /// 是否启用
+ ///
+ public bool Enable { get; set; }
+}
diff --git a/Src/Dlhis.Basic/Dishes/Request/GetDishesMenusBookingRequest.cs b/Src/Dlhis.Basic/Dishes/Request/GetDishesMenusBookingRequest.cs
new file mode 100644
index 00000000..af71ee69
--- /dev/null
+++ b/Src/Dlhis.Basic/Dishes/Request/GetDishesMenusBookingRequest.cs
@@ -0,0 +1,9 @@
+namespace Dlhis.Basic.Dishes.Request
+{
+ public class GetDishesMenusBookingRequest
+ {
+ public Guid PlaceCode { get; set; }
+
+ public string Factory { get; set; }
+ }
+}
diff --git a/Src/Dlhis.Basic/Dishes/Request/MenuDishesSaveRequest.cs b/Src/Dlhis.Basic/Dishes/Request/MenuDishesSaveRequest.cs
new file mode 100644
index 00000000..601c9aaa
--- /dev/null
+++ b/Src/Dlhis.Basic/Dishes/Request/MenuDishesSaveRequest.cs
@@ -0,0 +1,24 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace Dlhis.Basic.Dishes.Request;
+
+public class MenuDishesSaveRequest
+{
+ ///
+ /// 菜品编码
+ ///
+ [Required]
+ public string DishesCode { get; set; }
+
+ ///
+ /// 菜单价
+ ///
+ [Range(0, double.MaxValue)]
+ public decimal? Price { get; set; }
+
+ ///
+ /// 售额
+ ///
+ [Range(0, int.MaxValue)]
+ public int Number { get; set; }
+}
diff --git a/Src/Dlhis.Basic/Dishes/Response/BalanceRecordSourceEnumDto.cs b/Src/Dlhis.Basic/Dishes/Response/BalanceRecordSourceEnumDto.cs
new file mode 100644
index 00000000..9740a562
--- /dev/null
+++ b/Src/Dlhis.Basic/Dishes/Response/BalanceRecordSourceEnumDto.cs
@@ -0,0 +1,11 @@
+using Dlhis.Entity.Canteen.Enums;
+using Kurisu.AspNetCore.Utils.Extensions;
+
+namespace Dlhis.Basic.Dishes.Response
+{
+ public class BalanceRecordSourceEnumDto
+ {
+ public BalanceRecordSourceEnumType Type { get; set; }
+ public string TypeCN => Type.GetDescription();
+ }
+}
diff --git a/Src/Dlhis.Basic/Dishes/Response/BusinessShiftMealRelationshipResponse.cs b/Src/Dlhis.Basic/Dishes/Response/BusinessShiftMealRelationshipResponse.cs
new file mode 100644
index 00000000..1c40fc37
--- /dev/null
+++ b/Src/Dlhis.Basic/Dishes/Response/BusinessShiftMealRelationshipResponse.cs
@@ -0,0 +1,29 @@
+using Dlhis.Entity.Canteen.Enums;
+using Kurisu.AspNetCore.Utils.Extensions;
+
+namespace Dlhis.Basic.Dishes.Response
+{
+ public class BusinessShiftMealRelationshipResponse
+ {
+ ///
+ /// 餐别Code
+ ///
+ public Guid ShiftCode { get; set; }
+
+ ///
+ /// 餐别手工号
+ ///
+ public string ShiftCustomCode { get; set; }
+
+ ///
+ /// 餐次
+ ///
+ public ShiftEnumType ShiftType { get; set; }
+
+ ///
+ /// 餐次CN
+ ///
+ public string ShiftTypeCN => ShiftType.GetDescription();
+
+ }
+}
diff --git a/Src/Dlhis.Basic/Dishes/Response/DishesCategoryResponse.cs b/Src/Dlhis.Basic/Dishes/Response/DishesCategoryResponse.cs
new file mode 100644
index 00000000..fdaca520
--- /dev/null
+++ b/Src/Dlhis.Basic/Dishes/Response/DishesCategoryResponse.cs
@@ -0,0 +1,15 @@
+namespace Dlhis.Basic.Dishes.Response;
+
+public class DishesCategoryTreeResponse
+{
+ public Guid? PCode { get; set; }
+
+ public Guid Code { get; set; }
+
+ ///
+ /// 分类名称
+ ///
+ public string Name { get; set; }
+
+ public List Next { get; set; }
+}
diff --git a/Src/Dlhis.Basic/Dishes/Response/DishesDetailResponse.cs b/Src/Dlhis.Basic/Dishes/Response/DishesDetailResponse.cs
new file mode 100644
index 00000000..ce412352
--- /dev/null
+++ b/Src/Dlhis.Basic/Dishes/Response/DishesDetailResponse.cs
@@ -0,0 +1,51 @@
+namespace Dlhis.Basic.Dishes.Response;
+
+public class DishesDetailResponse
+{
+ public long Id { get; set; }
+
+ ///
+ /// 分类
+ ///
+ public Guid CategoryCode { get; set; }
+
+ ///
+ /// 营业点
+ ///
+ public Guid BusinessPlaceCode { get; set; }
+
+ ///
+ /// 菜品编码
+ ///
+ public string CustomCode { get; set; }
+
+ ///
+ /// 菜品名称
+ ///
+ public string Name { get; set; }
+
+ ///
+ /// 描述
+ ///
+ public string Description { get; set; }
+
+ ///
+ /// 单价
+ ///
+ public decimal Price { get; set; }
+
+ ///
+ /// 单位
+ ///
+ public List Units { get; set; }
+
+ ///
+ /// 图片
+ ///
+ public string ImageUrl { get; set; }
+
+ ///
+ /// 是否启用
+ ///
+ public bool Enable { get; set; }
+}
diff --git a/Src/Dlhis.Basic/Dishes/Response/DishesMenuPageResponse.cs b/Src/Dlhis.Basic/Dishes/Response/DishesMenuPageResponse.cs
new file mode 100644
index 00000000..3ccf7192
--- /dev/null
+++ b/Src/Dlhis.Basic/Dishes/Response/DishesMenuPageResponse.cs
@@ -0,0 +1,51 @@
+using Dlhis.Entity.Canteen.Enums;
+
+namespace Dlhis.Basic.Dishes.Response;
+
+public class DishesMenuPageResponse
+{
+ public long? Id { get; set; }
+
+ ///
+ /// 菜单编码
+ ///
+ public string CustomCode { get; set; }
+
+ ///
+ /// 所属营业点
+ ///
+ public Guid BusinessPlaceCode { get; set; }
+
+ ///
+ /// 营业日期
+ ///
+ public DateTime Date { get; set; }
+
+
+ ///
+ /// 餐次
+ ///
+ public ShiftEnumType ShiftType { get; set; }
+
+
+ ///
+ /// 菜品编码
+ ///
+ public string DishesCode { get; set; }
+
+ ///
+ /// 剩余数量
+ ///
+ public int Number { get; set; }
+
+
+ ///
+ /// 单价
+ ///
+ public decimal? Price { get; set; }
+
+ ///
+ /// 是否启用
+ ///
+ public bool Enable { get; set; }
+}
diff --git a/Src/Dlhis.Basic/Dishes/Response/DishesResponse.cs b/Src/Dlhis.Basic/Dishes/Response/DishesResponse.cs
new file mode 100644
index 00000000..c2b58d8e
--- /dev/null
+++ b/Src/Dlhis.Basic/Dishes/Response/DishesResponse.cs
@@ -0,0 +1,60 @@
+using Kurisu.AspNetCore.Utils.Extensions;
+using Newtonsoft.Json;
+
+namespace Dlhis.Basic.Dishes.Response;
+
+public class DishesResponse
+{
+ ///
+ /// 分类
+ ///
+ public Guid CategoryCode { get; set; }
+
+ ///
+ /// 分类
+ ///
+ public string CategoryName { get; set; }
+
+ ///
+ /// 营业点
+ ///
+ public Guid BusinessPlaceCode { get; set; }
+
+ ///
+ /// 菜品编码
+ ///
+ public string CustomCode { get; set; }
+
+ ///
+ /// 菜品名称
+ ///
+ public string Name { get; set; }
+
+ ///
+ /// 描述
+ ///
+ public string Description { get; set; }
+
+ ///
+ /// 单价
+ ///
+ public decimal Price { get; set; }
+
+ ///
+ /// 单位
+ ///
+ public List Units => CurrnetUnits.ToObject>();
+
+ [JsonIgnore]
+ public string CurrnetUnits { get; set; }
+
+ ///
+ /// 图片
+ ///
+ public string ImageUrl { get; set; }
+
+ ///
+ /// 是否启用
+ ///
+ public bool Enable { get; set; }
+}
diff --git a/Src/Dlhis.Basic/Dishes/Response/GetDishesMenusBookingResponse.cs b/Src/Dlhis.Basic/Dishes/Response/GetDishesMenusBookingResponse.cs
new file mode 100644
index 00000000..5473a443
--- /dev/null
+++ b/Src/Dlhis.Basic/Dishes/Response/GetDishesMenusBookingResponse.cs
@@ -0,0 +1,15 @@
+using Dlhis.Entity.Canteen.Enums;
+using SqlSugar.DbConvert;
+using SqlSugar;
+
+namespace Dlhis.Basic.Dishes.Response
+{
+ public class GetDishesMenusBookingResponse
+ {
+ public List BusinessShiftMealRelationships { get; set; }
+
+ public DateTime ServiceTime { get; set; }
+
+ public List PayTypes { get; set; }
+ }
+}
diff --git a/Src/Dlhis.Basic/Dishes/Services/IDishesCategoryService.cs b/Src/Dlhis.Basic/Dishes/Services/IDishesCategoryService.cs
new file mode 100644
index 00000000..2164e5e0
--- /dev/null
+++ b/Src/Dlhis.Basic/Dishes/Services/IDishesCategoryService.cs
@@ -0,0 +1,11 @@
+using Dlhis.Basic.Dishes.Request;
+using Dlhis.Basic.Dishes.Response;
+
+namespace Dlhis.Basic.Dishes.Services;
+
+public interface IDishesCategoryService : IScopeDependency
+{
+ Task> TreeAsync();
+
+ Task SaveAsync(DishesCategorySaveRequest request);
+}
diff --git a/Src/Dlhis.Basic/Dishes/Services/IDishesMenuService.cs b/Src/Dlhis.Basic/Dishes/Services/IDishesMenuService.cs
new file mode 100644
index 00000000..87c38925
--- /dev/null
+++ b/Src/Dlhis.Basic/Dishes/Services/IDishesMenuService.cs
@@ -0,0 +1,16 @@
+using Dlhis.Entity.Canteen.Enums;
+using Kurisu.Core.DataAccess.Dto;
+using Dlhis.Basic.Dishes.Request;
+using Dlhis.Basic.Dishes.Dto;
+using Dlhis.Basic.Dishes.Response;
+
+namespace Dlhis.Basic.Dishes.Services;
+
+public interface IDishesMenuService : IScopeDependency
+{
+ Task> GetDishesMenuPageAsync(DisheMenuPageRequest request);
+
+ Task SaveDishesMenuAsync(DishesMenuSaveRequest request);
+
+ Task GetBookingDishesDetailAsync(DateTime date, Guid businessPlaceCode, ShiftEnumType shiftType, string dishesCode);
+}
diff --git a/Src/Dlhis.Basic/Dishes/Services/IDishesService.cs b/Src/Dlhis.Basic/Dishes/Services/IDishesService.cs
new file mode 100644
index 00000000..6d6830a9
--- /dev/null
+++ b/Src/Dlhis.Basic/Dishes/Services/IDishesService.cs
@@ -0,0 +1,17 @@
+using Dlhis.Basic.Dishes.Request;
+using Dlhis.Basic.Dishes.Response;
+using Kurisu.Core.DataAccess.Dto;
+
+namespace Dlhis.Basic.Dishes.Services;
+
+public interface IDishesService : IScopeDependency
+{
+ Task> GetDishesPageAsync(DishesPageRequest request);
+
+ Task SaveDishesAsync(DishesSaveRequest request);
+
+ Task GetDishesDetailByIdAsync(long id);
+
+ Task GetDishesMenusBookingSetting(GetDishesMenusBookingRequest request);
+
+}
diff --git a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesCategoryService.cs b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesCategoryService.cs
new file mode 100644
index 00000000..8fda1dc2
--- /dev/null
+++ b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesCategoryService.cs
@@ -0,0 +1,65 @@
+using Dlhis.Basic.Dishes.Request;
+using Dlhis.Basic.Dishes.Response;
+using Dlhis.Entity.Canteen.Entities;
+using Kurisu.AspNetCore.Utils.Extensions;
+using Kurisu.SqlSugar.Services;
+using Mapster;
+
+namespace Dlhis.Basic.Dishes.Services.Implements;
+
+public class DishesCategoryService : IDishesCategoryService
+{
+ private readonly IDbContext _dbContext;
+
+ public DishesCategoryService(IDbContext dbContext)
+ {
+ _dbContext = dbContext;
+ }
+
+ public async Task> TreeAsync()
+ {
+ var categories = await _dbContext.Queryable().Select().ToListAsync();
+ var tops = categories.Where(x => !x.PCode.HasValue).ToList();
+
+ tops.ForEach(x =>
+ {
+ RecursionGetNext(x, categories);
+ });
+
+ return tops;
+ }
+
+ public async Task SaveAsync(DishesCategorySaveRequest request)
+ {
+ if (!request.Id.HasValue)
+ {
+ var entity = request.Adapt();
+ entity.Code = Guid.NewGuid();
+ await _dbContext.InsertAsync(entity);
+ }
+ else
+ {
+ var entity = await _dbContext.Queryable().Where(x => x.Id == request.Id).FirstAsync();
+ entity.ThrowIfNull("分类不存在,无法更新");
+ request.Adapt(entity);
+
+ await _dbContext.UpdateAsync(entity);
+ }
+ }
+
+
+ //************************************************************************************************************************
+
+ private static void RecursionGetNext(DishesCategoryTreeResponse current, List data)
+ {
+ var next = data.Where(x => x.PCode == current.Code).ToList();
+ if (next.Any())
+ {
+ current.Next = next;
+ foreach (var item in next)
+ {
+ RecursionGetNext(item, data);
+ }
+ }
+ }
+}
diff --git a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs
new file mode 100644
index 00000000..69ef56fb
--- /dev/null
+++ b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs
@@ -0,0 +1,134 @@
+using Dlhis.Entity.Canteen.Entities;
+using Dlhis.Entity.Canteen.Enums;
+using Kurisu.AspNetCore.Utils.Extensions;
+using Kurisu.Core.DataAccess.Dto;
+using Kurisu.SqlSugar.Extensions;
+using Kurisu.SqlSugar.Services;
+using SqlSugar;
+using Dlhis.Basic.Dishes.Request;
+using Dlhis.Basic.Dishes.Response;
+using Dlhis.Basic.BusinessPlace.Services;
+using Dlhis.Basic.Dishes.Dto;
+
+namespace Dlhis.Basic.Dishes.Services.Implements;
+
+public class DishesMenuService : IDishesMenuService
+{
+ private readonly IDbContext _dbContext;
+ private readonly IBusinessPlacePermissionsService _businessPlacePermissionsService;
+
+ public DishesMenuService(IDbContext dbContext, IBusinessPlacePermissionsService businessPlacePermissionsService)
+ {
+ _dbContext = dbContext;
+ _businessPlacePermissionsService = businessPlacePermissionsService;
+ }
+
+ public async Task> GetDishesMenuPageAsync(DisheMenuPageRequest request)
+ {
+ return await _dbContext.Queryable()
+ .Select()
+ .ToPageListAsync(request);
+ }
+
+ public async Task SaveDishesMenuAsync(DishesMenuSaveRequest request)
+ {
+ //检验数据
+ CheckDuplicateData(request);
+
+ //检验权限
+ var res = await _businessPlacePermissionsService.GetMyAsync();
+ var myBps = res.dtos.Select(x => x.Code).ToList();
+
+ myBps.Contains(request.BusinessPlaceCode).ThrowIfFalse("非经营营业点,无法保存菜单");
+
+ var entities = request.Items.SelectMany(item =>
+ {
+ var customCode = item.CustomCode;
+ var date = item.Date;
+
+ return item.ShiftTypes.SelectMany(shiftTypeItem =>
+ {
+ var shiftType = shiftTypeItem.ShiftType;
+
+ return shiftTypeItem.Dishes.Select(dishesItem =>
+ {
+ var dishesCode = dishesItem.DishesCode;
+ var number = dishesItem.Number;
+ var price = dishesItem.Price;
+
+ return new DishesMenuEntity
+ {
+ BusinessPlaceCode = request.BusinessPlaceCode,
+ CustomCode = customCode,
+ Date = date,
+ ShiftType = shiftType,
+ DishesCode = dishesCode,
+ Number = number,
+ Price = price,
+
+ Type = CanteenApplicaitonTypeEnumType.Booking,
+ Version = 0,
+ Enable = true,
+ };
+ });
+ });
+ }).ToList();
+
+ var keys = entities.DistinctBy(x => new { x.Date, x.ShiftType }).Select(x => new { x.Date, x.ShiftType }).ToList();
+ var where = LinqExpressionExtension.False();
+ keys.ForEach(x =>
+ {
+ where = where.Or(item => item.Date == x.Date && item.ShiftType == x.ShiftType);
+ });
+
+ await _dbContext.Client.Deleteable().Where(where).ExecuteCommandAsync();
+ await _dbContext.InsertAsync(entities);
+ }
+
+
+
+ public async Task GetBookingDishesDetailAsync(DateTime date, Guid businessPlaceCode, ShiftEnumType shiftType, string dishesCode)
+ {
+ var detail = await _dbContext.Queryable()
+ .LeftJoin((x, d) => x.DishesCode == d.CustomCode)
+ .Where(x => x.Date == date)
+ .Where(x => x.BusinessPlaceCode == businessPlaceCode)
+ .Where(x => x.ShiftType == shiftType)
+ .Where(x => x.DishesCode == dishesCode)
+ .Where((x, d) => d.Enable)
+ .Select((x, d) => new DishesMenuDetailDto
+ {
+ Date = x.Date,
+ MenuId = x.Id,
+ DishesId = d.Id,
+ DishesCode = d.CustomCode,
+ DishesName = d.Name,
+ Price = x.Price == null || x.Price == 0 ? d.Price : x.Price.Value,
+ Number = x.Number,
+ Version = x.Version,
+ })
+ .SingleAsync();
+
+ return detail;
+ }
+
+ //*********************************************************help methods**********************************************************************
+
+ private static void CheckDuplicateData(DishesMenuSaveRequest request)
+ {
+ (request.Items.DistinctBy(x => new { x.CustomCode, x.Date }).Count() != request.Items.Count).ThrowIfTrue("菜单不可重复");
+
+ foreach (var item in request.Items)
+ {
+ var u = item.Date.ToString("yyyy-MM-dd") + "-" + item.CustomCode;
+
+ (item.ShiftTypes.DistinctBy(x => x.ShiftType).Count() != item.ShiftTypes.Count).ThrowIfTrue($"{u}的餐次不可重复添加");
+
+ foreach (var shiftTypeItem in item.ShiftTypes)
+ {
+ (shiftTypeItem.Dishes.DistinctBy(x => x.DishesCode).Count() != shiftTypeItem.Dishes.Count)
+ .ThrowIfTrue($"{u}的{shiftTypeItem.ShiftType.GetDescription()}下菜品不可重复");
+ }
+ }
+ }
+}
diff --git a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesService.cs b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesService.cs
new file mode 100644
index 00000000..79fc41d6
--- /dev/null
+++ b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesService.cs
@@ -0,0 +1,121 @@
+using Dlhis.Basic.Dishes.Request;
+using Dlhis.Basic.Dishes.Response;
+using Dlhis.Entity.Basic.Entity;
+using Dlhis.Entity.Canteen.Entities;
+using Dlhis.Entity.Canteen.Enums;
+using Kurisu.AspNetCore.Utils.Extensions;
+using Kurisu.Core.DataAccess.Dto;
+using Kurisu.SqlSugar.Extensions;
+using Kurisu.SqlSugar.Services;
+using Mapster;
+using System.Collections.Generic;
+using System.Globalization;
+
+namespace Dlhis.Basic.Dishes.Services.Implements;
+
+public class DishesService : IDishesService
+{
+ private readonly IDbContext _dbContext;
+ private readonly IConfiguration _configuration;
+
+ public DishesService(IDbContext dbContext, IConfiguration configuration)
+ {
+ _dbContext = dbContext;
+ _configuration = configuration;
+ }
+
+ public async Task> GetDishesPageAsync(DishesPageRequest request)
+ {
+ //todo 营业点权限
+
+ return await _dbContext.Queryable()
+ .LeftJoin((x, category) => x.CategoryCode == category.Code)
+ .WhereIF(request.Search.IsPresent(), x => x.CustomCode == request.Search || x.Name.Contains(request.Search))
+ .WhereIF(request.BusinessPlaceCodes.IsPresent(), x => request.BusinessPlaceCodes.Contains(x.BusinessPlaceCode))
+ .OrderBy(x => x.CreateTime, SqlSugar.OrderByType.Desc)
+ .Select((x, category) => new DishesResponse
+ {
+ CurrnetUnits = x.Units.ToString(),
+ CategoryName = category.Name,
+
+ }, true)
+ .ToPageListAsync(request);
+ }
+
+
+ public async Task SaveDishesAsync(DishesSaveRequest request)
+ {
+ if (!request.Id.HasValue)
+ {
+ var dishers = request.Adapt();
+ dishers.CustomCode = request.CustomCode;
+ await _dbContext.InsertAsync(dishers);
+ }
+ else
+ {
+ var entity = await _dbContext.Queryable().Where(x => x.Id == request.Id).FirstAsync();
+ entity.ThrowIfNull("菜品不存在,无法更新");
+
+ request.Adapt(entity);
+ await _dbContext.UpdateAsync(entity);
+ }
+ }
+
+ public async Task GetDishesMenusBookingSetting(GetDishesMenusBookingRequest request)
+ {
+ // 读取最晚订餐的时间
+ var strDatetime = await _dbContext.Queryable()
+ .Where(x => x.UniqueType == CanteenSettingUnqiueEnumType.Tenant && x.Item == CanteenSettingItemEnumType.BookingDeadline && x.Enable)
+ .Select(x => x.Value)
+ .FirstAsync();
+
+ DateTime dateTime;
+ DateTime.TryParseExact(strDatetime, "HH:mm:ss", null, System.Globalization.DateTimeStyles.None, out dateTime);
+
+ var res = new GetDishesMenusBookingResponse
+ {
+ ServiceTime = dateTime,
+ };
+
+ var shift = await _dbContext.Queryable()
+ .Where(x => x.PlaceCode == request.PlaceCode)
+ .FirstAsync();
+
+ var payTypes = new List();
+ var dto1 = new BalanceRecordSourceEnumDto
+ {
+ Type = BalanceRecordSourceEnumType.Cash
+ };
+ payTypes.Add(dto1);
+
+ if (shift != null)
+ {
+ var businessShiftMealRelationships = await _dbContext.Queryable()
+ .Where(x => x.ShiftCode == shift.ShiftCode)
+ .Select()
+ .ToListAsync();
+ res.BusinessShiftMealRelationships = businessShiftMealRelationships;
+
+ if (shift.TenantId == request.Factory)
+ {
+ var dto2 = new BalanceRecordSourceEnumDto
+ {
+ Type = BalanceRecordSourceEnumType.LocalTenantSubsidies
+ };
+ payTypes.Add(dto2);
+ }
+
+ }
+ res.PayTypes = payTypes;
+ return res;
+ }
+
+ public async Task GetDishesDetailByIdAsync(long id)
+ {
+ return await _dbContext.Queryable()
+ .Where(x => x.Id == id)
+ .Select()
+ .SingleAsync();
+ }
+}
+
diff --git a/Src/Dlhis.Basic/Organization/Response/DepartmentTreeResponse.cs b/Src/Dlhis.Basic/Organization/Response/DepartmentTreeResponse.cs
index 88aba019..b7cfe8fe 100644
--- a/Src/Dlhis.Basic/Organization/Response/DepartmentTreeResponse.cs
+++ b/Src/Dlhis.Basic/Organization/Response/DepartmentTreeResponse.cs
@@ -1,4 +1,5 @@
-using Newtonsoft.Json;
+using Kurisu.AspNetCore.Utils.Extensions;
+using Newtonsoft.Json;
namespace Dlhis.Basic.Organization.Response;
@@ -26,7 +27,7 @@ public class DepartmentTreeResponse
/// 下级部门
///
[JsonIgnore]
- public List _Next { get; set; } = new List();
+ public List CurrentNext { get; set; }
///
/// 下级部门
@@ -35,8 +36,12 @@ public class DepartmentTreeResponse
{
get
{
- _Next.ForEach(x => x.Tenant = Tenant);
- return _Next;
+ if (CurrentNext.IsPresent())
+ {
+ CurrentNext.ForEach(x => x.Tenant = Tenant);
+ }
+
+ return CurrentNext;
}
}
}
diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/DepartmentService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/DepartmentService.cs
index a7cfd72d..8a8a510b 100644
--- a/Src/Dlhis.Basic/Organization/Services/Implements/DepartmentService.cs
+++ b/Src/Dlhis.Basic/Organization/Services/Implements/DepartmentService.cs
@@ -37,7 +37,7 @@ public class DepartmentService : IDepartmentService
No = x.Code,
PNo = null,
Tenant = x.Code,
- _Next = tops.Select(item =>
+ CurrentNext = tops.Select(item =>
{
var i = item.Adapt();
i.PNo = x.Code;
@@ -48,13 +48,18 @@ public class DepartmentService : IDepartmentService
.ToList();
}
- private void RecursionGetNext(DepartmentTreeResponse current, List data)
+ //***************************************************** help methods ****************************************************************
+
+ private static void RecursionGetNext(DepartmentTreeResponse current, List data)
{
var next = data.Where(x => x.PNo == current.No).ToList();
- current._Next = next;
- foreach (var item in next)
+ if (next.Any())
{
- RecursionGetNext(item, data);
+ current.CurrentNext = next;
+ foreach (var item in next)
+ {
+ RecursionGetNext(item, data);
+ }
}
}
}
diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoPermissions.cs b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoPermissions.cs
index fd8dbe9d..2e6644c4 100644
--- a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoPermissions.cs
+++ b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoPermissions.cs
@@ -119,19 +119,19 @@ public class GainfoPermissions : IGainfoPermissions
var deviceUniqueNos = page.Select(x => x.UniqueNo).ToList();
var balanceInfos = await _dbContext.Queryable().Where(x => x.Type == BalanceRecordTypeEnumType.Out)
- .Where(x => deviceUniqueNos.Contains(x.DeviceInfo))
+ .Where(x => deviceUniqueNos.Contains(x.DeviceUniqueNo))
.Select(x => new
{
- x.DeviceInfo,
+ x.DeviceUniqueNo,
Amount = SqlFunc.AggregateSum(x.Amount),
UserCount = SqlFunc.AggregateDistinctCount(x.UserCode)
})
- .GroupBy(x => x.DeviceInfo)
+ .GroupBy(x => x.DeviceUniqueNo)
.ToListAsync();
page.ForEach(device =>
{
- var info = balanceInfos.FirstOrDefault(x => x.DeviceInfo == device.UniqueNo);
+ var info = balanceInfos.FirstOrDefault(x => x.DeviceUniqueNo == device.UniqueNo);
if (info != null)
{
device.Amount = info.Amount;
@@ -172,19 +172,19 @@ public class GainfoPermissions : IGainfoPermissions
var deviceUniqueNos = page.Data.Select(x => x.UniqueNo).ToList();
var balanceInfos = await _dbContext.Queryable().Where(x => x.Type == BalanceRecordTypeEnumType.Out)
- .Where(x => deviceUniqueNos.Contains(x.DeviceInfo))
+ .Where(x => deviceUniqueNos.Contains(x.DeviceUniqueNo))
.Select(x => new
{
- x.DeviceInfo,
+ x.DeviceUniqueNo,
Amount = SqlFunc.AggregateSum(x.Amount),
UserCount = SqlFunc.AggregateDistinctCount(x.UserCode)
})
- .GroupBy(x => x.DeviceInfo)
+ .GroupBy(x => x.DeviceUniqueNo)
.ToListAsync();
page.Data.ForEach(device =>
{
- var info = balanceInfos.FirstOrDefault(x => x.DeviceInfo == device.UniqueNo);
+ var info = balanceInfos.FirstOrDefault(x => x.DeviceUniqueNo == device.UniqueNo);
if (info != null)
{
device.Amount = info.Amount;
diff --git a/Src/Dlhis.Basic/appsettings.Development.json b/Src/Dlhis.Basic/appsettings.Development.json
index 7d904fe7..0701613f 100644
--- a/Src/Dlhis.Basic/appsettings.Development.json
+++ b/Src/Dlhis.Basic/appsettings.Development.json
@@ -5,6 +5,7 @@
"Microsoft.AspNetCore": "Warning"
}
},
+ "EightThirtyPM": "20:30:00",
"InternalRequest": {
"CommonRequestUrl": "http://localhost:5001",
"SysRequestUrl": "http://localhost:5003"
diff --git a/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs b/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs
index 796f8e44..317fbe83 100644
--- a/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs
+++ b/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs
@@ -1,4 +1,5 @@
-using Dlhis.Canteen.Order.Request;
+using Dlhis.Canteen.Dishes.Request;
+using Dlhis.Canteen.Order.Request;
using Dlhis.Canteen.Order.Response;
using Dlhis.Canteen.Order.Services;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop;
@@ -6,7 +7,7 @@ using Kurisu.Core.DataAccess.Dto;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
-namespace Dlhis.Canteen.Order.Controllers;
+namespace Dlhis.Canteen.Dishes.Controllers;
///
/// 充值/消费
diff --git a/Src/Dlhis.Canteen/Order/Controllers/MenuDishesController.cs b/Src/Dlhis.Canteen/Order/Controllers/MenuDishesController.cs
deleted file mode 100644
index b6ecc0d5..00000000
--- a/Src/Dlhis.Canteen/Order/Controllers/MenuDishesController.cs
+++ /dev/null
@@ -1,81 +0,0 @@
-using Dlhis.Canteen.Order.Request;
-using Dlhis.Canteen.Order.Response;
-using Dlhis.Canteen.Order.Services;
-using Kurisu.Core.DataAccess.Dto;
-using Microsoft.AspNetCore.Authorization;
-using Microsoft.AspNetCore.Http;
-using Microsoft.AspNetCore.Mvc;
-
-namespace Dlhis.Canteen.Order.Controllers;
-
-///
-/// 菜单菜品控制器
-///
-[Authorize]
-[Route("api/[controller]")]
-[ApiController]
-public class MenuDishesController : ControllerBase
-{
- private readonly IMenuDishesService _menuDishesService;
-
- public MenuDishesController(IMenuDishesService menuDishesService)
- {
- _menuDishesService = menuDishesService;
- }
-
- ///
- /// 菜单分页
- ///
- ///
- ///
- [HttpGet("pageMenu")]
- public async Task> GetMenuAsync([FromQuery]GetMenuRequest request)
- {
- return await _menuDishesService.GetMenuAsync(request);
- }
-
- ///
- /// 菜单保存/更改
- ///
- ///
- ///
- [HttpPost("saveMenu")]
- public async Task SaveMenuAsync(SaveMenuRequest request)
- {
- await _menuDishesService.SaveMenuAsync(request);
- }
-
- ///
- /// 菜品分页
- ///
- ///
- ///
- [HttpGet("pageDishes")]
- public async Task> GetDishesAsync([FromQuery] GetDishesRequest request)
- {
- return await _menuDishesService.GetDishesAsync(request);
- }
-
- ///
- /// 菜品保存/更改
- ///
- ///
- ///
- [HttpPost("saveDishes")]
- public async Task SaveDishesAsync(SaveDishesRequest request)
- {
- await _menuDishesService.SaveDishesAsync(request);
- }
-
- ///
- /// 配置每日菜单菜品及限售
- ///
- ///
- ///
- [HttpPost("disposition")]
- public async Task DispositionDishesAsync(DispositionDishesRequest request)
- {
- await _menuDishesService.DispositionDishesAsync(request);
- }
-}
-
diff --git a/Src/Dlhis.Canteen/Order/Controllers/MiniProgramOrderDetailController.cs b/Src/Dlhis.Canteen/Order/Controllers/MiniProgramOrderDetailController.cs
deleted file mode 100644
index e26efc4b..00000000
--- a/Src/Dlhis.Canteen/Order/Controllers/MiniProgramOrderDetailController.cs
+++ /dev/null
@@ -1,69 +0,0 @@
-using Dlhis.Canteen.Order.Request;
-using Dlhis.Canteen.Order.Response;
-using Dlhis.Canteen.Order.Services;
-using Kurisu.Core.DataAccess.Dto;
-using Microsoft.AspNetCore.Authorization;
-using Microsoft.AspNetCore.Http;
-using Microsoft.AspNetCore.Mvc;
-
-namespace Dlhis.Canteen.Order.Controllers;
-
-///
-///订单/明细控制器
-///
-[Authorize]
-[Route("api/[controller]")]
-[ApiController]
-public class MiniProgramOrderDetailController : ControllerBase
-{
- private readonly IMiniProgramOrderDetailService _miniProgramOrderDetailService;
-
- public MiniProgramOrderDetailController(IMiniProgramOrderDetailService miniProgramOrderDetailService)
- {
- _miniProgramOrderDetailService = miniProgramOrderDetailService;
- }
-
- ///
- /// 订单分页
- ///
- ///
- ///
- [HttpGet("pageOrder")]
- public async Task> GetMiniProgramOrderAsync([FromQuery]GetMiniProgramOrderRequest request)
- {
- return await _miniProgramOrderDetailService.GetMiniProgramOrderAsync(request);
- }
-
-
- ///
- /// 明细保存
- ///
- ///
- ///
- [HttpPost("saveDetail")]
- public async Task SaveDetailAsync(SaveDetailRequest request)
- {
- await _miniProgramOrderDetailService.SaveDetailAsync(request);
- }
-
- ///
- /// 明细分页
- ///
- ///
- ///
- [HttpGet("pageDetail")]
- public async Task> GetDetailAsync([FromQuery] GetDetailRequest request)
- {
- return await _miniProgramOrderDetailService.GetDetailAsync(request);
- }
-
- ///
- /// 下单
- ///
- ///
- [HttpPost("order")]
- public async Task OrderAsync(OrderRequest request)
- {
- await _miniProgramOrderDetailService.OrderAsync(request);
- }
-}
diff --git a/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs b/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs
index da3d8d38..9d0f7b96 100644
--- a/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs
+++ b/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs
@@ -1,11 +1,13 @@
-using Dlhis.Canteen.Order.Request;
+using Dlhis.Canteen.Dishes.Request;
+using Dlhis.Canteen.Order.Request;
using Dlhis.Canteen.Order.Response;
using Dlhis.Canteen.Order.Services;
+using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop;
using Kurisu.Core.DataAccess.Dto;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
-namespace Dlhis.Canteen.Order.Controllers;
+namespace Dlhis.Canteen.Dishes.Controllers;
///
/// 订单
@@ -44,4 +46,38 @@ public class OrdersController : ControllerBase
{
return await _orderService.AddAsync(request);
}
+
+ ///
+ /// 设备发起订单
+ ///
+ ///
+ ///
+ [HttpPost("device")]
+ [IgnoreTenant]
+ public async Task DeviceConsume(OrderAddRequest request)
+ {
+ return await _orderService.AddAsync(request);
+ }
+
+
+ ///
+ /// 订餐
+ ///
+ ///
+ [IgnoreTenant]
+ [HttpPost("booking")]
+ public async Task Booking(BookingMealRequest request)
+ {
+ await _orderService.Booking(request);
+ }
+
+ ///
+ /// 充值
+ ///
+ ///
+ [HttpPost("recharge")]
+ public async Task ReCharge()
+ {
+
+ }
}
diff --git a/Src/Dlhis.Canteen/Order/Filters/CheckUserDeviceConsumeAttribute.cs b/Src/Dlhis.Canteen/Order/Filters/CheckUserDeviceConsumeAttribute.cs
deleted file mode 100644
index 8f8cd8a8..00000000
--- a/Src/Dlhis.Canteen/Order/Filters/CheckUserDeviceConsumeAttribute.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-//using Microsoft.AspNetCore.Mvc.Filters;
-
-//namespace Dlhis.Canteen.Order.Filters;
-
-/////
-///// 检查用户设备消费
-/////
-//public class CheckUserDeviceConsumeAttribute : IAsyncActionFilter
-//{
-// public Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
-// {
-
-// }
-//}
diff --git a/Src/Dlhis.Canteen/Order/Request/BalanceRecordAnalysisRequest.cs b/Src/Dlhis.Canteen/Order/Request/BalanceRecordAnalysisRequest.cs
index ca02c0a9..9fe8e693 100644
--- a/Src/Dlhis.Canteen/Order/Request/BalanceRecordAnalysisRequest.cs
+++ b/Src/Dlhis.Canteen/Order/Request/BalanceRecordAnalysisRequest.cs
@@ -1,5 +1,4 @@
using Kurisu.Core.DataAccess.Dto;
-using SqlSugar;
namespace Dlhis.Canteen.Order.Request
{
diff --git a/Src/Dlhis.Canteen/Order/Request/BalanceRecordObsoluteRequest.cs b/Src/Dlhis.Canteen/Order/Request/BalanceRecordObsoluteRequest.cs
index aa9dba9b..955b7aaa 100644
--- a/Src/Dlhis.Canteen/Order/Request/BalanceRecordObsoluteRequest.cs
+++ b/Src/Dlhis.Canteen/Order/Request/BalanceRecordObsoluteRequest.cs
@@ -1,6 +1,6 @@
using System.ComponentModel.DataAnnotations;
-namespace Dlhis.Canteen.Order.Request;
+namespace Dlhis.Canteen.Dishes.Request;
public class BalanceRecordObsoluteRequest
{
diff --git a/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageByCostIdRequest.cs b/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageByCostIdRequest.cs
index c3660023..5ff829c8 100644
--- a/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageByCostIdRequest.cs
+++ b/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageByCostIdRequest.cs
@@ -1,7 +1,7 @@
using Kurisu.Core.DataAccess.Dto;
using System.ComponentModel.DataAnnotations;
-namespace Dlhis.Canteen.Order.Request
+namespace Dlhis.Canteen.Dishes.Request
{
public class BalanceRecordPageByCostIdRequest :PageDto
{
diff --git a/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageByDeviceUniqueNoRequest.cs b/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageByDeviceUniqueNoRequest.cs
index ef9f89d1..ff402cb9 100644
--- a/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageByDeviceUniqueNoRequest.cs
+++ b/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageByDeviceUniqueNoRequest.cs
@@ -1,7 +1,7 @@
using System.ComponentModel.DataAnnotations;
using Kurisu.Core.DataAccess.Dto;
-namespace Dlhis.Canteen.Order.Request;
+namespace Dlhis.Canteen.Dishes.Request;
public class BalanceRecordPageByDeviceUniqueNoRequest : PageDto
{
diff --git a/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageDetailsRequest.cs b/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageDetailsRequest.cs
index 781776a5..597babea 100644
--- a/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageDetailsRequest.cs
+++ b/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageDetailsRequest.cs
@@ -4,7 +4,7 @@ using SqlSugar;
using SqlSugar.DbConvert;
using System.ComponentModel.DataAnnotations;
-namespace Dlhis.Canteen.Order.Request
+namespace Dlhis.Canteen.Dishes.Request
{
public class BalanceRecordPageDetailsRequest : PageDto
{
diff --git a/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageRequest.cs b/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageRequest.cs
index a456f22a..aa6b048c 100644
--- a/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageRequest.cs
+++ b/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageRequest.cs
@@ -2,10 +2,8 @@
using System.ComponentModel.DataAnnotations;
using Kurisu.Core.DataAccess.Dto;
using Kurisu.Core.CustomClass;
-using SqlSugar.DbConvert;
-using SqlSugar;
-namespace Dlhis.Canteen.Order.Request;
+namespace Dlhis.Canteen.Dishes.Request;
public class BalanceRecordPageRequest : PageDto, IValidatableObject
{
@@ -17,7 +15,7 @@ public class BalanceRecordPageRequest : PageDto, IValidatableObject
///
/// 餐次
///
- public List ShiftTypes { get; set; }
+ public List ShiftTypes { get; set; }
///
/// 充值/消费
diff --git a/Src/Dlhis.Canteen/Order/Request/BalanceRecordSummaryRequest.cs b/Src/Dlhis.Canteen/Order/Request/BalanceRecordSummaryRequest.cs
index e0c54589..1bd4c913 100644
--- a/Src/Dlhis.Canteen/Order/Request/BalanceRecordSummaryRequest.cs
+++ b/Src/Dlhis.Canteen/Order/Request/BalanceRecordSummaryRequest.cs
@@ -1,7 +1,7 @@
using Kurisu.Core.DataAccess.Dto;
using System.ComponentModel.DataAnnotations;
-namespace Dlhis.Canteen.Order.Request
+namespace Dlhis.Canteen.Dishes.Request
{
public class BalanceRecordSummaryRequest : PageDto
{
diff --git a/Src/Dlhis.Canteen/Order/Request/BalanceRecordUserPageRequest.cs b/Src/Dlhis.Canteen/Order/Request/BalanceRecordUserPageRequest.cs
index aed5e86e..719f7e3f 100644
--- a/Src/Dlhis.Canteen/Order/Request/BalanceRecordUserPageRequest.cs
+++ b/Src/Dlhis.Canteen/Order/Request/BalanceRecordUserPageRequest.cs
@@ -3,7 +3,7 @@ using Kurisu.Core.CustomClass;
using System.ComponentModel.DataAnnotations;
using Kurisu.Core.DataAccess.Dto;
-namespace Dlhis.Canteen.Order.Request
+namespace Dlhis.Canteen.Dishes.Request
{
public class BalanceRecordUserPageRequest : PageDto, IValidatableObject
{
diff --git a/Src/Dlhis.Canteen/Order/Request/BookingMealRequest.cs b/Src/Dlhis.Canteen/Order/Request/BookingMealRequest.cs
new file mode 100644
index 00000000..9872a497
--- /dev/null
+++ b/Src/Dlhis.Canteen/Order/Request/BookingMealRequest.cs
@@ -0,0 +1,51 @@
+using System.ComponentModel.DataAnnotations;
+using Dlhis.Entity.Canteen.Enums;
+
+namespace Dlhis.Canteen.Dishes.Request;
+
+///
+/// 订餐请求
+///
+public class BookingMealRequest : IValidatableObject
+{
+ ///
+ /// 订餐的日期
+ ///
+ public DateTime BookingDate { get; set; }
+
+ ///
+ /// 营业点/消费地点
+ ///
+ public Guid BusinessPlaceCode { get; set; }
+
+ ///
+ /// 餐次
+ ///
+ [EnumDataType(typeof(ShiftEnumType))]
+ public ShiftEnumType ShiftType { get; set; }
+
+ ///
+ /// 菜品编码
+ ///
+ [Required(ErrorMessage = "选菜不能为空")]
+ public string DishesCode { get; set; }
+
+ ///
+ /// 消费来源
+ ///
+ [EnumDataType(typeof(BalanceRecordSourceEnumType))]
+ public BalanceRecordSourceEnumType Source { get; set; }
+
+
+ public IEnumerable Validate(ValidationContext validationContext)
+ {
+ BookingDate = BookingDate.Date;
+
+ if (DateTime.Now.Date >= BookingDate)
+ {
+ yield return new ValidationResult("订餐日期小于当天", new[] { nameof(BookingDate) });
+ }
+
+ yield break;
+ }
+}
diff --git a/Src/Dlhis.Canteen/Order/Request/ConsumeRequest.cs b/Src/Dlhis.Canteen/Order/Request/ConsumeRequest.cs
index 87159bb6..827f4ef7 100644
--- a/Src/Dlhis.Canteen/Order/Request/ConsumeRequest.cs
+++ b/Src/Dlhis.Canteen/Order/Request/ConsumeRequest.cs
@@ -1,6 +1,6 @@
using Dlhis.Entity.Canteen.Enums;
-namespace Dlhis.Canteen.Order.Request;
+namespace Dlhis.Canteen.Dishes.Request;
public class ConsumeRequest
{
diff --git a/Src/Dlhis.Canteen/Order/Request/ConsumptionTrendRequest.cs b/Src/Dlhis.Canteen/Order/Request/ConsumptionTrendRequest.cs
index 7f223506..d87a3ff3 100644
--- a/Src/Dlhis.Canteen/Order/Request/ConsumptionTrendRequest.cs
+++ b/Src/Dlhis.Canteen/Order/Request/ConsumptionTrendRequest.cs
@@ -1,7 +1,7 @@
using Dlhis.Entity.Canteen.Enums;
using System.ComponentModel.DataAnnotations;
-namespace Dlhis.Canteen.Order.Request
+namespace Dlhis.Canteen.Dishes.Request
{
public class ConsumptionTrendRequest
{
diff --git a/Src/Dlhis.Canteen/Order/Request/DispositionDeviceRequest.cs b/Src/Dlhis.Canteen/Order/Request/DispositionDeviceRequest.cs
deleted file mode 100644
index aa76e8c5..00000000
--- a/Src/Dlhis.Canteen/Order/Request/DispositionDeviceRequest.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-namespace Dlhis.Canteen.Order.Request
-{
- public class DispositionDeviceRequest
- {
- public string PlaceCode { get; set; }
-
- public List UniqueNos { get; set; }
- }
-}
diff --git a/Src/Dlhis.Canteen/Order/Request/DispositionDishesDto.cs b/Src/Dlhis.Canteen/Order/Request/DispositionDishesDto.cs
deleted file mode 100644
index 07863df5..00000000
--- a/Src/Dlhis.Canteen/Order/Request/DispositionDishesDto.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-namespace Dlhis.Canteen.Order.Request
-{
- public class DispositionDishesDto
- {
- public Guid DisherCode { get; set; }
-
- public int RestrictedNum { get; set; }
-
- }
-}
diff --git a/Src/Dlhis.Canteen/Order/Request/DispositionDishesRequest.cs b/Src/Dlhis.Canteen/Order/Request/DispositionDishesRequest.cs
deleted file mode 100644
index 070e8c42..00000000
--- a/Src/Dlhis.Canteen/Order/Request/DispositionDishesRequest.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-namespace Dlhis.Canteen.Order.Request
-{
- public class DispositionDishesRequest
- {
- public Guid MenudCode { get; set; }
-
- public List DishersDtos { get; set; }
-
- }
-}
diff --git a/Src/Dlhis.Canteen/Order/Request/GetConsumeDeviceRequest.cs b/Src/Dlhis.Canteen/Order/Request/GetConsumeDeviceRequest.cs
index ee74d2fb..03407004 100644
--- a/Src/Dlhis.Canteen/Order/Request/GetConsumeDeviceRequest.cs
+++ b/Src/Dlhis.Canteen/Order/Request/GetConsumeDeviceRequest.cs
@@ -1,9 +1,8 @@
using Kurisu.Core.DataAccess.Dto;
-namespace Dlhis.Canteen.Order.Request
+namespace Dlhis.Canteen.Dishes.Request;
+
+public class GetConsumeDeviceRequest : PageDto
{
- public class GetConsumeDeviceRequest : PageDto
- {
- public bool IsOff { get; set; }
- }
+ public bool IsOff { get; set; }
}
diff --git a/Src/Dlhis.Canteen/Order/Request/GetDetailRequest.cs b/Src/Dlhis.Canteen/Order/Request/GetDetailRequest.cs
deleted file mode 100644
index 797deff3..00000000
--- a/Src/Dlhis.Canteen/Order/Request/GetDetailRequest.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-using Kurisu.Core.DataAccess.Dto;
-
-namespace Dlhis.Canteen.Order.Request
-{
- public class GetDetailRequest : PageDto
- {
- }
-}
diff --git a/Src/Dlhis.Canteen/Order/Request/GetDishesRequest.cs b/Src/Dlhis.Canteen/Order/Request/GetDishesRequest.cs
deleted file mode 100644
index 6f741793..00000000
--- a/Src/Dlhis.Canteen/Order/Request/GetDishesRequest.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-using Kurisu.Core.DataAccess.Dto;
-
-namespace Dlhis.Canteen.Order.Request
-{
- public class GetDishesRequest : PageDto
- {
- public Guid? MenuCode { get; set; }
- }
-}
diff --git a/Src/Dlhis.Canteen/Order/Request/GetMenuRequest.cs b/Src/Dlhis.Canteen/Order/Request/GetMenuRequest.cs
deleted file mode 100644
index 8f9c6b55..00000000
--- a/Src/Dlhis.Canteen/Order/Request/GetMenuRequest.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using Kurisu.Core.DataAccess.Dto;
-
-namespace Dlhis.Canteen.Order.Request
-{
- public class GetMenuRequest : PageDto
- {
- public Guid? PlaceCode { get; set; }
-
- public string Factory { get; set; }
- }
-}
diff --git a/Src/Dlhis.Canteen/Order/Request/GetMiniProgramOrderRequest.cs b/Src/Dlhis.Canteen/Order/Request/GetMiniProgramOrderRequest.cs
deleted file mode 100644
index 98bdea14..00000000
--- a/Src/Dlhis.Canteen/Order/Request/GetMiniProgramOrderRequest.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-using Kurisu.Core.DataAccess.Dto;
-
-namespace Dlhis.Canteen.Order.Request
-{
- public class GetMiniProgramOrderRequest : PageDto
- {
- ///
- /// 用餐日期
- ///
- public DateOnly? SysDate { get; set; }
- }
-}
diff --git a/Src/Dlhis.Canteen/Order/Request/OaEMealVoucherDetailRequest.cs b/Src/Dlhis.Canteen/Order/Request/OaEMealVoucherDetailRequest.cs
index 1a4d504b..75ce0571 100644
--- a/Src/Dlhis.Canteen/Order/Request/OaEMealVoucherDetailRequest.cs
+++ b/Src/Dlhis.Canteen/Order/Request/OaEMealVoucherDetailRequest.cs
@@ -1,6 +1,6 @@
using Kurisu.Core.DataAccess.Dto;
-namespace Dlhis.Canteen.Order.Request
+namespace Dlhis.Canteen.Dishes.Request
{
public class OaEMealVoucherDetailRequest : PageDto
{
diff --git a/Src/Dlhis.Canteen/Order/Request/OaEMealVoucherRequest.cs b/Src/Dlhis.Canteen/Order/Request/OaEMealVoucherRequest.cs
index a77865a7..ae1ffa86 100644
--- a/Src/Dlhis.Canteen/Order/Request/OaEMealVoucherRequest.cs
+++ b/Src/Dlhis.Canteen/Order/Request/OaEMealVoucherRequest.cs
@@ -2,7 +2,7 @@
using Kurisu.Core.DataAccess.Dto;
using System.ComponentModel.DataAnnotations;
-namespace Dlhis.Canteen.Order.Request
+namespace Dlhis.Canteen.Dishes.Request
{
public class OaEMealVoucherRequest : PageDto
{
diff --git a/Src/Dlhis.Canteen/Order/Request/OrderPageRequest.cs b/Src/Dlhis.Canteen/Order/Request/OrderPageRequest.cs
index 95374cfa..ad268044 100644
--- a/Src/Dlhis.Canteen/Order/Request/OrderPageRequest.cs
+++ b/Src/Dlhis.Canteen/Order/Request/OrderPageRequest.cs
@@ -4,5 +4,5 @@ namespace Dlhis.Canteen.Order.Request;
public class OrderPageRequest : PageDto
{
-
+
}
diff --git a/Src/Dlhis.Canteen/Order/Request/OrderRequest.cs b/Src/Dlhis.Canteen/Order/Request/OrderRequest.cs
deleted file mode 100644
index 4d8b9cc2..00000000
--- a/Src/Dlhis.Canteen/Order/Request/OrderRequest.cs
+++ /dev/null
@@ -1,50 +0,0 @@
-using Dlhis.Entity.Canteen.Enums;
-using SqlSugar.DbConvert;
-using SqlSugar;
-
-namespace Dlhis.Canteen.Order.Request
-{
- public class OrderRequest
- {
-
- ///
- /// 订餐人
- ///
- public string UserCode { get; set; }
-
- ///
- /// 食堂
- ///
- public Guid PlaceCode { get; set; }
-
- ///
- /// 餐次
- ///
- public ShiftEnumType ShiftType { get; set; }
-
- ///
- /// 配送地址
- ///
- public string Address { get; set; }
-
- ///
- /// 菜单
- ///
- public Guid MenuCode { get; set; }
-
- ///
- /// 菜品
- ///
- public Guid DishesCode { get; set; }
-
- ///
- /// 数量
- ///
- public int DishesNum { get; set; } = 1;
-
- ///
- /// 支付方式
- ///
- public CanteenPayEnumType PayType { get; set; }
- }
-}
diff --git a/Src/Dlhis.Canteen/Order/Request/RechargeRequest.cs b/Src/Dlhis.Canteen/Order/Request/RechargeRequest.cs
index 0d4c8a7a..1c0c5063 100644
--- a/Src/Dlhis.Canteen/Order/Request/RechargeRequest.cs
+++ b/Src/Dlhis.Canteen/Order/Request/RechargeRequest.cs
@@ -1,7 +1,7 @@
using Dlhis.Entity.Canteen.Enums;
using System.ComponentModel.DataAnnotations;
-namespace Dlhis.Canteen.Order.Request;
+namespace Dlhis.Canteen.Dishes.Request;
public class RechargeRequest
{
diff --git a/Src/Dlhis.Canteen/Order/Request/SaveDishesRequest.cs b/Src/Dlhis.Canteen/Order/Request/SaveDishesRequest.cs
deleted file mode 100644
index f68b41e1..00000000
--- a/Src/Dlhis.Canteen/Order/Request/SaveDishesRequest.cs
+++ /dev/null
@@ -1,59 +0,0 @@
-using Dlhis.Entity.Canteen.Enums;
-using SqlSugar.DbConvert;
-using SqlSugar;
-using System.ComponentModel.DataAnnotations;
-
-namespace Dlhis.Canteen.Order.Request
-{
- public class SaveDishesRequest
- {
-
- public long? Id { get; set; }
-
- ///
- /// 大类
- ///
- public string Categories { get; set; }
-
- ///
- /// 小类
- ///
- public string SubCategories { get; set; }
-
- ///
- /// 菜品名称
- ///
- public string Name { get; set; }
-
- ///
- /// 类型
- ///
- [EnumDataType(typeof(CanteenDishesEnumType))]
- public CanteenDishesEnumType Type { get; set; }
-
- ///
- /// 描述
- ///
- public string Description { get; set; }
-
- ///
- /// 单价
- ///
- public decimal Amount { get; set; }
-
- ///
- /// 单位
- ///
- public string Unit { get; set; }
-
- ///
- /// 图片
- ///
- public string Image { get; set; }
-
- ///
- /// 是否启用
- ///
- public bool Enable { get; set; }
- }
-}
diff --git a/Src/Dlhis.Canteen/Order/Request/SaveMenuRequest.cs b/Src/Dlhis.Canteen/Order/Request/SaveMenuRequest.cs
deleted file mode 100644
index 76e7d66e..00000000
--- a/Src/Dlhis.Canteen/Order/Request/SaveMenuRequest.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-using Dlhis.Entity.Canteen.Enums;
-using Dlhis.Entity.Device.Enums;
-using SqlSugar;
-using System.ComponentModel.DataAnnotations;
-
-namespace Dlhis.Canteen.Order.Request
-{
- public class SaveMenuRequest
- {
- public long? Id { get; set; }
-
- ///
- /// 菜单名称
- ///
- public string Name { get; set; }
-
- ///
- /// 所属营业点
- ///
- [Required]
- public Guid PlaceCode { get; set; }
-
- ///
- /// 厂区
- ///
- public string Factory { get; set; }
-
- ///
- /// 营业日期
- ///
- public DateOnly StartDate { get; set; }
-
-
- ///
- /// 餐次段
- ///
- public List ShiftTypes { get; set; }
-
- ///
- /// 是否启用
- ///
- public bool Enable { get; set; }
- }
-}
diff --git a/Src/Dlhis.Canteen/Order/Request/SpendingDetailRequest.cs b/Src/Dlhis.Canteen/Order/Request/SpendingDetailRequest.cs
index fcdcff5f..497fe859 100644
--- a/Src/Dlhis.Canteen/Order/Request/SpendingDetailRequest.cs
+++ b/Src/Dlhis.Canteen/Order/Request/SpendingDetailRequest.cs
@@ -2,7 +2,7 @@
namespace Dlhis.Canteen.Order.Request
{
- public class SpendingDetailRequest:PageDto
+ public class SpendingDetailRequest : PageDto
{
}
}
diff --git a/Src/Dlhis.Canteen/Order/Response/AverageDailyResponse.cs b/Src/Dlhis.Canteen/Order/Response/AverageDailyResponse.cs
index 92541825..e16606a0 100644
--- a/Src/Dlhis.Canteen/Order/Response/AverageDailyResponse.cs
+++ b/Src/Dlhis.Canteen/Order/Response/AverageDailyResponse.cs
@@ -1,25 +1,24 @@
-namespace Dlhis.Canteen.Order.Response
+namespace Dlhis.Canteen.Order.Response;
+
+public class AverageDailyResponse
{
- public class AverageDailyResponse
- {
- ///
- /// 档案号/QRCode
- ///
- public string UserNo { get; set; }
+ ///
+ /// 档案号/QRCode
+ ///
+ public string UserNo { get; set; }
- ///
- /// 姓名
- ///
- public string Name { get; set; }
+ ///
+ /// 姓名
+ ///
+ public string Name { get; set; }
- ///
- /// 学工号
- ///
- public string UserCode { get; set; }
+ ///
+ /// 学工号
+ ///
+ public string UserCode { get; set; }
- ///
- /// 日消费均额
- ///
- public int AverageAmount { get; set; }
- }
+ ///
+ /// 日消费均额
+ ///
+ public int AverageAmount { get; set; }
}
diff --git a/Src/Dlhis.Canteen/Order/Response/BalanceRecordAnalysisRespones.cs b/Src/Dlhis.Canteen/Order/Response/BalanceRecordAnalysisRespones.cs
index 885c9684..e9e6ccb6 100644
--- a/Src/Dlhis.Canteen/Order/Response/BalanceRecordAnalysisRespones.cs
+++ b/Src/Dlhis.Canteen/Order/Response/BalanceRecordAnalysisRespones.cs
@@ -1,6 +1,4 @@
-using SqlSugar;
-
-namespace Dlhis.Canteen.Order.Response
+namespace Dlhis.Canteen.Order.Response
{
public class BalanceRecordAnalysisRespones
{
diff --git a/Src/Dlhis.Canteen/Order/Response/GetDetailResponse.cs b/Src/Dlhis.Canteen/Order/Response/GetDetailResponse.cs
index 1b78423e..956a1ac6 100644
--- a/Src/Dlhis.Canteen/Order/Response/GetDetailResponse.cs
+++ b/Src/Dlhis.Canteen/Order/Response/GetDetailResponse.cs
@@ -1,71 +1,67 @@
using Dlhis.Entity.Canteen.Enums;
-using SqlSugar.DbConvert;
-using SqlSugar;
using Kurisu.AspNetCore.Utils.Extensions;
-namespace Dlhis.Canteen.Order.Response
+namespace Dlhis.Canteen.Order.Response;
+
+public class GetDetailResponse
{
- public class GetDetailResponse
- {
- ///
- /// 订单号
- ///
- public string ThirdNo { get; set; }
+ ///
+ /// 订单号
+ ///
+ public string ThirdNo { get; set; }
- ///
- /// 营业日
- ///
- public DateOnly BusinessDate { get; set; }
+ ///
+ /// 营业日
+ ///
+ public DateOnly SysDate { get; set; }
- ///
- /// 餐次
- ///
- public ShiftEnumType ShiftType { get; set; }
+ ///
+ /// 餐次
+ ///
+ public ShiftEnumType ShiftType { get; set; }
- ///
- /// 餐次CN
- ///
- public string ShiftTypeCN => ShiftType.GetDescription();
+ ///
+ /// 餐次CN
+ ///
+ public string ShiftTypeCN => ShiftType.GetDescription();
- ///
- /// 菜品编码
- ///
- public Guid DishesCode { get; set; }
+ ///
+ /// 菜品编码
+ ///
+ public Guid DishesCode { get; set; }
- ///
- /// 菜品名称
- ///
- public string DishesName { get; set; }
+ ///
+ /// 菜品名称
+ ///
+ public string DishesName { get; set; }
- ///
- /// 单价
- ///
- public decimal Price { get; set; }
+ ///
+ /// 单价
+ ///
+ public decimal Price { get; set; }
- ///
- /// 单位
- ///
- public string Unit { get; set; }
+ ///
+ /// 单位
+ ///
+ public string Unit { get; set; }
- ///
- /// 数量
- ///
- public int Num { get; set; }
+ ///
+ /// 数量
+ ///
+ public int Num { get; set; }
- ///
- /// 金额
- ///
- public decimal Amount { get; set; }
+ ///
+ /// 金额
+ ///
+ public decimal Amount { get; set; }
- ///
- /// 订单明细状态
- ///
- public OrderDetailsStatusEnumType OrderStatus { get; set; }
-
- ///
- /// 订单明细状态CN
- ///
- public string OrderStatusCN => OrderStatus.GetDescription();
- }
+ ///
+ /// 订单明细状态
+ ///
+ public OrderDetailsStatusEnumType OrderStatus { get; set; }
+ ///
+ /// 订单明细状态CN
+ ///
+ public string OrderStatusCN => OrderStatus.GetDescription();
}
\ No newline at end of file
diff --git a/Src/Dlhis.Canteen/Order/Response/GetDishesResponse.cs b/Src/Dlhis.Canteen/Order/Response/GetDishesResponse.cs
deleted file mode 100644
index 4d149b01..00000000
--- a/Src/Dlhis.Canteen/Order/Response/GetDishesResponse.cs
+++ /dev/null
@@ -1,67 +0,0 @@
-using Dlhis.Entity.Canteen.Enums;
-using SqlSugar.DbConvert;
-using SqlSugar;
-using Kurisu.AspNetCore.Utils.Extensions;
-
-namespace Dlhis.Canteen.Order.Response
-{
- public class GetDishesResponse
- {
-
- ///
- /// 大类
- ///
- public string Categories { get; set; }
-
- ///
- /// 小类
- ///
- public string SubCategories { get; set; }
-
- ///
- /// 菜品编码
- ///
- public Guid Code { get; set; }
-
- ///
- /// 菜品名称
- ///
- public string Name { get; set; }
-
- ///
- /// 菜品类型
- ///
- public CanteenDishesEnumType Type { get; set; }
-
- ///
- /// 菜品类型描述
- ///
- public string TypeDescription => Type.GetDescription();
-
- ///
- /// 描述
- ///
- public string Description { get; set; }
-
- ///
- /// 单价
- ///
- public decimal Amount { get; set; }
-
- ///
- /// 单位
- ///
- public string Unit { get; set; }
-
-
- ///
- /// 图片
- ///
- public string Image { get; set; }
-
- ///
- /// 是否启用
- ///
- public bool Enable { get; set; }
- }
-}
diff --git a/Src/Dlhis.Canteen/Order/Response/GetMenuResponse.cs b/Src/Dlhis.Canteen/Order/Response/GetMenuResponse.cs
deleted file mode 100644
index 111e0ecb..00000000
--- a/Src/Dlhis.Canteen/Order/Response/GetMenuResponse.cs
+++ /dev/null
@@ -1,60 +0,0 @@
-using Dlhis.Entity.Canteen.Enums;
-using Kurisu.AspNetCore.Utils.Extensions;
-
-namespace Dlhis.Canteen.Order.Response
-{
- public class GetMenuResponse
- {
-
- ///
- /// 菜单编码
- ///
- public Guid Code { get; set; }
-
- ///
- /// 菜单名称
- ///
- public string Name { get; set; }
-
- ///
- /// 所属营业点
- ///
- public Guid PlaceCode { get; set; }
-
- ///
- /// 所属营业点名称
- ///
- public string PlaceName { get; set; }
-
- ///
- /// 厂区
- ///
- public string Factory { get; set; }
-
- ///
- /// 营业日期
- ///
- public DateOnly StartDate { get; set; }
-
-
- ///
- /// 餐次段
- ///
- public List ShiftTypes
- {
- get
- {
- if (ShiftTypesSrt.IsEmpty()) ShiftTypesSrt = "[]";
-
- return ShiftTypesSrt.ToObject>();
- }
- }
-
- public string ShiftTypesSrt { get; set; }
-
- ///
- /// 是否启用
- ///
- public bool Enable { get; set; }
- }
-}
diff --git a/Src/Dlhis.Canteen/Order/Response/GetMiniProgramOrderResponse.cs b/Src/Dlhis.Canteen/Order/Response/GetMiniProgramOrderResponse.cs
deleted file mode 100644
index 5fcd6a2b..00000000
--- a/Src/Dlhis.Canteen/Order/Response/GetMiniProgramOrderResponse.cs
+++ /dev/null
@@ -1,136 +0,0 @@
-using Dlhis.Entity.Canteen.Enums;
-using SqlSugar.DbConvert;
-using SqlSugar;
-using Kurisu.AspNetCore.Utils.Extensions;
-
-namespace Dlhis.Canteen.Order.Response
-{
- public class GetMiniProgramOrderResponse
- {
- ///
- /// 订单号
- ///
- public string No { get; set; }
-
- ///
- /// 姓名
- ///
- public string Name { get; set; }
-
- ///
- /// 工号
- ///
- public string Code { get; set; }
-
- ///
- /// 人事范围
- ///
- public string Werks { get; set; }
-
- ///
- /// 部门编码
- ///
- public string DepartmentNo { get; set; }
-
- ///
- /// 部门名称
- ///
- public string DepartmentName { get; set; }
-
- ///
- /// 成本中心
- ///
- public string CostId { get; set; }
-
- ///
- /// 工作地
- ///
- public string Workplace { get; set; }
-
- ///
- /// 厂区
- ///
- public string Factory { get; set; }
-
- ///
- /// 营业点
- ///
- public Guid PlaceCode { get; set; }
-
- ///
- /// 营业名称
- ///
- public string PlaceName { get; set; }
-
- ///
- /// 餐次
- ///
- public ShiftEnumType ShiftType { get; set; }
-
- ///
- /// 餐次CN
- ///
- public string ShiftTypeCN => ShiftType.GetDescription();
-
- ///
- /// 菜品
- ///
- public Guid DishesCode { get; set; }
-
- ///
- /// 菜品名称
- ///
- public string DishesName { get; set; }
-
- ///
- /// 手机号码
- ///
- public string Phone { get; set; }
-
- ///
- /// 用餐日期
- ///
- public DateOnly SysDate { get; set; }
-
- ///
- /// 下单时间
- ///
- public DateTime CostDate { get; set; }
-
- ///
- /// 支付方式
- ///
- public CanteenPayEnumType PayType { get; set; }
-
- ///
- /// 支付方式CN
- ///
- public string PayTypeCN => PayType.GetDescription();
-
- ///
- /// 订单状态
- ///
- public MiniProgramOrderStatusEnumType OrderStatus { get; set; }
-
- ///
- /// 订单状态CN
- ///
- public string OrderStatusCN => OrderStatus.GetDescription();
-
- ///
- /// 订单类型
- ///
- public CanteenDishesEnumType OrderType { get; set; }
-
- ///
- /// 订单类型CN
- ///
- public string OrderTypeCN => OrderType.GetDescription();
-
- ///
- /// 总金额
- ///
- public decimal TotalAmount { get; set; }
-
-}
-}
diff --git a/Src/Dlhis.Canteen/Order/Response/OaEMealVoucherResponse.cs b/Src/Dlhis.Canteen/Order/Response/OaEMealVoucherResponse.cs
index 32ceaeb3..d21260fd 100644
--- a/Src/Dlhis.Canteen/Order/Response/OaEMealVoucherResponse.cs
+++ b/Src/Dlhis.Canteen/Order/Response/OaEMealVoucherResponse.cs
@@ -1,100 +1,97 @@
-using SqlSugar;
+namespace Dlhis.Canteen.Order.Response;
-namespace Dlhis.Canteen.Order.Response
+public class OaEMealVoucherResponse
{
- public class OaEMealVoucherResponse
- {
- public long Id { get; set; }
+ public long Id { get; set; }
- ///
- /// 标题
- ///
- public string Title { get; set; }
+ ///
+ /// 标题
+ ///
+ public string Title { get; set; }
- ///
- /// 申请人工号
- ///
- public string UserCode { get; set; }
+ ///
+ /// 申请人工号
+ ///
+ public string UserCode { get; set; }
- ///
- /// 申请人名称
- ///
- public string Name { get; set; }
+ ///
+ /// 申请人名称
+ ///
+ public string Name { get; set; }
- ///
- /// 基地代码
- ///
- public string TenantId { get; set; }
+ ///
+ /// 基地代码
+ ///
+ public string TenantId { get; set; }
- ///
- /// 基地名称
- ///
- public string TenantName { get; set; }
+ ///
+ /// 基地名称
+ ///
+ public string TenantName { get; set; }
- ///
- /// 成本中心
- ///
- public string CostId { get; set; }
+ ///
+ /// 成本中心
+ ///
+ public string CostId { get; set; }
- ///
- /// 成本中心名称
- ///
- public string CostName { get; set; }
+ ///
+ /// 成本中心名称
+ ///
+ public string CostName { get; set; }
- ///
- /// 来宾公司
- ///
- public string Company { get; set; }
+ ///
+ /// 来宾公司
+ ///
+ public string Company { get; set; }
- ///
- /// 联系人
- ///
- public string Phone { get; set; }
+ ///
+ /// 联系人
+ ///
+ public string Phone { get; set; }
- ///
- /// 来宾人数
- ///
- public int Num { get; set; }
+ ///
+ /// 来宾人数
+ ///
+ public int Num { get; set; }
- ///
- /// 就餐食堂
- ///
- public string Canteen { get; set; }
+ ///
+ /// 就餐食堂
+ ///
+ public string Canteen { get; set; }
- ///
- /// 就餐事由
- ///
- public string Reason { get; set; }
+ ///
+ /// 就餐事由
+ ///
+ public string Reason { get; set; }
- ///
- /// 就餐次
- ///
- public string CanteenShift { get; set; }
+ ///
+ /// 就餐次
+ ///
+ public string CanteenShift { get; set; }
- ///
- /// oa流程id
- ///
- public string OaId { get; set; }
+ ///
+ /// oa流程id
+ ///
+ public string OaId { get; set; }
- ///
- /// 部门号
- ///
- public string DepartmentNo { get; set; }
+ ///
+ /// 部门号
+ ///
+ public string DepartmentNo { get; set; }
- ///
- /// 部门名称
- ///
- public string DepartmentName { get; set; }
+ ///
+ /// 部门名称
+ ///
+ public string DepartmentName { get; set; }
- ///
- /// 申请日期
- ///
- public DateTime LogDate { get; set; }
+ ///
+ /// 申请日期
+ ///
+ public DateTime LogDate { get; set; }
- ///
- /// 数据创建时间
- ///
- public DateTime CreateTime { get; set; }
- }
+ ///
+ /// 数据创建时间
+ ///
+ public DateTime CreateTime { get; set; }
}
diff --git a/Src/Dlhis.Canteen/Order/Response/SpendingDetailResponse.cs b/Src/Dlhis.Canteen/Order/Response/SpendingDetailResponse.cs
index 8ad95ac5..c81f720a 100644
--- a/Src/Dlhis.Canteen/Order/Response/SpendingDetailResponse.cs
+++ b/Src/Dlhis.Canteen/Order/Response/SpendingDetailResponse.cs
@@ -1,38 +1,35 @@
-using SqlSugar;
+namespace Dlhis.Canteen.Order.Response;
-namespace Dlhis.Canteen.Order.Response
+public class SpendingDetailResponse
{
- public class SpendingDetailResponse
- {
- ///
- /// 档案号/QRCode
- ///
- public string UserNo { get; set; }
+ ///
+ /// 档案号/QRCode
+ ///
+ public string UserNo { get; set; }
- ///
- /// 姓名
- ///
- public string Name { get; set; }
+ ///
+ /// 姓名
+ ///
+ public string Name { get; set; }
- ///
- /// 学工号
- ///
- public string UserCode { get; set; }
+ ///
+ /// 学工号
+ ///
+ public string UserCode { get; set; }
- ///
- /// 部门号
- ///
- public string DepartmentNo { get; set; }
+ ///
+ /// 部门号
+ ///
+ public string DepartmentNo { get; set; }
- ///
- /// 成本中心
- ///
- public string CostId { get; set; }
+ ///
+ /// 成本中心
+ ///
+ public string CostId { get; set; }
- ///
- /// 消费者所在基地
- ///
- public string OriginTenantId { get; set; }
+ ///
+ /// 消费者所在基地
+ ///
+ public string OriginTenantId { get; set; }
- }
}
diff --git a/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs b/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs
index d7d55ca4..dfe66e07 100644
--- a/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs
+++ b/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs
@@ -1,4 +1,5 @@
-using Dlhis.Canteen.Order.Request;
+using Dlhis.Canteen.Dishes.Request;
+using Dlhis.Canteen.Order.Request;
using Dlhis.Canteen.Order.Response;
using Kurisu.Core.DataAccess.Dto;
using Microsoft.AspNetCore.Mvc;
diff --git a/Src/Dlhis.Canteen/Order/Services/IMenuDishesService.cs b/Src/Dlhis.Canteen/Order/Services/IMenuDishesService.cs
deleted file mode 100644
index 020b5bed..00000000
--- a/Src/Dlhis.Canteen/Order/Services/IMenuDishesService.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using Dlhis.Canteen.Order.Request;
-using Dlhis.Canteen.Order.Response;
-using Kurisu.Core.DataAccess.Dto;
-using Microsoft.AspNetCore.Mvc;
-
-namespace Dlhis.Canteen.Order.Services
-{
- public interface IMenuDishesService :IScopeDependency
- {
- Task> GetMenuAsync(GetMenuRequest request);
-
- Task SaveMenuAsync(SaveMenuRequest request);
-
- Task> GetDishesAsync(GetDishesRequest request);
-
- Task SaveDishesAsync(SaveDishesRequest request);
-
- Task DispositionDishesAsync(DispositionDishesRequest request);
- }
-}
diff --git a/Src/Dlhis.Canteen/Order/Services/IMiniProgramOrderDetailService.cs b/Src/Dlhis.Canteen/Order/Services/IMiniProgramOrderDetailService.cs
deleted file mode 100644
index 7bb8394d..00000000
--- a/Src/Dlhis.Canteen/Order/Services/IMiniProgramOrderDetailService.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-using Dlhis.Canteen.Order.Request;
-using Dlhis.Canteen.Order.Response;
-using Kurisu.Core.DataAccess.Dto;
-using Microsoft.AspNetCore.Mvc;
-
-namespace Dlhis.Canteen.Order.Services
-{
- public interface IMiniProgramOrderDetailService : IScopeDependency
- {
- Task> GetMiniProgramOrderAsync(GetMiniProgramOrderRequest request);
-
- Task SaveDetailAsync(SaveDetailRequest request);
-
- Task> GetDetailAsync( GetDetailRequest request);
-
- Task OrderAsync(OrderRequest request);
- }
-}
diff --git a/Src/Dlhis.Canteen/Order/Services/IOrderService.cs b/Src/Dlhis.Canteen/Order/Services/IOrderService.cs
index d3bfb5d2..f78863cb 100644
--- a/Src/Dlhis.Canteen/Order/Services/IOrderService.cs
+++ b/Src/Dlhis.Canteen/Order/Services/IOrderService.cs
@@ -1,4 +1,5 @@
-using Dlhis.Canteen.Order.Request;
+using Dlhis.Canteen.Dishes.Request;
+using Dlhis.Canteen.Order.Request;
using Dlhis.Canteen.Order.Response;
using Kurisu.Core.DataAccess.Dto;
@@ -10,4 +11,17 @@ public interface IOrderService : IScopeDependency
Task AddAsync(OrderAddRequest request);
+ ///
+ /// 设备消费
+ ///
+ ///
+ ///
+ Task DeviceConsume(OrderAddRequest request);
+
+ ///
+ /// 订餐
+ ///
+ ///
+ ///
+ Task Booking(BookingMealRequest request);
}
diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs
index e5748cef..f216236b 100644
--- a/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs
+++ b/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs
@@ -1,4 +1,5 @@
-using Dlhis.Canteen.Order.Request;
+using Dlhis.Canteen.Dishes.Request;
+using Dlhis.Canteen.Order.Request;
using Dlhis.Canteen.Order.Response;
using Dlhis.Entity.Basic.Entity;
using Dlhis.Entity.Canteen.Entities;
@@ -9,12 +10,10 @@ using Dlhis.Sys.Api;
using Kurisu.AspNetCore.UnifyResultAndValidation;
using Kurisu.AspNetCore.Utils.Extensions;
using Kurisu.Core.DataAccess.Dto;
-using Kurisu.Core.DataAccess.Entity;
using Kurisu.Core.User.Abstractions;
using Kurisu.SqlSugar.Extensions;
using Kurisu.SqlSugar.Services;
using Mapster;
-using Microsoft.AspNetCore.Mvc;
using SqlSugar;
namespace Dlhis.Canteen.Order.Services.Implements;
@@ -26,7 +25,7 @@ public class BalanceService : IBalanceService
private readonly ILogger _logger;
private readonly ITenantApi _tenantApi;
- public BalanceService(IDbContext dbContext, ICurrentUser currentUser, ILogger logger ,ITenantApi tenantApi)
+ public BalanceService(IDbContext dbContext, ICurrentUser currentUser, ILogger logger, ITenantApi tenantApi)
{
_dbContext = dbContext;
_currentUser = currentUser;
@@ -41,18 +40,17 @@ public class BalanceService : IBalanceService
.LeftJoin((record, ga, department) => ga.DepartmentNo == department.No)
.LeftJoin((record, ga, department, bplace) => record.BusinessPlaceCode == bplace.Code)
.LeftJoin((record, ga, department, bplace, bshift) => record.BusinessShiftCode == bshift.Code)
- .LeftJoin((record, ga, department, bplace, bshift, type) => record.ShiftType == type.Code && type.Type == "mealshift")
.WhereIF(request.SearchDateTimePeriod?.Start.HasValue == true, record => record.CostDate >= request.SearchDateTimePeriod.Start)
.WhereIF(request.SearchDateTimePeriod?.End.HasValue == true, record => record.CostDate <= request.SearchDateTimePeriod.End)
.WhereIF(request.BusinessplaceCodes.IsPresent(), record => request.BusinessplaceCodes.Contains(record.BusinessPlaceCode))
.WhereIF(request.ShiftTypes.IsPresent(), record => request.ShiftTypes.Contains(record.ShiftType))
- .WhereIF(request.Type.HasValue,record => record.Type == request.Type)
+ .WhereIF(request.Type.HasValue, record => record.Type == request.Type)
.WhereIF(request.Search.IsPresent(), (record, ga) =>
ga.Name.Contains(request.Search)
|| ga.Code.Contains(request.Search)
)
.OrderBy(record => record.CreateTime, OrderByType.Desc)
- .Select((record, ga, department, bplace, bshift, type) => new BalanceRecordResponse
+ .Select((record, ga, department, bplace, bshift) => new BalanceRecordResponse
{
Id = record.Id,
Amount = record.Amount,
@@ -61,7 +59,7 @@ public class BalanceService : IBalanceService
CostDate = record.CostDate,
CostId = record.CostId,
DepartmentNo = record.DepartmentNo,
- DeviceInfo = record.DeviceInfo,
+ DeviceInfo = record.DeviceUniqueNo,
IP = record.IP,
UserNo = record.UserNo,
UserCode = record.UserCode,
@@ -75,7 +73,7 @@ public class BalanceService : IBalanceService
Name = record.Name,
DepartmentName = department.Name,
BusinessPlaceName = bplace.Name,
- BusinessShiftName = type.Display,
+ BusinessShiftName = bshift.Name,
CostDateTime = record.CostDateTime,
TenantId = record.TenantId,
})
@@ -109,8 +107,6 @@ public class BalanceService : IBalanceService
///
public async Task> RecordByCostIdAsync(BalanceRecordPageByCostIdRequest request)
{
- var shiftCodeDict = await GetShiftCode();
-
var paeginfos = await _dbContext.Queryable()
.WhereIF(!request.UserCode.IsEmpty(), record => record.UserCode == request.UserCode)
.WhereIF(!request.DepartmentNo.IsEmpty(), record => record.DepartmentNo == request.DepartmentNo)
@@ -132,24 +128,24 @@ public class BalanceService : IBalanceService
};
// 所有人次
- var BreakfastNumberOfPeople = costIdGroup.Count(x => x.ShiftType == shiftCodeDict["Breakfast"]);
+ var BreakfastNumberOfPeople = costIdGroup.Count(x => x.ShiftType == ShiftEnumType.Breakfast);
- var LunchNumberOfPeople = costIdGroup.Count(x => x.ShiftType == shiftCodeDict["Lunch"]);
+ var LunchNumberOfPeople = costIdGroup.Count(x => x.ShiftType == ShiftEnumType.Lunch);
- var DinnerNumberOfPeople = costIdGroup.Count(x => x.ShiftType == shiftCodeDict["Dinner"]);
+ var DinnerNumberOfPeople = costIdGroup.Count(x => x.ShiftType == ShiftEnumType.Dinner);
- var LateNightNumberOfPeople = costIdGroup.Count(x => x.ShiftType == shiftCodeDict["LateNight"]);
+ var LateNightNumberOfPeople = costIdGroup.Count(x => x.ShiftType == ShiftEnumType.Nightsnack);
// 每个餐次人数
- obj.BreakfastNumberOfPeople = costIdGroup.Where(x => x.ShiftType == shiftCodeDict["Breakfast"]).Select(x => x.UserNo).Distinct().Count();
- obj.LunchNumberOfPeople = costIdGroup.Where(x => x.ShiftType == shiftCodeDict["Lunch"]).Select(x => x.UserNo).Distinct().Count();
- obj.DinnerNumberOfPeople = costIdGroup.Where(x => x.ShiftType == shiftCodeDict["Dinner"]).Select(x => x.UserNo).Distinct().Count();
- obj.LateNightNumberOfPeople = costIdGroup.Where(x => x.ShiftType == shiftCodeDict["LateNight"]).Select(x => x.UserNo).Distinct().Count();
+ obj.BreakfastNumberOfPeople = costIdGroup.Where(x => x.ShiftType == ShiftEnumType.Breakfast).Select(x => x.UserNo).Distinct().Count();
+ obj.LunchNumberOfPeople = costIdGroup.Where(x => x.ShiftType == ShiftEnumType.Lunch).Select(x => x.UserNo).Distinct().Count();
+ obj.DinnerNumberOfPeople = costIdGroup.Where(x => x.ShiftType == ShiftEnumType.Dinner).Select(x => x.UserNo).Distinct().Count();
+ obj.LateNightNumberOfPeople = costIdGroup.Where(x => x.ShiftType == ShiftEnumType.Nightsnack).Select(x => x.UserNo).Distinct().Count();
//餐次金额
- obj.BreakfastAmount = Math.Abs(costIdGroup.Where(x => x.ShiftType == shiftCodeDict["Breakfast"]).Sum(x => x.Amount));
- obj.LunchAmount = Math.Abs(costIdGroup.Where(x => x.ShiftType == shiftCodeDict["Lunch"]).Sum(x => x.Amount));
- obj.DinnerAmount = Math.Abs(costIdGroup.Where(x => x.ShiftType == shiftCodeDict["Dinner"]).Sum(x => x.Amount));
- obj.LateNightAmount = Math.Abs(costIdGroup.Where(x => x.ShiftType == shiftCodeDict["LateNight"]).Sum(x => x.Amount));
+ obj.BreakfastAmount = Math.Abs(costIdGroup.Where(x => x.ShiftType == ShiftEnumType.Breakfast).Sum(x => x.Amount));
+ obj.LunchAmount = Math.Abs(costIdGroup.Where(x => x.ShiftType == ShiftEnumType.Lunch).Sum(x => x.Amount));
+ obj.DinnerAmount = Math.Abs(costIdGroup.Where(x => x.ShiftType == ShiftEnumType.Dinner).Sum(x => x.Amount));
+ obj.LateNightAmount = Math.Abs(costIdGroup.Where(x => x.ShiftType == ShiftEnumType.Nightsnack).Sum(x => x.Amount));
// 每个餐次单价
@@ -210,7 +206,7 @@ public class BalanceService : IBalanceService
CostDate = record.CostDate,
CostId = record.CostId,
DepartmentNo = record.DepartmentNo,
- DeviceInfo = record.DeviceInfo,
+ DeviceInfo = record.DeviceUniqueNo,
IP = record.IP,
UserNo = record.UserNo,
UserCode = record.UserCode,
@@ -242,8 +238,6 @@ public class BalanceService : IBalanceService
///
public async Task> BalanceRecordSummaryByNoAsync(BalanceRecordSummaryRequest request)
{
- var shiftCodeDict = await GetShiftCode();
-
var paeginfos = await _dbContext.Queryable()
.WhereIF(!request.DepartmentNo.IsEmpty(), record => record.DepartmentNo == request.DepartmentNo)
.WhereIF(!request.UserCode.IsEmpty(), record => record.UserCode == request.UserCode)
@@ -267,24 +261,24 @@ public class BalanceService : IBalanceService
OriginTenantId = ""
};
// 所有人次
- var BreakfastNumberOfPeople = departmentGroup.Count(x => x.ShiftType == shiftCodeDict["Breakfast"]);
+ var BreakfastNumberOfPeople = departmentGroup.Count(x => x.ShiftType == ShiftEnumType.Breakfast);
- var LunchNumberOfPeople = departmentGroup.Count(x => x.ShiftType == shiftCodeDict["Lunch"]);
+ var LunchNumberOfPeople = departmentGroup.Count(x => x.ShiftType == ShiftEnumType.Lunch);
- var DinnerNumberOfPeople = departmentGroup.Count(x => x.ShiftType == shiftCodeDict["Dinner"]);
+ var DinnerNumberOfPeople = departmentGroup.Count(x => x.ShiftType == ShiftEnumType.Dinner);
- var LateNightNumberOfPeople = departmentGroup.Count(x => x.ShiftType == shiftCodeDict["LateNight"]);
+ var LateNightNumberOfPeople = departmentGroup.Count(x => x.ShiftType == ShiftEnumType.Nightsnack);
//每个餐次人数
- obj.BreakfastNumberOfPeople = departmentGroup.Where(x => x.ShiftType == shiftCodeDict["Breakfast"]).Select(x => x.UserNo).Distinct().Count();
- obj.LunchNumberOfPeople = departmentGroup.Where(x => x.ShiftType == shiftCodeDict["Lunch"]).Select(x => x.UserNo).Distinct().Count();
- obj.DinnerNumberOfPeople = departmentGroup.Where(x => x.ShiftType == shiftCodeDict["Dinner"]).Select(x => x.UserNo).Distinct().Count();
- obj.LateNightNumberOfPeople = departmentGroup.Where(x => x.ShiftType == shiftCodeDict["LateNight"]).Select(x => x.UserNo).Distinct().Count();
+ obj.BreakfastNumberOfPeople = departmentGroup.Where(x => x.ShiftType == ShiftEnumType.Breakfast).Select(x => x.UserNo).Distinct().Count();
+ obj.LunchNumberOfPeople = departmentGroup.Where(x => x.ShiftType == ShiftEnumType.Lunch).Select(x => x.UserNo).Distinct().Count();
+ obj.DinnerNumberOfPeople = departmentGroup.Where(x => x.ShiftType == ShiftEnumType.Dinner).Select(x => x.UserNo).Distinct().Count();
+ obj.LateNightNumberOfPeople = departmentGroup.Where(x => x.ShiftType == ShiftEnumType.Nightsnack).Select(x => x.UserNo).Distinct().Count();
//餐次金额
- obj.BreakfastAmount = Math.Abs(departmentGroup.Where(x => x.ShiftType == shiftCodeDict["Breakfast"]).Sum(x => x.Amount));
- obj.LunchAmount = Math.Abs(departmentGroup.Where(x => x.ShiftType == shiftCodeDict["Lunch"]).Sum(x => x.Amount));
- obj.DinnerAmount = Math.Abs(departmentGroup.Where(x => x.ShiftType == shiftCodeDict["Dinner"]).Sum(x => x.Amount));
- obj.LateNightAmount = Math.Abs(departmentGroup.Where(x => x.ShiftType == shiftCodeDict["LateNight"]).Sum(x => x.Amount));
+ obj.BreakfastAmount = Math.Abs(departmentGroup.Where(x => x.ShiftType == ShiftEnumType.Breakfast).Sum(x => x.Amount));
+ obj.LunchAmount = Math.Abs(departmentGroup.Where(x => x.ShiftType == ShiftEnumType.Lunch).Sum(x => x.Amount));
+ obj.DinnerAmount = Math.Abs(departmentGroup.Where(x => x.ShiftType == ShiftEnumType.Dinner).Sum(x => x.Amount));
+ obj.LateNightAmount = Math.Abs(departmentGroup.Where(x => x.ShiftType == ShiftEnumType.Nightsnack).Sum(x => x.Amount));
// 每个餐次单价
obj.BreakfastPrice = BreakfastNumberOfPeople == 0 ? 0 : Math.Round(obj.BreakfastAmount / BreakfastNumberOfPeople, 2);
@@ -326,8 +320,6 @@ public class BalanceService : IBalanceService
///
public async Task> BalanceRecordSummaryByTidAsync(BalanceRecordSummaryRequest request)
{
- var shiftCodeDict = await GetShiftCode();
-
var paeginfos = await _dbContext.Queryable()
.WhereIF(!request.DepartmentNo.IsEmpty(), record => record.DepartmentNo == request.DepartmentNo)
.WhereIF(!request.UserCode.IsEmpty(), record => record.UserCode == request.UserCode)
@@ -352,24 +344,21 @@ public class BalanceService : IBalanceService
};
// 所有人次
- var BreakfastNumberOfPeople = originTenantIdGroup.Count(x => x.ShiftType == shiftCodeDict["Breakfast"]);
-
- var LunchNumberOfPeople = originTenantIdGroup.Count(x => x.ShiftType == shiftCodeDict["Lunch"]);
-
- var DinnerNumberOfPeople = originTenantIdGroup.Count(x => x.ShiftType == shiftCodeDict["Dinner"]);
-
- var LateNightNumberOfPeople = originTenantIdGroup.Count(x => x.ShiftType == shiftCodeDict["LateNight"]);
+ var BreakfastNumberOfPeople = originTenantIdGroup.Count(x => x.ShiftType == ShiftEnumType.Breakfast);
+ var LunchNumberOfPeople = originTenantIdGroup.Count(x => x.ShiftType == ShiftEnumType.Lunch);
+ var DinnerNumberOfPeople = originTenantIdGroup.Count(x => x.ShiftType == ShiftEnumType.Dinner);
+ var LateNightNumberOfPeople = originTenantIdGroup.Count(x => x.ShiftType == ShiftEnumType.Nightsnack);
//每个餐次人数
- obj.BreakfastNumberOfPeople = originTenantIdGroup.Where(x => x.ShiftType == shiftCodeDict["Breakfast"]).Select(x => x.UserNo).Distinct().Count();
- obj.LunchNumberOfPeople = originTenantIdGroup.Where(x => x.ShiftType == shiftCodeDict["Lunch"]).Select(x => x.UserNo).Distinct().Count();
- obj.DinnerNumberOfPeople = originTenantIdGroup.Where(x => x.ShiftType == shiftCodeDict["Dinner"]).Select(x => x.UserNo).Distinct().Count();
- obj.LateNightNumberOfPeople = originTenantIdGroup.Where(x => x.ShiftType == shiftCodeDict["LateNight"]).Select(x => x.UserNo).Distinct().Count();
+ obj.BreakfastNumberOfPeople = originTenantIdGroup.Where(x => x.ShiftType == ShiftEnumType.Breakfast).Select(x => x.UserNo).Distinct().Count();
+ obj.LunchNumberOfPeople = originTenantIdGroup.Where(x => x.ShiftType == ShiftEnumType.Lunch).Select(x => x.UserNo).Distinct().Count();
+ obj.DinnerNumberOfPeople = originTenantIdGroup.Where(x => x.ShiftType == ShiftEnumType.Dinner).Select(x => x.UserNo).Distinct().Count();
+ obj.LateNightNumberOfPeople = originTenantIdGroup.Where(x => x.ShiftType == ShiftEnumType.Nightsnack).Select(x => x.UserNo).Distinct().Count();
//餐次金额
- obj.BreakfastAmount = Math.Abs(originTenantIdGroup.Where(x => x.ShiftType == shiftCodeDict["Breakfast"]).Sum(x => x.Amount));
- obj.LunchAmount = Math.Abs(originTenantIdGroup.Where(x => x.ShiftType == shiftCodeDict["Lunch"]).Sum(x => x.Amount));
- obj.DinnerAmount = Math.Abs(originTenantIdGroup.Where(x => x.ShiftType == shiftCodeDict["Dinner"]).Sum(x => x.Amount));
- obj.LateNightAmount = Math.Abs(originTenantIdGroup.Where(x => x.ShiftType == shiftCodeDict["LateNight"]).Sum(x => x.Amount));
+ obj.BreakfastAmount = Math.Abs(originTenantIdGroup.Where(x => x.ShiftType == ShiftEnumType.Breakfast).Sum(x => x.Amount));
+ obj.LunchAmount = Math.Abs(originTenantIdGroup.Where(x => x.ShiftType == ShiftEnumType.Lunch).Sum(x => x.Amount));
+ obj.DinnerAmount = Math.Abs(originTenantIdGroup.Where(x => x.ShiftType == ShiftEnumType.Dinner).Sum(x => x.Amount));
+ obj.LateNightAmount = Math.Abs(originTenantIdGroup.Where(x => x.ShiftType == ShiftEnumType.Nightsnack).Sum(x => x.Amount));
// 每个餐次单价
@@ -405,9 +394,6 @@ public class BalanceService : IBalanceService
///
public async Task> BalanceRecordAnalysisAsync(BalanceRecordAnalysisRequest request)
{
- var shiftCodeDict = await GetShiftCode();
-
-
var pageinfo = await _dbContext.Queryable()
.WhereIF(request.StartDatetime.HasValue, record => record.CostDateTime >= request.StartDatetime)
.WhereIF(request.EndDatetime.HasValue, record => record.CostDateTime <= request.EndDatetime)
@@ -424,13 +410,13 @@ public class BalanceService : IBalanceService
};
//每个餐次人数
- obj.BreakfastNumberOfPeople = first.Where(x => x.ShiftType == shiftCodeDict["Breakfast"]).Select(x => x.UserNo).Distinct().Count();
- obj.LunchNumberOfPeople = first.Where(x => x.ShiftType == shiftCodeDict["Lunch"]).Select(x => x.UserNo).Distinct().Count();
- obj.DinnerNumberOfPeople = first.Where(x => x.ShiftType == shiftCodeDict["Dinner"]).Select(x => x.UserNo).Distinct().Count();
- obj.LateNightNumberOfPeople = first.Where(x => x.ShiftType == shiftCodeDict["LateNight"]).Select(x => x.UserNo).Distinct().Count();
+ obj.BreakfastNumberOfPeople = first.Where(x => x.ShiftType == ShiftEnumType.Breakfast).Select(x => x.UserNo).Distinct().Count();
+ obj.LunchNumberOfPeople = first.Where(x => x.ShiftType == ShiftEnumType.Lunch).Select(x => x.UserNo).Distinct().Count();
+ obj.DinnerNumberOfPeople = first.Where(x => x.ShiftType == ShiftEnumType.Lunch).Select(x => x.UserNo).Distinct().Count();
+ obj.LateNightNumberOfPeople = first.Where(x => x.ShiftType == ShiftEnumType.Nightsnack).Select(x => x.UserNo).Distinct().Count();
obj.TotalNumberOfPeople = first.Where(x => x.CostDate.ToString("yyyy-MM-dd") == first.Key).Select(x => x.UserNo).Distinct().Count();
-
+
lst.Add(obj);
}
// 分页操作
@@ -483,7 +469,7 @@ public class BalanceService : IBalanceService
.LeftJoin((record, ga, department, bplace, bshift, type) => record.BusinessShiftCode.ToString() == type.Code)
.WhereIF(request.SearchDate.HasValue, record => record.CostDate >= start)
.WhereIF(request.SearchDate.HasValue, record => record.CostDate <= end)
- .Where(record => record.TenantId == device.TenantId && (record.DeviceInfo == device.Code.ToString() || record.DeviceInfo == device.UniqueNo))
+ .Where(record => record.TenantId == device.TenantId && (record.DeviceUniqueNo == device.Code.ToString() || record.DeviceUniqueNo == device.UniqueNo))
.Where(record => record.Type == BalanceRecordTypeEnumType.Out && record.Status == BalanceRecordStatusEnumType.Valid)
.OrderBy(record => record.CreateTime, OrderByType.Desc)
.Select((record, ga, department, bplace, bshift, type) => new BalanceRecordResponse
@@ -495,7 +481,7 @@ public class BalanceService : IBalanceService
CostDate = record.CostDate,
CostId = record.CostId,
DepartmentNo = record.DepartmentNo,
- DeviceInfo = record.DeviceInfo,
+ DeviceInfo = record.DeviceUniqueNo,
IP = record.IP,
UserNo = record.UserNo,
UserCode = record.UserCode,
@@ -517,7 +503,7 @@ public class BalanceService : IBalanceService
var sum = await _dbContext.Queryable()
.WhereIF(request.SearchDate.HasValue, record => record.CostDate >= start)
.WhereIF(request.SearchDate.HasValue, record => record.CostDate <= end)
- .Where(record => record.TenantId == device.TenantId || (record.DeviceInfo == device.Code.ToString() || record.DeviceInfo == device.UniqueNo))
+ .Where(record => record.TenantId == device.TenantId || record.DeviceUniqueNo == device.Code.ToString() || record.DeviceUniqueNo == device.UniqueNo)
.Where(record => record.Type == BalanceRecordTypeEnumType.Out && record.Status == BalanceRecordStatusEnumType.Valid)
.SumAsync(record => SqlFunc.Abs(SqlFunc.IsNull(record.Amount, 0)));
@@ -610,7 +596,7 @@ public class BalanceService : IBalanceService
//可消费人数
var consumerable = bs.Select(x => x.UserCode).Distinct().Count();
- var dailyNumber = SameDay(bs,"");
+ var dailyNumber = SameDay(bs, "");
//消费走势
@@ -636,14 +622,14 @@ public class BalanceService : IBalanceService
///
///
///
- private int SameDay(List bs,string userCode)
+ private int SameDay(List bs, string userCode)
{
var time = DateTime.Now.ToString("yyyy-MM-dd");
var b = userCode.IsEmpty();
//当日消费数据
var monthbs = bs
.Where(x => x.CostDateTime.ToString("yyyy-MM-dd") == time)
- .WhereIF(!userCode.IsEmpty(),x => x.UserCode == userCode);
+ .WhereIF(!userCode.IsEmpty(), x => x.UserCode == userCode);
//当日消费额
var monthlySpending = monthbs.Sum(x => x.Amount);
//当日消费人数
@@ -694,9 +680,9 @@ public class BalanceService : IBalanceService
var lst = new List();
foreach (var code in codes)
{
- var br = brs.Where(x => x.UserCode == code).FirstOrDefault();
+ var br = brs.Where(x => x.UserCode == code).FirstOrDefault();
var res = br.Adapt();
- var dailyNumber = SameDay(brs,code);
+ var dailyNumber = SameDay(brs, code);
res.AverageAmount = dailyNumber;
lst.Add(res);
}
@@ -773,7 +759,7 @@ public class BalanceService : IBalanceService
.Where(x => deviceUniqueNos.Contains(x.DeviceUniqueNo))
.Select((x, d) => new
{
- UniqueNo = d.UniqueNo,
+ d.UniqueNo,
d.HeartbeatInterval,
x.LastHeartbeatTime
})
@@ -792,7 +778,7 @@ public class BalanceService : IBalanceService
})
.Select(x => new
{
- UniqueNo = x.UniqueNo,
+ x.UniqueNo,
})
.ToList();
var onlineUniqueNos = new List();
@@ -940,41 +926,4 @@ public class BalanceService : IBalanceService
throw new UserFriendlyException("操作失败,请重试");
}
-
- public async Task> GetShiftCode()
- {
- _dbContext.Client.QueryFilter.ClearAndBackup();
- try
- {
- var shiftCodeDict = new Dictionary();
-
- var typs = await _dbContext.Queryable()
- .Where(x => x.Type == "mealshift")
- .ToListAsync();
-
- var codeBreakfast = typs.Where(x => x.Display == "早餐").Select(x => x.Code).First();
- var codeLunch = typs.Where(x => x.Display == "午餐").Select(x => x.Code).First();
- var codeDinner = typs.Where(x => x.Display == "晚餐").Select(x => x.Code).First();
- var codeNightsnack = typs.Where(x => x.Display == "宵夜").Select(x => x.Code).First();
- var codeMidnightsnack = typs.Where(x => x.Display == "凌晨餐").Select(x => x.Code).First();
-
- shiftCodeDict.Add("Breakfast", codeBreakfast);
- shiftCodeDict.Add("Lunch", codeLunch);
- shiftCodeDict.Add("Dinner", codeDinner);
- shiftCodeDict.Add("LateNight", codeNightsnack);
- shiftCodeDict.Add("Midnightsnack", codeMidnightsnack);
-
- return shiftCodeDict;
- }
- catch (Exception ex)
- {
- _logger.LogError(ex, $"生成{DeviceTaskEnumType.UploadRecord.GetDescription()}任务失败:" + ex.Message);
- return null;
- }
- finally
- {
- _dbContext.Client.QueryFilter.Restore();
- }
-
- }
}
diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/MenuDishesService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/MenuDishesService.cs
deleted file mode 100644
index a5965110..00000000
--- a/Src/Dlhis.Canteen/Order/Services/Implements/MenuDishesService.cs
+++ /dev/null
@@ -1,118 +0,0 @@
-using Dlhis.Canteen.Order.Request;
-using Dlhis.Canteen.Order.Response;
-using Dlhis.Entity.Basic.Entity;
-using Dlhis.Entity.Canteen.Entities;
-using Kurisu.AspNetCore.Utils.Extensions;
-using Kurisu.Core.DataAccess.Dto;
-using Kurisu.Core.User.Abstractions;
-using Kurisu.SqlSugar.Extensions;
-using Kurisu.SqlSugar.Services;
-using Mapster;
-
-namespace Dlhis.Canteen.Order.Services.Implements
-{
- public class MenuDishesService : IMenuDishesService
- {
- private readonly IDbContext _dbContext;
- private readonly ICurrentUser _currentUser;
-
- public MenuDishesService(IDbContext dbContext, ICurrentUser currentUser)
- {
- _dbContext = dbContext;
- _currentUser = currentUser;
- }
-
- public async Task> GetMenuAsync(GetMenuRequest request)
- {
- var page = await _dbContext.Queryable()
- .LeftJoin((x,place) => x.PlaceCode == place.Code)
- .WhereIF(!request.Factory.IsEmpty(),x => x.Factory == request.Factory)
- .WhereIF(request.PlaceCode.HasValue, x => request.PlaceCode == x.PlaceCode)
- .WhereIF(!request.Search.IsEmpty(),x => x.Name.Contains(request.Search))
- .Select((x,place) => new GetMenuResponse
- {
- ShiftTypesSrt = x.ShiftTypes.ToString(),
- //ShiftTypesSrt = string.Join(", ", x.ShiftTypes.Select(enumValue => enumValue.GetDescription())),
- PlaceName = place.Name,
- },true)
- .ToPageListAsync(request);
- return page;
- }
-
- public async Task SaveMenuAsync(SaveMenuRequest request)
- {
- var place = await _dbContext.Queryable()
- .FirstAsync(x => x.Code == request.PlaceCode);
- place.ThrowIfNull($"{request.PlaceCode}:该营业点不存在!");
-
- if (!request.Id.HasValue)
- {
- var entity = request.Adapt();
- entity.Code = Guid.NewGuid();
- await _dbContext.InsertAsync(entity);
- }
- else
- {
- var entity = await _dbContext.Queryable()
- .Where(x => x.Id == request.Id).FirstAsync();
- request.Adapt(entity);
- await _dbContext.UpdateAsync(entity);
- }
- }
-
- public async Task> GetDishesAsync(GetDishesRequest request)
- {
- if (!request.MenuCode.HasValue)
- {
- return await _dbContext.Queryable()
- .Select()
- .ToPageListAsync(request);
- }
- else
- {
- var disCodes = await _dbContext.Queryable()
- .Where(x => x.MenuCode == request.MenuCode)
- .Select(x => x.DishersCode)
- .ToListAsync();
- return await _dbContext.Queryable()
- .Where(x => disCodes.Contains(x.Code))
- .Select()
- .ToPageListAsync(request);
- }
- }
-
- public async Task SaveDishesAsync(SaveDishesRequest request)
- {
- if (!request.Id.HasValue)
- {
- var dishers = request.Adapt();
- dishers.Code = Guid.NewGuid();
- await _dbContext.InsertAsync(dishers);
- }
- else
- {
- var entity = await _dbContext.Queryable()
- .Where(x => x.Id == request.Id).FirstAsync();
- request.Adapt(entity);
- await _dbContext.UpdateAsync(entity);
- }
- }
-
- public async Task DispositionDishesAsync(DispositionDishesRequest request)
- {
- var lst = new List();
-
- foreach (var dto in request.DishersDtos)
- {
- var entity = new CanteenMenuDishersRelationshipEntity
- {
- MenuCode = request.MenudCode,
- DishersCode = dto.DisherCode,
- RestrictedNum = dto.RestrictedNum,
- };
- lst.Add(entity);
- }
- await _dbContext.InsertAsync(lst);
- }
- }
-}
diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/MiniProgramOrderDetailService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/MiniProgramOrderDetailService.cs
deleted file mode 100644
index 9c31e57e..00000000
--- a/Src/Dlhis.Canteen/Order/Services/Implements/MiniProgramOrderDetailService.cs
+++ /dev/null
@@ -1,176 +0,0 @@
-using Dlhis.Canteen.Order.Request;
-using Dlhis.Canteen.Order.Response;
-using Dlhis.Entity.Basic.Entity;
-using Dlhis.Entity.Canteen.Entities;
-using Dlhis.Entity.Canteen.Enums;
-using Dlhis.Sys.Api;
-using Kurisu.AspNetCore.Utils;
-using Kurisu.AspNetCore.Utils.Extensions;
-using Kurisu.Core.DataAccess.Dto;
-using Kurisu.SqlSugar.Extensions;
-using Kurisu.SqlSugar.Services;
-using Mapster;
-using SqlSugar;
-
-namespace Dlhis.Canteen.Order.Services.Implements;
-
-public class MiniProgramOrderDetailService : IMiniProgramOrderDetailService
-{
- private readonly IDbContext _dbContext;
- private readonly ITenantApi _tenantApi;
- public MiniProgramOrderDetailService(IDbContext dbContext, ITenantApi tenantApi)
- {
- _dbContext = dbContext;
- _tenantApi = tenantApi;
- }
-
- public async Task> GetMiniProgramOrderAsync(GetMiniProgramOrderRequest request)
- {
- var page = await _dbContext.Queryable()
- .LeftJoin((order,place) => order.PlaceCode == place.Code)
- .LeftJoin((order, place,dishers) => order.DishesCode == dishers.Code)
- .LeftJoin((order, place, dishers,depart) => order.DepartmentNo == depart.No)
- .WhereIF(!request.Search.IsEmpty(), order => order.Name == request.Search || order.Code == request.Search)
- .WhereIF(request.SysDate.HasValue,order=>order.SysDate == request.SysDate)
- .OrderBy(order => order.CostDate,SqlSugar.OrderByType.Desc)
- .Select((order, place, dishers, depart) => new GetMiniProgramOrderResponse
- {
- PlaceName = place.Name,
- DepartmentName = depart.Name,
- DishesName = dishers.Name,
- },true)
- .ToPageListAsync(request);
- return page;
- }
-
- public async Task SaveDetailAsync(SaveDetailRequest request)
- {
- if (!request.Id.HasValue)
- {
- var entity = request.Adapt();
- await _dbContext.InsertAsync(entity);
- }
- else
- {
- var entity = await _dbContext.Queryable()
- .Where(x => x.Id == request.Id)
- .FirstAsync();
- request.Adapt(entity);
- await _dbContext.UpdateAsync(entity);
- }
- }
-
- public async Task> GetDetailAsync(GetDetailRequest request)
- {
- var page = await _dbContext.Queryable()
- .WhereIF(!request.Search.IsEmpty(),x => x.ThirdNo == request.Search)
- .Select()
- .ToPageListAsync(request);
-
- return page;
- }
-
- public async Task OrderAsync(OrderRequest request)
- {
- //判断时间
- DateTime currentTime = DateTime.Now;
- TimeSpan ninePM = new TimeSpan(20, 30, 0);
- if (currentTime.TimeOfDay > ninePM)
- {
- true.ThrowIfTrue("20:30之后无法订餐!");
- }
- //判断营业日
- var dishes = await _dbContext.Queryable().Where(x => x.Code == request.DishesCode).FirstAsync();
- dishes.Enable.ThrowIfFalse($"{dishes.Name}没启用!");
-
- var menu = await _dbContext.Queryable().Where(x => x.Code == request.MenuCode).FirstAsync();
- menu.Enable.ThrowIfFalse($"{dishes.Name}没启用!");
-
- // 获取用餐日期
- DateOnly tomorrow = DateOnly.FromDateTime(DateTime.Today.AddDays(1));
- if (tomorrow != menu.StartDate)
- {
- true.ThrowIfTrue($"菜品:{dishes.Name}对应的菜单:{menu.Name}不在营业日!");
- }
-
- var restricted= await _dbContext.Queryable< CanteenMenuDishersRelationshipEntity>()
- .Where(x => x.MenuCode == request.MenuCode && x.DishersCode == request.DishesCode).FirstAsync();
- restricted.ThrowIfNull($"每日菜单:{menu.Name} 还没有配置菜品:{dishes.Name} 的限售数量!");
- if (restricted.RestrictedNum < 0)
- {
- true.ThrowIfTrue($"菜品:{dishes.Name}已售罄!");
- }
-
- var gainfo = await _dbContext.Queryable()
- .Where(x => x.Code == request.UserCode)
- .FirstAsync();
- gainfo.ThrowIfNull($"用户{request.UserCode}无档案信息,无法订餐!");
-
- //判断是否订过餐
- var flag = await _dbContext.Queryable()
- .Where(x => x.SysDate == tomorrow && x.ShiftType == request.ShiftType && x.Code == request.UserCode && x.OrderStatus == MiniProgramOrderStatusEnumType.I)
- .AnyAsync();
- flag.ThrowIfTrue($"工号:{request.UserCode} 姓名:{gainfo.Name} 已经定过{tomorrow}的{request.ShiftType.GetDescription()}!");
-
- //支付方式
- /* var result = await _tenantApi.GetTenantTreeAsync();
- var tree = result.Data;
- var shanxi = tree.Where(x => x.Name == "山西基地").FirstOrDefault();
- var codes = shanxi.Next.Select(x => x.Code).ToList();
- if (!codes.Contains(gainfo.Factory))
- {
- if (request.PayType == CanteenPayEnumType.Repair)
- {
- true.ThrowIfTrue($"非山西,支付方式不能为{request.PayType.GetDescription()}");
- }
- }*/
-
- //生成订单
- var order = new MiniProgramOrderEntity
- {
- No = "O" + SnowFlakeHelper.Instance.NextId(),
- Name = gainfo.Name,
- Code = gainfo.Code,
- Werks = gainfo.Werks,
- DepartmentNo = gainfo.DepartmentNo,
- CostId = gainfo.CostId,
- Workplace = gainfo.Workplace,
- Factory = gainfo.Factory,
- PlaceCode = request.PlaceCode,
- ShiftType = request.ShiftType,
- DishesCode = request.DishesCode,
- Phone = gainfo.Phone,
- SysDate = tomorrow,
- CostDate = DateTime.Now,
- PayType = request.PayType,
- OrderStatus = MiniProgramOrderStatusEnumType.I,
- OrderType = dishes.Type,
- };
- //生成订单明细
- var detail = new OrderDetailsEntity
- {
- ThirdNo = order.No,
- SysDate = tomorrow,
- ShiftType= request.ShiftType,
- DishesCode= request.DishesCode,
- DishesName = dishes.Name,
- Price = dishes.Amount,
- Unit = dishes.Unit,
- Num = request.DishesNum,
- Amount = request.DishesNum * dishes.Amount,
- OrderStatus = OrderDetailsStatusEnumType.I,
- };
- order.TotalAmount = detail.Amount;
- await _dbContext.InsertAsync(order);
- await _dbContext.InsertAsync(detail);
- //扣减份数
- var effect = await _dbContext.Updateable()
- .SetColumns(x => x.RestrictedNum == restricted.RestrictedNum - request.DishesNum)
- .SetColumns(x => x.Version == x.Version + 1)
- .Where(x => x.MenuCode == request.MenuCode && x.DishersCode == request.DishesCode && x.Version == restricted.Version)
- .ExecuteCommandAsync();
-
- if (effect <= 0) throw new VersionExceptions("更新版本冲突");
- }
-
-}
diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs
index cb345396..e390d2ca 100644
--- a/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs
+++ b/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs
@@ -1,6 +1,5 @@
using Dlhis.Basic.Api;
-using Dlhis.Canteen.Order.Request;
-using Dlhis.Canteen.Order.Response;
+using Dlhis.Canteen.Dishes.Request;
using Dlhis.Canteen.Setting.Services;
using Dlhis.Entity.Basic.Entity;
using Dlhis.Entity.Canteen.Entities;
@@ -11,10 +10,14 @@ using Kurisu.AspNetCore.Utils;
using Kurisu.AspNetCore.Utils.Extensions;
using Kurisu.Core.CustomClass;
using Kurisu.Core.DataAccess.Dto;
+using Kurisu.Core.User.Abstractions;
using Kurisu.SqlSugar.Extensions;
using Kurisu.SqlSugar.Services;
using Mapster;
using SqlSugar;
+using Dlhis.Canteen.Order.Response;
+using Dlhis.Canteen.Dishes;
+using Dlhis.Canteen.Order.Request;
namespace Dlhis.Canteen.Order.Services.Implements;
@@ -23,16 +26,22 @@ public class OrderService : IOrderService
private readonly IDbContext _dbContext;
private readonly ICanteenSettingService _canteenSettingService;
private readonly IDevicePermissionApi _devicePermissionApi;
+ private readonly ICurrentUser _currentUser;
+ private readonly IDisheMenuApi _disheMenuApi;
private readonly ILogger _logger;
public OrderService(IDbContext dbContext,
ICanteenSettingService canteenSettingService,
IDevicePermissionApi devicePermissionApi,
+ ICurrentUser currentUser,
+ IDisheMenuApi disheMenuApi,
ILogger logger)
{
_dbContext = dbContext;
_canteenSettingService = canteenSettingService;
_devicePermissionApi = devicePermissionApi;
+ _currentUser = currentUser;
+ _disheMenuApi = disheMenuApi;
_logger = logger;
}
@@ -53,6 +62,118 @@ public class OrderService : IOrderService
uniqueNos.Contains(deviceUniqueNo).ThrowIfFalse("无消费权限");
}
+ public async Task Booking(BookingMealRequest request)
+ {
+ await CheckExistsMyBookingsAsync(request.BookingDate);
+
+ var jinkoCode = _currentUser.GetUserClaim("jinko-code");
+ var gainfo = await _dbContext.Queryable().Where(x => x.Code == jinkoCode).FirstAsync();
+
+ var businessPlace = await _dbContext.Queryable().Where(x => x.Code == request.BusinessPlaceCode).FirstAsync();
+
+ //预定时间
+ var now = DateTime.Now;
+
+ var settings = await _canteenSettingService.GetUserSettingAsync(gainfo.Code);
+ var bookingDeadline = GetSetting(settings, CanteenSettingItemEnumType.BookingDeadline) ?? new TimeOnly(20, 30, 00);
+ var dealLine = DateTime.Today.Add(bookingDeadline.ToTimeSpan());
+ (now >= dealLine).ThrowIfTrue("超出订餐时间");
+
+ //菜单存在
+ var menuDetailResult = await _disheMenuApi.GetBookingDishesDetailAsync(request.BookingDate, request.BusinessPlaceCode, (int)request.ShiftType, request.DishesCode);
+ var menuDetail = menuDetailResult.Data;
+ menuDetail.ThrowIfNull("预定失败,菜品已经下架");
+
+ var order = new CanteenOrderEntity
+ {
+ RequestJson = request.ToJson(),
+ ThirdNo = string.Empty,
+ Type = BalanceRecordTypeEnumType.Out,
+ ApplicationType = CanteenApplicaitonTypeEnumType.Booking,
+ Name = gainfo.Name,
+ Source = request.Source,
+ UserNo = gainfo.No,
+ UserCode = gainfo.Code,
+ Amount = -Math.Abs(menuDetail.Price),
+ BusinessPlaceCode = request.BusinessPlaceCode,
+ BusinessShiftCode = null,
+ ShiftType = request.ShiftType,
+ CostDate = now.Date,
+ CostId = gainfo.CostId,
+ DepartmentNo = gainfo.DepartmentNo,
+ DeviceUniqueNo = string.Empty,
+
+ No = SnowFlakeHelper.Instance.NextId().ToString(),
+ SubsidiesFromMonth = now.ToString("yyyyMM"),
+ IsOffline = false,
+ IsCostCrossTenant = GetSetting(settings, CanteenSettingItemEnumType.AllowCrossTenant),
+
+ OriginTenantId = gainfo.Factory,//人员可能跨基地消费
+
+ Status = BalanceRecordStatusEnumType.Valid,
+ OrderStatus = CanteenOrderStatusEnumType.Successful,
+
+ CostDateTime = now,
+
+ //标识当前消费的基地
+ TenantId = businessPlace.TenantId,
+ };
+
+ var orderId = await _dbContext.InsertReturnIdentityAsync(order);
+ await ContinueUpdateAsync(async () =>
+ {
+ await _disheMenuApi.GetBookingDishesDetailAsync(request.BookingDate, request.BusinessPlaceCode, (int)request.ShiftType, request.DishesCode);
+ var menuDetail = menuDetailResult.Data;
+ menuDetail.ThrowIfNull("预定失败,菜品已经下架");
+ menuDetail.Number -= 1;
+
+ (menuDetail.Number < 0).ThrowIfTrue($"{menuDetail.DishesName}已售罄");
+
+ var canteenUser = await _dbContext.Queryable().Where(x => x.UserNo == order.UserNo).FirstAsync();
+ //金额+-
+ canteenUser.Balance += order.Amount;
+ (canteenUser.Balance < 0).ThrowIfTrue("余额不足,无法消费");
+
+ var effect = await _dbContext.Updateable()
+ .SetColumns(x => x.Balance == canteenUser.Balance)
+ .SetColumns(x => x.Version == x.Version + 1)
+ .Where(x => x.UserNo == order.UserNo && x.Version == canteenUser.Version)//必须与查询时的version一致
+ .ExecuteCommandAsync();
+
+ if (effect <= 0) throw new VersionExceptions("更新版本冲突");
+
+ effect = await _dbContext.Updateable()
+ .SetColumns(x => x.Number == menuDetail.Number)
+ .SetColumns(x => x.Version == x.Version + 1)
+ .SetColumns(x => x.ModifiedTime == now)
+ .Where(x => x.Date == menuDetail.Date && x.ShiftType == request.ShiftType && x.BusinessPlaceCode == request.BusinessPlaceCode && x.Version == menuDetail.Version)
+ .ExecuteCommandAsync();
+
+ if (effect <= 0) throw new VersionExceptions("更新版本冲突");
+
+ //写入记录
+ var balanceRecord = order.Adapt();
+ await _dbContext.InsertAsync(balanceRecord);
+
+ await _dbContext.InsertAsync(new OrderDetailEntity
+ {
+ OrderNo = order.No,
+ DishesCode = request.DishesCode,
+ Price = menuDetail.Price,
+ Status = OrderDetailsStatusEnumType.I,
+ //Unit
+ Number = 1,
+ });
+
+ }, 10);
+ }
+
+
+ public async Task DeviceConsume(OrderAddRequest request)
+ {
+ return await AddAsync(request);
+ }
+
public async Task AddAsync(OrderAddRequest request)
{
//尝试匹配userId
@@ -63,7 +184,7 @@ public class OrderService : IOrderService
.Where(x => x.No == request.UserUniqueNo || x.Code == request.UserUniqueNo || x.Id == userId || x.CardNo == request.UserUniqueNo)
.FirstAsync();
- gainfo.ThrowIfNull($"用户{request.UserUniqueNo}不存在,无法操作");
+ gainfo.ThrowIfNull($"无消费权限");
//消费权限控制
await CheckPAsync(gainfo.No, request.DeviceUniqueNo);
@@ -183,6 +304,7 @@ public class OrderService : IOrderService
RequestJson = request.ToJson(),
ThirdNo = request.ThirdNo,
Type = BalanceRecordTypeEnumType.Out,
+ ApplicationType = CanteenApplicaitonTypeEnumType.Device,
Name = gainfo.Name,
Source = request.Source,
UserNo = gainfo.No,
@@ -194,14 +316,14 @@ public class OrderService : IOrderService
CostDate = costDate.Date,
CostId = gainfo.CostId,
DepartmentNo = gainfo.DepartmentNo,
- DeviceInfo = request.DeviceUniqueNo,
+ DeviceUniqueNo = request.DeviceUniqueNo,
- No = "O" + SnowFlakeHelper.Instance.NextId(),
+ No = SnowFlakeHelper.Instance.NextId().ToString(),
SubsidiesFromMonth = request.CostDateTime.ToString("yyyyMM"),
IsOffline = request.IsOffline,
IsCostCrossTenant = GetSetting(settings, CanteenSettingItemEnumType.AllowCrossTenant),
- OriginTenantId = gainfo.Werks,//人员可能跨基地消费
+ OriginTenantId = gainfo.Factory,//人员可能跨基地消费
//餐别异常处理
Status = shift == null ? BalanceRecordStatusEnumType.Doubtful : BalanceRecordStatusEnumType.Valid,
@@ -264,13 +386,13 @@ public class OrderService : IOrderService
CostDate = DateTime.Now.Date,
CostId = gainfo.CostId,
DepartmentNo = gainfo.DepartmentNo,
- DeviceInfo = string.Empty,
+ DeviceUniqueNo = string.Empty,
- No = "O" + SnowFlakeHelper.Instance.NextId(),
+ No = SnowFlakeHelper.Instance.NextId().ToString(),
SubsidiesFromMonth = request.CostDateTime.ToString("yyyyMM"),
IsCostCrossTenant = GetSetting(settings, CanteenSettingItemEnumType.AllowCrossTenant),
- OriginTenantId = gainfo.Werks,//人员可能跨基地消费
+ OriginTenantId = gainfo.Factory,//人员可能跨基地消费
Status = BalanceRecordStatusEnumType.Valid,
@@ -279,7 +401,7 @@ public class OrderService : IOrderService
CostDateTime = request.CostDateTime,
//标识当前消费的基地
- TenantId = gainfo.Werks,
+ TenantId = gainfo.Factory,
};
var orderId = await _dbContext.InsertReturnIdentityAsync(order);
@@ -305,8 +427,6 @@ public class OrderService : IOrderService
}
-
-
//******************************************************* help methods ************************************************************/
@@ -355,7 +475,6 @@ public class OrderService : IOrderService
{
try
{
-
if (int.TryParse(v, out var n))
{
return n.Adapt();
@@ -527,4 +646,24 @@ public class OrderService : IOrderService
}, 5);
}
+ ///
+ /// 检查我的订餐是否存在,存在抛出异常
+ ///
+ ///
+ ///
+ private async Task CheckExistsMyBookingsAsync(DateTime bookingDate)
+ {
+ var jinkoCode = _currentUser.GetUserClaim("jinko-code");
+ var gainfo = await _dbContext.Queryable().Where(x => x.Code == jinkoCode).FirstAsync();
+
+ var start = bookingDate.Date;
+ var end = start.AddDays(1).AddSeconds(-1);
+
+ var exists = await _dbContext.Queryable().Where(x => x.ApplicationType == CanteenApplicaitonTypeEnumType.Booking)
+ .Where(x => x.UserNo == gainfo.No)
+ .Where(x => x.CreateTime >= start && x.CreateTime <= end)
+ .AnyAsync();
+
+ exists.ThrowIfTrue("不可重复订餐");
+ }
}
diff --git a/Src/Dlhis.Canteen/Order/TimePeriodExtensions.cs b/Src/Dlhis.Canteen/Order/TimePeriodExtensions.cs
index 2698f706..39b402b4 100644
--- a/Src/Dlhis.Canteen/Order/TimePeriodExtensions.cs
+++ b/Src/Dlhis.Canteen/Order/TimePeriodExtensions.cs
@@ -1,6 +1,6 @@
using Kurisu.Core.CustomClass;
-namespace Dlhis.Canteen.Order;
+namespace Dlhis.Canteen.Dishes;
///
diff --git a/Src/Dlhis.Canteen/Program.cs b/Src/Dlhis.Canteen/Program.cs
index ce855b85..b9710d07 100644
--- a/Src/Dlhis.Canteen/Program.cs
+++ b/Src/Dlhis.Canteen/Program.cs
@@ -23,6 +23,16 @@ public class Startup : DefaultStartup
public override void ConfigureServices(IServiceCollection services)
{
base.ConfigureServices(services);
+ //protected static string Obfuscate(string value)
+ //{
+ // var last4Chars = "****";
+ // if (value.IsPresent() && value.Length > 4)
+ // {
+ // last4Chars = value.Substring(value.Length - 4);
+ // }
+
+ // return "****" + last4Chars;
+ //}
services.AddRedis();
}
diff --git a/Src/Dlhis.Canteen/Setting/Services/Implements/CanteenSettingService.cs b/Src/Dlhis.Canteen/Setting/Services/Implements/CanteenSettingService.cs
index cb707ca8..3395fc7c 100644
--- a/Src/Dlhis.Canteen/Setting/Services/Implements/CanteenSettingService.cs
+++ b/Src/Dlhis.Canteen/Setting/Services/Implements/CanteenSettingService.cs
@@ -70,35 +70,7 @@ public class CanteenSettingService : ICanteenSettingService
}
}
- private void Inspection(CanteenSettingSaveRequest request)
- {
- var value = request.Value;
- var result = request.Item switch
- {
- //TimeOnly
- CanteenSettingItemEnumType.BusinessSwitchTime => IsValidFormat(value, request.Item),
-
- //int
- CanteenSettingItemEnumType.DayEVoucherUseCountMax => IsValidFormat(value),
-
- //decimal
- CanteenSettingItemEnumType.OnceCostMax => IsValidFormat(value),
- CanteenSettingItemEnumType.DayCostMax => IsValidFormat(value),
- CanteenSettingItemEnumType.DayMarketCostMax => IsValidFormat(value),
- CanteenSettingItemEnumType.Subsidies => IsValidFormat(value),
- CanteenSettingItemEnumType.InitBalance => IsValidFormat(value),
-
- //bool
- CanteenSettingItemEnumType.AllowNoBalance => IsValidFormat(value, request.Item),
- CanteenSettingItemEnumType.AllowSendAtMeal => IsValidFormat(value, request.Item),
- CanteenSettingItemEnumType.AllowRepeatInOneShift => IsValidFormat(value, request.Item),
- CanteenSettingItemEnumType.AllowCrossTenant => IsValidFormat(value, request.Item),
- _ => throw new NotImplementedException(),
- };
-
- result.ThrowIfFalse($"{request.Item.GetDescription()},参数值为[{value}],格式错误");
- }
public async Task SetEnableAsync(CanteenSettingSetEnableRequest request)
{
@@ -112,15 +84,15 @@ public class CanteenSettingService : ICanteenSettingService
public async Task> GetUserSettingAsync(string userNo)
{
- var setting = await _context.Queryable()
- .Where(x => x.UniqueType == CanteenSettingUnqiueEnumType.Person && (x.UniqueValue == userNo) || x.UniqueType == CanteenSettingUnqiueEnumType.Tenant)
+ var settings = await _context.Queryable()
+ .Where(x => (x.UniqueType == CanteenSettingUnqiueEnumType.Person && x.UniqueValue == userNo) || x.UniqueType == CanteenSettingUnqiueEnumType.Tenant)
.ToListAsync();
//从基地 -> 个人,确保下面循环做到覆盖,并且以个人配置为主
- setting = setting.OrderBy(x => x.UniqueType).ToList();
+ settings = settings.OrderBy(x => x.UniqueType).ToList();
var result = new Dictionary();
- setting.ForEach(x =>
+ settings.ForEach(x =>
{
if (result.ContainsKey(x.Item))
{
@@ -197,4 +169,35 @@ public class CanteenSettingService : ICanteenSettingService
return true;
}
+
+ private static void Inspection(CanteenSettingSaveRequest request)
+ {
+ var value = request.Value;
+
+ var result = request.Item switch
+ {
+ //TimeOnly
+ CanteenSettingItemEnumType.BusinessSwitchTime => IsValidFormat(value, request.Item),
+ CanteenSettingItemEnumType.BookingDeadline => IsValidFormat(value, request.Item),
+
+ //int
+ CanteenSettingItemEnumType.DayEVoucherUseCountMax => IsValidFormat(value),
+
+ //decimal
+ CanteenSettingItemEnumType.OnceCostMax => IsValidFormat(value),
+ CanteenSettingItemEnumType.DayCostMax => IsValidFormat(value),
+ CanteenSettingItemEnumType.DayMarketCostMax => IsValidFormat(value),
+ CanteenSettingItemEnumType.Subsidies => IsValidFormat(value),
+ CanteenSettingItemEnumType.InitBalance => IsValidFormat(value),
+
+ //bool
+ CanteenSettingItemEnumType.AllowNoBalance => IsValidFormat(value, request.Item),
+ CanteenSettingItemEnumType.AllowSendAtMeal => IsValidFormat(value, request.Item),
+ CanteenSettingItemEnumType.AllowRepeatInOneShift => IsValidFormat(value, request.Item),
+ CanteenSettingItemEnumType.AllowCrossTenant => IsValidFormat(value, request.Item),
+ _ => throw new NotImplementedException(),
+ };
+
+ result.ThrowIfFalse($"{request.Item.GetDescription()},参数值为[{value}],格式错误");
+ }
}
diff --git a/Src/Dlhis.Canteen/SqlSugarPack.cs b/Src/Dlhis.Canteen/SqlSugarPack.cs
index f8d3a155..a05817df 100644
--- a/Src/Dlhis.Canteen/SqlSugarPack.cs
+++ b/Src/Dlhis.Canteen/SqlSugarPack.cs
@@ -1,9 +1,5 @@
using Kurisu.AspNetCore.Startup;
-using Kurisu.Core.DataAccess.Entity;
using Kurisu.SqlSugar.Extensions;
-using Kurisu.SqlSugar.Services;
-using Microsoft.AspNetCore.Mvc.Filters;
-using SqlSugar;
namespace Dlhis.Canteen;
@@ -15,102 +11,4 @@ public class SqlSugarPack : BaseAppPack
{
services.AddSqlSugar();
}
-}
-
-
-
-
-
-///
-/// 日志
-///
-[AttributeUsage(AttributeTargets.Method)]
-public class LogAttribute : Attribute, IAsyncActionFilter
-{
- public LogAttribute(string title)
- {
- Title = title;
- }
-
- ///
- ///
- ///
- public string Title { get; set; }
-
- ///
- /// 是否处理差异
- ///
- public bool Diff { get; set; }
-
-
- public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
- {
- PreSetting(context.HttpContext);
- await next();
- }
-
- private void PreSetting(HttpContext httpContext)
- {
- var options = httpContext.RequestServices.GetService();
-
- options.Title = Title;
- options.Diff = Diff;
- options.BatchNo = Guid.NewGuid();
- options.RoutePath = httpContext.Request.Path.Value;
- options.RaiseTime = DateTime.Now;
- }
-}
-
-///
-/// 事务
-///
-[AttributeUsage(AttributeTargets.Method)]
-public class TransactionalAttribute : Attribute, IAsyncActionFilter
-{
- public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
- {
- var dbContext = context.HttpContext.RequestServices.GetRequiredService();
- await dbContext.Ado.BeginTranAsync();
- try
- {
- var result = await next();
- if (result.Exception != null)
- {
- throw result.Exception;
- }
- else
- {
- await dbContext.Ado.CommitTranAsync();
- }
- }
- catch (Exception)
- {
- await dbContext.Ado.RollbackTranAsync();
- throw;
- }
- }
-}
-
-///
-/// 忽略租户
-///
-[AttributeUsage(AttributeTargets.Method)]
-public class IgnoreTenantAttribute : Attribute, IAsyncActionFilter
-{
- public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
- {
- var dbContext = context.HttpContext.RequestServices.GetRequiredService();
- var options = context.HttpContext!.RequestServices.GetService();
- try
- {
- dbContext.QueryFilter.ClearAndBackup();
- options.IgnoreTenant = true;
- await next();
- }
- finally
- {
- options.IgnoreTenant = false;
- dbContext.QueryFilter.Restore();
- }
- }
-}
+}
\ No newline at end of file
diff --git a/Src/Dlhis.Canteen/appsettings.Development.json b/Src/Dlhis.Canteen/appsettings.Development.json
index 69b2958a..49e0aa9e 100644
--- a/Src/Dlhis.Canteen/appsettings.Development.json
+++ b/Src/Dlhis.Canteen/appsettings.Development.json
@@ -7,7 +7,8 @@
},
"InternalRequest": {
"CommonRequestUrl": "http://localhost:5001",
- "BasicRequestUrl": "http://localhost:5002"
+ "BasicRequestUrl": "http://localhost:5002",
+ "SysRequestUrl": "http://localhost:5003"
},
"SwaggerOptions": {
"Enable": true,
diff --git a/Src/Dlhis.Common/ApiLog/ApiLogController.cs b/Src/Dlhis.Common/ApiLog/ApiLogController.cs
index 2a912ac4..355730be 100644
--- a/Src/Dlhis.Common/ApiLog/ApiLogController.cs
+++ b/Src/Dlhis.Common/ApiLog/ApiLogController.cs
@@ -3,7 +3,6 @@ using Dlhis.Common.Response;
using Dlhis.Common.Services.Implements;
using Kurisu.Core.DataAccess.Dto;
using Microsoft.AspNetCore.Authorization;
-using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace Dlhis.Common.ApiLog
@@ -27,6 +26,7 @@ namespace Dlhis.Common.ApiLog
/// 获取api日志
///
///
+ [Authorize(Roles = "admin")]
[HttpGet("logs")]
public async Task> GetLogsAsync([FromQuery] ApiLogRequest request)
{
diff --git a/Src/Dlhis.Common/EnumSetting/EnumsController.cs b/Src/Dlhis.Common/EnumSetting/EnumsController.cs
index fde3ebb5..f76610bf 100644
--- a/Src/Dlhis.Common/EnumSetting/EnumsController.cs
+++ b/Src/Dlhis.Common/EnumSetting/EnumsController.cs
@@ -33,8 +33,7 @@ public class EnumsController : ControllerBase
{
var types = Assembly.Load("Dlhis.Entity")
.GetTypes()
- .Where(x => x.IsEnum)
- .WhereIf(code.IsPresent(), x => x.Name == code);
+ .Where(x => x.IsEnum);
var result = types.Select(x =>
{
@@ -78,7 +77,7 @@ public class EnumsController : ControllerBase
result.Add(GetCurrentEnums("LogLevel", "日志级别", typeof(LogLevel)));
- return result;
+ return result.WhereIf(code.IsPresent(), x => x.Code == code).ToList();
}
diff --git a/Src/Dlhis.Common/appsettings.Development.json b/Src/Dlhis.Common/appsettings.Development.json
index 11bc9e44..2b64c0f8 100644
--- a/Src/Dlhis.Common/appsettings.Development.json
+++ b/Src/Dlhis.Common/appsettings.Development.json
@@ -33,9 +33,9 @@
//服务器IP
"Endpoint": "http://192.168.199.124:9000",
//账号
- "AccessKey": "oQ7tD55EVNElIoO3D43r",
+ "AccessKey": "bmQOlK0COe5nL56kzGd3",
//密码
- "SecretKey": "3eWLaAFQ9fnFx8pOp5SgJogoF47ecAH6dcCWlyAp",
+ "SecretKey": "Udc5uBrGcT2yukfGXQtHKpqLQ27L1FmbrLyYunBr",
//默认存储桶
"DefaultBucket": "apk"
}
diff --git a/Src/Dlhis.Common/appsettings.json b/Src/Dlhis.Common/appsettings.json
index b73cd02e..9bcca65b 100644
--- a/Src/Dlhis.Common/appsettings.json
+++ b/Src/Dlhis.Common/appsettings.json
@@ -43,9 +43,9 @@
//服务器IP
"Endpoint": "http://192.168.199.124:9000",
//账号
- "AccessKey": "Zbjj05OFtR19e5TJopQU",
+ "AccessKey": "bmQOlK0COe5nL56kzGd3",
//密码
- "SecretKey": "UMXtNdZhufhAAyYJ3XND4cEgZNUsgOWtbUzksizK",
+ "SecretKey": "Udc5uBrGcT2yukfGXQtHKpqLQ27L1FmbrLyYunBr",
//apk默认存储桶
"DefaultBucket": "apk"
},
diff --git a/Src/Dlhis.Entity/Basic/Entity/BusinessPlaceManagerRelationshipEntity.cs b/Src/Dlhis.Entity/Basic/Entity/BusinessPlaceManagerRelationshipEntity.cs
new file mode 100644
index 00000000..44fae7a8
--- /dev/null
+++ b/Src/Dlhis.Entity/Basic/Entity/BusinessPlaceManagerRelationshipEntity.cs
@@ -0,0 +1,25 @@
+using Kurisu.SqlSugar;
+using Mapster;
+using SqlSugar;
+
+namespace Dlhis.Entity.Basic.Entity;
+
+///
+/// 营业点管理
+///
+[SugarTable(TableName = "BusinessPlaceManagerRelationship", TableDescription = "营业点管理关系")]
+public class BusinessPlaceManagerRelationshipEntity : SugarBaseEntity
+{
+ ///
+ /// 管理人员
+ ///
+ [AdaptIgnore(MemberSide.Destination)]
+ [SugarColumn(ColumnDescription = "管理人员", IsNullable = false)]
+ public int ManagerUserId { get; set; }
+
+ ///
+ /// 营业点
+ ///
+ [SugarColumn(ColumnDescription = "营业点", IsNullable = false)]
+ public Guid BusinessPlaceCode { get; set; }
+}
diff --git a/Src/Dlhis.Entity/Basic/Entity/BusinessShiftEntity.cs b/Src/Dlhis.Entity/Basic/Entity/BusinessShiftEntity.cs
index 8964221f..e80d81ee 100644
--- a/Src/Dlhis.Entity/Basic/Entity/BusinessShiftEntity.cs
+++ b/Src/Dlhis.Entity/Basic/Entity/BusinessShiftEntity.cs
@@ -6,9 +6,9 @@ using SqlSugar;
namespace Dlhis.Entity.Basic.Entity;
///
-/// 营业点餐次
+/// 营业点餐别
///
-[SugarTable(TableName = "BusinessShift", TableDescription = "营业点餐次")]
+[SugarTable(TableName = "BusinessShift", TableDescription = "营业点餐别")]
public class BusinessShiftEntity : SugarBaseEntity, ITenantId
{
///
@@ -25,9 +25,9 @@ public class BusinessShiftEntity : SugarBaseEntity, ITenantId
public string CustomCode { get; set; }
///
- /// 餐次名称
+ /// 餐别名称
///
- [SugarColumn(ColumnDescription = "餐次名称")]
+ [SugarColumn(ColumnDescription = "餐别名称")]
public string Name { get; set; }
public string TenantId { get; set; }
diff --git a/Src/Dlhis.Entity/Basic/Entity/BusinessShiftMealRelationshipEntity.cs b/Src/Dlhis.Entity/Basic/Entity/BusinessShiftMealRelationshipEntity.cs
index 6172c059..71912dd0 100644
--- a/Src/Dlhis.Entity/Basic/Entity/BusinessShiftMealRelationshipEntity.cs
+++ b/Src/Dlhis.Entity/Basic/Entity/BusinessShiftMealRelationshipEntity.cs
@@ -1,6 +1,8 @@
-using Kurisu.Core.DataAccess.Entity;
+using Dlhis.Entity.Canteen.Enums;
+using Kurisu.Core.DataAccess.Entity;
using Kurisu.SqlSugar;
using SqlSugar;
+using SqlSugar.DbConvert;
namespace Dlhis.Entity.Basic.Entity;
@@ -8,22 +10,22 @@ namespace Dlhis.Entity.Basic.Entity;
public class BusinessShiftMealRelationshipEntity : SugarBaseEntity, ITenantId
{
///
- /// 餐次组合Code
+ /// 餐别Code
///
- [SugarColumn(ColumnDescription = "餐次组合Code", UniqueGroupNameList = new[] { "idx_CanteenBusinessShiftRelationship_shiftcode_shifttype" })]
+ [SugarColumn(ColumnDescription = "餐别Code", UniqueGroupNameList = new[] { "idx_CanteenBusinessShiftRelationship_shiftcode_shifttype" })]
public Guid ShiftCode { get; set; }
///
- /// 餐次组合手工号
+ /// 餐别手工号
///
- [SugarColumn(ColumnDescription = "餐次组合手工号")]
+ [SugarColumn(ColumnDescription = "餐别编码")]
public string ShiftCustomCode { get; set; }
///
/// 餐次
///
- [SugarColumn(ColumnDescription = "餐次", UniqueGroupNameList = new[] { "idx_CanteenBusinessShiftRelationship_shiftcode_shifttype" })]
- public string ShiftType { get; set; }
+ [SugarColumn(ColumnDescription = "餐次", ColumnDataType = "varchar(50)", SqlParameterDbType = typeof(EnumToStringConvert), UniqueGroupNameList = new[] { "idx_CanteenBusinessShiftRelationship_shiftcode_shifttype" })]
+ public ShiftEnumType ShiftType { get; set; }
///
/// 经营开始时间
diff --git a/Src/Dlhis.Entity/Canteen/Entities/BalanceRecordEntity.cs b/Src/Dlhis.Entity/Canteen/Entities/BalanceRecordEntity.cs
index 9b69d0ce..4a95d47f 100644
--- a/Src/Dlhis.Entity/Canteen/Entities/BalanceRecordEntity.cs
+++ b/Src/Dlhis.Entity/Canteen/Entities/BalanceRecordEntity.cs
@@ -68,16 +68,16 @@ public class BalanceRecordEntity : SugarBaseEntity, ITenantId
public Guid? BusinessPlaceCode { get; set; }
///
- /// 餐次
+ /// 餐别
///
- [SugarColumn(ColumnDescription = "餐次", IsNullable = true)]
+ [SugarColumn(ColumnDescription = "餐别", IsNullable = true)]
public Guid? BusinessShiftCode { get; set; }
///
- /// 餐次段
+ /// 餐次
///
- [SugarColumn(ColumnDescription = "餐次段", IsNullable = true)]
- public string ShiftType { get; set; }
+ [SugarColumn(ColumnDescription = "餐次", ColumnDataType = "varchar(50)", IsNullable = true, SqlParameterDbType = typeof(EnumToStringConvert))]
+ public ShiftEnumType? ShiftType { get; set; }
///
/// 所属成本日期
@@ -89,7 +89,7 @@ public class BalanceRecordEntity : SugarBaseEntity, ITenantId
/// 消费机器唯一信息
///
[SugarColumn(ColumnDescription = "消费机器唯一信息", IsNullable = true)]
- public string DeviceInfo { get; set; }
+ public string DeviceUniqueNo { get; set; }
///
/// 餐补月份
@@ -139,5 +139,12 @@ public class BalanceRecordEntity : SugarBaseEntity, ITenantId
[SugarColumn(ColumnDescription = "备注")]
public string Remark { get; set; }
+ ///
+ /// 餐饮应用类型
+ ///
+ [SugarColumn(ColumnDescription = "餐饮应用类型", ColumnDataType = "varchar(50)", SqlParameterDbType = typeof(EnumToStringConvert))]
+ public CanteenApplicaitonTypeEnumType ApplicationType { get; set; }
+
+
public string TenantId { get; set; }
}
\ No newline at end of file
diff --git a/Src/Dlhis.Entity/Canteen/Entities/CanteenDishesEntity.cs b/Src/Dlhis.Entity/Canteen/Entities/CanteenDishesEntity.cs
deleted file mode 100644
index 25dfd418..00000000
--- a/Src/Dlhis.Entity/Canteen/Entities/CanteenDishesEntity.cs
+++ /dev/null
@@ -1,80 +0,0 @@
-using Dlhis.Entity.Canteen.Enums;
-using Kurisu.SqlSugar;
-using SqlSugar;
-using SqlSugar.DbConvert;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace Dlhis.Entity.Canteen.Entities
-{
- ///
- /// 菜品表
- ///
- [SugarTable(TableName = "CanteenDishes", TableDescription = "菜品表")]
- public class CanteenDishesEntity : SugarBaseEntity
- {
-
- ///
- /// 大类
- ///
- [SugarColumn(ColumnDescription = "大类")]
- public string Categories { get; set; }
-
- ///
- /// 小类
- ///
- [SugarColumn(ColumnDescription = "小类")]
- public string SubCategories { get; set; }
-
- ///
- /// 菜品编码
- ///
- [SugarColumn(ColumnDescription = "菜品编码")]
- public Guid Code { get; set; }
-
- ///
- /// 菜品名称
- ///
- [SugarColumn(ColumnDescription = "菜品名称")]
- public string Name { get; set; }
-
- ///
- /// 类型
- ///
- [SugarColumn(ColumnDescription = "类型", ColumnDataType = "varchar(50)", SqlParameterDbType = typeof(EnumToStringConvert))]
- public CanteenDishesEnumType Type { get; set; }
-
- ///
- /// 描述
- ///
- [SugarColumn(ColumnDescription = "描述")]
- public string Description { get; set; }
-
- ///
- /// 单价
- ///
- [SugarColumn(ColumnDescription = "单价")]
- public decimal Amount { get; set; }
-
- ///
- /// 单位
- ///
- [SugarColumn(ColumnDescription = "单位")]
- public string Unit { get; set; }
-
- ///
- /// 图片
- ///
- [SugarColumn(ColumnDescription = "图片")]
- public string Image { get; set; }
-
- ///
- /// 是否启用
- ///
- [SugarColumn(ColumnDataType = "bit", ColumnDescription = "是否启用")]
- public bool Enable { get; set; }
- }
-}
diff --git a/Src/Dlhis.Entity/Canteen/Entities/CanteenMenuDishersRelationshipEntity.cs b/Src/Dlhis.Entity/Canteen/Entities/CanteenMenuDishersRelationshipEntity.cs
deleted file mode 100644
index da94aa3b..00000000
--- a/Src/Dlhis.Entity/Canteen/Entities/CanteenMenuDishersRelationshipEntity.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-using Kurisu.SqlSugar;
-using SqlSugar;
-
-namespace Dlhis.Entity.Canteen.Entities
-{
- ///
- /// 菜单菜品表
- ///
- [SugarTable(TableName = "CanteenMenuDishersRelationship", TableDescription = "菜单菜品表")]
- public class CanteenMenuDishersRelationshipEntity : SugarBaseEntity
- {
- ///
- /// 菜单code
- ///
- public Guid MenuCode { get; set; }
-
- ///
- /// 菜品code
- ///
- public Guid DishersCode { get; set; }
-
- ///
- /// 限售份数
- ///
- public int RestrictedNum { get; set; }
-
- ///
- /// 版本
- ///
- public int Version { get; set; }
- }
-}
diff --git a/Src/Dlhis.Entity/Canteen/Entities/CanteenMenuEntity.cs b/Src/Dlhis.Entity/Canteen/Entities/CanteenMenuEntity.cs
deleted file mode 100644
index 03461d3a..00000000
--- a/Src/Dlhis.Entity/Canteen/Entities/CanteenMenuEntity.cs
+++ /dev/null
@@ -1,58 +0,0 @@
-using Dlhis.Entity.Canteen.Enums;
-using Kurisu.SqlSugar;
-using SqlSugar;
-
-namespace Dlhis.Entity.Canteen.Entities;
-
-///
-/// 菜单表
-///
-[SugarTable(TableName = "CanteenMenu", TableDescription = "菜单表")]
-public class CanteenMenuEntity : SugarBaseEntity
-{
-
- ///
- /// 菜单编码
- ///
- [SugarColumn(ColumnDescription = "菜单编码")]
- public Guid Code { get; set; }
-
- ///
- /// 菜单名称
- ///
- [SugarColumn(ColumnDescription = "菜单名称")]
- public string Name { get; set; }
-
- ///
- /// 所属营业点
- ///
- [SugarColumn(ColumnDescription = "所属营业点")]
- public Guid PlaceCode { get; set; }
-
- ///
- /// 厂区
- ///
- [SugarColumn(ColumnDescription = "厂区")]
- public string Factory { get; set; }
-
- ///
- /// 营业日期
- ///
- [SugarColumn(ColumnDescription = "营业日期")]
- public DateOnly StartDate { get; set; }
-
-
- ///
- /// 餐次段
- ///
- [SugarColumn(ColumnDataType = "varchar(150)", IsJson = true, ColumnDescription = "餐次段", DefaultValue = "[]")]
- public List ShiftTypes { get; set; }
-
- ///
- /// 是否启用
- ///
- [SugarColumn(ColumnDataType = "bit", ColumnDescription = "是否启用")]
- public bool Enable { get; set; }
-}
-
-
diff --git a/Src/Dlhis.Entity/Canteen/Entities/DishesCategoryEntity.cs b/Src/Dlhis.Entity/Canteen/Entities/DishesCategoryEntity.cs
new file mode 100644
index 00000000..0f40049f
--- /dev/null
+++ b/Src/Dlhis.Entity/Canteen/Entities/DishesCategoryEntity.cs
@@ -0,0 +1,35 @@
+using Kurisu.Core.DataAccess.Entity;
+using Kurisu.SqlSugar;
+using SqlSugar;
+
+namespace Dlhis.Entity.Canteen.Entities;
+
+[SugarTable(TableName = "DishesCategory", TableDescription = "菜品分类")]
+public class DishesCategoryEntity : SugarBaseEntity, ITenantId
+{
+ ///
+ /// PCode
+ ///
+ public Guid? PCode { get; set; }
+
+ ///
+ /// Code
+ ///
+ [SugarColumn(IsNullable = false)]
+ public Guid Code { get; set; }
+
+ ///
+ /// 分类名称
+ ///
+ [SugarColumn(IsNullable = false, ColumnDescription = "名称")]
+ public string Name { get; set; }
+
+ ///
+ /// 序号
+ ///
+ [SugarColumn(IsNullable = false, ColumnDescription = "序号", DefaultValue = "100")]
+ public int Sequence { get; set; } = 100;
+
+
+ public string TenantId { get; set; }
+}
diff --git a/Src/Dlhis.Entity/Canteen/Entities/DishesEntity.cs b/Src/Dlhis.Entity/Canteen/Entities/DishesEntity.cs
new file mode 100644
index 00000000..99fd60d5
--- /dev/null
+++ b/Src/Dlhis.Entity/Canteen/Entities/DishesEntity.cs
@@ -0,0 +1,71 @@
+using Kurisu.Core.DataAccess.Entity;
+using Kurisu.SqlSugar;
+using Mapster;
+using SqlSugar;
+
+namespace Dlhis.Entity.Canteen.Entities;
+
+///
+/// 菜品表
+///
+[SugarTable(TableName = "Dishes", TableDescription = "菜品表")]
+public class DishesEntity : SugarBaseEntity, IImageUrl, ITenantId
+{
+ ///
+ /// 分类
+ ///
+ [SugarColumn(ColumnDescription = "分类", IsNullable = false)]
+ public Guid CategoryCode { get; set; }
+
+ ///
+ /// 营业点
+ ///
+ [SugarColumn(ColumnDescription = "营业点", IsNullable = false)]
+ public Guid BusinessPlaceCode { get; set; }
+
+ ///
+ /// 菜品编码
+ ///
+ [AdaptIgnore(MemberSide.Destination)]
+ [SugarColumn(ColumnDescription = "菜品编码", IsNullable = false)]
+ public string CustomCode { get; set; }
+
+ ///
+ /// 菜品名称
+ ///
+ [SugarColumn(ColumnDescription = "菜品名称", IsNullable = false)]
+ public string Name { get; set; }
+
+ ///
+ /// 描述
+ ///
+ [SugarColumn(ColumnDescription = "描述")]
+ public string Description { get; set; }
+
+ ///
+ /// 单价
+ ///
+ [SugarColumn(ColumnDescription = "单价")]
+ public decimal Price { get; set; }
+
+ ///
+ /// 单位
+ ///
+ [SugarColumn(ColumnDescription = "单位", IsJson = true, DefaultValue = "[]")]
+ public List Units { get; set; }
+
+ ///
+ /// 图片
+ ///
+ [SugarColumn(ColumnDescription = "图片")]
+ public string ImageUrl { get; set; }
+
+ ///
+ /// 是否启用
+ ///
+ [SugarColumn(ColumnDataType = "bit", ColumnDescription = "是否启用")]
+ public bool Enable { get; set; }
+
+
+ public string TenantId { get; set; }
+}
diff --git a/Src/Dlhis.Entity/Canteen/Entities/DishesMenuEntity.cs b/Src/Dlhis.Entity/Canteen/Entities/DishesMenuEntity.cs
new file mode 100644
index 00000000..928c9040
--- /dev/null
+++ b/Src/Dlhis.Entity/Canteen/Entities/DishesMenuEntity.cs
@@ -0,0 +1,78 @@
+using Dlhis.Entity.Canteen.Enums;
+using Kurisu.Core.DataAccess.Entity;
+using Kurisu.SqlSugar;
+using SqlSugar;
+using SqlSugar.DbConvert;
+
+namespace Dlhis.Entity.Canteen.Entities;
+
+///
+/// 菜单表
+///
+[SugarTable(TableName = "DishesMenu", TableDescription = "菜单表")]
+public class DishesMenuEntity : SugarBaseEntity, ITenantId, IVersion
+{
+ ///
+ /// 菜单编码
+ ///
+ [SugarColumn(ColumnDescription = "菜单编码")]
+ public string CustomCode { get; set; }
+
+ ///
+ /// 菜单类型
+ ///
+ [SugarColumn(ColumnDataType = "varchar(50)", SqlParameterDbType = typeof(EnumToStringConvert))]
+ public CanteenApplicaitonTypeEnumType Type { get; set; }
+
+ ///
+ /// 所属营业点
+ ///
+ [SugarColumn(ColumnDescription = "所属营业点")]
+ public Guid BusinessPlaceCode { get; set; }
+
+ ///
+ /// 营业日期
+ ///
+ [SugarColumn(ColumnDataType = "date", ColumnDescription = "营业日期")]
+ public DateTime Date { get; set; }
+
+
+ ///
+ /// 餐次
+ ///
+ [SugarColumn(ColumnDataType = "varchar(50)", ColumnDescription = "餐次")]
+ public ShiftEnumType ShiftType { get; set; }
+
+
+ ///
+ /// 菜品编码
+ ///
+ public string DishesCode { get; set; }
+
+ ///
+ /// 剩余数量
+ ///
+ public int Number { get; set; }
+
+
+ ///
+ /// 单价
+ ///
+ public decimal? Price { get; set; }
+
+ ///
+ /// 是否启用
+ ///
+ [SugarColumn(ColumnDataType = "bit", ColumnDescription = "是否启用")]
+ public bool Enable { get; set; }
+
+
+ public string TenantId { get; set; }
+
+ ///
+ /// 并发控制
+ ///
+ public int Version { get; set; }
+}
+
+
diff --git a/Src/Dlhis.Entity/Canteen/Entities/MiniProgramOrderEntity.cs b/Src/Dlhis.Entity/Canteen/Entities/MiniProgramOrderEntity.cs
deleted file mode 100644
index 13ba9fed..00000000
--- a/Src/Dlhis.Entity/Canteen/Entities/MiniProgramOrderEntity.cs
+++ /dev/null
@@ -1,122 +0,0 @@
-using Dlhis.Entity.Canteen.Enums;
-using Kurisu.SqlSugar;
-using SqlSugar;
-using SqlSugar.DbConvert;
-
-namespace Dlhis.Entity.Canteen.Entities
-{
- ///
- /// 小程序订单表
- ///
- [SugarTable(TableName = "MiniProgramOrder", TableDescription = "小程序订单表")]
- public class MiniProgramOrderEntity : SugarBaseEntity
- {
- ///
- /// 订单号
- ///
- [SugarColumn(ColumnDescription = "订单号")]
- public string No { get; set; }
-
- ///
- /// 姓名
- ///
- [SugarColumn(ColumnDescription = "姓名")]
- public string Name { get; set; }
-
- ///
- /// 工号
- ///
- [SugarColumn(ColumnDescription = "工号")]
- public string Code { get; set; }
-
- ///
- /// 人事范围
- ///
- [SugarColumn(ColumnDescription = "人事范围")]
- public string Werks { get; set; }
-
- ///
- /// 部门编码
- ///
- [SugarColumn(ColumnDescription = "部门编码")]
- public string DepartmentNo { get; set; }
-
- ///
- /// 成本中心
- ///
- [SugarColumn(ColumnDescription = "成本中心")]
- public string CostId { get; set; }
-
- ///
- /// 工作地
- ///
- [SugarColumn(ColumnDescription = "工作地")]
- public string Workplace { get; set; }
-
- ///
- /// 厂区
- ///
- [SugarColumn(ColumnDescription = "厂区")]
- public string Factory { get; set; }
-
- ///
- /// 营业点
- ///
- [SugarColumn(ColumnDescription = "营业点")]
- public Guid PlaceCode { get; set; }
-
- ///
- /// 餐次
- ///
- [SugarColumn(ColumnDataType = "varchar(50)", SqlParameterDbType = typeof(EnumToStringConvert), ColumnDescription = "餐次")]
- public ShiftEnumType ShiftType { get; set; }
-
- ///
- /// 菜品
- ///
- [SugarColumn(ColumnDescription = "菜品")]
- public Guid DishesCode { get; set; }
-
- ///
- /// 手机号码
- ///
- [SugarColumn(ColumnDescription = "手机号码")]
- public string Phone { get; set; }
-
- ///
- /// 用餐日期
- ///
- [SugarColumn(ColumnDescription = "用餐日期")]
- public DateOnly SysDate { get; set; }
-
- ///
- /// 下单时间
- ///
- [SugarColumn(ColumnDescription = "下单时间")]
- public DateTime CostDate { get; set; }
-
- ///
- /// 支付方式
- ///
- [SugarColumn(ColumnDescription = "支付方式", ColumnDataType = "varchar(50)", SqlParameterDbType = typeof(EnumToStringConvert))]
- public CanteenPayEnumType PayType { get; set; }
-
- ///
- /// 订单状态
- ///
- [SugarColumn(ColumnDataType = "varchar(50)", SqlParameterDbType = typeof(EnumToStringConvert), ColumnDescription = "订单状态")]
- public MiniProgramOrderStatusEnumType OrderStatus { get; set; }
-
- ///
- /// 订单类型
- ///
- [SugarColumn(ColumnDataType = "varchar(50)", SqlParameterDbType = typeof(EnumToStringConvert), ColumnDescription = "订单类型")]
- public CanteenDishesEnumType OrderType { get; set; }
-
- ///
- /// 总金额
- ///
- [SugarColumn(ColumnDescription = "总金额")]
- public decimal TotalAmount { get; set; }
- }
-}
diff --git a/Src/Dlhis.Entity/Canteen/Entities/OrderDetailEntity.cs b/Src/Dlhis.Entity/Canteen/Entities/OrderDetailEntity.cs
new file mode 100644
index 00000000..53b59bd9
--- /dev/null
+++ b/Src/Dlhis.Entity/Canteen/Entities/OrderDetailEntity.cs
@@ -0,0 +1,54 @@
+using Dlhis.Entity.Canteen.Enums;
+using Kurisu.Core.DataAccess.Entity;
+using Kurisu.SqlSugar;
+using SqlSugar;
+using SqlSugar.DbConvert;
+
+namespace Dlhis.Entity.Canteen.Entities;
+
+///
+/// 订餐明细表
+///
+[SugarTable(TableName = "OrderDetail", TableDescription = "订单明细表")]
+public class OrderDetailEntity : SugarBaseEntity, ITenantId
+{
+ ///
+ /// 订单号
+ ///
+ [SugarColumn(ColumnDescription = "订单号")]
+ public string OrderNo { get; set; }
+
+ ///
+ /// 菜品编码
+ ///
+ [SugarColumn(ColumnDescription = "菜品编码")]
+ public string DishesCode { get; set; }
+
+ ///
+ /// 单价
+ ///
+ [SugarColumn(ColumnDescription = "单价")]
+ public decimal Price { get; set; }
+
+ ///
+ /// 数量
+ ///
+ [SugarColumn(ColumnDescription = "数量")]
+ public int Number { get; set; }
+
+ ///
+ /// 单位
+ ///
+ [SugarColumn(ColumnDescription = "单位")]
+ public string Unit { get; set; }
+
+
+ ///
+ /// 订单明细状态
+ ///
+ [SugarColumn(ColumnDataType = "varchar(50)", SqlParameterDbType = typeof(EnumToStringConvert), ColumnDescription = "状态")]
+ public OrderDetailsStatusEnumType Status { get; set; }
+
+
+ public string TenantId { get; set; }
+}
diff --git a/Src/Dlhis.Entity/Canteen/Entities/OrderDetailsEntity.cs b/Src/Dlhis.Entity/Canteen/Entities/OrderDetailsEntity.cs
deleted file mode 100644
index 7ba082e5..00000000
--- a/Src/Dlhis.Entity/Canteen/Entities/OrderDetailsEntity.cs
+++ /dev/null
@@ -1,74 +0,0 @@
-using Dlhis.Entity.Canteen.Enums;
-using Kurisu.SqlSugar;
-using SqlSugar;
-using SqlSugar.DbConvert;
-
-namespace Dlhis.Entity.Canteen.Entities
-{
- ///
- /// 订餐明细表
- ///
- [SugarTable(TableName = "OrderDetails", TableDescription = "订餐明细表")]
- public class OrderDetailsEntity : SugarBaseEntity
- {
- ///
- /// 订单号
- ///
- [SugarColumn(ColumnDescription = "订单号")]
- public string ThirdNo { get; set; }
-
- ///
- /// 营业日(用餐日期)
- ///
- [SugarColumn(ColumnDescription = "营业日")]
- public DateOnly SysDate { get; set; }
-
- ///
- /// 餐次
- ///
- [SugarColumn(ColumnDataType = "varchar(50)", SqlParameterDbType = typeof(EnumToStringConvert), ColumnDescription = "餐次")]
- public ShiftEnumType ShiftType { get; set; }
-
- ///
- /// 菜品编码
- ///
- [SugarColumn(ColumnDescription = "菜品编码")]
- public Guid DishesCode { get; set; }
-
- ///
- /// 菜品名称
- ///
- [SugarColumn(ColumnDescription = "菜品名称")]
- public string DishesName { get; set; }
-
- ///
- /// 单价
- ///
- [SugarColumn(ColumnDescription = "单价")]
- public decimal Price { get; set; }
-
- ///
- /// 单位
- ///
- [SugarColumn(ColumnDescription = "单位")]
- public string Unit { get; set; }
-
- ///
- /// 数量
- ///
- [SugarColumn(ColumnDescription = "数量")]
- public int Num { get; set; }
-
- ///
- /// 金额
- ///
- [SugarColumn(ColumnDescription = "金额")]
- public decimal Amount { get; set; }
-
- ///
- /// 订单明细状态
- ///
- [SugarColumn(ColumnDataType = "varchar(50)", SqlParameterDbType = typeof(EnumToStringConvert), ColumnDescription = "订单明细状态")]
- public OrderDetailsStatusEnumType OrderStatus { get; set; }
- }
-}
diff --git a/Src/Dlhis.Entity/Canteen/Enums/CanteenApplicaitonTypeEnumType.cs b/Src/Dlhis.Entity/Canteen/Enums/CanteenApplicaitonTypeEnumType.cs
new file mode 100644
index 00000000..00dcd22a
--- /dev/null
+++ b/Src/Dlhis.Entity/Canteen/Enums/CanteenApplicaitonTypeEnumType.cs
@@ -0,0 +1,25 @@
+using System.ComponentModel;
+
+namespace Dlhis.Entity.Canteen.Enums;
+
+///
+/// 餐饮应用类型
+///
+[Description("餐饮应用类型")]
+public enum CanteenApplicaitonTypeEnumType
+{
+ [Description("设备消费")]
+ Device = 100,
+
+ ///
+ /// 订餐
+ ///
+ [Description("订餐")]
+ Booking = 200,
+
+ ///
+ /// 扫码点餐
+ ///
+ [Description("扫码点餐")]
+ QrCode = 300,
+}
diff --git a/Src/Dlhis.Entity/Canteen/Enums/CanteenDishesEnumType.cs b/Src/Dlhis.Entity/Canteen/Enums/CanteenDishesEnumType.cs
deleted file mode 100644
index dc3ba103..00000000
--- a/Src/Dlhis.Entity/Canteen/Enums/CanteenDishesEnumType.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace Dlhis.Entity.Canteen.Enums
-{
- ///
- /// 菜品类型
- ///
- [Description("菜品类型")]
- public enum CanteenDishesEnumType
- {
-
- ///
- /// 订餐
- ///
- [Description("订餐")]
- Order = 1,
-
- ///
- /// 扫码点餐
- ///
- [Description("扫码点餐")]
- QrCode=2,
-
- ///
- /// 通用
- ///
- [Description("通用")]
- General = 3,
- }
-}
diff --git a/Src/Dlhis.Entity/Canteen/Enums/CanteenOrderStatusEnumType.cs b/Src/Dlhis.Entity/Canteen/Enums/CanteenOrderStatusEnumType.cs
index 2a304386..9a670e93 100644
--- a/Src/Dlhis.Entity/Canteen/Enums/CanteenOrderStatusEnumType.cs
+++ b/Src/Dlhis.Entity/Canteen/Enums/CanteenOrderStatusEnumType.cs
@@ -20,6 +20,11 @@ public enum CanteenOrderStatusEnumType
[Description("成功")]
Successful = 1,
+ ///
+ /// 取消
+ ///
+ [Description("取消")]
+ Cancel = 95,
///
/// 失败
diff --git a/Src/Dlhis.Entity/Canteen/Enums/CanteenPayEnumType.cs b/Src/Dlhis.Entity/Canteen/Enums/CanteenPayEnumType.cs
deleted file mode 100644
index 72218726..00000000
--- a/Src/Dlhis.Entity/Canteen/Enums/CanteenPayEnumType.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace Dlhis.Entity.Canteen.Enums
-{
- ///
- /// 支付方式
- ///
- [Description("支付方式")]
- public enum CanteenPayEnumType
- {
- ///
- /// 餐补
- ///
- [Description("餐补")]
- Repair = 1,
-
- ///
- /// 现场
- ///
- [Description("现场")]
- Scene = 2,
- }
-}
diff --git a/Src/Dlhis.Entity/Canteen/Enums/CanteenSettingItemEnumType.cs b/Src/Dlhis.Entity/Canteen/Enums/CanteenSettingItemEnumType.cs
index a5ac6a98..c9e33c4b 100644
--- a/Src/Dlhis.Entity/Canteen/Enums/CanteenSettingItemEnumType.cs
+++ b/Src/Dlhis.Entity/Canteen/Enums/CanteenSettingItemEnumType.cs
@@ -14,6 +14,12 @@ public enum CanteenSettingItemEnumType
[Description("营业点切换时间(HH:00:00)")]
BusinessSwitchTime = 100,
+ ///
+ /// 订餐最晚时间
+ ///
+ [Description("订餐最晚时间(HH:mm:00)")]
+ BookingDeadline = 101,
+
//----------------------------------------------------------------[200,300)--------------------------------------------------------------------------------------
diff --git a/Src/Dlhis.Entity/Canteen/Enums/OrderDetailsStatusEnumType.cs b/Src/Dlhis.Entity/Canteen/Enums/OrderDetailsStatusEnumType.cs
index 0012812e..0b4eed43 100644
--- a/Src/Dlhis.Entity/Canteen/Enums/OrderDetailsStatusEnumType.cs
+++ b/Src/Dlhis.Entity/Canteen/Enums/OrderDetailsStatusEnumType.cs
@@ -1,14 +1,9 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using System.ComponentModel;
namespace Dlhis.Entity.Canteen.Enums
{
///
- /// 订单明细状态
+ /// 订单明细状态 OrderDetailsStatusEnumType
///
[Description("订单明细状态")]
public enum OrderDetailsStatusEnumType
diff --git a/Src/Dlhis.Entity/Canteen/Enums/ShiftEnumType.cs b/Src/Dlhis.Entity/Canteen/Enums/ShiftEnumType.cs
index d760412a..410b9f27 100644
--- a/Src/Dlhis.Entity/Canteen/Enums/ShiftEnumType.cs
+++ b/Src/Dlhis.Entity/Canteen/Enums/ShiftEnumType.cs
@@ -1,41 +1,40 @@
using System.ComponentModel;
-namespace Dlhis.Entity.Canteen.Enums
+namespace Dlhis.Entity.Canteen.Enums;
+
+///
+/// 餐次 ShiftEnumType
+///
+[Description("餐次")]
+public enum ShiftEnumType
{
///
- /// 餐次
+ /// 早餐
///
- [Description("餐次")]
- public enum ShiftEnumType
- {
- ///
- /// 早餐
- ///
- [Description("早餐")]
- Breakfast = 1,
+ [Description("早餐")]
+ Breakfast = 1,
- ///
- /// 午餐
- ///
- [Description("午餐")]
- Lunch = 2,
+ ///
+ /// 午餐
+ ///
+ [Description("午餐")]
+ Lunch = 2,
- ///
- /// 晚餐
- ///
- [Description("晚餐")]
- Dinner = 3,
+ ///
+ /// 晚餐
+ ///
+ [Description("晚餐")]
+ Dinner = 3,
- ///
- /// 宵夜
- ///
- [Description("宵夜")]
- Nightsnack = 4,
+ ///
+ /// 宵夜
+ ///
+ [Description("宵夜")]
+ Nightsnack = 4,
- ///
- /// 凌晨餐
- ///
- [Description("凌晨餐")]
- Midnightsnack = 5,
- }
+ ///
+ /// 凌晨餐
+ ///
+ [Description("凌晨餐")]
+ Midnightsnack = 5,
}
\ No newline at end of file
diff --git a/Src/Dlhis.Entity/IImageUrl.cs b/Src/Dlhis.Entity/IImageUrl.cs
new file mode 100644
index 00000000..d08b1842
--- /dev/null
+++ b/Src/Dlhis.Entity/IImageUrl.cs
@@ -0,0 +1,6 @@
+namespace Dlhis.Entity;
+
+public interface IImageUrl
+{
+ public string ImageUrl { get; set; }
+}
diff --git a/Src/Dlhis.Entity/Sys/Enums/DeviceAssignmentTypeEnumType.cs b/Src/Dlhis.Entity/Sys/Enums/DeviceAssignmentTypeEnumType.cs
index d5614214..5302ddf8 100644
--- a/Src/Dlhis.Entity/Sys/Enums/DeviceAssignmentTypeEnumType.cs
+++ b/Src/Dlhis.Entity/Sys/Enums/DeviceAssignmentTypeEnumType.cs
@@ -18,5 +18,11 @@ public enum DeviceAssignmentTypeEnumType
/// 设备组
///
[Description("设备组")]
- Group = 2
+ Group = 2,
+
+ ///
+ /// 营业点
+ ///
+ [Description("营业点")]
+ BusinessPlace = 3,
}
diff --git a/Src/Dlhis.Sys/Dlhis.Sys.csproj b/Src/Dlhis.Sys/Dlhis.Sys.csproj
index b14b421d..60ff68d5 100644
--- a/Src/Dlhis.Sys/Dlhis.Sys.csproj
+++ b/Src/Dlhis.Sys/Dlhis.Sys.csproj
@@ -24,4 +24,10 @@
+
+
+
+
+
+
diff --git a/Src/Dlhis.Sys/Server/Controllers/ServerController.cs b/Src/Dlhis.Sys/Server/Controllers/ServerController.cs
new file mode 100644
index 00000000..28cbe670
--- /dev/null
+++ b/Src/Dlhis.Sys/Server/Controllers/ServerController.cs
@@ -0,0 +1,28 @@
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Dlhis.Sys.Server.Controllers;
+
+///
+/// 服务器信息
+///
+[Authorize]
+[Route("api/[controller]")]
+[ApiController]
+public class ServerController : ControllerBase
+{
+ public ServerController()
+ {
+
+ }
+
+ ///
+ /// 当前时间
+ ///
+ ///
+ [HttpGet("datetime")]
+ public DateTime GetServerDateTime()
+ {
+ return DateTime.Now;
+ }
+}