From 17aef775c3bdc986e307d15024e1bff0892a4a1c Mon Sep 17 00:00:00 2001 From: cheche <717840555@qq.com> Date: Mon, 11 Mar 2024 16:12:52 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E6=A0=B9=E6=8D=AE=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E6=9F=A5=E7=9C=8B=E9=A4=90=E9=A5=AE=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GainfoPermissionsController.cs | 34 ++++++++ .../Request/GetPlaceByGainfoRequest.cs | 8 ++ .../Response/GetPlaceByGainfoResponse.cs | 8 ++ .../Services/IGainfoPermissions.cs | 10 +++ .../Services/Implements/GainfoPermissions.cs | 78 +++++++++++++++++++ .../Services/Implements/GainfoService.cs | 2 +- .../Order/Request/BalanceRecordPageRequest.cs | 8 ++ .../Services/Implements/BalanceService.cs | 1 + 8 files changed, 148 insertions(+), 1 deletion(-) create mode 100644 Src/Dlhis.Basic/Organization/Controllers/GainfoPermissionsController.cs create mode 100644 Src/Dlhis.Basic/Organization/Request/GetPlaceByGainfoRequest.cs create mode 100644 Src/Dlhis.Basic/Organization/Response/GetPlaceByGainfoResponse.cs create mode 100644 Src/Dlhis.Basic/Organization/Services/IGainfoPermissions.cs create mode 100644 Src/Dlhis.Basic/Organization/Services/Implements/GainfoPermissions.cs diff --git a/Src/Dlhis.Basic/Organization/Controllers/GainfoPermissionsController.cs b/Src/Dlhis.Basic/Organization/Controllers/GainfoPermissionsController.cs new file mode 100644 index 00000000..7725e521 --- /dev/null +++ b/Src/Dlhis.Basic/Organization/Controllers/GainfoPermissionsController.cs @@ -0,0 +1,34 @@ +using Dlhis.Basic.Organization.Request; +using Dlhis.Basic.Organization.Response; +using Dlhis.Basic.Organization.Services; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; + +namespace Dlhis.Basic.Organization.Controllers +{ + [Authorize] + [Route("api/[controller]")] + [ApiController] + public class GainfoPermissionsController : ControllerBase + { + private readonly IGainfoPermissions _gainfoPermissions; + + + public GainfoPermissionsController(IGainfoPermissions gainfoPermissions) + { + _gainfoPermissions = gainfoPermissions; + } + + /// + /// 根据用户查看餐饮点 + /// + /// + /// + [HttpGet("placesByGainfo")] + public async Task> GetPlaceByGainfoAsync([FromQuery]GetPlaceByGainfoRequest request) + { + return await _gainfoPermissions.GetPlaceByGainfoAsync(request); + } + } +} diff --git a/Src/Dlhis.Basic/Organization/Request/GetPlaceByGainfoRequest.cs b/Src/Dlhis.Basic/Organization/Request/GetPlaceByGainfoRequest.cs new file mode 100644 index 00000000..234deffe --- /dev/null +++ b/Src/Dlhis.Basic/Organization/Request/GetPlaceByGainfoRequest.cs @@ -0,0 +1,8 @@ +using Kurisu.Core.DataAccess.Dto; + +namespace Dlhis.Basic.Organization.Request +{ + public class GetPlaceByGainfoRequest : PageDto + { + } +} diff --git a/Src/Dlhis.Basic/Organization/Response/GetPlaceByGainfoResponse.cs b/Src/Dlhis.Basic/Organization/Response/GetPlaceByGainfoResponse.cs new file mode 100644 index 00000000..9d864747 --- /dev/null +++ b/Src/Dlhis.Basic/Organization/Response/GetPlaceByGainfoResponse.cs @@ -0,0 +1,8 @@ +namespace Dlhis.Basic.Organization.Response +{ + public class GetPlaceByGainfoResponse + { + public Guid PlaceCode { get; set; } + public string PlaceName { get; set; } + } +} diff --git a/Src/Dlhis.Basic/Organization/Services/IGainfoPermissions.cs b/Src/Dlhis.Basic/Organization/Services/IGainfoPermissions.cs new file mode 100644 index 00000000..a98b07c1 --- /dev/null +++ b/Src/Dlhis.Basic/Organization/Services/IGainfoPermissions.cs @@ -0,0 +1,10 @@ +using Dlhis.Basic.Organization.Request; +using Dlhis.Basic.Organization.Response; + +namespace Dlhis.Basic.Organization.Services +{ + public interface IGainfoPermissions : IScopeDependency + { + Task> GetPlaceByGainfoAsync(GetPlaceByGainfoRequest request); + } +} diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoPermissions.cs b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoPermissions.cs new file mode 100644 index 00000000..cef76f14 --- /dev/null +++ b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoPermissions.cs @@ -0,0 +1,78 @@ +using Dlhis.Basic.Device.Request; +using Dlhis.Basic.Device.Services; +using Dlhis.Basic.Organization.Request; +using Dlhis.Basic.Organization.Response; +using Dlhis.Entity.Basic.Entity; +using Dlhis.Entity.Basic.Enums; +using Dlhis.Entity.Device.Entities; +using Dlhis.Entity.Device.Enums; +using Kurisu.AspNetCore.Utils.Extensions; +using Kurisu.SqlSugar.Services; + +namespace Dlhis.Basic.Organization.Services.Implements +{ + public class GainfoPermissions : IGainfoPermissions + { + private readonly IGainfoStore _gainfoStore; + private readonly IDevicePermissionService _devicePermissionService; + private readonly IDbContext _dbContext; + + public GainfoPermissions(IGainfoStore gainfoStore, IDevicePermissionService devicePermissionService, IDbContext dbContext) + { + _gainfoStore = gainfoStore; + _devicePermissionService = devicePermissionService; + _dbContext = dbContext; + } + + public async Task> GetPlaceByGainfoAsync(GetPlaceByGainfoRequest request) + { + var lst = new List(); + var gainfo = await _gainfoStore.Queryable(GainfoStatusEnumType.Working) + .Where(x => x.No == request.Search || x.Code == request.Search) + .FirstAsync(); + gainfo.ThrowIfNull($"用户不存在!"); + + var req = new AssigmentByCodeRequest + { + No = gainfo.No + }; + var devices = await _devicePermissionService.GetAssigmentByCodeAsync(req); + if (devices != null) + { + //用户权限设备 + var unids = new List(); + foreach (var item in devices.Data) + { + unids.Add(item.UniqueNo); + } + //餐饮设备 + var ids = await _dbContext.Queryable() + .Where(x => unids.Contains(x.UniqueNo)) + .Where(x => x.Type == DeviceTypeEnumType.Meal) + .Select(x => x.UniqueNo) + .ToListAsync(); + + var places = await _dbContext.Queryable() + .Where(x => ids.Contains(x.DeviceUniqueNo)) + .Select(x => x.BusinessPlaceCode) + .ToListAsync(); + var bplaces = await _dbContext.Queryable().ToListAsync(); + foreach (var code in places) + { + if(code == null) + { + continue; + } + var res = new GetPlaceByGainfoResponse(); + res.PlaceCode = (Guid)code; + res.PlaceName = bplaces.Where(x => x.Code == code).Select(x => x.Name).FirstOrDefault(); + lst.Add(res); + } + } + + return lst; + } + + + } +} diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs index 089e6d40..b64ad5a7 100644 --- a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs +++ b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs @@ -38,7 +38,7 @@ public class GainfoService : IGainfoService IServiceProvider serviceProvider, IConfiguration configuration, ILogger logger, - IDepartmentService departmentService = null) + IDepartmentService departmentService) { _gainfoStore = gainfoStore; _dbContext = dbContext; diff --git a/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageRequest.cs b/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageRequest.cs index b30c502c..2da9af54 100644 --- a/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageRequest.cs +++ b/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageRequest.cs @@ -2,6 +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; @@ -17,6 +19,12 @@ public class BalanceRecordPageRequest : PageDto, IValidatableObject /// public List ShiftTypes { get; set; } + /// + /// 充值/消费 + /// + [EnumDataType(typeof(BalanceRecordTypeEnumType))] + public BalanceRecordTypeEnumType Type { get; set; } + /// /// 查询日期范围类型 DateTimeSearchEnumType diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs index 1602bfe9..d4cbeed2 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs @@ -46,6 +46,7 @@ public class BalanceService : IBalanceService .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.ToString().IsPresent(),record => record.Type == request.Type) .WhereIF(request.Search.IsPresent(), (record, ga) => ga.Name.Contains(request.Search) || ga.Code.Contains(request.Search)