using APT.BaseData.Domain.Entities.FM;
using APT.BaseData.Domain.Entities;
using APT.Infrastructure.Core;
using APT.Utility;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Linq;
using APT.BaseData.Domain.IServices.FM;
using APT.MS.Domain.Enums;
using System.Collections.Generic;
using APT.BaseData.Domain.Enums.PF;
using APT.MS.Domain.Entities.OG;
using InfluxData.Net.InfluxDb.Models.Responses;
using Newtonsoft.Json.Schema;
using APT.MS.Domain.Entities.SC.SC;
using APT.MS.Domain.Entities.SC.PT;
using APT.BaseData.Domain.Enums;
using APT.BaseData.Services.Services.FM;
using APT.MS.Domain.Entities.SC.OG;
using APT.MS.Domain.Entities.SC;
using ICSharpCode.SharpZipLib.Core;
using APT.MS.Domain.Entities.SE;
using Google.Protobuf.WellKnownTypes;
using APT.WebApi.Models;
namespace APT.PP.WebApi.Controllers.Api.PP
{
///
/// 组织保障后台任务
///
[Route("api/PP/OGController")]
[TypeFilter(typeof(CustomActionFilterAttribute))]
public class OGController : AuthorizeApiController
{
IFMNotificationTaskService NotificationTaskService { get; set; }
public OGController(IFMNotificationTaskService notificationTaskService)
{
NotificationTaskService = notificationTaskService;
}
///
/// 安全教育模块所有跑批
///
///
[HttpPost, Route("OGTask")]
public JsonActionResult OGTask([FromBody] KeywordFilter filter)
{
return SafeExecute(() =>
{
//每年1月10日触发安全生产责任制签订表
CheckSafePdtPersonalSigned(filter);
//定时触发考核记录
CheckSafeAccessRecord(filter);
//每年6月1日征集员工意见触发给各部门级部门安全员,同一部门安全员多于1人时只需1人提交
CheckCreateEmployeeCollection(filter);
//回收意见
CheckEmployeeCollectionFinish(filter);
//工余事件触发
CheckCreateEventGet(filter);
//工余事件完成
CheckEventGetFinish(filter);
//工余事件上报及处理汇总
CheckEventReportSum(filter);
//创建相关方提醒
CreateReleatedAlert(filter);
return true;
});
}
private void CreateReleatedAlert(KeywordFilter filter)
{
var baseFilter1 = new BaseFilter(filter.GetOrgId());
var baseFilter2 = new BaseFilter(filter.GetOrgId());
var baseFilter3 = new BaseFilter(filter.GetOrgId());
baseFilter1.Include = new string[] { "Nav_Related.Nav_User" };
baseFilter2.Include = new string[] { "Nav_Qualification.Nav_Related.Nav_User", "Nav_Item" };
baseFilter3.Include = new string[] { "Nav_Related.Nav_User" };
var compareDay = DateTime.Now.AddMonths(3);
var releated1 = GetEntities(t => t.END_TIME.Value.Year == compareDay.Year && t.END_TIME.Value.Month == compareDay.Month && t.END_TIME.Value.Day == compareDay.Day, baseFilter1);
var releated2 = GetEntities(t => t.VALID_PERIOD.Value.Year == compareDay.Year && t.VALID_PERIOD.Value.Month == compareDay.Month && t.VALID_PERIOD.Value.Day == compareDay.Day, baseFilter2);
var releated3 = GetEntities(t => t.VALIDITY_TIME.Value.Year == compareDay.Year && t.VALIDITY_TIME.Value.Month == compareDay.Month && t.VALIDITY_TIME.Value.Day == compareDay.Day, baseFilter3);
var allSendUserTitles = new List();
var allSendDataIds = new List();
var allSendUserIds = new List();
var allSendUserNames = new List();
if (releated1.Any())
{
foreach (var item in releated1)
{
allSendUserTitles.Add("相关方《"+item.Nav_Related.NAME + "》合同/协议表中的" +item.NAME+"将于"+item.END_TIME.Value.ToShortDateString()+ "到期,请及时处理!");
allSendDataIds.Add(item.ID);
allSendUserIds.Add((Guid)item.Nav_Related.USER_ID);
allSendUserNames.Add(item.Nav_Related.Nav_User.NAME);
}
}
if (releated2.Any())
{
foreach (var item in releated2)
{
allSendUserTitles.Add("相关方《" + item.Nav_Qualification.Nav_Related.NAME+"》资质情况表中的" + item.Nav_Item.NAME+ "将于" + item.VALID_PERIOD.Value.ToShortDateString() + "到期,请及时处理!");
allSendDataIds.Add(item.ID);
allSendUserIds.Add((Guid)item.Nav_Qualification.Nav_Related.USER_ID);
allSendUserNames.Add(item.Nav_Qualification.Nav_Related.Nav_User.NAME);
}
}
if (releated3.Any())
{
foreach (var item in releated3)
{
allSendUserTitles.Add("相关方《" + item.Nav_Related.NAME + "》人员信息表中" + item.NAME+"的" + item.CERTIFICATE_NAME +"证书将于"+ item.VALIDITY_TIME.Value.ToShortDateString() + "到期,请及时处理!");
allSendDataIds.Add(item.ID);
allSendUserIds.Add((Guid)item.Nav_Related.USER_ID);
allSendUserNames.Add(item.Nav_Related.Nav_User.NAME);
}
}
if (allSendDataIds.Any())
{
var sendNotices = NotificationTaskService.InsertUserNoticeTaskModels(allSendUserTitles, allSendDataIds, filter.GetOrgId(), allSendUserIds, allSendUserNames, DateTime.Now, DateTime.Now.AddDays(1).Date, (int)FMNoticeTypeEnum.今日提醒, "PF135");
UnifiedCommit(() =>
{
if (sendNotices.Any())
BantchAddEntityNoCommit(sendNotices);
});
}
}
public void CheckSafePdtPersonalSigned([FromBody] KeywordFilter filter)
{
//检查配置是否存在,并验证是否在同一天
var dt = DateTime.Now;
DateTime startTime;
var config = GetEntity(t => true);
if (config == null)
{
startTime = new DateTime(dt.Year, 1, 10);
}
else if (config.SAFE_PDT_PERSONAL_SIGNED_TRIGGER_TIME != null)
{
startTime = (DateTime)config.SAFE_PDT_PERSONAL_SIGNED_TRIGGER_TIME;
}
else
{
return;
}
if (dt.Month != startTime.Month || dt.Day != startTime.Day)
{
return;
}
var pdtCount = GetEntities(t => t.ANNUAL == dt.Year, new BaseFilter(filter.GetOrgId())).ToList();
if (pdtCount.Any())
{
return;
}
var pdtList = new List();
var pdtListDetail = new List();
var allSendUserTitles = new List();
var allSendDataIds = new List();
var allSendUserIds = new List();
var allSendUserNames = new List();
BaseFilter baseFilter = new BaseFilter(filter.GetOrgId());
baseFilter.Include = new string[] { "Nav_Post.Nav_Depts.Nav_Posts", "Nav_Post.Nav_Depts.Nav_Department" };
baseFilter.IgnoreDataRule = true;
var standardPost = GetEntities(t => t.TYPE == SCType.安全生产责任制 && t.STATUS == SCSystemEditStatus.已归档 && t.FILE_STATUS == SCSystemFileStatus.有效, baseFilter);
BaseFilter userFilter = new BaseFilter(filter.GetOrgId());
userFilter.Include = new string[] { "Nav_User.Nav_Department" };
var allPersons = GetEntities(t => t.Nav_User.ENABLE_STATUS == 0, userFilter);
foreach (var t1 in standardPost)
{
foreach (var t2 in t1.Nav_Post.Nav_Depts)
{
var chargeUser = GetEntity(t => t.DEPARTMENT_ID == t1.Nav_Post.DEPARTMENT_ID && t.Nav_Person.POST_ID == t1.Nav_Post.DEPOST_ID && t.ENABLE_STATUS == 0);
T_OG_SAFE_PDT_SIGNED record = new T_OG_SAFE_PDT_SIGNED
{
ID = Guid.NewGuid(),
ORG_ID = filter.GetOrgId(),
STATUS = (int)PFStandardStatus.Draft,
TRIGGER_TYPE = OGPersonalSignedTriggerType.任务触发,
STANDARD_ID = t1.ID,
FILE_CONTENT = t1.FILE_CONTENT,
DEPARTMENT_ID = t2.DEPARTMENT_ID,
ANNUAL = DateTime.Now.Year
};
if (chargeUser != null)
{
record.CHARGE_USER_ID = chargeUser.ID;
}
pdtList.Add(record);
var posts = t2.Nav_Posts.Select(t => t.DEPOST_ID).ToList();
var currPostPersons = allPersons.Where(t => t.POST_ID != null && t.DEPARTMENT_ID == t2.DEPARTMENT_ID && posts.Contains((Guid)t.POST_ID));
if (currPostPersons != null && currPostPersons.Any())
{
foreach (var item in currPostPersons)
{
T_OG_SAFE_PDT_SIGNED_POST post = new T_OG_SAFE_PDT_SIGNED_POST
{
SAFE_PDT_SIGNED_ID = record.ID,
ID = Guid.NewGuid(),
ORG_ID = filter.GetOrgId(),
USER_ID = item.Nav_User.ID,
POST_ID = item.POST_ID,
CHARGE_USER_ID = record.CHARGE_USER_ID
};
allSendUserTitles.Add(DateTime.Now.ToShortDateString() + "安全生产责任制个人签订表");
allSendDataIds.Add(record.ID);
allSendUserIds.Add(item.Nav_User.ID);
allSendUserNames.Add(item.Nav_User.NAME);
pdtListDetail.Add(post);
}
}
}
}
var sendNotices = NotificationTaskService.InsertUserNoticeTaskModels(allSendUserTitles, allSendDataIds, filter.GetOrgId(), allSendUserIds, allSendUserNames, DateTime.Now, DateTime.Now.AddDays(7), 1, "OG001_SHOWPRINT");
UnifiedCommit(() =>
{
if (pdtList != null && pdtList.Any())
BantchAddEntityNoCommit(pdtList);
if (pdtListDetail != null && pdtListDetail.Any())
BantchAddEntity(pdtListDetail);
if (sendNotices != null && sendNotices.Any())
BantchAddEntityNoCommit(sendNotices);
});
}
public JsonActionResult CheckSafeAccessRecord([FromBody] KeywordFilter filter)
{
return SafeExecute(() =>
{
var dtNow = DateTime.Now;
var year = dtNow.Year;
var month = dtNow.Month;
var day = dtNow.Day;
//var time = dtNow.TimeOfDay;
var week = dtNow.DayOfWeek;
var timeSet = this.GetEntities(e => e.STATUS == OGAssessPlanInputStatus.已提交 && e.IS_DELETED == false && (e.ANNUAL == year || e.ANNUAL == (year - 1)), new BaseFilter(filter.OrgId), new string[] { "Nav_SafeAssessItem", "Nav_User", "Nav_Post" }).ToList();
if (timeSet.Count < 1)
return true;
List monitorList = new List();
List monitorDetailList = new List();
List detailContentList = new List();
List notices = new List();
foreach (var item in timeSet)
{
if (item.Nav_User != null && item.Nav_User.APPROVE_ROLE_ID != null && item.Nav_SafeAssessItem != null && item.Nav_SafeAssessItem.Any())
{
//年度
if (item.CYCLE == PTAssessmentCycleEnums.Year && item.ANNUAL == (year - 1))
{
if (month == 1 && day == 1)
{
monitorList.Add(CreateDepartMonitorNew(item, item.Nav_SafeAssessItem, PTAssessmentCycleEnums.Year, year - 1, ref notices));
}
}
//上半年度
List monthTemp = new List() { 1, 2, 3, 4, 5, 6 };
if (item.CYCLE == PTAssessmentCycleEnums.HalfYear && item.ANNUAL == year && monthTemp.Contains(item.CREATE_TIME.Value.Month))
{
if (month == 7 && day == 1)
{
monitorList.Add(CreateDepartMonitorNew(item, item.Nav_SafeAssessItem, PTAssessmentCycleEnums.HalfYear, year, ref notices));
}
}
//下半年度
monthTemp = new List() { 7, 8, 9, 10, 11, 12 };
if (item.CYCLE == PTAssessmentCycleEnums.HalfYear && item.ANNUAL == (year - 1) && monthTemp.Contains(item.CREATE_TIME.Value.Month))
{
if (month == 1 && day == 1)
{
monitorList.Add(CreateDepartMonitorNew(item, item.Nav_SafeAssessItem, PTAssessmentCycleEnums.HalfYear, year - 1, ref notices));
}
}
//季度(第四季度)
monthTemp = new List() { 12 };
if (item.CYCLE == PTAssessmentCycleEnums.Quarter && item.ANNUAL == (year - 1) && monthTemp.Contains(item.CREATE_TIME.Value.Month))
{
if (month == 1 && day == 1)
{
monitorList.Add(CreateDepartMonitorNew(item, item.Nav_SafeAssessItem, PTAssessmentCycleEnums.Quarter, year - 1, ref notices));
}
}
//季度(第1、2、3季度)
if (item.CYCLE == PTAssessmentCycleEnums.Quarter && item.ANNUAL == year && monthTemp.Contains(item.CREATE_TIME.Value.Month))
{
if ((month == 4 && day == 1) || (month == 7 && day == 1) || (month == 10 && (day == 28 || day == 29)))
{
monthTemp = new List() { month - 1 };
monitorList.Add(CreateDepartMonitorNew(item, item.Nav_SafeAssessItem, PTAssessmentCycleEnums.Quarter, year, ref notices));
}
}
//月度
monthTemp = new List() { month - 1 };
if (item.CYCLE == PTAssessmentCycleEnums.Month && item.ANNUAL == year && monthTemp.Contains(item.CREATE_TIME.Value.Month))
{
if (month != 1 && day == 1)
{
monitorList.Add(CreateDepartMonitorNew(item, item.Nav_SafeAssessItem, PTAssessmentCycleEnums.Month, year, ref notices));
}
}
//月度(第十二月)
monthTemp = new List() { 12 };
if (item.CYCLE == PTAssessmentCycleEnums.Month && item.ANNUAL == (year - 1) && monthTemp.Contains(item.CREATE_TIME.Value.Month))
{
if (month == 1 && day == 1)
{
monitorList.Add(CreateDepartMonitorNew(item, item.Nav_SafeAssessItem, PTAssessmentCycleEnums.Month, year - 1, ref notices));
}
}
}
}
if (monitorList != null && monitorList.Any())
{
monitorList.ForEach(t =>
{
if (t.Nav_Details != null && t.Nav_Details.Any())
{
t.Nav_Details.ForEach(t1 =>
{
if (t1.Nav_SafeAssessRecordItem != null && t1.Nav_SafeAssessRecordItem.Any())
{
detailContentList.AddRange(t1.Nav_SafeAssessRecordItem);
t1.Nav_SafeAssessRecordItem = null;
}
});
monitorDetailList.AddRange(t.Nav_Details);
t.Nav_Details = null;
}
});
}
UnifiedCommit(() =>
{
if (monitorList != null && monitorList.Any())
BantchSaveEntityNoCommit(monitorList);
if (monitorDetailList != null && monitorDetailList.Any())
BantchAddEntityNoCommit(monitorDetailList);
if (detailContentList != null && detailContentList.Any())
BantchAddEntityNoCommit(detailContentList);
if (notices != null && notices.Any())
BantchAddEntityNoCommit(notices);
});
return true;
});
}
///
/// 触发班组监测与考核记录表
///
///
///
///
private T_OG_SAFE_ASSESS_RECORD CreateDepartMonitorNew(T_OG_SAFE_ASSESS_PLAN_INPUT item, ICollection details, PTAssessmentCycleEnums cycle, int year, ref List notices)
{
var record = new T_OG_SAFE_ASSESS_RECORD();
record.ORG_ID = item.ORG_ID;
record.TIME = DateTime.Now;
record.USER_ID = item.USER_ID;
record.DEPARTMENT_ID = item.DEPARTMENT_ID;
record.ANNUAL = year;
record.CYCLE = cycle;
record.STATUS = PFStandardStatus.Draft;
var filter = new BaseFilter(item.ORG_ID);
filter.SelectField = new string[] { "DEPOST_ID" };
var allPosts = GetEntities(t => t.POST_ID == item.POST_ID, filter).Select(t => t.DEPOST_ID);
var userPost = new BaseFilter(item.ORG_ID);
userPost.Include = new string[] { "Nav_User" };
var allUserPosts = GetEntities(t => allPosts.Contains((Guid)t.POST_ID) && t.DEPARTMENT_ID == item.DEPARTMENT_ID, userPost);
var monitorDetails = new List();
var contents = new List();
foreach (var post in allUserPosts)
{
T_OG_SAFE_ASSESS_RECORD_DETAIL detail = new T_OG_SAFE_ASSESS_RECORD_DETAIL();
detail.ORG_ID = record.ORG_ID;
detail.POST_ID = item.POST_ID;
detail.SAFE_ASSESS_RECORD_ID = record.ID;
detail.USER_ID = post.Nav_User.ID;
foreach (var d in details)
{
T_OG_SAFE_ASSESS_RECORD_ITEM content = new T_OG_SAFE_ASSESS_RECORD_ITEM();
content.ORG_ID = record.ORG_ID;
content.RECORD_DETAIL_ID = detail.ID;
content.ROW_NO = d.ROW_NO;
content.ASSESS_ITEM_ID = d.ID;
contents.Add(content);
detail.Nav_SafeAssessRecordItem = contents;
monitorDetails.Add(detail);
}
}
record.Nav_Details = monitorDetails;
string title = "";
if (record.CYCLE == PTAssessmentCycleEnums.Day)
{
title = "每天";
}
if (record.CYCLE == PTAssessmentCycleEnums.Week)
{
title = "每周";
}
if (record.CYCLE == PTAssessmentCycleEnums.Month)
{
title = DateTime.Now.Month + "月";
}
if (record.CYCLE == PTAssessmentCycleEnums.Quarter)
{
int month = DateTime.Now.Month;
if (month >= 1 && month <= 3)
{
title = "第一季度";
}
else if (month >= 4 && month <= 6)
{
title = "第二季度";
}
else if (month >= 7 && month <= 9)
{
title = "第三季度";
}
else if (month >= 10 && month <= 12)
{
title = "第四季度";
}
}
if (record.CYCLE == PTAssessmentCycleEnums.HalfYear)
{
int month = DateTime.Now.Month;
if (month >= 1 && month <= 6)
{
title = "上半年";
}
else if (month >= 7 && month <= 12)
{
title = "下半年";
}
}
if (record.CYCLE == PTAssessmentCycleEnums.Year)
{
title = "年";
}
record.CYCLE_NAME = DateTime.Now.Year + title;
//发消息
notices.Add(NotificationTaskService.InsertUserNoticeTaskModel("(" + record.CYCLE_NAME + item.Nav_Post.NAME + ")安全生产责任制考核记录", record.ID, record.ORG_ID, item.USER_ID.Value, item?.Nav_User?.NAME, DateTime.Now,
DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "OG008"));
return record;
}
//创建员工意见征集
private void CheckCreateEmployeeCollection([FromBody] KeywordFilter filter)
{
var dt = DateTime.Now;
DateTime startTime;
var config = GetEntity(t => true);
if (config == null||config.EMPLOYEE_OPINION_TIME==null)
{
startTime = new DateTime(dt.Year, 6, 1);
}
else
{
startTime = (DateTime)config.EMPLOYEE_OPINION_TIME;
}
if (dt.Month == startTime.Month && dt.Day == startTime.Day)
{
var data = GetEntities(t => t.START_TIME.Value.Month == startTime.Month && t.START_TIME.Value.Day == startTime.Day, new BaseFilter(filter.GetOrgId())).ToList();
if (data.Count > 0)
{
return;
}
var users = GetEntities(t => t.Nav_ApproveRole.NAME == "部门安全员" || t.Nav_ApproveRole.NAME == "车间安全员" || t.Nav_ApproveRole.NAME == "安环部负责人" || t.Nav_ApproveRole.NAME == "安环部安全员", new BaseFilter(filter.GetOrgId()), new string[] { "Nav_ApproveRole", "Nav_Department" }).ToList();
List employeeOpinions = new List();
var allSendUserTitles = new List();
var allSendDataIds = new List();
var allSendUserIds = new List();
var allSendUserNames = new List();
var safeUser = users.Where(t => t.Nav_ApproveRole.NAME == "部门安全员");
if (safeUser.Count() == 0)
{
safeUser = users.Where(t => t.Nav_ApproveRole.NAME == "车间安全员");
}
safeUser.ForEach(user =>
{
var ahSafe = users.FirstOrDefault(t => t.Nav_ApproveRole.NAME == "安环部负责人");
if (ahSafe == null)
{
ahSafe = users.FirstOrDefault(t => t.Nav_ApproveRole.NAME == "安环部安全员");
}
var employeeOpinion = new T_OG_EMPLOYEE_OPINION_COLLECTION
{
ID = Guid.NewGuid(),
AH_CHARGE_USER_ID = ahSafe.ID,
DEPARTMENT_ID = user.DEPARTMENT_ID,
USER_ID = user.ID,
CHARGE_USER_ID = user.Nav_Department.USER_ID,
CREATER_ID = user.ID,
START_TIME = DateTime.Now,
ORG_ID = filter.GetOrgId(),
};
employeeOpinions.Add(employeeOpinion);
allSendUserTitles.Add("员工意见征集");
allSendDataIds.Add(employeeOpinion.ID);
allSendUserIds.Add(user.ID);
allSendUserNames.Add(user.NAME);
});
var sendNotices = NotificationTaskService.InsertUserNoticeTaskModels(allSendUserTitles, allSendDataIds, filter.GetOrgId(), allSendUserIds, allSendUserNames, DateTime.Now, DateTime.Now.AddDays(1), 1, "OG060");
UnifiedCommit(() =>
{
if (employeeOpinions != null && employeeOpinions.Any())
BantchAddEntityNoCommit(employeeOpinions);
if (sendNotices != null && sendNotices.Any())
BantchAddEntityNoCommit(sendNotices);
});
}
}
//回收员工意见
private void CheckEmployeeCollectionFinish([FromBody] KeywordFilter filter)
{
var dt = DateTime.Now;
BaseFilter baseFilter = new BaseFilter(filter.GetOrgId());
baseFilter.IgnoreDataRule = true;
var data = GetEntities(t => t.STATUS == OGEmployeeOpinionStatus.意见征集中 && t.END_TIME.Value <= dt, baseFilter).ToList();
if (data.Count == 0)
return;
var allSendUserTitles = new List();
var allSendDataIds = new List();
var allSendUserIds = new List();
var allSendUserNames = new List();
data.ForEach(it =>
{
it.STATUS = OGEmployeeOpinionStatus.汇总中;
});
data.ForEach(it =>
{
allSendUserTitles.Add("员工意见征集汇总");
allSendDataIds.Add(it.ID);
allSendUserIds.Add(it.USER_ID.Value);
allSendUserNames.Add(GetEntity(it.USER_ID.Value).NAME);
});
var sendNotices = NotificationTaskService.InsertUserNoticeTaskModels(allSendUserTitles, allSendDataIds, filter.GetOrgId(), allSendUserIds, allSendUserNames, DateTime.Now, DateTime.Now.AddDays(1), 1, "OG059_REPORT");
UnifiedCommit(() =>
{
BantchSaveEntityNoCommit(data);
BantchAddEntityNoCommit(sendNotices);
});
}
private void CheckCreateEventGet([FromBody] KeywordFilter filter)
{
//3月1日、9月1日触发给安环部负责人,触发时间和频率可以在基础设置调整
var config = GetEntity(t => true);
var mm1 = 0;
var dd1 = 0;
var mm2 = 0;
var dd2 = 0;
if (config != null)
{
if (config.EVENT_GET_TIME != null)
{
mm1 = config.EVENT_GET_TIME.Value.Month;
dd1 = config.EVENT_GET_TIME.Value.Day;
}
if (config.EVENT_GET_TIME_1 != null)
{
mm2 = config.EVENT_GET_TIME_1.Value.Month;
dd2 = config.EVENT_GET_TIME_1.Value.Day;
}
}
var dt = DateTime.Now;
if ((dt.Month != mm1 || dt.Day != dd1) && (dt.Month != mm2 || dt.Day != dd2))
return;
var mm = dt.Month;
var dd = dt.Day;
BaseFilter baseFilter = new BaseFilter(filter.GetOrgId());
baseFilter.IgnoreDataRule = true;
var data = GetEntities(t => t.START_TIME != null && t.START_TIME.Value.Month == mm && t.START_TIME.Value.Day == dd && t.BACK, baseFilter).ToList();
if (data.Count > 0)
{
return;
}
var AHUser = GetEntity(t => t.Nav_ApproveRole.NAME == "安环部负责人");
if( AHUser == null )
{
AHUser = GetEntity(t => t.Nav_ApproveRole.NAME == "安环部安全员");
}
var evt = new T_OG_EVENT_GET
{
ID = Guid.NewGuid(),
ORG_ID = filter.GetOrgId(),
USER_ID = AHUser.ID,
START_TIME = dt,
DEPARTMENT_ID = AHUser.DEPARTMENT_ID,
BACK = true,
};
var sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("工余事件征集", evt.ID, evt.ORG_ID, AHUser.ID, AHUser.NAME, DateTime.Now, DateTime.Now.AddDays(1), 1, "OG030");
UnifiedCommit(() =>
{
AddEntityNoCommit(evt);
if (sendNotice != null)
AddEntityNoCommit(sendNotice);
});
}
public void CheckEventGetFinish([FromBody] KeywordFilter filter)
{
var dt = DateTime.Now;
var reportGet = GetEntity(t => t.START_TIME.Value.Year == dt.Year && t.STATUS == OGEventStatus.征集中, new string[] { "Nav_Details.Nav_Items" });
if (reportGet == null)
return;
var mm = reportGet.END_TIME.Value.Month;
var dd = reportGet.END_TIME.Value.Day;
if (dt.Month != mm || dt.Day != dd)
return;
var AHUser = GetEntity(t => t.Nav_ApproveRole.NAME == "安环部负责人");
if (AHUser == null)
{
AHUser = GetEntity(t => t.Nav_ApproveRole.NAME == "安环部安全员");
};
reportGet.STATUS = OGEventStatus.汇总中;
int count = 0;
var allDetails = reportGet.Nav_Details.Where(t => t.STATUS == OGEventGetUserStatus.完成);
foreach (var item in allDetails)
{
count += item.Nav_Items.Count();
}
reportGet.EVENT_COUNT = count;
var sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("工余事件征集汇总", reportGet.ID, filter.GetOrgId(), AHUser.ID, AHUser.NAME, DateTime.Now, DateTime.Now.AddDays(1), 0, "OG030_SHOWPRINT");
UnifiedCommit(() =>
{
UpdateEntityNoCommit(reportGet);
AddEntityNoCommit(sendNotice);
});
}
public void CheckEventReportSum([FromBody] KeywordFilter filter)
{
var last = GetEntity(t => t.TIME < DateTime.Now.AddMonths(-1));
if (last == null)
{
var total = GetCount(t => t.IS_DELETED == false, new BaseFilter(filter.GetOrgId()));
var num = GetCount(t => t.IS_DELETED == false && t.STATUS == PFStandardStatus.Archived, new BaseFilter(filter.GetOrgId()));
T_OG_EVENT_REPORT_SUM sum = new T_OG_EVENT_REPORT_SUM();
if (total > 0)
{
sum.RATIO = num / total * 100;
sum.SUM_YEAR = DateTime.Now.Year;
sum.TIME = DateTime.Now;
sum.ORG_ID = filter.GetOrgId();
UnifiedCommit(() =>
{
AddEntityNoCommit(sum);
});
}
}
}
//检查相关方是否证件到期
private void CheckReleateExpire(KeywordFilter filter)
{
var baseFilter = new BaseFilter(filter.GetOrgId());
baseFilter.Include = new string[] { "Nav_User" };
var allTrain = GetEntities(t => t.IS_DELETED == false, baseFilter);
var overTime = allTrain.Where(t => t.REVIEW_DATE == DateTime.Now.Date.AddMonths(3));
//overTime = allTrain.Where(t => t.REVIEW_DATE == DateTime.Parse("2023-05-02").AddMonths(3));
var equalTime = allTrain.Where(t => t.REVIEW_DATE == DateTime.Now.Date);
var AHUser = GetEntity(t => t.Nav_ApproveRole.NAME == "安环部安全员" && t.ENABLE_STATUS == 0);
if (AHUser != null)
{
var allSendUserTitles = new List();
var allSendDataIds = new List();
var allSendUserIds = new List();
var allSendUserNames = new List();
if (overTime.Any())
{
foreach (var item in overTime)
{
allSendUserTitles.Add(item.Nav_User.NAME + item.Nav_User.CODE + "《" + item.CERTIFICATE_NAME + "》证书将于" + item.REVIEW_DATE.ToShortDateString() + "到期复审,请提前安排委外培训");
allSendDataIds.Add(item.ID);
allSendUserIds.Add(item.USER_ID);
allSendUserNames.Add(item.Nav_User.NAME);
allSendUserTitles.Add(item.Nav_User.NAME + item.Nav_User.CODE + "《" + item.CERTIFICATE_NAME + "》证书将于" + item.REVIEW_DATE.ToShortDateString() + "到期复审,请提前安排委外培训");
allSendDataIds.Add(item.ID);
allSendUserIds.Add(AHUser.ID);
allSendUserNames.Add(AHUser.NAME);
}
}
if (equalTime.Any())
{
foreach (var item in equalTime)
{
allSendUserTitles.Add(item.Nav_User.NAME + item.Nav_User.CODE + "《" + item.CERTIFICATE_NAME + "》证书于" + item.REVIEW_DATE.ToShortDateString() + "到期,请到换证培训更新复审日期!");
allSendDataIds.Add(item.ID);
allSendUserIds.Add(AHUser.ID);
allSendUserNames.Add(AHUser.NAME);
}
}
if (allSendDataIds.Any())
{
var sendNotices = NotificationTaskService.InsertUserNoticeTaskModels(allSendUserTitles, allSendDataIds, filter.GetOrgId(), allSendUserIds, allSendUserNames, DateTime.Now, DateTime.Now.AddDays(1).Date, (int)FMNoticeTypeEnum.今日提醒, "PF135");
UnifiedCommit(() =>
{
if (sendNotices.Any())
BantchAddEntityNoCommit(sendNotices);
});
}
}
}
}
}