mh_jy_safe/APT.MicroApi/APT.PP.WebApi/Controllers/Api/SKController.cs
何美荣 df24bf4e9b 2
2025-09-30 11:51:12 +08:00

5313 lines
385 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using APT.BaseData.Domain.Entities.FM;
using APT.BaseData.Domain.IServices.FM;
using APT.BaseData.Domain.IServices;
using APT.Infrastructure.Core;
using APT.Utility;
using Microsoft.AspNetCore.Mvc;
using APT.WebApi.Models;
using System;
using System.Collections.Generic;
using APT.MS.Domain.Entities.SK;
using APT.MS.Domain.Enums.SK;
using APT.MS.Domain.Enums;
using APT.MS.Domain.Entities.SC.PT;
using System.Linq;
using APT.BaseData.Domain.Enums;
using APT.BaseData.Domain.Entities;
using APT.BaseData.Domain.Enums.PF;
using APT.BaseData.Domain.ApiModel;
using NPOI.SS.Formula.Functions;
using System.Threading.Tasks;
using static Microsoft.AspNetCore.Razor.Language.TagHelperMetadata;
using log4net.Filter;
using Microsoft.Extensions.DependencyModel;
using NPOI.Util;
using System.Numerics;
using IdentityModel;
using InfluxData.Net.InfluxDb.Models.Responses;
using NPOI.POIFS.FileSystem;
using System.Security.Principal;
using Microsoft.AspNetCore.Http;
using APT.MS.Domain.Entities.BS;
using Org.BouncyCastle.Utilities;
using System.Reflection.Metadata;
using MySqlX.XDevAPI.Common;
using System.Collections.Immutable;
using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Asn1.Tsp;
using System.Runtime.Intrinsics.X86;
using static Google.Protobuf.WireFormat;
using NPOI.HSSF.UserModel;
using System.Runtime.Intrinsics.Arm;
using APT.MS.Domain.Entities.LR;
using System.Linq.Expressions;
using System.Security.Policy;
using Microsoft.Extensions.Hosting;
using System.Security.Cryptography;
using System.Collections;
using Microsoft.Extensions.Logging;
namespace APT.PP.WebApi.Controllers.Api
{
public class CheckListNew
{
public Guid? PRODUCTION_UNIT_ID { get; set; }
public SKProductionUnit Mine { get; set; }
public SKPLANCHECKFREQUENCYEnum Cycle { get; set; }
public SKDepartmentTypeEnum DepartType { get; set; }
public string MineType { get; set; }
public string CheckType { get; set; }
public Guid? CheckTypeId { get; set; }
public string CheckCycle { get; set; }
public string CheckLevel { get; set; }
public int Num { get; set; }
public Guid? CheckDepartId { get; set; }
public string CheckDepart { get; set; }
public string CheckPost { get; set; }
public Guid? CheckPostId { get; set; }
public List<CheckListDetail> details { get; set; }
}
public class CheckListDetail
{
public string RISK_NAME { get; set; }
public Guid? RISK_AREA_ID { get; set; }
public string RISK_AREA_NAME { get; set; }
public Guid? CHECK_CONTENTS_ID { get; set; }
public string CHECK_CONTENTS_NAME { get; set; }
public string CHECKPROOF { get; set; }
public string CHECKSTANDARD { get; set; }
}
[Route("api/PP/SKController")]
[TypeFilter(typeof(CustomActionFilterAttribute))]
public class SKController : AuthorizeApiController<T_FM_BASE_CONFIG>
{
IFMNotificationTaskService NotificationTaskService { get; set; }
public SKController(IFMNotificationTaskService notificationTaskService)
{
NotificationTaskService = notificationTaskService;
}
/// <summary>
/// 触发安全检查通知
/// </summary>
/// <param name="pageFilter"></param>
/// <returns></returns>
[HttpPost, Route("SafeCheckNotice")]
public JsonActionResult<bool> SafeCheckNotice([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
try
{
var dtNow = DateTime.Now;
var year = dtNow.Year;
var month = dtNow.Month;
var day = dtNow.Day;
var week = dtNow.DayOfWeek;
List<SKPLANCHECKFREQUENCYEnum> setList = new List<SKPLANCHECKFREQUENCYEnum>();
//查配置表,有配才执行
var timeSets = GetEntities<T_SK_TIME_SET>(i => i.SET_TYPE == SKSetTypeEnum.SecurityNotice && i.ENABLE_STATUS == 0 && i.RUNSETTIME.Value.Hour == DateTime.Now.Hour, new BaseFilter(filter.OrgId)).ToList();
if (timeSets != null && timeSets.Any())
{
foreach (var set in timeSets)
{
switch (set.PLANCHECKFREQUENCY)
{
case SKPLANCHECKFREQUENCYEnum.Year:
if (set.MONTH == month && set.DATA == day)
{
setList.Add(SKPLANCHECKFREQUENCYEnum.Year);
}
break;
case SKPLANCHECKFREQUENCYEnum.HalfYear:
if ((set.MONTH == month && set.DATA == day) || ((set.MONTH + 6) == month && (set.DATA + 183) == day))
{
setList.Add(SKPLANCHECKFREQUENCYEnum.HalfYear);
}
break;
case SKPLANCHECKFREQUENCYEnum.Date:
setList.Add(SKPLANCHECKFREQUENCYEnum.Date);
break;
//case SKPLANCHECKFREQUENCYEnum.Class:
// setList.Add(SKPLANCHECKFREQUENCYEnum.Class);
// break;
case SKPLANCHECKFREQUENCYEnum.Week:
if (set.WEEKDATA != null && (int)set.WEEKDATA.Value == (int)week)
{
setList.Add(SKPLANCHECKFREQUENCYEnum.Week);
}
break;
case SKPLANCHECKFREQUENCYEnum.Month:
if (set.DATA == day)
{
setList.Add(SKPLANCHECKFREQUENCYEnum.Month);
}
break;
case SKPLANCHECKFREQUENCYEnum.Quarter:
if (set.MONTH == 1)
{
if ((month == 1 || month == 4 || month == 7 || month == 10) && set.DATA == day)
{
setList.Add(SKPLANCHECKFREQUENCYEnum.Quarter);
}
}
if (set.MONTH == 2)
{
if ((month == 2 || month == 5 || month == 8 || month == 11) && set.DATA == day)
{
setList.Add(SKPLANCHECKFREQUENCYEnum.Quarter);
}
}
if (set.MONTH == 3)
{
if ((month == 3 || month == 6 || month == 9 || month == 12) && set.DATA == day)
{
setList.Add(SKPLANCHECKFREQUENCYEnum.Quarter);
}
}
break;
default:
break;
}
}
}
List<T_FM_NOTIFICATION_TASK> notices = new List<T_FM_NOTIFICATION_TASK>();
List<T_SK_SECURITY_INSPECTION_NOTICE> safeNotices = new List<T_SK_SECURITY_INSPECTION_NOTICE>();
List<T_SK_SECURITY_INSPECTION_NOTICE_DETAIL> safeDetialNotices = new List<T_SK_SECURITY_INSPECTION_NOTICE_DETAIL>();
List<T_SK_SECURITY_INSPECTION_RECORD> records = new List<T_SK_SECURITY_INSPECTION_RECORD>();
List<T_SK_SECURITY_INSPECTION_RECORD_DETAIL> recordDetails = new List<T_SK_SECURITY_INSPECTION_RECORD_DETAIL>();
List<T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER> recordDetailUsers = new List<T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER>();
if (setList != null && setList.Any())
{
var checkTypes = this.GetEntities<T_SK_CHECK_TYPE>(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId));
var departs = this.GetEntities<T_FM_DEPARTMENT>(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId));
var users = this.GetEntities<T_FM_USER>(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin") && t.Nav_Person != null, new BaseFilter(filter.OrgId), "Nav_Person", "Nav_ApproveRole");
var cycles = setList.Distinct().ToList();
var libraryDeparts = this.GetEntities<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART>(t => cycles.Contains(t.CHECK_CYCLE), new BaseFilter(filter.OrgId));
var ldepartIds = libraryDeparts.Select(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID).Distinct().ToList();
var libraryContents = this.GetEntities<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT>(t => ldepartIds.Contains(t.ID), new BaseFilter(filter.OrgId));
var detailsIds = libraryContents.Select(t => t.ENTERPRISE_LIBRARY_DETAIL_ID).Distinct().ToList();
var libraryDetails = this.GetEntities<T_SK_ENTERPRISE_LIBRARY_DETAIL>(t => detailsIds.Contains(t.ID), new BaseFilter(filter.OrgId));
var libraryIds = libraryDetails.Select(t => t.ENTERPRISE_LIBRARY_ID).Distinct().ToList();
var librarys = this.GetEntities<T_SK_ENTERPRISE_LIBRARY>(t => libraryIds.Contains(t.ID), new BaseFilter(filter.OrgId));
if (libraryContents != null && libraryContents.Any())
{
foreach (var content in libraryContents)
{
var detailTemp = libraryDetails.FirstOrDefault(t => t.ID == content.ENTERPRISE_LIBRARY_DETAIL_ID);
var libraryTemp = librarys.FirstOrDefault(t => t.ID == detailTemp.ENTERPRISE_LIBRARY_ID);
content.MineType = libraryTemp.MineType;
content.AREA_ID = libraryTemp.AREA_ID;
}
}
if (libraryDeparts != null && libraryDeparts.Any())
{
foreach (var depart in libraryDeparts)
{
var departTemp = libraryContents.FirstOrDefault(t => t.ID == depart.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID);
var detailTemp = libraryDetails.FirstOrDefault(t => t.ID == departTemp.ENTERPRISE_LIBRARY_DETAIL_ID);
var libraryTemp = librarys.FirstOrDefault(t => t.ID == detailTemp.ENTERPRISE_LIBRARY_ID);
depart.MineType = libraryTemp.MineType;
}
var shiftClassList = this.GetEntities<T_FM_DEPARTMENT_SCHEDULING>(s => s.DATE_TIME.Date == dtNow.Date && s.START_TIME != s.END_TIME && 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 teamInfos = this.GetEntities<T_FM_TEAM>(t => teamIds.Contains(t.ID), new BaseFilter(filter.OrgId));
var teamDepartIds = teamInfos.Select(m => m.DEPARTMENT_ID).Distinct().ToList();
var libraryNoPost = libraryDeparts.ToList();
if (libraryNoPost.Any())
{
var groups = libraryNoPost.GroupBy(t => new { t.MineType, t.CHECK_TYPE_ID, t.CHECK_CYCLE, t.CHECK_TYPE }).ToList();
if (groups != null && groups.Any())
{
foreach (var group in groups)
{
var departName = checkTypes.FirstOrDefault(t => t.ID == group.Key.CHECK_TYPE_ID)?.NAME;
var departContent = libraryNoPost.Where(t => t.MineType == group.Key.MineType && t.CHECK_TYPE_ID == group.Key.CHECK_TYPE_ID && t.CHECK_CYCLE == group.Key.CHECK_CYCLE && t.CHECK_TYPE == group.Key.CHECK_TYPE).ToList();
var contentIds = departContent.Select(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID).Distinct().ToList();
var content = libraryContents.Where(t => contentIds.Contains(t.ID)).ToList();
var departList = departs.Where(t => t.DEPARTMENT_TYPE == 10).ToList();
if (group.Key.CHECK_TYPE == SKDepartmentTypeEnum.)
{
departList = departs.Where(t => t.DEPARTMENT_TYPE == 10).ToList();
}
if (group.Key.CHECK_TYPE == SKDepartmentTypeEnum.)
{
departList = departs.Where(t => t.DEPARTMENT_TYPE == 15).ToList();
}
if (group.Key.CHECK_TYPE == SKDepartmentTypeEnum.)
{
departList = departs.Where(t => t.DEPARTMENT_TYPE == 20 && teamDepartIds.Contains(t.ID)).ToList();
}
if (group.Key.CHECK_TYPE == SKDepartmentTypeEnum.)
{
departList = departs.Where(t => t.NAME.Contains("安全环保")).ToList();
}
var departIds = departList.Select(t => t.ID).ToList();
foreach (var departId in departIds)
{
var user = users.FirstOrDefault(t => t.DEPARTMENT_ID == departId && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员"));
if (user == null)
{
user = users.FirstOrDefault(t => t.DEPARTMENT_ID == departId && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("负责人"));
}
if (user != null)
{
T_SK_SECURITY_INSPECTION_NOTICE safeNotice = new T_SK_SECURITY_INSPECTION_NOTICE();
safeNotice.ORG_ID = filter.OrgId;
safeNotice.APPLY_DEPARTMENT_ID = departId;
safeNotice.APPLY_USER_ID = user.ID;
safeNotice.MineType = group.Key.MineType;
safeNotice.CHECK_TYPE_ID = group.Key.CHECK_TYPE_ID;
safeNotice.PLANCHECKFREQUENCY = group.Key.CHECK_CYCLE;
safeNotice.DEPARTMENT_TYPE = group.Key.CHECK_TYPE;
safeNotice.STATUS = PFStandardStatus.Draft;
safeNotice.ISAUTO = true;
safeNotices.Add(safeNotice);
if (content != null && content.Any())
{
foreach (var item in content)
{
T_SK_SECURITY_INSPECTION_NOTICE_DETAIL detail = new T_SK_SECURITY_INSPECTION_NOTICE_DETAIL();
detail.ORG_ID = filter.OrgId;
detail.SECURITY_INSPECTION_NOTICE_ID = safeNotice.ID;
detail.RISK_AREA_ID = item.AREA_ID;
detail.CHECK_CONTENTS_ID = item.CHECK_CONTENTS_ID;
detail.CHECKCONTENT = item.CHECK_CONTENT;
detail.CHECKPROOF = item.CHECK_BASIC;
detail.CHECKSTANDARD = item.CHECK_STANDARD;
safeDetialNotices.Add(detail);
}
}
var notice = NotificationTaskService.InsertUserNoticeTaskModel("安全检查通知(" + departName + ")", safeNotice.ID, filter.OrgId, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum., "SK006");
notices.Add(notice);
}
}
}
}
}
//var libraryPost = libraryDeparts.Where(t => t.CHECK_TYPE == SKDepartmentTypeEnum.岗位级).ToList();
//if (libraryPost.Any())
//{
// var groups = libraryPost.GroupBy(t => new { t.MineType, t.CHECK_TYPE_ID, t.CHECK_CYCLE, t.CHECK_TYPE }).ToList();
// if (groups != null && groups.Any())
// {
// foreach (var group in groups)
// {
// var departName = checkTypes.FirstOrDefault(t => t.ID == group.Key.CHECK_TYPE_ID)?.NAME;
// var departContent = libraryNoPost.Where(t => t.MineType == group.Key.MineType && t.CHECK_TYPE_ID == group.Key.CHECK_TYPE_ID && t.CHECK_CYCLE == group.Key.CHECK_CYCLE && t.CHECK_TYPE == group.Key.CHECK_TYPE).ToList();
// var contentIds = departContent.Select(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID).Distinct().ToList();
// var content = libraryContents.Where(t => contentIds.Contains(t.ID)).ToList();
// foreach (var depart in shiftClassList)
// {
// if (depart.Nav_DepartmentSchedulingDetail != null && depart.Nav_DepartmentSchedulingDetail.Any())
// {
// var personIds = depart.Nav_DepartmentSchedulingDetail.Select(t => t.PERSON_ID).ToList();
// foreach (var personId in personIds)
// {
// var user = users.FirstOrDefault(t => t.DEPARTMENT_ID == depart.DEPARTMENT_ID && t.PERSON_ID == personId);
// if (user != null)
// {
// //触发安全检查记录表
// T_SK_SECURITY_INSPECTION_RECORD record = new T_SK_SECURITY_INSPECTION_RECORD();
// record.ORG_ID = filter.OrgId;
// record.MineType = group.Key.MineType;
// record.APPLY_DEPARTMENT_ID = depart.ID;
// record.APPLY_USER_ID = user.ID;
// record.CHECK_TYPE_ID = group.Key.CHECK_TYPE_ID;
// record.PLANCHECKFREQUENCY = group.Key.CHECK_CYCLE;
// record.DEPARTMENT_TYPE = group.Key.CHECK_TYPE;
// record.CHECK_TIME = DateTime.Now;
// record.CHECK_PERSON = user.NAME;
// record.ISAUTO = true;
// record.STATUS = PFStandardStatus.Draft;
// records.Add(record);
// if (content != null && content.Any())
// {
// foreach (var item in content)
// {
// 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 = item.AREA_ID;
// detail.CHECK_CONTENTS_ID = item.CHECK_CONTENTS_ID;
// detail.CHECKCONTENT = item.CHECK_CONTENT;
// detail.CHECKPROOF = item.CHECK_BASIC;
// detail.CHECKSTANDARD = item.CHECK_STANDARD;
// recordDetails.Add(detail);
// T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER userA = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER();
// userA.ORG_ID = filter.OrgId;
// userA.SECURITY_INSPECTION_RECORD_DETAIL_ID = detail.ID;
// userA.USER_ID = user.ID;
// recordDetailUsers.Add(userA);
// }
// }
// var notice = NotificationTaskService.InsertUserNoticeTaskModel("安全检查记录(" + departName + ")", record.ID, filter.OrgId, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "SK010");
// notices.Add(notice);
// }
// }
// }
// }
// }
// }
//}
}
}
UnifiedCommit(() =>
{
if (notices != null && notices.Any())
BantchSaveEntityNoCommit(notices);
if (safeNotices != null && safeNotices.Any())
BantchSaveEntityNoCommit(safeNotices);
if (safeDetialNotices != null && safeDetialNotices.Any())
BantchSaveEntityNoCommit(safeDetialNotices);
//if (records != null && records.Any())
// BantchSaveEntityNoCommit(records);
//if (recordDetails != null && recordDetails.Any())
// BantchSaveEntityNoCommit(recordDetails);
//if (recordDetailUsers != null && recordDetailUsers.Any())
// BantchSaveEntityNoCommit(recordDetailUsers);
});
}
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("SafeCheckNoticeRecordOld")]
public JsonActionResult<bool> SafeCheckNoticeRecordOld([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
try
{
var dtNow = DateTime.Now;
var year = dtNow.Year;
var month = dtNow.Month;
var day = dtNow.Day;
var week = dtNow.DayOfWeek;
//filter.IgnoreDataRule = false;
List<T_FM_NOTIFICATION_TASK> tasks = new List<T_FM_NOTIFICATION_TASK>();
List<T_FM_NOTIFICATION_TASK> noticeTasks = new List<T_FM_NOTIFICATION_TASK>();
List<T_SK_SECURITY_INSPECTION_RECORD> records = new List<T_SK_SECURITY_INSPECTION_RECORD>();
List<T_SK_SECURITY_INSPECTION_RECORD_FILE> recordFiles = new List<T_SK_SECURITY_INSPECTION_RECORD_FILE>();
List<T_SK_SECURITY_INSPECTION_RECORD_DETAIL> recordDetails = new List<T_SK_SECURITY_INSPECTION_RECORD_DETAIL>();
List<T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER> recordDetailUsers = new List<T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER>();
List<T_SK_SECURITY_INSPECTION_RECORD_DETAIL_BASIC> recordDetailBasics = new List<T_SK_SECURITY_INSPECTION_RECORD_DETAIL_BASIC>();
//查通知表,检查时间到期的
var checkTypes = this.GetEntities<T_SK_CHECK_TYPE>(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId));
var departs = this.GetEntities<T_FM_DEPARTMENT>(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId));
var users = this.GetEntities<T_FM_USER>(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin"), new BaseFilter(filter.OrgId));
filter.IgnoreDataRule = true;
Expression<Func<T_SK_SECURITY_INSPECTION_NOTICE, bool>> expression = i => i.IS_DELETED == false && i.CHECK_TIME != null && i.CHECK_TIME.Value.Date == DateTime.Now.Date && i.CHECK_TIME.Value.Hour == DateTime.Now.Hour;
List<T_SK_SECURITY_INSPECTION_NOTICE> notices = this.GetOrderEntities(expression, filter, new string[] { "Nav_CheckNoticeFiles", "Nav_CheckNoticeDetails.Nav_CheckNoticeDetailUsers", "Nav_CheckNoticeDetails.Nav_CheckNoticeDetailBasics" }).ToList();
var noticeExsisIds = notices.Select(t => t.ID).ToList();
Expression<Func<T_SK_SECURITY_INSPECTION_RECORD, bool>> expression2 = i => i.IS_DELETED == false && i.SECURITY_INSPECTION_NOTICE_ID != null && noticeExsisIds.Contains((Guid)i.SECURITY_INSPECTION_NOTICE_ID);
List<T_SK_SECURITY_INSPECTION_RECORD> recordExsis = this.GetOrderEntities(expression2, filter).ToList();
var recordExsisIds = recordExsis.Select(t => t.SECURITY_INSPECTION_NOTICE_ID).Distinct().ToList();
notices = notices.Where(t => !recordExsisIds.Contains(t.ID)).ToList();
if (notices != null && notices.Any())
{
foreach (var item in notices)
{
List<Guid> userIds = new List<Guid>();
var departName = checkTypes.FirstOrDefault(t => t.ID == item.CHECK_TYPE_ID)?.NAME;
//触发安全检查记录表
T_SK_SECURITY_INSPECTION_RECORD record = new T_SK_SECURITY_INSPECTION_RECORD();
record.SECURITY_INSPECTION_NOTICE_ID = item.ID;
record.ORG_ID = item.ORG_ID;
record.MineType = item.MineType;
record.APPLY_DEPARTMENT_ID = item.APPLY_DEPARTMENT_ID;
record.APPLY_USER_ID = item.APPLY_USER_ID;
record.CHECK_TYPE_ID = item.CHECK_TYPE_ID;
record.PLANCHECKFREQUENCY = item.PLANCHECKFREQUENCY;
record.DEPARTMENT_TYPE = item.DEPARTMENT_TYPE;
record.CHECK_TIME = item.CHECK_TIME;
record.CHECK_PERSON = item.CHECK_PERSON;
record.ISAUTO = true;
record.STATUS = PFStandardStatus.Draft;
records.Add(record);
if (item.Nav_CheckNoticeFiles != null && item.Nav_CheckNoticeFiles.Any())
{
foreach (var item2 in item.Nav_CheckNoticeFiles)
{
T_SK_SECURITY_INSPECTION_RECORD_FILE file = new T_SK_SECURITY_INSPECTION_RECORD_FILE();
file.ORG_ID = item2.ORG_ID;
file.SECURITY_INSPECTION_RECORD_ID = record.ID;
file.IMG_FILE_ID = item2.IMG_FILE_ID;
recordFiles.Add(file);
}
}
if (item.Nav_CheckNoticeDetails != null && item.Nav_CheckNoticeDetails.Any())
{
foreach (var item2 in item.Nav_CheckNoticeDetails)
{
T_SK_SECURITY_INSPECTION_RECORD_DETAIL detail = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL();
detail.ORG_ID = item2.ORG_ID;
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.CHECKCONTENT;
detail.CHECKPROOF = item2.CHECKPROOF;
detail.CHECKSTANDARD = item2.CHECKSTANDARD;
recordDetails.Add(detail);
if (item2.Nav_CheckNoticeDetailUsers != null && item2.Nav_CheckNoticeDetailUsers.Any())
{
foreach (var item3 in item2.Nav_CheckNoticeDetailUsers)
{
T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER user = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER();
user.ORG_ID = item3.ORG_ID;
user.SECURITY_INSPECTION_RECORD_DETAIL_ID = detail.ID;
user.USER_ID = item3.USER_ID;
recordDetailUsers.Add(user);
userIds.Add((Guid)user.USER_ID);
}
item2.Nav_CheckNoticeDetailUsers = null;
}
if (item2.Nav_CheckNoticeDetailBasics != null && item2.Nav_CheckNoticeDetailBasics.Any())
{
foreach (var item3 in item2.Nav_CheckNoticeDetailBasics)
{
T_SK_SECURITY_INSPECTION_RECORD_DETAIL_BASIC user = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL_BASIC();
user.ORG_ID = item3.ORG_ID;
user.SECURITY_INSPECTION_RECORD_DETAIL_ID = detail.ID;
user.LAW_ID = item3.LAW_ID;
recordDetailBasics.Add(user);
}
item2.Nav_CheckNoticeDetailBasics = null;
}
}
}
userIds = userIds.Distinct().ToList();
if (userIds.Any())
{
foreach (var userId in userIds)
{
var userFirst = users.FirstOrDefault(t => t.ID == userId);
if (userFirst != null)
{
var noticeTask = NotificationTaskService.InsertUserNoticeTaskModel("安全检查记录(" + departName + ")", record.ID, filter.OrgId, userFirst.ID, userFirst.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum., "SK010");
noticeTasks.Add(noticeTask);
}
}
}
item.Nav_CheckNoticeDetails = null;
item.Nav_CheckNoticeFiles = null;
}
var noticeIds = notices.Select(i => i.ID).ToList();
tasks = this.GetEntities<T_FM_NOTIFICATION_TASK>(t => noticeIds.Contains((Guid)t.SOURCE_DATA_ID) && t.NOTICE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList();
tasks.ForEach(t => t.NOTICE_STATUS = 4);
var sourceIds = tasks.Select(i => i.SOURCE_DATA_ID).ToList();
notices.Where(t => sourceIds.Contains(t.ID)).ForEach(m => m.STATUS = PFStandardStatus.Close);
notices.Where(t => !sourceIds.Contains(t.ID)).ForEach(m => m.STATUS = PFStandardStatus.Archived);
}
UnifiedCommit(() =>
{
if (notices != null && notices.Any())
BantchSaveEntityNoCommit(notices);
if (tasks != null && tasks.Any())
BantchSaveEntityNoCommit(tasks);
if (noticeTasks != null && noticeTasks.Any())
BantchSaveEntityNoCommit(noticeTasks);
if (records != null && records.Any())
BantchSaveEntityNoCommit(records);
if (recordFiles != null && recordFiles.Any())
BantchSaveEntityNoCommit(recordFiles);
if (recordDetails != null && recordDetails.Any())
BantchSaveEntityNoCommit(recordDetails);
if (recordDetailUsers != null && recordDetailUsers.Any())
BantchSaveEntityNoCommit(recordDetailUsers);
if (recordDetailBasics != null && recordDetailBasics.Any())
BantchSaveEntityNoCommit(recordDetailBasics);
});
}
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("SafeCheckNoticeRecord")]
public JsonActionResult<bool> SafeCheckNoticeRecord([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
try
{
var dtNow = DateTime.Now;
var year = dtNow.Year;
var month = dtNow.Month;
var day = dtNow.Day;
var week = dtNow.DayOfWeek;
//DateTime minTime = dt.AddMinutes(0);
//DateTime maxTime = dt.AddMinutes(60);
if (filter.Parameter1 != null)
{
dtNow = DateTime.Parse(filter.Parameter1);
}
//filter.IgnoreDataRule = false;
List<T_FM_NOTIFICATION_TASK> tasks = new List<T_FM_NOTIFICATION_TASK>();
List<T_FM_NOTIFICATION_TASK> noticeTasks = new List<T_FM_NOTIFICATION_TASK>();
List<T_SK_SECURITY_INSPECTION_RECORD> records = new List<T_SK_SECURITY_INSPECTION_RECORD>();
List<T_SK_SECURITY_INSPECTION_RECORD_FILE> recordFiles = new List<T_SK_SECURITY_INSPECTION_RECORD_FILE>();
List<T_SK_SECURITY_INSPECTION_RECORD_DETAIL> recordDetails = new List<T_SK_SECURITY_INSPECTION_RECORD_DETAIL>();
List<T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER> recordDetailUsers = new List<T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER>();
List<T_SK_SECURITY_INSPECTION_RECORD_DETAIL_BASIC> recordDetailBasics = new List<T_SK_SECURITY_INSPECTION_RECORD_DETAIL_BASIC>();
//查通知表,检查时间到期的
var checkTypes = this.GetEntities<T_SK_CHECK_TYPE>(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId));
var departs = this.GetEntities<T_FM_DEPARTMENT>(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId));
var users = this.GetEntities<T_FM_USER>(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin"), new BaseFilter(filter.OrgId));
filter.IgnoreDataRule = true;
var baseFilter = new BaseFilter(filter.GetOrgId());
baseFilter.IgnoreDataRule = true;
baseFilter.SelectField = new string[] { "ID", "MineType", "CHECK_TYPE_ID","APPLY_DEPARTMENT_ID","APPLY_USER_ID","PLANCHECKFREQUENCY","DEPARTMENT_TYPE","CHECK_TIME","CHECK_PERSON",
"Nav_CheckNoticeDetails.RISK_AREA_ID","Nav_CheckNoticeDetails.CHECK_CONTENTS_ID","Nav_CheckNoticeDetails.CHECKCONTENT","Nav_CheckNoticeDetails.CHECKPROOF","Nav_CheckNoticeDetails.CHECKSTANDARD",
"Nav_CheckNoticeFiles.IMG_FILE_ID", "Nav_CheckNoticeDetails.Nav_CheckNoticeDetailUsers.USER_ID", "Nav_CheckNoticeDetails.Nav_CheckNoticeDetailBasics.LAW_ID" }; //指定字段,包括导航属性
Expression<Func<T_SK_SECURITY_INSPECTION_NOTICE, bool>> expression = i => i.IS_DELETED == false && i.CHECK_TIME != null && i.CHECK_TIME.Value.Date == DateTime.Now.Date && i.CHECK_TIME.Value.Hour == dtNow.Hour;
List<T_SK_SECURITY_INSPECTION_NOTICE> notices = this.GetOrderEntities(expression, baseFilter).ToList();
var noticeExsisIds = notices.Select(t => t.ID).ToList();
baseFilter.SelectField = new string[] { "ID", "SECURITY_INSPECTION_NOTICE_ID" }; //指定字段,包括导航属性
Expression<Func<T_SK_SECURITY_INSPECTION_RECORD, bool>> expression2 = i => i.IS_DELETED == false && i.SECURITY_INSPECTION_NOTICE_ID != null && noticeExsisIds.Contains((Guid)i.SECURITY_INSPECTION_NOTICE_ID);
List<T_SK_SECURITY_INSPECTION_RECORD> recordExsis = this.GetOrderEntities(expression2, baseFilter).ToList();
var recordExsisIds = recordExsis.Select(t => t.SECURITY_INSPECTION_NOTICE_ID).Distinct().ToList();
notices = notices.Where(t => !recordExsisIds.Contains(t.ID)).ToList();
//排班表
//var shiftClassList = this.GetEntities<T_FM_DEPARTMENT_SCHEDULING>(s => s.DATE_TIME.Date == DateTime.Now.Date && 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();
if (notices != null && notices.Any())
{
foreach (var item in notices)
{
var departName = checkTypes.FirstOrDefault(t => t.ID == item.CHECK_TYPE_ID)?.NAME;
var userTempIds = new List<Guid>();
if (item.Nav_CheckNoticeDetails != null && item.Nav_CheckNoticeDetails.Any())
{
foreach (var detail in item.Nav_CheckNoticeDetails)
{
var tempIds = detail.Nav_CheckNoticeDetailUsers.Select(t => (Guid)t.USER_ID).ToList();
userTempIds.AddRange(tempIds);
}
userTempIds = userTempIds.Distinct().ToList();
}
if (userTempIds.Any())
{
foreach (var userItem in userTempIds)
{
//触发安全检查记录表
T_SK_SECURITY_INSPECTION_RECORD record = new T_SK_SECURITY_INSPECTION_RECORD();
record.SECURITY_INSPECTION_NOTICE_ID = item.ID;
record.ORG_ID = filter.GetOrgId();
record.MineType = item.MineType;
record.PRODUCTION_UNIT_ID = item.PRODUCTION_UNIT_ID;
record.APPLY_DEPARTMENT_ID = item.APPLY_DEPARTMENT_ID;
record.APPLY_USER_ID = item.APPLY_USER_ID;
record.CHECK_TYPE_ID = item.CHECK_TYPE_ID;
record.PLANCHECKFREQUENCY = item.PLANCHECKFREQUENCY;
record.DEPARTMENT_TYPE = item.DEPARTMENT_TYPE;
record.CHECK_TIME = item.CHECK_TIME;
record.ISAUTO = true;
record.STATUS = PFStandardStatus.Draft;
record.RECORD_USER_ID = userItem;
if (item.Nav_CheckNoticeFiles != null && item.Nav_CheckNoticeFiles.Any())
{
foreach (var item2 in item.Nav_CheckNoticeFiles)
{
T_SK_SECURITY_INSPECTION_RECORD_FILE file = new T_SK_SECURITY_INSPECTION_RECORD_FILE();
file.ORG_ID = filter.GetOrgId();
file.SECURITY_INSPECTION_RECORD_ID = record.ID;
file.IMG_FILE_ID = item2.IMG_FILE_ID;
recordFiles.Add(file);
}
}
var userIds = new List<Guid>();
var noticeDetails = item.Nav_CheckNoticeDetails?.Where(c => c.Nav_CheckNoticeDetailUsers != null && c.Nav_CheckNoticeDetailUsers.FirstOrDefault(m => m.USER_ID == userItem)?.USER_ID == userItem).OrderBy(t => t.NUM).ToList();
if (noticeDetails != null && noticeDetails.Any())
{
var i = 1;
foreach (var item2 in noticeDetails)
{
T_SK_SECURITY_INSPECTION_RECORD_DETAIL detail = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL();
detail.ORG_ID = filter.GetOrgId();
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.CHECKCONTENT;
detail.CHECKPROOF = item2.CHECKPROOF;
detail.CHECKSTANDARD = item2.CHECKSTANDARD;
detail.NUM = i;
recordDetails.Add(detail);
if (item2.Nav_CheckNoticeDetailUsers != null && item2.Nav_CheckNoticeDetailUsers.Any())
{
foreach (var item3 in item2.Nav_CheckNoticeDetailUsers)
{
T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER user = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER();
user.ORG_ID = filter.GetOrgId();
user.SECURITY_INSPECTION_RECORD_DETAIL_ID = detail.ID;
user.USER_ID = item3.USER_ID;
if (item3.USER_ID == userItem)
{
user.ISMAINCHECK = true;
}
else
{
user.ISCHECK = true;
user.CHECKTIME = DateTime.Now;
}
userIds.Add((Guid)user.USER_ID);
recordDetailUsers.Add(user);
}
//item2.Nav_CheckNoticeDetailUsers = null;
}
if (item2.Nav_CheckNoticeDetailBasics != null && item2.Nav_CheckNoticeDetailBasics.Any())
{
foreach (var item3 in item2.Nav_CheckNoticeDetailBasics)
{
T_SK_SECURITY_INSPECTION_RECORD_DETAIL_BASIC basic = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL_BASIC();
basic.ORG_ID = filter.GetOrgId();
basic.SECURITY_INSPECTION_RECORD_DETAIL_ID = detail.ID;
basic.LAW_ID = item3.LAW_ID;
recordDetailBasics.Add(basic);
}
//item2.Nav_CheckNoticeDetailBasics = null;
}
i++;
}
}
var userNames = users.Where(t => userIds.Contains(t.ID)).Select(m => m.NAME).Distinct().ToList();
record.CHECK_PERSON = string.Join(",", userNames);
records.Add(record);
var noticeTask = NotificationTaskService.InsertUserNoticeTaskModel("安全检查记录(" + departName + ")", record.ID, filter.OrgId, userItem, users.FirstOrDefault(t => t.ID == userItem)?.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum., "SK010");
noticeTasks.Add(noticeTask);
}
}
}
var noticeIds = notices.Select(i => i.ID).ToList();
tasks = this.GetEntities<T_FM_NOTIFICATION_TASK>(t => noticeIds.Contains((Guid)t.SOURCE_DATA_ID) && t.NOTICE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList();
tasks.ForEach(t => t.NOTICE_STATUS = 4);
var sourceIds = tasks.Select(i => i.SOURCE_DATA_ID).ToList();
notices.ForEach(m => {
m.Nav_CheckNoticeDetails = null;
m.Nav_CheckNoticeFiles = null;
});
notices.Where(t => sourceIds.Contains(t.ID)).ForEach(m => m.STATUS = PFStandardStatus.Close);
notices.Where(t => !sourceIds.Contains(t.ID)).ForEach(m => m.STATUS = PFStandardStatus.Archived);
}
UnifiedCommit(() =>
{
if (notices != null && notices.Any())
BantchSaveEntityNoCommit(notices);
if (tasks != null && tasks.Any())
BantchSaveEntityNoCommit(tasks);
if (noticeTasks != null && noticeTasks.Any())
BantchSaveEntityNoCommit(noticeTasks);
if (records != null && records.Any())
BantchSaveEntityNoCommit(records);
if (recordFiles != null && recordFiles.Any())
BantchSaveEntityNoCommit(recordFiles);
if (recordDetails != null && recordDetails.Any())
BantchSaveEntityNoCommit(recordDetails);
if (recordDetailUsers != null && recordDetailUsers.Any())
BantchSaveEntityNoCommit(recordDetailUsers);
if (recordDetailBasics != null && recordDetailBasics.Any())
BantchSaveEntityNoCommit(recordDetailBasics);
});
}
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>
/// 安全检查记录检查时间第二天12点未处理的自动转为已办
/// </summary>
/// <param name="pageFilter"></param>
/// <returns></returns>
[HttpPost, Route("CloseSafeCheckRecord")]
public JsonActionResult<bool> CloseSafeCheckRecord([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
try
{
var dtNow = DateTime.Now;
var year = dtNow.Year;
var month = dtNow.Month;
var day = dtNow.Day;
var week = dtNow.DayOfWeek;
filter.IgnoreDataRule = true;
//查记录表检查时间第二天12点自动转为已办
List<T_FM_NOTIFICATION_TASK> tasks = new List<T_FM_NOTIFICATION_TASK>();
var baseFilter = new BaseFilter(filter.GetOrgId());
baseFilter.IgnoreDataRule = true;
baseFilter.SelectField = new string[] { "ID", "MineType", "CHECK_TYPE_ID","APPLY_DEPARTMENT_ID","APPLY_USER_ID","PLANCHECKFREQUENCY","DEPARTMENT_TYPE","CHECK_TIME","CHECK_PERSON",
"SECURITY_INSPECTION_NOTICE_ID","STATUS","TYPE_ID", "Nav_CheckRecordDetails.SECURITY_INSPECTION_RECORD_ID","Nav_CheckRecordDetails.CHECK_RESULT","Nav_CheckRecordDetails.CHECK_QUESTION_ID",
"Nav_CheckRecordDetails.HIDDEN_DESCRIPTION","Nav_CheckRecordDetails.HIDDEN_LEVEL","Nav_CheckRecordDetails.HIDDEN_PLACE","Nav_CheckRecordDetails.MARK",
"Nav_CheckRecordDetails.RISK_AREA_ID","Nav_CheckRecordDetails.CHECK_CONTENTS_ID","Nav_CheckRecordDetails.CHECKCONTENT","Nav_CheckRecordDetails.CHECKPROOF","Nav_CheckRecordDetails.CHECKSTANDARD",
"Nav_CheckRecordFiles.IMG_FILE_ID","Nav_CheckRecordFiles.SECURITY_INSPECTION_RECORD_ID","Nav_CheckRecordDetails.Nav_CheckRecordDetailFiles.IMG_FILE_ID",
"Nav_CheckRecordDetails.Nav_CheckRecordDetailFiles.SECURITY_INSPECTION_RECORD_DETAIL_ID","Nav_CheckRecordDetails.Nav_CheckRecordDetailUsers.USER_ID",
"Nav_CheckRecordDetails.Nav_CheckRecordDetailUsers.ISMAINCHECK","Nav_CheckRecordDetails.Nav_CheckRecordDetailUsers.CHECKTIME","Nav_CheckRecordDetails.Nav_CheckRecordDetailUsers.ISCHECK",
"Nav_CheckRecordDetails.Nav_CheckRecordDetailUsers.SECURITY_INSPECTION_RECORD_DETAIL_ID","Nav_CheckRecordDetails.Nav_CheckRecordDetailBasics.SECURITY_INSPECTION_RECORD_DETAIL_ID",
"Nav_CheckRecordDetails.Nav_CheckRecordDetailBasics.LAW_ID" }; //指定字段,包括导航属性
var records = GetEntities<T_SK_SECURITY_INSPECTION_RECORD>(i => i.CHECK_TIME.Value.AddDays(1).Date == DateTime.Now.Date && DateTime.Now.Hour == 12, baseFilter).ToList();
if (records != null && records.Any())
{
var noticeIds = records.Select(i => i.ID).ToList();
tasks = this.GetEntities<T_FM_NOTIFICATION_TASK>(t => noticeIds.Contains((Guid)t.SOURCE_DATA_ID) && t.NOTICE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList();
tasks.ForEach(t => t.NOTICE_STATUS = 4);
var sourceIds = tasks.Select(i => i.SOURCE_DATA_ID).ToList();
records.Where(t => sourceIds.Contains(t.ID)).ForEach(m => m.STATUS = PFStandardStatus.Close);
records.Where(t => !sourceIds.Contains(t.ID)).ForEach(m => m.STATUS = PFStandardStatus.Archived);
}
UnifiedCommit(() =>
{
if (records != null && records.Any())
BantchSaveEntityNoCommit(records);
if (tasks != null && tasks.Any())
BantchSaveEntityNoCommit(tasks);
});
}
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("RiskEvaluationPlan")]
public JsonActionResult<bool> RiskEvaluationPlan([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
try
{
var dtNow = DateTime.Now;
var year = dtNow.Year;
var month = dtNow.Month;
var day = dtNow.Day;
var week = dtNow.DayOfWeek;
List<SKPLANCHECKFREQUENCYEnum> setList = new List<SKPLANCHECKFREQUENCYEnum>();
//查配置表,有配才执行
var timeSets = GetEntities<T_SK_TIME_SET>(i => i.SET_TYPE == SKSetTypeEnum.RiskEvaluationPlan && i.ENABLE_STATUS == 0 && i.RUNSETTIME.Value.Hour == DateTime.Now.Hour, new BaseFilter(filter.OrgId)).ToList();
if (timeSets != null && timeSets.Any())
{
foreach (var set in timeSets)
{
switch (set.PLANCHECKFREQUENCY)
{
case SKPLANCHECKFREQUENCYEnum.Year:
if (set.MONTH == month && set.DATA == day)
{
setList.Add(SKPLANCHECKFREQUENCYEnum.Year);
}
break;
case SKPLANCHECKFREQUENCYEnum.HalfYear:
if ((set.MONTH == month && set.DATA == day) || ((set.MONTH + 6) == month && (set.DATA + 183) == day))
{
setList.Add(SKPLANCHECKFREQUENCYEnum.HalfYear);
}
break;
case SKPLANCHECKFREQUENCYEnum.Date:
setList.Add(SKPLANCHECKFREQUENCYEnum.Date);
break;
//case SKPLANCHECKFREQUENCYEnum.Class:
// setList.Add(SKPLANCHECKFREQUENCYEnum.Class);
// break;
case SKPLANCHECKFREQUENCYEnum.Week:
if (set.WEEKDATA != null && (int)set.WEEKDATA.Value == (int)week)
{
setList.Add(SKPLANCHECKFREQUENCYEnum.Week);
}
break;
case SKPLANCHECKFREQUENCYEnum.Month:
if (set.DATA == day)
{
setList.Add(SKPLANCHECKFREQUENCYEnum.Month);
}
break;
case SKPLANCHECKFREQUENCYEnum.Quarter:
if (set.MONTH == 1)
{
if ((month == 1 || month == 4 || month == 7 || month == 10) && set.DATA == day)
{
setList.Add(SKPLANCHECKFREQUENCYEnum.Quarter);
}
}
if (set.MONTH == 2)
{
if ((month == 2 || month == 5 || month == 8 || month == 11) && set.DATA == day)
{
setList.Add(SKPLANCHECKFREQUENCYEnum.Quarter);
}
}
if (set.MONTH == 3)
{
if ((month == 3 || month == 6 || month == 9 || month == 12) && set.DATA == day)
{
setList.Add(SKPLANCHECKFREQUENCYEnum.Quarter);
}
}
break;
default:
break;
}
}
}
List<T_FM_DEPARTMENT> deppartList = new List<T_FM_DEPARTMENT>();
List<T_FM_NOTIFICATION_TASK> notices = new List<T_FM_NOTIFICATION_TASK>();
List<T_SK_IDENTIFY_EVALUATION_PLAN> plans = new List<T_SK_IDENTIFY_EVALUATION_PLAN>();
List<T_SK_IDENTIFY_EVALUATION_PLAN_DETAIL> planDetails = new List<T_SK_IDENTIFY_EVALUATION_PLAN_DETAIL>();
List<T_SK_IDENTIFY_EVALUATION_PLAN_DETAIL_USER> planDetailUsers = new List<T_SK_IDENTIFY_EVALUATION_PLAN_DETAIL_USER>();
var userInfos = this.GetEntities<T_FM_USER>(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin"), new BaseFilter(filter.OrgId), "Nav_ApproveRole");
var userInfo = userInfos.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部安全员");
if (userInfo == null)
{
userInfo = userInfos.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部负责人");
}
if (userInfo != null)
{
DateTime dtEnd = NotificationTaskService.GetTaskEndTime(FMTASKTYPE.JobSite, filter.OrgId.Value, DateTime.Now, null, null);
if (setList != null && setList.Any())
{
var departMentTemps = this.GetEntities<T_FM_DEPARTMENT>(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList();
var topDepart = departMentTemps.FirstOrDefault(t => t.PARENT_ID == null);
//deppartList.Add(topDepart);
var departMents = GetSons(departMentTemps, topDepart.ID).OrderBy(t => t.PARENT_ID).ThenBy(t => t.NUM);
var comDeparts = departMents.Where(t => t.DEPARTMENT_TYPE == 5).ToList();
deppartList.AddRange(comDeparts);
var bmDeparts = departMents.Where(t => t.DEPARTMENT_TYPE == 10).ToList();
foreach (var bm in bmDeparts)
{
deppartList.Add(bm);
var cjDepart = departMents.Where(t => t.PARENT_ID == bm.ID).OrderBy(t => t.NUM).ToList();
if (cjDepart.Any())
{
foreach (var cj in cjDepart)
{
deppartList.Add(cj);
var bzDepart = departMents.Where(t => t.PARENT_ID == cj.ID).OrderBy(t => t.NUM).ToList();
if (bzDepart.Any())
{
deppartList.AddRange(bzDepart);
}
}
}
}
foreach (var set in setList)
{
T_SK_IDENTIFY_EVALUATION_PLAN plan = new T_SK_IDENTIFY_EVALUATION_PLAN();
plan.ORG_ID = filter.OrgId;
plan.APPLY_DEPARTMENT_ID = userInfo.DEPARTMENT_ID;
plan.APPLY_USER_ID = userInfo.ID;
plan.YEAR = DateTime.Now.Year.ToString();
plan.START_DATE = DateTime.Now;
//plan.END_DATE = dtEnd;
plan.ISAUTO = true;
plans.Add(plan);
if (deppartList.Any())
{
int i = 1;
foreach (var item in deppartList)
{
var userFirst = userInfos.FirstOrDefault(t => t.DEPARTMENT_ID == item.ID);
if (userFirst != null)
{
T_SK_IDENTIFY_EVALUATION_PLAN_DETAIL detail = new T_SK_IDENTIFY_EVALUATION_PLAN_DETAIL();
detail.ORG_ID = filter.OrgId;
detail.IDENTIFY_EVALUATION_PLAN_ID = plan.ID;
detail.DEPARTMENT_ID = item.ID;
detail.NUM = i;
var users = userInfos.Where(t => t.DEPARTMENT_ID == item.ID).ToList();
if (users.Any())
{
var userNames = users.Select(t => t.NAME).ToList();
detail.USERS = string.Join(",", userNames);
foreach (var item2 in users)
{
T_SK_IDENTIFY_EVALUATION_PLAN_DETAIL_USER user = new T_SK_IDENTIFY_EVALUATION_PLAN_DETAIL_USER();
user.ORG_ID = filter.OrgId;
user.USER_ID = item2.ID;
user.IDENTIFY_EVALUATION_PLAN_DETAIL_ID = detail.ID;
planDetailUsers.Add(user);
}
}
planDetails.Add(detail);
i++;
}
}
}
var noticeTask = NotificationTaskService.InsertUserNoticeTaskModel("安全风险辨识与评估计划(" + DateTime.Now.ToShortDateString().Replace("/", "") + ")", plan.ID, filter.OrgId, userInfo.ID, userInfo.NAME, DateTime.Now, dtEnd, (int)FMNoticeTypeEnum., "SK031");
notices.Add(noticeTask);
}
}
}
UnifiedCommit(() =>
{
if (notices != null && notices.Any())
BantchSaveEntityNoCommit(notices);
if (plans != null && plans.Any())
BantchSaveEntityNoCommit(plans);
if (planDetails != null && planDetails.Any())
BantchSaveEntityNoCommit(planDetails);
if (planDetailUsers != null && planDetailUsers.Any())
BantchSaveEntityNoCommit(planDetailUsers);
});
}
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;
});
}
public List<T_FM_DEPARTMENT> GetSons(List<T_FM_DEPARTMENT> list, Guid Fid)
{
var query = list.Where(p => p.ID == Fid).OrderBy(t => t.NUM).ToList();
var list2 = query.Concat(GetSonList(list, Fid)).ToList();
return list2;
}
public List<T_FM_DEPARTMENT> GetSonList(List<T_FM_DEPARTMENT> list, Guid Fid)
{
var query = list.Where(p => p.PARENT_ID == Fid).OrderBy(t => t.NUM).ToList();
return query.ToList().Concat(query.ToList().SelectMany(t => GetSonList(list, t.ID))).ToList();
}
/// <summary>
/// 补触发安全风险辨识表
/// </summary>
/// <param name="pageFilter"></param>
/// <returns></returns>
[HttpPost, Route("RiskEvaluationAdd")]
public JsonActionResult<bool> RiskEvaluationAdd([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
try
{
var dtNow = DateTime.Now;
var year = dtNow.Year;
var month = dtNow.Month;
var day = dtNow.Day;
var week = dtNow.DayOfWeek;
List<T_FM_NOTIFICATION_TASK> notices = new List<T_FM_NOTIFICATION_TASK>();
List<T_SK_RISK_IDENTIFY> identitys = new List<T_SK_RISK_IDENTIFY>();
List<T_SK_RISK_IDENTIFY_FILE> files = new List<T_SK_RISK_IDENTIFY_FILE>();
List<T_SK_RISK_IDENTIFY_DETAIL> details = new List<T_SK_RISK_IDENTIFY_DETAIL>();
var plan = this.GetEntity<T_SK_IDENTIFY_EVALUATION_PLAN>(t => t.STATUS == PFStandardStatus.Archived, "Nav_Details.Nav_DetailUsers");
filter.IgnoreDataRule = true;
Expression<Func<T_SK_RISK_IDENTIFY, bool>> expression = t => t.IDENTIFY_EVALUATION_PLAN_ID == plan.ID;
List<T_SK_RISK_IDENTIFY> oldidentitys = this.GetOrderEntities(expression, filter).ToList();
var applyUserIds = oldidentitys.Select(t => t.APPLY_USER_ID).Distinct().ToList();
//var plans = this.GetEntities<T_SK_IDENTIFY_EVALUATION_PLAN>(t => t.ISSEND == false && t.START_DATE.Value.Date == dtNow.Date && t.STATUS == PFStandardStatus.Archived, new BaseFilter(filter.OrgId), "Nav_Details.Nav_DetailUsers");
if (plan != null)
{
var libraryPosts = this.GetEntities<T_SK_ENTERPRISE_LIBRARY_POST>(t => !t.IS_DELETED, new BaseFilter(filter.OrgId));
var libraryPostDetails = this.GetEntities<T_SK_ENTERPRISE_LIBRARY_POST_DETAIL>(t => !t.IS_DELETED, new BaseFilter(filter.OrgId));
var librarys = this.GetEntities<T_SK_ENTERPRISE_LIBRARY>(t => !t.IS_DELETED && t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId));
var detailss = this.GetEntities<T_SK_ENTERPRISE_LIBRARY_DETAIL>(t => !t.IS_DELETED, new BaseFilter(filter.OrgId));
var users = this.GetEntities<T_FM_USER>(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin"), new BaseFilter(filter.OrgId), "Nav_Person");
var departs = this.GetEntities<T_FM_DEPARTMENT>(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId));
//var shiftClassList = this.GetEntities<T_FM_DEPARTMENT_SCHEDULING>(s => s.DATE_TIME.Date == dtNow.Date && s.START_TIME != s.END_TIME && s.START_TIME != s.END_TIME && s.Nav_Team.ENABLE_STATUS == 0 && s.TEAM_ID != null, new BaseFilter(filter.OrgId)).ToList();
//var schedulingIds = shiftClassList.Select(t => t.ID).ToList();
//var shiftClassDetailList = this.GetEntities<T_FM_DEPARTMENT_SCHEDULING_DETAIL>(s => schedulingIds.Contains(s.DEPARTMENT_SCHEDULING_ID), new BaseFilter(filter.OrgId)).ToList();
//var personIds = shiftClassDetailList.Select(t => t.PERSON_ID).Distinct().ToList();
//var teamIds = shiftClassList.Select(t => t.TEAM_ID).Distinct().ToList();
//var teamInfos = this.GetEntities<T_FM_TEAM>(t => teamIds.Contains(t.ID), new BaseFilter(filter.OrgId));
//var teamDepartIds = teamInfos.Select(m => m.DEPARTMENT_ID).Distinct().ToList();
var requre = this.GetEntity<T_SK_REQUEST>(t => !t.IS_DELETED);
if (plan != null && plan.Nav_Details != null && plan.Nav_Details.Any())
{
foreach (var item in plan.Nav_Details)
{
if (item.Nav_DetailUsers != null && item.Nav_DetailUsers.Any())
{
foreach (var item2 in item.Nav_DetailUsers)
{
var user = users.FirstOrDefault(t => t.ID == item2.USER_ID && !applyUserIds.Contains(item2.USER_ID));
if (user != null)
{
T_SK_RISK_IDENTIFY ide = new T_SK_RISK_IDENTIFY();
ide.ORG_ID = user.ORG_ID;
ide.IDENTIFY_EVALUATION_PLAN_ID = plan.ID;
ide.APPLY_DEPARTMENT_ID = item.DEPARTMENT_ID;
ide.APPLY_USER_ID = user.ID;
ide.YEAR = DateTime.Now.Year.ToString();
ide.ISAUTO = true;
ide.CONTENTS = plan.CONTENTS;
ide.START_DATE = plan.START_DATE;
ide.END_DATE = plan.END_DATE;
ide.REQUIRE_ID = requre?.ID;
identitys.Add(ide);
if (user.Nav_Person != null)
{
var postDetailIds = libraryPostDetails.Where(t => t.POST_ID == user.Nav_Person.POST_ID).Select(m => m.ENTERPRISE_LIBRARY_POST_ID).Distinct().ToList();
var posts = libraryPosts.Where(t => postDetailIds.Contains(t.ID) && t.DEPARTMENT_ID == user.DEPARTMENT_ID).ToList();
if (posts != null && posts.Any())
{
var libraryIdss = posts.Select(t => t.ENTERPRISE_LIBRARY_ID).Distinct().ToList();
var libraryss = librarys.Where(t => libraryIdss.Contains(t.ID)).OrderBy(t => t.NUM).ToList();
if (libraryss.Any())
{
foreach (var library in libraryss)
{
T_SK_RISK_IDENTIFY_DETAIL ideDetail = new T_SK_RISK_IDENTIFY_DETAIL();
ideDetail.ORG_ID = filter.OrgId;
ideDetail.RISK_IDENTIFY_ID = ide.ID;
ideDetail.PRODUCTION_UNIT_ID = library?.PRODUCTION_UNIT_ID;
ideDetail.MineType = library == null ? SKProductionUnit.Mine : library.MineType;
ideDetail.AREA_ID = library?.AREA_ID;
ideDetail.RISK_DESCRIPTION = library?.RISK_DESCRIPTION;
ideDetail.TYPE_ID = library?.TYPE_ID;
ideDetail.RISK_NAME = library?.RISK_NAME;
ideDetail.RISK_NAME_ID = library?.RISK_NAME_ID;
ideDetail.EMERGENCY = library?.EMERGENCY;
var detailList = detailss.Where(t => t.ENTERPRISE_LIBRARY_ID == library.ID).OrderBy(t => t.NUM).ToList();
if (detailList.Any())
{
var measuresTemp = detailList.Select(t => t.MEASURES_NAME).Distinct().ToList();
if (measuresTemp.Any())
{
if (measuresTemp.Count == 1)
{
ideDetail.MEASURE = measuresTemp.FirstOrDefault();
}
else
{
var i = 1;
foreach (var ite in measuresTemp)
{
var temp2 = i + "、" + ite;
if (i == 1)
{
ideDetail.MEASURE = temp2;
}
else
{
ideDetail.MEASURE = ideDetail.MEASURE + Environment.NewLine + temp2;
}
i++;
}
}
}
//var emergencysTemp = detailList.Select(t => t.EMERGENCY).Distinct().ToList();
//if (emergencysTemp.Any())
//{
// var i = 1;
// foreach (var ite in emergencysTemp)
// {
// var temp2 = i == 1 ? i + "、" + ite + "" : i + "、" + ite + "";
// ideDetail.EMERGENCY = ideDetail.EMERGENCY + temp2;
// i++;
// }
//}
}
details.Add(ideDetail);
}
}
}
}
var endtime = plan.END_DATE != null ? (DateTime)plan.END_DATE : DateTime.Now.AddDays(1);
var noticeTask = NotificationTaskService.InsertUserNoticeTaskModel("安全风险辨识表(" + DateTime.Now.ToShortDateString().Replace("/", "") + ")", ide.ID, filter.OrgId, user.ID, user.NAME, DateTime.Now, endtime, (int)FMNoticeTypeEnum., "SK033");
notices.Add(noticeTask);
}
}
}
}
}
}
UnifiedCommit(() =>
{
if (notices != null && notices.Any())
BantchSaveEntityNoCommit(notices);
if (identitys != null && identitys.Any())
BantchSaveEntityNoCommit(identitys);
if (files != null && files.Any())
BantchSaveEntityNoCommit(files);
if (details != null && details.Any())
BantchSaveEntityNoCommit(details);
});
}
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("RiskEvaluation")]
public JsonActionResult<bool> RiskEvaluation([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
try
{
var dtNow = DateTime.Now;
var year = dtNow.Year;
var month = dtNow.Month;
var day = dtNow.Day;
var week = dtNow.DayOfWeek;
List<T_FM_NOTIFICATION_TASK> notices = new List<T_FM_NOTIFICATION_TASK>();
List<T_SK_RISK_IDENTIFY> identitys = new List<T_SK_RISK_IDENTIFY>();
List<T_SK_RISK_IDENTIFY_FILE> files = new List<T_SK_RISK_IDENTIFY_FILE>();
List<T_SK_RISK_IDENTIFY_DETAIL> details = new List<T_SK_RISK_IDENTIFY_DETAIL>();
filter.IgnoreDataRule = true;
Expression<Func<T_SK_IDENTIFY_EVALUATION_PLAN, bool>> expression = t => t.IS_DELETED == false && t.ISSEND == false && t.START_DATE.Value.Date == dtNow.Date && t.STATUS == PFStandardStatus.Archived;
List<T_SK_IDENTIFY_EVALUATION_PLAN> plans = this.GetOrderEntities(expression, filter, new string[] { "Nav_Details.Nav_DetailUsers" }).ToList();
//var plans = this.GetEntities<T_SK_IDENTIFY_EVALUATION_PLAN>(t => t.ISSEND == false && t.START_DATE.Value.Date == dtNow.Date && t.STATUS == PFStandardStatus.Archived, new BaseFilter(filter.OrgId), "Nav_Details.Nav_DetailUsers");
if (plans != null && plans.Any())
{
var libraryPosts = this.GetEntities<T_SK_ENTERPRISE_LIBRARY_POST>(t => !t.IS_DELETED, new BaseFilter(filter.OrgId));
var libraryPostDetails = this.GetEntities<T_SK_ENTERPRISE_LIBRARY_POST_DETAIL>(t => !t.IS_DELETED, new BaseFilter(filter.OrgId));
var librarys = this.GetEntities<T_SK_ENTERPRISE_LIBRARY>(t => !t.IS_DELETED && t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId));
var detailss = this.GetEntities<T_SK_ENTERPRISE_LIBRARY_DETAIL>(t => !t.IS_DELETED, new BaseFilter(filter.OrgId));
var users = this.GetEntities<T_FM_USER>(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin"), new BaseFilter(filter.OrgId), "Nav_Person");
var departs = this.GetEntities<T_FM_DEPARTMENT>(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId));
//var shiftClassList = this.GetEntities<T_FM_DEPARTMENT_SCHEDULING>(s => s.DATE_TIME.Date == dtNow.Date && s.START_TIME != s.END_TIME && s.START_TIME != s.END_TIME && s.Nav_Team.ENABLE_STATUS == 0 && s.TEAM_ID != null, new BaseFilter(filter.OrgId)).ToList();
//var schedulingIds = shiftClassList.Select(t => t.ID).ToList();
//var shiftClassDetailList = this.GetEntities<T_FM_DEPARTMENT_SCHEDULING_DETAIL>(s => schedulingIds.Contains(s.DEPARTMENT_SCHEDULING_ID), new BaseFilter(filter.OrgId)).ToList();
//var personIds = shiftClassDetailList.Select(t => t.PERSON_ID).Distinct().ToList();
//var teamIds = shiftClassList.Select(t => t.TEAM_ID).Distinct().ToList();
//var teamInfos = this.GetEntities<T_FM_TEAM>(t => teamIds.Contains(t.ID), new BaseFilter(filter.OrgId));
//var teamDepartIds = teamInfos.Select(m => m.DEPARTMENT_ID).Distinct().ToList();
var requre = this.GetEntity<T_SK_REQUEST>(t => !t.IS_DELETED);
foreach (var plan in plans)
{
if (plan != null && plan.Nav_Details != null && plan.Nav_Details.Any())
{
foreach (var item in plan.Nav_Details)
{
if (item.Nav_DetailUsers != null && item.Nav_DetailUsers.Any())
{
foreach (var item2 in item.Nav_DetailUsers)
{
var user = users.FirstOrDefault(t => t.ID == item2.USER_ID);
if (user != null)
{
//var userDepart = departs.FirstOrDefault(t => t.ID == user.DEPARTMENT_ID);
//if (userDepart.DEPARTMENT_TYPE == 2)
//{
// //if (teamDepartIds.Contains(user.DEPARTMENT_ID) && personIds.Contains((Guid)user.PERSON_ID))
// {
// T_SK_RISK_IDENTIFY ide = new T_SK_RISK_IDENTIFY();
// ide.ORG_ID = user.ORG_ID;
// ide.IDENTIFY_EVALUATION_PLAN_ID = plan.ID;
// ide.APPLY_DEPARTMENT_ID = item.DEPARTMENT_ID;
// ide.APPLY_USER_ID = user.ID;
// ide.YEAR = DateTime.Now.Year.ToString();
// ide.ISAUTO = true;
// ide.CONTENTS = plan.CONTENTS;
// ide.START_DATE = plan.START_DATE;
// ide.END_DATE = plan.END_DATE;
// ide.REQUIRE_ID = requre?.ID;
// identitys.Add(ide);
// if (user.Nav_Person != null)
// {
// var postDetailIds = libraryPostDetails.Where(t => t.POST_ID == user.Nav_Person.POST_ID).Select(m => m.ENTERPRISE_LIBRARY_POST_ID).Distinct().ToList();
// var posts = libraryPosts.Where(t => postDetailIds.Contains(t.ID) && t.DEPARTMENT_ID == user.DEPARTMENT_ID).ToList();
// if (posts != null && posts.Any())
// {
// var libraryIdss = posts.Select(t => t.ENTERPRISE_LIBRARY_ID).Distinct().ToList();
// var libraryss = librarys.Where(t => libraryIdss.Contains(t.ID)).OrderBy(t => t.NUM).ToList();
// if (libraryss.Any())
// {
// foreach (var library in libraryss)
// {
// T_SK_RISK_IDENTIFY_DETAIL ideDetail = new T_SK_RISK_IDENTIFY_DETAIL();
// ideDetail.ORG_ID = filter.OrgId;
// ideDetail.RISK_IDENTIFY_ID = ide.ID;
// ideDetail.MineType = library == null ? SKProductionUnit.Mine : library.MineType;
// ideDetail.AREA_ID = library?.AREA_ID;
// ideDetail.RISK_NAME = library?.RISK_NAME;
// ideDetail.RISK_NAME_ID = library?.RISK_NAME_ID;
// ideDetail.RISK_DESCRIPTION = library?.RISK_DESCRIPTION;
// ideDetail.TYPE_ID = library?.TYPE_ID;
// ideDetail.EMERGENCY = library?.EMERGENCY;
// var detailList = detailss.Where(t => t.ENTERPRISE_LIBRARY_ID == library.ID).OrderBy(t => t.NUM).ToList();
// if (detailList.Any())
// {
// var measuresTemp = detailList.Select(t => t.MEASURES_NAME).Distinct().ToList();
// if (measuresTemp.Any())
// {
// if (measuresTemp.Count == 1)
// {
// ideDetail.MEASURE = measuresTemp.FirstOrDefault();
// }
// else
// {
// var i = 1;
// foreach (var ite in measuresTemp)
// {
// var temp2 = i + "、" + ite + "";
// ideDetail.MEASURE = ideDetail.MEASURE + Environment.NewLine + temp2;
// i++;
// }
// }
// }
// //var emergencysTemp = detailList.Select(t => t.EMERGENCY).Distinct().ToList();
// //if (emergencysTemp.Any())
// //{
// // var i = 1;
// // foreach (var ite in emergencysTemp)
// // {
// // var temp2 = i == 1 ? i + "、" + ite + "" : i + "、" + ite + "";
// // ideDetail.EMERGENCY = ideDetail.EMERGENCY + temp2;
// // i++;
// // }
// //}
// }
// details.Add(ideDetail);
// }
// }
// }
// }
// var endtime = plan.END_DATE != null ? (DateTime)plan.END_DATE : DateTime.Now.AddDays(1);
// var noticeTask = NotificationTaskService.InsertUserNoticeTaskModel("安全风险辨识表(" + DateTime.Now.ToShortDateString().Replace("/", "") + ")", ide.ID, filter.OrgId, user.ID, user.NAME, DateTime.Now, endtime, (int)FMNoticeTypeEnum.消息, "SK033");
// notices.Add(noticeTask);
// }
//}
//else
//{
T_SK_RISK_IDENTIFY ide = new T_SK_RISK_IDENTIFY();
ide.ORG_ID = user.ORG_ID;
ide.IDENTIFY_EVALUATION_PLAN_ID = plan.ID;
ide.APPLY_DEPARTMENT_ID = item.DEPARTMENT_ID;
ide.APPLY_USER_ID = user.ID;
ide.YEAR = DateTime.Now.Year.ToString();
ide.ISAUTO = true;
ide.CONTENTS = plan.CONTENTS;
ide.START_DATE = plan.START_DATE;
ide.END_DATE = plan.END_DATE;
ide.REQUIRE_ID = requre?.ID;
identitys.Add(ide);
if (user.Nav_Person != null)
{
var postDetailIds = libraryPostDetails.Where(t => t.POST_ID == user.Nav_Person.POST_ID).Select(m => m.ENTERPRISE_LIBRARY_POST_ID).Distinct().ToList();
var posts = libraryPosts.Where(t => postDetailIds.Contains(t.ID) && t.DEPARTMENT_ID == user.DEPARTMENT_ID).ToList();
if (posts != null && posts.Any())
{
var libraryIdss = posts.Select(t => t.ENTERPRISE_LIBRARY_ID).Distinct().ToList();
var libraryss = librarys.Where(t => libraryIdss.Contains(t.ID)).OrderBy(t => t.NUM).ToList();
if (libraryss.Any())
{
foreach (var library in libraryss)
{
T_SK_RISK_IDENTIFY_DETAIL ideDetail = new T_SK_RISK_IDENTIFY_DETAIL();
ideDetail.ORG_ID = filter.OrgId;
ideDetail.RISK_IDENTIFY_ID = ide.ID;
ideDetail.PRODUCTION_UNIT_ID = library?.PRODUCTION_UNIT_ID;
ideDetail.MineType = library == null ? SKProductionUnit.Mine : library.MineType;
ideDetail.AREA_ID = library?.AREA_ID;
ideDetail.RISK_DESCRIPTION = library?.RISK_DESCRIPTION;
ideDetail.TYPE_ID = library?.TYPE_ID;
ideDetail.RISK_NAME = library?.RISK_NAME;
ideDetail.RISK_NAME_ID = library?.RISK_NAME_ID;
ideDetail.EMERGENCY = library?.EMERGENCY;
var detailList = detailss.Where(t => t.ENTERPRISE_LIBRARY_ID == library.ID).OrderBy(t => t.NUM).ToList();
if (detailList.Any())
{
var measuresTemp = detailList.Select(t => t.MEASURES_NAME).Distinct().ToList();
if (measuresTemp.Any())
{
if (measuresTemp.Count == 1)
{
ideDetail.MEASURE = measuresTemp.FirstOrDefault();
}
else
{
var i = 1;
foreach (var ite in measuresTemp)
{
var temp2 = i + "、" + ite;
if (i == 1)
{
ideDetail.MEASURE = temp2;
}
else
{
ideDetail.MEASURE = ideDetail.MEASURE + Environment.NewLine + temp2;
}
i++;
}
}
}
//var emergencysTemp = detailList.Select(t => t.EMERGENCY).Distinct().ToList();
//if (emergencysTemp.Any())
//{
// var i = 1;
// foreach (var ite in emergencysTemp)
// {
// var temp2 = i == 1 ? i + "、" + ite + "" : i + "、" + ite + "";
// ideDetail.EMERGENCY = ideDetail.EMERGENCY + temp2;
// i++;
// }
//}
}
details.Add(ideDetail);
}
}
}
}
var endtime = plan.END_DATE != null ? (DateTime)plan.END_DATE : DateTime.Now.AddDays(1);
var noticeTask = NotificationTaskService.InsertUserNoticeTaskModel("安全风险辨识表(" + DateTime.Now.ToShortDateString().Replace("/", "") + ")", ide.ID, filter.OrgId, user.ID, user.NAME, DateTime.Now, endtime, (int)FMNoticeTypeEnum., "SK033");
notices.Add(noticeTask);
//}
}
}
}
}
plan.ISSEND = true;
}
}
}
UnifiedCommit(() =>
{
if (plans != null && plans.Any())
BantchSaveEntityNoCommit(plans);
if (notices != null && notices.Any())
BantchSaveEntityNoCommit(notices);
if (identitys != null && identitys.Any())
BantchSaveEntityNoCommit(identitys);
if (files != null && files.Any())
BantchSaveEntityNoCommit(files);
if (details != null && details.Any())
BantchSaveEntityNoCommit(details);
});
}
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("CloseRiskIdentify")]
public JsonActionResult<bool> CloseRiskIdentify([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
try
{
var dtNow = DateTime.Now;
var year = dtNow.Year;
var month = dtNow.Month;
var day = dtNow.Day;
var week = dtNow.DayOfWeek;
filter.IgnoreDataRule = true;
List<T_FM_NOTIFICATION_TASK> notices = new List<T_FM_NOTIFICATION_TASK>();
List<T_FM_NOTIFICATION_TASK> tasks = new List<T_FM_NOTIFICATION_TASK>();
//List<T_SK_IDENTIFY_EVALUATION_PLAN> plans = new List<T_SK_IDENTIFY_EVALUATION_PLAN>();
List<T_SK_RISK_IDENTIFY> identitys = new List<T_SK_RISK_IDENTIFY>();
List<T_SK_RISK_IDENTIFY_RESULT> results = new List<T_SK_RISK_IDENTIFY_RESULT>();
List<T_SK_RISK_IDENTIFY_RESULT_DETAIL> resultDetails = new List<T_SK_RISK_IDENTIFY_RESULT_DETAIL>();
var requre = this.GetEntity<T_SK_REQUEST>(t => !t.IS_DELETED);
var users = this.GetEntities<T_FM_USER>(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin"), new BaseFilter(filter.OrgId), "Nav_ApproveRole", "Nav_Person");
var departs = this.GetEntities<T_FM_DEPARTMENT>(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId));
var userPosts = this.GetEntities<T_FM_USER_POST>(t => !t.IS_DELETED, new BaseFilter(filter.OrgId));
var baseFilter = new BaseFilter(filter.GetOrgId());
baseFilter.IgnoreDataRule = true;
baseFilter.SelectField = new string[] { "ID" }; //指定字段,包括导航属性
Expression<Func<T_SK_IDENTIFY_EVALUATION_PLAN, bool>> expression = i => i.END_DATE.Value.Date == DateTime.Now.Date && i.STATUS == PFStandardStatus.Archived;
List<T_SK_IDENTIFY_EVALUATION_PLAN> planTemps = this.GetOrderEntities(expression, baseFilter).ToList();
var planIds = planTemps.Select(t => t.ID).ToList();
var newFilter = new BaseFilter(filter.GetOrgId());
newFilter.IgnoreDataRule = true;
Expression<Func<T_SK_RISK_IDENTIFY_RESULT, bool>> expressionTemp = i => planIds.Contains((Guid)i.IDENTIFY_EVALUATION_PLAN_ID);
List<T_SK_RISK_IDENTIFY_RESULT> identityResults = this.GetOrderEntities(expressionTemp, newFilter).ToList();
Expression<Func<T_SK_RISK_IDENTIFY, bool>> newexpression = i => planIds.Contains((Guid)i.IDENTIFY_EVALUATION_PLAN_ID);
List<T_SK_RISK_IDENTIFY> identityTemps = this.GetOrderEntities(newexpression, newFilter).ToList();
identitys = identityTemps.Where(t => t.STATUS != PFStandardStatus.Archived && t.STATUS != PFStandardStatus.Close).ToList();
var identityPlanIds = identitys.Select(t => t.IDENTIFY_EVALUATION_PLAN_ID).Distinct().ToList();
//plans = planTemps.Where(t => identityPlanIds.Contains(t.ID)).ToList();
var identityIds = identitys.Select(i => i.ID).ToList();
tasks = this.GetEntities<T_FM_NOTIFICATION_TASK>(t => identityIds.Contains((Guid)t.SOURCE_DATA_ID) && t.NOTICE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList();
var identityTempIds = identityTemps.Select(t => t.ID).ToList();
var details = GetEntities<T_SK_RISK_IDENTIFY_DETAIL>(i => identityTempIds.Contains(i.RISK_IDENTIFY_ID), new BaseFilter(filter.OrgId)).ToList();
if (planIds != null && planIds.Any() && dtNow.Hour <= 20)//&& dtNow.Hour >= 16
{
//plans.ForEach(t => t.STATUS = PFStandardStatus.Close);
identitys.ForEach(m => m.STATUS = PFStandardStatus.Close);
identitys.ForEach(m => m.END_DATE = DateTime.Now);
tasks.ForEach(t => t.NOTICE_STATUS = 4);
tasks.ForEach(t => t.SOURCE_FORMCODE = "SK033_SHOWPRINT");
foreach (var plan in planIds)
{
var ides = identityTemps.Where(t => t.IDENTIFY_EVALUATION_PLAN_ID == plan).ToList();
if (ides.Any())
{
//找出所有职能部门
var departListIds = new List<Guid>();
//公司默认职能部门
var company = departs.FirstOrDefault(t => t.PARENT_ID == null);
departListIds.Add(company.ID);
var tempids = departs.Where(t => t.DEPARTMENT_STATUS == 0).Select(m => m.ID).ToList();
departListIds.AddRange(tempids);
//职能口统一汇总给安环部安全员
if (departListIds.Any())
{
var user = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安环部安全员"));
if (user == null)
{
user = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安环部负责人"));
}
if (user != null)
{
//判断是否已触发过
var exsisRecird = identityResults.FirstOrDefault(t => t.IDENTIFY_EVALUATION_PLAN_ID == plan && t.APPLY_DEPARTMENT_ID == user.DEPARTMENT_ID && t.APPLY_USER_ID == user.ID && t.ISCOMPANY == SKIsStoreEnum.Yes);
if (exsisRecird == null)
{
var ideIds = ides.Where(m => departListIds.Contains((Guid)m.APPLY_DEPARTMENT_ID)).Select(t => t.ID).ToList();
var deTemp = ides.FirstOrDefault(t => departListIds.Contains((Guid)t.APPLY_DEPARTMENT_ID));
T_SK_RISK_IDENTIFY_RESULT result = new T_SK_RISK_IDENTIFY_RESULT();
result.ORG_ID = filter.OrgId;
result.APPLY_DEPARTMENT_ID = user?.DEPARTMENT_ID;
result.APPLY_USER_ID = user.ID;
result.IDENTIFY_ID = deTemp.ID;
result.IDENTIFY_EVALUATION_PLAN_ID = plan;
result.YEAR = DateTime.Now.Year.ToString();
result.ISAUTO = true;
result.ISCOMPANY = SKIsStoreEnum.Yes;
result.CONTENTS = deTemp.CONTENTS;
result.START_DATE = DateTime.Now;
result.END_DATE = DateTime.Now;
result.REQUIRE_ID = requre?.ID;
results.Add(result);
var list = details.Where(t => ideIds.Contains(t.RISK_IDENTIFY_ID)).ToList();
//汇总去重
var detailListYes = list.Where(m => m.ENABLE_STATUS == SKEnableStatusEnum.Yes).GroupBy(m => new { m.AREA_ID, m.MineType,m.PRODUCTION_UNIT_ID, m.RISK_NAME, m.RISK_NAME_ID, m.RISK_DESCRIPTION, m.TYPE_ID }).ToList();
var detailListNo = list.Where(m => m.ENABLE_STATUS == SKEnableStatusEnum.No).GroupBy(m => new { m.AREA_ID, m.MineType, m.PRODUCTION_UNIT_ID, m.RISK_NAME, m.RISK_NAME_ID, m.RISK_DESCRIPTION, m.TYPE_ID }).ToList();
detailListYes.AddRange(detailListNo);
if (detailListYes.Any())
{
foreach (var item in detailListYes)
{
var temp = list.Where(m =>m.PRODUCTION_UNIT_ID == item.Key.PRODUCTION_UNIT_ID && m.AREA_ID == item.Key.AREA_ID && m.MineType == item.Key.MineType && m.RISK_NAME == item.Key.RISK_NAME && m.RISK_NAME_ID == item.Key.RISK_NAME_ID && m.RISK_DESCRIPTION == item.Key.RISK_DESCRIPTION && m.TYPE_ID == item.Key.TYPE_ID).ToList();
//只取有效的部门岗位
var tempYes = temp.FirstOrDefault(t => t.ENABLE_STATUS == SKEnableStatusEnum.Yes);
var identifyIds = temp.Where(m => m.ENABLE_STATUS == 0).Select(t => t.RISK_IDENTIFY_ID).ToList();
var departIdss = identityTemps.Where(t => identifyIds.Contains(t.ID)).Select(m => m.APPLY_DEPARTMENT_ID).Distinct().ToList();
var userIdss = identityTemps.Where(t => identifyIds.Contains(t.ID)).Select(m => m.APPLY_USER_ID).Distinct().ToList();
T_SK_RISK_IDENTIFY_RESULT_DETAIL ideDetail = new T_SK_RISK_IDENTIFY_RESULT_DETAIL();
ideDetail.ORG_ID = filter.OrgId;
ideDetail.RISK_IDENTIFY_RESULT_ID = result.ID;
ideDetail.PRODUCTION_UNIT_ID = item.Key.PRODUCTION_UNIT_ID;
ideDetail.MineType = item.Key.MineType;
ideDetail.AREA_ID = item.Key.AREA_ID;
ideDetail.RISK_NAME = item.Key.RISK_NAME;
ideDetail.RISK_NAME_ID = item.Key.RISK_NAME_ID;
ideDetail.RISK_DESCRIPTION = item.Key.RISK_DESCRIPTION;
ideDetail.TYPE_ID = item.Key.TYPE_ID;
ideDetail.MEASURE = tempYes != null ? tempYes.MEASURE : temp[0]?.MEASURE;
ideDetail.EMERGENCY = tempYes != null ? tempYes.EMERGENCY : temp[0]?.EMERGENCY;
ideDetail.ENABLE_STATUS = tempYes != null ? tempYes.ENABLE_STATUS : temp[0].ENABLE_STATUS;
if (departIdss.Any())
{
var departTemps = departs.Where(t => departIdss.Contains(t.ID)).Select(m => m.DEPARTMENT_TYPE).Distinct().ToList();
if (departTemps.Any())
{
var i = 1;
foreach (var ite in departTemps)
{
var departType = "公司级";
if (ite == 0)
{
departType = "部门级";
}
if (ite == 1)
{
departType = "车间级";
}
if (ite == 2)
{
departType = "班组级";
}
var temp2 = i == 1 ? i + "、" + departType + "" : i + "、" + departType + "";
ideDetail.DEPARTMENT_TYPE = ideDetail.DEPARTMENT_TYPE + temp2;
var deTemps = departs.Where(t => departIdss.Contains(t.ID) && t.DEPARTMENT_TYPE == ite).Select(m => m.NAME).ToList();
var deTempIds = departs.Where(t => departIdss.Contains(t.ID) && t.DEPARTMENT_TYPE == ite).Select(m => m.ID).ToList();
var temp3 = i == 1 ? i + "、" + string.Join(",", deTemps) + "" : i + "、" + string.Join(",", deTemps) + "";
ideDetail.IDENTIFY_DEPARTMENT = ideDetail.IDENTIFY_DEPARTMENT + temp3;
var postIdss = users.Where(t => t.DEPARTMENT_ID != null && deTempIds.Contains((Guid)t.DEPARTMENT_ID) && userIdss.Contains(t.ID) && t.Nav_Person != null).ToList();
var postIds = postIdss.Where(t => t.Nav_Person != null && t.Nav_Person.POST_ID != null).Select(m => m.Nav_Person.POST_ID).ToList();
var postTemps = userPosts.Where(t => postIds.Contains(t.ID)).Select(m => m.NAME).ToList();
if (postTemps.Any())
{
var tempPosts = string.Join("", postTemps);
var temp4 = i == 1 ? i + "、" + tempPosts + "" : i + "、" + tempPosts + "";
ideDetail.IDENTIFY_POST = ideDetail.IDENTIFY_POST + temp4;
//ideDetail.IDENTIFY_POST = string.Join(";", postTemps);
}
i++;
}
//ideDetail.IDENTIFY_DEPARTMENT = string.Join(";", departTemps);
}
//if (postTemps.Any())
//{
// var i = 1;
// foreach (var ite in postTemps)
// {
// var temp2 = i == 1 ? i + "、" + ite + "" : i + "、" + ite + "";
// ideDetail.IDENTIFY_POST = ideDetail.IDENTIFY_POST + temp2;
// i++;
// }
// //ideDetail.IDENTIFY_POST = string.Join(";", postTemps);
//}
}
resultDetails.Add(ideDetail);
}
}
var notice = NotificationTaskService.InsertUserNoticeTaskModel("安全风险辨识结果表(职能口)", result.ID, filter.OrgId, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum., "SK035");
notices.Add(notice);
}
}
}
//非职能口
var departIds = ides.Where(m => !departListIds.Contains((Guid)m.APPLY_DEPARTMENT_ID)).Select(t => t.APPLY_DEPARTMENT_ID).Distinct().ToList();
if (departIds.Any())
{
//部门级给部门安全员
var departClass = departs.Where(t => departIds.Contains(t.ID) && (t.DEPARTMENT_TYPE == 10 || t.DEPARTMENT_TYPE == 5)).ToList();
if (departClass.Any())
{
var tempIds = departClass.Select(t => t.ID).ToList();
if (tempIds.Any())
{
//循环每个部门
foreach (var de in tempIds)
{
var user = users.FirstOrDefault(t => t.DEPARTMENT_ID == de && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员"));
if (user == null)
{
user = users.FirstOrDefault(t => t.DEPARTMENT_ID == de && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("负责人"));
}
if (user != null)
{
//判断是否已触发过
var exsisRecird = identityResults.FirstOrDefault(t => t.IDENTIFY_EVALUATION_PLAN_ID == plan && t.APPLY_DEPARTMENT_ID == user.DEPARTMENT_ID && t.APPLY_USER_ID == user.ID && t.ISCOMPANY == SKIsStoreEnum.No);
if (exsisRecird == null)
{
var deTemp = ides.FirstOrDefault(t => t.APPLY_DEPARTMENT_ID == de);
T_SK_RISK_IDENTIFY_RESULT result = new T_SK_RISK_IDENTIFY_RESULT();
result.ORG_ID = filter.OrgId;
result.APPLY_DEPARTMENT_ID = user?.DEPARTMENT_ID;
result.APPLY_USER_ID = user.ID;
result.IDENTIFY_ID = deTemp.ID;
result.IDENTIFY_EVALUATION_PLAN_ID = plan;
result.YEAR = DateTime.Now.Year.ToString();
result.ISAUTO = true;
result.ISCOMPANY = SKIsStoreEnum.No;
result.CONTENTS = deTemp.CONTENTS;
result.START_DATE = DateTime.Now;
result.END_DATE = DateTime.Now;
result.REQUIRE_ID = requre?.ID;
results.Add(result);
//只汇总部门级所有人的明细
var ideIds = ides.Where(m => m.APPLY_DEPARTMENT_ID == de).Select(t => t.ID).ToList();
var list = details.Where(t => ideIds.Contains(t.RISK_IDENTIFY_ID)).ToList();
//汇总去重
var detailListYes = list.Where(m => m.ENABLE_STATUS == SKEnableStatusEnum.Yes).GroupBy(m => new { m.AREA_ID, m.MineType,m.PRODUCTION_UNIT_ID, m.RISK_NAME, m.RISK_NAME_ID, m.RISK_DESCRIPTION, m.TYPE_ID }).ToList();
var detailListNo = list.Where(m => m.ENABLE_STATUS == SKEnableStatusEnum.No).GroupBy(m => new { m.AREA_ID, m.MineType, m.PRODUCTION_UNIT_ID, m.RISK_NAME, m.RISK_NAME_ID, m.RISK_DESCRIPTION, m.TYPE_ID }).ToList();
detailListYes.AddRange(detailListNo);
if (detailListYes.Any())
{
foreach (var item in detailListYes)
{
var temp = list.Where(m => m.PRODUCTION_UNIT_ID == item.Key.PRODUCTION_UNIT_ID && m.AREA_ID == item.Key.AREA_ID && m.MineType == item.Key.MineType && m.RISK_NAME == item.Key.RISK_NAME && m.RISK_NAME_ID == item.Key.RISK_NAME_ID && m.RISK_DESCRIPTION == item.Key.RISK_DESCRIPTION && m.TYPE_ID == item.Key.TYPE_ID).ToList();
//只取有效的部门岗位
var tempYes = temp.FirstOrDefault(t => t.ENABLE_STATUS == SKEnableStatusEnum.Yes);
var identifyIds = temp.Where(m => m.ENABLE_STATUS == 0).Select(t => t.RISK_IDENTIFY_ID).ToList();
var departIdss = identityTemps.Where(t => identifyIds.Contains(t.ID)).Select(m => m.APPLY_DEPARTMENT_ID).Distinct().ToList();
var userIdss = identityTemps.Where(t => identifyIds.Contains(t.ID)).Select(m => m.APPLY_USER_ID).Distinct().ToList();
T_SK_RISK_IDENTIFY_RESULT_DETAIL ideDetail = new T_SK_RISK_IDENTIFY_RESULT_DETAIL();
ideDetail.ORG_ID = filter.OrgId;
ideDetail.RISK_IDENTIFY_RESULT_ID = result.ID;
ideDetail.MineType = item.Key.MineType;
ideDetail.PRODUCTION_UNIT_ID = item.Key.PRODUCTION_UNIT_ID;
ideDetail.AREA_ID = item.Key.AREA_ID;
ideDetail.RISK_NAME = item.Key.RISK_NAME;
ideDetail.RISK_NAME_ID = item.Key.RISK_NAME_ID;
ideDetail.RISK_DESCRIPTION = item.Key.RISK_DESCRIPTION;
ideDetail.TYPE_ID = item.Key.TYPE_ID;
ideDetail.MEASURE = tempYes != null ? tempYes.MEASURE : temp[0]?.MEASURE;
ideDetail.EMERGENCY = tempYes != null ? tempYes.EMERGENCY : temp[0]?.EMERGENCY;
ideDetail.ENABLE_STATUS = tempYes != null ? tempYes.ENABLE_STATUS : temp[0].ENABLE_STATUS;
//ideDetail.DEPARTMENT_TYPE = "岗位级";
if (departIdss.Any())
{
var departTemps = departs.Where(t => departIdss.Contains(t.ID)).Select(m => m.DEPARTMENT_TYPE).Distinct().ToList();
if (departTemps.Any())
{
var i = 1;
foreach (var ite in departTemps)
{
var departType = "公司级";
if (ite == 0)
{
departType = "部门级";
}
if (ite == 1)
{
departType = "车间级";
}
if (ite == 2)
{
departType = "班组级";
}
var temp2 = i == 1 ? i + "、" + departType + "" : i + "、" + departType + "";
ideDetail.DEPARTMENT_TYPE = ideDetail.DEPARTMENT_TYPE + temp2;
var deTemps = departs.Where(t => departIdss.Contains(t.ID) && t.DEPARTMENT_TYPE == ite).Select(m => m.NAME).ToList();
var deTempIds = departs.Where(t => departIdss.Contains(t.ID) && t.DEPARTMENT_TYPE == ite).Select(m => m.ID).ToList();
var temp3 = i == 1 ? i + "、" + string.Join(",", deTemps) + "" : i + "、" + string.Join(",", deTemps) + "";
ideDetail.IDENTIFY_DEPARTMENT = ideDetail.IDENTIFY_DEPARTMENT + temp3;
var postIdss = users.Where(t => t.DEPARTMENT_ID != null && deTempIds.Contains((Guid)t.DEPARTMENT_ID) && userIdss.Contains(t.ID) && t.Nav_Person != null).ToList();
var postIds = postIdss.Where(t => t.Nav_Person != null && t.Nav_Person.POST_ID != null).Select(m => m.Nav_Person.POST_ID).ToList();
var postTemps = userPosts.Where(t => postIds.Contains(t.ID)).Select(m => m.NAME).ToList();
if (postTemps.Any())
{
var tempPosts = string.Join("", postTemps);
var temp4 = i == 1 ? i + "、" + tempPosts + "" : i + "、" + tempPosts + "";
ideDetail.IDENTIFY_POST = ideDetail.IDENTIFY_POST + temp4;
//ideDetail.IDENTIFY_POST = string.Join(";", postTemps);
}
i++;
}
//ideDetail.IDENTIFY_DEPARTMENT = string.Join(";", departTemps);
}
//if (postTemps.Any())
//{
// var i = 1;
// foreach (var ite in postTemps)
// {
// var temp2 = i == 1 ? i + "、" + ite + "" : i + "、" + ite + "";
// ideDetail.IDENTIFY_POST = ideDetail.IDENTIFY_POST + temp2;
// i++;
// }
// //ideDetail.IDENTIFY_POST = string.Join(";", postTemps);
//}
}
resultDetails.Add(ideDetail);
}
}
var param = departs.FirstOrDefault(t => t.ID == de)?.NAME;
if (string.IsNullOrEmpty(param))
{
param = "部门级";
}
var notice = NotificationTaskService.InsertUserNoticeTaskModel("安全风险辨识结果表(" + param + ")", result.ID, filter.OrgId, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum., "SK035");
notices.Add(notice);
}
}
}
}
}
//车间级和班组级汇总给车间安全员
var shopClass = departs.Where(t => departIds.Contains(t.ID) && t.DEPARTMENT_TYPE == 15).ToList();
if (shopClass.Any())
{
var tempIds = shopClass.Select(t => t.ID).ToList();
var classTempInfos = departs.Where(t => t.PARENT_ID != null && tempIds.Contains((Guid)t.PARENT_ID) && t.DEPARTMENT_TYPE == 20).ToList();
if (tempIds.Any())
{
//每个车间汇总班组和车间
foreach (var de in tempIds)
{
var user = users.FirstOrDefault(t => t.DEPARTMENT_ID == de && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员"));
if (user == null)
{
user = users.FirstOrDefault(t => t.DEPARTMENT_ID == de && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("负责人"));
}
if (user != null)
{
//判断是否已触发过
var exsisRecird = identityResults.FirstOrDefault(t => t.IDENTIFY_EVALUATION_PLAN_ID == plan && t.APPLY_DEPARTMENT_ID == user.DEPARTMENT_ID && t.APPLY_USER_ID == user.ID && t.ISCOMPANY == SKIsStoreEnum.No);
if (exsisRecird == null)
{
var classIds = classTempInfos.Where(t => t.PARENT_ID == de).Select(t => t.ID).ToList();
//departListIds.AddRange(classIds);
var deTemp = ides.FirstOrDefault(t => t.APPLY_DEPARTMENT_ID == de);
T_SK_RISK_IDENTIFY_RESULT result = new T_SK_RISK_IDENTIFY_RESULT();
result.ORG_ID = filter.OrgId;
result.APPLY_DEPARTMENT_ID = user?.DEPARTMENT_ID;
result.APPLY_USER_ID = user.ID;
result.IDENTIFY_ID = deTemp.ID;
result.IDENTIFY_EVALUATION_PLAN_ID = plan;
result.YEAR = DateTime.Now.Year.ToString();
result.ISAUTO = true;
result.ISCOMPANY = SKIsStoreEnum.No;
result.CONTENTS = deTemp.CONTENTS;
result.START_DATE = DateTime.Now;
result.END_DATE = DateTime.Now;
result.REQUIRE_ID = requre?.ID;
results.Add(result);
var ideIds = ides.Where(m => m.APPLY_DEPARTMENT_ID == de || classIds.Contains((Guid)m.APPLY_DEPARTMENT_ID)).Select(t => t.ID).ToList();
var list = details.Where(t => ideIds.Contains(t.RISK_IDENTIFY_ID)).ToList();
//汇总去重
var detailListYes = list.Where(m => m.ENABLE_STATUS == SKEnableStatusEnum.Yes).GroupBy(m => new { m.AREA_ID, m.MineType,m.PRODUCTION_UNIT_ID, m.RISK_NAME, m.RISK_NAME_ID, m.RISK_DESCRIPTION, m.TYPE_ID }).ToList();
var detailListNo = list.Where(m => m.ENABLE_STATUS == SKEnableStatusEnum.No).GroupBy(m => new { m.AREA_ID, m.MineType,m.PRODUCTION_UNIT_ID, m.RISK_NAME, m.RISK_NAME_ID, m.RISK_DESCRIPTION, m.TYPE_ID }).ToList();
detailListYes.AddRange(detailListNo);
if (detailListYes.Any())
{
foreach (var item in detailListYes)
{
var temp = list.Where(m => m.PRODUCTION_UNIT_ID == item.Key.PRODUCTION_UNIT_ID && m.AREA_ID == item.Key.AREA_ID && m.MineType == item.Key.MineType && m.RISK_NAME == item.Key.RISK_NAME && m.RISK_NAME_ID == item.Key.RISK_NAME_ID && m.RISK_DESCRIPTION == item.Key.RISK_DESCRIPTION && m.TYPE_ID == item.Key.TYPE_ID).ToList();
//只取有效的部门岗位
var tempYes = temp.FirstOrDefault(t => t.ENABLE_STATUS == SKEnableStatusEnum.Yes);
var identifyIds = temp.Where(m => m.ENABLE_STATUS == 0).Select(t => t.RISK_IDENTIFY_ID).ToList();
var departIdss = identityTemps.Where(t => identifyIds.Contains(t.ID)).Select(m => m.APPLY_DEPARTMENT_ID).Distinct().ToList();
var userIdss = identityTemps.Where(t => identifyIds.Contains(t.ID)).Select(m => m.APPLY_USER_ID).Distinct().ToList();
T_SK_RISK_IDENTIFY_RESULT_DETAIL ideDetail = new T_SK_RISK_IDENTIFY_RESULT_DETAIL();
ideDetail.ORG_ID = filter.OrgId;
ideDetail.RISK_IDENTIFY_RESULT_ID = result.ID;
ideDetail.PRODUCTION_UNIT_ID = item.Key.PRODUCTION_UNIT_ID;
ideDetail.MineType = item.Key.MineType;
ideDetail.AREA_ID = item.Key.AREA_ID;
ideDetail.RISK_NAME = item.Key.RISK_NAME;
ideDetail.RISK_NAME_ID = item.Key.RISK_NAME_ID;
ideDetail.RISK_DESCRIPTION = item.Key.RISK_DESCRIPTION;
ideDetail.TYPE_ID = item.Key.TYPE_ID;
ideDetail.MEASURE = tempYes != null ? tempYes.MEASURE : temp[0]?.MEASURE;
ideDetail.EMERGENCY = tempYes != null ? tempYes.EMERGENCY : temp[0]?.EMERGENCY;
ideDetail.ENABLE_STATUS = tempYes != null ? tempYes.ENABLE_STATUS : temp[0].ENABLE_STATUS;
//ideDetail.DEPARTMENT_TYPE = "岗位级";
if (departIdss.Any())
{
var departTemps = departs.Where(t => departIdss.Contains(t.ID)).Select(m => m.DEPARTMENT_TYPE).Distinct().ToList();
if (departTemps.Any())
{
var i = 1;
foreach (var ite in departTemps)
{
var departType = "公司级";
if (ite == 0)
{
departType = "部门级";
}
if (ite == 1)
{
departType = "车间级";
}
if (ite == 2)
{
departType = "班组级";
}
var temp2 = i == 1 ? i + "、" + departType + "" : i + "、" + departType + "";
ideDetail.DEPARTMENT_TYPE = ideDetail.DEPARTMENT_TYPE + temp2;
var deTemps = departs.Where(t => departIdss.Contains(t.ID) && t.DEPARTMENT_TYPE == ite).Select(m => m.NAME).ToList();
var deTempIds = departs.Where(t => departIdss.Contains(t.ID) && t.DEPARTMENT_TYPE == ite).Select(m => m.ID).ToList();
var temp3 = i == 1 ? i + "、" + string.Join(",", deTemps) + "" : i + "、" + string.Join(",", deTemps) + "";
ideDetail.IDENTIFY_DEPARTMENT = ideDetail.IDENTIFY_DEPARTMENT + temp3;
var postIdss = users.Where(t => t.DEPARTMENT_ID != null && deTempIds.Contains((Guid)t.DEPARTMENT_ID) && userIdss.Contains(t.ID) && t.Nav_Person != null).ToList();
var postIds = postIdss.Where(t => t.Nav_Person != null && t.Nav_Person.POST_ID != null).Select(m => m.Nav_Person.POST_ID).ToList();
var postTemps = userPosts.Where(t => postIds.Contains(t.ID)).Select(m => m.NAME).ToList();
if (postTemps.Any())
{
var tempPosts = string.Join("", postTemps);
var temp4 = i == 1 ? i + "、" + tempPosts + "" : i + "、" + tempPosts + "";
ideDetail.IDENTIFY_POST = ideDetail.IDENTIFY_POST + temp4;
//ideDetail.IDENTIFY_POST = string.Join(";", postTemps);
}
i++;
}
}
//if (postTemps.Any())
//{
// var i = 1;
// foreach (var ite in postTemps)
// {
// var temp2 = i == 1 ? i + "、" + ite + "" : i + "、" + ite + "";
// ideDetail.IDENTIFY_POST = ideDetail.IDENTIFY_POST + temp2;
// i++;
// }
//}
}
resultDetails.Add(ideDetail);
}
}
var param = departs.FirstOrDefault(t => t.ID == de)?.NAME;
if (string.IsNullOrEmpty(param))
{
param = "车间级";
}
var notice = NotificationTaskService.InsertUserNoticeTaskModel("安全风险辨识结果表(" + param + ")", result.ID, filter.OrgId, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum., "SK035");
notices.Add(notice);
}
}
}
}
}
}
}
}
}
UnifiedCommit(() =>
{
//if (plans != null && plans.Any())
// BantchSaveEntityNoCommit(plans);
if (identitys != null && identitys.Any())
BantchSaveEntityNoCommit(identitys);
if (tasks != null && tasks.Any())
BantchSaveEntityNoCommit(tasks);
if (notices != null && notices.Any())
BantchSaveEntityNoCommit(notices);
if (results != null && results.Any())
BantchSaveEntityNoCommit(results);
if (resultDetails != null && resultDetails.Any())
BantchSaveEntityNoCommit(resultDetails);
});
}
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("LibrarySync")]
public JsonActionResult<bool> LibrarySync([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
try
{
List<T_SK_ENTERPRISE_LIBRARY_DEPART> ldeparts = new List<T_SK_ENTERPRISE_LIBRARY_DEPART>();
List<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART> contentDeparts = new List<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART>();
List<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST> contentPosts = new List<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST>();
var contentBS = GetEntities<T_SK_CHECK_CONTENTS>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
var checkTypes = GetEntities<T_SK_CHECK_TYPE>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
var posts = GetEntities<T_FM_USER_POST>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
var users = GetEntities<T_FM_USER>(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_Person", "Nav_ApproveRole").ToList();
var departs = GetEntities<T_FM_DEPARTMENT>(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList();
var imports = GetEntities<T_SK_LIBRARY_IMPORT_TEMP>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
var librarys = GetEntities<T_SK_ENTERPRISE_LIBRARY>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
var libraryIds = librarys.Select(i => i.ID).ToList();
var libraryDetails = GetEntities<T_SK_ENTERPRISE_LIBRARY_DETAIL>(i => i.IS_DELETED == false && libraryIds.Contains(i.ENTERPRISE_LIBRARY_ID), new BaseFilter(filter.OrgId)).ToList();
var detailIds = libraryDetails.Select(i => i.ID).ToList();
var libraryContents = GetEntities<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT>(i => i.IS_DELETED == false && detailIds.Contains(i.ENTERPRISE_LIBRARY_DETAIL_ID), new BaseFilter(filter.OrgId)).ToList();
if (librarys != null && librarys.Any())
{
foreach (var library in librarys)
{
if (library.EVALUATE_LEVEL == SKEvaluateLevelEnum.)
{
library.DEPARTMENT_TYPE = "3,0,1,2";
}
if (library.EVALUATE_LEVEL == SKEvaluateLevelEnum.)
{
library.DEPARTMENT_TYPE = "0,1,2";
}
if (library.EVALUATE_LEVEL == SKEvaluateLevelEnum.)
{
library.DEPARTMENT_TYPE = "1,2";
}
if (library.EVALUATE_LEVEL == SKEvaluateLevelEnum.)
{
library.DEPARTMENT_TYPE = "2";
}
var tempPosts = imports.Where(t => t.MineType == library.MINE_NAME && t.AREA_NAME == library.AREA_NAME && t.TYPE_NAME == library.TYPE_NAME && t.RISK_NAME == library.RISK_NAME && t.RISK_DESCRIPTION == library.RISK_DESCRIPTION).ToList();
if (tempPosts.Any())
{
//foreach (var de in tempPosts)
//{
// var checkCycle = SKPLANCHECKFREQUENCYEnum.None;
// if (!string.IsNullOrEmpty(de.CHECK_CYCLE))
// {
// switch (de.CHECK_CYCLE)
// {
// case "每日":
// checkCycle = SKPLANCHECKFREQUENCYEnum.Date; break;
// case "每周":
// checkCycle = SKPLANCHECKFREQUENCYEnum.Week; break;
// case "每月":
// checkCycle = SKPLANCHECKFREQUENCYEnum.Month; break;
// case "每季度":
// checkCycle = SKPLANCHECKFREQUENCYEnum.Quarter; break;
// case "每班":
// checkCycle = SKPLANCHECKFREQUENCYEnum.Class; break;
// default:
// checkCycle = SKPLANCHECKFREQUENCYEnum.None; break;
// break;
// }
// }
// if (!string.IsNullOrEmpty(de.CHECK_DEPARTMENT) && !string.IsNullOrEmpty(de.CHECK_LEVEL))
// {
// var departList = de.CHECK_DEPARTMENT.Split('').ToList();
// var depart = departs.Where(t => departList.Contains(t.NAME)).ToList();
// if (depart.Any())
// {
// foreach (var deTemp in depart)
// {
// if (deTemp != null)
// {
// T_SK_ENTERPRISE_LIBRARY_DEPART dep = new T_SK_ENTERPRISE_LIBRARY_DEPART();
// dep.ORG_ID = filter.OrgId;
// dep.ENTERPRISE_LIBRARY_ID = library.ID;
// dep.DEPARTMENT_ID = deTemp.ID;
// dep.DEPARTMENT_TYPE = de.CHECK_LEVEL == "岗位级" ? SKDepartmentTypeEnum.岗位级 : (SKDepartmentTypeEnum)deTemp.DEPARTMENT_TYPE;
// dep.USER_ID = deTemp.USER_ID;
// ldeparts.Add(dep);
// }
// }
// }
// }
//}
var measureTemps = libraryDetails.Where(t => t.ENTERPRISE_LIBRARY_ID == library.ID).ToList();
if (measureTemps.Any())
{
foreach (var temp in measureTemps)
{
var contentTemps = libraryContents.Where(t => t.ENTERPRISE_LIBRARY_DETAIL_ID == temp.ID).ToList();
if (contentTemps.Any())
{
foreach (var ctemp in contentTemps)
{
var contentDepartTemps = tempPosts.Where(t => t.MEASURES_NAME == temp.MEASURES_NAME && t.CHECK_CONTENT == ctemp.CHECK_CONTENT).ToList();
if (contentDepartTemps.Any())
{
foreach (var de in contentDepartTemps)
{
var checkCycle = SKPLANCHECKFREQUENCYEnum.Date;
if (!string.IsNullOrEmpty(de.CHECK_CYCLE))
{
switch (de.CHECK_CYCLE)
{
case "每日":
checkCycle = SKPLANCHECKFREQUENCYEnum.Date; break;
case "每周":
checkCycle = SKPLANCHECKFREQUENCYEnum.Week; break;
case "每月":
checkCycle = SKPLANCHECKFREQUENCYEnum.Month; break;
case "每季度":
checkCycle = SKPLANCHECKFREQUENCYEnum.Quarter; break;
case "每班":
checkCycle = SKPLANCHECKFREQUENCYEnum.Date; break;
default:
checkCycle = SKPLANCHECKFREQUENCYEnum.Date; break;
break;
}
}
if (!string.IsNullOrEmpty(de.CHECK_DEPARTMENT) && !string.IsNullOrEmpty(de.CHECK_LEVEL))
{
var departList = de.CHECK_DEPARTMENT.Split('').ToList();
var depart = departs.Where(t => departList.Contains(t.NAME)).ToList();
if (depart.Any())
{
int j = 1;
foreach (var deTemp in depart)
{
if (deTemp != null)
{
T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART dep = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART();
dep.ORG_ID = filter.OrgId;
dep.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID = ctemp.ID;
dep.DEPARTMENT_ID = deTemp.ID;
dep.CHECK_TYPE = de.CHECK_LEVEL == "岗位级" ? SKDepartmentTypeEnum. : (SKDepartmentTypeEnum)deTemp.DEPARTMENT_TYPE;
dep.CHECK_CYCLE = checkCycle;
dep.CHECK_TYPE_ID = checkTypes.FirstOrDefault(t => t.NAME == de.CHECK_TYPE)?.ID;
dep.NUM = j;
if (dep.CHECK_TYPE == SKDepartmentTypeEnum.)
{
var userTemp = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部安全员");
if (userTemp != null)
{
T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST post = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST();
post.ORG_ID = filter.OrgId;
post.ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART_ID = dep.ID;
post.POST_ID = userTemp.Nav_Person?.POST_ID;
contentPosts.Add(post);
}
}
if (dep.CHECK_TYPE == SKDepartmentTypeEnum. || dep.CHECK_TYPE == SKDepartmentTypeEnum. || dep.CHECK_TYPE == SKDepartmentTypeEnum.)
{
var userTemp = users.FirstOrDefault(t => t.DEPARTMENT_ID == deTemp.ID && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员"));
if (userTemp == null)
{
userTemp = users.FirstOrDefault(t => t.DEPARTMENT_ID == deTemp.ID && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("负责人"));
}
if (userTemp != null)
{
T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST post = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST();
post.ORG_ID = filter.OrgId;
post.ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART_ID = dep.ID;
post.POST_ID = userTemp.Nav_Person?.POST_ID;
contentPosts.Add(post);
}
}
if (dep.CHECK_TYPE == SKDepartmentTypeEnum. && !string.IsNullOrEmpty(de.CHECK_POST))
{
var postLists = de.CHECK_POST.Split('').ToList();
var postIds = posts.Where(t => postLists.Contains(t.NAME)).Select(t => t.ID).ToList();
//var userTemps = users.Where(t => t.DEPARTMENT_ID == deTemp.ID && t.Nav_Person != null && t.Nav_Person.POST_ID != null && postIds.Contains((Guid)t.Nav_Person.POST_ID)).Select(m=>m.Nav_Person.POST_ID).Distinct().ToList();
if (postIds.Any())
{
foreach (var item in postIds)
{
if (item != null)
{
T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST post = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST();
post.ORG_ID = filter.OrgId;
post.ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART_ID = dep.ID;
post.POST_ID = item;
contentPosts.Add(post);
}
}
}
}
contentDeparts.Add(dep);
j++;
}
}
}
}
}
}
}
}
}
}
}
}
}
UnifiedCommit(() =>
{
//if (librarys != null && librarys.Any())
// BantchSaveEntityNoCommit(librarys);
//if (ldeparts != null && ldeparts.Any())
// BantchSaveEntityNoCommit(ldeparts);
if (contentDeparts != null && contentDeparts.Any())
BantchSaveEntityNoCommit(contentDeparts);
if (contentPosts != null && contentPosts.Any())
BantchSaveEntityNoCommit(contentPosts);
});
}
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("BasicLibrarySync")]
public JsonActionResult<bool> BasicLibrarySync([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
try
{
List<T_SK_BASIC_LIBRARY_DETAIL> measures = new List<T_SK_BASIC_LIBRARY_DETAIL>();
List<T_SK_BASIC_LIBRARY_DETAIL_CONTENT> contents = new List<T_SK_BASIC_LIBRARY_DETAIL_CONTENT>();
var contentBS = GetEntities<T_SK_CHECK_CONTENTS>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
var checkTypes = GetEntities<T_SK_CHECK_TYPE>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
var users = GetEntities<T_FM_USER>(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_Person", "Nav_ApproveRole").ToList();
var departs = GetEntities<T_FM_DEPARTMENT>(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList();
var imports = GetEntities<T_SK_LIBRARY_IMPORT_TEMP>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
var librarys = GetEntities<T_SK_BASIC_LIBRARY>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
if (librarys != null && librarys.Any())
{
foreach (var library in librarys)
{
if (library.EVALUATE_LEVEL == SKEvaluateLevelEnum.)
{
library.DEPARTMENT_TYPE = "3,0,1,2";
}
if (library.EVALUATE_LEVEL == SKEvaluateLevelEnum.)
{
library.DEPARTMENT_TYPE = "0,1,2";
}
if (library.EVALUATE_LEVEL == SKEvaluateLevelEnum.)
{
library.DEPARTMENT_TYPE = "1,2";
}
if (library.EVALUATE_LEVEL == SKEvaluateLevelEnum.)
{
library.DEPARTMENT_TYPE = "2";
}
var tempPosts = imports.Where(t => t.MineType == library.MINE_NAME && t.AREA_NAME == library.AREA_NAME && t.TYPE_NAME == library.TYPE_NAME && t.RISK_NAME == library.RISK_NAME && t.RISK_DESCRIPTION == library.RISK_DESCRIPTION).ToList();
if (tempPosts.Any())
{
var measureTemps = tempPosts.Select(t => t.MEASURES_NAME).Distinct().ToList();
if (measureTemps.Any())
{
var i = 1;
foreach (var temp in measureTemps)
{
T_SK_BASIC_LIBRARY_DETAIL measure = new T_SK_BASIC_LIBRARY_DETAIL();
measure.ORG_ID = filter.OrgId;
measure.BASIC_LIBRARY_ID = library.ID;
measure.MEASURES_NAME = temp;
measure.NUM = i;
measures.Add(measure);
var contentTemps = tempPosts.Where(t => t.MEASURES_NAME == temp).Select(m => m.CHECK_CONTENT).Distinct().ToList();
if (contentTemps.Any())
{
foreach (var ctemp in contentTemps)
{
T_SK_BASIC_LIBRARY_DETAIL_CONTENT content = new T_SK_BASIC_LIBRARY_DETAIL_CONTENT();
content.ORG_ID = filter.OrgId;
content.BASIC_LIBRARY_DETAIL_ID = measure.ID;
var contentFist = contentBS.FirstOrDefault(t => t.CHECKCONTENT == ctemp);
content.CHECK_CONTENT = ctemp;
content.CHECK_CONTENTS_ID = contentFist?.ID;
content.NUM = i;
contents.Add(content);
}
}
i++;
}
}
}
}
}
UnifiedCommit(() =>
{
if (librarys != null && librarys.Any())
BantchSaveEntityNoCommit(librarys);
if (measures != null && measures.Any())
BantchSaveEntityNoCommit(measures);
if (contents != null && contents.Any())
BantchSaveEntityNoCommit(contents);
});
}
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("BasicLibraryHiddenSync")]
public JsonActionResult<bool> BasicLibraryHiddenSync([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
try
{
List<T_SK_BASIC_LIBRARY_DETAIL_CONTENT_HIDDEN> hiddens = new List<T_SK_BASIC_LIBRARY_DETAIL_CONTENT_HIDDEN>();
var contents = GetEntities<T_SK_BASIC_LIBRARY_DETAIL_CONTENT>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
if (contents != null && contents.Any())
{
foreach (var content in contents)
{
T_SK_BASIC_LIBRARY_DETAIL_CONTENT_HIDDEN measure = new T_SK_BASIC_LIBRARY_DETAIL_CONTENT_HIDDEN();
measure.ORG_ID = filter.OrgId;
measure.BASIC_LIBRARY_DETAIL_CONTENT_ID = content.ID;
measure.HIDDEN_LEVEL = SKHiddenLevel.General;
measure.NUM = content.NUM;
if (content.CHECK_CONTENT.Contains("是否未"))
{
measure.HIDDEN_DESCRIPTION = content.CHECK_CONTENT.Replace("是否", "").Replace("", "。");
measure.RECTIFICATION_MEASURES = content.CHECK_CONTENT.Replace("是否未", "").Replace("", "。");
}
if (content.CHECK_CONTENT.Contains("是否不"))
{
measure.HIDDEN_DESCRIPTION = content.CHECK_CONTENT.Replace("是否", "").Replace("", "。");
measure.RECTIFICATION_MEASURES = content.CHECK_CONTENT.Replace("是否不", "").Replace("", "");
}
if (content.CHECK_CONTENT.Contains("是否"))
{
measure.HIDDEN_DESCRIPTION = content.CHECK_CONTENT.Replace("是否", "未").Replace("", "。");
measure.RECTIFICATION_MEASURES = content.CHECK_CONTENT.Replace("是否", "").Replace("", "。");
}
hiddens.Add(measure);
}
}
UnifiedCommit(() =>
{
if (hiddens != null && hiddens.Any())
BantchSaveEntityNoCommit(hiddens);
});
}
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("LibraryPostSync")]
public JsonActionResult<bool> LibraryPostSync([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
try
{
List<T_SK_ENTERPRISE_LIBRARY_POST> posts = new List<T_SK_ENTERPRISE_LIBRARY_POST>();
List<T_SK_ENTERPRISE_LIBRARY_POST_DETAIL> postDetails = new List<T_SK_ENTERPRISE_LIBRARY_POST_DETAIL>();
var librarys = GetEntities<T_SK_ENTERPRISE_LIBRARY>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
var libraryDetails = GetEntities<T_SK_ENTERPRISE_LIBRARY_DETAIL>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
var libraryContents = GetEntities<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
var departs = GetEntities<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId), "Nav_DetailPosts").ToList();
if (librarys != null && librarys.Any())
{
foreach (var library in librarys)
{
var detailIds = libraryDetails.Where(t => t.ENTERPRISE_LIBRARY_ID == library.ID).Select(t => t.ID).ToList();
var contentId = libraryContents.FirstOrDefault(t => detailIds.Contains(t.ENTERPRISE_LIBRARY_DETAIL_ID))?.ID;
var departList = departs.Where(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID == contentId).ToList();
if (departList.Any())
{
foreach (var depart in departList)
{
T_SK_ENTERPRISE_LIBRARY_POST post = new T_SK_ENTERPRISE_LIBRARY_POST();
post.ORG_ID = filter.OrgId;
post.ENTERPRISE_LIBRARY_ID = library.ID;
post.DEPARTMENT_ID = depart.DEPARTMENT_ID;
if (depart.Nav_DetailPosts != null && depart.Nav_DetailPosts.Any())
{
foreach (var postTemp in depart.Nav_DetailPosts)
{
T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL();
detail.ORG_ID = filter.OrgId;
detail.ENTERPRISE_LIBRARY_POST_ID = post.ID;
detail.POST_ID = postTemp.POST_ID;
postDetails.Add(detail);
}
}
posts.Add(post);
}
}
}
}
UnifiedCommit(() =>
{
if (posts != null && posts.Any())
BantchSaveEntityNoCommit(posts);
if (postDetails != null && postDetails.Any())
BantchSaveEntityNoCommit(postDetails);
});
}
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("LibraryDepartSync")]
public JsonActionResult<bool> LibraryDepartSync([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
try
{
List<T_SK_ENTERPRISE_LIBRARY_DEPART> ldeparts = new List<T_SK_ENTERPRISE_LIBRARY_DEPART>();
var users = GetEntities<T_FM_USER>(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_Person", "Nav_ApproveRole").ToList();
var departs = GetEntities<T_FM_DEPARTMENT>(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList();
var imports = GetEntities<T_SK_LIBRARY_IMPORT_TEMP_NEW>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
var librarys = GetEntities<T_SK_ENTERPRISE_LIBRARY>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
if (librarys != null && librarys.Any())
{
foreach (var library in librarys)
{
var tempPosts = imports.FirstOrDefault(t => t.MineType == library.MINE_NAME && t.AREA_NAME == library.AREA_NAME && t.TYPE_NAME == library.TYPE_NAME && t.RISK_NAME == library.RISK_NAME && t.RISK_DESCRIPTION == library.RISK_DESCRIPTION);
if (tempPosts != null)
{
var departList = tempPosts.DEPARTMENT_NAME.Split("").Distinct().ToList();
var depart = departs.Where(t => departList.Contains(t.NAME)).ToList();
if (depart.Any())
{
foreach (var temp in depart)
{
if (temp != null)
{
T_SK_ENTERPRISE_LIBRARY_DEPART dep = new T_SK_ENTERPRISE_LIBRARY_DEPART();
dep.ORG_ID = filter.OrgId;
dep.ENTERPRISE_LIBRARY_ID = library.ID;
dep.DEPARTMENT_ID = temp.ID;
dep.DEPARTMENT_TYPE = (SKDepartmentTypeEnum)temp.DEPARTMENT_TYPE;
dep.USER_ID = temp.USER_ID;
ldeparts.Add(dep);
}
}
}
}
}
}
UnifiedCommit(() =>
{
if (librarys != null && librarys.Any())
BantchSaveEntityNoCommit(librarys);
if (ldeparts != null && ldeparts.Any())
BantchSaveEntityNoCommit(ldeparts);
});
}
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("LibraryNumSync")]
public JsonActionResult<bool> LibraryNumSync([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
try
{
var librarys = GetEntities<T_SK_ENTERPRISE_LIBRARY>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
var libraryDetails = GetEntities<T_SK_ENTERPRISE_LIBRARY_DETAIL>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
var contents = GetEntities<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
var contentDeparts = GetEntities<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
var hiddens = GetEntities<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_HIDDEN>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
if (librarys != null && librarys.Any())
{
foreach (var library in librarys)
{
var details = libraryDetails.Where(t => t.ENTERPRISE_LIBRARY_ID == library.ID).ToList();
if (details.Any())
{
var i = 1;
foreach (var detail in details)
{
detail.NUM = i;
i++;
var contentList = contents.Where(t => t.ENTERPRISE_LIBRARY_DETAIL_ID == detail.ID).ToList();
if (contentList.Any())
{
var j = 1;
foreach (var content in contentList)
{
content.NUM = j;
j++;
var departList = contentDeparts.Where(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID == content.ID).ToList();
if (departList.Any())
{
var k = 1;
foreach (var depart in departList)
{
depart.NUM = k;
k++;
}
}
var hiddenList = hiddens.Where(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID == content.ID).ToList();
if (hiddenList.Any())
{
var k = 1;
foreach (var hidden in hiddenList)
{
hidden.NUM = k;
k++;
}
}
}
}
}
}
}
}
UnifiedCommit(() =>
{
if (libraryDetails != null && libraryDetails.Any())
BantchUpdateEntityNoCommit(libraryDetails, "NUM");
if (contents != null && contents.Any())
BantchUpdateEntityNoCommit(contents, "NUM");
if (contentDeparts != null && contentDeparts.Any())
BantchUpdateEntityNoCommit(contentDeparts, "NUM");
if (hiddens != null && hiddens.Any())
BantchUpdateEntityNoCommit(hiddens, "NUM");
});
}
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("LibraryPostNewSync")]
public JsonActionResult<bool> LibraryPostNewSync([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
try
{
List<T_SK_ENTERPRISE_LIBRARY_POST> posts = new List<T_SK_ENTERPRISE_LIBRARY_POST>();
List<T_SK_ENTERPRISE_LIBRARY_POST> postLists = new List<T_SK_ENTERPRISE_LIBRARY_POST>();
List<T_SK_ENTERPRISE_LIBRARY_POST_DETAIL> postDetails = new List<T_SK_ENTERPRISE_LIBRARY_POST_DETAIL>();
List<T_SK_ENTERPRISE_LIBRARY_POST_DETAIL> postDetailLists = new List<T_SK_ENTERPRISE_LIBRARY_POST_DETAIL>();
var departs = GetEntities<T_FM_DEPARTMENT>(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList();
var postInfos = GetEntities<T_FM_USER_POST>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
var librarys = GetEntities<T_SK_ENTERPRISE_LIBRARY>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
var libraryImports = GetEntities<T_SK_LIBRARY_IMPORT_POST>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
if (libraryImports != null && libraryImports.Any())
{
foreach (var library in libraryImports)
{
var depart = departs.FirstOrDefault(t => t.NAME == library.DEPARTMENT_NAME);
var postInfo = postInfos.FirstOrDefault(t => t.NAME == library.POST_NAME);
if (!string.IsNullOrEmpty(library.RISK_NAME1))
{
var nameList = library.RISK_NAME1.Split("\n").ToList();
if (nameList != null && nameList.Any())
{
foreach (var name in nameList)
{
var libraryFirst = librarys.FirstOrDefault(t => t.MINE_NAME == library.MineType && t.AREA_NAME == library.AREA_NAME1 && t.RISK_NAME == name);
if (libraryFirst != null && depart != null)
{
T_SK_ENTERPRISE_LIBRARY_POST post = new T_SK_ENTERPRISE_LIBRARY_POST();
post.ORG_ID = filter.OrgId;
post.ENTERPRISE_LIBRARY_ID = libraryFirst.ID;
post.DEPARTMENT_ID = depart.ID;
posts.Add(post);
if (postInfo != null)
{
T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL();
detail.ORG_ID = filter.OrgId;
detail.ENTERPRISE_LIBRARY_POST_ID = post.ID;
detail.POST_ID = postInfo.ID;
detail.Nav_LibraryPost = post;
postDetails.Add(detail);
}
}
}
}
}
if (!string.IsNullOrEmpty(library.RISK_NAME2))
{
var nameList = library.RISK_NAME2.Split("\n").ToList();
if (nameList != null && nameList.Any())
{
foreach (var name in nameList)
{
var libraryFirst = librarys.FirstOrDefault(t => t.MINE_NAME == library.MineType && t.AREA_NAME == library.AREA_NAME2 && t.RISK_NAME == name);
if (libraryFirst != null && depart != null)
{
T_SK_ENTERPRISE_LIBRARY_POST post = new T_SK_ENTERPRISE_LIBRARY_POST();
post.ORG_ID = filter.OrgId;
post.ENTERPRISE_LIBRARY_ID = libraryFirst.ID;
post.DEPARTMENT_ID = depart.ID;
posts.Add(post);
if (postInfo != null)
{
T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL();
detail.ORG_ID = filter.OrgId;
detail.ENTERPRISE_LIBRARY_POST_ID = post.ID;
detail.POST_ID = postInfo.ID;
detail.Nav_LibraryPost = post;
postDetails.Add(detail);
}
}
}
}
}
if (!string.IsNullOrEmpty(library.RISK_NAME3))
{
var nameList = library.RISK_NAME3.Split("\n").ToList();
if (nameList != null && nameList.Any())
{
foreach (var name in nameList)
{
var libraryFirst = librarys.FirstOrDefault(t => t.MINE_NAME == library.MineType && t.AREA_NAME == library.AREA_NAME3 && t.RISK_NAME == name);
if (libraryFirst != null && depart != null)
{
T_SK_ENTERPRISE_LIBRARY_POST post = new T_SK_ENTERPRISE_LIBRARY_POST();
post.ORG_ID = filter.OrgId;
post.ENTERPRISE_LIBRARY_ID = libraryFirst.ID;
post.DEPARTMENT_ID = depart.ID;
posts.Add(post);
if (postInfo != null)
{
T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL();
detail.ORG_ID = filter.OrgId;
detail.ENTERPRISE_LIBRARY_POST_ID = post.ID;
detail.POST_ID = postInfo.ID;
detail.Nav_LibraryPost = post;
postDetails.Add(detail);
}
}
}
}
}
if (!string.IsNullOrEmpty(library.RISK_NAME4))
{
var nameList = library.RISK_NAME4.Split("\n").ToList();
if (nameList != null && nameList.Any())
{
foreach (var name in nameList)
{
var libraryFirst = librarys.FirstOrDefault(t => t.MINE_NAME == library.MineType && t.AREA_NAME == library.AREA_NAME4 && t.RISK_NAME == name);
if (libraryFirst != null && depart != null)
{
T_SK_ENTERPRISE_LIBRARY_POST post = new T_SK_ENTERPRISE_LIBRARY_POST();
post.ORG_ID = filter.OrgId;
post.ENTERPRISE_LIBRARY_ID = libraryFirst.ID;
post.DEPARTMENT_ID = depart.ID;
posts.Add(post);
if (postInfo != null)
{
T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL();
detail.ORG_ID = filter.OrgId;
detail.ENTERPRISE_LIBRARY_POST_ID = post.ID;
detail.POST_ID = postInfo.ID;
detail.Nav_LibraryPost = post;
postDetails.Add(detail);
}
}
}
}
}
if (!string.IsNullOrEmpty(library.RISK_NAME5))
{
var nameList = library.RISK_NAME5.Split("\n").ToList();
if (nameList != null && nameList.Any())
{
foreach (var name in nameList)
{
var libraryFirst = librarys.FirstOrDefault(t => t.MINE_NAME == library.MineType && t.AREA_NAME == library.AREA_NAME5 && t.RISK_NAME == name);
if (libraryFirst != null && depart != null)
{
T_SK_ENTERPRISE_LIBRARY_POST post = new T_SK_ENTERPRISE_LIBRARY_POST();
post.ORG_ID = filter.OrgId;
post.ENTERPRISE_LIBRARY_ID = libraryFirst.ID;
post.DEPARTMENT_ID = depart.ID;
posts.Add(post);
if (postInfo != null)
{
T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL();
detail.ORG_ID = filter.OrgId;
detail.ENTERPRISE_LIBRARY_POST_ID = post.ID;
detail.POST_ID = postInfo.ID;
detail.Nav_LibraryPost = post;
postDetails.Add(detail);
}
}
}
}
}
if (!string.IsNullOrEmpty(library.RISK_NAME6))
{
var nameList = library.RISK_NAME6.Split("\n").ToList();
if (nameList != null && nameList.Any())
{
foreach (var name in nameList)
{
var libraryFirst = librarys.FirstOrDefault(t => t.MINE_NAME == library.MineType && t.AREA_NAME == library.AREA_NAME6 && t.RISK_NAME == name);
if (libraryFirst != null && depart != null)
{
T_SK_ENTERPRISE_LIBRARY_POST post = new T_SK_ENTERPRISE_LIBRARY_POST();
post.ORG_ID = filter.OrgId;
post.ENTERPRISE_LIBRARY_ID = libraryFirst.ID;
post.DEPARTMENT_ID = depart.ID;
posts.Add(post);
if (postInfo != null)
{
T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL();
detail.ORG_ID = filter.OrgId;
detail.ENTERPRISE_LIBRARY_POST_ID = post.ID;
detail.POST_ID = postInfo.ID;
detail.Nav_LibraryPost = post;
postDetails.Add(detail);
}
}
}
}
}
}
}
if (posts.Any())
{
var temps = posts.GroupBy(t => new { t.ENTERPRISE_LIBRARY_ID, t.DEPARTMENT_ID }).Select(m => m.FirstOrDefault()).ToList();
if (temps.Any())
{
foreach (var item in temps)
{
if (item != null)
{
T_SK_ENTERPRISE_LIBRARY_POST post = new T_SK_ENTERPRISE_LIBRARY_POST();
post.ORG_ID = filter.OrgId;
post.ENTERPRISE_LIBRARY_ID = item.ENTERPRISE_LIBRARY_ID;
post.DEPARTMENT_ID = item.DEPARTMENT_ID;
postLists.Add(post);
var details = postDetails.Where(t => t.Nav_LibraryPost != null && t.Nav_LibraryPost.DEPARTMENT_ID == item.DEPARTMENT_ID && t.Nav_LibraryPost.ENTERPRISE_LIBRARY_ID == item.ENTERPRISE_LIBRARY_ID).Select(m => m.POST_ID).Distinct().ToList();
if (details != null && details.Any())
{
foreach (var xx in details)
{
T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL();
detail.ORG_ID = filter.OrgId;
detail.ENTERPRISE_LIBRARY_POST_ID = post.ID;
detail.POST_ID = xx;
postDetailLists.Add(detail);
}
}
}
}
}
}
UnifiedCommit(() =>
{
if (postLists != null && postLists.Any())
BantchSaveEntityNoCommit(postLists);
if (postDetailLists != null && postDetailLists.Any())
BantchSaveEntityNoCommit(postDetailLists);
});
}
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("RiskSync")]
public JsonActionResult<bool> RiskSync([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
try
{
List<T_SK_RISK_AREA> posts = new List<T_SK_RISK_AREA>();
var librarys = GetEntities<T_SK_LIBRARY_IMPORT_TEMP>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
var areaList = librarys.Select(t => t.AREA_NAME).Distinct().ToList();
if (areaList != null && areaList.Any())
{
foreach (var area in areaList)
{
T_SK_RISK_AREA post = new T_SK_RISK_AREA();
post.ORG_ID = filter.OrgId;
post.NAME = area;
posts.Add(post);
}
}
UnifiedCommit(() =>
{
if (posts != null && posts.Any())
BantchSaveEntityNoCommit(posts);
});
}
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("ContentSync")]
public JsonActionResult<bool> ContentSync([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
try
{
List<T_SK_CHECK_CONTENTS> posts = new List<T_SK_CHECK_CONTENTS>();
List<T_SK_CHECK_QUESTION> details = new List<T_SK_CHECK_QUESTION>();
var contents = GetEntities<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
var contentIds = contents.Select(t => t.ID).ToList();
var hiddens = GetEntities<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_HIDDEN>(i => contentIds.Contains(i.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID), new BaseFilter(filter.OrgId)).ToList();
var contentNames = contents.Select(t => t.CHECK_CONTENT).Distinct().ToList();
if (contentNames != null && contentNames.Any())
{
foreach (var area in contentNames)
{
T_SK_CHECK_CONTENTS post = new T_SK_CHECK_CONTENTS();
post.ORG_ID = filter.OrgId;
post.CHECKCONTENT = area;
posts.Add(post);
var id = contents.FirstOrDefault(t => t.CHECK_CONTENT == area).ID;
var hiddenList = hiddens.Where(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID == id).ToList();
if (hiddenList != null && hiddenList.Any())
{
foreach (var hid in hiddenList)
{
T_SK_CHECK_QUESTION hi = new T_SK_CHECK_QUESTION();
hi.ORG_ID = filter.OrgId;
hi.CHECK_CONTENTS_ID = post.ID;
hi.DESCREPTION = hid.HIDDEN_DESCRIPTION;
hi.QUESTION_LEVEL = hid.HIDDEN_LEVEL;
hi.DEMAND = hid.RECTIFICATION_MEASURES;
details.Add(hi);
}
}
}
}
UnifiedCommit(() =>
{
if (posts != null && posts.Any())
BantchSaveEntityNoCommit(posts);
if (details != null && details.Any())
BantchSaveEntityNoCommit(details);
});
}
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("SafeCheckNoticeNew")]
public JsonActionResult<bool> SafeCheckNoticeNew([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
try
{
var dtNow = DateTime.Now;
var year = dtNow.Year;
var month = dtNow.Month;
var day = dtNow.Day;
var week = dtNow.DayOfWeek;
List<T_SK_PLAN_SET> setList = new List<T_SK_PLAN_SET>();
//查配置表,有配才执行
var timeSets = GetEntities<T_SK_PLAN_SET>(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_ListSetDepObject", "Nav_ListDepOut", "Nav_ListArea", "Nav_CheckType").ToList();
if (timeSets != null && timeSets.Any())
{
foreach (var set in timeSets)
{
switch (set.CHECK_CYCLE)
{
case SKPLANCHECKFREQUENCYEnum.Year:
if (set.MONTH == month && set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour)
{
setList.Add(set);
}
break;
case SKPLANCHECKFREQUENCYEnum.HalfYear:
if (((set.MONTH == month && set.DATA == day) || ((set.MONTH + 6) == month && (set.DATA + 183) == day)) && set.CHECKTIME.Value.Hour == dtNow.Hour)
{
setList.Add(set);
}
break;
case SKPLANCHECKFREQUENCYEnum.Date:
setList.Add(set);
break;
//case SKPLANCHECKFREQUENCYEnum.Class:
// setList.Add(set);
break;
case SKPLANCHECKFREQUENCYEnum.Week:
if (set.WEEKDATA != null && (int)set.WEEKDATA.Value == (int)week && set.CHECKTIME.Value.Hour == dtNow.Hour)
{
setList.Add(set);
}
break;
case SKPLANCHECKFREQUENCYEnum.Month:
if (set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour)
{
setList.Add(set);
}
break;
case SKPLANCHECKFREQUENCYEnum.Quarter:
if (set.MONTH == 1)
{
if ((month == 1 || month == 4 || month == 7 || month == 10) && set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour)
{
setList.Add(set);
}
}
if (set.MONTH == 2)
{
if ((month == 2 || month == 5 || month == 8 || month == 11) && set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour)
{
setList.Add(set);
}
}
if (set.MONTH == 3)
{
if ((month == 3 || month == 6 || month == 9 || month == 12) && set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour)
{
setList.Add(set);
}
}
break;
default:
break;
}
}
}
List<T_FM_NOTIFICATION_TASK> notices = new List<T_FM_NOTIFICATION_TASK>();
List<T_SK_SECURITY_INSPECTION_NOTICE> safeNotices = new List<T_SK_SECURITY_INSPECTION_NOTICE>();
List<T_SK_SECURITY_INSPECTION_NOTICE_DETAIL> safeDetialNotices = new List<T_SK_SECURITY_INSPECTION_NOTICE_DETAIL>();
//List<T_SK_SECURITY_INSPECTION_RECORD> records = new List<T_SK_SECURITY_INSPECTION_RECORD>();
//List<T_SK_SECURITY_INSPECTION_RECORD_DETAIL> recordDetails = new List<T_SK_SECURITY_INSPECTION_RECORD_DETAIL>();
//List<T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER> recordDetailUsers = new List<T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER>();
if (setList != null && setList.Any())
{
var checkTypes = this.GetEntities<T_SK_CHECK_TYPE>(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId));
var departs = this.GetEntities<T_FM_DEPARTMENT>(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId));
var users = this.GetEntities<T_FM_USER>(t => t.ENABLE_STATUS == 0 && !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 checkTypeIds = setList.Select(t => t.CHECK_TYPE_ID).Distinct().ToList();
var checkTypeEnums = setList.Select(t => t.CHECK_TYPE).Distinct().ToList();
var libraryDeparts = this.GetEntities<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART>(t => checkCycles.Contains(t.CHECK_CYCLE) && checkTypeIds.Contains(t.CHECK_TYPE_ID) && checkTypeEnums.Contains(t.CHECK_TYPE), new BaseFilter(filter.OrgId));
var ldepartIds = libraryDeparts.Select(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID).Distinct().ToList();
var libraryContents = this.GetEntities<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT>(t => ldepartIds.Contains(t.ID), new BaseFilter(filter.OrgId), "Nav_LibraryDetail").OrderBy(t => t.Nav_LibraryDetail?.NUM).ThenBy(m => m.NUM);
var detailsIds = libraryContents.Select(t => t.ENTERPRISE_LIBRARY_DETAIL_ID).Distinct().ToList();
var libraryDetails = this.GetEntities<T_SK_ENTERPRISE_LIBRARY_DETAIL>(t => detailsIds.Contains(t.ID), new BaseFilter(filter.OrgId));
var libraryIds = libraryDetails.Select(t => t.ENTERPRISE_LIBRARY_ID).Distinct().ToList();
var librarys = this.GetEntities<T_SK_ENTERPRISE_LIBRARY>(t => libraryIds.Contains(t.ID), new BaseFilter(filter.OrgId));
if (libraryContents != null && libraryContents.Any())
{
foreach (var content in libraryContents)
{
var detailTemp = libraryDetails.FirstOrDefault(t => t.ID == content.ENTERPRISE_LIBRARY_DETAIL_ID);
var libraryTemp = librarys.FirstOrDefault(t => t.ID == detailTemp.ENTERPRISE_LIBRARY_ID);
content.MineType = libraryTemp.MineType;
content.AREA_ID = libraryTemp.AREA_ID;
}
}
//if (libraryDeparts != null && libraryDeparts.Any())
//{
// foreach (var depart in libraryDeparts)
// {
// var departTemp = libraryContents.FirstOrDefault(t => t.ID == depart.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID);
// var detailTemp = libraryDetails.FirstOrDefault(t => t.ID == departTemp.ENTERPRISE_LIBRARY_DETAIL_ID);
// var libraryTemp = librarys.FirstOrDefault(t => t.ID == detailTemp.ENTERPRISE_LIBRARY_ID);
// depart.MineType = libraryTemp.MineType;
// }
//}
DateTime dt = DateTime.Now;
if (filter.Parameter1 != null)
{
dt = DateTime.Parse(filter.Parameter1);
}
DateTime minTime = dt.AddMinutes(0);
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 teamIds = shiftClassList.Select(t => t.TEAM_ID).Distinct().ToList();
var teamInfos = this.GetEntities<T_FM_TEAM>(t => teamIds.Contains(t.ID), new BaseFilter(filter.OrgId));
var teamDepartIds = teamInfos.Select(m => m.DEPARTMENT_ID).Distinct().ToList();
var personIds = new List<Guid>();
if (shiftClassList != null && shiftClassList.Any())
{
foreach (var item in shiftClassList)
{
if (item.Nav_DepartmentSchedulingDetail != null && item.Nav_DepartmentSchedulingDetail.Any())
{
var ids = item.Nav_DepartmentSchedulingDetail.Select(t => t.PERSON_ID).Distinct().ToList();
personIds.AddRange(ids);
}
}
}
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<Func<T_SK_SECURITY_INSPECTION_NOTICE, bool>> expression = i => i.IS_DELETED == false && i.CREATE_TIME.Value.Date == dt.Date;
//List<T_SK_SECURITY_INSPECTION_NOTICE> noticeExsiss = this.GetOrderEntities(expression, baseFilter).ToList();
foreach (var item in setList)
{
List<Guid> userIds = new List<Guid>();
List<SKProductionUnit> mineTypes = new List<SKProductionUnit>();
var departTemps = departs.ToList();
//先查给谁
if (item.USER_ID_SEND != null)
{
//特别指定的人
userIds.Add((Guid)item.USER_ID_SEND);
}
else
{
if (item.MineType != SKProductionUnit.All)
{
//非全公司,过滤生产单元
departTemps = departTemps.Where(t => t.MineType == (int)item.MineType).ToList();
}
//if (item.CHECK_TYPE != SKDepartmentTypeEnum.岗位级)
{
//非岗位级,过滤部门层级
departTemps = departTemps.Where(t => t.DEPARTMENT_TYPE == (int)item.CHECK_TYPE).ToList();
}
//else
//{
// //岗位级默认班组
// departTemps = departTemps.Where(t => t.DEPARTMENT_TYPE == 2);
//}
//if (item.Nav_ListSetDepObject != null && item.Nav_ListSetDepObject.Any())
//{
// //检查部门范围过滤
// var departIds = item.Nav_ListSetDepObject.Select(t => t.DEPARTMENT_ID).Distinct().ToList();
// departTemps = departTemps.Where(t => departIds.Contains(t.ID));
//}
if (item.Nav_ListDepOut != null && item.Nav_ListDepOut.Any())
{
//排除组织过滤
var departIds = item.Nav_ListDepOut.Select(t => t.DEPARTMENT_ID).Distinct().ToList();
departTemps = departTemps.Where(t => !departIds.Contains(t.ID)).ToList();
}
if (item.PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.Head)
{
//发给负责人
var userTempIds = departTemps.Where(m => m.USER_ID != null).Select(t => (Guid)t.USER_ID).Distinct().ToList();
userIds.AddRange(userTempIds);
}
if (item.PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.Hon)
{
//发给安全员
var departIds = departTemps.Select(t => t.ID).ToList();
var userTempIds = users.Where(t => t.DEPARTMENT_ID != null && departIds.Contains((Guid)t.DEPARTMENT_ID) && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")).Select(m => m.ID).ToList();
userIds.AddRange(userTempIds);
}
if (item.PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.SafeHon)
{
//发给安环部安全员
var departIds = departTemps.Select(t => t.ID).ToList();
var userTempIds = users.Where(t => t.DEPARTMENT_ID != null && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安环部安全员")).Select(m => m.ID).ToList();
userIds.AddRange(userTempIds);
}
if (item.PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.ClassMonitor)
{
//发给班长
var userTempIds = departTemps.Where(m => teamDepartIds.Contains(m.ID) && m.DEPARTMENT_TYPE == 20 && m.USER_ID != null).Select(t => (Guid)t.USER_ID).ToList();
userIds.AddRange(userTempIds);
}
//if (item.PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.Post)
//{
// //发给岗位工
// var departIds = departTemps.Where(m => teamDepartIds.Contains(m.ID) && m.DEPARTMENT_TYPE == 2).Select(t => t.ID).ToList();
// var userTempIds = users.Where(t => departIds.Contains((Guid)t.DEPARTMENT_ID)&& t.PERSON_ID != null && personIds.Contains((Guid)t.PERSON_ID)).Select(m => m.ID).ToList();
// userIds.AddRange(userTempIds);
//}
}
if (userIds.Any())
{
//var areaIds = item.Nav_ListArea.Select(t => t.AREA_ID).Distinct().ToList();
foreach (var id in userIds)
{
var userInfo = users.FirstOrDefault(t => t.ID == id);
if (userInfo != null)
{
var departInfo = departs.FirstOrDefault(t => t.ID == userInfo.DEPARTMENT_ID);
if (departInfo.MineType == 0)
{
var minetypes = new List<SKProductionUnit> { SKProductionUnit.MineChoose, SKProductionUnit.Mine, SKProductionUnit.Minelast };
foreach (var type in minetypes)
{
//三张安全检查通知表
//var ex = noticeExsiss.FirstOrDefault(t => t.MineType == type && t.CHECK_TYPE_ID == item.CHECK_TYPE_ID && t.APPLY_DEPARTMENT_ID == userInfo.DEPARTMENT_ID && t.APPLY_USER_ID == userInfo.ID && t.PLANCHECKFREQUENCY == item.CHECK_CYCLE && t.DEPARTMENT_TYPE == item.CHECK_TYPE);
//if (ex == null)
{
T_SK_SECURITY_INSPECTION_NOTICE safeNotice = new T_SK_SECURITY_INSPECTION_NOTICE();
safeNotice.ORG_ID = filter.OrgId;
safeNotice.APPLY_DEPARTMENT_ID = userInfo.DEPARTMENT_ID;
safeNotice.APPLY_USER_ID = userInfo.ID;
safeNotice.MineType = type;
safeNotice.CHECK_TYPE_ID = item.CHECK_TYPE_ID;
safeNotice.PLANCHECKFREQUENCY = item.CHECK_CYCLE;
safeNotice.DEPARTMENT_TYPE = item.CHECK_TYPE;
safeNotice.STATUS = PFStandardStatus.Draft;
safeNotice.ISAUTO = true;
safeNotices.Add(safeNotice);
var contentIds = libraryDeparts.Where(t => t.CHECK_CYCLE == item.CHECK_CYCLE && t.CHECK_TYPE == item.CHECK_TYPE && t.CHECK_TYPE_ID == item.CHECK_TYPE_ID && t.DEPARTMENT_ID == userInfo.DEPARTMENT_ID).Select(m => m.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID).Distinct().ToList();
var content = libraryContents.Where(t => contentIds.Contains(t.ID) && t.MineType == type).ToList();
//if (item.MineType != 0)
//{
// content = libraryContents.Where(t => t.MineType == item.MineType).ToList();
//}
//if (areaIds != null && areaIds.Any())
//{
// content = libraryContents.Where(t => t.AREA_ID != null && areaIds.Contains((Guid)t.AREA_ID)).ToList();
//}
if (content != null && content.Any())
{
foreach (var item2 in content)
{
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_NOTICE_DETAIL detail = new T_SK_SECURITY_INSPECTION_NOTICE_DETAIL();
detail.ORG_ID = filter.OrgId;
detail.SECURITY_INSPECTION_NOTICE_ID = safeNotice.ID;
detail.RISK_AREA_ID = item2.AREA_ID;
detail.CHECK_CONTENTS_ID = item2.CHECK_CONTENTS_ID;
detail.CHECKCONTENT = item2.CHECK_CONTENT;
detail.CHECKPROOF = item2.CHECK_BASIC;
detail.CHECKSTANDARD = item2.CHECK_STANDARD;
detail.NUM = i;
safeDetialNotices.Add(detail);
i++;
}
}
}
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.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Week)
{
endtime = DateTime.Now.AddDays(7);
}
if (item.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Month)
{
endtime = DateTime.Now.AddMonths(1);
}
if (item.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.HalfYear)
{
endtime = DateTime.Now.AddMonths(6);
}
if (item.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Year)
{
endtime = DateTime.Now.AddMonths(12);
}
if (item.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Quarter)
{
endtime = DateTime.Now.AddMonths(3);
}
var notice = NotificationTaskService.InsertUserNoticeTaskModel(item.CHECK_TYPE.GetDescription() + "安全检查通知" + date + item.Nav_CheckType?.NAME, safeNotice.ID, filter.OrgId, userInfo.ID, userInfo.NAME, DateTime.Now, endtime, (int)FMNoticeTypeEnum., "SK006");
notices.Add(notice);
}
}
}
else
{
//一个人一张安全检查通知表
//var ex = noticeExsiss.FirstOrDefault(t => t.MineType == (SKProductionUnit)departInfo.MineType && t.CHECK_TYPE_ID == item.CHECK_TYPE_ID && t.APPLY_DEPARTMENT_ID == userInfo.DEPARTMENT_ID && t.APPLY_USER_ID == userInfo.ID && t.PLANCHECKFREQUENCY == item.CHECK_CYCLE && t.DEPARTMENT_TYPE == item.CHECK_TYPE && t.CREATE_TIME.Value.Date == dt.Date);
//if (ex == null)
{
T_SK_SECURITY_INSPECTION_NOTICE safeNotice = new T_SK_SECURITY_INSPECTION_NOTICE();
safeNotice.ORG_ID = filter.OrgId;
safeNotice.APPLY_DEPARTMENT_ID = userInfo.DEPARTMENT_ID;
safeNotice.APPLY_USER_ID = userInfo.ID;
safeNotice.MineType = (SKProductionUnit)departInfo.MineType;
safeNotice.CHECK_TYPE_ID = item.CHECK_TYPE_ID;
safeNotice.PLANCHECKFREQUENCY = item.CHECK_CYCLE;
safeNotice.DEPARTMENT_TYPE = item.CHECK_TYPE;
safeNotice.STATUS = PFStandardStatus.Draft;
safeNotice.ISAUTO = true;
safeNotices.Add(safeNotice);
var contentIds = libraryDeparts.Where(t => t.CHECK_CYCLE == item.CHECK_CYCLE && t.CHECK_TYPE == item.CHECK_TYPE && t.CHECK_TYPE_ID == item.CHECK_TYPE_ID && t.DEPARTMENT_ID == userInfo.DEPARTMENT_ID).Select(m => m.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID).Distinct().ToList();
var content = libraryContents.Where(t => contentIds.Contains(t.ID)).ToList();
//if (item.MineType != 0)
//{
// content = libraryContents.Where(t => t.MineType == item.MineType).ToList();
//}
//if (areaIds != null && areaIds.Any())
//{
// content = libraryContents.Where(t => t.AREA_ID != null && areaIds.Contains((Guid)t.AREA_ID)).ToList();
//}
if (content != null && content.Any())
{
foreach (var item2 in content)
{
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_NOTICE_DETAIL detail = new T_SK_SECURITY_INSPECTION_NOTICE_DETAIL();
detail.ORG_ID = filter.OrgId;
detail.SECURITY_INSPECTION_NOTICE_ID = safeNotice.ID;
detail.RISK_AREA_ID = item2.AREA_ID;
detail.CHECK_CONTENTS_ID = item2.CHECK_CONTENTS_ID;
detail.CHECKCONTENT = item2.CHECK_CONTENT;
detail.CHECKPROOF = item2.CHECK_BASIC;
detail.CHECKSTANDARD = item2.CHECK_STANDARD;
detail.NUM = i;
safeDetialNotices.Add(detail);
i++;
}
}
}
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.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Week)
{
endtime = DateTime.Now.AddDays(7);
}
if (item.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Month)
{
endtime = DateTime.Now.AddMonths(1);
}
if (item.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.HalfYear)
{
endtime = DateTime.Now.AddMonths(6);
}
if (item.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Year)
{
endtime = DateTime.Now.AddMonths(12);
}
if (item.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Quarter)
{
endtime = DateTime.Now.AddMonths(3);
}
var notice = NotificationTaskService.InsertUserNoticeTaskModel(item.CHECK_TYPE.GetDescription() + "安全检查通知" + date + item.Nav_CheckType?.NAME, safeNotice.ID, filter.OrgId, userInfo.ID, userInfo.NAME, DateTime.Now, endtime, (int)FMNoticeTypeEnum., "SK006");
notices.Add(notice);
}
}
}
}
}
}
}
UnifiedCommit(() =>
{
if (notices != null && notices.Any())
BantchSaveEntityNoCommit(notices);
if (safeNotices != null && safeNotices.Any())
BantchSaveEntityNoCommit(safeNotices);
if (safeDetialNotices != null && safeDetialNotices.Any())
BantchSaveEntityNoCommit(safeDetialNotices);
//if (records != null && records.Any())
// BantchSaveEntityNoCommit(records);
//if (recordDetails != null && recordDetails.Any())
// BantchSaveEntityNoCommit(recordDetails);
//if (recordDetailUsers != null && recordDetailUsers.Any())
// BantchSaveEntityNoCommit(recordDetailUsers);
});
}
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("UserPostSync")]
public JsonActionResult<bool> UserPostSync([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
try
{
List<Guid> contentPostIds = new List<Guid>();
List<T_FM_NOTIFICATION_TASK> notices = new List<T_FM_NOTIFICATION_TASK>();
var users = GetEntities<T_FM_USER>(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_Person", "Nav_ApproveRole").ToList();
var userPosts = GetEntities<T_FM_USER_POST>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
var postIds = users.Where(t => t.Nav_Person != null && t.Nav_Person.POST_ID != null).Select(t => t.Nav_Person.POST_ID).Distinct().ToList();
var contents = GetEntities<T_SK_ENTERPRISE_LIBRARY_POST>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId), "Nav_PostDetails").ToList();
if (contents != null && contents.Any())
{
foreach (var content in contents)
{
if (content.Nav_PostDetails != null && content.Nav_PostDetails.Any())
{
var postTempIds = content.Nav_PostDetails.Where(m => m.POST_ID != null).Select(t => (Guid)t.POST_ID).Distinct().ToList();
contentPostIds.AddRange(postTempIds);
}
}
}
contentPostIds = contentPostIds.Where(t => t != null).Distinct().ToList();
var tempIds = postIds.Where(t => t.Value != null && !contentPostIds.Contains(t.Value)).Distinct().ToList();
var userTemps = users.Where(t => t.Nav_Person != null && tempIds.Contains(t.Nav_Person.POST_ID)).ToList();
var departIds = userTemps.Select(t => t.DEPARTMENT_ID).Distinct().ToList();
if (departIds.Any() && DateTime.Now.Day == 1)
{
foreach (var depart in departIds)
{
var user = users.FirstOrDefault(t => t.DEPARTMENT_ID == depart && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员"));
if (user == null)
{
user = users.FirstOrDefault(t => t.DEPARTMENT_ID == depart && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("负责人"));
}
if (user != null)
{
var userPostTempIds = userTemps.Where(t => t.DEPARTMENT_ID == depart).Select(m => m.Nav_Person.POST_ID).Distinct().ToList();
var userPostNames = userPosts.Where(t => userPostTempIds.Contains(t.ID)).Select(m => m.NAME).Distinct().ToList();
var postNames = string.Join("。", userPostNames);
var sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("请到知识库-双重预防机制库-企业库,维护岗位(" + postNames + ")的风险信息!", user.ID, user.ORG_ID, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddDays(10), (int)FMNoticeTypeEnum., "PF135");
notices.Add(sendNotice);
}
}
}
UnifiedCommit(() =>
{
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("LibraryMainSync")]
public JsonActionResult<bool> LibraryMainSync([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
try
{
List<T_SK_ENTERPRISE_LIBRARY> librarys = new List<T_SK_ENTERPRISE_LIBRARY>();
List<T_SK_ENTERPRISE_LIBRARY_DEPART> ldeparts = new List<T_SK_ENTERPRISE_LIBRARY_DEPART>();
List<T_SK_ENTERPRISE_LIBRARY_POST> lposts = new List<T_SK_ENTERPRISE_LIBRARY_POST>();
List<T_SK_ENTERPRISE_LIBRARY_POST_DETAIL> lpostDetails = new List<T_SK_ENTERPRISE_LIBRARY_POST_DETAIL>();
List<T_SK_ENTERPRISE_LIBRARY_DETAIL> libraryDetails = new List<T_SK_ENTERPRISE_LIBRARY_DETAIL>();
List<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT> contents = new List<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT>();
List<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART> contentDeparts = new List<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART>();
List<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST> contentPosts = new List<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST>();
List<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_HIDDEN> contentHiddens = new List<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_HIDDEN>();
List<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_BASIC> contentBasics = new List<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_BASIC>();
var areaList = GetEntities<T_SK_RISK_AREA>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
var contentBS = GetEntities<T_SK_CHECK_CONTENTS>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
var checkTypes = GetEntities<T_SK_CHECK_TYPE>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
var posts = GetEntities<T_FM_USER_POST>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
var laws = GetEntities<T_LR_LAW>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
var users = GetEntities<T_FM_USER>(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_Person", "Nav_ApproveRole").ToList();
var departs = GetEntities<T_FM_DEPARTMENT>(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList();
var imports = GetEntities<T_SK_LIBRARY_IMPORT_MAIN>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
var importMeasures = GetEntities<T_SK_LIBRARY_IMPORT_MAIN_MEASURES>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
var importHiddens = GetEntities<T_SK_LIBRARY_IMPORT_MAIN_HIDDEN>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
var importPosts = GetEntities<T_SK_LIBRARY_IMPORT_MAIN_POST>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
if (imports != null && imports.Any())
{
var a = 1;
foreach (var import in imports)
{
T_SK_ENTERPRISE_LIBRARY lib = new T_SK_ENTERPRISE_LIBRARY();
lib.ORG_ID = import.ORG_ID;
lib.MINE_NAME = import.MineType;
lib.NUM = a;
if (!string.IsNullOrEmpty(import.MineType))
{
switch (import.MineType)
{
case "全公司":
lib.MineType = 0;
break;
case "露天矿":
lib.MineType = (SKProductionUnit)30;
break;
case "选矿厂":
lib.MineType = (SKProductionUnit)10;
break;
case "尾矿库":
lib.MineType = (SKProductionUnit)20;
break;
case "职能口":
lib.MineType = (SKProductionUnit)31;
break;
case "非金属":
lib.MineType = (SKProductionUnit)32;
break;
case "地下矿":
lib.MineType = (SKProductionUnit)40;
break;
default:
lib.MineType = 0;
break;
}
}
lib.AREA_NAME = import.AREA_NAME;
lib.AREA_ID = areaList.FirstOrDefault(t => t.NAME == import.AREA_NAME)?.ID;
lib.RISK_NAME = import.RISK_NAME;
lib.RISK_DESCRIPTION = import.RISK_DESCRIPTION;
lib.TYPE_NAME = import.TYPE_NAME;
lib.TYPE_ID = checkTypes.FirstOrDefault(t => t.NAME == import.TYPE_NAME)?.ID;
lib.EVALUATE_L = decimal.Parse(import.EVALUATE_L);
lib.EVALUATE_E = decimal.Parse(import.EVALUATE_E);
lib.EVALUATE_C = decimal.Parse(import.EVALUATE_C);
lib.EVALUATE_SCORE = decimal.Parse(import.EVALUATE_SCORE);
if (lib.EVALUATE_SCORE > 320)
{
lib.EVALUATE_LEVEL = SKEvaluateLevelEnum.;
}
else if (lib.EVALUATE_SCORE >= 160 && lib.EVALUATE_SCORE < 320)
{
lib.EVALUATE_LEVEL = SKEvaluateLevelEnum.;
}
else if (lib.EVALUATE_SCORE >= 70 && lib.EVALUATE_SCORE < 160)
{
lib.EVALUATE_LEVEL = SKEvaluateLevelEnum.;
}
else
{
lib.EVALUATE_LEVEL = SKEvaluateLevelEnum.;
}
if (lib.EVALUATE_LEVEL == SKEvaluateLevelEnum.)
{
lib.DEPARTMENT_TYPE = "3,0,1,2";
}
if (lib.EVALUATE_LEVEL == SKEvaluateLevelEnum.)
{
lib.DEPARTMENT_TYPE = "0,1,2";
}
if (lib.EVALUATE_LEVEL == SKEvaluateLevelEnum.)
{
lib.DEPARTMENT_TYPE = "1,2";
}
if (lib.EVALUATE_LEVEL == SKEvaluateLevelEnum.)
{
lib.DEPARTMENT_TYPE = "2";
}
lib.EMERGENCY = import.EMERGENCY;
librarys.Add(lib);
if (!string.IsNullOrEmpty(import.DEPARTMENT_NAME))
{
var departList = import.DEPARTMENT_NAME.Split('').ToList();
var depart = departs.Where(t => departList.Contains(t.NAME)).ToList();
if (depart.Any())
{
foreach (var deTemp in depart)
{
if (deTemp != null)
{
T_SK_ENTERPRISE_LIBRARY_DEPART dep = new T_SK_ENTERPRISE_LIBRARY_DEPART();
dep.ORG_ID = filter.OrgId;
dep.ENTERPRISE_LIBRARY_ID = lib.ID;
dep.DEPARTMENT_ID = deTemp.ID;
dep.DEPARTMENT_TYPE = (SKDepartmentTypeEnum)deTemp.DEPARTMENT_TYPE;
dep.USER_ID = deTemp.USER_ID;
ldeparts.Add(dep);
}
}
}
}
var importPostTemps = importPosts.Where(t => t.MineType == import.MineType && t.AREA_NAME == import.AREA_NAME && t.TYPE_NAME == import.TYPE_NAME && t.RISK_NAME == import.RISK_NAME && t.RISK_DESCRIPTION == import.RISK_DESCRIPTION).ToList();
if (importPostTemps.Any())
{
foreach (var de in importPostTemps)
{
if (!string.IsNullOrEmpty(de.DEPARTMENT_NAME) && !string.IsNullOrEmpty(de.POST_NAME))
{
T_SK_ENTERPRISE_LIBRARY_POST dep = new T_SK_ENTERPRISE_LIBRARY_POST();
dep.ORG_ID = filter.OrgId;
dep.ENTERPRISE_LIBRARY_ID = lib.ID;
dep.DEPARTMENT_ID = departs.FirstOrDefault(t => t.NAME == de.DEPARTMENT_NAME)?.ID;
lposts.Add(dep);
if (!string.IsNullOrEmpty(de.POST_NAME))
{
var postList = de.POST_NAME.Split('').ToList();
var depart = posts.Where(t => postList.Contains(t.NAME)).ToList();
if (depart.Any())
{
foreach (var deTemp in depart)
{
if (deTemp != null)
{
T_SK_ENTERPRISE_LIBRARY_POST_DETAIL dep2 = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL();
dep2.ORG_ID = filter.OrgId;
dep2.ENTERPRISE_LIBRARY_POST_ID = dep.ID;
dep2.POST_ID = deTemp.ID;
lpostDetails.Add(dep2);
}
}
}
}
}
}
}
var importMeasureTemps = importMeasures.Where(t => t.MineType == import.MineType && t.AREA_NAME == import.AREA_NAME && t.TYPE_NAME == import.TYPE_NAME && t.RISK_NAME == import.RISK_NAME && t.RISK_DESCRIPTION == import.RISK_DESCRIPTION).ToList();
if (importMeasureTemps.Any())
{
var temps = importMeasureTemps.GroupBy(t => new { t.MineType, t.AREA_NAME, t.TYPE_NAME, t.RISK_NAME, t.RISK_DESCRIPTION, t.MEASURES_NAME, t.EMERGENCY }).Select(m => m.FirstOrDefault()).ToList();
if (temps.Any())
{
var i = 1;
foreach (var item in temps)
{
if (item != null)
{
T_SK_ENTERPRISE_LIBRARY_DETAIL post = new T_SK_ENTERPRISE_LIBRARY_DETAIL();
post.ORG_ID = filter.OrgId;
post.ENTERPRISE_LIBRARY_ID = lib.ID;
post.MEASURES_NAME = item.MEASURES_NAME;
post.NUM = i;
libraryDetails.Add(post);
var detailTemps = importMeasureTemps.Where(t => t.MineType == import.MineType && t.AREA_NAME == import.AREA_NAME && t.TYPE_NAME == import.TYPE_NAME && t.RISK_NAME == import.RISK_NAME && t.RISK_DESCRIPTION == import.RISK_DESCRIPTION && t.MEASURES_NAME == item.MEASURES_NAME && t.EMERGENCY == item.EMERGENCY).ToList();
var details = detailTemps.GroupBy(t => new { t.MineType, t.AREA_NAME, t.TYPE_NAME, t.RISK_NAME, t.RISK_DESCRIPTION, t.MEASURES_NAME, t.EMERGENCY, t.CHECK_CONTENT, t.CHECK_BASIC, t.CHECK_STANDARD }).Select(m => m.FirstOrDefault()).ToList();
if (details != null && details.Any())
{
var j = 1;
foreach (var xx in details)
{
T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT detail = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT();
detail.ORG_ID = filter.OrgId;
detail.ENTERPRISE_LIBRARY_DETAIL_ID = post.ID;
detail.CHECK_BASIC = xx.CHECK_BASIC;
detail.CHECK_STANDARD = xx.CHECK_STANDARD;
detail.CHECK_CONTENT = xx.CHECK_CONTENT;
detail.NUM = j;
detail.CHECK_CONTENTS_ID = contentBS.FirstOrDefault(t => t.CHECKCONTENT == xx.CHECK_CONTENT)?.ID;
contents.Add(detail);
j++;
if (!string.IsNullOrEmpty(xx.CHECK_BASIC))
{
var postList = xx.CHECK_BASIC.Split('').ToList();
var depart = laws.Where(t => postList.Contains(t.NAME)).ToList();
if (depart.Any())
{
foreach (var deTemp in depart)
{
if (deTemp != null)
{
T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_BASIC dep2 = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_BASIC();
dep2.ORG_ID = filter.OrgId;
dep2.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID = detail.ID;
dep2.LAW_ID = deTemp.ID;
contentBasics.Add(dep2);
}
}
}
}
var hiddenTemps = importHiddens.Where(t => t.MineType == import.MineType && t.AREA_NAME == import.AREA_NAME && t.TYPE_NAME == import.TYPE_NAME && t.RISK_NAME == import.RISK_NAME && t.RISK_DESCRIPTION == import.RISK_DESCRIPTION && t.MEASURES_NAME == item.MEASURES_NAME && t.CHECK_CONTENT == item.CHECK_CONTENT).ToList();
var hiddens = hiddenTemps.GroupBy(t => new { t.MineType, t.AREA_NAME, t.TYPE_NAME, t.RISK_NAME, t.RISK_DESCRIPTION, t.MEASURES_NAME, t.CHECK_CONTENT, t.HIDDEN_DESCRIPTION, t.HIDDEN_LEVEL, t.HIDDEN_RECITIFY }).Select(m => m.FirstOrDefault()).ToList();
if (hiddens != null && hiddens.Any())
{
var d = 1;
foreach (var de in hiddens)
{
T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_HIDDEN dep = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_HIDDEN();
dep.ORG_ID = filter.OrgId;
dep.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID = detail.ID;
dep.HIDDEN_DESCRIPTION = de.HIDDEN_DESCRIPTION;
dep.HIDDEN_LEVEL = de.HIDDEN_LEVEL == "重大" ? SKHiddenLevel.Major : SKHiddenLevel.General;
dep.RECTIFICATION_MEASURES = de.HIDDEN_RECITIFY;
dep.NUM = d;
contentHiddens.Add(dep);
d++;
}
}
var levelTemps = detailTemps.Where(t => t.MineType == import.MineType && t.AREA_NAME == import.AREA_NAME && t.TYPE_NAME == import.TYPE_NAME && t.RISK_NAME == import.RISK_NAME && t.RISK_DESCRIPTION == import.RISK_DESCRIPTION && t.MEASURES_NAME == item.MEASURES_NAME && t.EMERGENCY == item.EMERGENCY && t.CHECK_CONTENT == item.CHECK_CONTENT && t.CHECK_BASIC == item.CHECK_BASIC && t.CHECK_STANDARD == item.CHECK_STANDARD).ToList();
var levels = levelTemps.GroupBy(t => new { t.MineType, t.AREA_NAME, t.TYPE_NAME, t.RISK_NAME, t.RISK_DESCRIPTION, t.MEASURES_NAME, t.EMERGENCY, t.CHECK_CONTENT, t.CHECK_BASIC, t.CHECK_STANDARD, t.CHECK_DEPARTMENT, t.CHECK_LEVEL, t.CHECK_POST, t.CHECK_TYPE, t.CHECK_OBJECT, t.CHECK_CYCLE }).Select(m => m.FirstOrDefault()).ToList();
if (levels != null && levels.Any())
{
foreach (var de in levels)
{
var checkCycle = SKPLANCHECKFREQUENCYEnum.Date;
if (!string.IsNullOrEmpty(de.CHECK_CYCLE))
{
switch (de.CHECK_CYCLE)
{
case "每日":
checkCycle = SKPLANCHECKFREQUENCYEnum.Date; break;
case "每周":
checkCycle = SKPLANCHECKFREQUENCYEnum.Week; break;
case "每月":
checkCycle = SKPLANCHECKFREQUENCYEnum.Month; break;
case "每季度":
checkCycle = SKPLANCHECKFREQUENCYEnum.Quarter; break;
case "每班":
checkCycle = SKPLANCHECKFREQUENCYEnum.Date; break;
default:
checkCycle = SKPLANCHECKFREQUENCYEnum.Date; break;
break;
}
}
if (!string.IsNullOrEmpty(de.CHECK_DEPARTMENT) && !string.IsNullOrEmpty(de.CHECK_LEVEL))
{
var departList = de.CHECK_DEPARTMENT.Split('').ToList();
var depart = departs.Where(t => departList.Contains(t.NAME)).ToList();
if (depart.Any())
{
int c = 1;
foreach (var deTemp in depart)
{
if (deTemp != null)
{
T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART dep = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART();
dep.ORG_ID = filter.OrgId;
dep.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID = detail.ID;
dep.DEPARTMENT_ID = deTemp.ID;
dep.CHECK_TYPE = de.CHECK_LEVEL == "岗位级" ? SKDepartmentTypeEnum. : (SKDepartmentTypeEnum)deTemp.DEPARTMENT_TYPE;
dep.CHECK_CYCLE = checkCycle;
dep.CHECK_TYPE_ID = checkTypes.FirstOrDefault(t => t.NAME == de.CHECK_TYPE)?.ID;
dep.NUM = c;
if (dep.CHECK_TYPE == SKDepartmentTypeEnum.)
{
var userTemp = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部安全员");
if (userTemp != null)
{
T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST post1 = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST();
post1.ORG_ID = filter.OrgId;
post1.ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART_ID = dep.ID;
post1.POST_ID = userTemp.Nav_Person?.POST_ID;
contentPosts.Add(post1);
}
}
if (dep.CHECK_TYPE == SKDepartmentTypeEnum. || dep.CHECK_TYPE == SKDepartmentTypeEnum. || dep.CHECK_TYPE == SKDepartmentTypeEnum.)
{
var userTemp = users.FirstOrDefault(t => t.DEPARTMENT_ID == deTemp.ID && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员"));
if (userTemp == null)
{
userTemp = users.FirstOrDefault(t => t.DEPARTMENT_ID == deTemp.ID && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("负责人"));
}
if (userTemp != null)
{
T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST post2 = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST();
post2.ORG_ID = filter.OrgId;
post2.ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART_ID = dep.ID;
post2.POST_ID = userTemp.Nav_Person?.POST_ID;
contentPosts.Add(post2);
}
}
if (dep.CHECK_TYPE == SKDepartmentTypeEnum. && !string.IsNullOrEmpty(de.CHECK_POST))
{
var postLists = de.CHECK_POST.Split('').ToList();
var postIds = posts.Where(t => postLists.Contains(t.NAME)).Select(t => t.ID).ToList();
//var userTemps = users.Where(t => t.DEPARTMENT_ID == deTemp.ID && t.Nav_Person != null && t.Nav_Person.POST_ID != null && postIds.Contains((Guid)t.Nav_Person.POST_ID)).Select(m=>m.Nav_Person.POST_ID).Distinct().ToList();
if (postIds.Any())
{
foreach (var itemTemp in postIds)
{
if (itemTemp != null)
{
T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST post3 = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST();
post3.ORG_ID = filter.OrgId;
post3.ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART_ID = dep.ID;
post3.POST_ID = itemTemp;
contentPosts.Add(post3);
}
}
}
}
contentDeparts.Add(dep);
j++;
}
}
}
}
}
}
}
}
i++;
}
}
}
}
a++;
}
}
UnifiedCommit(() =>
{
if (librarys != null && librarys.Any())
BantchSaveEntityNoCommit(librarys);
if (ldeparts != null && ldeparts.Any())
BantchSaveEntityNoCommit(ldeparts);
if (lposts != null && lposts.Any())
BantchSaveEntityNoCommit(lposts);
if (lpostDetails != null && lpostDetails.Any())
BantchSaveEntityNoCommit(lpostDetails);
if (libraryDetails != null && libraryDetails.Any())
BantchSaveEntityNoCommit(libraryDetails);
if (contents != null && contents.Any())
BantchSaveEntityNoCommit(contents);
if (contentHiddens != null && contentHiddens.Any())
BantchSaveEntityNoCommit(contentHiddens);
if (contentBasics != null && contentBasics.Any())
BantchSaveEntityNoCommit(contentBasics);
if (contentDeparts != null && contentDeparts.Any())
BantchSaveEntityNoCommit(contentDeparts);
if (contentPosts != null && contentPosts.Any())
BantchSaveEntityNoCommit(contentPosts);
});
}
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("RiskNameSync")]
public JsonActionResult<bool> RiskNameSync([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
try
{
List<T_SK_RISK_NAME> posts = new List<T_SK_RISK_NAME>();
var librarys = GetEntities<T_SK_ENTERPRISE_LIBRARY>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
var areaList = librarys.Select(t => t.RISK_NAME).Distinct().ToList();
if (areaList != null && areaList.Any())
{
foreach (var area in areaList)
{
T_SK_RISK_NAME post = new T_SK_RISK_NAME();
post.ORG_ID = filter.OrgId;
post.NAME = area;
posts.Add(post);
}
}
UnifiedCommit(() =>
{
if (posts != null && posts.Any())
BantchSaveEntityNoCommit(posts);
});
}
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("LibraryRiskNameSync")]
public JsonActionResult<bool> LibraryRiskNameSync([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
try
{
var riskNames = GetEntities<T_SK_RISK_NAME>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
var librarys = GetEntities<T_SK_ENTERPRISE_LIBRARY>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
var libraryBasics = GetEntities<T_SK_BASIC_LIBRARY>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
if (librarys != null && librarys.Any())
{
foreach (var item in librarys)
{
var name = riskNames.FirstOrDefault(t => t.NAME == item.RISK_NAME);
if (name != null)
{
item.RISK_NAME_ID = name.ID;
}
}
}
if (libraryBasics != null && libraryBasics.Any())
{
foreach (var item in libraryBasics)
{
var name = riskNames.FirstOrDefault(t => t.NAME == item.RISK_NAME);
if (name != null)
{
item.RISK_NAME_ID = name.ID;
}
}
}
UnifiedCommit(() =>
{
if (librarys != null && librarys.Any())
BantchSaveEntityNoCommit(librarys);
if (libraryBasics != null && libraryBasics.Any())
BantchSaveEntityNoCommit(libraryBasics);
});
}
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("PostContentSync")]
public JsonActionResult<bool> PostContentSync([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
try
{
var dt = DateTime.Now;
//DateTime minTime = dt.AddMinutes(0);
//DateTime maxTime = dt.AddMinutes(60);
if (filter.Parameter1 != null)
{
dt = DateTime.Parse(filter.Parameter1);
}
List<T_FM_NOTIFICATION_TASK> notices = new List<T_FM_NOTIFICATION_TASK>();
List<T_SK_SECURITY_INSPECTION_RECORD> records = new List<T_SK_SECURITY_INSPECTION_RECORD>();
List<T_SK_SECURITY_INSPECTION_RECORD_DETAIL> recordDetails = new List<T_SK_SECURITY_INSPECTION_RECORD_DETAIL>();
List<T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER> recordDetailUsers = new List<T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER>();
List<T_SK_SECURITY_INSPECTION_RECORD_DETAIL_BASIC> recordBasics = new List<T_SK_SECURITY_INSPECTION_RECORD_DETAIL_BASIC>();
var checkType = this.GetEntity<T_SK_CHECK_TYPE>(t => t.NAME == "岗位排查");
var timeSets = GetEntities<T_SK_PLAN_SET>(i => i.ENABLE_STATUS == 0 && i.CHECK_TYPE_ID == checkType.ID, new BaseFilter(filter.OrgId), "Nav_ListSetDepObject", "Nav_ListDepOut", "Nav_ListArea").ToList();
List<Guid> departIds = new List<Guid>();
if (timeSets.Any())
{
foreach (var item in timeSets)
{
if (item.Nav_ListDepOut != null && item.Nav_ListDepOut.Any())
{
var ids = item.Nav_ListDepOut.Select(t => t.DEPARTMENT_ID).ToList();
departIds.AddRange(ids);
}
}
}
DateTime minTime = dt.AddMinutes(0);
DateTime maxTime = dt.AddMinutes(60);
var teamInfos = this.GetEntities<T_FM_TEAM>(t => !t.IS_DELETED, new BaseFilter(filter.OrgId));
var teamIds = teamInfos.Where(t => departIds.Contains((Guid)t.DEPARTMENT_ID)).Select(t => t.ID).Distinct().ToList();
var classFilter = new BaseFilter(filter.GetOrgId());
classFilter.SelectField = new string[] { "TEAM_ID", "DEPARTMENT_ID", "Nav_DepartmentSchedulingDetail.Nav_Person.POST_ID", "Nav_DepartmentSchedulingDetail.Nav_Person.Nav_User.ID", "Nav_DepartmentSchedulingDetail.Nav_Person.Nav_User.NAME", "START_TIME", "END_TIME" };
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, classFilter).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 && !teamIds.Contains((Guid)s.TEAM_ID), classFilter).ToList();
var teamIdTemps = shiftClassList.Where(s => !teamIds.Contains((Guid)s.TEAM_ID)).Select(t => t.TEAM_ID).ToList();
var teamDepartIds = teamInfos.Where(t => teamIdTemps.Contains(t.ID)).Select(m => m.DEPARTMENT_ID).Distinct().ToList();
var checkSets = GetEntities<T_SK_CHECK_SET>(i => teamDepartIds.Contains(i.DEPARTMENT_ID), new BaseFilter(filter.OrgId), "Nav_CheckSetContents.Nav_ContentsAreas", "Nav_CheckSetContents.Nav_ContentsHiddens", "Nav_CheckSetContents.Nav_ContentsBasics").ToList();
if (shiftClassList.Any())
{
foreach (var item in shiftClassList)
{
var team = teamInfos.FirstOrDefault(t => t.ID == item.TEAM_ID);
if (team != null && item.Nav_DepartmentSchedulingDetail != null && item.Nav_DepartmentSchedulingDetail.Any())
{
foreach (var item2 in item.Nav_DepartmentSchedulingDetail)
{
var set = checkSets.FirstOrDefault(t => t.DEPARTMENT_ID == team.DEPARTMENT_ID && t.POST_ID == item2.Nav_Person?.POST_ID);
if (set != null && set.Nav_CheckSetContents != null && set.Nav_CheckSetContents.Any())
{
T_SK_SECURITY_INSPECTION_RECORD record = new T_SK_SECURITY_INSPECTION_RECORD();
record.ORG_ID = filter.OrgId;
record.ID = Guid.NewGuid();
record.MineType = set.MineType;
record.APPLY_USER_ID = item2.Nav_Person.Nav_User.ID;
record.APPLY_DEPARTMENT_ID = team.DEPARTMENT_ID;
record.PLANCHECKFREQUENCY = SKPLANCHECKFREQUENCYEnum.Date;
record.DEPARTMENT_TYPE = SKDepartmentTypeEnum.;
record.CHECK_TYPE_ID = checkType?.ID;
record.CHECK_TIME = item.START_TIME;
record.RECORD_USER_ID = item2.Nav_Person.Nav_User.ID;
record.CHECK_PERSON = item2.Nav_Person.Nav_User.NAME;
records.Add(record);
var noticeTask = NotificationTaskService.InsertUserNoticeTaskModel(team.NAME + item2.Nav_Person?.Nav_Post?.NAME + "岗位排查表", record.ID, filter.GetOrgId(), (Guid)record.APPLY_USER_ID, item2.Nav_Person.Nav_User.NAME, item.START_TIME, item.END_TIME, (int)FMNoticeTypeEnum., "SK010");
notices.Add(noticeTask);
var temps = new List<T_SK_CHECK_SET_CONTENTS>();
if (set.Nav_CheckSetContents != null && set.Nav_CheckSetContents.Any())
{
foreach (var content in set.Nav_CheckSetContents)
{
if (content.Nav_ContentsAreas.Any())
{
foreach (var area in content.Nav_ContentsAreas)
{
T_SK_CHECK_SET_CONTENTS temp = new T_SK_CHECK_SET_CONTENTS();
temp = content;
temp.AREA_ID = area.AREA_ID;
temps.Add(temp);
}
}
}
}
if (temps.Any())
{
foreach (var content in temps)
{
T_SK_SECURITY_INSPECTION_RECORD_DETAIL detail = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL();
detail.ORG_ID = filter.OrgId;
detail.ID = Guid.NewGuid();
detail.SECURITY_INSPECTION_RECORD_ID = record.ID;
detail.CHECK_CONTENTS_ID = content.CHECK_CONTENTS_ID;
detail.CHECKCONTENT = content.CHECK_CONTENT;
detail.CHECKSTANDARD = content.CHECK_STANDARD;
detail.RISK_AREA_ID = content.AREA_ID;
recordDetails.Add(detail);
T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER user = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER();
user.ORG_ID = filter.OrgId;
user.ID = Guid.NewGuid();
user.SECURITY_INSPECTION_RECORD_DETAIL_ID = detail.ID;
user.USER_ID = record.APPLY_USER_ID;
user.ISMAINCHECK = true;
recordDetailUsers.Add(user);
if (content.Nav_ContentsBasics.Any())
{
foreach (var basic in content.Nav_ContentsBasics)
{
T_SK_SECURITY_INSPECTION_RECORD_DETAIL_BASIC ba = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL_BASIC();
ba.ORG_ID = filter.OrgId;
ba.ID = Guid.NewGuid();
ba.SECURITY_INSPECTION_RECORD_DETAIL_ID = detail.ID;
ba.LAW_ID = basic.LAW_ID;
recordBasics.Add(ba);
}
}
}
}
}
}
}
}
}
UnifiedCommit(() =>
{
if (records != null && records.Any())
BantchSaveEntityNoCommit(records);
if (recordDetails != null && recordDetails.Any())
BantchSaveEntityNoCommit(recordDetails);
if (recordDetailUsers != null && recordDetailUsers.Any())
BantchSaveEntityNoCommit(recordDetailUsers);
if (recordBasics != null && recordBasics.Any())
BantchSaveEntityNoCommit(recordBasics);
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("ContentSyncNew")]
public JsonActionResult<bool> ContentSyncNew([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
try
{
List<T_SK_CHECK_CONTENTS> posts = new List<T_SK_CHECK_CONTENTS>();
List<T_SK_CHECK_QUESTION> details = new List<T_SK_CHECK_QUESTION>();
//var contents = GetEntities<T_SK_CHECK_CONTENTS>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
//var contentIds = contents.Select(t => t.ID).ToList();
//var hiddens = GetEntities<T_SK_CHECK_QUESTION>(i => contentIds.Contains((Guid)i.CHECK_CONTENTS_ID), new BaseFilter(filter.OrgId)).ToList();
//var contentTempIds = hiddens.Select(t => t.CHECK_CONTENTS_ID).Distinct().ToList();
//var contentNames = contents.Where(t=> !contentTempIds.Contains(t.ID)).ToList();
//if (contentNames != null && contentNames.Any())
//{
// foreach (var area in contentNames)
// {
// T_SK_CHECK_QUESTION hi = new T_SK_CHECK_QUESTION();
// hi.ORG_ID = filter.OrgId;
// hi.CHECK_CONTENTS_ID = area.ID;
// hi.DESCREPTION = area.CHECKCONTENT.Replace("是否","未");
// hi.QUESTION_LEVEL = SKHiddenLevel.General;
// hi.DEMAND = area.CHECKCONTENT.Replace("是否", "应");
// details.Add(hi);
// }
//}
//var setContents = GetEntities<T_SK_CHECK_SET_CONTENTS>(i => i.CHECK_CONTENTS_ID == null, new BaseFilter(filter.OrgId)).ToList();
//var setContentIds = setContents.Select(t => t.ID).ToList();
//var setHiddens = GetEntities<T_SK_CHECK_SET_CONTENTS_HIDDEN>(i => setContentIds.Contains((Guid)i.CHECK_CONTENTS_SET_ID), new BaseFilter(filter.OrgId)).ToList();
//if (setContents != null && setContents.Any())
//{
// foreach (var area in setContents)
// {
// T_SK_CHECK_CONTENTS post = new T_SK_CHECK_CONTENTS();
// post.ORG_ID = filter.OrgId;
// post.CHECKCONTENT = area.CHECK_CONTENT;
// posts.Add(post);
// var hiddenList = setHiddens.Where(t => t.CHECK_CONTENTS_SET_ID == area.ID).ToList();
// if (hiddenList != null && hiddenList.Any())
// {
// foreach (var hid in hiddenList)
// {
// T_SK_CHECK_QUESTION hi = new T_SK_CHECK_QUESTION();
// hi.ORG_ID = filter.OrgId;
// hi.CHECK_CONTENTS_ID = post.ID;
// hi.DESCREPTION = hid.HIDDEN_DESCRIPTION;
// hi.QUESTION_LEVEL = hid.HIDDEN_LEVEL;
// hi.DEMAND = hid.RECTIFICATION_MEASURES;
// details.Add(hi);
// }
// }
// }
//}
var setHiddens = GetEntities<T_SK_CHECK_SET_CONTENTS_HIDDEN>(i => i.CHECK_QUESTION_ID == null, new BaseFilter(filter.OrgId)).ToList();
var setContentIds = setHiddens.Select(t => t.CHECK_CONTENTS_SET_ID).Distinct().ToList();
var setContents = GetEntities<T_SK_CHECK_SET_CONTENTS>(i => setContentIds.Contains(i.ID), new BaseFilter(filter.OrgId)).ToList();
var contentIds = setContents.Select(t => t.CHECK_CONTENTS_ID).Distinct().ToList();
var contents = GetEntities<T_SK_CHECK_CONTENTS>(i => contentIds.Contains(i.ID), new BaseFilter(filter.OrgId)).ToList();
var hiddens = GetEntities<T_SK_CHECK_QUESTION>(i => contentIds.Contains((Guid)i.CHECK_CONTENTS_ID), new BaseFilter(filter.OrgId)).ToList();
if (setHiddens != null && setHiddens.Any())
{
foreach (var area in setHiddens)
{
var content = setContents.FirstOrDefault(t => t.ID == area.CHECK_CONTENTS_SET_ID);
if (content != null)
{
T_SK_CHECK_QUESTION hi = new T_SK_CHECK_QUESTION();
hi.ORG_ID = filter.OrgId;
hi.CHECK_CONTENTS_ID = content.CHECK_CONTENTS_ID;
hi.DESCREPTION = area.HIDDEN_DESCRIPTION;
hi.QUESTION_LEVEL = area.HIDDEN_LEVEL;
hi.DEMAND = area.RECTIFICATION_MEASURES;
details.Add(hi);
}
}
}
UnifiedCommit(() =>
{
if (posts != null && posts.Any())
BantchSaveEntityNoCommit(posts);
if (details != null && details.Any())
BantchSaveEntityNoCommit(details);
});
}
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("RiskIdentityZN")]
public JsonActionResult<bool> RiskIdentityZN([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
try
{
List<T_SK_ENTERPRISE_LIBRARY_POST> posts = new List<T_SK_ENTERPRISE_LIBRARY_POST>();
List<T_SK_ENTERPRISE_LIBRARY_POST_DETAIL> postDetails = new List<T_SK_ENTERPRISE_LIBRARY_POST_DETAIL>();
var departments = this.GetEntities<T_FM_DEPARTMENT>(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_User").ToList();
var users = this.GetEntities<T_FM_USER>(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_Person").ToList();
List<string> departName = new List<string> { "矿山部", "选矿部", "非金属资源部", "设备能源部" };
var idList = new List<Guid>();
var allIdList = new List<Guid>();
var depaerts = departments.Where(t => departName.Contains(t.NAME)).ToList();
if (depaerts.Any())
{
foreach (var item in depaerts)
{
allIdList.Add(item.ID);
var depatIds = departments.Where(t => t.PARENT_ID == item.ID).Select(m => m.ID).ToList();
if (depatIds.Any())
{
//车间
idList.AddRange(depatIds);
//所有
allIdList.AddRange(depatIds);
}
}
}
if (idList.Any())
{
//取班组
var depatIds = departments.Where(t => t.PARENT_ID != null && idList.Contains((Guid)t.PARENT_ID)).Select(m => m.ID).ToList();
if (depatIds.Any())
{
allIdList.AddRange(depatIds);
}
}
if (allIdList.Any())
{
//排除这四个部门,其他归属职能部
departments = departments.Where(t => !allIdList.Contains(t.ID)).ToList();
}
var departIds = departments.Select(t => t.ID).ToList();
var userIds = users.Where(t => t.DEPARTMENT_ID != null && departIds.Contains((Guid)t.DEPARTMENT_ID)).Select(m => m.ID).ToList();
var wfm = users.FirstOrDefault(t => t.NAME == "王福铭");
var baseFilter = new BaseFilter(filter.GetOrgId());
baseFilter.IgnoreDataRule = true;
baseFilter.SelectField = new string[] { "ID" }; //指定字段,包括导航属性
var identity = this.GetEntity<T_SK_RISK_IDENTIFY>(t => t.APPLY_USER_ID == wfm.ID);
var identityDetail = this.GetEntities<T_SK_RISK_IDENTIFY_DETAIL>(t => t.RISK_IDENTIFY_ID == identity.ID, new BaseFilter(identity.ORG_ID));
var minetype = identityDetail.Select(t => t.MineType).Distinct().ToList();
var areaId = identityDetail.Select(t => t.AREA_ID).Distinct().ToList();
var typeId = identityDetail.Select(t => t.TYPE_ID).Distinct().ToList();
var riskName = identityDetail.Select(t => t.RISK_NAME).Distinct().ToList();
var librarys = this.GetEntities<T_SK_ENTERPRISE_LIBRARY>(t => minetype.Contains(t.MineType) && areaId.Contains(t.AREA_ID) && typeId.Contains(t.TYPE_ID) && riskName.Contains(t.RISK_NAME), new BaseFilter(filter.OrgId));
var libraryIds = librarys.Select(t => t.ID).ToList();
var libraryIdentity = this.GetEntities<T_SK_ENTERPRISE_LIBRARY_POST>(t => libraryIds.Contains(t.ENTERPRISE_LIBRARY_ID), new BaseFilter(filter.OrgId), "Nav_PostDetails");
if (libraryIds != null && libraryIds.Any())
{
foreach (var iden in libraryIds)
{
foreach (var depart in departIds)
{
var postIds = users.Where(t => t.DEPARTMENT_ID == depart && t.Nav_Person != null).Select(m => m.Nav_Person.POST_ID).Distinct().ToList();
var identityPost = libraryIdentity.FirstOrDefault(t => t.ENTERPRISE_LIBRARY_ID == iden && t.DEPARTMENT_ID == depart);
if (identityPost == null)
{
T_SK_ENTERPRISE_LIBRARY_POST post = new T_SK_ENTERPRISE_LIBRARY_POST();
post.ORG_ID = filter.OrgId;
post.DEPARTMENT_ID = depart;
post.ENTERPRISE_LIBRARY_ID = iden;
posts.Add(post);
if (postIds != null && postIds.Any())
{
foreach (var po in postIds)
{
T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL();
detail.ORG_ID = filter.OrgId;
detail.ENTERPRISE_LIBRARY_POST_ID = post.ID;
detail.POST_ID = po;
postDetails.Add(detail);
}
}
}
else
{
foreach (var po in postIds)
{
var exsist = identityPost.Nav_PostDetails == null ? null : identityPost.Nav_PostDetails.FirstOrDefault(t => t.POST_ID == po && t.ENTERPRISE_LIBRARY_POST_ID == identityPost.ID);
if (exsist != null)
{
T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL();
detail.ORG_ID = filter.OrgId;
detail.ENTERPRISE_LIBRARY_POST_ID = identityPost.ID;
detail.POST_ID = po;
postDetails.Add(detail);
}
}
}
}
}
}
//Expression<Func<T_SK_RISK_IDENTIFY, bool>> expression = i => i.IS_DELETED == false && i.APPLY_USER_ID !=null && userIds.Contains((Guid)i.APPLY_USER_ID) && i.APPLY_USER_ID != wfm.ID;
//List<T_SK_RISK_IDENTIFY> riskIdetitys = this.GetOrderEntities(expression, baseFilter).ToList();
//var riskIdentityIds = riskIdetitys.Select(t => t.ID).ToList();
//var identityDetails = GetEntities<T_SK_RISK_IDENTIFY_DETAIL>(i => riskIdentityIds.Contains(i.RISK_IDENTIFY_ID), new BaseFilter(filter.OrgId)).ToList();
//var deleteIds = identityDetails.Select(t => t.ID).ToList();
//if (riskIdentityIds != null && riskIdentityIds.Any())
//{
// foreach (var iden in riskIdentityIds)
// {
// if (identityDetail != null && identityDetail.Any())
// {
// foreach (var detail in identityDetail)
// {
// T_SK_RISK_IDENTIFY_DETAIL hi = new T_SK_RISK_IDENTIFY_DETAIL();
// hi.ORG_ID = filter.OrgId;
// hi.RISK_IDENTIFY_ID = iden;
// hi.MineType = detail.MineType;
// hi.AREA_ID = detail.AREA_ID;
// hi.NUM = detail.NUM;
// hi.RISK_NAME = detail.RISK_NAME;
// hi.RISK_DESCRIPTION = detail.RISK_DESCRIPTION;
// hi.RISK_NAME_ID = detail.RISK_NAME_ID;
// hi.TYPE_ID = detail.TYPE_ID;
// hi.MEASURE = detail.MEASURE;
// hi.EMERGENCY = detail.EMERGENCY;
// identDetails.Add(hi);
// }
// }
// }
//}
UnifiedCommit(() =>
{
if (posts != null && posts.Any())
BantchSaveEntityNoCommit(posts);
if (postDetails != null && postDetails.Any())
BantchSaveEntityNoCommit(postDetails);
//if (deleteIds != null && deleteIds.Any())
// BantchDeleteEntityNoCommit<T_SK_RISK_IDENTIFY_DETAIL>(deleteIds);
//if (identDetails != null && identDetails.Any())
// BantchSaveEntityNoCommit(identDetails);
});
}
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("ContentAreaUpdate")]
public JsonActionResult<bool> ContentAreaUpdate([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
try
{
var contents = this.GetEntities<T_SK_CHECK_CONTENTS>(t => !t.IS_DELETED, new BaseFilter(filter.OrgId));
var contentIds = contents.Select(t => t.ID).ToList();
var libraryContents = this.GetEntities<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT>(t => t.CHECK_CONTENTS_ID != null && contentIds.Contains((Guid)t.CHECK_CONTENTS_ID), new BaseFilter(filter.OrgId), "Nav_LibraryDetail.Nav_Library.Nav_Area");
if (libraryContents.Any())
{
foreach (var con in libraryContents)
{
con.AREA_ID = con.Nav_LibraryDetail?.Nav_Library?.AREA_ID;
con.Nav_Area = con.Nav_LibraryDetail?.Nav_Library?.Nav_Area;
con.MineType = con.Nav_LibraryDetail != null && con.Nav_LibraryDetail.Nav_Library != null ? con.Nav_LibraryDetail.Nav_Library.MineType : SKProductionUnit.Mine;
}
}
if (contents.Any())
{
foreach (var con in contents)
{
var item = libraryContents.Where(t => t.CHECK_CONTENTS_ID == con.ID).ToList();
if (item.Count() == 1)
{
con.AREA_ID = item.FirstOrDefault().AREA_ID;
con.MineType = item.FirstOrDefault().MineType;
}
if (item.Count() > 1)
{
var areas = item.Select(t => t.Nav_Area.NAME).Distinct().ToList();
con.CHECK_STANDARD = string.Join(",", areas);
}
}
}
UnifiedCommit(() =>
{
if (contents != null && contents.Any())
BantchSaveEntityNoCommit(contents);
});
}
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("ContentAreaUpdateNew")]
public JsonActionResult<bool> ContentAreaUpdateNew([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
try
{
var contents = this.GetEntities<T_SK_CHECK_CONTENTS>(t => !t.IS_DELETED, new BaseFilter(filter.OrgId));
var contentIds = contents.Select(t => t.ID).ToList();
var libraryContents = this.GetEntities<T_SK_CHECK_SET_CONTENTS>(t => t.CHECK_CONTENTS_ID != null && contentIds.Contains((Guid)t.CHECK_CONTENTS_ID), new BaseFilter(filter.OrgId), "Nav_CheckSet", "Nav_ContentsAreas.Nav_Area");
if (contents.Any())
{
foreach (var con in contents)
{
var item = libraryContents.Where(t => t.CHECK_CONTENTS_ID == con.ID).ToList();
if (item.Count() == 1)
{
con.AREA_ID = item.FirstOrDefault().Nav_ContentsAreas?.FirstOrDefault()?.AREA_ID;
con.MineType = item.FirstOrDefault().Nav_CheckSet?.MineType;
}
if (item.Count() > 1)
{
var areaList = new List<string>();
foreach (var area in item)
{
foreach (var ar in area.Nav_ContentsAreas)
{
areaList.Add(ar.Nav_Area.NAME);
}
}
var areas = areaList.Distinct().ToList();
if (areas.Count() == 1)
{
con.AREA_ID = item.FirstOrDefault().Nav_ContentsAreas?.FirstOrDefault()?.AREA_ID;
}
else
{
con.CHECK_STANDARD = string.Join(",", areas);
}
con.MineType = item.FirstOrDefault().Nav_CheckSet?.MineType;
}
}
}
UnifiedCommit(() =>
{
if (contents != null && contents.Any())
BantchSaveEntityNoCommit(contents);
});
}
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("ContentHiddenSync")]
public JsonActionResult<bool> ContentHiddenSync([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
try
{
List<T_SK_BASIC_LIBRARY_DETAIL_CONTENT_HIDDEN> details = new List<T_SK_BASIC_LIBRARY_DETAIL_CONTENT_HIDDEN>();
var contents = GetEntities<T_SK_CHECK_CONTENTS>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
var hiddens = GetEntities<T_SK_CHECK_QUESTION>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
var contentIds = contents.Select(t => t.ID).ToList();
var detailContents = GetEntities<T_SK_BASIC_LIBRARY_DETAIL_CONTENT>(i => i.CHECK_CONTENTS_ID != null && contentIds.Contains((Guid)i.CHECK_CONTENTS_ID), new BaseFilter(filter.OrgId)).ToList();
if (detailContents != null && detailContents.Any())
{
foreach (var detail in detailContents)
{
var quests = hiddens.Where(t => t.CHECK_CONTENTS_ID == detail.CHECK_CONTENTS_ID).ToList();
if (quests != null && quests.Any())
{
foreach (var item in quests)
{
T_SK_BASIC_LIBRARY_DETAIL_CONTENT_HIDDEN hi = new T_SK_BASIC_LIBRARY_DETAIL_CONTENT_HIDDEN();
hi.ORG_ID = filter.OrgId;
hi.BASIC_LIBRARY_DETAIL_CONTENT_ID = detail.ID;
hi.CHECK_QUESTION_ID = item.ID;
hi.HIDDEN_DESCRIPTION = item.DESCREPTION;
hi.HIDDEN_LEVEL = item.QUESTION_LEVEL;
hi.RECTIFICATION_MEASURES = item.DEMAND;
hi.NUM = item.NUM;
details.Add(hi);
}
}
}
}
UnifiedCommit(() =>
{
if (details != null && details.Any())
BantchSaveEntityNoCommit(details);
});
}
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("SafeCheckNoticeYL")]
public JsonActionResult<bool> SafeCheckNoticeYL([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
try
{
var dtNow = DateTime.Now;
var year = dtNow.Year;
var month = dtNow.Month;
var day = dtNow.Day;
var week = dtNow.DayOfWeek;
List<T_SK_PLAN_SET> setList = new List<T_SK_PLAN_SET>();
//查配置表,有配才执行
var timeSets = GetEntities<T_SK_PLAN_SET>(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_ListSetDepObject", "Nav_ListDepOut", "Nav_ListArea", "Nav_CheckType").ToList();
if (timeSets != null && timeSets.Any())
{
foreach (var set in timeSets)
{
switch (set.CHECK_CYCLE)
{
case SKPLANCHECKFREQUENCYEnum.Year:
if (set.MONTH == month && set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour)
{
setList.Add(set);
}
break;
case SKPLANCHECKFREQUENCYEnum.HalfYear:
if (((set.MONTH == month && set.DATA == day) || ((set.MONTH + 6) == month && (set.DATA + 183) == day)) && set.CHECKTIME.Value.Hour == dtNow.Hour)
{
setList.Add(set);
}
break;
case SKPLANCHECKFREQUENCYEnum.Date:
setList.Add(set);
break;
//case SKPLANCHECKFREQUENCYEnum.Class:
// setList.Add(set);
break;
case SKPLANCHECKFREQUENCYEnum.Week:
if (set.WEEKDATA != null && (int)set.WEEKDATA.Value == (int)week && set.CHECKTIME.Value.Hour == dtNow.Hour)
{
setList.Add(set);
}
break;
case SKPLANCHECKFREQUENCYEnum.Month:
if (set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour)
{
setList.Add(set);
}
break;
case SKPLANCHECKFREQUENCYEnum.Quarter:
if (set.MONTH == 1)
{
if ((month == 1 || month == 4 || month == 7 || month == 10) && set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour)
{
setList.Add(set);
}
}
if (set.MONTH == 2)
{
if ((month == 2 || month == 5 || month == 8 || month == 11) && set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour)
{
setList.Add(set);
}
}
if (set.MONTH == 3)
{
if ((month == 3 || month == 6 || month == 9 || month == 12) && set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour)
{
setList.Add(set);
}
}
break;
default:
break;
}
}
}
List<T_FM_NOTIFICATION_TASK> notices = new List<T_FM_NOTIFICATION_TASK>();
List<T_SK_SECURITY_INSPECTION_NOTICE> safeNotices = new List<T_SK_SECURITY_INSPECTION_NOTICE>();
List<T_SK_SECURITY_INSPECTION_NOTICE_DETAIL> safeDetialNotices = new List<T_SK_SECURITY_INSPECTION_NOTICE_DETAIL>();
//List<T_SK_SECURITY_INSPECTION_RECORD> records = new List<T_SK_SECURITY_INSPECTION_RECORD>();
//List<T_SK_SECURITY_INSPECTION_RECORD_DETAIL> recordDetails = new List<T_SK_SECURITY_INSPECTION_RECORD_DETAIL>();
//List<T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER> recordDetailUsers = new List<T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER>();
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" }; //指定字段,包括导航属性
if (setList != null && setList.Any())
{
var checkTypes = this.GetEntities<T_SK_CHECK_TYPE>(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId));
var departs = this.GetEntities<T_FM_DEPARTMENT>(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId));
var users = this.GetEntities<T_FM_USER>(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin") && t.Nav_Person != null, new BaseFilter(filter.OrgId), "Nav_Person", "Nav_ApproveRole");
DateTime dt = DateTime.Now;
if (filter.Parameter1 != null)
{
dt = DateTime.Parse(filter.Parameter1);
}
Expression<Func<T_SK_SECURITY_INSPECTION_NOTICE, bool>> expression = i => i.IS_DELETED == false && i.CREATE_TIME.Value.Date == dt.Date;
List<T_SK_SECURITY_INSPECTION_NOTICE> noticeExsiss = this.GetOrderEntities(expression, baseFilter).ToList();
DateTime minTime = dt.AddMinutes(0);
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 teamIds = shiftClassList.Select(t => t.TEAM_ID).Distinct().ToList();
var teamInfos = this.GetEntities<T_FM_TEAM>(t => teamIds.Contains(t.ID), new BaseFilter(filter.OrgId));
var teamDepartIds = teamInfos.Select(m => m.DEPARTMENT_ID).Distinct().ToList();
//var personIds = new List<Guid>();
//if (shiftClassList != null && shiftClassList.Any())
//{
// foreach (var item in shiftClassList)
// {
// if (item.Nav_DepartmentSchedulingDetail != null && item.Nav_DepartmentSchedulingDetail.Any())
// {
// var ids = item.Nav_DepartmentSchedulingDetail.Select(t => t.PERSON_ID).Distinct().ToList();
// personIds.AddRange(ids);
// }
// }
//}
var libPosts = this.GetEntities<T_SK_ENTERPRISE_LIBRARY_POST>(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId), "Nav_Department");
var libDepartIds = libPosts.Select(t => t.DEPARTMENT_ID).Distinct();
var librarys = this.GetEntities<T_SK_ENTERPRISE_LIBRARY>(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId));
var libraryIds = librarys.Select(t => t.ID).ToList();
var libraryDetails = this.GetEntities<T_SK_ENTERPRISE_LIBRARY_DETAIL>(t => libraryIds.Contains(t.ENTERPRISE_LIBRARY_ID), new BaseFilter(filter.OrgId));
var detailsIds = libraryDetails.Select(t => t.ID).ToList();
var libraryContents = this.GetEntities<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT>(t => detailsIds.Contains(t.ENTERPRISE_LIBRARY_DETAIL_ID), new BaseFilter(filter.OrgId), "Nav_LibraryDetail").OrderBy(t => t.Nav_LibraryDetail?.NUM).ThenBy(m => m.NUM);
if (libraryContents != null && libraryContents.Any())
{
foreach (var content in libraryContents)
{
var detailTemp = libraryDetails.FirstOrDefault(t => t.ID == content.ENTERPRISE_LIBRARY_DETAIL_ID);
var libraryTemp = librarys.FirstOrDefault(t => t.ID == detailTemp.ENTERPRISE_LIBRARY_ID);
content.MineType = libraryTemp.MineType;
content.AREA_ID = libraryTemp.AREA_ID;
}
}
var groupSets = setList.GroupBy(t => new { t.CHECK_CYCLE, t.CHECK_TYPE_ID, t.CHECK_TYPE }).ToList();
foreach (var item in groupSets)
{
List<Guid> userIds = new List<Guid>();
List<SKProductionUnit> mineTypes = new List<SKProductionUnit>();
//取配置的辨识部门,没配的不触发
var departTemps = departs.Where(t => libDepartIds.Contains(t.ID)).ToList();
//先查给谁
if (item.FirstOrDefault().USER_ID_SEND != null)
{
//特别指定的人
userIds.Add((Guid)item.FirstOrDefault().USER_ID_SEND);
}
else
{
//if (item.FirstOrDefault().CHECK_TYPE != SKDepartmentTypeEnum.岗位级)
//{
// //非岗位级,过滤部门层级
// departTemps = departTemps.Where(t => t.DEPARTMENT_TYPE == (int)item.CHECK_TYPE).ToList();
//}
//else
//{
// //岗位级默认班组
// departTemps = departTemps.Where(t => t.DEPARTMENT_TYPE == 2);
//}
//if (item.Nav_ListSetDepObject != null && item.Nav_ListSetDepObject.Any())
//{
// //检查部门范围过滤
// var departIds = item.Nav_ListSetDepObject.Select(t => t.DEPARTMENT_ID).Distinct().ToList();
// departTemps = departTemps.Where(t => departIds.Contains(t.ID));
//}
if (item.FirstOrDefault().Nav_ListDepOut != null && item.FirstOrDefault().Nav_ListDepOut.Any())
{
//排除组织过滤
var departIds = item.FirstOrDefault().Nav_ListDepOut.Select(t => t.DEPARTMENT_ID).Distinct().ToList();
departTemps = departTemps.Where(t => !departIds.Contains(t.ID)).ToList();
}
if (item.FirstOrDefault().PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.Head)
{
//发给负责人
var userTempIds = departTemps.Where(m => m.USER_ID != null).Select(t => (Guid)t.USER_ID).Distinct().ToList();
userIds.AddRange(userTempIds);
}
if (item.FirstOrDefault().PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.Hon)
{
//发给安全员
var departIds = departTemps.Select(t => t.ID).ToList();
var userTempIds = users.Where(t => t.DEPARTMENT_ID != null && departIds.Contains((Guid)t.DEPARTMENT_ID) && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")).Select(m => m.ID).ToList();
userIds.AddRange(userTempIds);
}
if (item.FirstOrDefault().PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.SafeHon)
{
//发给安环部安全员
var departIds = departTemps.Select(t => t.ID).ToList();
var userTempIds = users.Where(t => t.DEPARTMENT_ID != null && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安环部安全员")).Select(m => m.ID).ToList();
userIds.AddRange(userTempIds);
}
if (item.FirstOrDefault().PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.ClassMonitor)
{
//发给班长
var userTempIds = departTemps.Where(m => teamDepartIds.Contains(m.ID) && m.DEPARTMENT_TYPE == 20 && m.USER_ID != null).Select(t => (Guid)t.USER_ID).ToList();
userIds.AddRange(userTempIds);
}
//if (item.PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.Post)
//{
// //发给岗位工
// var departIds = departTemps.Where(m => teamDepartIds.Contains(m.ID) && m.DEPARTMENT_TYPE == 2).Select(t => t.ID).ToList();
// var userTempIds = users.Where(t => departIds.Contains((Guid)t.DEPARTMENT_ID)&& t.PERSON_ID != null && personIds.Contains((Guid)t.PERSON_ID)).Select(m => m.ID).ToList();
// userIds.AddRange(userTempIds);
//}
}
if (userIds.Any())
{
//var areaIds = item.Nav_ListArea.Select(t => t.AREA_ID).Distinct().ToList();
foreach (var id in userIds)
{
var userInfo = users.FirstOrDefault(t => t.ID == id);
if (userInfo != null)
{
var departInfo = departs.FirstOrDefault(t => t.ID == userInfo.DEPARTMENT_ID);
{
//一个人一张安全检查通知表
var ex = noticeExsiss.FirstOrDefault(t => t.CHECK_TYPE_ID == item.Key.CHECK_TYPE_ID && t.APPLY_DEPARTMENT_ID == userInfo.DEPARTMENT_ID && t.APPLY_USER_ID == userInfo.ID && t.PLANCHECKFREQUENCY == item.Key.CHECK_CYCLE && t.DEPARTMENT_TYPE == item.Key.CHECK_TYPE && t.CREATE_TIME.Value.Date == dt.Date);
if (ex == null)
{
T_SK_SECURITY_INSPECTION_NOTICE safeNotice = new T_SK_SECURITY_INSPECTION_NOTICE();
safeNotice.ORG_ID = filter.OrgId;
safeNotice.APPLY_DEPARTMENT_ID = userInfo.DEPARTMENT_ID;
safeNotice.APPLY_USER_ID = userInfo.ID;
safeNotice.MineType = (SKProductionUnit)departInfo.MineType;
safeNotice.CHECK_TYPE_ID = item.Key.CHECK_TYPE_ID;
safeNotice.PLANCHECKFREQUENCY = item.Key.CHECK_CYCLE;
safeNotice.DEPARTMENT_TYPE = item.Key.CHECK_TYPE;
safeNotice.STATUS = PFStandardStatus.Draft;
safeNotice.ISAUTO = true;
safeNotices.Add(safeNotice);
var libIds = libPosts.Where(t => t.DEPARTMENT_ID == userInfo.DEPARTMENT_ID).Select(m => m.ENTERPRISE_LIBRARY_ID).Distinct().ToList();
var libDetailIds = libraryDetails.Where(t => libIds.Contains(t.ENTERPRISE_LIBRARY_ID)).Select(m => m.ID).ToList();
var content = libraryContents.Where(t => libDetailIds.Contains(t.ENTERPRISE_LIBRARY_DETAIL_ID)).ToList();
//if (item.MineType != 0)
//{
// content = libraryContents.Where(t => t.MineType == item.MineType).ToList();
//}
//if (areaIds != null && areaIds.Any())
//{
// content = libraryContents.Where(t => t.AREA_ID != null && areaIds.Contains((Guid)t.AREA_ID)).ToList();
//}
if (content != null && content.Any())
{
foreach (var item2 in content)
{
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_NOTICE_DETAIL detail = new T_SK_SECURITY_INSPECTION_NOTICE_DETAIL();
detail.ORG_ID = filter.OrgId;
detail.SECURITY_INSPECTION_NOTICE_ID = safeNotice.ID;
detail.RISK_AREA_ID = item2.AREA_ID;
detail.CHECK_CONTENTS_ID = item2.CHECK_CONTENTS_ID;
detail.CHECKCONTENT = item2.CHECK_CONTENT;
detail.CHECKPROOF = item2.CHECK_BASIC;
detail.CHECKSTANDARD = item2.CHECK_STANDARD;
detail.NUM = i;
safeDetialNotices.Add(detail);
i++;
}
}
}
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.Key.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Week)
{
endtime = DateTime.Now.AddDays(7);
}
if (item.Key.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Month)
{
endtime = DateTime.Now.AddMonths(1);
}
if (item.Key.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.HalfYear)
{
endtime = DateTime.Now.AddMonths(6);
}
if (item.Key.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Year)
{
endtime = DateTime.Now.AddMonths(12);
}
if (item.Key.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Quarter)
{
endtime = DateTime.Now.AddMonths(3);
}
var notice = NotificationTaskService.InsertUserNoticeTaskModel(item.Key.CHECK_TYPE.GetDescription() + "安全检查通知" + date + item.FirstOrDefault().Nav_CheckType?.NAME, safeNotice.ID, filter.OrgId, userInfo.ID, userInfo.NAME, DateTime.Now, endtime, (int)FMNoticeTypeEnum., "SK006");
notices.Add(notice);
}
}
}
}
}
}
}
UnifiedCommit(() =>
{
if (notices != null && notices.Any())
BantchSaveEntityNoCommit(notices);
if (safeNotices != null && safeNotices.Any())
BantchSaveEntityNoCommit(safeNotices);
if (safeDetialNotices != null && safeDetialNotices.Any())
BantchSaveEntityNoCommit(safeDetialNotices);
//if (records != null && records.Any())
// BantchSaveEntityNoCommit(records);
//if (recordDetails != null && recordDetails.Any())
// BantchSaveEntityNoCommit(recordDetails);
//if (recordDetailUsers != null && recordDetailUsers.Any())
// BantchSaveEntityNoCommit(recordDetailUsers);
});
}
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("CheckTypeSync")]
public JsonActionResult<bool> CheckTypeSync([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
try
{
//List<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART> details = new List<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART>();
var checkTypes = GetEntities<T_SK_CHECK_TYPE>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
var hiddens = GetEntities<T_SK_CHECK_QUESTION>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList();
var detailContents = GetEntities<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART>(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId), "Nav_DetailContent.Nav_LibraryDetail.Nav_Library", "Nav_CheckType").ToList();
if (detailContents != null && detailContents.Any())
{
foreach (var detail in detailContents)
{
var minetype = detail?.Nav_DetailContent?.Nav_LibraryDetail?.Nav_Library?.MineType;
var itemType = detail?.Nav_CheckType?.NAME;
var firstType = checkTypes.FirstOrDefault(t => t.MineType == minetype && t.NAME == itemType);
if (firstType != null)
{
detail.CHECK_TYPE_ID = firstType.ID;
}
}
}
UnifiedCommit(() =>
{
if (detailContents != null && detailContents.Any())
BantchSaveEntityNoCommit(detailContents);
});
}
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("SafeCheckNoticeNeww")]
public JsonActionResult<bool> SafeCheckNoticeNeww([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
try
{
var dtNow = DateTime.Now;
var year = dtNow.Year;
var month = dtNow.Month;
var day = dtNow.Day;
var week = dtNow.DayOfWeek;
List<T_SK_PLAN_SET> setList = new List<T_SK_PLAN_SET>();
//查配置表,有配才执行
var timeSets = GetEntities<T_SK_PLAN_SET>(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList();
if (timeSets != null && timeSets.Any())
{
foreach (var set in timeSets)
{
switch (set.CHECK_CYCLE)
{
case SKPLANCHECKFREQUENCYEnum.Year:
if (set.MONTH == month && set.DATA == day)
{
setList.Add(set);
}
break;
case SKPLANCHECKFREQUENCYEnum.HalfYear:
if ((set.MONTH == month && set.DATA == day) || ((set.MONTH + 6) == month && (set.DATA + 183) == day))
{
setList.Add(set);
}
break;
case SKPLANCHECKFREQUENCYEnum.Date:
setList.Add(set);
break;
//case SKPLANCHECKFREQUENCYEnum.Class:
// setList.Add(set);
break;
case SKPLANCHECKFREQUENCYEnum.Week:
if (set.WEEKDATA != null && (int)set.WEEKDATA.Value == (int)week)
{
setList.Add(set);
}
break;
case SKPLANCHECKFREQUENCYEnum.Month:
if (set.DATA == day)
{
setList.Add(set);
}
break;
case SKPLANCHECKFREQUENCYEnum.Quarter:
if (set.MONTH == 1)
{
if ((month == 1 || month == 4 || month == 7 || month == 10) && set.DATA == day)
{
setList.Add(set);
}
}
if (set.MONTH == 2)
{
if ((month == 2 || month == 5 || month == 8 || month == 11) && set.DATA == day)
{
setList.Add(set);
}
}
if (set.MONTH == 3)
{
if ((month == 3 || month == 6 || month == 9 || month == 12) && set.DATA == day)
{
setList.Add(set);
}
}
break;
default:
break;
}
}
}
List<T_FM_NOTIFICATION_TASK> notices = new List<T_FM_NOTIFICATION_TASK>();
List<T_SK_SECURITY_INSPECTION_NOTICE> safeNotices = new List<T_SK_SECURITY_INSPECTION_NOTICE>();
List<T_SK_SECURITY_INSPECTION_NOTICE_DETAIL> safeDetialNotices = new List<T_SK_SECURITY_INSPECTION_NOTICE_DETAIL>();
List<T_SK_SECURITY_INSPECTION_RECORD> records = new List<T_SK_SECURITY_INSPECTION_RECORD>();
List<T_SK_SECURITY_INSPECTION_RECORD_DETAIL> recordDetails = new List<T_SK_SECURITY_INSPECTION_RECORD_DETAIL>();
List<T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER> recordDetailUsers = new List<T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER>();
List<CheckListNew> list = new List<CheckListNew>();
List<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART> detailContents = new List<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART>();
if (setList != null && setList.Any())
{
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 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 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 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 contentDeparts = this.GetEntities<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART>(t => !t.IS_DELETED, new BaseFilter(filter.OrgId), "Nav_CheckType", "Nav_Department").ToList();
var posts = this.GetEntities<T_SK_ENTERPRISE_LIBRARY_POST>(t => !t.IS_DELETED, new BaseFilter(filter.OrgId), "Nav_PostDetails.Nav_Post").ToList();
if (librarys != null && librarys.Any())
{
foreach (var item in librarys)
{
var libraryPost = posts.Where(t => t.ENTERPRISE_LIBRARY_ID == item.ID).ToList();
var details = libraryDetails.Where(t => t.ENTERPRISE_LIBRARY_ID == item.ID).ToList();
var detailIds = details.Select(t => t.ID).ToList();
var contentTemps = contents.Where(t => detailIds.Contains(t.ENTERPRISE_LIBRARY_DETAIL_ID)).ToList();
var contentTempIds = contentTemps.Select(t => t.ID).ToList();
var contentDepartTemps = contentDeparts.Where(t => contentTempIds.Contains(t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID)).ToList();
if (contentDepartTemps != null && contentDepartTemps.Any())
{
foreach (var depart in contentDepartTemps)
{
var first = libraryPost.FirstOrDefault(t => t.DEPARTMENT_ID == depart.DEPARTMENT_ID)?.Nav_PostDetails?.Select(m => m.Nav_Post).OrderBy(n => n?.NAME).ToList();
var contentFirst = contentTemps.FirstOrDefault(t => t.ID == depart.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID);
if (first != null && first.Any())
{
foreach (var post in first)
{
//没角色的才取岗位
var userRole = users.FirstOrDefault(t => t.Nav_Person != null && t.Nav_Person.POST_ID != null && t.Nav_Person.POST_ID == post?.ID);
if (userRole == null || (userRole != null && userRole.APPROVE_ROLE_ID == null))
{
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.AREA_NAME = item.Nav_Area?.NAME;
de.ENTERPRISE_LIBRARY_DETAIL_ID = contentFirst?.ENTERPRISE_LIBRARY_DETAIL_ID;
de.ENTERPRISE_LIBRARY_ID = item.ID;
de.TYPE_NAME = depart.Nav_CheckType?.NAME;
de.DEPART_NAME = depart.Nav_Department?.NAME;
de.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID = depart.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID;
de.CHECK_CYCLE = depart.CHECK_CYCLE;
de.CHECK_TYPE_ID = depart.CHECK_TYPE_ID;
de.DEPARTMENT_ID = depart.DEPARTMENT_ID;
de.CHECK_TYPE = depart.CHECK_TYPE;
de.POST_ID = post?.ID;
detailContents.Add(de);
}
}
}
else
{
T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART de = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART();
de.POST_NAME = "未配置辨识岗位";
de.MineType = item.MineType;
de.AREA_NAME = item.Nav_Area?.NAME;
de.ENTERPRISE_LIBRARY_DETAIL_ID = contentFirst?.ENTERPRISE_LIBRARY_DETAIL_ID;
de.ENTERPRISE_LIBRARY_ID = item.ID;
de.TYPE_NAME = depart.Nav_CheckType?.NAME;
de.DEPART_NAME = depart.Nav_Department?.NAME;
de.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID = depart.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID;
de.CHECK_CYCLE = depart.CHECK_CYCLE;
de.CHECK_TYPE_ID = depart.CHECK_TYPE_ID;
de.DEPARTMENT_ID = depart.DEPARTMENT_ID;
de.CHECK_TYPE = depart.CHECK_TYPE;
detailContents.Add(de);
}
}
}
}
}
if (detailContents != null && detailContents.Any())
{
foreach (var item in contents)
{
var detailLib = libraryDetails.FirstOrDefault(t => t.ID == item.ENTERPRISE_LIBRARY_DETAIL_ID);
var lib = librarys.FirstOrDefault(t => t.ID == detailLib?.ENTERPRISE_LIBRARY_ID);
item.RISK_NAME = lib?.RISK_NAME;
item.AREA_ID = lib?.AREA_ID;
item.Nav_Area = lib?.Nav_Area;
}
foreach (var item in detailContents)
{
if (checkTypeIds != null && checkTypeIds.Any() && item.CHECK_TYPE_ID != null && checkTypeIds.Contains((Guid)item.CHECK_TYPE_ID))
{
}
else
{
if (item.CHECK_TYPE == SKDepartmentTypeEnum.)
{
item.POST_NAME = "班组负责人";
}
else if (item.CHECK_TYPE == SKDepartmentTypeEnum.)
{
item.POST_NAME = "车间安全员";
}
else if (item.CHECK_TYPE == SKDepartmentTypeEnum.)
{
item.POST_NAME = "部门安全员";
}
else
{
item.POST_NAME = "安环部安全员";
}
var user = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == item.POST_NAME);
if (user != null)
{
item.POST_ID = user.Nav_Person?.POST_ID;
}
}
}
var group = detailContents.Where(m => checkCycles.Contains(m.CHECK_CYCLE)).GroupBy(t => new { t.MineType, t.CHECK_TYPE, t.CHECK_CYCLE, t.DEPART_NAME, t.DEPARTMENT_ID, t.CHECK_TYPE_ID, t.TYPE_NAME, t.POST_NAME, t.POST_ID }).ToList();
foreach (var item in group)
{
CheckListNew listNew = new CheckListNew();
listNew.Mine = item.Key.MineType;
listNew.Cycle = item.Key.CHECK_CYCLE;
listNew.DepartType = item.Key.CHECK_TYPE;
listNew.MineType = item.Key.MineType.GetDescription();
listNew.CheckType = item.Key.TYPE_NAME;
listNew.CheckCycle = item.Key.CHECK_CYCLE.GetDescription();
listNew.CheckLevel = item.Key.CHECK_TYPE.GetDescription();
listNew.Num = (int)item.Key.CHECK_TYPE;
listNew.CheckDepart = item.Key.DEPART_NAME;
listNew.CheckPostId = item.Key.POST_ID;
listNew.CheckPost = item.Key.POST_NAME;
listNew.CheckDepartId = item.Key.DEPARTMENT_ID;
listNew.CheckTypeId = item.Key.CHECK_TYPE_ID;
var depathaveIds = detailContents.Where(t => t.DEPARTMENT_ID == item.Key.DEPARTMENT_ID && t.CHECK_TYPE_ID == item.Key.CHECK_TYPE_ID && t.CHECK_TYPE == item.Key.CHECK_TYPE && t.CHECK_CYCLE == item.Key.CHECK_CYCLE && t.MineType == item.Key.MineType && t.POST_NAME == item.Key.POST_NAME && t.POST_ID == item.Key.POST_ID).Select(m => m.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID).Distinct().ToList();
var temps = contents.Where(t => depathaveIds.Contains(t.ID)).Distinct().ToList();
if (temps.Any())
{
List<CheckListDetail> listDetail = new List<CheckListDetail>();
foreach (var tem in temps)
{
CheckListDetail checkListDetail = new CheckListDetail();
checkListDetail.CHECK_CONTENTS_ID = tem.CHECK_CONTENTS_ID;
checkListDetail.CHECK_CONTENTS_NAME = tem.Nav_Contents?.CHECKCONTENT;
checkListDetail.RISK_NAME = tem.RISK_NAME;
checkListDetail.RISK_AREA_ID = tem.AREA_ID;
checkListDetail.RISK_AREA_NAME = tem.Nav_Area?.NAME;
checkListDetail.CHECKPROOF = tem.CHECK_BASIC;
checkListDetail.CHECKSTANDARD = tem.CHECK_STANDARD;
listDetail.Add(checkListDetail);
}
listNew.details = listDetail.OrderBy(t => t.RISK_AREA_NAME).ThenBy(m => m.RISK_NAME).ToList();
}
list.Add(listNew);
}
list = list.Where(m => m.CheckDepartId != null).OrderBy(y => y.MineType).ThenBy(x => x.Num).ThenBy(n => n.CheckDepart).ToList();
}
DateTime dt = DateTime.Now;
if (filter.Parameter1 != null)
{
dt = DateTime.Parse(filter.Parameter1);
}
DateTime minTime = dt.AddMinutes(0);
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 teamIds = shiftClassList.Select(t => t.TEAM_ID).Distinct().ToList();
var teamInfos = this.GetEntities<T_FM_TEAM>(t => teamIds.Contains(t.ID), new BaseFilter(filter.OrgId));
var teamDepartIds = teamInfos.Select(m => m.DEPARTMENT_ID).Distinct().ToList();
var personIds = new List<Guid>();
if (shiftClassList != null && shiftClassList.Any())
{
foreach (var item in shiftClassList)
{
if (item.Nav_DepartmentSchedulingDetail != null && item.Nav_DepartmentSchedulingDetail.Any())
{
var ids = item.Nav_DepartmentSchedulingDetail.Select(t => t.PERSON_ID).Distinct().ToList();
personIds.AddRange(ids);
}
}
}
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<Func<T_SK_SECURITY_INSPECTION_NOTICE, bool>> expression = i => i.IS_DELETED == false && i.CREATE_TIME > minTime && i.CREATE_TIME <= maxTime;
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" };
Expression<Func<T_SK_SECURITY_INSPECTION_RECORD, bool>> expressionR = i => i.IS_DELETED == false && i.CREATE_TIME > minTime && i.CREATE_TIME <= maxTime;
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();
if (postCheckList != null && postCheckList.Any())
{
foreach (var item in postCheckList)
{
//触发安全检查记录给对应的岗位工(有排班才触发)
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 exist = recordExsiss.FirstOrDefault(t => t.APPLY_USER_ID == userInfo.ID && t.CHECK_TYPE_ID == item.CheckTypeId && t.PLANCHECKFREQUENCY == item.Cycle);
if (exist == null)
{
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.MineType = item.Mine;
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())
{
foreach (var item2 in item.details)
{
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 = userInfo.ID;
deUser.ISMAINCHECK = true;
recordDetailUsers.Add(deUser);
}
}
}
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);
}
}
}
}
//取非岗位排查
var checkList = list.Where(t => t.CheckTypeId != null && !checkTypeIds.Contains((Guid)t.CheckTypeId)).ToList();
if (checkList != null && checkList.Any())
{
foreach (var item in checkList)
{
var setTime = setList.FirstOrDefault(t => t.MineType == item.Mine && 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 == "安环部安全员")
{
userInfo = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == item.CheckPost);
}
if (item.CheckPost == "班组负责人")
{
//判断排班
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_ApproveRole != null && t.Nav_ApproveRole.NAME == item.CheckPost);
}
if (userInfo == null && item.CheckDepartId != null && item.CheckPost != "班组负责人")
{
userInfo = departs.FirstOrDefault(t => t.ID == (Guid)item.CheckDepartId)?.Nav_User;
}
if (userInfo != null)
{
//判断是否重复触发
var exist = noticeExsiss.FirstOrDefault(t => t.APPLY_USER_ID == userInfo.ID && t.CHECK_TYPE_ID == item.CheckTypeId && t.PLANCHECKFREQUENCY == item.Cycle);
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();
safeNotice.ORG_ID = filter.OrgId;
safeNotice.APPLY_DEPARTMENT_ID = userInfo.DEPARTMENT_ID;
safeNotice.APPLY_USER_ID = userInfo.ID;
safeNotice.MineType = item.Mine;
safeNotice.CHECK_TYPE_ID = item.CheckTypeId;
safeNotice.PLANCHECKFREQUENCY = item.Cycle;
safeNotice.DEPARTMENT_TYPE = item.DepartType;
safeNotice.STATUS = PFStandardStatus.Draft;
safeNotice.ISAUTO = true;
safeNotices.Add(safeNotice);
if (item.details != null && item.details.Any())
{
foreach (var item2 in item.details)
{
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_NOTICE_DETAIL detail = new T_SK_SECURITY_INSPECTION_NOTICE_DETAIL();
detail.ORG_ID = filter.OrgId;
detail.SECURITY_INSPECTION_NOTICE_ID = safeNotice.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;
safeDetialNotices.Add(detail);
}
}
}
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, safeNotice.ID, filter.OrgId, userInfo.ID, userInfo.NAME, DateTime.Now, endtime, (int)FMNoticeTypeEnum., "SK006");
notices.Add(notice);
}
}
}
}
}
UnifiedCommit(() =>
{
if (notices != null && notices.Any())
BantchSaveEntityNoCommit(notices);
if (safeNotices != null && safeNotices.Any())
BantchSaveEntityNoCommit(safeNotices);
if (safeDetialNotices != null && safeDetialNotices.Any())
BantchSaveEntityNoCommit(safeDetialNotices);
if (records != null && records.Any())
BantchSaveEntityNoCommit(records);
if (recordDetails != null && recordDetails.Any())
BantchSaveEntityNoCommit(recordDetails);
if (recordDetailUsers != null && recordDetailUsers.Any())
BantchSaveEntityNoCommit(recordDetailUsers);
});
}
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;
});
}
}
}