ChengDa_English/SGGL/BLL/API/HSSE/APITrainingTaskService.cs

338 lines
15 KiB
C#
Raw Normal View History

2022-03-15 17:36:38 +08:00
using System;
using System.Collections.Generic;
using System.Linq;
2024-05-24 09:36:11 +08:00
using System.Numerics;
2022-03-15 17:36:38 +08:00
namespace BLL
{
public static class APITrainingTaskService
{
#region ProjectIdPersonId获取培训任务教材明细列表
/// <summary>
/// 根据ProjectId、PersonId获取培训任务教材明细列表
/// </summary>
/// <param name="projectId"></param>
/// <param name="personId"></param>
/// <param name="states">1-培训中2-已完成</param>
/// <returns></returns>
public static List<Model.TrainingTaskItem> getTrainingTaskListByProjectIdPersonId(string projectId, string personId)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
2023-07-11 16:32:16 +08:00
personId = PersonService.GetPersonIdByUserIdForApi(personId);
2022-03-15 17:36:38 +08:00
var getDataLists = (from x in db.Training_Task
join y in db.Training_Plan on x.PlanId equals y.PlanId
2022-12-20 09:32:32 +08:00
where ((string.IsNullOrEmpty(projectId) && x.ProjectId == null) || (!string.IsNullOrEmpty(projectId) && x.ProjectId == projectId)) && x.UserId == personId && y.States != "0"
2022-03-15 17:36:38 +08:00
orderby x.TaskDate descending
select new Model.TrainingTaskItem
{
TaskId = x.TaskId,
//PlanId = x.PlanId,
PlanCode = y.PlanCode,
PlanName = y.PlanName,
TrainStartDate = string.Format("{0:yyyy-MM-dd HH:mm}", y.TrainStartDate),
TeachAddress = y.TeachAddress,
2022-12-20 09:32:32 +08:00
PersonId = x.UserId,
2022-03-15 17:36:38 +08:00
TaskDate = string.Format("{0:yyyy-MM-dd HH:mm}", x.TaskDate),
TrainTypeName = db.Base_TrainType.FirstOrDefault(b => b.TrainTypeId == y.TrainTypeId).TrainTypeName,
TrainLevelName = db.Base_TrainLevel.FirstOrDefault(b => b.TrainLevelId == y.TrainLevelId).TrainLevelName,
PlanStatesName = y.States == "3" ? "已完成" : "培训中",
2024-05-24 09:36:11 +08:00
TrainingItemCode = getTrainingItemCode(y.PlanId)
2022-03-15 17:36:38 +08:00
}).ToList();
2022-12-20 09:32:32 +08:00
foreach(var item in getDataLists)
{
var user = db.Sys_User.FirstOrDefault(x=>x.UserId==item.PersonId);
if (user != null)
{
item.PersonName = user.UserName;
}
else
{
var person = db.SitePerson_Person.FirstOrDefault(p => p.PersonId == item.PersonId);
item.PersonName = person.PersonName ;
}
}
2022-03-15 17:36:38 +08:00
return getDataLists;
}
}
2024-05-24 09:36:11 +08:00
public static string getTrainingItemCode(string PlanId)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var ids = db.Training_PlanItem.Where(xx => xx.PlanId == PlanId).Select(x => x.CompanyTrainingItemId).ToList();
var codes= db.Training_CompanyTrainingItem.Where(x => ids.Contains(x.CompanyTrainingItemId)).Select(x => x.CompanyTrainingItemCode);
string res = string.Join(",", codes);
return res;
}
return "";
}
2022-03-15 17:36:38 +08:00
#endregion
#region TaskId获取培训任务教材明细列表
/// <summary>
/// 根据TaskId获取培训任务列表
/// </summary>
/// <param name="taskId"></param>
/// <returns></returns>
public static List<Model.TrainingTaskItemItem> getTrainingTaskItemListByTaskId(string taskId)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
////生成培训任务下培训明细
GetDataService.CreateTrainingTaskItemByTaskId(taskId);
var getDataLists = (from x in db.Training_TaskItem
2024-05-24 17:51:17 +08:00
join y in db.Training_CompanyTrainingItem on x.TrainingItemCode equals y.CompanyTrainingItemCode into temp
from y in temp.DefaultIfEmpty()
2022-03-15 17:36:38 +08:00
where x.TaskId == taskId
orderby x.TrainingItemCode
select new Model.TrainingTaskItemItem
{
TaskItemId = x.TaskItemId,
TaskId = x.TaskId,
PlanId = x.PlanId,
2023-09-22 17:36:00 +08:00
StartTime = x.StartTime,
EndTime =x.EndTime,
2024-05-24 17:51:17 +08:00
LearningTime= x.LearnTime,
AttachTime= y.LearningTime,
2023-09-22 17:36:00 +08:00
VideoProgress = x.VideoProgress,
2022-03-15 17:36:38 +08:00
PersonId = x.PersonId,
TrainingItemCode = x.TrainingItemCode,
TrainingItemName = x.TrainingItemName,
AttachUrl = x.AttachUrl.Replace('\\', '/'),
}).ToList();
return getDataLists;
}
}
#endregion
#region PlanIdPersonId将人员加入培训任务条件
/// <summary>
/// 根据PlanId、PersonId将人员加入培训任务条件
/// </summary>
/// <param name="planId">培训计划ID</param>
/// <param name="personId">人员ID</param>
/// <returns></returns>
public static string getTrainingTaskByPlanIdPersonIdCondition(string planId, string personId)
{
string alterString = string.Empty;
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var task = db.Training_Task.FirstOrDefault(x => x.PlanId == planId && x.UserId == personId);
if (task != null)
{
alterString = "人员已在培训任务中!";
}
else
{
var plan = db.Training_Plan.FirstOrDefault(e => e.PlanId == planId);
if (plan != null)
{
if (plan.States != "0" && plan.States != "1")
{
alterString = "当前培训不能再加入人员!";
}
else
{
2022-12-20 09:32:32 +08:00
var user = db.Sys_User.FirstOrDefault(e => e.UserId == personId);
2022-03-15 17:36:38 +08:00
var person = db.SitePerson_Person.FirstOrDefault(e => e.PersonId == personId);
2022-12-20 09:32:32 +08:00
if ((person != null && plan.ProjectId == person.ProjectId && plan.UnitIds.Contains(person.UnitId)
&& (string.IsNullOrEmpty(plan.WorkPostId) || plan.WorkPostId.Contains(person.WorkPostId)))|| (user != null && plan.UnitIds.Contains(person.UnitId)
&& (string.IsNullOrEmpty(plan.DepartIds) || plan.DepartIds.Contains(person.DepartId))))
2022-03-15 17:36:38 +08:00
{
var trainType = db.Base_TrainType.FirstOrDefault(e => e.TrainTypeId == plan.TrainTypeId);
if (trainType != null)
{
if (!trainType.IsRepeat.HasValue || trainType.IsRepeat == false)
{
var trainRecord = (from x in db.EduTrain_TrainRecord
join y in db.EduTrain_TrainRecordDetail on x.TrainingId equals y.TrainingId
where x.TrainTypeId == plan.TrainTypeId && x.ProjectId == person.ProjectId
&& y.PersonId == personId && y.CheckResult == true
select x).FirstOrDefault();
if (trainRecord != null)
{
alterString = "人员已参加过当前类型的培训!";
}
else
{
var getTask = (from x in db.Training_Plan
join y in db.Training_Task on x.PlanId equals y.PlanId
where x.TrainTypeId == plan.TrainTypeId && y.UserId == personId && x.States != "3"
select x).FirstOrDefault();
if (getTask != null)
{
alterString = "人员已再同培训类型的培训中!";
}
}
}
}
else
{
alterString = "当前培训类型有问题!";
}
}
else
{
alterString = "人员与培训计划不匹配!";
}
}
}
else
{
alterString = "当前培训计划不允许再增加人员!";
}
}
}
return alterString;
}
#endregion
#region PlanIdPersonId将人员加入培训任务
/// <summary>
/// 根据PlanId、PersonId将人员加入培训任务
/// </summary>
/// <param name="planId">培训计划ID</param>
/// <param name="personId">人员ID</param>
/// <returns></returns>
public static void getTrainingTaskByPlanIdPersonId(string planId, string personId)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var plan = db.Training_Plan.FirstOrDefault(e => e.PlanId == planId);
Model.Training_Task newTask = new Model.Training_Task
{
TaskId = SQLHelper.GetNewID(),
PlanId = planId,
UserId = personId,
TaskDate = DateTime.Now,
States = "0",
};
if (plan != null)
{
newTask.ProjectId = plan.ProjectId;
db.Training_Task.InsertOnSubmit(newTask);
db.SubmitChanges();
////生成培训任务下培训明细
GetDataService.CreateTrainingTaskItemByTaskId(newTask.TaskId);
}
}
}
#endregion
#region TrainingPlanId获取培训任务教材明细列表
/// <summary>
/// 根据TrainingPlanId获取培训任务教材明细列表
/// </summary>
/// <param name="trainingPlanId"></param>
/// <returns>培训计划人员</returns>
public static List<Model.TrainingTaskItem> getTrainingTaskListByTrainingPlanId(string trainingPlanId)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var getDataLists = (from x in db.Training_Task
where x.PlanId == trainingPlanId
orderby x.TaskDate descending
select new Model.TrainingTaskItem
{
TaskId = x.TaskId,
PlanId = x.PlanId,
PersonId = x.UserId,
2022-12-20 09:32:32 +08:00
2022-03-15 17:36:38 +08:00
TaskDate = string.Format("{0:yyyy-MM-dd HH:mm}", x.TaskDate),
States = x.States,
}).ToList();
2022-12-20 09:32:32 +08:00
foreach(var item in getDataLists)
{
var person = db.SitePerson_Person.FirstOrDefault(p => p.PersonId == item.PersonId);
if (person != null)
{
item.PersonName = person.PersonName;
}
else
{
var sysUser = db.Sys_User.FirstOrDefault(p => p.UserId == item.PersonId);
if (sysUser != null)
{
item.PersonName = sysUser.UserName;
}
}
}
2022-03-15 17:36:38 +08:00
return getDataLists;
}
}
2023-08-29 18:56:49 +08:00
#endregion
#region TrainingPlanId获取培训任务教材明细列表
/// <summary>
/// 根据TrainingPlanId获取培训任务教材明细列表
/// </summary>
/// <param name="trainingPlanId"></param>
/// <returns>培训计划人员</returns>
2023-09-22 17:36:00 +08:00
public static Model.Training_TaskItem updateTaskItemLearnTime(string taskItemId,DateTime startTime,DateTime endTime,string VideoProgress)
2023-08-29 18:56:49 +08:00
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var q = from x in db.Training_TaskItem
where x.TaskItemId == taskItemId
select x;
var item = q.FirstOrDefault();
if (!item.StartTime.HasValue)
{
item.StartTime = startTime;
}
2023-09-22 17:36:00 +08:00
//if (!item.LearnTime.HasValue)
//{
// item.LearnTime = 0;
//}
if (!string.IsNullOrEmpty(VideoProgress))
2023-08-29 18:56:49 +08:00
{
2024-05-24 09:36:11 +08:00
//if (!item.VideoProgress.HasValue)
//{
// item.VideoProgress = 0;
//}
item.VideoProgress = int.Parse(VideoProgress);
2023-08-29 18:56:49 +08:00
}
var span = endTime.Subtract(startTime);
2024-05-24 09:36:11 +08:00
if (!item.LearnTime.HasValue)
{
item.LearnTime = 0;
}
2024-05-24 17:51:17 +08:00
item.LearnTime = item.LearnTime.Value + (int)span.TotalSeconds;
2024-05-24 09:36:11 +08:00
item.EndTime = endTime;
2023-08-29 18:56:49 +08:00
db.SubmitChanges();
2024-05-24 17:51:17 +08:00
var companyTrainingItem = db.Training_CompanyTrainingItem.FirstOrDefault(x => x.CompanyTrainingItemCode == item.TrainingItemCode);
int companyTrainingItemLearnTime = companyTrainingItem?.LearningTime ?? 0; //培训教材时长(秒)
//如果学习时长大于培训教材时长,则关闭状态
2024-05-24 17:51:17 +08:00
if (item.LearnTime > companyTrainingItemLearnTime)
{
var taskModel = db.Training_Task.FirstOrDefault(x => x.TaskId == item.TaskId);
taskModel.States = "2";
db.SubmitChanges();
2024-05-24 17:51:17 +08:00
}
return item;
2023-08-29 18:56:49 +08:00
}
}
#endregion
}
2022-03-15 17:36:38 +08:00
}