diff --git a/Src/Dlhis.Basic/Device/Response/DevicePageResponse.cs b/Src/Dlhis.Basic/Device/Response/DevicePageResponse.cs index 50de5f73..11ec35bf 100644 --- a/Src/Dlhis.Basic/Device/Response/DevicePageResponse.cs +++ b/Src/Dlhis.Basic/Device/Response/DevicePageResponse.cs @@ -86,6 +86,11 @@ public class DevicePageResponse /// public bool Enable { get; set; } + /// + /// 厂区 + /// + public string Factory { get; set; } + /// /// 是否作为考勤 diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DeviceService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DeviceService.cs index 9c34262a..ab1db519 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/DeviceService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/DeviceService.cs @@ -46,7 +46,8 @@ public class DeviceService : IDeviceService Type = d.Type, BusinessPlaceCode = bp.Code, BusinessPlaceName = bp.Name, - LastHeartbeatTime = dr.LastHeartbeatTime + LastHeartbeatTime = dr.LastHeartbeatTime, + Factory = d.TenantId }, true) .ToPageListAsync(request); diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs index 4a61fb40..54685dcb 100644 --- a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs +++ b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs @@ -69,11 +69,17 @@ public class GainfoService : IGainfoService } //获取所有厂区 - var factories = request.DepartmentSelections.Select(x => x.Tenant); + var factories = request.DepartmentSelections.Select(x => x.Tenant).ToList(); + if (factories.Count == 0) + { + factories = _currentUser.GetUserClaim("tenants").Split(",").ToList(); + } + var today = DateTime.Today; var page = await _gainfoStore.Queryable(request.Status) .WhereIF(request.SearchType != GainfoSearchEnumType.BusinessTrip && request.DepartmentSelections?.Any() == true, where) + .WhereIF(request.SearchType != GainfoSearchEnumType.BusinessTrip && request.DepartmentSelections?.Any() == false, gainfo => factories.Contains(gainfo.Factory)) .WhereIF(request.SearchType == GainfoSearchEnumType.Internal, gainfo => SqlFunc.Subqueryable().Where(x => x.Code == gainfo.Code).NotAny()) .WhereIF(request.SearchType == GainfoSearchEnumType.Outsource, gainfo => SqlFunc.Subqueryable().Where(x => x.Code == gainfo.Code).Any()) .WhereIF(request.SearchType == GainfoSearchEnumType.BusinessTrip, gainfo => @@ -85,6 +91,15 @@ public class GainfoService : IGainfoService .Select() .ToPageListAsync(request); + + if (request.SearchType == GainfoSearchEnumType.Outsource) + { + var codes = page.Data.Select(x => x.Code).ToList(); + var outsourceInfos = await _dbContext.Queryable().Where(x => codes.Contains(x.Code)).Select(x => new { x.Code, x.Supplier }).ToListAsync(); + + page.Data.ForEach(item => { item.DepartmentNo = outsourceInfos.FirstOrDefault(x => x.Code == item.Code)?.Supplier; }); + } + return page; }