1、培训记录取消 添加状态 2、安全教育与培训统计分析报表 通过率取 人员考核结果 3、效果评估 优良率 不需要效果评估的比例为 -

This commit is contained in:
wyw 2026-05-27 10:55:28 +08:00
parent de1db46811
commit b9c44c6ae2
3 changed files with 67 additions and 38 deletions

View File

@ -134,6 +134,7 @@ namespace APT.MS.Domain.Enums
public enum SETrainRecordStatus public enum SETrainRecordStatus
{ {
= -1,
稿 = 0, 稿 = 0,
= 1, = 1,
= 2, = 2,

View File

@ -1125,7 +1125,7 @@ namespace APT.SC.WebApi.Controllers.Api.BI
/// <summary> /// <summary>
/// 安全培训教育统计分析 /// 安全培训教育统计分析
/// </summary> /// </summary>
/// <param name="pageFilter">返回系统用户数</param> /// <param name="filter">返回系统用户数</param>
/// <returns></returns> /// <returns></returns>
[HttpPost, Route("getSafeTrainData")] [HttpPost, Route("getSafeTrainData")]
public JsonActionResult<safeTrainData> getSafeTrainData([FromBody] KeywordFilter filter) public JsonActionResult<safeTrainData> getSafeTrainData([FromBody] KeywordFilter filter)
@ -1135,13 +1135,11 @@ namespace APT.SC.WebApi.Controllers.Api.BI
var riskFilter = new BaseFilter(filter.GetOrgId()); var riskFilter = new BaseFilter(filter.GetOrgId());
riskFilter.Include = new string[] { "Nav_Notify.Nav_TrainUserList", "Nav_Users", "Nav_Notify" }; riskFilter.Include = new string[] { "Nav_Notify.Nav_TrainUserList", "Nav_Users", "Nav_Notify" };
DateTime time = DateTime.Parse(filter.Parameter1); DateTime time = DateTime.Parse(filter.Parameter1);
DateTime currYear = DateTime.Parse(time.Year + " 01-01"); DateTime currYear = DateTime.Parse(time.Year + " 01-01 00:00:00");
var startTime = time.AddDays(1 - time.Day); var startTime = time.AddDays(1 - time.Day);
var endTime = time.AddDays(1 - time.Day).AddMonths(1); var endTime = time.AddDays(1 - time.Day).AddMonths(1);
var records = GetEntities<T_SE_TRAIN_RECORD>(t => t.CREATE_TIME > currYear, riskFilter); var records = GetEntities<T_SE_TRAIN_RECORD>(t => t.CREATE_TIME >= currYear && !t.IS_DELETED && t.STATUS != SETrainRecordStatus., riskFilter);
var testCount = GetCount<T_SE_TEST>(t => t.IS_DELETED == false, new BaseFilter(filter.GetOrgId())); var currMonthrecords = records.Where(t => t.CREATE_TIME > startTime && t.CREATE_TIME < endTime).OrderByDescending(t => t.Nav_Notify.TRAIN_START_TIME);//.OrderBy
var threeLevelCount = GetCount<T_SE_THREE_LEVEL_SAFE_EDU_CARD>(t => t.IS_DELETED == false, new BaseFilter(filter.GetOrgId()));
var currMonthrecords = records.Where(t => t.CREATE_TIME > startTime && t.CREATE_TIME < endTime).OrderBy(t => t.Nav_Notify.TRAIN_START_TIME);
var recordids = currMonthrecords.Select(t => t.ID); var recordids = currMonthrecords.Select(t => t.ID);
var examFilter = new BaseFilter(filter.GetOrgId()); var examFilter = new BaseFilter(filter.GetOrgId());
examFilter.SelectField = new string[] { "USER_ID", "RECORD_ID", "SCORE" }; examFilter.SelectField = new string[] { "USER_ID", "RECORD_ID", "SCORE" };
@ -1152,38 +1150,67 @@ namespace APT.SC.WebApi.Controllers.Api.BI
var effects = GetEntities<T_SE_TRAINING_EFFECT_EVALUATION>(t => notifyIds.Contains((Guid)t.SURVEY_ID), effectFilter); var effects = GetEntities<T_SE_TRAINING_EFFECT_EVALUATION>(t => notifyIds.Contains((Guid)t.SURVEY_ID), effectFilter);
List<trainRecords> trainRecords = new List<trainRecords>(); List<trainRecords> trainRecords = new List<trainRecords>();
int countPer = 0;
int countPass = 0;
foreach (var item in currMonthrecords) foreach (var item in currMonthrecords)
{ {
trainRecords trainRecord = new trainRecords(); trainRecords trainRecord = new trainRecords();
trainRecord.NAME = item.Nav_Notify.NAME; trainRecord.NAME = item.Nav_Notify.NAME;
if (item.Nav_Notify.TRAIN_START_TIME.HasValue && item.Nav_Notify.TRAIN_END_TIME.HasValue && item.Nav_Notify.TRAIN_START_TIME.Value.Date == item.Nav_Notify.TRAIN_END_TIME.Value.Date)
{
trainRecord.TIMERANGE = item.Nav_Notify.TRAIN_START_TIME + " - " + item.Nav_Notify.TRAIN_END_TIME.Value.ToString("HH:mm:ss");
}
else
{
trainRecord.TIMERANGE = item.Nav_Notify.TRAIN_START_TIME + "-" + item.Nav_Notify.TRAIN_END_TIME; trainRecord.TIMERANGE = item.Nav_Notify.TRAIN_START_TIME + "-" + item.Nav_Notify.TRAIN_END_TIME;
trainRecord.SHOULD_TRAINER = item.Nav_Notify.Nav_TrainUserList.Count(); }
trainRecord.ACTUAL_TRAINER = item.Nav_Users.Count(); trainRecord.SHOULD_TRAINER = item.Nav_Notify.Nav_TrainUserList.Where(e => !e.IS_DELETED).Count();//
trainRecord.ACTUAL_TRAINER = item.Nav_Users.Where(e => !e.IS_DELETED && e.OK).Count();//有签到
//trainRecord.METHOD = item.Nav_Notify.Nav_TrainCheckType.NAME; //trainRecord.METHOD = item.Nav_Notify.Nav_TrainCheckType.NAME;
//if (item.Nav_Notify.Nav_TrainCheckType.NAME == "笔试") //if (item.Nav_Notify.Nav_TrainCheckType.NAME == "笔试")
trainRecord.METHOD = item.Nav_Notify.CHECKTYPE.GetDescription(); trainRecord.METHOD = item.Nav_Notify.CHECKTYPE.GetDescription();
if (item.Nav_Notify.CHECKTYPE == PlanCheckType.InOnLine)
{
var currExams = exams.Where(t => t.RECORD_ID == item.ID); #region //T_SE_TRAIN_RECORD_USER SEExaminationResultsEnum? EXAMINATION_RESULTS { get; set; }
var currCount = currExams.Count();
if (currCount > 0) countPer = item.Nav_Users.Where(e => !e.IS_DELETED).Count();
{ countPass = item.Nav_Users.Where(e => !e.IS_DELETED && e.EXAMINATION_RESULTS.HasValue && e.EXAMINATION_RESULTS.Value == SEExaminationResultsEnum.).Count();
var passExams = currExams.Where(t => t.SCORE >= 80); if (countPer == 0)
var passCount = passExams.Count();
var rate = (passCount * 1.0 / currCount);
trainRecord.PASS_RATE = rate.ToString();
}
else
{
trainRecord.PASS_RATE = "0";
}
}
else
{ {
trainRecord.PASS_RATE = "1"; trainRecord.PASS_RATE = "1";
} }
else
{
trainRecord.PASS_RATE = (countPass * 1.00 / countPer).ToString();
}
//if (item.Nav_Notify.CHECKTYPE == PlanCheckType.InOnLine)
//{
// var currExams = exams.Where(t => t.RECORD_ID == item.ID);
// //var currCount = currExams.Count();
// var currCount = trainRecord.ACTUAL_TRAINER;//分母应该是 有参加培训的人数
// if (currCount > 0)
// {
// var passExams = currExams.Where(t => t.SCORE >= 80);
// var passCount = passExams.Count();
// var rate = (passCount * 1.0 / currCount);
// trainRecord.PASS_RATE = rate.ToString();
// var ccc = (3 * 1.00 / 10).ToString();
// }
// else
// {
// trainRecord.PASS_RATE = "0";
// }
//}
//else
//{
// trainRecord.PASS_RATE = "1";
//}
#endregion
if (item.Nav_Notify.NEED_EVALUATION == SETrainNeedSuvey.) if (item.Nav_Notify.NEED_EVALUATION == SETrainNeedSuvey.)
{ {
var effect = effects.FirstOrDefault(t => t.SURVEY_ID == item.NOTIFY_ID); var effect = effects.FirstOrDefault(t => t.SURVEY_ID == item.NOTIFY_ID);
@ -1198,7 +1225,7 @@ namespace APT.SC.WebApi.Controllers.Api.BI
sumTotal += num1; sumTotal += num1;
sumTotal += num2; sumTotal += num2;
} }
trainRecord.EFFORT_RATE = (sumTotal / effectResult.Count()).ToString(); trainRecord.EFFORT_RATE = (1.00 * sumTotal / effectResult.Count()).ToString();
} }
else else
{ {
@ -1207,7 +1234,7 @@ namespace APT.SC.WebApi.Controllers.Api.BI
} }
else else
{ {
trainRecord.EFFORT_RATE = "100"; trainRecord.EFFORT_RATE = "-";
} }
trainRecords.Add(trainRecord); trainRecords.Add(trainRecord);
@ -1220,17 +1247,17 @@ namespace APT.SC.WebApi.Controllers.Api.BI
DateTime endTime1 = new DateTime(today.Year, i, 1).AddMonths(1).AddSeconds(-1); DateTime endTime1 = new DateTime(today.Year, i, 1).AddMonths(1).AddSeconds(-1);
dateCountModel riskDate = new dateCountModel(); dateCountModel riskDate = new dateCountModel();
riskDate.DATE = startTime1; riskDate.DATE = startTime1;
riskDate.COUNT = records.Count(t => t.CREATE_TIME > startTime1 && t.CREATE_TIME < endTime1); riskDate.COUNT = records.Count(t => t.CREATE_TIME >= startTime1 && t.CREATE_TIME <= endTime1);
item3s.Add(riskDate); item3s.Add(riskDate);
} }
safeTrainData safeTrainData = new safeTrainData(); safeTrainData safeTrainData = new safeTrainData();
safeTrainData.NUM1 = 1; safeTrainData.NUM1 = 1;
safeTrainData.NUM2 = records.Count(); safeTrainData.NUM2 = records.Count();
safeTrainData.NUM3 = threeLevelCount; safeTrainData.NUM3 = GetCount<T_SE_THREE_LEVEL_SAFE_EDU_CARD>(t => t.IS_DELETED == false, new BaseFilter(filter.GetOrgId()));
safeTrainData.NUM4 = 13; safeTrainData.NUM4 = 13;
safeTrainData.NUM5 = 14; safeTrainData.NUM5 = 14;
safeTrainData.NUM6 = 15; safeTrainData.NUM6 = 15;
safeTrainData.NUM7 = testCount; safeTrainData.NUM7 = GetCount<T_SE_TEST>(t => t.IS_DELETED == false, new BaseFilter(filter.GetOrgId()));
safeTrainData.trainRecords = trainRecords; safeTrainData.trainRecords = trainRecords;
safeTrainData.dateCountModel = item3s; safeTrainData.dateCountModel = item3s;
return safeTrainData; return safeTrainData;

View File

@ -169,6 +169,7 @@ namespace APT.SC.WebApi.Controllers.Api.SE
entity.ISSTOPSIGN = true;//停止签到 entity.ISSTOPSIGN = true;//停止签到
entity.MODIFY_TIME = DateTime.Now; entity.MODIFY_TIME = DateTime.Now;
entity.STATUS = SETrainRecordStatus.;
UnifiedCommit(() => UnifiedCommit(() =>
{ {
UpdateEntityNoCommit(entity); UpdateEntityNoCommit(entity);