This commit is contained in:
何美荣 2025-10-22 23:16:48 +08:00
parent b380fdc894
commit ce170e3077
2 changed files with 104 additions and 74 deletions

View File

@ -4926,13 +4926,13 @@ namespace APT.PP.WebApi.Controllers.Api
List<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART> detailContents = new List<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART>(); List<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART> detailContents = new List<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART>();
if (setList != null && setList.Any()) if (setList != null && setList.Any())
{ {
var proMinetypes = this.GetEntities<T_FM_USER_PRODUCTION_UNIT_SET>(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId));
var checkTypes = this.GetEntities<T_SK_CHECK_TYPE>(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId)); var checkTypes = this.GetEntities<T_SK_CHECK_TYPE>(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId));
var checkTypeIds = checkTypes.Where(t => t.NAME == "岗位排查").Select(m => m.ID).ToList(); var checkTypeIds = checkTypes.Where(t => t.NAME == "岗位排查").Select(m => m.ID).ToList();
var departs = this.GetEntities<T_FM_DEPARTMENT>(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_User"); var departs = this.GetEntities<T_FM_DEPARTMENT>(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_User");
var users = this.GetEntities<T_FM_USER>(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 users = this.GetEntities<T_FM_USER>(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 checkCycles = setList.Select(t => t.CHECK_CYCLE).Distinct().ToList();
var librarys = this.GetEntities<T_SK_ENTERPRISE_LIBRARY>(t => !t.IS_DELETED, new BaseFilter(filter.OrgId), "Nav_Area").ToList(); var productions = this.GetEntities<T_FM_USER_PRODUCTION_UNIT_SET>(t => !t.IS_DELETED, new BaseFilter(filter.OrgId)).ToList();
var librarys = this.GetEntities<T_SK_ENTERPRISE_LIBRARY>(t => !t.IS_DELETED, new BaseFilter(filter.OrgId), "Nav_Area", "Nav_ProductionUnit").ToList();
var libraryDetails = this.GetEntities<T_SK_ENTERPRISE_LIBRARY_DETAIL>(t => !t.IS_DELETED, new BaseFilter(filter.OrgId)).ToList(); var libraryDetails = this.GetEntities<T_SK_ENTERPRISE_LIBRARY_DETAIL>(t => !t.IS_DELETED, new BaseFilter(filter.OrgId)).ToList();
var contents = this.GetEntities<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT>(t => !t.IS_DELETED, new BaseFilter(filter.OrgId), "Nav_Contents").ToList(); var contents = this.GetEntities<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT>(t => !t.IS_DELETED, new BaseFilter(filter.OrgId), "Nav_Contents").ToList();
var contentDeparts = this.GetEntities<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART>(t => !t.IS_DELETED, new BaseFilter(filter.OrgId), "Nav_CheckType", "Nav_Department").ToList(); var contentDeparts = this.GetEntities<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART>(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(); T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART de = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART();
de.POST_NAME = post?.NAME; de.POST_NAME = post?.NAME;
de.MineType = item.MineType;
de.PRODUCTION_UNIT_ID = item.PRODUCTION_UNIT_ID; de.PRODUCTION_UNIT_ID = item.PRODUCTION_UNIT_ID;
de.AREA_NAME = item.Nav_Area?.NAME; de.AREA_NAME = item.Nav_Area?.NAME;
de.ENTERPRISE_LIBRARY_DETAIL_ID = contentFirst?.ENTERPRISE_LIBRARY_DETAIL_ID; 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(); T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART de = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART();
de.POST_NAME = "未配置辨识岗位"; de.POST_NAME = "未配置辨识岗位";
de.MineType = item.MineType;
de.PRODUCTION_UNIT_ID = item.PRODUCTION_UNIT_ID; de.PRODUCTION_UNIT_ID = item.PRODUCTION_UNIT_ID;
de.AREA_NAME = item.Nav_Area?.NAME; de.AREA_NAME = item.Nav_Area?.NAME;
de.ENTERPRISE_LIBRARY_DETAIL_ID = contentFirst?.ENTERPRISE_LIBRARY_DETAIL_ID; 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.PRODUCTION_UNIT_ID = item.Key.PRODUCTION_UNIT_ID;
listNew.Cycle = item.Key.CHECK_CYCLE; listNew.Cycle = item.Key.CHECK_CYCLE;
listNew.DepartType = item.Key.CHECK_TYPE; 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.CheckType = item.Key.TYPE_NAME;
listNew.CheckCycle = item.Key.CHECK_CYCLE.GetDescription(); listNew.CheckCycle = item.Key.CHECK_CYCLE.GetDescription();
listNew.CheckLevel = item.Key.CHECK_TYPE.GetDescription(); listNew.CheckLevel = item.Key.CHECK_TYPE.GetDescription();
@ -5086,7 +5088,7 @@ namespace APT.PP.WebApi.Controllers.Api
{ {
dt = DateTime.Parse(filter.Parameter1); dt = DateTime.Parse(filter.Parameter1);
} }
DateTime minTime = dt.AddMinutes(0); DateTime minTime = dt.AddMinutes(-10);
DateTime maxTime = dt.AddMinutes(60); DateTime maxTime = dt.AddMinutes(60);
var shiftClassList = this.GetEntities<T_FM_DEPARTMENT_SCHEDULING>(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 shiftClassList = this.GetEntities<T_FM_DEPARTMENT_SCHEDULING>(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(); 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()); var baseFilter = new BaseFilter(filter.GetOrgId());
baseFilter.IgnoreDataRule = true; baseFilter.IgnoreDataRule = true;
baseFilter.SelectField = new string[] { "MineType", "CHECK_TYPE_ID", "APPLY_DEPARTMENT_ID", "APPLY_USER_ID", "PLANCHECKFREQUENCY", "DEPARTMENT_TYPE" }; //指定字段,包括导航属性 baseFilter.SelectField = new string[] { "PRODUCTION_UNIT_ID", "CHECK_TYPE_ID", "APPLY_DEPARTMENT_ID", "APPLY_USER_ID", "PLANCHECKFREQUENCY", "DEPARTMENT_TYPE", "CREATE_TIME" }; //指定字段,包括导航属性
Expression<Func<T_SK_SECURITY_INSPECTION_NOTICE, bool>> expression = i => i.IS_DELETED == false && i.CREATE_TIME > minTime && i.CREATE_TIME <= maxTime; Expression<Func<T_SK_SECURITY_INSPECTION_NOTICE, bool>> 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<T_SK_SECURITY_INSPECTION_NOTICE> noticeExsiss = this.GetOrderEntities(expression, baseFilter).ToList(); List<T_SK_SECURITY_INSPECTION_NOTICE> noticeExsiss = this.GetOrderEntities(expression, baseFilter).ToList();
baseFilter.SelectField = new string[] { "MineType", "CHECK_TYPE_ID", "APPLY_DEPARTMENT_ID", "APPLY_USER_ID", "PLANCHECKFREQUENCY", "DEPARTMENT_TYPE" }; baseFilter.SelectField = new string[] { "PRODUCTION_UNIT_ID", "CHECK_TYPE_ID", "APPLY_DEPARTMENT_ID", "APPLY_USER_ID", "PLANCHECKFREQUENCY", "DEPARTMENT_TYPE", "CREATE_TIME" };
Expression<Func<T_SK_SECURITY_INSPECTION_RECORD, bool>> expressionR = i => i.IS_DELETED == false && i.CREATE_TIME > minTime && i.CREATE_TIME <= maxTime; Expression<Func<T_SK_SECURITY_INSPECTION_RECORD, bool>> 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<T_SK_SECURITY_INSPECTION_RECORD> recordExsiss = this.GetOrderEntities(expressionR, baseFilter).ToList(); List<T_SK_SECURITY_INSPECTION_RECORD> recordExsiss = this.GetOrderEntities(expressionR, baseFilter).ToList();
//取岗位排查表 //取岗位排查表
var postCheckList = list.Where(t => t.CheckTypeId != null && checkTypeIds.Contains((Guid)t.CheckTypeId)).ToList(); var postCheckList = list.Where(t => t.CheckTypeId != null && checkTypeIds.Contains((Guid)t.CheckTypeId)).ToList();
@ -5118,18 +5120,29 @@ namespace APT.PP.WebApi.Controllers.Api
{ {
foreach (var item in postCheckList) 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); 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) if (userInfo != null && userInfo.Any())
{
foreach (var user in userInfo)
{ {
//判断是否重复触发 //判断是否重复触发
var exist = recordExsiss.FirstOrDefault(t => t.APPLY_USER_ID == userInfo.ID && t.CHECK_TYPE_ID == item.CheckTypeId && t.PLANCHECKFREQUENCY == item.Cycle); 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)
{
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) if (exist == null)
{ {
T_SK_SECURITY_INSPECTION_RECORD record = new T_SK_SECURITY_INSPECTION_RECORD(); T_SK_SECURITY_INSPECTION_RECORD record = new T_SK_SECURITY_INSPECTION_RECORD();
record.ORG_ID = filter.OrgId; record.ORG_ID = filter.OrgId;
record.APPLY_DEPARTMENT_ID = userInfo.DEPARTMENT_ID; record.APPLY_DEPARTMENT_ID = user.DEPARTMENT_ID;
record.APPLY_USER_ID = userInfo.ID; record.APPLY_USER_ID = user.ID;
record.PRODUCTION_UNIT_ID = item.PRODUCTION_UNIT_ID; record.PRODUCTION_UNIT_ID = item.PRODUCTION_UNIT_ID;
record.CHECK_TYPE_ID = item.CheckTypeId; record.CHECK_TYPE_ID = item.CheckTypeId;
record.PLANCHECKFREQUENCY = item.Cycle; record.PLANCHECKFREQUENCY = item.Cycle;
@ -5159,13 +5172,13 @@ namespace APT.PP.WebApi.Controllers.Api
T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER deUser = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER(); T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER deUser = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER();
deUser.ORG_ID = filter.OrgId; deUser.ORG_ID = filter.OrgId;
deUser.SECURITY_INSPECTION_RECORD_DETAIL_ID = detail.ID; deUser.SECURITY_INSPECTION_RECORD_DETAIL_ID = detail.ID;
deUser.USER_ID = userInfo.ID; deUser.USER_ID = user.ID;
deUser.ISMAINCHECK = true; deUser.ISMAINCHECK = true;
recordDetailUsers.Add(deUser); recordDetailUsers.Add(deUser);
} }
} }
} }
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); var endtime = DateTime.Now.AddHours(24);
if (item.Cycle == SKPLANCHECKFREQUENCYEnum.Week) if (item.Cycle == SKPLANCHECKFREQUENCYEnum.Week)
{ {
@ -5187,19 +5200,19 @@ namespace APT.PP.WebApi.Controllers.Api
{ {
endtime = DateTime.Now.AddMonths(3); 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"); var notice = NotificationTaskService.InsertUserNoticeTaskModel(item.CheckCycle + "岗位排查记录" + date, record.ID, filter.OrgId, user.ID, user.NAME, DateTime.Now, endtime, (int)FMNoticeTypeEnum., "SK010");
notices.Add(notice); notices.Add(notice);
} }
} }
} }
} }
}
//取非岗位排查 //取非岗位排查
var checkList = list.Where(t => t.CheckTypeId != null && !checkTypeIds.Contains((Guid)t.CheckTypeId)).ToList(); var checkList = list.Where(t => t.CheckTypeId != null && !checkTypeIds.Contains((Guid)t.CheckTypeId)).ToList();
if (checkList != null && checkList.Any()) if (checkList != null && checkList.Any())
{ {
foreach (var item in checkList) 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); var userInfo = users.FirstOrDefault(t => t.DEPARTMENT_ID == item.CheckDepartId && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == item.CheckPost);
//触发安全检查通知给对应的审批角色 //触发安全检查通知给对应的审批角色
if (item.CheckPost == "安环部安全员") if (item.CheckPost == "安环部安全员")
@ -5217,8 +5230,21 @@ namespace APT.PP.WebApi.Controllers.Api
} }
if (userInfo != null) 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)) 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(); 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); var endtime = DateTime.Now.AddHours(24);
if (item.Cycle == SKPLANCHECKFREQUENCYEnum.Week) if (item.Cycle == SKPLANCHECKFREQUENCYEnum.Week)
{ {

View File

@ -188,6 +188,10 @@ namespace APT.SK.WebApi.Controllers.Api
List<T_FM_NOTIFICATION_TASK> notices = new List<T_FM_NOTIFICATION_TASK>(); List<T_FM_NOTIFICATION_TASK> notices = new List<T_FM_NOTIFICATION_TASK>();
if (entity.PUBLISH != null && entity.PUBLISH.Equals("SaveAndNotify")) 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_FM_DEPARTMENT>(t => t.ID == entity.APPLY_DEPARTMENT_ID && t.ENABLE_STATUS == 0)?.DEPARTMENT_TYPE; var departmentType = this.GetEntity<T_FM_DEPARTMENT>(t => t.ID == entity.APPLY_DEPARTMENT_ID && t.ENABLE_STATUS == 0)?.DEPARTMENT_TYPE;
var param = Enum.GetName(typeof(SKDepartmentTypeEnum), departmentType); var param = Enum.GetName(typeof(SKDepartmentTypeEnum), departmentType);
entity.STATUS = PFStandardStatus.Approving; entity.STATUS = PFStandardStatus.Approving;