Quellcode durchsuchen

Merge branch 'master' of http://git.12345lm.cn/Fengwo/hotline

Dun.Jason vor 1 Jahr
Ursprung
Commit
0b1bea6cc9

+ 0 - 1
src/Hotline.Api/Controllers/KnowledgeController.cs

@@ -818,7 +818,6 @@ namespace Hotline.Api.Controllers
 		/// </summary>
 		/// <param name="dto"></param>
 		/// <returns></returns>
-		[Permission(EPermission.KnowledgeWordList)]
 		[HttpGet("knowledge_word/list")]
 		public async Task<PagedDto<KnowledgeWordDto>> List([FromQuery] KnowledgeWordListDto dto)
 		{

+ 140 - 0
src/Hotline.Api/Controllers/SchedulingController.cs

@@ -0,0 +1,140 @@
+using Hotline.Repository.SqlSugar.Extensions;
+using Hotline.Schedulings;
+using Hotline.Share.Dtos.File;
+using Hotline.Share.Dtos;
+using Microsoft.AspNetCore.Mvc;
+using XF.Domain.Authentications;
+using XF.Domain.Exceptions;
+using XF.Domain.Repository;
+using Hotline.Share.Dtos.Schedulings;
+using MapsterMapper;
+
+namespace Hotline.Api.Controllers
+{
+	public class SchedulingController : BaseController
+	{
+		private readonly IRepository<Scheduling> _schedulingRepository;
+		private readonly IRepository<SchedulingShift> _schedulingShiftRepository;
+		private readonly IRepository<SchedulingUser> _schedulingUserRepository;
+		private readonly IMapper _mapper;
+
+		public SchedulingController(
+			IRepository<Scheduling> schedulingRepository,
+			IRepository<SchedulingShift> schedulingShiftRepository,
+			IRepository<SchedulingUser> schedulingUserRepository,
+			IMapper mapper
+			) {
+			_schedulingRepository = schedulingRepository;
+			_schedulingShiftRepository = schedulingShiftRepository;
+			_schedulingUserRepository = schedulingUserRepository;
+			_mapper= mapper;
+		}
+		#region 排班人员
+
+		/// <summary>
+		/// 新增排班人员
+		/// </summary>
+		/// <param name="dtos"></param>
+		/// <returns></returns>
+		[HttpPost("user")]
+		public async Task Add([FromBody] List<SchedulingUserDto> dtos)
+		{
+			List<SchedulingUser> user = new List<SchedulingUser>();
+			foreach (var dto in dtos)
+			{
+				if (string.IsNullOrEmpty(dto.UserId))
+					throw UserFriendlyException.SameMessage("请上传附件关联Key");
+
+				var model = _mapper.Map<SchedulingUser>(dto);
+				user.Add(model);
+			}
+			await _schedulingUserRepository.AddRangeAsync(user, HttpContext.RequestAborted);
+		}
+
+		/// <summary>
+		/// 删除排班人员
+		/// </summary>
+		/// <param name="dto"></param>
+		/// <returns></returns>
+		[HttpDelete("user")]
+		public async Task Delete([FromBody] UserDeleteDto dto)
+		{
+			foreach (var Id in dto.Ids)
+			{
+				await _schedulingUserRepository.RemoveAsync(x => x.Id == Id);
+			}
+		}
+
+		/// <summary>
+		/// 更新排班人员
+		/// </summary>
+		/// <param name="dto"></param>
+		/// <returns></returns>
+		[HttpPut("user")]
+		public async Task Update([FromBody] UserUpdateDto dto)
+		{
+			var user = await _schedulingUserRepository.GetAsync(dto.Id, HttpContext.RequestAborted);
+			if (user is null)
+				throw UserFriendlyException.SameMessage("无效附件");
+			_mapper.Map(dto, user);
+			await _schedulingUserRepository.UpdateAsync(user, HttpContext.RequestAborted);
+		}
+
+		/// <summary>
+		/// 批量更新排班人员
+		/// </summary>
+		/// <param name="dto"></param>
+		/// <returns></returns>
+		[HttpPut("batch_user")]
+		public async Task Update([FromBody] List<UserUpdateDto> dto)
+		{
+			List<SchedulingUser> users = new List<SchedulingUser>();
+			foreach (var item in dto)
+			{
+				var user = await _schedulingUserRepository.GetAsync(item.Id, HttpContext.RequestAborted);
+				if (user is null)
+					throw UserFriendlyException.SameMessage("无效附件");
+				_mapper.Map(dto, user);
+				users.Add(user);
+			}
+			await _schedulingUserRepository.UpdateRangeAsync(users, HttpContext.RequestAborted);
+		}
+
+
+		/// <summary>
+		/// 获取附件列表
+		/// </summary>
+		/// <param name="dto"></param>
+		/// <returns></returns>
+		[HttpGet("user_list")]
+		public async Task<PagedDto<SchedulingUser>> List([FromQuery] UserListDto dto)
+		{
+			var (total, items) = await _schedulingUserRepository.Queryable()
+				.WhereIF(!string.IsNullOrEmpty(dto.Keyword), x => x.UserName.Contains(dto.Keyword!))
+				.OrderByDescending(x => x.CreationTime)
+				.ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
+			return new PagedDto<SchedulingUser>(total, items);
+		}
+
+		/// <summary>
+		/// 获取附件实体
+		/// </summary>
+		/// <param name="id"></param>
+		/// <returns></returns>
+		[HttpGet("user/{id}")]
+		public async Task<SchedulingUser> Entity(string id)
+		{
+			return await _schedulingUserRepository.Queryable()
+				.FirstAsync(x => x.Id == id);
+		}
+
+		#endregion
+
+		#region 班次管理
+		#endregion
+
+		#region 排班管理
+		#endregion
+
+	}
+}

+ 78 - 0
src/Hotline.Share/Dtos/Schedulings/SchedulingDto.cs

@@ -0,0 +1,78 @@
+using Hotline.Share.Requests;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Hotline.Share.Dtos.Schedulings
+{
+	public class AddDto
+	{
+		List<SchedulingUserDto> UserDtos { get; set; }
+
+		/// <summary>
+		/// 班次名称
+		/// </summary>
+		public string? ShiftId { get; set; }
+
+		/// <summary>
+		/// 班次名称
+		/// </summary>
+		public string? ShiftName { get; set; }
+
+		/// <summary>
+		/// 排班时间
+		/// </summary>
+		public DateTime? SchedulingTime { get; set; }
+	}
+	public class UpdateDto : AddDto
+	{
+		public string? Id { get; set; }
+	}
+
+	public class DeleteDto
+	{
+		public List<string> Ids { get; set; }
+	}
+
+	public class BaseDto 
+	{
+		public DateTime? LastModificationTime { get; set; }
+
+		public bool IsDeleted { get; set; }
+
+		/// <summary>
+		/// 删除时间
+		/// </summary>
+		public DateTime? DeletionTime { get; set; }
+
+
+		/// <summary>
+		/// 创建时间
+		/// </summary>
+		public DateTime CreationTime { get; set; }
+
+		public string Id { get; set; }
+
+		/// <summary>
+		/// 组织Id
+		/// </summary>
+		public string? CreatorOrgId { get; set; }
+
+
+		public string? CreatorOrgName { get; set; }
+
+		/// <summary>
+		/// 创建人
+		/// </summary>
+		public string? CreatorId { get; set; }
+
+		public string? CreatorName { get; set; }
+	}
+
+	public record ListDto : PagedKeywordRequest
+	{
+
+	}
+}

+ 93 - 0
src/Hotline.Share/Dtos/Schedulings/SchedulingShiftDto.cs

@@ -0,0 +1,93 @@
+using Hotline.Share.Requests;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Hotline.Share.Dtos.Schedulings
+{
+	public class SchedulingShiftDto : ShiftBaseDto
+	{
+		/// <summary>
+		/// 班次名称
+		/// </summary>
+		public string Name { get; set; }
+
+		/// <summary>
+		/// 上班时间
+		/// </summary>
+		public DateTime? WorkingTime { get; set; }
+
+		/// <summary>
+		/// 下班时间
+		/// </summary>
+		public DateTime? OffDutyTime { get; set; }
+	}
+
+	public class ShiftAddDto
+	{
+		/// <summary>
+		/// 班次名称
+		/// </summary>
+		public string Name { get; set; }
+
+		/// <summary>
+		/// 上班时间
+		/// </summary>
+		public DateTime? WorkingTime { get; set; }
+
+		/// <summary>
+		/// 下班时间
+		/// </summary>
+		public DateTime? OffDutyTime { get; set; }
+	}
+	public class ShiftUpdateDto : ShiftAddDto
+	{
+		public string Id { get; set; }
+	}
+
+	public class ShiftDeleteDto
+	{
+		public List<string> Ids { get; set; }
+	}
+	public class ShiftBaseDto
+	{
+		public DateTime? LastModificationTime { get; set; }
+
+		public bool IsDeleted { get; set; }
+
+		/// <summary>
+		/// 删除时间
+		/// </summary>
+		public DateTime? DeletionTime { get; set; }
+
+
+		/// <summary>
+		/// 创建时间
+		/// </summary>
+		public DateTime CreationTime { get; set; }
+
+		public string Id { get; set; }
+
+		/// <summary>
+		/// 组织Id
+		/// </summary>
+		public string? CreatorOrgId { get; set; }
+
+
+		public string? CreatorOrgName { get; set; }
+
+		/// <summary>
+		/// 创建人
+		/// </summary>
+		public string? CreatorId { get; set; }
+
+		public string? CreatorName { get; set; }
+	}
+
+	public record ShiftListDto : PagedKeywordRequest
+	{
+
+	}
+}

+ 83 - 0
src/Hotline.Share/Dtos/Schedulings/SchedulingUserDto.cs

@@ -0,0 +1,83 @@
+
+using Hotline.Share.Dtos.Users;
+using Hotline.Share.Requests;
+
+namespace Hotline.Share.Dtos.Schedulings
+{
+	public class SchedulingUserDto : UserBaseDto
+	{
+		/// <summary>
+		/// 用户ID
+		/// </summary>
+		public string UserId { get; set; }
+
+		/// <summary>
+		/// 用户名称
+		/// </summary>
+		public string? UserName { get; set; }
+
+		/// <summary>
+		/// 
+		/// </summary>
+		public UserDto User { get; set; }
+	}
+	public class UserAddDto
+	{
+		/// <summary>
+		/// 用户ID
+		/// </summary>
+		public string UserId { get; set; }
+
+		/// <summary>
+		/// 用户名称
+		/// </summary>
+		public string UserName { get; set; }
+	}
+	public class UserUpdateDto : UserAddDto
+	{
+		public string Id { get; set; }
+	}
+
+	public class UserDeleteDto
+	{
+		public List<string> Ids { get; set; }
+	}
+	public class UserBaseDto
+	{
+		public DateTime? LastModificationTime { get; set; }
+
+		public bool IsDeleted { get; set; }
+
+		/// <summary>
+		/// 删除时间
+		/// </summary>
+		public DateTime? DeletionTime { get; set; }
+
+
+		/// <summary>
+		/// 创建时间
+		/// </summary>
+		public DateTime CreationTime { get; set; }
+
+		public string Id { get; set; }
+
+		/// <summary>
+		/// 组织Id
+		/// </summary>
+		public string? CreatorOrgId { get; set; }
+
+
+		public string? CreatorOrgName { get; set; }
+
+		/// <summary>
+		/// 创建人
+		/// </summary>
+		public string? CreatorId { get; set; }
+
+		public string? CreatorName { get; set; }
+	}
+
+	public record UserListDto : PagedKeywordRequest {
+	
+	}
+}

+ 64 - 0
src/Hotline/Schedulings/Scheduling.cs

@@ -0,0 +1,64 @@
+using SqlSugar;
+using System.ComponentModel;
+using XF.Domain.Repository;
+
+namespace Hotline.Schedulings
+{
+	[Description("排班管理")]
+	public class Scheduling : FullStateEntity
+	{
+		/// <summary>
+		/// 排班人员ID
+		/// </summary>
+		[SugarColumn(ColumnDescription = "排班人员ID")]
+		public string? SchedulingUserId { get; set; }
+
+		/// <summary>
+		/// 排班人员名称
+		/// </summary>
+		[SugarColumn(ColumnDescription = "排班人员名称")]
+		public string? SchedulingUserName { get; set; }
+
+		/// <summary>
+		/// 
+		/// </summary>
+		[Navigate(NavigateType.OneToOne, nameof(SchedulingUserId))]
+		public SchedulingUser SchedulingUser { get; set; }
+
+		/// <summary>
+		/// 
+		/// </summary>
+		[Navigate(NavigateType.OneToOne, nameof(ShiftId))]
+		public SchedulingShift SchedulingShift { get; set; }
+
+		/// <summary>
+		/// 班次名称
+		/// </summary>
+		[SugarColumn(ColumnDescription = "班次名称")]
+		public string? ShiftId { get; set; }
+
+		/// <summary>
+		/// 班次名称
+		/// </summary>
+		[SugarColumn(ColumnDescription = "班次名称")]
+		public string? ShiftName { get; set; }
+
+		/// <summary>
+		/// 上班时间
+		/// </summary>
+		[SugarColumn(ColumnDescription = "上班时间")]
+		public DateTime? WorkingTime { get; set; }
+
+		/// <summary>
+		/// 下班时间
+		/// </summary>
+		[SugarColumn(ColumnDescription = "下班时间")]
+		public DateTime? OffDutyTime { get; set; }
+
+		/// <summary>
+		/// 排班时间
+		/// </summary>
+		[SugarColumn(ColumnDescription = "排班时间")]
+		public DateTime? SchedulingTime { get; set; }
+	}
+}

+ 33 - 0
src/Hotline/Schedulings/SchedulingShift.cs

@@ -0,0 +1,33 @@
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using XF.Domain.Repository;
+
+namespace Hotline.Schedulings
+{
+	[Description("排班班次")]
+	public class SchedulingShift : FullStateEntity
+	{
+		/// <summary>
+		/// 班次名称
+		/// </summary>
+		[SugarColumn(ColumnDescription = "班次名称")]
+		public string Name { get; set; }
+
+		/// <summary>
+		/// 上班时间
+		/// </summary>
+		[SugarColumn(ColumnDescription = "上班时间")]
+		public DateTime? WorkingTime { get; set; }
+
+		/// <summary>
+		/// 下班时间
+		/// </summary>
+		[SugarColumn(ColumnDescription = "下班时间")]
+		public DateTime? OffDutyTime { get; set; }
+	}
+}

+ 35 - 0
src/Hotline/Schedulings/SchedulingUser.cs

@@ -0,0 +1,35 @@
+using Hotline.Orders;
+using Hotline.Users;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using XF.Domain.Repository;
+
+namespace Hotline.Schedulings
+{
+	[Description("排班人员")]
+	public class SchedulingUser : FullStateEntity
+	{
+		/// <summary>
+		/// 用户ID
+		/// </summary>
+		[SugarColumn(ColumnDescription = "用户ID")]
+		public string UserId { get; set; }
+
+		/// <summary>
+		/// 用户名称
+		/// </summary>
+		[SugarColumn(ColumnDescription = "用户名称")]
+		public string? UserName { get; set; }
+
+		/// <summary>
+		/// 
+		/// </summary>
+		[Navigate(NavigateType.OneToOne, nameof(UserId))]
+		public User User { get; set; }
+	}
+}