diff --git a/Src/Dlhis.Basic/Device/Request/DeviceGroupSaveRequest.cs b/Src/Dlhis.Basic/Device/Request/DeviceGroupSaveRequest.cs
index 9cbf1ee9..f16286ff 100644
--- a/Src/Dlhis.Basic/Device/Request/DeviceGroupSaveRequest.cs
+++ b/Src/Dlhis.Basic/Device/Request/DeviceGroupSaveRequest.cs
@@ -23,4 +23,9 @@ public class DeviceGroupSaveRequest
///
[EnumDataType(typeof(DeviceTypeEnumType))]
public DeviceTypeEnumType? Type { get; set; }
+
+ ///
+ /// 备注
+ ///
+ public string Remark { get; set; }
}
diff --git a/Src/Dlhis.Basic/Device/Response/DeviceGroupTreeResponse.cs b/Src/Dlhis.Basic/Device/Response/DeviceGroupTreeResponse.cs
index 31b5f3f3..24e19c85 100644
--- a/Src/Dlhis.Basic/Device/Response/DeviceGroupTreeResponse.cs
+++ b/Src/Dlhis.Basic/Device/Response/DeviceGroupTreeResponse.cs
@@ -29,6 +29,11 @@ public class DeviceGroupTreeResponse
///
public DeviceTypeEnumType? Type { get; set; }
+ ///
+ /// 备注
+ ///
+ public string Remark { get; set; }
+
///
/// 分组类型描述
///
diff --git a/Src/Dlhis.Basic/Device/Response/DevicePageResponse.cs b/Src/Dlhis.Basic/Device/Response/DevicePageResponse.cs
index ab586f63..5543715e 100644
--- a/Src/Dlhis.Basic/Device/Response/DevicePageResponse.cs
+++ b/Src/Dlhis.Basic/Device/Response/DevicePageResponse.cs
@@ -85,10 +85,32 @@ public class DevicePageResponse
///
public bool Enable { get; set; }
+
+ //*********************************************************附加信息**************************************************************/
+
+ ///
+ /// 最后心跳时间
+ ///
+ public DateTime? LastHeartbeatTime { get; set; }
+
///
/// 是否在线
///
- public bool IsOnline { get; set; }
+ public bool IsOnline
+ {
+ get
+ {
+ if (!LastHeartbeatTime.HasValue)
+ return false;
+ else
+ {
+ if (HeartbeatInterval <= 0)
+ return true;
+ else
+ return LastHeartbeatTime.Value.AddSeconds(HeartbeatInterval * 3) >= DateTime.Now;
+ }
+ }
+ }
///
/// 消费总额
@@ -103,7 +125,7 @@ public class DevicePageResponse
///
/// 营业点code
///
- public string BusinessPlaceCode { get; set; }
+ public Guid? BusinessPlaceCode { get; set; }
///
/// 营业点名称
diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DeviceService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DeviceService.cs
index dc9409e9..7632b1b6 100644
--- a/Src/Dlhis.Basic/Device/Services/Implements/DeviceService.cs
+++ b/Src/Dlhis.Basic/Device/Services/Implements/DeviceService.cs
@@ -11,11 +11,9 @@ using Kurisu.Core.DataAccess.Dto;
using Kurisu.SqlSugar.Extensions;
using Kurisu.SqlSugar.Services;
using Mapster;
-using MySqlX.XDevAPI.Relational;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using SqlSugar;
-using System.Collections.Generic;
namespace Dlhis.Basic.Device.Services.Implements;
@@ -32,73 +30,35 @@ public class DeviceService : IDeviceService
{
var page = await _dbContext.Queryable()
.LeftJoin((d, dt) => d.TemplateCode == dt.Code)
+ .LeftJoin((d, dt, dr) => d.UniqueNo == dr.DeviceUniqueNo)
+ .LeftJoin((d, dt, dr, bp) => dr.BusinessPlaceCode == bp.Code)
.WhereIF(request.Type.HasValue, (d, dt) => d.Type == request.Type)
- .Select((d, dt) => new DevicePageResponse
+ .Select((d, dt, dr, bp) => new DevicePageResponse
{
FuncsStr = d.Funcs.ToString(),
Brand = dt.Brand,
Type = d.Type,
+ BusinessPlaceCode = bp.Code,
+ BusinessPlaceName = bp.Name,
+ LastHeartbeatTime = dr.LastHeartbeatTime
}, true)
.ToPageListAsync(request);
- var now = DateTime.Now;
var deviceUniqueNos = page.Data.Select(x => x.UniqueNo).ToList();
var balanceRecords = await _dbContext.Queryable().Where(x => x.Type == BalanceRecordTypeEnumType.Out)
.Where(x => deviceUniqueNos.Contains(x.DeviceInfo))
+ .Select(x => new
+ {
+ x.Amount,
+ x.UserCode
+ })
.ToListAsync();
- var deviceRegistries = await _dbContext.Queryable()
- .LeftJoin((x, d) => x.DeviceUniqueNo == d.UniqueNo)
- .Where(x => deviceUniqueNos.Contains(x.DeviceUniqueNo))
- .Select((x, d) => new
- {
- d.HeartbeatInterval,
- x.LastHeartbeatTime,
- x.DeviceUniqueNo,
- })
- .ToListAsync();
-
- var Registries = await _dbContext.Queryable()
- .ToListAsync();
- var BusinessPlaces = await _dbContext.Queryable()
- .ToListAsync();
-
- foreach (var res in page.Data)
- {
- var regis = Registries.Where(x => x.DeviceUniqueNo == res.UniqueNo).FirstOrDefault();
- if (regis != null)
- {
- var place = BusinessPlaces.Where(x => x.Code == regis.BusinessPlaceCode).FirstOrDefault();
- if (place != null)
- {
- res.BusinessPlaceCode = regis.BusinessPlaceCode.ToString();
- res.BusinessPlaceName = place.Name;
- }
- }
-
- }
page.Data.ForEach(device =>
{
device.Amount = balanceRecords.Sum(x => x.Amount);
device.UserCount = balanceRecords.DistinctBy(x => x.UserCode).Count();
-
- var r = deviceRegistries.FirstOrDefault(x => x.DeviceUniqueNo == device.UniqueNo);
- if (r == null)
- {
- device.IsOnline = false;
- }
- else
- {
- if (r.HeartbeatInterval <= 0)
- {
- device.IsOnline = true;
- }
- else
- {
- device.IsOnline = r.LastHeartbeatTime.AddSeconds(r.HeartbeatInterval * 3) >= now;
- }
- }
});
return page;
@@ -290,7 +250,7 @@ public class DeviceService : IDeviceService
public async Task GetDeviceNumberAsync()
{
var devices = await _dbContext.Queryable().Where(x => x.Type == DeviceTypeEnumType.Attendance || (x.Type == DeviceTypeEnumType.Door && x.AsAttendance)).ToListAsync();
-
+
var offlineNumber = await GetOfflineDevicesCount(devices);
var res = new DeviceNumberResponse
@@ -333,7 +293,7 @@ public class DeviceService : IDeviceService
return x.LastHeartbeatTime.AddSeconds(x.HeartbeatInterval * 3) >= now;
})
- .Select(x => new
+ .Select(x => new
{
UniqueNo = x.UniqueNo,
})
@@ -345,7 +305,7 @@ public class DeviceService : IDeviceService
var list = devices.Where(x => offUniqueNos.Contains(x.UniqueNo)).ToList();
return list;
}
-
+
public async Task> GetAttendanceTotalAsync(AttendanceTotalRequest request)
{
diff --git a/Src/Dlhis.Basic/Organization/Controllers/WerksController.cs b/Src/Dlhis.Basic/Organization/Controllers/WerksController.cs
index 5f7522dd..bbbb7904 100644
--- a/Src/Dlhis.Basic/Organization/Controllers/WerksController.cs
+++ b/Src/Dlhis.Basic/Organization/Controllers/WerksController.cs
@@ -1,6 +1,5 @@
-using Dlhis.Basic.Organization.Response;
-using Dlhis.Basic.Organization.Services;
-using Dlhis.User.Api.Response;
+using Dlhis.Basic.Organization.Services;
+using Dlhis.Sys.Api.Response;
using Kurisu.AspNetCore.MVC;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
diff --git a/Src/Dlhis.Basic/Organization/Response/DepartmentTreeResponse.cs b/Src/Dlhis.Basic/Organization/Response/DepartmentTreeResponse.cs
index c30d68b1..309e6d58 100644
--- a/Src/Dlhis.Basic/Organization/Response/DepartmentTreeResponse.cs
+++ b/Src/Dlhis.Basic/Organization/Response/DepartmentTreeResponse.cs
@@ -2,6 +2,11 @@
public class DepartmentTreeResponse
{
+ ///
+ /// 上级
+ ///
+ public string PNo { get; set; }
+
///
/// 部门号
///
diff --git a/Src/Dlhis.Basic/Organization/Services/IWerkService.cs b/Src/Dlhis.Basic/Organization/Services/IWerkService.cs
index 8f8ecc4b..42b1a90e 100644
--- a/Src/Dlhis.Basic/Organization/Services/IWerkService.cs
+++ b/Src/Dlhis.Basic/Organization/Services/IWerkService.cs
@@ -1,4 +1,4 @@
-using Dlhis.User.Api.Response;
+using Dlhis.Sys.Api.Response;
namespace Dlhis.Basic.Organization.Services;
diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/DepartmentService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/DepartmentService.cs
index bf42c549..9800dc40 100644
--- a/Src/Dlhis.Basic/Organization/Services/Implements/DepartmentService.cs
+++ b/Src/Dlhis.Basic/Organization/Services/Implements/DepartmentService.cs
@@ -1,28 +1,28 @@
-using Dlhis.Basic.Organization.Request;
-using Dlhis.Basic.Organization.Response;
+using Dlhis.Basic.Organization.Response;
using Dlhis.Entity.Basic.Entity;
-using Kurisu.AspNetCore.Utils.Extensions;
-using Kurisu.Core.DataAccess.Dto;
+using Kurisu.Core.User.Abstractions;
using Kurisu.SqlSugar.Services;
-using Mapster;
-using System.Collections.Generic;
namespace Dlhis.Basic.Organization.Services.Implements;
public class DepartmentService : IDepartmentService
{
private readonly IDbContext _dbContext;
+ private readonly ICurrentUser _currentUser;
- public DepartmentService(IDbContext dbContext)
+ public DepartmentService(IDbContext dbContext, ICurrentUser currentUser)
{
_dbContext = dbContext;
+ _currentUser = currentUser;
}
public async Task> GetTreeAsync()
{
- var departments = await _dbContext.Queryable().ToListAsync();
+ var myTenants = _currentUser.GetUserClaim("tenants").Split(',').ToList();
+
+ var departments = await _dbContext.Queryable().Select().ToListAsync();
//00001000 一定是这个开头的
- var tops = departments.Where(x => x.PNo == "00001000").Adapt>();
+ var tops = departments.Where(x => x.PNo == "00001000").ToList();
tops.ForEach(x =>
{
@@ -32,13 +32,13 @@ public class DepartmentService : IDepartmentService
return tops;
}
- private void RecursionGetNext(DepartmentTreeResponse current, List departments)
+ private void RecursionGetNext(DepartmentTreeResponse current, List data)
{
- var next = departments.Where(x => x.PNo == current.No).ToList();
- current.Next = next.Adapt>();
+ var next = data.Where(x => x.PNo == current.No).ToList();
+ current.Next = next;
foreach (var item in next)
{
- RecursionGetNext(item.Adapt(), departments);
+ RecursionGetNext(item, data);
}
}
}
diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/WerkService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/WerkService.cs
index 718bd6c1..99517d8a 100644
--- a/Src/Dlhis.Basic/Organization/Services/Implements/WerkService.cs
+++ b/Src/Dlhis.Basic/Organization/Services/Implements/WerkService.cs
@@ -1,5 +1,5 @@
using Dlhis.Sys.Api;
-using Dlhis.User.Api.Response;
+using Dlhis.Sys.Api.Response;
using Kurisu.AspNetCore.Utils.Extensions;
using Kurisu.Core.Result;
using Kurisu.Core.User.Abstractions;
diff --git a/Src/Dlhis.ScheduledTask/CommonJobs/CreateDefinitelyGroupJob.cs b/Src/Dlhis.ScheduledTask/CommonJobs/CreateDefinitelyGroupJob.cs
index af824291..553f4138 100644
--- a/Src/Dlhis.ScheduledTask/CommonJobs/CreateDefinitelyGroupJob.cs
+++ b/Src/Dlhis.ScheduledTask/CommonJobs/CreateDefinitelyGroupJob.cs
@@ -2,7 +2,7 @@
using Dlhis.Entity.Device.Entities;
using Dlhis.Entity.Device.Enums;
using Dlhis.Sys.Api;
-using Dlhis.User.Api.Response;
+using Dlhis.Sys.Api.Response;
using Kurisu.AspNetCore.Utils.Extensions;
using Kurisu.Core.DataAccess.Entity;
using Kurisu.SqlSugar.Services;
@@ -29,6 +29,8 @@ public class CreateDefinitelyGroupJob
sqlSugarOptionsService.IgnoreTenant = true;
}
+ private static readonly string _remark = "系统自动生成";
+
public async Task RunAsync()
{
_dbContext.Client.QueryFilter.ClearAndBackup();
@@ -77,6 +79,7 @@ public class CreateDefinitelyGroupJob
Name = grp,
IsDefault = grp.Equals("*自定义人员分组"),
Editable = false,
+ Remark = _remark,
CreatedBy = 1,
CreateTime = DateTime.Now,
@@ -103,6 +106,7 @@ public class CreateDefinitelyGroupJob
Type = type,
Name = grp,
Editable = false,
+ Remark = _remark,
CreatedBy = 1,
CreateTime = DateTime.Now,
@@ -126,6 +130,7 @@ public class CreateDefinitelyGroupJob
Type = type,
Name = workplaceName,
Editable = false,
+ Remark = _remark,
CreatedBy = 1,
CreateTime = DateTime.Now,
@@ -148,6 +153,7 @@ public class CreateDefinitelyGroupJob
Type = type,
Name = factoryName,
Editable = false,
+ Remark = _remark,
CreatedBy = 1,
CreateTime = DateTime.Now,
diff --git a/Src/Dlhis.ScheduledTask/TaskAssignment/Response/DeviceTaskAssignmentResponse.cs b/Src/Dlhis.ScheduledTask/TaskAssignment/Response/DeviceTaskAssignmentResponse.cs
index 96ae9243..7eb69334 100644
--- a/Src/Dlhis.ScheduledTask/TaskAssignment/Response/DeviceTaskAssignmentResponse.cs
+++ b/Src/Dlhis.ScheduledTask/TaskAssignment/Response/DeviceTaskAssignmentResponse.cs
@@ -57,6 +57,11 @@ public class DeviceTaskAssignmentResponse
///
public string ResultMessage { get; set; }
+ ///
+ /// 任务创建时间
+ ///
+ public DateTime CreateTime { get; set; }
+
///
/// 数据状态最新修改时间
///
diff --git a/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/DeviceTaskAssignmentService.cs b/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/DeviceTaskAssignmentService.cs
index 40f2386a..ea755590 100644
--- a/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/DeviceTaskAssignmentService.cs
+++ b/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/DeviceTaskAssignmentService.cs
@@ -38,6 +38,7 @@ public class DeviceTaskAssignmentService : IDeviceTaskAssignmentService
UserName = ga.Name,
UserCode = ga.Code,
Type = deviceTask.Type,
+ CreateTime = deviceTask.CreateTime,
LastUpdateTime = deviceTask.ModifiedTime
})
.ToPageListAsync(request);