diff --git a/APT.MicroApi/APT.FO.WebApi/Controllers/PreShiftMeetingRecordController.cs b/APT.MicroApi/APT.FO.WebApi/Controllers/PreShiftMeetingRecordController.cs index 6d6139b..2ba2164 100644 --- a/APT.MicroApi/APT.FO.WebApi/Controllers/PreShiftMeetingRecordController.cs +++ b/APT.MicroApi/APT.FO.WebApi/Controllers/PreShiftMeetingRecordController.cs @@ -1,24 +1,25 @@ -using APT.BaseData.Domain.Entities.FM; -using APT.BaseData.Domain.Entities; +using APT.BaseData.Domain.Entities; +using APT.BaseData.Domain.Entities.FM; +using APT.BaseData.Domain.Enums; using APT.BaseData.Domain.IServices; using APT.BaseData.Domain.IServices.FM; +using APT.BaseData.Services.Services.FM; using APT.Infrastructure.Core; using APT.MS.Domain.Entities.FO; +using APT.MS.Domain.Entities.HM; +using APT.MS.Domain.Entities.SK; using APT.MS.Domain.Enums; using APT.Utility; +using Microsoft.AspNetCore.JsonPatch.Operations; using Microsoft.AspNetCore.Mvc; +using NPOI.SS.Formula.Functions; using System; using System.Collections.Generic; -using System.Linq; -using APT.BaseData.Domain.Enums; -using APT.MS.Domain.Entities.HM; -using Microsoft.AspNetCore.JsonPatch.Operations; -using System.Threading.Tasks; using System.Diagnostics.Eventing.Reader; -using APT.BaseData.Services.Services.FM; +using System.Linq; using System.Linq.Expressions; -using NPOI.SS.Formula.Functions; -using APT.MS.Domain.Entities.SK; +using System.Threading.Tasks; +using static log4net.Appender.RollingFileAppender; namespace APT.FO.WebApi.Controllers.Api.FO { @@ -211,17 +212,33 @@ namespace APT.FO.WebApi.Controllers.Api.FO var detailIds = GetEntities(t => t.PRE_SHIFT_MEETING_RECORD_ID == entity.ID, new BaseFilter(entity.ORG_ID)).Select(m => m.ID).ToList(); var postIds = GetEntities(t => detailIds.Contains(t.PRE_SHIFT_MEETING_RECORD_DETAIL_ID), new BaseFilter(entity.ORG_ID)).Select(m => m.ID).ToList(); ; //20230913新增同步人员排班 + T_FM_DEPARTMENT_SCHEDULING addSchedule = null; List addSchedulings = new List(); List delSchedulings = new List(); if (entity.DEPARTMENT_SCHEDULING_ID != null) { - var shiftClass = GetEntities(t => t.DEPARTMENT_SCHEDULING_ID == entity.DEPARTMENT_SCHEDULING_ID, new BaseFilter(entity.ORG_ID), new string[] { "Nav_Person.Nav_User" }); + var shiftClass = GetEntity(t => t.DEPARTMENT_SCHEDULING_ID == entity.DEPARTMENT_SCHEDULING_ID); + if (shiftClass == null) + { + addSchedule = new T_FM_DEPARTMENT_SCHEDULING(); + addSchedule.ID = (Guid)entity.DEPARTMENT_SCHEDULING_ID; + addSchedule.ORG_ID = entity.ORG_ID; + addSchedule.TEAM_ID = entity.TEAM_ID; + addSchedule.DEPARTMENT_ID = (Guid)entity.DEPARTMENT_ID; + addSchedule.DATE_TIME = DateTime.Now.Date; + addSchedule.CLASS_ID = (Guid)entity.CLASS_ID; + addSchedule.RUN_STATUS = true; + addSchedule.START_TIME = entity.START_TIME; + addSchedule.END_TIME = entity.END_TIME; + } + var shiftClassDetails = GetEntities(t => t.DEPARTMENT_SCHEDULING_ID == entity.DEPARTMENT_SCHEDULING_ID, new BaseFilter(entity.ORG_ID), new string[] { "Nav_Person.Nav_User" }); + var haveUserIds = shiftClassDetails.Select(t => t.Nav_Person?.Nav_User?.ID).ToList(); var delUsers = users.Where(t => t.IS_DELETED == true).Select(t => t.USER_ID); - var addUsers = users.Where(t => t.CREATE_TIME > entity.CREATE_TIME).Select(t => t.USER_ID); + var addUsers = users.Where(t => !haveUserIds.Contains(t.USER_ID)).Select(t => t.USER_ID); foreach (var user in addUsers) { - var addDetails = shiftClass.FirstOrDefault(t => t.Nav_Person.Nav_User.ID == user); + var addDetails = shiftClassDetails.FirstOrDefault(t => t.Nav_Person.Nav_User.ID == user); if (addDetails == null) { T_FM_DEPARTMENT_SCHEDULING_DETAIL addScheduling = new T_FM_DEPARTMENT_SCHEDULING_DETAIL(); @@ -231,7 +248,7 @@ namespace APT.FO.WebApi.Controllers.Api.FO addSchedulings.Add(addScheduling); } } - delSchedulings = shiftClass.Where(t => delUsers.Contains(t.Nav_Person.Nav_User.ID)).Select(t => t.ID).ToList(); + delSchedulings = shiftClassDetails.Where(t => delUsers.Contains(t.Nav_Person.Nav_User.ID)).Select(t => t.ID).ToList(); } //附件保存 if (files != null && files.Any()) @@ -417,6 +434,8 @@ namespace APT.FO.WebApi.Controllers.Api.FO BantchAddEntityNoCommit(sendNotices); if (delSchedulings.Any()) BantchDeleteEntityNoCommit(delSchedulings); + if (addSchedule != null) + UpdateEntityNoCommit(addSchedule); if (addSchedulings.Any()) BantchAddEntityNoCommit(addSchedulings); if (modelLast != null && modelLast.OVERTIME != FOISOVERTIME.未统计)