diff --git a/APT.MicroApi/APT.PP.WebApi/Controllers/Api/SKController.cs b/APT.MicroApi/APT.PP.WebApi/Controllers/Api/SKController.cs index 4bb3596..6a4b2ae 100644 --- a/APT.MicroApi/APT.PP.WebApi/Controllers/Api/SKController.cs +++ b/APT.MicroApi/APT.PP.WebApi/Controllers/Api/SKController.cs @@ -4926,13 +4926,13 @@ namespace APT.PP.WebApi.Controllers.Api List detailContents = new List(); if (setList != null && setList.Any()) { - var proMinetypes = this.GetEntities(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId)); var checkTypes = this.GetEntities(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId)); var checkTypeIds = checkTypes.Where(t => t.NAME == "岗位排查").Select(m => m.ID).ToList(); var departs = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_User"); var users = this.GetEntities(t => t.ENABLE_STATUS == 0 && t.DEPARTMENT_ID != null && !t.CODE.Contains("admin") && t.Nav_Person != null, new BaseFilter(filter.OrgId), "Nav_Person", "Nav_ApproveRole"); var checkCycles = setList.Select(t => t.CHECK_CYCLE).Distinct().ToList(); - var librarys = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId), "Nav_Area").ToList(); + var productions = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId)).ToList(); + var librarys = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId), "Nav_Area", "Nav_ProductionUnit").ToList(); var libraryDetails = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId)).ToList(); var contents = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId), "Nav_Contents").ToList(); var contentDeparts = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId), "Nav_CheckType", "Nav_Department").ToList(); @@ -4963,6 +4963,7 @@ namespace APT.PP.WebApi.Controllers.Api { T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART de = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART(); de.POST_NAME = post?.NAME; + de.MineType = item.MineType; de.PRODUCTION_UNIT_ID = item.PRODUCTION_UNIT_ID; de.AREA_NAME = item.Nav_Area?.NAME; de.ENTERPRISE_LIBRARY_DETAIL_ID = contentFirst?.ENTERPRISE_LIBRARY_DETAIL_ID; @@ -4983,6 +4984,7 @@ namespace APT.PP.WebApi.Controllers.Api { T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART de = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART(); de.POST_NAME = "未配置辨识岗位"; + de.MineType = item.MineType; de.PRODUCTION_UNIT_ID = item.PRODUCTION_UNIT_ID; de.AREA_NAME = item.Nav_Area?.NAME; de.ENTERPRISE_LIBRARY_DETAIL_ID = contentFirst?.ENTERPRISE_LIBRARY_DETAIL_ID; @@ -5048,7 +5050,7 @@ namespace APT.PP.WebApi.Controllers.Api listNew.PRODUCTION_UNIT_ID = item.Key.PRODUCTION_UNIT_ID; listNew.Cycle = item.Key.CHECK_CYCLE; listNew.DepartType = item.Key.CHECK_TYPE; - listNew.MineType = proMinetypes.FirstOrDefault(t=>t.ID == item.Key.PRODUCTION_UNIT_ID)?.NAME; + listNew.MineType = productions.FirstOrDefault(t=>t.ID == item.Key.PRODUCTION_UNIT_ID)?.NAME; listNew.CheckType = item.Key.TYPE_NAME; listNew.CheckCycle = item.Key.CHECK_CYCLE.GetDescription(); listNew.CheckLevel = item.Key.CHECK_TYPE.GetDescription(); @@ -5075,7 +5077,7 @@ namespace APT.PP.WebApi.Controllers.Api checkListDetail.CHECKSTANDARD = tem.CHECK_STANDARD; listDetail.Add(checkListDetail); } - listNew.details = listDetail.Where(n=>n.CHECK_CONTENTS_ID!=null).OrderBy(t => t.RISK_AREA_NAME).ThenBy(m => m.RISK_NAME).ToList(); + listNew.details = listDetail.Where(n => n.CHECK_CONTENTS_ID != null).OrderBy(t => t.RISK_AREA_NAME).ThenBy(m => m.RISK_NAME).ToList(); } list.Add(listNew); } @@ -5086,7 +5088,7 @@ namespace APT.PP.WebApi.Controllers.Api { dt = DateTime.Parse(filter.Parameter1); } - DateTime minTime = dt.AddMinutes(0); + DateTime minTime = dt.AddMinutes(-10); DateTime maxTime = dt.AddMinutes(60); var shiftClassList = this.GetEntities(s => s.START_TIME > minTime && s.START_TIME <= maxTime && s.START_TIME != s.END_TIME && s.Nav_Team.ENABLE_STATUS == 0 && s.TEAM_ID != null, new BaseFilter(filter.OrgId), "Nav_DepartmentSchedulingDetail.Nav_Person").ToList(); var teamIds = shiftClassList.Select(t => t.TEAM_ID).Distinct().ToList(); @@ -5106,11 +5108,11 @@ namespace APT.PP.WebApi.Controllers.Api } var baseFilter = new BaseFilter(filter.GetOrgId()); baseFilter.IgnoreDataRule = true; - baseFilter.SelectField = new string[] { "MineType", "CHECK_TYPE_ID", "APPLY_DEPARTMENT_ID", "APPLY_USER_ID", "PLANCHECKFREQUENCY", "DEPARTMENT_TYPE" }; //指定字段,包括导航属性 - Expression> expression = i => i.IS_DELETED == false && i.CREATE_TIME > minTime && i.CREATE_TIME <= maxTime; + baseFilter.SelectField = new string[] { "PRODUCTION_UNIT_ID", "CHECK_TYPE_ID", "APPLY_DEPARTMENT_ID", "APPLY_USER_ID", "PLANCHECKFREQUENCY", "DEPARTMENT_TYPE", "CREATE_TIME" }; //指定字段,包括导航属性 + Expression> expression = i => i.IS_DELETED == false && (i.CREATE_TIME.Value.Date == DateTime.Now.Date || i.CREATE_TIME.Value.Date == DateTime.Now.AddDays(-1).Date); List noticeExsiss = this.GetOrderEntities(expression, baseFilter).ToList(); - baseFilter.SelectField = new string[] { "MineType", "CHECK_TYPE_ID", "APPLY_DEPARTMENT_ID", "APPLY_USER_ID", "PLANCHECKFREQUENCY", "DEPARTMENT_TYPE" }; - Expression> expressionR = i => i.IS_DELETED == false && i.CREATE_TIME > minTime && i.CREATE_TIME <= maxTime; + baseFilter.SelectField = new string[] { "PRODUCTION_UNIT_ID", "CHECK_TYPE_ID", "APPLY_DEPARTMENT_ID", "APPLY_USER_ID", "PLANCHECKFREQUENCY", "DEPARTMENT_TYPE", "CREATE_TIME" }; + Expression> expressionR = i => i.IS_DELETED == false && (i.CREATE_TIME.Value.Date == DateTime.Now.Date || i.CREATE_TIME.Value.Date == DateTime.Now.AddDays(-1).Date); List recordExsiss = this.GetOrderEntities(expressionR, baseFilter).ToList(); //取岗位排查表 var postCheckList = list.Where(t => t.CheckTypeId != null && checkTypeIds.Contains((Guid)t.CheckTypeId)).ToList(); @@ -5118,77 +5120,89 @@ namespace APT.PP.WebApi.Controllers.Api { foreach (var item in postCheckList) { + //取排班 + var teamFirst = teamInfos.FirstOrDefault(t => t.DEPARTMENT_ID == item.CheckDepartId); + var sche = shiftClassList.FirstOrDefault(t => t.TEAM_ID == teamFirst?.ID); //触发安全检查记录给对应的岗位工(有排班才触发) - var userInfo = users.FirstOrDefault(t => t.DEPARTMENT_ID == item.CheckDepartId && teamDepartIds.Contains(t.DEPARTMENT_ID) && t.PERSON_ID != null && personIds.Contains((Guid)t.PERSON_ID) && t.Nav_Person != null && t.Nav_Person.POST_ID == item.CheckPostId); - if (userInfo != null) + var userInfo = users.Where(t => t.DEPARTMENT_ID == item.CheckDepartId && teamDepartIds.Contains(t.DEPARTMENT_ID) && t.PERSON_ID != null && personIds.Contains((Guid)t.PERSON_ID) && t.Nav_Person != null && t.Nav_Person.POST_ID == item.CheckPostId).ToList(); + if (userInfo != null && userInfo.Any()) { - //判断是否重复触发 - var exist = recordExsiss.FirstOrDefault(t => t.APPLY_USER_ID == userInfo.ID && t.CHECK_TYPE_ID == item.CheckTypeId && t.PLANCHECKFREQUENCY == item.Cycle); - if (exist == null) + foreach (var user in userInfo) { - T_SK_SECURITY_INSPECTION_RECORD record = new T_SK_SECURITY_INSPECTION_RECORD(); - record.ORG_ID = filter.OrgId; - record.APPLY_DEPARTMENT_ID = userInfo.DEPARTMENT_ID; - record.APPLY_USER_ID = userInfo.ID; - record.PRODUCTION_UNIT_ID = item.PRODUCTION_UNIT_ID; - record.CHECK_TYPE_ID = item.CheckTypeId; - record.PLANCHECKFREQUENCY = item.Cycle; - record.DEPARTMENT_TYPE = item.DepartType; - record.STATUS = PFStandardStatus.Draft; - record.ISAUTO = true; - records.Add(record); - if (item.details != null && item.details.Any()) + //判断是否重复触发 + var exist = recordExsiss.FirstOrDefault(t => t.APPLY_USER_ID == user.ID && t.DEPARTMENT_TYPE == item.DepartType && t.CHECK_TYPE_ID == item.CheckTypeId && t.PLANCHECKFREQUENCY == item.Cycle && t.CREATE_TIME.Value.Date == dt.Date); + //如果是大夜班,跨天的情况下再判断一次,如果存在,就表示今天已触发,只是创建日期是昨天 + if (exist == null && sche != null && sche.START_TIME.AddHours(-1).Date != dt.Date) { - foreach (var item2 in item.details) + var tempDate = sche.START_TIME.AddHours(-2); + exist = recordExsiss.FirstOrDefault(t => t.APPLY_USER_ID == user.ID && t.DEPARTMENT_TYPE == item.DepartType && t.CHECK_TYPE_ID == item.CheckTypeId && t.PLANCHECKFREQUENCY == item.Cycle && t.CREATE_TIME > tempDate); + } + if (exist == null) + { + T_SK_SECURITY_INSPECTION_RECORD record = new T_SK_SECURITY_INSPECTION_RECORD(); + record.ORG_ID = filter.OrgId; + record.APPLY_DEPARTMENT_ID = user.DEPARTMENT_ID; + record.APPLY_USER_ID = user.ID; + record.PRODUCTION_UNIT_ID = item.PRODUCTION_UNIT_ID; + record.CHECK_TYPE_ID = item.CheckTypeId; + record.PLANCHECKFREQUENCY = item.Cycle; + record.DEPARTMENT_TYPE = item.DepartType; + record.STATUS = PFStandardStatus.Draft; + record.ISAUTO = true; + records.Add(record); + if (item.details != null && item.details.Any()) { - var i = 1; - //var repeat = safeDetialNotices.FirstOrDefault(t => t.SECURITY_INSPECTION_NOTICE_ID == safeNotice.ID && t.RISK_AREA_ID == item2.AREA_ID && t.CHECK_CONTENTS_ID == item2.CHECK_CONTENTS_ID); - //if (repeat == null) + foreach (var item2 in item.details) { - T_SK_SECURITY_INSPECTION_RECORD_DETAIL detail = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL(); - detail.ORG_ID = filter.OrgId; - detail.SECURITY_INSPECTION_RECORD_ID = record.ID; - detail.RISK_AREA_ID = item2.RISK_AREA_ID; - detail.CHECK_CONTENTS_ID = item2.CHECK_CONTENTS_ID; - detail.CHECKCONTENT = item2.CHECK_CONTENTS_NAME; - detail.CHECKPROOF = item2.CHECKPROOF; - detail.CHECKSTANDARD = item2.CHECKSTANDARD; - detail.NUM = i; - recordDetails.Add(detail); - i++; - T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER deUser = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER(); - deUser.ORG_ID = filter.OrgId; - deUser.SECURITY_INSPECTION_RECORD_DETAIL_ID = detail.ID; - deUser.USER_ID = userInfo.ID; - deUser.ISMAINCHECK = true; - recordDetailUsers.Add(deUser); + var i = 1; + //var repeat = safeDetialNotices.FirstOrDefault(t => t.SECURITY_INSPECTION_NOTICE_ID == safeNotice.ID && t.RISK_AREA_ID == item2.AREA_ID && t.CHECK_CONTENTS_ID == item2.CHECK_CONTENTS_ID); + //if (repeat == null) + { + T_SK_SECURITY_INSPECTION_RECORD_DETAIL detail = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL(); + detail.ORG_ID = filter.OrgId; + detail.SECURITY_INSPECTION_RECORD_ID = record.ID; + detail.RISK_AREA_ID = item2.RISK_AREA_ID; + detail.CHECK_CONTENTS_ID = item2.CHECK_CONTENTS_ID; + detail.CHECKCONTENT = item2.CHECK_CONTENTS_NAME; + detail.CHECKPROOF = item2.CHECKPROOF; + detail.CHECKSTANDARD = item2.CHECKSTANDARD; + detail.NUM = i; + recordDetails.Add(detail); + i++; + T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER deUser = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER(); + deUser.ORG_ID = filter.OrgId; + deUser.SECURITY_INSPECTION_RECORD_DETAIL_ID = detail.ID; + deUser.USER_ID = user.ID; + deUser.ISMAINCHECK = true; + recordDetailUsers.Add(deUser); + } } } + var date = DateTime.Now.Year + DateTime.Now.Month.PadLeft(2, '0') + DateTime.Now.AddHours(4).Day.PadLeft(2, '0'); + var endtime = DateTime.Now.AddHours(24); + if (item.Cycle == SKPLANCHECKFREQUENCYEnum.Week) + { + endtime = DateTime.Now.AddDays(7); + } + if (item.Cycle == SKPLANCHECKFREQUENCYEnum.Month) + { + endtime = DateTime.Now.AddMonths(1); + } + if (item.Cycle == SKPLANCHECKFREQUENCYEnum.HalfYear) + { + endtime = DateTime.Now.AddMonths(6); + } + if (item.Cycle == SKPLANCHECKFREQUENCYEnum.Year) + { + endtime = DateTime.Now.AddMonths(12); + } + if (item.Cycle == SKPLANCHECKFREQUENCYEnum.Quarter) + { + endtime = DateTime.Now.AddMonths(3); + } + var notice = NotificationTaskService.InsertUserNoticeTaskModel(item.CheckCycle + "岗位排查记录" + date, record.ID, filter.OrgId, user.ID, user.NAME, DateTime.Now, endtime, (int)FMNoticeTypeEnum.消息, "SK010"); + notices.Add(notice); } - var date = DateTime.Now.Year + DateTime.Now.Month.PadLeft(2, '0') + DateTime.Now.Day.PadLeft(2, '0'); - var endtime = DateTime.Now.AddHours(24); - if (item.Cycle == SKPLANCHECKFREQUENCYEnum.Week) - { - endtime = DateTime.Now.AddDays(7); - } - if (item.Cycle == SKPLANCHECKFREQUENCYEnum.Month) - { - endtime = DateTime.Now.AddMonths(1); - } - if (item.Cycle == SKPLANCHECKFREQUENCYEnum.HalfYear) - { - endtime = DateTime.Now.AddMonths(6); - } - if (item.Cycle == SKPLANCHECKFREQUENCYEnum.Year) - { - endtime = DateTime.Now.AddMonths(12); - } - if (item.Cycle == SKPLANCHECKFREQUENCYEnum.Quarter) - { - endtime = DateTime.Now.AddMonths(3); - } - var notice = NotificationTaskService.InsertUserNoticeTaskModel(item.CheckCycle + "岗位排查记录" + date, record.ID, filter.OrgId, userInfo.ID, userInfo.NAME, DateTime.Now, endtime, (int)FMNoticeTypeEnum.消息, "SK010"); - notices.Add(notice); } } } @@ -5199,7 +5213,6 @@ namespace APT.PP.WebApi.Controllers.Api { foreach (var item in checkList) { - var setTime = setList.FirstOrDefault(t => t.PRODUCTION_UNIT_ID == item.PRODUCTION_UNIT_ID && t.CHECK_CYCLE == item.Cycle); var userInfo = users.FirstOrDefault(t => t.DEPARTMENT_ID == item.CheckDepartId && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == item.CheckPost); //触发安全检查通知给对应的审批角色 if (item.CheckPost == "安环部安全员") @@ -5217,8 +5230,21 @@ namespace APT.PP.WebApi.Controllers.Api } if (userInfo != null) { + var setTime = setList.FirstOrDefault(t => t.PRODUCTION_UNIT_ID == item.PRODUCTION_UNIT_ID && t.CHECK_CYCLE == item.Cycle); //判断是否重复触发 - var exist = noticeExsiss.FirstOrDefault(t => t.APPLY_USER_ID == userInfo.ID && t.CHECK_TYPE_ID == item.CheckTypeId && t.PLANCHECKFREQUENCY == item.Cycle); + var exist = noticeExsiss.FirstOrDefault(t => t.APPLY_USER_ID == userInfo.ID && t.DEPARTMENT_TYPE == item.DepartType && t.CHECK_TYPE_ID == item.CheckTypeId && t.PLANCHECKFREQUENCY == item.Cycle && t.CREATE_TIME.Value.Date == dt.Date); + //如果是大夜班,跨天的情况下再判断一次,如果存在,就表示今天已触发,只是创建日期是昨天 + if (exist == null && item.CheckPost == "班组负责人") + { + //取排班 + var teamFirst = teamInfos.FirstOrDefault(t => t.DEPARTMENT_ID == item.CheckDepartId); + var sche = shiftClassList.FirstOrDefault(t => t.TEAM_ID == teamFirst?.ID); + if (sche != null && sche.START_TIME.AddHours(-1).Date != dt.Date) + { + var tempDate = sche.START_TIME.AddHours(-2); + exist = noticeExsiss.FirstOrDefault(t => t.APPLY_USER_ID == userInfo.ID && t.DEPARTMENT_TYPE == item.DepartType && t.CHECK_TYPE_ID == item.CheckTypeId && t.PLANCHECKFREQUENCY == item.Cycle && t.CREATE_TIME > tempDate); + } + } if ((exist == null && item.CheckPost == "班组负责人") || (exist == null && item.CheckPost != "班组负责人" && setTime != null && dtNow.Hour == setTime.CHECKTIME.Value.Hour)) { T_SK_SECURITY_INSPECTION_NOTICE safeNotice = new T_SK_SECURITY_INSPECTION_NOTICE(); @@ -5253,7 +5279,7 @@ namespace APT.PP.WebApi.Controllers.Api } } } - var date = DateTime.Now.Year + DateTime.Now.Month.PadLeft(2, '0') + DateTime.Now.Day.PadLeft(2, '0'); + var date = DateTime.Now.Year + DateTime.Now.Month.PadLeft(2, '0') + DateTime.Now.AddHours(4).Day.PadLeft(2, '0'); var endtime = DateTime.Now.AddHours(24); if (item.Cycle == SKPLANCHECKFREQUENCYEnum.Week) { diff --git a/APT.MicroApi/APT.SK.WebApi/Controllers/Api/RiskEvaluationController.cs b/APT.MicroApi/APT.SK.WebApi/Controllers/Api/RiskEvaluationController.cs index ab2dbf3..42174f9 100644 --- a/APT.MicroApi/APT.SK.WebApi/Controllers/Api/RiskEvaluationController.cs +++ b/APT.MicroApi/APT.SK.WebApi/Controllers/Api/RiskEvaluationController.cs @@ -188,6 +188,10 @@ namespace APT.SK.WebApi.Controllers.Api List notices = new List(); if (entity.PUBLISH != null && entity.PUBLISH.Equals("SaveAndNotify")) { + if (departList.Where(t => t.IS_DELETED == false).Count() == 0) + { + throw new Exception("管控层级不能为空"); + } var departmentType = this.GetEntity(t => t.ID == entity.APPLY_DEPARTMENT_ID && t.ENABLE_STATUS == 0)?.DEPARTMENT_TYPE; var param = Enum.GetName(typeof(SKDepartmentTypeEnum), departmentType); entity.STATUS = PFStandardStatus.Approving;