From b5c6551783d2b5a8ab7670279b10ce5ff2b1f977 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Sun, 28 Apr 2024 11:16:23 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{IDisheMenuApi.cs => IDishesMenuApi.cs} | 2 +- .../DevicePermissionsController.cs | 11 -- .../Device/Request/AssigmentByCodeRequest.cs | 15 -- .../Response/AssigmentByCodeResponse.cs | 17 --- .../Services/IDevicePermissionService.cs | 11 +- .../Implements/DevicePermissionService.cs | 87 +----------- .../Implements/BookingOrderService.cs | 130 +++++++++--------- 7 files changed, 72 insertions(+), 201 deletions(-) rename Src/Dlhis.Basic.Api/{IDisheMenuApi.cs => IDishesMenuApi.cs} (95%) delete mode 100644 Src/Dlhis.Basic/Device/Request/AssigmentByCodeRequest.cs delete mode 100644 Src/Dlhis.Basic/Device/Response/AssigmentByCodeResponse.cs diff --git a/Src/Dlhis.Basic.Api/IDisheMenuApi.cs b/Src/Dlhis.Basic.Api/IDishesMenuApi.cs similarity index 95% rename from Src/Dlhis.Basic.Api/IDisheMenuApi.cs rename to Src/Dlhis.Basic.Api/IDishesMenuApi.cs index 96b649da..20b31c99 100644 --- a/Src/Dlhis.Basic.Api/IDisheMenuApi.cs +++ b/Src/Dlhis.Basic.Api/IDishesMenuApi.cs @@ -5,7 +5,7 @@ using Kurisu.RemoteCall.Attributes; namespace Dlhis.Basic.Api; [EnableRemoteClient(Name = "basic-service", BaseUrl = "${InternalRequest:BasicRequestUrl}")] -public interface IDisheMenuApi +public interface IDishesMenuApi { /// /// diff --git a/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs b/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs index 05ac0ff5..8606dc88 100644 --- a/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs +++ b/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs @@ -45,17 +45,6 @@ public class DevicePermissionsController : ControllerBase return await _devicePermissionService.GetAssignmentsAsync(request.UniqueType, request.AssignType, request.AssignValue); } - /// - /// 获取用户权限设备 - /// - /// - /// - [HttpGet("assignmentsbyno")] - public async Task> GetAssigmentByCodeAsync([FromQuery] AssigmentByCodeRequest request) - { - return await _devicePermissionService.GetAssigmentByCodeAsync(request); - } - /// /// 获取就餐设备唯一号权限 diff --git a/Src/Dlhis.Basic/Device/Request/AssigmentByCodeRequest.cs b/Src/Dlhis.Basic/Device/Request/AssigmentByCodeRequest.cs deleted file mode 100644 index 4430c371..00000000 --- a/Src/Dlhis.Basic/Device/Request/AssigmentByCodeRequest.cs +++ /dev/null @@ -1,15 +0,0 @@ -using Kurisu.Core.DataAccess.Dto; -using SqlSugar; -using System.ComponentModel.DataAnnotations; - -namespace Dlhis.Basic.Device.Request -{ - public class AssigmentByCodeRequest : PageDto - { - /// - /// 档案号 - /// - [Required] - public string No { get; set; } - } -} diff --git a/Src/Dlhis.Basic/Device/Response/AssigmentByCodeResponse.cs b/Src/Dlhis.Basic/Device/Response/AssigmentByCodeResponse.cs deleted file mode 100644 index d6420096..00000000 --- a/Src/Dlhis.Basic/Device/Response/AssigmentByCodeResponse.cs +++ /dev/null @@ -1,17 +0,0 @@ -using SqlSugar; - -namespace Dlhis.Basic.Device.Response -{ - public class AssigmentByCodeResponse - { - /// - /// 设备唯一码,IP/MAC/SNO - /// - public string UniqueNo { get; set; } - - /// - /// 设备名称 - /// - public string UniqueName { get; set; } - } -} diff --git a/Src/Dlhis.Basic/Device/Services/IDevicePermissionService.cs b/Src/Dlhis.Basic/Device/Services/IDevicePermissionService.cs index 245c2b90..547e591f 100644 --- a/Src/Dlhis.Basic/Device/Services/IDevicePermissionService.cs +++ b/Src/Dlhis.Basic/Device/Services/IDevicePermissionService.cs @@ -42,8 +42,7 @@ public interface IDevicePermissionService : IScopeDependency /// /// Task GenerateDeviceTasksAsync(string userNo, DeviceTaskEnumType taskType); - - + /// /// 获取用户所有设备权限 /// @@ -59,14 +58,6 @@ public interface IDevicePermissionService : IScopeDependency /// Task> GetCanteenDeviceUniqueNosByUserNoAsync(string userNo); - /// - /// 获取用户权限设备 - /// - /// - /// - Task> GetAssigmentByCodeAsync(AssigmentByCodeRequest request); - - Task GetPermissionUsersInfoAsync(List userNos); diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs index 808eb322..7a36922d 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs @@ -318,79 +318,6 @@ public class DevicePermissionService : IDevicePermissionService return result.SelectMany(x => x.Codes).ToList(); } - - /// - /// 获取用户权限设备 - /// - /// - /// - 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().Where(x => x.Enable).ToListAsync(); - var regiss = await _dbContext.Queryable().ToListAsync(); - - if (ggs != null && ggs.Count > 0) - { - foreach (var gid in ggs) - { - var ds = await _dbContext.Queryable() - .Where(x => x.GroupCode == gid) - .Select(x => x.DeviceCode) - .ToListAsync(); - 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 = lst1.Distinct().ToList(); - var lst = devices.Where(x => dds.Contains(x.Code)) - .Select(x => new AssigmentByCodeResponse - { - UniqueNo = x.UniqueNo, - UniqueName = x.Supplier - }).ToList(); - - // 分页操作 - var startIndex = (request.PageIndex - 1) * request.PageSize; - var pagedData = lst.Skip(startIndex).Take(request.PageSize).ToList(); - - var pagination = new Pagination - { - PageIndex = request.PageIndex, - PageSize = request.PageSize, - Total = lst.Count, // 使用原始列表的总数进行分页 - Data = pagedData - }; - - return pagination; - - } - //************************************************ help methods ******************************************************* /// @@ -440,7 +367,7 @@ public class DevicePermissionService : IDevicePermissionService var tops = deviceGroups.Where(x => !x.PCode.HasValue).ToList(); tops.ForEach(x => { - RecursionGetNext(x, deviceGroups, tenantDevicePermissions, tenantDevicePermissions.SelectMany(x => x.Codes).Contains(x.Code)); + RecursionGetNext(x, deviceGroups, tenantDevicePermissions, tenantDevicePermissions.SelectMany(item => item.Codes).Contains(x.Code)); }); } @@ -471,8 +398,8 @@ public class DevicePermissionService : IDevicePermissionService private async Task>> GetAssignDeviceCodesInternalAsync(List userNos) { - var deivces = await _dbContext.Queryable().Where(x => x.Enable).ToListAsync(); - var deviceUniqueNos = deivces.Select(x => x.UniqueNo).ToList(); + var devices = await _dbContext.Queryable().Where(x => x.Enable).ToListAsync(); + var deviceUniqueNos = devices.Select(x => x.UniqueNo).ToList(); var registries = await _dbContext.Queryable() .Where(x => deviceUniqueNos.Contains(x.DeviceUniqueNo)) .Where(x => !SqlFunc.IsNullOrEmpty(x.BusinessPlaceCode)) @@ -493,7 +420,7 @@ public class DevicePermissionService : IDevicePermissionService foreach (var gainfo in gainfos) { - var codes = GetAssignDeviceCodesInternal(gainfo, gainfoGroupRelationships, devicePermissions, deviceGroups, deviceRelationships, registries, deivces); + var codes = GetAssignDeviceCodesInternal(gainfo, gainfoGroupRelationships, devicePermissions, deviceGroups, deviceRelationships, registries, devices); result.Add(gainfo.No, codes); } @@ -558,14 +485,14 @@ public class DevicePermissionService : IDevicePermissionService var deviceGroupCodes = deviceGroupDtos.SelectMany(x => x.Codes).Distinct().ToList(); var businessPlaceCodes = businessPlaceDtos.SelectMany(x => x.Codes).Distinct().ToList(); - var deveiceCodesByGroup = deviceGroupRelationships.Where(x => deviceGroupCodes.Contains(x.GroupCode)).GroupBy(x => x.TenantId) + var deviceCodesByGroup = deviceGroupRelationships.Where(x => deviceGroupCodes.Contains(x.GroupCode)).GroupBy(x => x.TenantId) .Select(x => new UserTenantDeviceCodeDto { Tenant = x.Key, Codes = x.Select(item => item.DeviceCode).Distinct().ToList() }); - var placeGroup = deviceRegistries.Where(x => businessPlaceCodes.Contains(x.BusinessPlaceCode.Value)).GroupBy(x => x.TenantId) + var placeGroup = deviceRegistries.Where(x => businessPlaceCodes.Contains(x.BusinessPlaceCode!.Value)).GroupBy(x => x.TenantId) .Select(x => { var currentDeviceUniqueNos = x.Select(item => item.DeviceUniqueNo).ToList(); @@ -578,7 +505,7 @@ public class DevicePermissionService : IDevicePermissionService }) .ToList(); - deviceDtos.AddRange(deveiceCodesByGroup); + deviceDtos.AddRange(deviceCodesByGroup); deviceDtos.AddRange(placeGroup); return deviceDtos.GroupBy(x => x.Tenant).Select(x => new UserTenantDeviceCodeDto diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs index 6b963f16..e9727865 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs @@ -19,16 +19,16 @@ namespace Dlhis.Canteen.Order.Services.Implements; public class BookingOrderService : BaseOrderService, IBookingOrderService { - private readonly IDisheMenuApi _disheMenuApi; + private readonly IDishesMenuApi _dishesMenuApi; private readonly IBusinessPlacePermissionsApi _businessPlacePermissionsApi; public BookingOrderService(ICanteenSettingService canteenSettingService, IDbContext dbContext, - IDisheMenuApi disheMenuApi, + IDishesMenuApi dishesMenuApi, IBusinessPlacePermissionsApi businessPlacePermissionsApi, ICurrentUser currentUser, IDevicePermissionApi devicePermissionApi, ILogger logger) : base(canteenSettingService, dbContext, currentUser, devicePermissionApi, logger) { - _disheMenuApi = disheMenuApi; + _dishesMenuApi = dishesMenuApi; _businessPlacePermissionsApi = businessPlacePermissionsApi; } @@ -46,7 +46,7 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService (now >= dealLine).ThrowIfTrue("超出订餐时间"); //菜单存在 - var menuDetailResult = await _disheMenuApi.GetBookingDishesDetailAsync(request.BookingDate, request.BusinessPlaceCode, (int)request.ShiftType, request.DishesCode); + var menuDetailResult = await _dishesMenuApi.GetBookingDishesDetailAsync(request.BookingDate, request.BusinessPlaceCode, (int)request.ShiftType, request.DishesCode); var menuDetail = menuDetailResult.Data; menuDetail.ThrowIfNull("预定失败,菜品已经下架"); @@ -75,7 +75,7 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService IsOffline = false, IsCostCrossTenant = await GetSettingAsync(businessPlace.TenantId, CanteenSettingItemEnumType.AllowCrossTenant), - OriginTenantId = gainfo.Factory,//人员可能跨基地消费 + OriginTenantId = gainfo.Factory, //人员可能跨基地消费 Status = BalanceRecordStatusEnumType.Valid, OrderStatus = CanteenOrderStatusEnumType.Success, @@ -89,8 +89,8 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService var orderId = await DbContext.InsertReturnIdentityAsync(order); await CommonHelper.RetryAsync(async () => { - await _disheMenuApi.GetBookingDishesDetailAsync(request.BookingDate, request.BusinessPlaceCode, (int)request.ShiftType, request.DishesCode); - var menuDetail = menuDetailResult.Data; + await _dishesMenuApi.GetBookingDishesDetailAsync(request.BookingDate, request.BusinessPlaceCode, (int)request.ShiftType, request.DishesCode); + menuDetail = menuDetailResult.Data; menuDetail.ThrowIfNull("预定失败,菜品已经下架"); menuDetail.Number -= request.Number; @@ -107,24 +107,24 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService (mealInfo.Balance < 0).ThrowIfTrue("余额不足,无法消费"); await DbContext.Updateable() - .SetColumns(x => x.Balance == mealInfo.Balance) - .SetColumns(x => x.Version == x.Version + 1) - .SetColumns(x => x.ModifiedTime == DateTime.Now) - .Where(x => x.UserNo == order.UserNo && x.Version == mealInfo.Version)//必须与查询时的version一致 - .ExecuteCommandThrowVersionAsync(); + .SetColumns(x => x.Balance == mealInfo.Balance) + .SetColumns(x => x.Version == x.Version + 1) + .SetColumns(x => x.ModifiedTime == DateTime.Now) + .Where(x => x.UserNo == order.UserNo && x.Version == mealInfo.Version) //必须与查询时的version一致 + .ExecuteCommandThrowVersionAsync(); } await DbContext.Updateable() - .SetColumns(x => x.Number == menuDetail.Number) - .SetColumns(x => x.Version == x.Version + 1) - .SetColumns(x => x.ModifiedTime == now) - .Where(x => x.StartDate <= menuDetail.Date && menuDetail.Date <= x.EndDate - && x.ShiftType == request.ShiftType - && x.BusinessPlaceCode == request.BusinessPlaceCode - && x.DishesCode == request.DishesCode - && x.Version == menuDetail.Version - ) - .ExecuteCommandThrowVersionAsync(); + .SetColumns(x => x.Number == menuDetail.Number) + .SetColumns(x => x.Version == x.Version + 1) + .SetColumns(x => x.ModifiedTime == now) + .Where(x => x.StartDate <= menuDetail.Date && menuDetail.Date <= x.EndDate + && x.ShiftType == request.ShiftType + && x.BusinessPlaceCode == request.BusinessPlaceCode + && x.DishesCode == request.DishesCode + && x.Version == menuDetail.Version + ) + .ExecuteCommandThrowVersionAsync(); //写入记录 var balanceRecord = order.Adapt(); @@ -140,7 +140,6 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService Number = request.Number, TenantId = order.TenantId, }); - }, 10); @@ -159,52 +158,51 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService var myCodes = (await _businessPlacePermissionsApi.GetMyAsync()).Data.Select(x => (Guid?)x.Code).ToList(); var page = await DbContext.Queryable() - .LeftJoin((x, ga) => x.UserNo == ga.No) - .LeftJoin((x, ga, dept) => dept.No == ga.DepartmentNo) - .Where(x => myCodes.Contains(x.BusinessPlaceCode)) - .WhereIF(request.OrderStatus.HasValue, x => x.OrderStatus == request.OrderStatus) - .WhereIF(request.Source.HasValue, x => x.Source == request.Source) - .WhereIF(request.Search.IsPresent(), (x, ga) => x.UserCode == request.Search || ga.Name.Contains(request.Search)) - .WhereIF(request.BookingPeriod?.Start.HasValue == true && request.BookingPeriod?.End.HasValue == true, x => + .LeftJoin((x, ga) => x.UserNo == ga.No) + .LeftJoin((x, ga, dept) => dept.No == ga.DepartmentNo) + .Where(x => myCodes.Contains(x.BusinessPlaceCode)) + .WhereIF(request.OrderStatus.HasValue, x => x.OrderStatus == request.OrderStatus) + .WhereIF(request.Source.HasValue, x => x.Source == request.Source) + .WhereIF(request.Search.IsPresent(), (x, ga) => x.UserCode == request.Search || ga.Name.Contains(request.Search)) + .WhereIF(request.BookingPeriod?.Start.HasValue == true && request.BookingPeriod?.End.HasValue == true, x => SqlFunc.Subqueryable() - .Where(p => p.OrderNo == x.No) - .Where(p => p.BookingDate >= request.BookingPeriod.Start) - .Where(p => p.BookingDate <= request.BookingPeriod.End) - .Any() - ) - .WhereIF(request.ShiftTpe.HasValue, x => x.ShiftType == request.ShiftTpe) - .Select((x, ga, dept) => new OrderBookingResponse - { - No = x.No, - DeliveryAddress = x.DeliveryAddress, - Remark = x.Remark, - Amount = SqlFunc.Abs(x.Amount), - CreateTime = x.CreateTime, - ShiftType = x.ShiftType, - Status = x.OrderStatus, - UserCode = x.UserCode, - UserName = ga.Name, - Source = x.Source, - DepartmentName = dept.Name, - }) - .ToPageListAsync(request); + .Where(p => p.OrderNo == x.No) + .Where(p => p.BookingDate >= request.BookingPeriod.Start) + .Where(p => p.BookingDate <= request.BookingPeriod.End) + .Any() + ) + .WhereIF(request.ShiftTpe.HasValue, x => x.ShiftType == request.ShiftTpe) + .Select((x, ga, dept) => new OrderBookingResponse + { + No = x.No, + DeliveryAddress = x.DeliveryAddress, + Remark = x.Remark, + Amount = SqlFunc.Abs(x.Amount), + CreateTime = x.CreateTime, + ShiftType = x.ShiftType, + Status = x.OrderStatus, + UserCode = x.UserCode, + UserName = ga.Name, + Source = x.Source, + DepartmentName = dept.Name, + }) + .ToPageListAsync(request); var nos = page.Data.Select(x => x.No).ToList(); var details = await DbContext.Queryable() .LeftJoin((x, dishes) => x.DishesCode == dishes.CustomCode) .Where(x => nos.Contains(x.OrderNo)) - .Select((x, dishes) => new { x.OrderNo, x.BookingDate, x.Number, dishes.Name }). - ToListAsync(); + .Select((x, dishes) => new { x.OrderNo, x.BookingDate, x.Number, dishes.Name }).ToListAsync(); page.Data.ForEach(x => { - x.BookingDate = details.FirstOrDefault(item => item.OrderNo == x.No).BookingDate; + x.BookingDate = details.First(item => item.OrderNo == x.No).BookingDate; x.TotalNumber = details.Where(item => item.OrderNo == x.No).Sum(item => item.Number); x.DishesInfos = details.Where(item => item.OrderNo == x.No).Select(item => new - { - item.Name - }) - .ToList(); + { + item.Name + }) + .ToList(); }); return page; @@ -243,7 +241,6 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService .Where(x => x.No == request.No) .ExecuteCommandAsync(); - var balance = await DbContext.Queryable().Where(x => x.No == request.No).SingleAsync(); await DbContext.Updateable() .SetColumns(x => x.Status == BalanceRecordStatusEnumType.Obsolute) .SetColumns(x => x.Remark == request.Reason) @@ -265,7 +262,6 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService .SetColumns(x => x.ModifiedBy == userId) .Where(x => x.Id == mealInfo.Id && x.Version == mealInfo.Version) .ExecuteCommandThrowVersionAsync(); - }, 5); } } @@ -291,15 +287,15 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService var end = start.AddDays(1).AddSeconds(-1); var exists = await DbContext.Queryable() - .Where(x => x.ApplicationType == CanteenApplicaitonTypeEnumType.Booking) - .Where(x => x.OrderStatus == CanteenOrderStatusEnumType.Success) - .Where(x => x.ShiftType == shiftType) - .Where(x => x.UserNo == gainfo.No) - .Where(x => x.CreateTime >= start && x.CreateTime <= end) - .AnyAsync(); + .Where(x => x.ApplicationType == CanteenApplicaitonTypeEnumType.Booking) + .Where(x => x.OrderStatus == CanteenOrderStatusEnumType.Success) + .Where(x => x.ShiftType == shiftType) + .Where(x => x.UserNo == gainfo.No) + .Where(x => x.CreateTime >= start && x.CreateTime <= end) + .AnyAsync(); exists.ThrowIfTrue("不可重复订餐"); return gainfo; } -} +} \ No newline at end of file