From 2cea51232f9ebd02488bca4e7d2c30b288e66c3b Mon Sep 17 00:00:00 2001 From: liguoyang Date: Tue, 2 Jul 2024 15:53:55 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E5=A4=84=E7=90=86=E8=90=A5=E4=B8=9A?= =?UTF-8?q?=E7=82=B9=E5=88=86=E9=85=8D=E5=8A=9F=E8=83=BD=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BusinessPlaceShiftSaveMealShiftRequest.cs | 7 +- .../Services/IBusinessPlaceShiftService.cs | 4 +- .../Implements/BusinessPlaceShiftService.cs | 66 +++++-------------- .../Filters/AssignPermissionLimitAttribute.cs | 8 +-- .../Controllers/BusinessPlacesController.cs | 17 +++-- .../Request/BusinessPlaceGetByCodeRequest.cs | 14 ---- .../Places/Response/DeviceCodeNameDetail.cs | 13 ++-- .../Implements/MealSupplementRecordService.cs | 2 +- .../Services/Implements/BalanceService.cs | 6 +- 9 files changed, 46 insertions(+), 91 deletions(-) delete mode 100644 Src/Dlhis.Basic/Places/Request/BusinessPlaceGetByCodeRequest.cs diff --git a/Src/Dlhis.Basic/BusinessShift/Request/BusinessPlaceShiftSaveMealShiftRequest.cs b/Src/Dlhis.Basic/BusinessShift/Request/BusinessPlaceShiftSaveMealShiftRequest.cs index a897d312..8093c05a 100644 --- a/Src/Dlhis.Basic/BusinessShift/Request/BusinessPlaceShiftSaveMealShiftRequest.cs +++ b/Src/Dlhis.Basic/BusinessShift/Request/BusinessPlaceShiftSaveMealShiftRequest.cs @@ -27,6 +27,7 @@ public class BusinessPlaceShiftSaveMealShiftRequest : IValidatableObject /// /// 时间段 /// + [Required(ErrorMessage = "时间段不可为空")] public TimePeriod TimePeriod { get; set; } @@ -37,14 +38,14 @@ public class BusinessPlaceShiftSaveMealShiftRequest : IValidatableObject yield return new ValidationResult("时间段配置错误", new[] { nameof(TimePeriod) }); } - if (TimePeriod?.Start == null || TimePeriod?.End == null) + if (TimePeriod!.Start == null || TimePeriod!.End == null) { yield return new ValidationResult("时间段配置错误", new[] { nameof(TimePeriod) }); } - if (TimePeriod.Start == TimePeriod.End) + if (TimePeriod!.Start == TimePeriod!.End) { yield return new ValidationResult("时间段设置区间有误,开始时段不能等于结束时段.", new[] { nameof(TimePeriod) }); } } -} +} \ No newline at end of file diff --git a/Src/Dlhis.Basic/BusinessShift/Services/IBusinessPlaceShiftService.cs b/Src/Dlhis.Basic/BusinessShift/Services/IBusinessPlaceShiftService.cs index 93bc40fe..ab289c96 100644 --- a/Src/Dlhis.Basic/BusinessShift/Services/IBusinessPlaceShiftService.cs +++ b/Src/Dlhis.Basic/BusinessShift/Services/IBusinessPlaceShiftService.cs @@ -18,7 +18,7 @@ public interface IBusinessPlaceShiftService : IScopeDependency Task GetShiftsByPlaceCustomCodeAsync(string placeCustomCode); - Task> GetDevicesByCode(BusinessPlaceGetByCodeRequest request); + Task> GetAssignmentsAsync(Guid code); - Task DispositionDeviceAsync(DispositionDeviceRequest request); + Task AssignAsync(DispositionDeviceRequest request); } diff --git a/Src/Dlhis.Basic/BusinessShift/Services/Implements/BusinessPlaceShiftService.cs b/Src/Dlhis.Basic/BusinessShift/Services/Implements/BusinessPlaceShiftService.cs index 3461d811..311be07e 100644 --- a/Src/Dlhis.Basic/BusinessShift/Services/Implements/BusinessPlaceShiftService.cs +++ b/Src/Dlhis.Basic/BusinessShift/Services/Implements/BusinessPlaceShiftService.cs @@ -102,8 +102,8 @@ public class BusinessPlaceShiftService : IBusinessPlaceShiftService entity.ShiftCode = shift.Code; entity.ShiftCustomCode = shift.CustomCode; - entity.Start = request.TimePeriod.Start.Value; - entity.End = request.TimePeriod.End.Value; + entity.Start = request.TimePeriod.Start!.Value; + entity.End = request.TimePeriod.End!.Value; await _dbContext.InsertAsync(entity); } @@ -112,11 +112,11 @@ public class BusinessPlaceShiftService : IBusinessPlaceShiftService var entity = await _dbContext.Queryable() .Where(x => x.ShiftCode == shiftCode) .SingleAsync(x => x.Id == request.Id); - + entity.ThrowIfNull("餐次段不存在"); - entity.Start = request.TimePeriod.Start.Value; - entity.End = request.TimePeriod.End.Value; + entity.Start = request.TimePeriod.Start!.Value; + entity.End = request.TimePeriod.End!.Value; request.Adapt(entity); await _dbContext.UpdateAsync(entity); @@ -183,62 +183,30 @@ public class BusinessPlaceShiftService : IBusinessPlaceShiftService }; } - public async Task> GetDevicesByCode(BusinessPlaceGetByCodeRequest request) + public async Task> GetAssignmentsAsync(Guid code) { - var regiss = await _dbContext.Queryable() - .Where(x => x.BusinessPlaceCode.ToString() == request.Code) - .ToListAsync(); - - var devices = await _dbContext.Queryable().ToListAsync(); - - var list = new List(); - if (regiss.Count > 0) - { - foreach (var regis in regiss) + return await _dbContext.Queryable() + .LeftJoin((x, d) => x.DeviceUniqueNo == d.UniqueNo) + .Where(x => x.BusinessPlaceCode == code) + .Select((x, d) => new DeviceCodeNameDetail { - var device = devices.Where(x => x.UniqueNo == regis.DeviceUniqueNo) - .FirstOrDefault(); - if (device != null) - { - var detail = new DeviceCodeNameDetail - { - UniqueNo = regis.DeviceUniqueNo, - UniqueName = device.Supplier - }; - list.Add(detail); - } - } - } - - //分页 - var startIndex = (request.PageIndex - 1) * request.PageSize; - var pagedData = list.Skip(startIndex).Take(request.PageSize).ToList(); - - var pagination = new Pagination - { - PageIndex = request.PageIndex, - PageSize = request.PageSize, - Total = list.Count, // 使用原始列表的总数进行分页 - Data = pagedData - }; - - return pagination; + UniqueNo = x.DeviceUniqueNo, + UniqueName = d.DeployPlace + }) + .ToListAsync(); } - public async Task DispositionDeviceAsync(DispositionDeviceRequest request) + public async Task AssignAsync(DispositionDeviceRequest request) { var place = await _dbContext.Queryable().Where(x => x.Code == request.PlaceCode).SingleAsync(); place.ThrowIfNull("营业点不存在"); var registries = await _dbContext.Queryable() - .Where(x => request.UniqueNos.Contains(x.DeviceUniqueNo)) + .Where(x => x.BusinessPlaceCode == request.PlaceCode || request.UniqueNos.Contains(x.DeviceUniqueNo)) .ToListAsync(); - foreach (var item in registries) - { - item.BusinessPlaceCode = request.PlaceCode; - } + registries.ForEach(item => { item.BusinessPlaceCode = request.UniqueNos.Contains(item.DeviceUniqueNo) ? request.PlaceCode : null; }); await _dbContext.UpdateAsync(registries); } diff --git a/Src/Dlhis.Basic/Device/Filters/AssignPermissionLimitAttribute.cs b/Src/Dlhis.Basic/Device/Filters/AssignPermissionLimitAttribute.cs index 42675f51..9809093d 100644 --- a/Src/Dlhis.Basic/Device/Filters/AssignPermissionLimitAttribute.cs +++ b/Src/Dlhis.Basic/Device/Filters/AssignPermissionLimitAttribute.cs @@ -15,10 +15,8 @@ public class AssignPermissionLimitAttribute : Attribute, IAsyncActionFilter var currentTenantId = currentUser.GetStringTenantId(); - await using (var handler = await redisCache.LockAsync($"permission:generate:{currentTenantId}")) - { - handler.Acquired.ThrowIfFalse("请勿频繁分配"); - await next(); - } + await using var handler = await redisCache.LockAsync($"permission:generate:{currentTenantId}"); + handler.Acquired.ThrowIfFalse("请勿频繁分配"); + await next(); } } \ No newline at end of file diff --git a/Src/Dlhis.Basic/Places/Controllers/BusinessPlacesController.cs b/Src/Dlhis.Basic/Places/Controllers/BusinessPlacesController.cs index edf388e1..635b6103 100644 --- a/Src/Dlhis.Basic/Places/Controllers/BusinessPlacesController.cs +++ b/Src/Dlhis.Basic/Places/Controllers/BusinessPlacesController.cs @@ -1,4 +1,5 @@ using Dlhis.Basic.BusinessShift.Services; +using Dlhis.Basic.Device.Filters; using Dlhis.Basic.Places.Request; using Dlhis.Basic.Places.Response; using Dlhis.Basic.Places.Services; @@ -109,12 +110,12 @@ public class BusinessPlacesController : ControllerBase /// /// 根据营业点获取下面的设备 /// - /// + /// /// - [HttpGet("devicenos")] - public async Task> GetDevicesByCode([FromQuery] BusinessPlaceGetByCodeRequest request) + [HttpGet("device/assignments")] + public async Task> GetAssignments(Guid code) { - return await _businessPlaceShiftService.GetDevicesByCode(request); + return await _businessPlaceShiftService.GetAssignmentsAsync(code); } /// @@ -122,9 +123,11 @@ public class BusinessPlacesController : ControllerBase /// /// /// - [HttpPost("disposition")] - public async Task DispositionDeviceAsync(DispositionDeviceRequest request) + [HttpPost("device/assign")] + [AssignPermissionLimit] + [DataPermission] + public async Task Assign(DispositionDeviceRequest request) { - await _businessPlaceShiftService.DispositionDeviceAsync(request); + await _businessPlaceShiftService.AssignAsync(request); } } \ No newline at end of file diff --git a/Src/Dlhis.Basic/Places/Request/BusinessPlaceGetByCodeRequest.cs b/Src/Dlhis.Basic/Places/Request/BusinessPlaceGetByCodeRequest.cs deleted file mode 100644 index a8087d14..00000000 --- a/Src/Dlhis.Basic/Places/Request/BusinessPlaceGetByCodeRequest.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System.ComponentModel.DataAnnotations; -using Kurisu.AspNetCore.DataAccess.Dto; - -namespace Dlhis.Basic.Places.Request -{ - public class BusinessPlaceGetByCodeRequest : PageDto - { - /// - /// 营业点号 - /// - [Required(ErrorMessage = "营业点号不能为空")] - public string Code { get; set; } - } -} \ No newline at end of file diff --git a/Src/Dlhis.Basic/Places/Response/DeviceCodeNameDetail.cs b/Src/Dlhis.Basic/Places/Response/DeviceCodeNameDetail.cs index 2ccfd906..b95f5056 100644 --- a/Src/Dlhis.Basic/Places/Response/DeviceCodeNameDetail.cs +++ b/Src/Dlhis.Basic/Places/Response/DeviceCodeNameDetail.cs @@ -1,8 +1,7 @@ -namespace Dlhis.Basic.Places.Response +namespace Dlhis.Basic.Places.Response; + +public class DeviceCodeNameDetail { - public class DeviceCodeNameDetail - { - public string UniqueNo { get; set; } - public string UniqueName { get; set; } - } -} + public string UniqueNo { get; set; } + public string UniqueName { get; set; } +} \ No newline at end of file diff --git a/Src/Dlhis.Canteen/MealSupplementRecord/Services/Implements/MealSupplementRecordService.cs b/Src/Dlhis.Canteen/MealSupplementRecord/Services/Implements/MealSupplementRecordService.cs index 4176fec9..870ade09 100644 --- a/Src/Dlhis.Canteen/MealSupplementRecord/Services/Implements/MealSupplementRecordService.cs +++ b/Src/Dlhis.Canteen/MealSupplementRecord/Services/Implements/MealSupplementRecordService.cs @@ -86,7 +86,7 @@ public class MealSupplementRecordService : IMealSupplementRecordService .Where(x => x.Status == BalanceRecordStatusEnumType.Valid) .Where(x => x.ApplicationType == CanteenApplicationTypeEnumType.MealSupplement) .Where(x => x.UserCode == code) - .OrderBy(x => x.CostDateTime, OrderByType.Desc) + .OrderBy(x => x.CostDateTime) .Select(x => new MealSupplementRecordItemResponse { CurrentAmount = x.Amount, diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs index 088844f3..cd4f24fd 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs @@ -303,7 +303,7 @@ public class BalanceService : IBalanceService .WhereIF(request.SearchDateTimePeriod?.End.HasValue == true, record => record.CostDate <= request.SearchDateTimePeriod.End) .WhereIF(request.ApplicationType.HasValue, record => record.ApplicationType == request.ApplicationType) .Where((record, ga) => ga.Code == jinkoCode) - .OrderBy(record => record.CreateTime, OrderByType.Desc) + .OrderBy(record => record.CostDateTime) .Select((record, ga, department, bPlace) => new BalanceRecordUserPageResponse { Id = record.Id, @@ -621,7 +621,7 @@ public class BalanceService : IBalanceService .Where(x => x.Code == request.UserCode) .SingleAsync(); - (gainfo == null).ThrowIfTrue($"工号{request.UserCode}不存在"); + gainfo.ThrowIfNull($"工号{request.UserCode}不存在"); await _dbContext.InsertAsync(new BalanceRecordEntity { @@ -686,7 +686,7 @@ public class BalanceService : IBalanceService } } - + public async Task ReCalcAsync(BalanceReCalcRequest request) { await CommonHelper.RetryAsync(async () =>