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;
}