2024-11-19 09:45:27 +08:00
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
|
|
|
|
|
namespace BLL
|
|
|
|
|
{
|
|
|
|
|
public static class APITrainingTaskService
|
|
|
|
|
{
|
|
|
|
|
#region 根据ProjectId、PersonId获取培训任务教材明细列表
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 根据ProjectId、PersonId获取培训任务教材明细列表
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="projectId"></param>
|
|
|
|
|
/// <param name="personId"></param>
|
2025-03-05 17:00:55 +08:00
|
|
|
|
/// <param name="isRetakeCourse">是否重修:1:重修任务 、0:日常培训任务</param>
|
2024-11-19 09:45:27 +08:00
|
|
|
|
/// <returns></returns>
|
2025-03-05 17:00:55 +08:00
|
|
|
|
public static List<Model.TrainingTaskItem> getTrainingTaskListByProjectIdPersonId(string projectId, string personId, string isRetakeCourse)
|
2024-11-19 09:45:27 +08:00
|
|
|
|
{
|
|
|
|
|
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
|
|
|
|
|
{
|
|
|
|
|
personId = PersonService.GetPersonIdByUserId(personId);
|
|
|
|
|
var getDataLists = (from x in db.Training_Task
|
|
|
|
|
join y in db.Training_Plan on x.PlanId equals y.PlanId
|
2025-02-05 17:57:14 +08:00
|
|
|
|
where x.ProjectId == projectId && x.UserId == personId && y.States != "0"
|
2024-11-19 09:45:27 +08:00
|
|
|
|
orderby x.TaskDate descending
|
|
|
|
|
select new Model.TrainingTaskItem
|
|
|
|
|
{
|
|
|
|
|
TaskId = x.TaskId,
|
2025-03-05 17:00:55 +08:00
|
|
|
|
PlanId = x.PlanId,
|
2024-11-19 09:45:27 +08:00
|
|
|
|
PlanCode = y.PlanCode,
|
|
|
|
|
PlanName = y.PlanName,
|
|
|
|
|
TrainStartDate = string.Format("{0:yyyy-MM-dd HH:mm}", y.TrainStartDate),
|
|
|
|
|
TeachAddress = y.TeachAddress,
|
2025-03-05 17:00:55 +08:00
|
|
|
|
PersonId = x.UserId,
|
2024-11-19 09:45:27 +08:00
|
|
|
|
PersonName = db.SitePerson_Person.FirstOrDefault(p => p.PersonId == x.UserId).PersonName,
|
|
|
|
|
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" ? "已完成" : "培训中",
|
2025-03-06 17:51:11 +08:00
|
|
|
|
TaskStatesName = x.States == "2" ? "已完成" : "培训中",
|
|
|
|
|
TrainingItemCode = getTrainingItemCode(y.PlanId),
|
2025-03-05 17:00:55 +08:00
|
|
|
|
IsRetakeCourse = y.IsRetakeCourse == 1 ? 1 : 0,
|
2025-03-04 18:12:07 +08:00
|
|
|
|
}).ToList();
|
2025-03-05 17:00:55 +08:00
|
|
|
|
if (!string.IsNullOrWhiteSpace(isRetakeCourse))
|
|
|
|
|
{
|
|
|
|
|
getDataLists = getDataLists.Where(x => x.IsRetakeCourse == int.Parse(isRetakeCourse)).ToList();
|
|
|
|
|
}
|
2024-11-19 09:45:27 +08:00
|
|
|
|
return getDataLists;
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-03-06 17:51: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;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2024-11-19 09:45:27 +08:00
|
|
|
|
#endregion
|
|
|
|
|
|
2025-03-05 17:00:55 +08:00
|
|
|
|
#region 根据TaskId获取培训任务教材列表
|
2024-11-19 09:45:27 +08:00
|
|
|
|
/// <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
|
2025-03-06 17:51:11 +08:00
|
|
|
|
join y in db.Training_CompanyTrainingItem on x.TrainingItemCode equals y.CompanyTrainingItemCode into temp
|
|
|
|
|
from y in temp.DefaultIfEmpty()
|
2024-11-19 09:45:27 +08:00
|
|
|
|
where x.TaskId == taskId
|
|
|
|
|
orderby x.TrainingItemCode
|
|
|
|
|
select new Model.TrainingTaskItemItem
|
|
|
|
|
{
|
|
|
|
|
TaskItemId = x.TaskItemId,
|
|
|
|
|
TaskId = x.TaskId,
|
|
|
|
|
PlanId = x.PlanId,
|
2025-03-04 18:12:07 +08:00
|
|
|
|
StartTime = x.StartTime,
|
|
|
|
|
EndTime = x.EndTime,
|
2025-03-06 17:51:11 +08:00
|
|
|
|
LearningTime = x.LearnTime,
|
|
|
|
|
AttachTime = y.LearningTime,
|
2025-03-04 18:12:07 +08:00
|
|
|
|
VideoProgress = x.VideoProgress,
|
2025-03-06 17:51:11 +08:00
|
|
|
|
PersonId = x.PersonId,
|
2025-03-04 18:12:07 +08:00
|
|
|
|
TrainingItemCode = x.TrainingItemCode,
|
2024-11-19 09:45:27 +08:00
|
|
|
|
TrainingItemName = x.TrainingItemName,
|
|
|
|
|
AttachUrl = x.AttachUrl.Replace('\\', '/'),
|
2025-03-04 18:12:07 +08:00
|
|
|
|
}).ToList();
|
2024-11-19 09:45:27 +08:00
|
|
|
|
return getDataLists;
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-04-29 18:05:56 +08:00
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 根据ProjectId、PersonId获取培训任务列表
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 根据ProjectId、PersonId获取培训任务列表
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="projectId"></param>
|
|
|
|
|
/// <param name="personId"></param>
|
|
|
|
|
/// <param name="isRetakeCourse"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public static List<Model.TrainingRecordItemItem> getTrainingRecordItemListByProjectIdPersonId(string projectId, string personId, string isRetakeCourse)
|
|
|
|
|
{
|
|
|
|
|
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
|
|
|
|
|
{
|
|
|
|
|
var getDataLists = (from x in db.Training_TaskItem
|
|
|
|
|
join t in db.Training_Task on x.TaskId equals t.TaskId
|
|
|
|
|
join p in db.Training_Plan on x.PlanId equals p.PlanId
|
|
|
|
|
join y in db.Training_CompanyTrainingItem on x.TrainingItemCode equals y.CompanyTrainingItemCode into temp
|
|
|
|
|
//join z in db.Training_CompanyTraining on y.CompanyTrainingId equals z.CompanyTrainingId into temp
|
|
|
|
|
from y in temp.DefaultIfEmpty()
|
|
|
|
|
where t.ProjectId == projectId && t.UserId == personId
|
|
|
|
|
orderby x.TrainingItemCode
|
|
|
|
|
select new Model.TrainingRecordItemItem
|
|
|
|
|
{
|
|
|
|
|
TaskItemId = x.TaskItemId,
|
|
|
|
|
TaskId = x.TaskId,
|
|
|
|
|
PlanId = x.PlanId,
|
|
|
|
|
StartTime = x.StartTime,
|
|
|
|
|
EndTime = x.EndTime,
|
|
|
|
|
LearningTime = x.LearnTime,
|
|
|
|
|
AttachTime = y.LearningTime,
|
|
|
|
|
VideoProgress = x.VideoProgress,
|
|
|
|
|
PersonId = x.PersonId,
|
|
|
|
|
TrainingItemCode = x.TrainingItemCode,
|
|
|
|
|
TrainingItemName = x.TrainingItemName,
|
|
|
|
|
AttachUrl = x.AttachUrl.Replace('\\', '/'),
|
|
|
|
|
IsRetakeCourse = p.IsRetakeCourse == 1 ? 1 : 0,
|
|
|
|
|
}).ToList();
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(isRetakeCourse))
|
|
|
|
|
{
|
|
|
|
|
getDataLists = getDataLists.Where(x => x.IsRetakeCourse == int.Parse(isRetakeCourse)).ToList();
|
|
|
|
|
}
|
|
|
|
|
return getDataLists;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2024-11-19 09:45:27 +08:00
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 根据PlanId、PersonId将人员加入培训任务条件
|
|
|
|
|
/// <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
|
|
|
|
|
{
|
|
|
|
|
var person = db.SitePerson_Person.FirstOrDefault(e => e.PersonId == personId);
|
|
|
|
|
if (person != null && plan.ProjectId == person.ProjectId && plan.UnitIds.Contains(person.UnitId)
|
|
|
|
|
&& (string.IsNullOrEmpty(plan.WorkPostId) || plan.WorkPostId.Contains(person.WorkPostId)))
|
|
|
|
|
{
|
2025-03-04 18:12:07 +08:00
|
|
|
|
var trainType = db.Base_TrainType.FirstOrDefault(e => e.TrainTypeId == plan.TrainTypeId);
|
2024-11-19 09:45:27 +08:00
|
|
|
|
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 根据PlanId、PersonId将人员加入培训任务
|
|
|
|
|
/// <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,
|
2025-02-05 17:57:14 +08:00
|
|
|
|
PersonName = db.SitePerson_Person.FirstOrDefault(p => p.PersonId == x.UserId).PersonName,
|
2024-11-19 09:45:27 +08:00
|
|
|
|
TaskDate = string.Format("{0:yyyy-MM-dd HH:mm}", x.TaskDate),
|
2025-03-04 18:12:07 +08:00
|
|
|
|
States = x.States,
|
2024-11-19 09:45:27 +08:00
|
|
|
|
}).ToList();
|
|
|
|
|
return getDataLists;
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-03-04 18:12:07 +08:00
|
|
|
|
#endregion
|
2024-11-19 09:45:27 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-03-05 17:00:55 +08:00
|
|
|
|
#region 维护任务学习时长
|
2025-03-04 18:12:07 +08:00
|
|
|
|
/// <summary>
|
2025-03-05 17:00:55 +08:00
|
|
|
|
/// 维护任务学习时长
|
2025-03-04 18:12:07 +08:00
|
|
|
|
/// </summary>
|
2025-03-05 17:00:55 +08:00
|
|
|
|
/// <param name="taskItemId"></param>
|
|
|
|
|
/// <param name="startTime"></param>
|
|
|
|
|
/// <param name="endTime"></param>
|
|
|
|
|
/// <param name="VideoProgress"></param>
|
|
|
|
|
/// <returns></returns>
|
2025-03-04 18:12:07 +08:00
|
|
|
|
public static Model.Training_TaskItem updateTaskItemLearnTime(string taskItemId, DateTime startTime, DateTime endTime, string VideoProgress)
|
|
|
|
|
{
|
|
|
|
|
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;
|
|
|
|
|
}
|
2024-11-19 09:45:27 +08:00
|
|
|
|
|
2025-03-04 18:12:07 +08:00
|
|
|
|
if (!item.LearnTime.HasValue)
|
|
|
|
|
{
|
|
|
|
|
item.LearnTime = 0;
|
|
|
|
|
}
|
|
|
|
|
if (!string.IsNullOrEmpty(VideoProgress))
|
|
|
|
|
{
|
|
|
|
|
item.VideoProgress = int.Parse(VideoProgress);
|
|
|
|
|
}
|
|
|
|
|
var span = endTime.Subtract(startTime);
|
|
|
|
|
item.LearnTime = item.LearnTime.Value + (int)span.TotalMinutes;
|
|
|
|
|
item.EndTime = endTime;
|
|
|
|
|
db.SubmitChanges();
|
|
|
|
|
return item;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
}
|
2024-11-19 09:45:27 +08:00
|
|
|
|
}
|