1、培训教育统计 报表 三级安全教育 明细 时间按培训开始时间计算

2、三级安全教育 取消责任状
3、 培训教育统计报表 按人员列表统计
This commit is contained in:
wyw 2026-08-06 10:33:29 +08:00
parent ec4c10bb0a
commit 56fba1f3b3
3 changed files with 105 additions and 27 deletions

View File

@ -1152,7 +1152,8 @@ namespace APT.SC.WebApi.Controllers.Api.BI
var startTime = time.AddDays(1 - time.Day);
var endTime = time.AddDays(1 - time.Day).AddMonths(1);
var records = GetEntities<T_SE_TRAIN_RECORD>(t => t.CREATE_TIME >= currYear && !t.IS_DELETED && t.STATUS != SETrainRecordStatus., riskFilter);
var currMonthrecords = records.Where(t => t.CREATE_TIME > startTime && t.CREATE_TIME < endTime).OrderByDescending(t => t.Nav_Notify.TRAIN_START_TIME);//.OrderBy
//var currMonthrecords = records.Where(t => t.CREATE_TIME > startTime && t.CREATE_TIME < endTime).OrderByDescending(t => t.Nav_Notify.TRAIN_START_TIME);//.OrderBy //取记录的创建时间 如果培训通知 发一个很早的培训 这样 培训开始时间和培训记录创建时间就不一致了
var currMonthrecords = records.Where(t => t.Nav_Notify.TRAIN_START_TIME.HasValue && t.Nav_Notify.TRAIN_START_TIME > startTime && t.Nav_Notify.TRAIN_START_TIME < endTime).OrderByDescending(t => t.Nav_Notify.TRAIN_START_TIME);//取培训开始时间
var recordids = currMonthrecords.Select(t => t.ID);
var examFilter = new BaseFilter(filter.GetOrgId());
examFilter.SelectField = new string[] { "USER_ID", "RECORD_ID", "SCORE" };

View File

@ -1418,21 +1418,21 @@ namespace APT.SC.WebApi.Controllers.Api.SE
break;
}
}
if (sendUser == null)
{
//找不到人只能给她自己做联系人员处理
sendNoticeRef = NotificationTaskService.InsertUserNoticeTaskModel("请联系你所在组织安全员绑定责任制岗位并上传责任状让你签订", TaskID, currUser.ORG_ID, currUser.ID, currUser.NAME, DateTime.Now, DateTime.Now.AddDays(7), (int)FMNoticeTypeEnum., "PF135");
}
else
{
var UserPost = GetEntity<T_FM_USER_POST>(currPerson.POST_ID.Value);
string Title = "请为《" + currUser.NAME + "" + UserPost.NAME + "》绑定责任制岗位并上传责任状,并让其签订";
var chaen = GetEntity<T_FM_NOTIFICATION_TASK>(e => e.USER_ID == sendUser.ID && e.SOURCE_FORMCODE == "PF135" && e.NOTICE_TITLE == Title);
if (chaen == null)
{
sendNoticeRef = NotificationTaskService.InsertUserNoticeTaskModel(Title, TaskID, currUser.ORG_ID, sendUser.ID, sendUser.NAME, DateTime.Now, DateTime.Now.AddDays(7), (int)FMNoticeTypeEnum., "PF135");
}
}
//if (sendUser == null)
//{
// //找不到人只能给她自己做联系人员处理
// sendNoticeRef = NotificationTaskService.InsertUserNoticeTaskModel("请联系你所在组织安全员绑定责任制岗位并上传责任状让你签订", TaskID, currUser.ORG_ID, currUser.ID, currUser.NAME, DateTime.Now, DateTime.Now.AddDays(7), (int)FMNoticeTypeEnum.今日提醒, "PF135");
//}
//else
//{
// var UserPost = GetEntity<T_FM_USER_POST>(currPerson.POST_ID.Value);
// string Title = "请为《" + currUser.NAME + "" + UserPost.NAME + "》绑定责任制岗位并上传责任状,并让其签订";
// var chaen = GetEntity<T_FM_NOTIFICATION_TASK>(e => e.USER_ID == sendUser.ID && e.SOURCE_FORMCODE == "PF135" && e.NOTICE_TITLE == Title);
// if (chaen == null)
// {
// sendNoticeRef = NotificationTaskService.InsertUserNoticeTaskModel(Title, TaskID, currUser.ORG_ID, sendUser.ID, sendUser.NAME, DateTime.Now, DateTime.Now.AddDays(7), (int)FMNoticeTypeEnum.今日提醒, "PF135");
// }
//}
}
}
}

View File

