using APT.BaseData.Domain.ApiModel; using APT.BaseData.Domain.Entities; using APT.BaseData.Domain.Entities.FM; using APT.BaseData.Domain.Enums; using APT.BaseData.Domain.Enums.PF; using APT.BaseData.Domain.IServices.FM; using APT.Infrastructure.Core; using APT.MS.Domain.Entities.DM; using APT.MS.Domain.Entities.SC.DM; using APT.MS.Domain.Entities.SC.PT; using APT.MS.Domain.Enums; using APT.Utility; using APT.WebApi.Models; using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.Linq; namespace APT.PP.WebApi.Controllers.Api.PP { [Route("api/PP/DM")] [TypeFilter(typeof(CustomActionFilterAttribute))] public partial class DMController : AuthorizeApiController { IFMNotificationTaskService NotificationTaskService { get; set; } IFMUserService UserService { get; set; } IPFSysLogService SysLogService { get; set; } IFMSyncLogDetailService SyncLogDetailService { get; set; } public DMController(IFMNotificationTaskService notificationTaskService, IPFSysLogService sysLogService, IFMUserService userService, IFMSyncLogDetailService syncLogDetailService) { NotificationTaskService = notificationTaskService; SysLogService = sysLogService; UserService = userService; SyncLogDetailService = syncLogDetailService; } /// /// 判断跑批时间是否符合 /// /// /// /// /// /// private bool ISTimeOK(DateTime? RUNSETTIME, DateTime dtNow, int minAdvance, int minLaster) { if (RUNSETTIME == null) { return false; } if (RUNSETTIME != null) { if (minAdvance != 0 || minLaster != 0) { DateTime dtSetTime = Convert.ToDateTime(dtNow.ToString("yyyy-MM-dd") + RUNSETTIME.Value.ToString(" HH:mm:ss")); if (minAdvance > 0 && minLaster > 0) { if (dtNow.AddMinutes(-1 * minAdvance) <= dtSetTime && dtSetTime <= dtNow.AddMinutes(minLaster)) { return true; } } else if (minAdvance > 0) { if (dtNow.AddMinutes(-1 * minAdvance) <= dtSetTime && dtSetTime <= dtNow) { //如果设置时间小于当前时间 并且 设置使劲按大于 当前时间大于当前时间往前偏移分钟数 return true; } } else { if (dtNow <= dtSetTime && dtSetTime <= dtNow.AddMinutes(minLaster)) { //如果 设置时间大于当前时间 并且设置时间小于当前时间往后偏移分钟数 return true; } } } else { if (RUNSETTIME.Value.ToString("HH:mm") == dtNow.ToString("HH:mm")) { return true; } } } return false; } /// /// 机电管理 每天触发 /// 数据逻辑自己控制 /// 如果要写入此方法 每个人的代码用代码块包起来 以免冲突 /// /// /// [HttpPost, Route("DailyRun")] public JsonActionResult DailyRun([FromBody] KeywordFilter filter) { return SafeExecute(() => { DateTime dtNow = DateTime.Now; if (!string.IsNullOrEmpty(filter.Parameter1)) { try { dtNow = Convert.ToDateTime(filter.Parameter1); } catch { dtNow = DateTime.Now; } } bool isCheck = true;//点检 巡检 bool isPlan = true; //设备维保 int min = 5;//按设置时间 可以提前5分钟执行跑批生成代办任务 #region wyw 维保计划录入 var listDMPlan = GetEntities(e => e.PLANCHECKFREQUENCY != BSPLANCHECKFREQUENCYEnum.None && e.DEVICEBASE_ID.HasValue && e.ENABLE_STATUS == FMEnableStatusEnum.启用 && e.STATUS_APPROVE == PFStandardStatus.Archived && !e.IS_DELETED, null, "Nav_ListUser.Nav_User"); List listPlan = new List(); if (listDMPlan != null && listDMPlan.Any()) { foreach (var item in listDMPlan) { if (ISTimeOK(item.RUNSETTIME, dtNow, min, min))//设置时间往前后各偏移 5 分钟 判断跑批 { switch (item.PLANCHECKFREQUENCY) { case BSPLANCHECKFREQUENCYEnum.None: break; //case BSPLANCHECKFREQUENCYEnum.OneTime: case BSPLANCHECKFREQUENCYEnum.Year: if (!string.IsNullOrEmpty(item.RUNDATA))//05-01,10-01 { List listMMdd = item.RUNDATA.Split(",").ToList(); if (item.RUNDATA.Contains("-")) { for (int j = 0; j < listMMdd.Count; j++) { try { if (!string.IsNullOrEmpty(listMMdd[j]) && (listMMdd[j] == dtNow.ToString("MM-dd") || listMMdd[j] == dtNow.ToString("M-d"))) { listPlan.Add(item); break; } } catch { } } } else if (item.RUNDATA.Contains("/")) { for (int j = 0; j < listMMdd.Count; j++) { try { if (!string.IsNullOrEmpty(listMMdd[j]) && (listMMdd[j] == dtNow.ToString("MM/dd") || listMMdd[j] == dtNow.ToString("M/d"))) { listPlan.Add(item); break; } } catch { } } } } break; case BSPLANCHECKFREQUENCYEnum.Date: listPlan.Add(item); break; case BSPLANCHECKFREQUENCYEnum.Week: if (item.WEEKDATA != null && (int)dtNow.DayOfWeek == (int)item.WEEKDATA.Value) { //星期匹配 DateTime.Now.DayOfWeek Thursday (int)DateTime.Now.DayOfWeek 4 listPlan.Add(item); } break; case BSPLANCHECKFREQUENCYEnum.Month: case BSPLANCHECKFREQUENCYEnum.Quarter: if (item.DATA != null && item.DATA.Value == dtNow.Day) { listPlan.Add(item); //日匹配 (季度是季度第一月的某日 刚好也符合) } break; default: break; } } } } #endregion DateTime dtNowEdit = DateTime.Now; if (listPlan.Count < 1) { isPlan = false; } var listPlanID = listPlan.Select(e => e.ID); var listDateCheck = GetEntities(e => e.CREATE_TIME.Value.Date == dtNowEdit.Date && listPlanID.Contains(e.ID), null, null); if (listDateCheck != null && listDateCheck.Any()) { for (int i = listPlan.Count(); i > -1; i--) { var checkDate = listDateCheck.FirstOrDefault(e => e.ID == listPlan[i].ID); if (checkDate != null) { listPlan.RemoveAt(i); } } } if (listPlan.Count < 1) { isPlan = false; } #region 点检 巡检 List listDeviceBase = null; //点检 巡检 结果 var listDeviceBaseT = GetEntities(e => !e.IS_DELETED && e.Nav_ListCheck != null && e.Nav_ListCheck.Any(), null, "Nav_ListCheck.Nav_ListUser.Nav_User");//&& e.QTY > 0 if (listDeviceBaseT == null || !listDeviceBaseT.Any()) { isCheck = false; } else { //今天 var ListDetail = GetEntities(e => e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Date == dtNowEdit.Date, null, null);//listBaseCheckID.Contains(e.BASECHECK_ID) && listDeviceBase = listDeviceBaseT.ToList(); List listBaseCheck = null; foreach (var item in listDeviceBaseT) { var listBaseCheckT = item.Nav_ListCheck; if (listBaseCheckT != null && listBaseCheckT.Any()) { listBaseCheck = listBaseCheckT.ToList(); for (int i = listBaseCheck.Count - 1; i > -1; i--) { if (listBaseCheck[i].IS_DELETED) { listBaseCheck.RemoveAt(i); continue; } if (ListDetail != null && ListDetail.Any()) { //var detail = ListDetail.FirstOrDefault(e => e.BASECHECK_ID == listBaseCheck[i].ID); var detail = ListDetail.FirstOrDefault(e => e.BASECHECK_ID == listBaseCheck[i].ID); if (detail != null) { listBaseCheck.RemoveAt(i); continue; } } if (ISTimeOK(listBaseCheck[i].CHECKTIME, dtNow, min, min))//设置时间往前后各偏移 5 分钟 判断跑批 { switch (listBaseCheck[i].PLANCHECKFREQUENCY) { case BSPLANCHECKFREQUENCYEnum.None: break; //TODO 0525 //case BSPLANCHECKFREQUENCYEnum.OneTime: case BSPLANCHECKFREQUENCYEnum.Year: if (!string.IsNullOrEmpty(listBaseCheck[i].RUNDATA))//05-01,10-01 { List listMMdd = listBaseCheck[i].RUNDATA.Split(",").ToList(); if (!listMMdd.Contains(dtNow.ToString("MM-dd")) && !listMMdd.Contains(dtNow.ToString("M-d")) && !listMMdd.Contains(dtNow.ToString("MM/dd")) && !listMMdd.Contains(dtNow.ToString("M/d"))) { listBaseCheck.RemoveAt(i); } } break; case BSPLANCHECKFREQUENCYEnum.Date: //listPlan.Add(listBaseCheck[i]); break; case BSPLANCHECKFREQUENCYEnum.Week: if (listBaseCheck[i].WEEKDATA == null || (int)dtNow.DayOfWeek != (int)listBaseCheck[i].WEEKDATA.Value) { listBaseCheck.RemoveAt(i); } break; case BSPLANCHECKFREQUENCYEnum.Month: case BSPLANCHECKFREQUENCYEnum.Quarter: if (listBaseCheck[i].DATA == null || listBaseCheck[i].DATA.Value != dtNow.Day) { listBaseCheck.RemoveAt(i); } break; default: break; } } else { listBaseCheck.RemoveAt(i); } } item.Nav_ListCheck = listBaseCheck; } } for (int i = listDeviceBase.Count - 1; i > -1; i--) { if (listDeviceBase[i].Nav_ListCheck == null || listDeviceBase[i].Nav_ListCheck.Count() == 0) { listDeviceBase.RemoveAt(i); } } } if (listDeviceBase == null || listDeviceBase.Count < 1) { isCheck = false; } #endregion if (!isPlan && !isCheck)//没有 维保计划 和点检、巡检 { return true; } List listCheck = new List(); List listCheckUser = new List(); List listCheckUserTemp = null; List listCheckDetail = new List(); List listTaskMaintCheck = new List(); var listBaseID = listPlan.Select(e => e.DEVICEBASE_ID.Value); var listBase = GetEntities(e => listBaseID.Contains(e.ID), null, "Nav_ListCheck.Nav_ListUser.Nav_User", "Nav_User"); if (listBase == null || !listBase.Any()) { isPlan = false; } else { foreach (var item in listPlan) { var DeviceBase = listBase.FirstOrDefault(e => e.ID == item.DEVICEBASE_ID.Value); if (DeviceBase != null) item.Nav_DeviceBase = DeviceBase; } } if (isPlan)//维保计划 { Guid CheckID = Guid.Empty; Guid UserID = Guid.Empty; string UserName = string.Empty; bool isHave = false; for (int i = 0; i < listPlan.Count; i++) { //所有 维保 计划 如果维保人员 维保设备负责人 完全一致 合并单 foreach (var item in listCheck) { if (item.Nav_ListUser.Count() == listPlan[i].Nav_ListUser.Count() && listPlan[i].Nav_DeviceBase != null && item.USER_ID == listPlan[i].Nav_DeviceBase.USER_ID) { isHave = true; //查找 维保人员 如果一致 foreach (var itemUser in item.Nav_ListUser) { var userCheck = listPlan[i].Nav_ListUser.FirstOrDefault(e => e.USER_ID == itemUser.USER_ID && e.ISMAIN == itemUser.ISMAIN); if (userCheck == null) { //没找到 isHave = false; CheckID = Guid.Empty; break; } } if (!isHave) { continue; } CheckID = item.ID; break; } } //如果 没有找到之前 一致的 维保ID if (CheckID == Guid.Empty) { CheckID = Guid.NewGuid(); listCheck.Add(new T_DM_DEVICE_MAINTENANCE_CHECK() { ID = CheckID, CODE = "WB" + dtNowEdit.ToString("yyyyMMddHHmmss"), NAME = "设备设施维保" + dtNowEdit.ToString("MMdd"), CHECKDATETIME = dtNowEdit, STATUS_APPROVE = PFStandardStatus.Draft, //APPROVE_ID = , IS_DELETED = false, ORG_ID = listPlan[i].ORG_ID, //ENTITY_ORG_TPYE = , //FORM_ID = , //FLOW_STATUS = , //FLOW_SEND_STATUS = , //FLOW_ID = , CREATE_TIME = dtNowEdit, MODIFY_TIME = dtNowEdit, //CREATER_ID = , //MODIFIER_ID = , USER_ID = listPlan[i].Nav_DeviceBase.USER_ID }); listCheckUserTemp = new List(); foreach (var item in listPlan[i].Nav_ListUser) { if (item.ISMAIN) { UserID = item.USER_ID; UserName = item.Nav_User.NAME; } listCheckUserTemp.Add(new T_DM_DEVICE_MAINTENANCE_CHECK_USER() { ID = Guid.NewGuid(), CHECK_ID = CheckID, USER_ID = item.USER_ID, ISMAIN = item.ISMAIN, ISCHECK = item.ISMAIN, //CHECKTIME = , IS_DELETED = false, ORG_ID = item.ORG_ID, //ENTITY_ORG_TPYE = , //FORM_ID = , //FLOW_STATUS = , //FLOW_SEND_STATUS = , //FLOW_ID = , CREATE_TIME = dtNowEdit, MODIFY_TIME = dtNowEdit, //CREATER_ID = , //MODIFIER_ID = , }); } //维保人员赋值 容易查找 listCheck[listCheck.Count - 1].Nav_ListUser = listCheckUserTemp; listCheckUser.AddRange(listCheckUserTemp); //待办 listTaskMaintCheck.Add(NotificationTaskService.InsertUserNoticeTaskModel("设备设施维保", CheckID, listCheck[0].ORG_ID, UserID, UserName, dtNowEdit, dtNowEdit.AddDays(1), 1, "DM030")); } //检查明细 listCheckDetail.Add(new T_DM_DEVICE_MAINTENANCE_CHECK_DETAIL() { ID = Guid.NewGuid(), PLANID = listPlan[i].ID, CHECK_ID = CheckID, DEVICEBASE_ID = listPlan[i].DEVICEBASE_ID, MACHINE_NAME = listPlan[i].MACHINE_NAME, SPEC = listPlan[i].SPEC, COUNT = listPlan[i].COUNT, POSITION = listPlan[i].POSITION, CONTENT = listPlan[i].CONTENT, //Result = , IS_DELETED = false, ORG_ID = listPlan[i].ORG_ID, //ENTITY_ORG_TPYE = , //FORM_ID = , //FLOW_STATUS = , //FLOW_SEND_STATUS = , //FLOW_ID = , CREATE_TIME = dtNowEdit, MODIFY_TIME = dtNowEdit, //CREATER_ID = , //MODIFIER_ID = , }); } } //符合 条件的 计划 做设备点检、巡检 //var listBaseID = listPlan.Select(e => e.DEVICEBASE_ID.Value); //var listBase = GetEntities(e => listBaseID.Contains(e.ID), null, "Nav_ListCheck.Nav_ListUser.Nav_User"); //if (listBase == null || !listBase.Any()) //{ // return true; //} //给 符合条件的 计划 对应 设备设施库 中 点检、巡检 发送 点检 巡检 待办 给 第一个 巡检人员 List listCheckSend = new List(); List listCheckDetailSend = new List(); List listCheckUserSend = new List(); List listTask = new List(); if (isCheck)//点检 巡检 { int RowIndex = 1; Guid UserId = Guid.Empty; Guid CheckId = Guid.Empty; string userName = String.Empty; T_DM_DEVICE_BASE_CHECK_USER UserMain = null; T_DM_DEVICE_CHECK_DETAIL CheckDetail = null; CheckType? lastCheckType = null; foreach (var item in listDeviceBase)// listBase { if (item.Nav_ListCheck == null || !item.Nav_ListCheck.Any()) { continue; } //var listCheckCircle = item.Nav_ListCheck.Where(e => e.Nav_ListUser != null && e.Nav_ListUser.Any() && e.CHECKTYPE == CheckType.CheckCircuit); //var listCheck = item.Nav_ListCheck.Where(e => e.Nav_ListUser != null && e.Nav_ListUser.Any() && e.CHECKTYPE == CheckType.Check); var listCheckBase = item.Nav_ListCheck.Where(e => e.Nav_ListUser != null && e.Nav_ListUser.Any()).OrderBy(e => e.CHECKTYPE); if (listCheckBase != null && listCheckBase.Any()) { RowIndex = 1; //巡检单 foreach (var itemDetail in listCheckBase) { //检查人员 UserMain = itemDetail.Nav_ListUser.FirstOrDefault(e => e.ISMAIN); if (UserId == Guid.Empty || UserMain.USER_ID != UserId || (lastCheckType != null && lastCheckType != itemDetail.CHECKTYPE)) { UserId = UserMain.USER_ID; userName = UserMain.Nav_User.NAME; T_DM_DEVICE_CHECK checkCircle = new T_DM_DEVICE_CHECK(); #region 点检 巡检 单 checkCircle.ID = Guid.NewGuid(); checkCircle.DEVICEBASE_ID = item.ID; checkCircle.CHECKTYPE = itemDetail.CHECKTYPE; //checkCircle.PLANID = listPlan.Find(e => e.DEVICEBASE_ID == item.ID).ID;// null; checkCircle.CODE = dtNowEdit.ToString("yyyyMMddHHmmss") + RowIndex.ToString(); checkCircle.NAME = (itemDetail.CHECKTYPE == CheckType.Check ? "点检" : "巡检") + dtNowEdit.ToString("MMdd"); checkCircle.RECORD_DATE = dtNowEdit; //checkCircle.START_TIME = ; //checkCircle.END_TIME = ; //checkCircle.TEAM_NAME = ; //checkCircle.TEAM_ID = ; //checkCircle.SCHEDULIN_ID = ; checkCircle.MACHINE_NAME = item.NAME; checkCircle.SPEC = item.SPEC; checkCircle.MACHINE_CODE = item.CODE; checkCircle.POSITION_NAME = item.POSITION; checkCircle.STATUS = PFStandardStatus.Draft; checkCircle.IS_DELETED = false; checkCircle.ORG_ID = item.ORG_ID; //checkCircle.ENTITY_ORG_TPYE = ; //checkCircle.FORM_ID = ; //checkCircle.FLOW_STATUS = ; //checkCircle.FLOW_SEND_STATUS = ; //checkCircle.FLOW_ID = ; checkCircle.CREATE_TIME = dtNowEdit; checkCircle.MODIFY_TIME = dtNowEdit; //checkCircle.CREATER_ID = ; //checkCircle.MODIFIER_ID = ; #endregion CheckId = checkCircle.ID; listCheckSend.Add(checkCircle); //添加待办 listTask.Add(NotificationTaskService.InsertUserNoticeTaskModel("设备设施" + (itemDetail.CHECKTYPE == CheckType.Check ? "点检" : "巡检"), checkCircle.ID, checkCircle.ORG_ID, UserId, userName, dtNowEdit, dtNowEdit.AddDays(1), 1, (itemDetail.CHECKTYPE == CheckType.Check ? "DM010" : "DM032"))); #region 检查明细 检查人员 foreach (var itemDetailUser in itemDetail.Nav_ListUser) { listCheckUserSend.Add(new T_DM_DEVICE_CHECK_USER() { ID = Guid.NewGuid(), CHECK_ID = CheckId,// CheckDetail.ID, USER_ID = itemDetailUser.USER_ID, ISMAIN = itemDetailUser.ISMAIN, ISCHECK = itemDetailUser.ISMAIN ? true : false,//记录人 默认 确认过 IS_DELETED = false, ORG_ID = itemDetailUser.ORG_ID, //ENTITY_ORG_TPYE = , //FORM_ID = , //FLOW_STATUS = , //FLOW_SEND_STATUS = , //FLOW_ID = , CREATE_TIME = dtNowEdit, MODIFY_TIME = dtNowEdit, //CREATER_ID = , //MODIFIER_ID = , }); } #endregion } #region 点检、巡检 检查明细 CheckDetail = new T_DM_DEVICE_CHECK_DETAIL() { ID = Guid.NewGuid(), DEVICE_CHECK_ID = CheckId, ROW_NO = RowIndex, DEVICEBASE_ID = item.ID, ITEM1 = itemDetail.ITEM1, ITEM2 = itemDetail.ITEM2, ITEM3 = itemDetail.ITEM3, //CHECK_VALUE = , ////DESCRIPTION = , IS_DELETED = false, ORG_ID = itemDetail.ORG_ID, //ENTITY_ORG_TPYE = , //FORM_ID = , //FLOW_STATUS = , //FLOW_SEND_STATUS = , //FLOW_ID = , CREATE_TIME = dtNowEdit, MODIFY_TIME = dtNowEdit, //CREATER_ID = , //MODIFIER_ID = , BASECHECK_ID = itemDetail.ID, }; listCheckDetailSend.Add(CheckDetail); #endregion RowIndex++; lastCheckType = itemDetail.CHECKTYPE;//检查类型赋值 } } } } #region 跑批信息修改 T_FM_SYNC_TASK task = null; task = GetEntity(filter.Keyword); if (task != null) { task.UPDATE_SUCCES_TIME = DateTime.Now;//上次同步结束时间 task.SYNC_PARAM = "";//清空参数 } #endregion this.UnifiedCommit(() => { if (task != null) UpdateEntityNoCommit(task);//跑批信息 //点检 巡检 if (listCheckSend != null && listCheckSend.Any()) BantchSaveEntityNoCommit(listCheckSend); if (listCheckDetailSend != null && listCheckDetailSend.Any()) BantchSaveEntityNoCommit(listCheckDetailSend); if (listCheckUserSend != null && listCheckUserSend.Any()) BantchSaveEntityNoCommit(listCheckUserSend); if (listTask != null && listTask.Any()) BantchSaveEntityNoCommit(listTask); //维保 if (listCheckUser != null && listCheckUser.Any()) BantchSaveEntityNoCommit(listCheckUser); if (listCheck != null && listCheck.Any()) BantchSaveEntityNoCommit(listCheck); if (listCheckDetail != null && listCheckDetail.Any()) BantchSaveEntityNoCommit(listCheckDetail); if (listTaskMaintCheck != null && listTaskMaintCheck.Any()) BantchSaveEntityNoCommit(listTaskMaintCheck); }); int Count = ((listCheckSend != null && listCheckSend.Any()) ? listCheckSend.Count : 0) + ((listCheckDetailSend != null && listCheckDetailSend.Any()) ? listCheckDetailSend.Count : 0) + ((listCheckUserSend != null && listCheckUserSend.Any()) ? listCheckUserSend.Count : 0) + ((listTask != null && listTask.Any()) ? listTask.Count : 0) + ((listCheckUser != null && listCheckUser.Any()) ? listCheckUser.Count : 0) + ((listCheck != null && listCheck.Any()) ? listCheck.Count : 0) + ((listCheckDetail != null && listCheckDetail.Any()) ? listCheckDetail.Count : 0) + ((listTaskMaintCheck != null && listTaskMaintCheck.Any()) ? listTaskMaintCheck.Count : 0); SyncLogDetailService.InsertSyncLogDetail(HttpContext.Items, HttpContext.TraceIdentifier, filter.OrgId, Count, filter.Parameter1, SyncLogType.BSCreateCheckPlanSet); return true; }); } #region HMR /// /// 触发设备设施检测检验 /// /// [HttpPost, Route("InspectionSync")] public JsonActionResult InspectionSync([FromBody] KeywordFilter filter) { return SafeExecute(() => { var dtNow = DateTime.Now; var month = dtNow.Month; var day = dtNow.Day; var time = dtNow.TimeOfDay; var week = dtNow.DayOfWeek; bool isSend = false; List sendNotices = new List(); T_DM_DETECTION_INSPECTION_RECORD record = null; var newFilter = new BaseFilter(filter.OrgId); newFilter.SelectField = new List { "PLANCHECKFREQUENCY", "MONTH", "DATA", "WEEKDATA", "RUNSETTIME" }; var timeSet = GetEntity(i => i.SET_TYPE == PTSetTypeEnum.Inspection, newFilter); if (timeSet != null) { switch (timeSet.PLANCHECKFREQUENCY) { //case BSPLANCHECKFREQUENCYEnum.OneTime: case BSPLANCHECKFREQUENCYEnum.Year: if (timeSet.MONTH == month && timeSet.DATA == day) isSend = true; break; case BSPLANCHECKFREQUENCYEnum.HalfYear: if ((timeSet.MONTH == month && timeSet.DATA == day) || ((timeSet.MONTH + 6) == month && (timeSet.DATA + 183) == day)) isSend = true; break; case BSPLANCHECKFREQUENCYEnum.Date: isSend = true; break; case BSPLANCHECKFREQUENCYEnum.Week: if (timeSet.WEEKDATA != null && (int)timeSet.WEEKDATA.Value == (int)week) isSend = true; break; case BSPLANCHECKFREQUENCYEnum.Month: if (timeSet.DATA == day) isSend = true; break; case BSPLANCHECKFREQUENCYEnum.Quarter: if (timeSet.MONTH == 1) { if ((month == 1 || month == 4 || month == 7 || month == 10) && timeSet.DATA == day) isSend = true; } if (timeSet.MONTH == 2) { if ((month == 2 || month == 5 || month == 8 || month == 11) && timeSet.DATA == day) isSend = true; } if (timeSet.MONTH == 3) { if ((month == 3 || month == 6 || month == 9 || month == 12) && timeSet.DATA == day) isSend = true; } break; default: break; } } if (isSend) { var userInfo = this.GetEntity(t => t.NAME == "检测检验责任人", "Nav_User"); if (userInfo != null) { record = new T_DM_DETECTION_INSPECTION_RECORD(); record.ORG_ID = userInfo.ORG_ID; record.STATUS = PFStandardStatus.Draft; record.TIME = DateTime.Now; record.RESULT = DMInspectionResultEnum.不合格; record.USER_ID = userInfo.USER_ID; var user = this.GetEntity(t => t.ID == userInfo.USER_ID); record.DEPARTMENT_ID = user?.DEPARTMENT_ID; sendNotices.Add(NotificationTaskService.InsertUserNoticeTaskModel("设备设施检测检验记录", record.ID, filter.GetOrgId(), userInfo.USER_ID.Value, userInfo.Nav_User.NAME, DateTime.Now, DateTime.Now.AddDays(30), (int)FMNoticeTypeEnum.消息, "DM012")); } } UnifiedCommit(() => { if (record != null) UpdateEntityNoCommit(record); if (sendNotices != null && sendNotices.Any()) BantchSaveEntityNoCommit(sendNotices); }); return true; }); } /// /// 触发设备设施归还记录 /// /// [HttpPost, Route("DeviceReturnSync")] public JsonActionResult DeviceReturnSync([FromBody] KeywordFilter filter) { return SafeExecute(() => { var dtNow = DateTime.Now; List sendNotices = new List(); var details = GetEntities(i => i.RETURN_STATUS == DMIsReturnEnum.NG && i.RETURN_TIME.Value.Date == dtNow.Date, new BaseFilter(filter.OrgId), "Nav_User", "Nav_DeviceBase"); if (details != null && details.Any()) { foreach (var item in details) { sendNotices.Add(NotificationTaskService.InsertUserNoticeTaskModel("设备" + item.Nav_DeviceBase.NAME + "归还记录", item.ID, filter.GetOrgId(), item.USER_ID.Value, item.Nav_User.NAME, DateTime.Now, DateTime.Now.AddDays(30), (int)FMNoticeTypeEnum.消息, "DM026")); } } UnifiedCommit(() => { if (sendNotices != null && sendNotices.Any()) BantchSaveEntityNoCommit(sendNotices); }); return true; }); } #endregion } }