|
@@ -9,6 +9,12 @@ using XF.Domain.Repository;
|
|
|
using Hotline.Share.Dtos.Schedulings;
|
|
|
using MapsterMapper;
|
|
|
using Hotline.Users;
|
|
|
+using System.Data;
|
|
|
+using Hotline.Repository.SqlSugar.TextSearch;
|
|
|
+using Microsoft.AspNetCore.Components;
|
|
|
+using System.Dynamic;
|
|
|
+using Microsoft.EntityFrameworkCore.Query.Internal;
|
|
|
+using NetTaste;
|
|
|
|
|
|
namespace Hotline.Api.Controllers
|
|
|
{
|
|
@@ -240,7 +246,7 @@ namespace Hotline.Api.Controllers
|
|
|
SchedulingUserId = user.UserId,
|
|
|
SchedulingUserName = user.UserName,
|
|
|
ShiftId = dtos.ShiftId,
|
|
|
- ShiftName = dtos.ShiftName,
|
|
|
+ ShiftName = shift.Name,
|
|
|
SchedulingTime = schedulingTime,
|
|
|
WorkingTime = shift.WorkingTime,
|
|
|
OffDutyTime = shift.OffDutyTime,
|
|
@@ -341,6 +347,39 @@ namespace Hotline.Api.Controllers
|
|
|
return new PagedDto<Scheduling>(total, items);
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 排班数据查询
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("data")]
|
|
|
+ public async Task<List<IDictionary<string, object>>> Data([FromQuery] DataDto dto)
|
|
|
+ {
|
|
|
+ List<IDictionary<string, object>> res = new List<IDictionary<string, object>>();
|
|
|
+ var startTime = DateTime.Parse(dto.Time.ToString("yyyy-MM") + "-01");
|
|
|
+ var endTime =startTime.AddMonths(1).AddDays(-1);
|
|
|
+ DataTable data = await _schedulingRepository.Queryable().Where(x=>x.SchedulingTime >= startTime && x.SchedulingTime <= endTime).ToDataTableAsync();
|
|
|
+ if (data == null || data.Rows.Count <= 0) throw UserFriendlyException.SameMessage("当月不存在排班信息");
|
|
|
+ var names = data.AsEnumerable().Select(x=>x.Field<string>("SchedulingUserName")).Distinct().ToList();
|
|
|
+
|
|
|
+ foreach (var item in names)
|
|
|
+ {
|
|
|
+ dynamic dynamicObj = new ExpandoObject();
|
|
|
+ var dict = (IDictionary<string, object>)dynamicObj;
|
|
|
+ var userName = "SchedulingUserName";
|
|
|
+ dict[userName] = item;
|
|
|
+ var scheduling = data.AsEnumerable().Where(x => x.Field<string>("SchedulingUserName") == item).OrderBy(x => x.Field<DateTime>("SchedulingTime")).ToList();
|
|
|
+ foreach (DataRow row in scheduling)
|
|
|
+ {
|
|
|
+ var obj = new { Name = row.Field<string>("ShiftName"), Id = row.Field<string>("Id") };
|
|
|
+ var tiem = row.Field<DateTime>("SchedulingTime").ToString("yyyy-MM-dd");
|
|
|
+ dict[tiem] = obj;
|
|
|
+ res.Add(dict);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 获取排班管理实体
|
|
|
/// </summary>
|