feat 网格增加其他上传
This commit is contained in:
@@ -230,11 +230,4 @@ public class WorkGridsController : ControllerBase
|
|||||||
{
|
{
|
||||||
await _workGridScheduleService.ManuallyUploadAsync(logIds);
|
await _workGridScheduleService.ManuallyUploadAsync(logIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
[HttpPost("test")]
|
|
||||||
public async Task<object> Test(WorkGridScheduleSaveRequest request)
|
|
||||||
{
|
|
||||||
return await _workGridScheduleService.TestAsync(request);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -68,11 +68,4 @@ public interface IWorkGridScheduleService : IScopeDependency
|
|||||||
/// <param name="reason"></param>
|
/// <param name="reason"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task ManuallyCancelAsync(long id, string reason);
|
Task ManuallyCancelAsync(long id, string reason);
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 测试接口
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="request">排班保存请求参数</param>
|
|
||||||
/// <returns>测试结果</returns>
|
|
||||||
Task<object> TestAsync(WorkGridScheduleSaveRequest request);
|
|
||||||
}
|
}
|
||||||
@@ -142,15 +142,51 @@ public class WorkGridScheduleService : IWorkGridScheduleService
|
|||||||
await _dbContext.InsertAsync(toInserts);
|
await _dbContext.InsertAsync(toInserts);
|
||||||
await _operateLog.LogAsync(OperateLogType.WorkGrid, $"新增网格({workGrid.Name}){request.Date.ToString("yyyy-M-d")}的{request.PeriodType.GetDescription()}人员:{request.UserCodes.Join(",")}");
|
await _operateLog.LogAsync(OperateLogType.WorkGrid, $"新增网格({workGrid.Name}){request.Date.ToString("yyyy-M-d")}的{request.PeriodType.GetDescription()}人员:{request.UserCodes.Join(",")}");
|
||||||
|
|
||||||
if (workGrid.Code.ToString() == "769ace3b-28fa-4c4e-ba46-fc399a25085f")
|
|
||||||
|
await PublishScheduleToSapAsync(workGrid.Code, toInserts, request.PeriodType);
|
||||||
|
|
||||||
|
await NoticeScheduleMessageAsync(request.UserCodes, workGrid.Name, workGrid.LeaderUserName, workGrid.LeaderUserCode, request.Date, request.PeriodType);
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task PublishScheduleToSapAsync(Guid workGridCode, List<WorkGridScheduleEntity> toInserts, WorkGridTimePeriodEnumType periodType)
|
||||||
{
|
{
|
||||||
|
//仅部分网格推送SAP
|
||||||
|
var workGridCodes = new List<string>
|
||||||
|
{
|
||||||
|
"769ace3b-28fa-4c4e-ba46-fc399a25085f",
|
||||||
|
"90e79f00-d203-4a4d-a08e-fd129ea02734",
|
||||||
|
"9901a303-c537-4db4-9b83-0bc5b3e713ab",
|
||||||
|
"6e37be58-75a3-44d8-bb6e-4faf9d6dbc39",
|
||||||
|
"cdea5dd2-42d6-44a5-bd0d-9a339f788174",
|
||||||
|
"c983e6d8-0626-4171-8313-4cd4379975a2",
|
||||||
|
"a4bad4f4-a041-47e8-b7ee-8c480babf7d6",
|
||||||
|
"5f6bf4ae-f7d1-47ce-9dc0-82f5f0cadff0",
|
||||||
|
"47416294-724f-4a63-b422-bb6c43466554",
|
||||||
|
"33fb2070-f8ec-4762-b7f7-4073eb68a41d",
|
||||||
|
"ee509a29-c040-4e49-964d-d7e3a9094a0f",
|
||||||
|
"25aac70d-73ca-465a-bd70-fcd5999d1476",
|
||||||
|
"aa1e4052-c1e8-4213-bfb5-aacf00eb480f",
|
||||||
|
"6fd4df7e-6278-4622-8d9c-77e29f7fad1d",
|
||||||
|
"5ea25d26-1ce2-4760-9bee-c21a8ff78ff6",
|
||||||
|
"fe61c0d7-dda8-4570-afd4-be2b28def6b3",
|
||||||
|
"67ccd75f-7743-48a0-b89e-3d90fd208c8a",
|
||||||
|
"375976e4-b4ca-424c-bfb9-a81f5ff02c5d",
|
||||||
|
"af588a53-7757-48d2-a078-280be0b471e4",
|
||||||
|
"a54365db-624d-4d24-8840-465a7cd0d760"
|
||||||
|
};
|
||||||
|
|
||||||
|
if (!workGridCodes.Contains(workGridCode.ToString()))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
//推送到SAP
|
//推送到SAP
|
||||||
var items = toInserts.Select(x => new SyncWorkShiftDayItem
|
var items = toInserts.Select(x => new SyncWorkShiftDayItem
|
||||||
{
|
{
|
||||||
UserCode = x.UserCode,
|
UserCode = x.UserCode,
|
||||||
Begin = x.Date.ToString("yyyyMMdd"),
|
Begin = x.Date.ToString("yyyyMMdd"),
|
||||||
End = x.Date.ToString("yyyyMMdd"),
|
End = x.Date.ToString("yyyyMMdd"),
|
||||||
Plan = request.PeriodType == WorkGridTimePeriodEnumType.Day ? "JK03" : "JK04",
|
Plan = periodType == WorkGridTimePeriodEnumType.Day ? "JK03" : "JK04",
|
||||||
Operate = "INS"
|
Operate = "INS"
|
||||||
}).ToList();
|
}).ToList();
|
||||||
|
|
||||||
@@ -173,7 +209,7 @@ public class WorkGridScheduleService : IWorkGridScheduleService
|
|||||||
var msg = response.Items.FirstOrDefault(x => x.UserCode == workGridSchedule.UserCode)?.Message;
|
var msg = response.Items.FirstOrDefault(x => x.UserCode == workGridSchedule.UserCode)?.Message;
|
||||||
await _dbContext.Updateable<WorkGridScheduleEntity>()
|
await _dbContext.Updateable<WorkGridScheduleEntity>()
|
||||||
.SetColumns(x => x.SyncResult == msg)
|
.SetColumns(x => x.SyncResult == msg)
|
||||||
.Where(x => x.WorkGridCode == workGrid.Code)
|
.Where(x => x.WorkGridCode == workGridCode)
|
||||||
.Where(x => x.UserCode == workGridSchedule.UserCode)
|
.Where(x => x.UserCode == workGridSchedule.UserCode)
|
||||||
.Where(x => x.Date == workGridSchedule.Date)
|
.Where(x => x.Date == workGridSchedule.Date)
|
||||||
.Where(x => x.PeriodType == workGridSchedule.PeriodType)
|
.Where(x => x.PeriodType == workGridSchedule.PeriodType)
|
||||||
@@ -181,13 +217,15 @@ public class WorkGridScheduleService : IWorkGridScheduleService
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async Task NoticeScheduleMessageAsync(List<string> userCodes,
|
||||||
|
string workGridName, string workGridLeaderName, string workGridLeaderCode,
|
||||||
|
DateOnly date, WorkGridTimePeriodEnumType periodType)
|
||||||
|
{
|
||||||
//todo sub pub
|
//todo sub pub
|
||||||
//推送排班通知
|
//推送排班通知
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var codeAndNameList = await _dbContext.Queryable<GainfoEntity>().Where(x => request.UserCodes.Contains(x.Code))
|
var codeAndNameList = await _dbContext.Queryable<GainfoEntity>().Where(x => userCodes.Contains(x.Code))
|
||||||
.Select(x => new { x.Code, x.Name })
|
.Select(x => new { x.Code, x.Name })
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|
||||||
@@ -197,7 +235,7 @@ public class WorkGridScheduleService : IWorkGridScheduleService
|
|||||||
{
|
{
|
||||||
await _jinkoApiService.SendWorkMessageAsync(new DingTalkWorkMessageRequest
|
await _jinkoApiService.SendWorkMessageAsync(new DingTalkWorkMessageRequest
|
||||||
{
|
{
|
||||||
Content = $"{gainfo.Name}({gainfo.Code})你好,系统检测到你被{workGrid.Name}网格的网格长{workGrid.LeaderUserName}({workGrid.LeaderUserCode})安排了{request.Date.ToString("yyyy年MM月dd日")}{request.PeriodType.GetDescription()},请按时上班",
|
Content = $"{gainfo.Name}({gainfo.Code})你好,系统检测到你被{workGridName}网格的网格长{workGridLeaderName}({workGridLeaderCode})安排了{date.ToString("yyyy年MM月dd日")}{periodType.GetDescription()},请按时上班",
|
||||||
WorkCodes = new List<string> { gainfo.Code }
|
WorkCodes = new List<string> { gainfo.Code }
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -209,7 +247,7 @@ public class WorkGridScheduleService : IWorkGridScheduleService
|
|||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
_logger.LogError("推送信息错误save:{error}", e.Message);
|
_logger.LogError("推送信息错误:{error}", e.Message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -278,6 +316,7 @@ public class WorkGridScheduleService : IWorkGridScheduleService
|
|||||||
{
|
{
|
||||||
workGridSchedule.SyncResult = response.Items.FirstOrDefault(x => x.UserCode == workGridSchedule.UserCode)?.Message;
|
workGridSchedule.SyncResult = response.Items.FirstOrDefault(x => x.UserCode == workGridSchedule.UserCode)?.Message;
|
||||||
}
|
}
|
||||||
|
|
||||||
await _dbContext.UpdateAsync(data);
|
await _dbContext.UpdateAsync(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -349,32 +388,6 @@ public class WorkGridScheduleService : IWorkGridScheduleService
|
|||||||
await _workGridScheduleRepository.CancelAsync(id, reason);
|
await _workGridScheduleRepository.CancelAsync(id, reason);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<object> TestAsync(WorkGridScheduleSaveRequest request)
|
|
||||||
{
|
|
||||||
request.UserCodes = request.UserCodes.Distinct().ToList();
|
|
||||||
|
|
||||||
var workGrid = await _dbContext.Queryable<WorkGridEntity>()
|
|
||||||
.LeftJoin<GainfoEntity>((x, ga) => x.LeaderUserCode == ga.Code)
|
|
||||||
.Where(x => x.Code == request.WorkGridCode)
|
|
||||||
.Select((x, ga) => new
|
|
||||||
{
|
|
||||||
x.Code, x.Name,
|
|
||||||
x.LeaderUserCode,
|
|
||||||
LeaderUserName = ga.Name,
|
|
||||||
x.MaxConsecutiveLimitCount
|
|
||||||
})
|
|
||||||
.SingleAsync();
|
|
||||||
workGrid.ThrowIfNull("工作网格不存在");
|
|
||||||
|
|
||||||
var timeSetting = await _dbContext.Queryable<WorkGridTimePeriodEntity>().Where(x => x.Type == request.PeriodType).Select(x => new { x.Start, x.Before }).SingleAsync();
|
|
||||||
timeSetting.ThrowIfNull("工作网格时间尚未配置,无法操作");
|
|
||||||
|
|
||||||
var currentLimit = request.Date.ToDateTime(timeSetting.Start.Add(-TimeSpan.FromHours(1)));
|
|
||||||
(DateTime.Now >= currentLimit).ThrowIfTrue("当前时间不可修改排班信息");
|
|
||||||
|
|
||||||
return currentLimit;
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task<List<WorkGridScheduleResponse>> GetListAsync(Guid workGridCode, DateOnly date, WorkGridTimePeriodEnumType? periodType)
|
public async Task<List<WorkGridScheduleResponse>> GetListAsync(Guid workGridCode, DateOnly date, WorkGridTimePeriodEnumType? periodType)
|
||||||
{
|
{
|
||||||
var data = await _dbContext.Queryable<WorkGridScheduleEntity>()
|
var data = await _dbContext.Queryable<WorkGridScheduleEntity>()
|
||||||
|
|||||||
Reference in New Issue
Block a user