diff --git a/Src/Dlhis.Basic/Common/ApiLog/Controller/OperateLogsController.cs b/Src/Dlhis.Basic/Common/ApiLog/Controller/OperateLogsController.cs
new file mode 100644
index 00000000..8388bf35
--- /dev/null
+++ b/Src/Dlhis.Basic/Common/ApiLog/Controller/OperateLogsController.cs
@@ -0,0 +1,36 @@
+using Dlhis.Basic.Common.ApiLog.Request;
+using Dlhis.Basic.Common.ApiLog.Response;
+using Dlhis.Basic.Common.ApiLog.Services;
+using Kurisu.AspNetCore.DataAccess.Dto;
+using Kurisu.AspNetCore.UnifyResultAndValidation.Aop;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Dlhis.Basic.Common.ApiLog.Controller;
+
+///
+/// API日志控制器
+///
+[Authorize]
+[Route("api/[controller]")]
+[ApiController]
+public class OperateLogsController : ControllerBase
+{
+ private readonly IOperateLog _operateLog;
+
+ public OperateLogsController(IOperateLog operateLog)
+ {
+ _operateLog = operateLog;
+ }
+
+ ///
+ /// 获取操作日志
+ ///
+ ///
+ [DisableApiLog]
+ [HttpGet("page")]
+ public async Task> GetOperateLogPageAsync([FromQuery] OperateLogPageRequest request)
+ {
+ return await _operateLog.GetOperateLogPageAsync(request);
+ }
+}
\ No newline at end of file
diff --git a/Src/Dlhis.Basic/Common/ApiLog/Request/OperateLogPageRequest.cs b/Src/Dlhis.Basic/Common/ApiLog/Request/OperateLogPageRequest.cs
new file mode 100644
index 00000000..72ad0a4c
--- /dev/null
+++ b/Src/Dlhis.Basic/Common/ApiLog/Request/OperateLogPageRequest.cs
@@ -0,0 +1,9 @@
+using Kurisu.AspNetCore.DataAccess.Dto;
+
+namespace Dlhis.Basic.Common.ApiLog.Request
+{
+ public class OperateLogPageRequest : PageDto
+ {
+
+ }
+}
\ No newline at end of file
diff --git a/Src/Dlhis.Basic/Common/ApiLog/Response/OperateLogResponse.cs b/Src/Dlhis.Basic/Common/ApiLog/Response/OperateLogResponse.cs
new file mode 100644
index 00000000..e1593e98
--- /dev/null
+++ b/Src/Dlhis.Basic/Common/ApiLog/Response/OperateLogResponse.cs
@@ -0,0 +1,10 @@
+namespace Dlhis.Basic.Common.ApiLog.Response;
+
+public class OperateLogResponse
+{
+ public string Content { get; set; }
+
+ public string Operator { get; set; }
+
+ public DateTime CreateTime { get; set; }
+}
\ No newline at end of file
diff --git a/Src/Dlhis.Basic/Common/ApiLog/Services/IOperateLog.cs b/Src/Dlhis.Basic/Common/ApiLog/Services/IOperateLog.cs
index 1b572870..36f637a4 100644
--- a/Src/Dlhis.Basic/Common/ApiLog/Services/IOperateLog.cs
+++ b/Src/Dlhis.Basic/Common/ApiLog/Services/IOperateLog.cs
@@ -1,9 +1,14 @@
+using Dlhis.Basic.Common.ApiLog.Request;
+using Dlhis.Basic.Common.ApiLog.Response;
using Dlhis.Entity.Common.Enums;
+using Kurisu.AspNetCore.DataAccess.Dto;
namespace Dlhis.Basic.Common.ApiLog.Services;
public interface IOperateLog : IScopeDependency
{
Task LogAsync(OperateLogType type, string content);
+
+ Task> GetOperateLogPageAsync(OperateLogPageRequest request);
}
diff --git a/Src/Dlhis.Basic/Common/ApiLog/Services/Implements/OperateLogService.cs b/Src/Dlhis.Basic/Common/ApiLog/Services/Implements/OperateLogService.cs
index 3081ccbf..b2a26087 100644
--- a/Src/Dlhis.Basic/Common/ApiLog/Services/Implements/OperateLogService.cs
+++ b/Src/Dlhis.Basic/Common/ApiLog/Services/Implements/OperateLogService.cs
@@ -1,6 +1,10 @@
+using Dlhis.Basic.Common.ApiLog.Request;
+using Dlhis.Basic.Common.ApiLog.Response;
using Dlhis.Entity.Common.Entities;
using Dlhis.Entity.Common.Enums;
using Kurisu.AspNetCore.Authentication.Abstractions;
+using Kurisu.AspNetCore.DataAccess.Dto;
+using Kurisu.AspNetCore.DataAccess.SqlSugar.Extensions;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
namespace Dlhis.Basic.Common.ApiLog.Services.Implements;
@@ -43,4 +47,17 @@ public class OperateLogService : IOperateLog
_logger.LogError(e, "记录操作日志失败:{error}", e.Message);
}
}
+
+ ///
+ public async Task> GetOperateLogPageAsync(OperateLogPageRequest request)
+ {
+ return await _dbContext.Queryable()
+ .Select(x => new OperateLogResponse
+ {
+ Content = x.Content,
+ Operator = x.Operator,
+ CreateTime = x.CreateTime
+ })
+ .ToPageListAsync(request);
+ }
}
\ No newline at end of file
diff --git a/Src/Dlhis.Basic/Organization/Services/IFactorySettingService.cs b/Src/Dlhis.Basic/Organization/Services/IFactorySettingService.cs
index f37f7803..e004fd5e 100644
--- a/Src/Dlhis.Basic/Organization/Services/IFactorySettingService.cs
+++ b/Src/Dlhis.Basic/Organization/Services/IFactorySettingService.cs
@@ -10,4 +10,10 @@ public interface IFactorySettingService : IScopeDependency
Task SaveAsync(FactorySettingSaveRequest request);
Task GetFactorySettingAsync(string factory, bool usePermission);
+
+ Task GetWorkGridSetLimitAsync();
+
+ Task CheckWorkGridSetLimitAsync(DateOnly date);
+
+ Task IsWorkGridSetLimitAsync(DateOnly date);
}
\ No newline at end of file
diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/FactorySettingService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/FactorySettingService.cs
index 104d2fdb..485a2c8b 100644
--- a/Src/Dlhis.Basic/Organization/Services/Implements/FactorySettingService.cs
+++ b/Src/Dlhis.Basic/Organization/Services/Implements/FactorySettingService.cs
@@ -6,9 +6,11 @@ using Dlhis.Entity.Basic.Enums;
using Dlhis.Entity.Sys.Entities;
using Dlhis.Sys.Api;
using Dlhis.Sys.Api.Response;
+using Kurisu.AspNetCore.Authentication.Abstractions;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
using Kurisu.AspNetCore.Utils.Extensions;
using Mapster;
+using SqlSugar;
namespace Dlhis.Basic.Organization.Services.Implements;
@@ -16,11 +18,13 @@ public class FactorySettingService : IFactorySettingService
{
private readonly IDbContext _dbContext;
private readonly ITenantApi _tenantApi;
+ private readonly ICurrentUser _currentUser;
- public FactorySettingService(IDbContext dbContext, ITenantApi tenantApi)
+ public FactorySettingService(IDbContext dbContext, ITenantApi tenantApi, ICurrentUser currentUser)
{
_dbContext = dbContext;
_tenantApi = tenantApi;
+ _currentUser = currentUser;
}
public async Task> GetListAsync(bool usePermission)
@@ -67,6 +71,37 @@ public class FactorySettingService : IFactorySettingService
return setting;
}
+ ///
+ public async Task GetWorkGridSetLimitAsync()
+ {
+ var factory = _currentUser.GetStringTenantId();
+ var v = new TimeOnly(20, 30, 0);
+
+ var vv = await _dbContext.Queryable()
+ .Where(x => x.TenantId == factory)
+ .Select(x => SqlFunc.IsNull(x.WorkGridSetLimit, v))
+ .SingleAsync();
+
+ return vv!.Value;
+ }
+
+ ///
+ public async Task CheckWorkGridSetLimitAsync(DateOnly date)
+ {
+ var result = await IsWorkGridSetLimitAsync(date);
+ result.ThrowIfTrue("当前时间不可编辑");
+ }
+
+ ///
+ public async Task IsWorkGridSetLimitAsync(DateOnly date)
+ {
+ var now = DateTime.Now;
+ var time = await GetWorkGridSetLimitAsync();
+ var setting = date.ToDateTime(time);
+
+ return now >= setting;
+ }
+
//************************************************************************************************************************************************************
private async Task> GetFactorySettingsAsync(string factory, bool usePermission)
diff --git a/Src/Dlhis.Basic/WorkGrids/Request/WorkGridScheduleAttendancePageRequest.cs b/Src/Dlhis.Basic/WorkGrids/Request/WorkGridScheduleAttendancePageRequest.cs
index bc783d40..fcf0ae17 100644
--- a/Src/Dlhis.Basic/WorkGrids/Request/WorkGridScheduleAttendancePageRequest.cs
+++ b/Src/Dlhis.Basic/WorkGrids/Request/WorkGridScheduleAttendancePageRequest.cs
@@ -6,7 +6,6 @@ namespace Dlhis.Basic.WorkGrids.Request;
public class WorkGridScheduleAttendancePageRequest : PageDto
{
- [Required(ErrorMessage = "工号不能为空")]
public string UserCode { get; set; }
public DateTimePeriod DateTimePeriod { get; set; }
diff --git a/Src/Dlhis.Basic/WorkGrids/Request/WorkGridScheduleSaveRequest.cs b/Src/Dlhis.Basic/WorkGrids/Request/WorkGridScheduleSaveRequest.cs
index 08b23358..c1ca7415 100644
--- a/Src/Dlhis.Basic/WorkGrids/Request/WorkGridScheduleSaveRequest.cs
+++ b/Src/Dlhis.Basic/WorkGrids/Request/WorkGridScheduleSaveRequest.cs
@@ -1,8 +1,9 @@
+using System.ComponentModel.DataAnnotations;
using Dlhis.Entity.Basic.Enums;
namespace Dlhis.Basic.WorkGrids.Request;
-public class WorkGridScheduleSaveRequest
+public class WorkGridScheduleSaveRequest : IValidatableObject
{
///
/// 网格code
@@ -23,4 +24,14 @@ public class WorkGridScheduleSaveRequest
/// 人员codes
///
public List UserCodes { get; set; }
+
+ ///
+ public IEnumerable Validate(ValidationContext validationContext)
+ {
+ var now = DateTime.Now;
+ if (Date.ToDateTime(new TimeOnly(0, 0)) < now.Date)
+ {
+ yield return new ValidationResult("不可编辑历史数据");
+ }
+ }
}
\ No newline at end of file
diff --git a/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridScheduleService.cs b/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridScheduleService.cs
index ebf66e67..23313c52 100644
--- a/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridScheduleService.cs
+++ b/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridScheduleService.cs
@@ -1,17 +1,21 @@
using Dlhis.Basic.Common.ApiLog.Services;
+using Dlhis.Basic.Organization.Services;
using Dlhis.Basic.WorkGrids.Request;
using Dlhis.Basic.WorkGrids.Response;
+using Dlhis.Constants;
using Dlhis.Entity.Basic.Entity;
using Dlhis.Entity.Basic.Enums;
using Dlhis.Entity.Common.Enums;
using Dlhis.Entity.Device.Entities;
using Dlhis.Jip.Api;
using Dlhis.Jip.Api.Requests;
+using Kurisu.AspNetCore.Authentication.Abstractions;
using Kurisu.AspNetCore.CustomClass;
using Kurisu.AspNetCore.DataAccess.Dto;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Extensions;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
using Kurisu.AspNetCore.Utils.Extensions;
+using SqlSugar;
namespace Dlhis.Basic.WorkGrids.Services.Implements;
@@ -20,22 +24,31 @@ public class WorkGridScheduleService : IWorkGridScheduleService
private readonly IDbContext _dbContext;
private readonly IJinkoJipApi _jinkoJipApi;
private readonly IOperateLog _operateLog;
+ private readonly ICurrentUser _currentUser;
+ private readonly IFactorySettingService _factorySettingService;
- public WorkGridScheduleService(IDbContext dbContext, IJinkoJipApi jinkoJipApi, IOperateLog operateLog)
+ public WorkGridScheduleService(IDbContext dbContext,
+ IJinkoJipApi jinkoJipApi,
+ IOperateLog operateLog,
+ ICurrentUser currentUser,
+ IFactorySettingService factorySettingService)
{
_dbContext = dbContext;
_jinkoJipApi = jinkoJipApi;
_operateLog = operateLog;
+ _currentUser = currentUser;
+ _factorySettingService = factorySettingService;
}
public async Task SaveAsync(WorkGridScheduleSaveRequest request)
{
+ //await _factorySettingService.CheckWorkGridSetLimitAsync(request.Date);
+
var workGrid = await _dbContext.Queryable().SingleAsync(x => x.Code == request.WorkGridCode);
workGrid.ThrowIfNull("工作网格不存在");
var exists = await _dbContext.Queryable()
.Where(x => x.WorkGridCode == request.WorkGridCode
- && x.PeriodType == request.PeriodType
&& x.Date == request.Date
&& request.UserCodes.Contains(x.UserCode)
)
@@ -59,9 +72,11 @@ public class WorkGridScheduleService : IWorkGridScheduleService
///
public async Task RemoveAsync(WorkGridScheduleSaveRequest request)
{
+ //await _factorySettingService.CheckWorkGridSetLimitAsync(request.Date);
+
var workGrid = await _dbContext.Queryable().SingleAsync(x => x.Code == request.WorkGridCode);
workGrid.ThrowIfNull("工作网格不存在");
-
+
var data = await _dbContext.Queryable()
.Where(x => x.WorkGridCode == request.WorkGridCode)
.Where(x => x.Date == request.Date)
@@ -114,11 +129,25 @@ public class WorkGridScheduleService : IWorkGridScheduleService
///
public async Task> GetAttendancePageAsync(WorkGridScheduleAttendancePageRequest request)
{
+ var jinkoCode = _currentUser.GetUserClaim(UserClaimConstants.JinkoCode);
+ var workGrid = await _dbContext.Queryable().Where(x => x.LeaderUserCode == jinkoCode).SingleAsync();
+ if (workGrid == null)
+ {
+ return new Pagination
+ {
+ PageIndex = request.PageIndex,
+ PageSize = request.PageSize,
+ Total = 0,
+ Data = null
+ };
+ }
+
return await _dbContext.Queryable()
.LeftJoin((log, d) => log.DeviceUniqueNo == d.UniqueNo)
- .Where(log => log.UserUniqueNo == request.UserCode)
.WhereIF(request.DateTimePeriod.HasValue(), log => log.RaiseDateTime >= request.DateTimePeriod.Start
&& log.RaiseDateTime <= request.DateTimePeriod.End)
+ .WhereIF(request.UserCode.IsPresent(), log => log.UserUniqueNo == request.UserCode)
+ .WhereIF(request.UserCode.IsEmpty(), log => SqlFunc.Subqueryable().Where(p => p.WorkGridCode == workGrid.Code && p.UserCode == log.UserUniqueNo).Any())
.OrderBy(log => log.RaiseDateTime)
.Select((log, d) => new WorkGridScheduleAttendancePageResponse
{
diff --git a/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridService.cs b/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridService.cs
index 9b6c977a..cebce3af 100644
--- a/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridService.cs
+++ b/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridService.cs
@@ -20,7 +20,9 @@ public class WorkGridService : IWorkGridService
private readonly ICurrentUser _currentUser;
private readonly IOperateLog _operateLog;
- public WorkGridService(IDbContext dbContext, ICurrentUser currentUser, IOperateLog operateLog)
+ public WorkGridService(IDbContext dbContext,
+ ICurrentUser currentUser,
+ IOperateLog operateLog)
{
_dbContext = dbContext;
_currentUser = currentUser;
@@ -33,18 +35,13 @@ public class WorkGridService : IWorkGridService
var insertGrids = new List();
var updateGrids = new List();
+ var leaderUserCodes = requests.Select(x => x.LeaderUserCode).Distinct().ToList();
+ var existsUserCodes = await _dbContext.Queryable().Where(x => leaderUserCodes.Contains(x.Code)).Select(x => x.Code).ToListAsync();
+ var notExistsUserCodes = leaderUserCodes.Except(existsUserCodes).ToList();
+ notExistsUserCodes.ThrowIfExists($"工号:{notExistsUserCodes.Join(",")}不存在");
+
foreach (var request in requests)
{
- var exists = await _dbContext.Queryable()
- .Where(x => x.LeaderUserCode == request.LeaderUserCode)
- .WhereIF(request.Id.HasValue, x => x.Id != request.Id)
- .AnyAsync();
-
- if (!await _dbContext.Queryable().Where(x => x.Code == request.LeaderUserCode).AnyAsync())
- {
- true.ThrowIfTrue($"工号:{request.LeaderUserCode}不存在");
- }
-
if (await _dbContext.Queryable().Where(x => x.Name == request.Name)
.WhereIF(request.Id.HasValue, x => x.Id != request.Id)
.AnyAsync())
@@ -52,12 +49,18 @@ public class WorkGridService : IWorkGridService
true.ThrowIfTrue($"网格区域名称[{request.Name}]重复");
}
- exists.ThrowIfTrue($"{request.LeaderUserCode}已存在管理的网格");
if (!request.Id.HasValue)
{
+ var exists = await _dbContext.Queryable()
+ .Where(x => x.LeaderUserCode == request.LeaderUserCode)
+ .WhereIF(request.Id.HasValue, x => x.Id != request.Id)
+ .AnyAsync();
+ exists.ThrowIfTrue($"{request.LeaderUserCode}人员存在管理中的网格,无法添加");
+
var entity = request.Adapt();
entity.Code = Guid.NewGuid();
+ entity.LeaderUserCode = request.LeaderUserCode;
await _dbContext.InsertAsync(entity);
insertGrids.Add($"{entity.Name}({entity.LeaderUserCode})");
@@ -82,6 +85,7 @@ public class WorkGridService : IWorkGridService
public async Task> GetPageAsync(WorkGridPageRequest request)
{
var role = _currentUser.GetRole();
+ var factory = _currentUser.GetStringTenantId();
var userCode = _currentUser.GetUserClaim(UserClaimConstants.JinkoCode);
var isAll = role is "admin" or "tenant-admin";
@@ -89,6 +93,7 @@ public class WorkGridService : IWorkGridService
.LeftJoin((x, ga) => x.LeaderUserCode == ga.Code)
.WhereIF(!isAll, x => x.LeaderUserCode == userCode)
.WhereIF(request.Search.IsPresent(), x => x.Name.Contains(request.Search) || x.LeaderUserCode == request.Search)
+ .Where(x => SqlFunc.Subqueryable().Where(p => p.Code == x.LeaderUserCode && p.Factory == factory).Any())
.Select((x, ga) => new WorkGridPageResponse
{
Id = x.Id,
@@ -108,9 +113,14 @@ public class WorkGridService : IWorkGridService
var workGrid = await _dbContext.Queryable().Where(x => x.LeaderUserCode == from).SingleAsync();
workGrid.ThrowIfNull("网格不存在");
+ var beforeGainfo = await _dbContext.Queryable().Where(x => x.Code == from).SingleAsync();
+ beforeGainfo.ThrowIfNull($"{from}人员不存在");
+
var gainfo = await _dbContext.Queryable().Where(x => x.Code == to).SingleAsync();
gainfo.ThrowIfNull($"{to}人员不存在");
+ (gainfo.Factory != beforeGainfo.Factory).ThrowIfTrue($"必须选择相同厂区({beforeGainfo.Factory})人员管理({gainfo.Factory}错误)");
+
workGrid.LeaderUserCode = to;
await _dbContext.UpdateAsync(workGrid);
@@ -120,7 +130,7 @@ public class WorkGridService : IWorkGridService
///
public async Task GetMyWorkGridAsync(WorkGridPageRequest request)
{
- var currentUserCode = _currentUser.GetUserClaim("jinko-code");
+ var currentUserCode = _currentUser.GetUserClaim(UserClaimConstants.JinkoCode);
var myWorkGrid = await _dbContext.Queryable()
.WhereIF(request.WorkGridCode.HasValue == false, x => x.LeaderUserCode == currentUserCode)
.WhereIF(request.WorkGridCode.HasValue, x => x.Code == request.WorkGridCode)
@@ -162,10 +172,10 @@ public class WorkGridService : IWorkGridService
(count != request.UserCodes.Count).ThrowIfTrue("存在非当前厂区人员,请检查");
- var existsAssigned = await _dbContext.Queryable().Where(x => x.WorkGridCode == myWorkGrid.Code)
+ var existsAssigned = await _dbContext.Queryable()
.Where(x => request.UserCodes.Contains(x.UserCode))
.AnyAsync();
- existsAssigned.ThrowIfTrue("存在已经分配人员,请勿重复分配");
+ existsAssigned.ThrowIfTrue("存在已经分配人员,操作失败!");
var dataToInserts = request.UserCodes.Select(x => new WorkGridUserEntity
{
@@ -180,15 +190,19 @@ public class WorkGridService : IWorkGridService
///
public async Task RemoveAsync(WorkGridUserRemoveRequest request)
{
- var currentUserCode = _currentUser.GetUserClaim("jinko-code");
+ var currentUserCode = _currentUser.GetUserClaim(UserClaimConstants.JinkoCode);
var myWorkGrid = await _dbContext.Queryable().Where(x => x.LeaderUserCode == currentUserCode).SingleAsync();
myWorkGrid.ThrowIfNull("工作网格尚未配置,请联系管理员");
- var workGridUsers = await _dbContext.Queryable().Where(x => x.WorkGridCode == myWorkGrid.Code)
+ var workGridUsers = await _dbContext.Queryable()
+ .Where(x => x.WorkGridCode == myWorkGrid.Code)
.Where(x => request.UserCodes.Contains(x.UserCode))
.ToListAsync();
- var workGridSchedules = await _dbContext.Queryable().Where(x => x.WorkGridCode == myWorkGrid.Code)
+ var date = DateOnly.FromDateTime(DateTime.Today);
+ var workGridSchedules = await _dbContext.Queryable()
+ .Where(x => x.Date > date)
+ .Where(x => x.WorkGridCode == myWorkGrid.Code)
.Where(x => request.UserCodes.Contains(x.UserCode))
.ToListAsync();
diff --git a/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridTimePeriodService.cs b/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridTimePeriodService.cs
index e59c4ac0..06922bef 100644
--- a/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridTimePeriodService.cs
+++ b/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridTimePeriodService.cs
@@ -2,7 +2,6 @@ using Dlhis.Basic.Common.ApiLog.Services;
using Dlhis.Basic.WorkGrids.Request;
using Dlhis.Basic.WorkGrids.Response;
using Dlhis.Entity.Basic.Entity;
-using Dlhis.Entity.Basic.Enums;
using Dlhis.Entity.Common.Enums;
using Kurisu.AspNetCore.DataAccess.Dto;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Extensions;
@@ -27,7 +26,6 @@ public class WorkGridTimePeriodService : IWorkGridTimePeriodService
public async Task SaveAsync(WorkGridTimePeriodSaveRequest request)
{
//await CheckDuplicateTimePeriodAsync(request);
-
if (!request.Id.HasValue)
{
//判断重复配置
@@ -65,17 +63,6 @@ public class WorkGridTimePeriodService : IWorkGridTimePeriodService
//*************************************************************************************************************************************************
- ///
- /// 根据类型获取配置
- ///
- ///
- ///
- private async Task GetSettingAsync(WorkGridTimePeriodEnumType timePeriodType)
- {
- return await _dbContext.Queryable()
- .Where(x => x.Type == timePeriodType)
- .SingleAsync();
- }
// ///
// /// 检查时间段重合检查
diff --git a/Src/Dlhis.Entity/Basic/Entity/WorkGridScheduleEntity.cs b/Src/Dlhis.Entity/Basic/Entity/WorkGridScheduleEntity.cs
index 21ff88d1..53d0b25a 100644
--- a/Src/Dlhis.Entity/Basic/Entity/WorkGridScheduleEntity.cs
+++ b/Src/Dlhis.Entity/Basic/Entity/WorkGridScheduleEntity.cs
@@ -1,5 +1,4 @@
using Dlhis.Entity.Basic.Enums;
-using Kurisu.AspNetCore.DataAccess.Entity;
using Kurisu.AspNetCore.DataAccess.SqlSugar;
using SqlSugar;
using SqlSugar.DbConvert;
@@ -9,19 +8,19 @@ namespace Dlhis.Entity.Basic.Entity;
///
///
///
-[SugarTable(TableName = "WorkGridSchedule")]
-public class WorkGridScheduleEntity : SugarBaseEntity, ITenantId
+[SugarTable(TableName = "WorkGridSchedules")]
+public class WorkGridScheduleEntity : SugarBaseEntity
{
///
/// 网格code
///
- [SugarColumn(IsNullable = false, ColumnDescription = "网格code")]
+ [SugarColumn(IsNullable = false, ColumnDescription = "网格code", IndexGroupNameList = new[] { "idx_WorkGridSchedules_workGridCode_date" })]
public Guid WorkGridCode { get; set; }
///
/// 排班日期
///
- [SugarColumn(IsNullable = false, ColumnDataType = "date", ColumnDescription = "排班日期")]
+ [SugarColumn(IsNullable = false, ColumnDataType = "date", ColumnDescription = "排班日期", IndexGroupNameList = new[] { "idx_WorkGridSchedules_workGridCode_date" })]
public DateOnly Date { get; set; }
///
@@ -33,10 +32,6 @@ public class WorkGridScheduleEntity : SugarBaseEntity, ITenantId
///
/// 工号
///
- [SugarColumn(IsNullable = false, ColumnDescription = "工号")]
+ [SugarColumn(IsNullable = false, ColumnDescription = "工号", IndexGroupNameList = new[] { "idx_WorkGridSchedules_userCode" })]
public string UserCode { get; set; }
-
-
- ///
- public string TenantId { get; set; }
}
\ No newline at end of file
diff --git a/Src/Dlhis.Entity/Basic/Entity/WorkGridUserEntity.cs b/Src/Dlhis.Entity/Basic/Entity/WorkGridUserEntity.cs
index 05ccd503..dd998292 100644
--- a/Src/Dlhis.Entity/Basic/Entity/WorkGridUserEntity.cs
+++ b/Src/Dlhis.Entity/Basic/Entity/WorkGridUserEntity.cs
@@ -1,8 +1,5 @@
-using Dlhis.Entity.Basic.Enums;
-using Kurisu.AspNetCore.DataAccess.Entity;
using Kurisu.AspNetCore.DataAccess.SqlSugar;
using SqlSugar;
-using SqlSugar.DbConvert;
namespace Dlhis.Entity.Basic.Entity;
@@ -10,7 +7,7 @@ namespace Dlhis.Entity.Basic.Entity;
/// 网格人员
///
[SugarTable(TableName = "WorkGridUsers")]
-public class WorkGridUserEntity : SugarBaseEntity, ITenantId
+public class WorkGridUserEntity : SugarBaseEntity
{
///
/// 网格code
@@ -21,15 +18,6 @@ public class WorkGridUserEntity : SugarBaseEntity, ITenantId
///
/// 网格人员
///
- [SugarColumn(IsNullable = false, ColumnDescription = "网格人员")]
+ [SugarColumn(IsNullable = false, ColumnDescription = "网格人员", UniqueGroupNameList = new[] { "idx_WorkGridUsers_userCode" })]
public string UserCode { get; set; }
-
- ///
- /// 排班类型
- ///
- [SugarColumn(IsNullable = true,ColumnDataType = "varchar(50)",ColumnDescription = "排班类型", SqlParameterDbType = typeof(EnumToStringConvert))]
- public WorkGridTimePeriodEnumType? ScheduleType { get; set; }
-
- ///
- public string TenantId { get; set; }
}
\ No newline at end of file
diff --git a/Src/Dlhis.Entity/Sys/Entities/FactorySettingEntity.cs b/Src/Dlhis.Entity/Sys/Entities/FactorySettingEntity.cs
index 89b9f935..2a764e84 100644
--- a/Src/Dlhis.Entity/Sys/Entities/FactorySettingEntity.cs
+++ b/Src/Dlhis.Entity/Sys/Entities/FactorySettingEntity.cs
@@ -34,12 +34,15 @@ public class FactorySettingEntity : SugarBaseEntity, ITenantId
///
[SugarColumn(ColumnDescription = "人脸检测配置", IsNullable = true, IsJson = true)]
public FaceImageDetectionDto FaceImageDetection { get; set; }
-
-
+
+
///
/// 外包自动离职天数(无通行记录)
///
public int NoRecordAutoResignOutsourceDays { get; set; }
+ [SugarColumn(IsNullable = true, ColumnDataType = "time", ColumnDescription = "工作网格编辑限制时间")]
+ public TimeOnly? WorkGridSetLimit { get; set; }
+
public string TenantId { get; set; }
}
\ No newline at end of file