diff --git a/Src/Dlhis.Basic/Summary/Controllers/SummariesController.cs b/Src/Dlhis.Basic/Summary/Controllers/SummariesController.cs
index bfb8f69f..e8662def 100644
--- a/Src/Dlhis.Basic/Summary/Controllers/SummariesController.cs
+++ b/Src/Dlhis.Basic/Summary/Controllers/SummariesController.cs
@@ -1,5 +1,6 @@
using Dlhis.Basic.Summary.Response;
using Dlhis.Basic.Summary.Services;
+using Dlhis.Entity.Device.Enums;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
@@ -18,32 +19,12 @@ public class SummariesController : ControllerBase
}
///
- /// 考勤首页
+ /// 首页
///
///
- [HttpGet("attendance-summary")]
- public async Task GetKaoQingSummary()
+ [HttpGet("home-summary")]
+ public async Task GetHomeSummaryAsync(DeviceTypeEnumType type)
{
- return await _summaryService.GetAttendanceSummaryAsync();
- }
-
- ///
- /// 门禁首页设备数据
- ///
- ///
- [HttpGet("door-summary")]
- public async Task GetDoorHomeDataAsync()
- {
- return await _summaryService.GetDoorHomeDataAsync();
- }
-
- ///
- /// 门禁首页数据
- ///
- ///
- [HttpGet("door-data")]
- public async Task GetDoorDataAsync()
- {
- return await _summaryService.GetDoorDataAsync();
+ return await _summaryService.GetHomeSummaryAsync(type);
}
}
\ No newline at end of file
diff --git a/Src/Dlhis.Basic/Summary/Response/AttendanceSummaryResponse.cs b/Src/Dlhis.Basic/Summary/Response/AttendanceSummaryResponse.cs
deleted file mode 100644
index ab930d60..00000000
--- a/Src/Dlhis.Basic/Summary/Response/AttendanceSummaryResponse.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-namespace Dlhis.Basic.Summary.Response
-{
- public class AttendanceSummaryResponse
- {
- public AttendanceDeviceSummary DeviceSummary { get; set; }
-
- public AttendanceDetailSummary AttendanceDetailSummary { get; set; }
- }
-}
diff --git a/Src/Dlhis.Basic/Summary/Response/AttendanceDeviceSummary.cs b/Src/Dlhis.Basic/Summary/Response/DeviceSummary.cs
similarity index 94%
rename from Src/Dlhis.Basic/Summary/Response/AttendanceDeviceSummary.cs
rename to Src/Dlhis.Basic/Summary/Response/DeviceSummary.cs
index 77a92955..32173118 100644
--- a/Src/Dlhis.Basic/Summary/Response/AttendanceDeviceSummary.cs
+++ b/Src/Dlhis.Basic/Summary/Response/DeviceSummary.cs
@@ -2,7 +2,7 @@
namespace Dlhis.Basic.Summary.Response;
-public class AttendanceDeviceSummary
+public class DeviceSummary
{
///
/// 总数
diff --git a/Src/Dlhis.Basic/Summary/Response/DoorDataResponse.cs b/Src/Dlhis.Basic/Summary/Response/DoorDataResponse.cs
deleted file mode 100644
index 184971f1..00000000
--- a/Src/Dlhis.Basic/Summary/Response/DoorDataResponse.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-namespace Dlhis.Basic.Summary.Response;
-
-public class DoorDataResponse
-{
- ///
- /// 门禁总人数
- ///
- public int Total => Employed + Unemployed;
-
- ///
- /// 在职人数
- ///
- public int Employed { get; set; }
-
- ///
- /// 非在职人数
- ///
- public int Unemployed { get; set; }
-
- ///
- /// 人员趋势 7天
- ///
- public GainfoTrendResponse GainfoTrend { get; set; }
-}
\ No newline at end of file
diff --git a/Src/Dlhis.Basic/Summary/Response/DoorHomeDataResponse.cs b/Src/Dlhis.Basic/Summary/Response/DoorHomeDataResponse.cs
deleted file mode 100644
index 163a35fe..00000000
--- a/Src/Dlhis.Basic/Summary/Response/DoorHomeDataResponse.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using Dlhis.Basic.Summary.Dto;
-
-namespace Dlhis.Basic.Summary.Response
-{
- public class DoorHomeDataResponse
- {
- public int OffNum { get; set; }
- public int TotalNum { get; set; }
- public List Trend { get; set; }
- }
-}
diff --git a/Src/Dlhis.Basic/Summary/Response/AttendanceDetailSummary.cs b/Src/Dlhis.Basic/Summary/Response/GainfoDetailSummary.cs
similarity index 92%
rename from Src/Dlhis.Basic/Summary/Response/AttendanceDetailSummary.cs
rename to Src/Dlhis.Basic/Summary/Response/GainfoDetailSummary.cs
index a013bb6a..812bb3c1 100644
--- a/Src/Dlhis.Basic/Summary/Response/AttendanceDetailSummary.cs
+++ b/Src/Dlhis.Basic/Summary/Response/GainfoDetailSummary.cs
@@ -1,6 +1,6 @@
namespace Dlhis.Basic.Summary.Response;
-public class AttendanceDetailSummary
+public class GainfoDetailSummary
{
///
/// 考勤总人数
diff --git a/Src/Dlhis.Basic/Summary/Response/GainfoTrendResponse.cs b/Src/Dlhis.Basic/Summary/Response/GainfoTrendResponse.cs
index 4050c983..7bb9449b 100644
--- a/Src/Dlhis.Basic/Summary/Response/GainfoTrendResponse.cs
+++ b/Src/Dlhis.Basic/Summary/Response/GainfoTrendResponse.cs
@@ -1,10 +1,9 @@
using Dlhis.Basic.Summary.Dto;
-namespace Dlhis.Basic.Summary.Response
+namespace Dlhis.Basic.Summary.Response;
+
+public class GainfoTrendResponse
{
- public class GainfoTrendResponse
- {
- public List EmployedTrend { get; set; }
- public List UnemployedTrend { get; set; }
- }
-}
+ public List EmployedTrend { get; set; }
+ public List UnemployedTrend { get; set; }
+}
\ No newline at end of file
diff --git a/Src/Dlhis.Basic/Summary/Response/HomeSummaryResponse.cs b/Src/Dlhis.Basic/Summary/Response/HomeSummaryResponse.cs
new file mode 100644
index 00000000..ca24d629
--- /dev/null
+++ b/Src/Dlhis.Basic/Summary/Response/HomeSummaryResponse.cs
@@ -0,0 +1,14 @@
+namespace Dlhis.Basic.Summary.Response;
+
+public class HomeSummaryResponse
+{
+ ///
+ /// 设备
+ ///
+ public DeviceSummary DeviceSummary { get; set; }
+
+ ///
+ /// 明细
+ ///
+ public GainfoDetailSummary DetailSummary { get; set; }
+}
\ No newline at end of file
diff --git a/Src/Dlhis.Basic/Summary/Services/ISummaryService.cs b/Src/Dlhis.Basic/Summary/Services/ISummaryService.cs
index dfb99fa3..38810872 100644
--- a/Src/Dlhis.Basic/Summary/Services/ISummaryService.cs
+++ b/Src/Dlhis.Basic/Summary/Services/ISummaryService.cs
@@ -1,12 +1,9 @@
using Dlhis.Basic.Summary.Response;
+using Dlhis.Entity.Device.Enums;
namespace Dlhis.Basic.Summary.Services;
public interface ISummaryService : IScopeDependency
{
- Task GetAttendanceSummaryAsync();
-
- Task GetDoorHomeDataAsync();
-
- Task GetDoorDataAsync();
+ Task GetHomeSummaryAsync(DeviceTypeEnumType type);
}
\ No newline at end of file
diff --git a/Src/Dlhis.Basic/Summary/Services/Implements/SummaryService.cs b/Src/Dlhis.Basic/Summary/Services/Implements/SummaryService.cs
index 83cdace3..0844b6ed 100644
--- a/Src/Dlhis.Basic/Summary/Services/Implements/SummaryService.cs
+++ b/Src/Dlhis.Basic/Summary/Services/Implements/SummaryService.cs
@@ -23,7 +23,7 @@ public class SummaryService : ISummaryService
_currentUser = currentUser;
}
- public async Task GetAttendanceSummaryAsync()
+ public async Task GetHomeSummaryAsync(DeviceTypeEnumType type)
{
var now = DateTime.Now;
var tenantId = _currentUser.GetStringTenantId();
@@ -33,7 +33,7 @@ public class SummaryService : ISummaryService
var before7Day = DateTime.Today.AddDays(-6);
var devices = await _dbContext.Queryable()
- .Where(x => x.Type == DeviceTypeEnumType.Attendance || (x.Type == DeviceTypeEnumType.Door && x.AsAttendance))
+ .Where(x => x.Type == type)
.ToListAsync();
var deviceUniqueNos = devices.Select(x => x.UniqueNo).ToList();
@@ -54,9 +54,9 @@ public class SummaryService : ISummaryService
.Where(x => x.Factory == tenantId)
.ToListAsync();
- return new AttendanceSummaryResponse
+ return new HomeSummaryResponse
{
- DeviceSummary = new AttendanceDeviceSummary
+ DeviceSummary = new DeviceSummary
{
Total = devices.Count,
EnableCount = devices.Count(x => x.Enable),
@@ -73,7 +73,7 @@ public class SummaryService : ISummaryService
.GroupBy(x => x.CreateTime.Date)
.Select(x => new TrendDto { Date = x.Key, Count = x.Count() }), before30Day, currentDay)
},
- AttendanceDetailSummary = new AttendanceDetailSummary
+ DetailSummary = new GainfoDetailSummary
{
Employed = workingGainfos.Count,
Unemployed = leaveGainfos.Count,
@@ -90,64 +90,7 @@ public class SummaryService : ISummaryService
};
}
- public async Task GetDoorHomeDataAsync()
- {
- var devices = await _dbContext.Queryable().Where(x => x.Type == DeviceTypeEnumType.Door).ToListAsync();
-
- var offDevices = await GetOfflineDevicesCount(devices);
-
- DateTime currentDate = DateTime.Now;
- var times = new List();
- for (int i = 0; i < 30; i++)
- {
- DateTime date = currentDate.AddDays(-i);
- string dateString = date.ToString("yyyy-MM-dd");
- times.Add(dateString);
- }
-
- var list = new List();
- times.ForEach(time =>
- {
- var count = devices.Count(x => x.CreateTime.ToString("yyyy-MM-dd") == time);
- var trend = new TrendDto
- {
- Date = DateTime.ParseExact(time, "yyyy-MM-dd", null),
- Count = count,
- };
- list.Add(trend);
- });
- var res = new DoorHomeDataResponse
- {
- OffNum = offDevices.Count,
- TotalNum = devices.Count,
- Trend = list
- };
- return res;
- }
-
- public async Task GetDoorDataAsync()
- {
- var workingGainfos = await _gainfoStore.Queryable(GainfoStatusEnumType.Working).ToListAsync();
- var leaveGainfos = await _gainfoStore.Queryable(GainfoStatusEnumType.Leave).ToListAsync();
-
- var currentDay = DateTime.Today.AddDays(1).AddSeconds(-1);
- var before7Day = DateTime.Today.AddDays(-6);
-
- return new DoorDataResponse
- {
- Employed = workingGainfos.Count,
- Unemployed = leaveGainfos.Count,
- GainfoTrend = new GainfoTrendResponse()
- {
- EmployedTrend = FixTrend(workingGainfos.Where(x => x.EntryDate >= before7Day && x.EntryDate <= currentDay)
- .GroupBy(x => x.EntryDate)
- .Select(x => new TrendDto { Date = x.Key!.Value, Count = x.Count() }), before7Day, currentDay),
- UnemployedTrend = FixTrend(leaveGainfos.Where(x => x.ResignationDate >= before7Day && x.ResignationDate <= currentDay)
- .GroupBy(x => x.ResignationDate)
- .Select(x => new TrendDto { Date = x.Key!.Value, Count = x.Count() }), before7Day, currentDay)
- }
- };
- }
+ //********************************************************************************************************************************************
private static List FixTrend(IEnumerable dtos, DateTime start, DateTime end)
@@ -173,48 +116,4 @@ public class SummaryService : ISummaryService
return result.OrderBy(x => x.Date).ToList();
}
-
- ///
- /// 获取离线设备
- ///
- ///
- private async Task> GetOfflineDevicesCount(List devices)
- {
- 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 onlineDevices = deviceRegistries
- .Where(x =>
- {
- if (x.HeartbeatInterval <= 0)
- {
- return true;
- }
-
- return x.LastHeartbeatTime.AddSeconds(x.HeartbeatInterval) >= 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;
- }
}
\ No newline at end of file