触发领导带班下井记录

This commit is contained in:
何美荣 2025-12-06 22:54:42 +08:00
parent 4fdf21e31b
commit f7a781a601

View File

@ -1974,6 +1974,164 @@ namespace APT.PP.WebApi.Controllers.Api.PP
throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message);
}
return true;
});
}
/// <summary>
/// 触发领导带班下井记录
/// </summary>
/// <param name="pageFilter"></param>
/// <returns></returns>
[HttpPost, Route("LeaderWellRecordSync")]
public JsonActionResult<bool> LeaderWellRecordSync([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
try
{
var notices = new List<T_FM_NOTIFICATION_TASK>();
var wellRecords = new List<T_FO_LEADER_WELL_RECORD>();
var wellRecordUsers = new List<T_FO_LEADER_WELL_RECORD_USER>();
var dt = DateTime.Now;
var company = this.GetEntity<T_FM_DEPARTMENT>(t => t.PARENT_ID == null && t.ENABLE_STATUS == 0);
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_Department");
var jobs = this.GetEntities<T_FO_SCHEDULING>(t => t.DATE.Date == DateTime.Now.Date, new BaseFilter(filter.OrgId), "Nav_User");
var records = this.GetEntities<T_FO_LEADER_WELL_RECORD>(t => t.JOB_START_DATE.Value.Date == DateTime.Now.Date, new BaseFilter(filter.OrgId));
if (jobs != null && jobs.Any())
{
foreach (var item in jobs)
{
var classFisrt = fmClass.FirstOrDefault(t => t.ID == item.CLASS_ID);
if (classFisrt != null && classFisrt.Nav_ClassDetail != null && classFisrt.Nav_ClassDetail.Any())
{
var firstRecord = records.FirstOrDefault(t => t.CLASS_ID == item.CLASS_ID);
var firstTime = classFisrt.Nav_ClassDetail.OrderBy(t => t.NUM).FirstOrDefault();
if (firstTime.STARTTIME.Hour == DateTime.Now.AddHours(1).Hour && firstRecord == null)
{
var sendUser = users.FirstOrDefault(t => t.ID == item.USER_ID);
if (sendUser != null)
{
T_FO_LEADER_WELL_RECORD record = new T_FO_LEADER_WELL_RECORD();
record.ORG_ID = item.ORG_ID;
record.APPLY_USER_ID = sendUser.ID;
record.APPLY_DEPARTMENT_ID = sendUser.DEPARTMENT_ID;
record.JOB_START_DATE = Convert.ToDateTime(DateTime.Now.Date.ToShortDateString() + firstTime.STARTTIME.ToShortTimeString());
record.JOB_END_DATE = Convert.ToDateTime(DateTime.Now.Date.ToShortDateString() + firstTime.ENDTIME.ToShortTimeString());
record.APPLY_DEPARTMENT_ID = sendUser.DEPARTMENT_ID;
record.COMPANY_ID = company?.ID;
record.PRODUCTION_UNIT_ID = sendUser?.Nav_Department?.PRODUCTION_UNIT_ID;
wellRecords.Add(record);
T_FO_LEADER_WELL_RECORD_USER ledUser = new T_FO_LEADER_WELL_RECORD_USER();
ledUser.ORG_ID = item.ORG_ID;
ledUser.LEADER_WELL_RECORD_ID = record.ID;
ledUser.USER_ID = sendUser.ID;
wellRecordUsers.Add(ledUser);
var notice = NotificationTaskService.InsertUserNoticeTaskModel("领导带班下井记录"+DateTime.Now.Month.PadLeft(2,'0')+ DateTime.Now.Day.PadLeft(2, '0') + "-"+classFisrt.NAME, record.ID, item.ORG_ID, sendUser.ID, sendUser.NAME, DateTime.Now,
DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum., "FO041");
notices.Add(notice);
}
}
}
}
}
UnifiedCommit(() =>
{
if (wellRecords != null && wellRecords.Any())
BantchSaveEntityNoCommit(wellRecords);
if (wellRecordUsers != null && wellRecordUsers.Any())
BantchSaveEntityNoCommit(wellRecordUsers);
if (notices != null && notices.Any())
BantchSaveEntityNoCommit(notices);
});
}
catch (Exception ex)
{
if (!string.IsNullOrEmpty(ex.StackTrace))
throw new Exception("错误日志:[StackTrace]" + ex.StackTrace);
else
throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message);
}
return true;
});
}
/// <summary>
/// 手动触发的班前会根据下班时间自动触发岗位当班
/// </summary>
/// <param name="pageFilter"></param>
/// <returns></returns>
[HttpPost, Route("CurrentClassSync")]
public JsonActionResult<bool> CurrentClassSync([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
try
{
var notices = new List<T_FM_NOTIFICATION_TASK>();
var wellRecords = new List<T_FO_LEADER_WELL_RECORD>();
var wellRecordUsers = new List<T_FO_LEADER_WELL_RECORD_USER>();
var dt = DateTime.Now;
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_Department");
var records = this.GetEntities<T_FO_CURRENT_CLASS_RECORD>(t => t.CREATE_TIME.Value.Date == DateTime.Now.Date, new BaseFilter(filter.OrgId));
var preClass = this.GetEntities<T_FO_PRE_SHIFT_MEETING_RECORD>(t => t.CREATE_TIME.Value.Date == DateTime.Now.Date && t.DEPARTMENT_SCHEDULING_ID == null, new BaseFilter(filter.OrgId));
if (preClass != null && preClass.Any())
{
foreach (var item in preClass)
{
var classFisrt = fmClass.FirstOrDefault(t => t.ID == item.CLASS_ID);
if (classFisrt != null && classFisrt.Nav_ClassDetail != null && classFisrt.Nav_ClassDetail.Any())
{
var firstRecord = records.FirstOrDefault(t => t.CLASS_ID == item.CLASS_ID);
var firstTime = classFisrt.Nav_ClassDetail.OrderBy(t => t.NUM).FirstOrDefault();
if (firstTime.ENDTIME.Hour == DateTime.Now.AddHours(1).Hour && firstRecord == null)
{
var sendUser = users.FirstOrDefault(t => t.ID == item.USER_ID);
if (sendUser != null)
{
T_FO_LEADER_WELL_RECORD record = new T_FO_LEADER_WELL_RECORD();
record.ORG_ID = item.ORG_ID;
record.APPLY_USER_ID = sendUser.ID;
record.APPLY_DEPARTMENT_ID = sendUser.DEPARTMENT_ID;
record.JOB_START_DATE = Convert.ToDateTime(DateTime.Now.Date.ToShortDateString() + firstTime.STARTTIME.ToShortTimeString());
record.JOB_END_DATE = Convert.ToDateTime(DateTime.Now.Date.ToShortDateString() + firstTime.ENDTIME.ToShortTimeString());
record.APPLY_DEPARTMENT_ID = sendUser.DEPARTMENT_ID;
record.PRODUCTION_UNIT_ID = sendUser?.Nav_Department?.PRODUCTION_UNIT_ID;
wellRecords.Add(record);
T_FO_LEADER_WELL_RECORD_USER ledUser = new T_FO_LEADER_WELL_RECORD_USER();
ledUser.ORG_ID = item.ORG_ID;
ledUser.LEADER_WELL_RECORD_ID = record.ID;
ledUser.USER_ID = sendUser.ID;
wellRecordUsers.Add(ledUser);
var notice = NotificationTaskService.InsertUserNoticeTaskModel("领导带班下井记录" + DateTime.Now.Month.PadLeft(2, '0') + DateTime.Now.Day.PadLeft(2, '0') + "-" + classFisrt.NAME, record.ID, item.ORG_ID, sendUser.ID, sendUser.NAME, DateTime.Now,
DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum., "FO041");
notices.Add(notice);
}
}
}
}
}
UnifiedCommit(() =>
{
//if (wellRecords != null && wellRecords.Any())
// BantchSaveEntityNoCommit(wellRecords);
//if (wellRecordUsers != null && wellRecordUsers.Any())
// BantchSaveEntityNoCommit(wellRecordUsers);
//if (notices != null && notices.Any())
// BantchSaveEntityNoCommit(notices);
});
}
catch (Exception ex)
{
if (!string.IsNullOrEmpty(ex.StackTrace))
throw new Exception("错误日志:[StackTrace]" + ex.StackTrace);
else
throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message);
}
return true;
});
}