diff --git a/Src/Dlhis.Basic/BusinessPlace/Controllers/BusinessPlacesController.cs b/Src/Dlhis.Basic/BusinessPlace/Controllers/BusinessPlacesController.cs index cc72eb4f..887dfe09 100644 --- a/Src/Dlhis.Basic/BusinessPlace/Controllers/BusinessPlacesController.cs +++ b/Src/Dlhis.Basic/BusinessPlace/Controllers/BusinessPlacesController.cs @@ -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/Services/Implements/BusinessPlaceService.cs b/Src/Dlhis.Basic/BusinessPlace/Services/Implements/BusinessPlaceService.cs index ace2b8e9..a49ecf44 100644 --- a/Src/Dlhis.Basic/BusinessPlace/Services/Implements/BusinessPlaceService.cs +++ b/Src/Dlhis.Basic/BusinessPlace/Services/Implements/BusinessPlaceService.cs @@ -25,7 +25,8 @@ public class BusinessPlaceService : IBusinessPlaceService var page = await _dbContext.Queryable() .LeftJoin((x, ps) => x.Code == ps.PlaceCode) .LeftJoin((x, ps, s) => s.Code == ps.ShiftCode) - .WhereIF(request.Search.IsPresent(), x => x.CustomCode.Contains(request.Search)) + .WhereIF(request.Search.IsPresent(), x => x.CustomCode.Contains(request.Search) + || x.Code.ToString().Contains(request.Search) || x.Name.Contains(request.Search)) .WhereIF(request.Catalog.HasValue, x => x.Catalog == request.Catalog) .WhereIF(request.Status.HasValue, x => x.Status == request.Status) .WhereIF(request.Source.HasValue, x => x.Source == request.Source) diff --git a/Src/Dlhis.Basic/BusinessShift/Services/IBusinessPlaceShiftService.cs b/Src/Dlhis.Basic/BusinessShift/Services/IBusinessPlaceShiftService.cs index 3a88f5db..ba4e1114 100644 --- a/Src/Dlhis.Basic/BusinessShift/Services/IBusinessPlaceShiftService.cs +++ b/Src/Dlhis.Basic/BusinessShift/Services/IBusinessPlaceShiftService.cs @@ -18,5 +18,5 @@ public interface IBusinessPlaceShiftService : IScopeDependency Task GetShiftsByPlaceCustomCodeAsync(string placeCustomCode); - Task> GetDevicesByCode(BusinessPlaceGetByCodeRequest request); + Task> GetDevicesByCode(BusinessPlaceGetByCodeRequest request); } diff --git a/Src/Dlhis.Basic/BusinessShift/Services/Implements/BusinessPlaceShiftService.cs b/Src/Dlhis.Basic/BusinessShift/Services/Implements/BusinessPlaceShiftService.cs index a0636ae0..6df8324d 100644 --- a/Src/Dlhis.Basic/BusinessShift/Services/Implements/BusinessPlaceShiftService.cs +++ b/Src/Dlhis.Basic/BusinessShift/Services/Implements/BusinessPlaceShiftService.cs @@ -12,6 +12,7 @@ using Kurisu.Core.Result; using Kurisu.SqlSugar.Extensions; using Kurisu.SqlSugar.Services; using Mapster; +using System.Collections.Generic; namespace Dlhis.Basic.BusinessShift.Services.Implements; @@ -190,7 +191,7 @@ public class BusinessPlaceShiftService : IBusinessPlaceShiftService }; } - public async Task> GetDevicesByCode(BusinessPlaceGetByCodeRequest request) + public async Task> GetDevicesByCode(BusinessPlaceGetByCodeRequest request) { var regiss = await _dbContext.Queryable() .Where(x => x.BusinessPlaceCode.ToString() == request.Code) @@ -216,7 +217,19 @@ public class BusinessPlaceShiftService : IBusinessPlaceShiftService } } } - return list; + //分页 + 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; } //*********************************************** help methods ***************************************************// diff --git a/Src/Dlhis.Basic/Device/Response/DevicePageResponse.cs b/Src/Dlhis.Basic/Device/Response/DevicePageResponse.cs index 9fe547c6..ab586f63 100644 --- a/Src/Dlhis.Basic/Device/Response/DevicePageResponse.cs +++ b/Src/Dlhis.Basic/Device/Response/DevicePageResponse.cs @@ -101,7 +101,12 @@ public class DevicePageResponse public int UserCount { get; set; } /// - /// 设备营业点 + /// 营业点code /// - public List detils { get; set; } + public string BusinessPlaceCode { get; set; } + + /// + /// 营业点名称 + /// + public string BusinessPlaceName { get; set; } } diff --git a/Src/Dlhis.Basic/Device/Response/PlaceCodeNameDetil.cs b/Src/Dlhis.Basic/Device/Response/PlaceCodeNameDetil.cs deleted file mode 100644 index 9f449033..00000000 --- a/Src/Dlhis.Basic/Device/Response/PlaceCodeNameDetil.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Dlhis.Basic.Device.Response -{ - public class PlaceCodeNameDetil - { - public string BusinessPlaceCode { get; set; } - public string BusinessPlaceName { get; set; } - - } -} diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DeviceService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DeviceService.cs index f17f71c2..dc9409e9 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/DeviceService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/DeviceService.cs @@ -15,6 +15,7 @@ using MySqlX.XDevAPI.Relational; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using SqlSugar; +using System.Collections.Generic; namespace Dlhis.Basic.Device.Services.Implements; @@ -65,28 +66,16 @@ public class DeviceService : IDeviceService foreach (var res in page.Data) { - var list = new List(); - var regis = Registries.Where(x => x.DeviceUniqueNo == res.UniqueNo).ToList(); - if (regis!=null && regis.Count>0) + var regis = Registries.Where(x => x.DeviceUniqueNo == res.UniqueNo).FirstOrDefault(); + if (regis != null) { - foreach (var re in regis) + var place = BusinessPlaces.Where(x => x.Code == regis.BusinessPlaceCode).FirstOrDefault(); + if (place != null) { - var place = BusinessPlaces.Where(x => x.Code == re.BusinessPlaceCode) - .FirstOrDefault(); - - if (place != null) - { - var detil = new PlaceCodeNameDetil - { - BusinessPlaceCode = re.BusinessPlaceCode.ToString(), - BusinessPlaceName = place.Name - }; - list.Add(detil); - } - - } + res.BusinessPlaceCode = regis.BusinessPlaceCode.ToString(); + res.BusinessPlaceName = place.Name; + } } - res.detils = list; } page.Data.ForEach(device => diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs index 8de0e473..3dc1a432 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs @@ -600,25 +600,42 @@ public class BalanceService : IBalanceService /// private async Task> GetOfflineDevicesCount(List devices) { - var nos = devices.Select(x => x.UniqueNo).ToList(); - var deviceRegistrys = await _dbContext.Queryable() - .Where(x => nos.Contains(x.DeviceUniqueNo)) + var now = DateTime.Now; + + var deviceUniqueNos = devices.Select(x => x.UniqueNo).ToList(); + + var deviceRegistries = await _dbContext.Queryable() + .LeftJoin((x, d) => x.DeviceUniqueNo == d.UniqueNo) + .Where(x => deviceUniqueNos.Contains(x.DeviceUniqueNo)) + .Select((x, d) => new + { + UniqueNo = d.UniqueNo, + d.HeartbeatInterval, + x.LastHeartbeatTime + }) .ToListAsync(); - var list = new List(); - foreach (var device in devices) - { - var regis = deviceRegistrys.FirstOrDefault(x => x.DeviceUniqueNo == device.UniqueNo); - if (regis == null) - { - continue; - } - TimeSpan timeDifference = DateTime.Now - regis.LastHeartbeatTime; - if (timeDifference.TotalSeconds > (device.HeartbeatInterval * 3)) - { - list.Add(device); - } - } + var OnlineDevices = deviceRegistries + .Where(x => + { + if (x.HeartbeatInterval <= 0) + { + return true; + } + + return x.LastHeartbeatTime.AddSeconds(x.HeartbeatInterval * 3) >= now; + + }) + .Select(x => new + { + UniqueNo = x.UniqueNo, + }) + .ToList(); + var onlineUniqueNos = new List(); + OnlineDevices.ForEach(x => onlineUniqueNos.Add(x.UniqueNo)); + + var offUniqueNos = deviceUniqueNos.Except(onlineUniqueNos).ToList(); + var list = devices.Where(x => offUniqueNos.Contains(x.UniqueNo)).ToList(); return list; }