手动发起的班前会,到时间触发岗位当班

This commit is contained in:
何美荣 2026-05-22 10:41:47 +08:00
parent 02b5111fb9
commit 23577b6322

View File

@ -2135,54 +2135,69 @@ namespace APT.PP.WebApi.Controllers.Api.PP
var newFilter = new KeywordFilter(); var newFilter = new KeywordFilter();
newFilter.OrgId = filter.OrgId; newFilter.OrgId = filter.OrgId;
newFilter.IgnoreDataRule = true; newFilter.IgnoreDataRule = true;
var posts = this.GetEntities<T_FM_USER_POST>(t => true, new BaseFilter(filter.OrgId));
var departs = this.GetEntities<T_FM_DEPARTMENT>(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)); var departs = this.GetEntities<T_FM_DEPARTMENT>(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId));
var fmClass = this.GetEntities<T_FM_CLASS>(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_ClassDetail"); var fmClass = this.GetEntities<T_FM_CLASS>(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_ClassDetail");
var users = this.GetEntities<T_FM_USER>(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin"), new BaseFilter(filter.OrgId), "Nav_Person.Nav_Post"); var users = this.GetEntities<T_FM_USER>(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin"), new BaseFilter(filter.OrgId), "Nav_Person.Nav_Post");
var records = this.GetEntities<T_FO_CURRENT_CLASS_RECORD>(t => t.RECORD_DATE.Date == dt.Date, newFilter); //var records = this.GetEntities<T_FO_CURRENT_CLASS_RECORD>(t => t.RECORD_DATE.Date == dt.Date, newFilter);
var preClass = this.GetEntities<T_FO_PRE_SHIFT_MEETING_RECORD>(t => t.START_TIME.Date == dt.Date && t.DEPARTMENT_SCHEDULING_ID == null, newFilter); var preClass = this.GetEntities<T_FO_PRE_SHIFT_MEETING_RECORD>(t => t.START_TIME <= dt && t.END_TIME!=null && t.END_TIME.Date == dt.Date && t.END_TIME.Hour == dt.AddHours(1).Hour && t.DEPARTMENT_SCHEDULING_ID == null, newFilter);
var preClassIds = preClass.Select(t => t.ID).ToList(); var preClassIds = preClass.Select(t => t.ID).ToList();
var preClassUsers = this.GetEntities<T_FO_PRE_SHIFT_MEETING_RECORD_USER>(t => preClassIds.Contains(t.PRE_SHIFT_MEETING_RECORD_ID), newFilter); var preClassUsers = this.GetEntities<T_FO_PRE_SHIFT_MEETING_RECORD_USER>(t => preClassIds.Contains(t.PRE_SHIFT_MEETING_RECORD_ID), newFilter);
if (preClass != null && preClass.Any()) if (preClass != null && preClass.Any())
{ {
foreach (var item in preClass) foreach (var item in preClass)
{ {
var userIds = preClassUsers.Where(t => t.PRE_SHIFT_MEETING_RECORD_ID == item.ID && t.USER_ID != null).Select(m => m.USER_ID).Distinct().ToList();
//当前班前会的所有人
if (item.END_TIME != DateTime.MinValue && item.END_TIME.Hour == dt.AddHours(1).Hour) var preUsers = users.Where(t => t.DEPARTMENT_ID != null && userIds.Contains(t.ID) && t.Nav_Person != null && t.Nav_Person.POST_ID != null).ToList();
//按部门触发
var userDepartIds = preUsers.Select(t => t.DEPARTMENT_ID).Distinct().ToList();
if (userDepartIds != null && userDepartIds.Any())
{ {
var userIds = preClassUsers.Where(t => t.PRE_SHIFT_MEETING_RECORD_ID == item.ID).Select(m => m.USER_ID).Distinct().ToList(); foreach (var departId in userDepartIds)
var sendUsers = users.Where(t => userIds.Contains(t.ID) && t.Nav_Person != null).ToList();
if (sendUsers != null && sendUsers.Any())
{ {
foreach (var user in sendUsers) var depart = departs.FirstOrDefault(t => t.ID == departId);
//按岗位触发
var postIds = preUsers.Where(t => t.DEPARTMENT_ID == departId).Select(m => m.Nav_Person.POST_ID).Distinct().ToList();
if (postIds != null && postIds.Any())
{ {
var firstRecord = records.FirstOrDefault(t => t.EDITOR_ID == user.ID); foreach (var postId in postIds)
if (firstRecord == null) {
{ var post = posts.FirstOrDefault(t => t.ID == postId);
var depart = departs.FirstOrDefault(t => t.ID == user.DEPARTMENT_ID); //查同部门同岗位的
T_FO_CURRENT_CLASS_RECORD record = new T_FO_CURRENT_CLASS_RECORD(); var sendUsers = preUsers.Where(t => t.DEPARTMENT_ID == departId && t.Nav_Person.POST_ID == postId).Distinct().ToList();
record.ORG_ID = item.ORG_ID; //发待办给每个人
record.NAME = dt.ToShortDateString() + depart?.NAME + "-" + user?.Nav_Person?.Nav_Post?.NAME + "当班工作记录"; if (sendUsers != null && sendUsers.Any())
record.EDITOR_ID = user.ID; {
record.RECORD_DATE = Convert.ToDateTime(dt.Date.ToShortDateString() + " " + item.END_TIME.ToShortTimeString()); T_FO_CURRENT_CLASS_RECORD record = new T_FO_CURRENT_CLASS_RECORD();
record.CLASS_ID = item.CLASS_ID; record.ORG_ID = item.ORG_ID;
record.DEPARTMENT_ID = user.DEPARTMENT_ID; record.NAME = dt.ToShortDateString() + depart?.NAME + "-" + post?.NAME + "当班工作记录";
record.DEPARTMENT_POST_ID = user?.Nav_Person?.POST_ID; record.EDITOR_ID = sendUsers.FirstOrDefault().ID;
record.CHARGE_USER_ID = depart?.USER_ID; record.RECORD_DATE = Convert.ToDateTime(dt.Date.ToShortDateString() + " " + item.END_TIME.ToShortTimeString());
wellRecords.Add(record); record.CLASS_ID = item.CLASS_ID;
T_FO_CURRENT_CLASS_RECORD_USER ledUser = new T_FO_CURRENT_CLASS_RECORD_USER(); record.DEPARTMENT_ID = departId;
ledUser.ORG_ID = item.ORG_ID; record.DEPARTMENT_POST_ID = postId;
ledUser.CURRENT_CLASS_RECORD_ID = record.ID; record.CHARGE_USER_ID = depart?.USER_ID;
ledUser.USER_ID = user.ID; wellRecords.Add(record);
wellRecordUsers.Add(ledUser); foreach (var user in sendUsers)
var notice = NotificationTaskService.InsertUserNoticeTaskModel(record.NAME, record.ID, item.ORG_ID, user.ID, user.NAME, DateTime.Now, {
DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum., "FO005"); T_FO_CURRENT_CLASS_RECORD_USER ledUser = new T_FO_CURRENT_CLASS_RECORD_USER();
notices.Add(notice); ledUser.ORG_ID = item.ORG_ID;
} ledUser.CURRENT_CLASS_RECORD_ID = record.ID;
ledUser.USER_ID = user.ID;
wellRecordUsers.Add(ledUser);
var notice = NotificationTaskService.InsertUserNoticeTaskModel(record.NAME, record.ID, item.ORG_ID, user.ID, user.NAME, DateTime.Now,
DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum., "FO005");
notices.Add(notice);
}
}
}
} }
} }
} }
}
}
} }
UnifiedCommit(() => UnifiedCommit(() =>
{ {