diff --git a/APT.MicroApi/APT.PP.WebApi/Controllers/Api/FOController.cs b/APT.MicroApi/APT.PP.WebApi/Controllers/Api/FOController.cs index 99fa74b..4ea6cab 100644 --- a/APT.MicroApi/APT.PP.WebApi/Controllers/Api/FOController.cs +++ b/APT.MicroApi/APT.PP.WebApi/Controllers/Api/FOController.cs @@ -1974,6 +1974,164 @@ namespace APT.PP.WebApi.Controllers.Api.PP throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); } + return true; + }); + } + + /// + /// 触发领导带班下井记录 + /// + /// + /// + [HttpPost, Route("LeaderWellRecordSync")] + public JsonActionResult LeaderWellRecordSync([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + try + { + var notices = new List(); + var wellRecords = new List(); + var wellRecordUsers = new List(); + var dt = DateTime.Now; + var company = this.GetEntity(t => t.PARENT_ID == null && t.ENABLE_STATUS == 0); + var fmClass = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_ClassDetail"); + var users = this.GetEntities(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin"), new BaseFilter(filter.OrgId),"Nav_Department"); + var jobs = this.GetEntities(t => t.DATE.Date == DateTime.Now.Date, new BaseFilter(filter.OrgId), "Nav_User"); + var records = this.GetEntities(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; + }); + } + /// + /// 手动触发的班前会根据下班时间自动触发岗位当班 + /// + /// + /// + [HttpPost, Route("CurrentClassSync")] + public JsonActionResult CurrentClassSync([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + try + { + var notices = new List(); + var wellRecords = new List(); + var wellRecordUsers = new List(); + var dt = DateTime.Now; + var fmClass = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_ClassDetail"); + var users = this.GetEntities(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin"), new BaseFilter(filter.OrgId), "Nav_Department"); + var records = this.GetEntities(t => t.CREATE_TIME.Value.Date == DateTime.Now.Date, new BaseFilter(filter.OrgId)); + var preClass = this.GetEntities(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; }); }