mh_sms/APT.MicroApi/APT.PP.WebApi/Controllers/Api/OGController.cs
2024-01-22 09:17:01 +08:00

721 lines
35 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.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
{
/// <summary>
/// 组织保障后台任务
/// </summary>
[Route("api/PP/OGController")]
[TypeFilter(typeof(CustomActionFilterAttribute))]
public class OGController : AuthorizeApiController<T_FM_BASE_CONFIG>
{
IFMNotificationTaskService NotificationTaskService { get; set; }
public OGController(IFMNotificationTaskService notificationTaskService)
{
NotificationTaskService = notificationTaskService;
}
/// <summary>
/// 安全教育模块所有跑批
/// </summary>
/// <returns></returns>
[HttpPost, Route("OGTask")]
public JsonActionResult<bool> OGTask([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
//每年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_OG_RELATED_AGREEMENT>(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_OG_RELATED_QUALIFICATION_DETAIL>(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_OG_RELATED_USER>(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<string>();
var allSendDataIds = new List<Guid>();
var allSendUserIds = new List<Guid>();
var allSendUserNames = new List<string>();
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_OG_OGCONFIG>(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_OG_SAFE_PDT_SIGNED>(t => t.ANNUAL == dt.Year, new BaseFilter(filter.GetOrgId())).ToList();
if (pdtCount.Any())
{
return;
}
var pdtList = new List<T_OG_SAFE_PDT_SIGNED>();
var pdtListDetail = new List<T_OG_SAFE_PDT_SIGNED_POST>();
var allSendUserTitles = new List<string>();
var allSendDataIds = new List<Guid>();
var allSendUserIds = new List<Guid>();
var allSendUserNames = new List<string>();
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_SC_STANDARD_CREATE>(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_FM_PERSON>(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_FM_USER>(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<bool> CheckSafeAccessRecord([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
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<T_OG_SAFE_ASSESS_PLAN_INPUT>(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<T_OG_SAFE_ASSESS_RECORD> monitorList = new List<T_OG_SAFE_ASSESS_RECORD>();
List<T_OG_SAFE_ASSESS_RECORD_DETAIL> monitorDetailList = new List<T_OG_SAFE_ASSESS_RECORD_DETAIL>();
List<T_OG_SAFE_ASSESS_RECORD_ITEM> detailContentList = new List<T_OG_SAFE_ASSESS_RECORD_ITEM>();
List<T_FM_NOTIFICATION_TASK> notices = new List<T_FM_NOTIFICATION_TASK>();
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<int> monthTemp = new List<int>() { 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<int>() { 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<int>() { 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<int>() { month - 1 };
monitorList.Add(CreateDepartMonitorNew(item, item.Nav_SafeAssessItem, PTAssessmentCycleEnums.Quarter, year, ref notices));
}
}
//月度
monthTemp = new List<int>() { 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<int>() { 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;
});
}
/// <summary>
/// 触发班组监测与考核记录表
/// </summary>
/// <param name="item"></param>
/// <param name="details"></param>
/// <param name="notices"></param>
private T_OG_SAFE_ASSESS_RECORD CreateDepartMonitorNew(T_OG_SAFE_ASSESS_PLAN_INPUT item, ICollection<T_OG_SAFE_ASSESS_ITEM> details, PTAssessmentCycleEnums cycle, int year, ref List<T_FM_NOTIFICATION_TASK> 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_SC_POST_DEPOST>(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_FM_PERSON>(t => allPosts.Contains((Guid)t.POST_ID) && t.DEPARTMENT_ID == item.DEPARTMENT_ID, userPost);
var monitorDetails = new List<T_OG_SAFE_ASSESS_RECORD_DETAIL>();
var contents = new List<T_OG_SAFE_ASSESS_RECORD_ITEM>();
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_OG_OGCONFIG>(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_OG_EMPLOYEE_OPINION_COLLECTION>(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_FM_USER>(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<T_OG_EMPLOYEE_OPINION_COLLECTION> employeeOpinions = new List<T_OG_EMPLOYEE_OPINION_COLLECTION>();
var allSendUserTitles = new List<string>();
var allSendDataIds = new List<Guid>();
var allSendUserIds = new List<Guid>();
var allSendUserNames = new List<string>();
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_OG_EMPLOYEE_OPINION_COLLECTION>(t => t.STATUS == OGEmployeeOpinionStatus. && t.END_TIME.Value <= dt, baseFilter).ToList();
if (data.Count == 0)
return;
var allSendUserTitles = new List<string>();
var allSendDataIds = new List<Guid>();
var allSendUserIds = new List<Guid>();
var allSendUserNames = new List<string>();
data.ForEach(it =>
{
it.STATUS = OGEmployeeOpinionStatus.;
});
data.ForEach(it =>
{
allSendUserTitles.Add("员工意见征集汇总");
allSendDataIds.Add(it.ID);
allSendUserIds.Add(it.USER_ID.Value);
allSendUserNames.Add(GetEntity<T_FM_USER>(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_OG_OGCONFIG>(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_OG_EVENT_GET>(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_FM_USER>(t => t.Nav_ApproveRole.NAME == "安环部负责人");
if( AHUser == null )
{
AHUser = GetEntity<T_FM_USER>(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_OG_EVENT_GET>(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_FM_USER>(t => t.Nav_ApproveRole.NAME == "安环部负责人");
if (AHUser == null)
{
AHUser = GetEntity<T_FM_USER>(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_OG_EVENT_REPORT_SUM>(t => t.TIME < DateTime.Now.AddMonths(-1));
if (last == null)
{
var total = GetCount<T_OG_EVENT_REPORT>(t => t.IS_DELETED == false, new BaseFilter(filter.GetOrgId()));
var num = GetCount<T_OG_EVENT_REPORT>(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_SE_RENEWAL_TRAIN>(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_FM_USER>(t => t.Nav_ApproveRole.NAME == "安环部安全员" && t.ENABLE_STATUS == 0);
if (AHUser != null)
{
var allSendUserTitles = new List<string>();
var allSendDataIds = new List<Guid>();
var allSendUserIds = new List<Guid>();
var allSendUserNames = new List<string>();
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);
});
}
}
}
}
}