@ -12,6 +12,7 @@ using NPOI.XSSF.UserModel;
using System.IO;
using APT.Infrastructure.Api;
using APT.BaseData.Domain.Enums;
using System.Linq.Expressions;
namespace APT.SC.WebApi.Controllers.Api.SE
{
@ -52,26 +53,102 @@ namespace APT.SC.WebApi.Controllers.Api.SE
}
}
}
var listInfo = GetEntities<T_SE_TRAIN_RECORD_REPORT>(null, pageFilter).GroupBy(e => new { e.UNIT, e.DEPARTMENT_NAME, e.CODE, e.NAME, e.USER_ID, e.ORG_ID }).Select(e => new RECORD_REPORT { ORG_ID = e.Key.ORG_ID, UNIT = e.Key.UNIT, CODE = e.Key.CODE, USER_ID = e.Key.USER_ID, NAME = e.Key.NAME, DEPARTMENT_NAME = e.Key.DEPARTMENT_NAME, TRAIN_HOUR_ALL = e.Sum(t => t.TRAIN_HOUR) }).OrderBy(e => e.UNIT).ThenBy(e => e.DEPARTMENT_NAME).ThenBy(e => e.NAME);
var listDataT = listInfo.Skip(pageFilter.Start).Take(pageFilter.Limit).ToArray();
var listData = new List<T_SE_TRAIN_RECORD_REPORT>();
foreach (var item in listDataT)
//var listInfo = GetEntities<T_SE_TRAIN_RECORD_REPORT>(null, pageFilter).GroupBy(e => new { e.UNIT, e.DEPARTMENT_NAME, e.CODE, e.NAME, e.USER_ID, e.ORG_ID }).Select(e => new RECORD_REPORT { ORG_ID = e.Key.ORG_ID, UNIT = e.Key.UNIT, CODE = e.Key.CODE, USER_ID = e.Key.USER_ID, NAME = e.Key.NAME, DEPARTMENT_NAME = e.Key.DEPARTMENT_NAME, TRAIN_HOUR_ALL = e.Sum(t => t.TRAIN_HOUR) });
//.OrderBy(e => e.UNIT).ThenBy(e => e.DEPARTMENT_NAME).ThenBy(e => e.NAME);
if (!pageFilter.SelectField.Contains("USER_ID"))
pageFilter.SelectField.Add("USER_ID");
var listInfo = GetEntities<T_SE_TRAIN_RECORD_REPORT>(null, pageFilter);
KeywordPageFilter pageFilterUser = pageFilter;
var FilterGroup = pageFilter.FilterGroup;
FilterGroup.Groups = new List<FilterGroup>();
var Rules = FilterGroup.Rules;
FilterGroup.Rules = new List<FilterRule>();
var Fn = Rules.FirstOrDefault(e => e.Field == "NAME");
if (Fn != null)
{
FilterGroup.Rules.Add(Fn);
}
Expression<Func<T_FM_USER, bool>> expression = null;
if (Rules.Count > 0)
{
if (Rules.Count == 1 && Fn != null)
{
}
else
{
var listUserID = listInfo.Where(e => e.USER_ID.HasValue).Select(e => e.USER_ID.Value);
if (listUserID != null && listUserID.Count() > 0)
{
expression = e => listUserID.Contains(e.ID);
}
}
}
pageFilterUser.FilterGroup = FilterGroup;
pageFilterUser.SelectField = new List<string>();
var listPageUser = this.GetOrderPageEntities<T_FM_USER>(expression, pageFilterUser, "Nav_Department");
var listUser = listPageUser.Data;
var listData = new List<T_SE_TRAIN_RECORD_REPORT>();
List<T_SE_TRAIN_RECORD_REPORT> listTemp = null;
decimal TRAIN_HOUR_ALL = 0;
string UNIT = "";
string DEPARTMENT_NAME = "";
foreach (var item in listUser)
{
listTemp = listInfo.Where(e => e.USER_ID.HasValue && e.USER_ID.Value == item.ID).ToList();
if (listTemp != null && listTemp.Count > 0)
{
UNIT = listTemp[0].UNIT;
TRAIN_HOUR_ALL = listTemp.Sum(e => e.TRAIN_HOUR);
}
else
{
UNIT = "";
DEPARTMENT_NAME = "";
TRAIN_HOUR_ALL = 0;
}
listData.Add(new T_SE_TRAIN_RECORD_REPORT()
{
UNIT = item.UNIT,
DEPARTMENT_NAME = item.DEPARTMENT_NAME,
UNIT = UNIT,
DEPARTMENT_NAME = (item.Nav_Department != null ? item.Nav_Department.NAME : DEPARTMENT_NAME),
TRAIN_HOUR = TRAIN_HOUR_ALL,
CODE = item.CODE,//作为操作唯一标志
NAME = item.NAME,
USER_ID = item.USER_ID,
TRAIN_HOUR = item.TRAIN_HOUR_ALL,
USER_ID = item.ID,
START_TIME_S = START_TIME_S,
START_TIME_E = START_TIME_E,
ORG_ID = item.ORG_ID
});
}
result.TotalCount = listPageUser.TotalCount;
result.Data = listData;
result.TotalCount = listInfo.Count();
//var listDataT = listInfo.Skip(pageFilter.Start).Take(pageFilter.Limit).ToArray();
//var listData = new List<T_SE_TRAIN_RECORD_REPORT>();
//foreach (var item in listDataT)
//{
// listData.Add(new T_SE_TRAIN_RECORD_REPORT()
// {
// UNIT = item.UNIT,
// DEPARTMENT_NAME = item.DEPARTMENT_NAME,
// CODE = item.CODE,//作为操作唯一标志
// NAME = item.NAME,
// USER_ID = item.USER_ID,
// TRAIN_HOUR = item.TRAIN_HOUR_ALL,
// START_TIME_S = START_TIME_S,
// START_TIME_E = START_TIME_E,
// ORG_ID = item.ORG_ID
// });
//}
//result.Data = listData;
//result.TotalCount = listInfo.Count();
});
//var allUser = WitOrderPaged(null, pageFilter);