xinjiang/SGGL/BLL/HSSE/EduTrain/TrainingPlanService.cs

443 lines
19 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 Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Numerics;
namespace BLL
{
/// <summary>
/// 培训计划
/// </summary>
public static class TrainingPlanService
{
public static Model.SGGLDB db = Funs.DB;
/// <summary>
/// 根据主键获取培训计划
/// </summary>
/// <param name="planId"></param>
/// <returns></returns>
public static Model.Training_Plan GetPlanById(string planId)
{
return db.Training_Plan.FirstOrDefault(e => e.PlanId == planId);
}
/// <summary>
/// 根据检查Id获取培训计划
/// </summary>
/// <param name="checkId"></param>
/// <returns></returns>
public static Model.Training_Plan GetPlanByCheckId(string checkId)
{
return db.Training_Plan.FirstOrDefault(e => e.CheckId == checkId && e.IsRetakeCourse == 1);
}
/// <summary>
/// 根据培训教材Id获取今年培训计划
/// </summary>
/// <param name="projectId"></param>
/// <param name="itemId"></param>
/// <param name="year"></param>
/// <returns></returns>
public static List<Model.Training_Plan> GetThisYearPlanByCompanyTrainingItemId(string projectId, string itemId, int year)
{
return db.Training_Plan.Where(e => e.ProjectId == projectId && e.CompanyTrainingItemId == itemId && e.IsRetakeCourse != 1 && ((DateTime)e.DesignerDate).Year == year).ToList();
}
/// <summary>
/// 添加培训计划
/// </summary>
/// <param name="model"></param>
public static void AddPlan(Model.Training_Plan model)
{
Model.Training_Plan newModel = new Model.Training_Plan
{
PlanId = model.PlanId,
PlanCode = model.PlanCode,
ProjectId = model.ProjectId,
DesignerId = model.DesignerId,
PlanName = model.PlanName,
TrainContent = model.TrainContent,
TrainStartDate = model.TrainStartDate,
TrainEndDate = model.TrainEndDate,
TeachHour = model.TeachHour,
TeachMan = model.TeachMan,
TeachAddress = model.TeachAddress,
TrainTypeId = model.TrainTypeId,
TrainLevelId = model.TrainLevelId,
DesignerDate = model.DesignerDate,
UnitIds = model.UnitIds,
WorkPostId = model.WorkPostId,
States = model.States,
Cycle = model.Cycle,
IsRetakeCourse = model.IsRetakeCourse,
CheckType = model.CheckType,
CheckId = model.CheckId,
CompanyTrainingItemId = model.CompanyTrainingItemId
};
db.Training_Plan.InsertOnSubmit(newModel);
db.SubmitChanges();
}
/// <summary>
/// 修改培训计划
/// </summary>
/// <param name="model"></param>
public static void UpdatePlan(Model.Training_Plan model)
{
Model.Training_Plan isUpdate = Funs.DB.Training_Plan.FirstOrDefault(e => e.PlanId == model.PlanId);
if (isUpdate != null)
{
isUpdate.PlanName = model.PlanName;
isUpdate.TrainContent = model.TrainContent;
isUpdate.TrainStartDate = model.TrainStartDate;
isUpdate.TrainEndDate = model.TrainEndDate;
isUpdate.TeachHour = model.TeachHour;
isUpdate.TeachMan = model.TeachMan;
isUpdate.TeachAddress = model.TeachAddress;
isUpdate.TrainTypeId = model.TrainTypeId;
isUpdate.TrainLevelId = model.TrainLevelId;
isUpdate.DesignerDate = model.DesignerDate;
isUpdate.UnitIds = model.UnitIds;
isUpdate.WorkPostId = model.WorkPostId;
isUpdate.States = model.States;
isUpdate.Cycle = model.Cycle;
isUpdate.IsRetakeCourse = model.IsRetakeCourse;
isUpdate.CheckType = model.CheckType;
isUpdate.CheckId = model.CheckId;
isUpdate.CompanyTrainingItemId = model.CompanyTrainingItemId;
db.SubmitChanges();
}
}
/// <summary>
/// 根据主键删除培训计划信息
/// </summary>
/// <param name="planId"></param>
public static void DeletePlanById(string planId)
{
Model.Training_Plan plan = db.Training_Plan.FirstOrDefault(e => e.PlanId == planId);
if (plan != null)
{
db.Training_Plan.DeleteOnSubmit(plan);
db.SubmitChanges();
}
}
/// <summary>
/// 获取培训计划列
/// </summary>
/// <returns></returns>
public static List<Model.Training_Plan> GetPlanList()
{
return (from x in db.Training_Plan orderby x.PlanCode select x).ToList();
}
/// <summary>
/// 获取某一岗位今年入场培训计划
/// </summary>
/// <param name="projectId"></param>
/// <param name="workPostId"></param>
/// <returns></returns>
public static List<Model.Training_Plan> GetPlanListByWorkPostId(string projectId, string workPostId)
{
var list = (from x in db.Training_Plan
where x.ProjectId == projectId && (x.WorkPostId == null || x.WorkPostId.Contains(workPostId)) && x.CompanyTrainingItemId != null && x.IsRetakeCourse == null && Convert.ToDateTime(x.DesignerDate).Year == DateTime.Now.Year
select x).ToList();
return list;
}
/// <summary>
/// 检查重修,并生成培训计划、任务
/// </summary>
/// <param name="info"></param>
public static void RetakeCourseProducePlan(ProducePlanInfo info)
{
var plan = GetPlanByCheckId(info.CheckId);
var person = PersonService.GetPersonById(info.PersonId);
var companyTrainingItem = CompanyTrainingItemService.GetCompanyTrainingItemById(info.CompanyTrainingItemId);
var teachHour = companyTrainingItem.LearningTime / 3600;
string planId = string.Empty;
if (plan != null)
{//编辑培训计划
planId = plan.PlanId;
Model.Training_Plan planModel = new Model.Training_Plan
{
ProjectId = info.CurrProjectId,
PlanName = info.CheckTypeName,
TrainContent = info.CheckTypeName,
TeachHour = teachHour,
UnitIds = person.UnitId,
WorkPostId = person.WorkPostId,
TrainStartDate = plan.TrainStartDate,
TrainEndDate = info.TrainEndDate,
TeachMan = plan.TeachMan,
TeachAddress = plan.TeachAddress,
TrainTypeId = Const.RetakeCourseTrainTypeId,
TrainLevelId = Const.OtherTrainLevelId,
States = "1",
Cycle = "",
IsRetakeCourse = 1,
CheckType = plan.CheckType,
CheckId = plan.CheckId,
CompanyTrainingItemId = info.CompanyTrainingItemId
};
UpdatePlan(planModel);
}
else
{//生成培训计划
planId = SQLHelper.GetNewID();
string code = ProjectService.GetProjectByProjectId(info.CurrProjectId).ProjectCode + "-";
string planCode = BLL.SQLHelper.RunProcNewId("SpGetNewCode5ByProjectId", "dbo.Training_Plan", "PlanCode", info.CurrProjectId, code);
Model.Training_Plan planModel = new Model.Training_Plan
{
PlanId = planId,
PlanCode = planCode,
ProjectId = info.CurrProjectId,
DesignerId = info.CurrUserId,
DesignerDate = DateTime.Now,
PlanName = info.CheckTypeName,
TrainContent = info.CheckTypeName,
TrainStartDate = DateTime.Now,
TrainEndDate = info.TrainEndDate,
TeachHour = teachHour,
//TeachMan = model.TeachMan,
//TeachAddress = model.TeachAddress,
TrainTypeId = Const.RetakeCourseTrainTypeId,
TrainLevelId = Const.OtherTrainLevelId,
UnitIds = person.UnitId,
WorkPostId = person.WorkPostId,
States = "1",
Cycle = "",
IsRetakeCourse = 1,
CheckType = info.CheckType.ToString(),
CheckId = info.CheckId,
CompanyTrainingItemId = info.CompanyTrainingItemId
};
AddPlan(planModel);
}
//删除培训明细
TrainingPlanItemService.DeletePlanItemByPlanId(planId);
//删除任务
TrainingTaskService.DeleteTaskByPlanId(planId);
string taskId = SQLHelper.GetNewID();
//新增培训任务
Model.Training_Task newTrainDetail = new Model.Training_Task
{
TaskId = taskId,
ProjectId = info.CurrProjectId,
PlanId = planId,
UserId = info.PersonId,
TaskDate = DateTime.Now,
States = Const.State_1,
};
TrainingTaskService.AddTask(newTrainDetail);
//新增培训任务明细
Model.Training_TaskItem newTaskItem = new Model.Training_TaskItem
{
TaskItemId = SQLHelper.GetNewID(),
TaskId = taskId,
PlanId = planId,
PersonId = info.PersonId,
TrainingItemCode = companyTrainingItem.CompanyTrainingItemCode,
TrainingItemName = companyTrainingItem.CompanyTrainingItemName,
AttachUrl = companyTrainingItem.AttachUrl,
CompanyTrainingItemId = info.CompanyTrainingItemId,
//LearnTime = trainingItem.LearningTime,
//VideoProgress = 0,
};
db.Training_TaskItem.InsertOnSubmit(newTaskItem);
db.SubmitChanges();
//新增培训明细
Model.Training_PlanItem newPlanItem = new Model.Training_PlanItem
{
PlanItemId = SQLHelper.GetNewID(),
PlanId = planId,
CompanyTrainingItemId = info.CompanyTrainingItemId,
CompanyTrainingId = companyTrainingItem.CompanyTrainingId
};
TrainingPlanItemService.AddPlanItem(newPlanItem);
}
/// <summary>
/// 选择教材生成培训计划
/// </summary>
/// <param name="info"></param>
public static void SelectCompanyTrainingItemProducePlan(ProducePlanInfo info)
{
var companyTrainingItem = CompanyTrainingItemService.GetCompanyTrainingItemById(info.CompanyTrainingItemId);
var teachHour = companyTrainingItem.LearningTime / 3600;
//1、根据教材id查询适用岗位下相关人员
var workPostIds = !string.IsNullOrWhiteSpace(companyTrainingItem.WorkPostIds) ? companyTrainingItem.WorkPostIds.Split(',').ToList() : new List<string>();
var workPostPersons = PersonService.GetPersonListByWorkPostIds(info.CurrProjectId, workPostIds);
//人员单位
var unitIds = workPostPersons.Any() ? String.Join(", ", workPostPersons.Select(x => x.UnitId).Distinct()) : string.Empty;
//2、根据教材id查询今年是否有相关培训计划排除重修培训计划如果有先删除
var plans = GetThisYearPlanByCompanyTrainingItemId(info.CurrProjectId, info.CompanyTrainingItemId, DateTime.Now.Year);
if (plans.Any())
{//删除今年的培训计划
foreach (var plan in plans)
{
//删除培训明细
TrainingPlanItemService.DeletePlanItemByPlanId(plan.PlanId);
//删除任务
TrainingTaskService.DeleteTaskByPlanId(plan.PlanId);
DeletePlanById(plan.PlanId);
}
}
//生成培训计划
string planId = SQLHelper.GetNewID();
string code = ProjectService.GetProjectByProjectId(info.CurrProjectId).ProjectCode + "-";
string planCode = BLL.SQLHelper.RunProcNewId("SpGetNewCode5ByProjectId", "dbo.Training_Plan", "PlanCode", info.CurrProjectId, code);
Model.Training_Plan planModel = new Model.Training_Plan
{
PlanId = planId,
PlanCode = planCode,
ProjectId = info.CurrProjectId,
DesignerId = info.CurrUserId,
DesignerDate = DateTime.Now,
PlanName = companyTrainingItem.CompanyTrainingItemName,
TrainContent = companyTrainingItem.CompanyTrainingItemName,
TrainStartDate = DateTime.Now,
TrainEndDate = info.TrainEndDate,
TeachHour = teachHour,
//TeachMan = companyTrainingItem.,
//TeachAddress = model.TeachAddress,
TrainTypeId = Const.EntryTrainTypeId,
TrainLevelId = Const.OtherTrainLevelId,
UnitIds = unitIds,
WorkPostId = companyTrainingItem.WorkPostIds,
States = "1",
Cycle = "",
//IsRetakeCourse = 0,
//CheckType = info.CheckType.ToString(),
//CheckId = info.CheckId,
CompanyTrainingItemId = info.CompanyTrainingItemId
};
AddPlan(planModel);
//新增培训明细
Model.Training_PlanItem newPlanItem = new Model.Training_PlanItem
{
PlanItemId = SQLHelper.GetNewID(),
PlanId = planId,
CompanyTrainingItemId = info.CompanyTrainingItemId,
CompanyTrainingId = companyTrainingItem.CompanyTrainingId
};
TrainingPlanItemService.AddPlanItem(newPlanItem);
List<Training_Task> newTasks = new List<Training_Task>();
List<Training_TaskItem> newTaskItems = new List<Training_TaskItem>();
//循环给人员添加任务
foreach (var person in workPostPersons)
{
string taskId = SQLHelper.GetNewID();
//新增培训任务
Model.Training_Task newTask = new Model.Training_Task
{
TaskId = taskId,
ProjectId = info.CurrProjectId,
PlanId = planId,
UserId = person.PersonId,
TaskDate = DateTime.Now,
States = Const.State_1,
};
newTasks.Add(newTask);
//新增培训任务明细
Model.Training_TaskItem newTaskItem = new Model.Training_TaskItem
{
TaskItemId = SQLHelper.GetNewID(),
TaskId = taskId,
PlanId = planId,
PersonId = person.PersonId,
TrainingItemCode = companyTrainingItem.CompanyTrainingItemCode,
TrainingItemName = companyTrainingItem.CompanyTrainingItemName,
AttachUrl = companyTrainingItem.AttachUrl,
CompanyTrainingItemId = info.CompanyTrainingItemId,
//LearnTime = trainingItem.LearningTime,
//VideoProgress = 0,
};
newTaskItems.Add(newTaskItem);
}
db.Training_Task.InsertAllOnSubmit(newTasks);
db.Training_TaskItem.InsertAllOnSubmit(newTaskItems);
db.SubmitChanges();
}
/// <summary>
/// 选择人员生成培训计划
/// </summary>
/// <param name="info"></param>
public static bool SelectPersonProducePlan(ProducePlanInfo info)
{
bool result = false;
//1、根据人员获取人员基本信息
var person = PersonService.GetPersonById(info.PersonId);
if (string.IsNullOrWhiteSpace(person.WorkPostId))
{
return result;
}
//2、根据人员岗位Id查询今年入场培训计划
var lstPlan = GetPlanListByWorkPostId(info.CurrProjectId, person.WorkPostId);
foreach (var plan in lstPlan)
{
var task = (from x in db.Training_Task
where x.ProjectId == info.CurrProjectId && x.PlanId == plan.PlanId && x.UserId == person.PersonId
select x).ToList();
if (task.Any())
{
continue;
}
var companyTrainingItem = CompanyTrainingItemService.GetCompanyTrainingItemById(plan.CompanyTrainingItemId);
string taskId = SQLHelper.GetNewID();
//新增培训任务
Model.Training_Task newTask = new Model.Training_Task
{
TaskId = taskId,
ProjectId = info.CurrProjectId,
PlanId = plan.PlanId,
UserId = person.PersonId,
TaskDate = DateTime.Now,
States = Const.State_1,
};
//新增培训任务明细
Model.Training_TaskItem newTaskItem = new Model.Training_TaskItem
{
TaskItemId = SQLHelper.GetNewID(),
TaskId = taskId,
PlanId = plan.PlanId,
PersonId = person.PersonId,
TrainingItemCode = companyTrainingItem.CompanyTrainingItemCode,
TrainingItemName = companyTrainingItem.CompanyTrainingItemName,
AttachUrl = companyTrainingItem.AttachUrl,
CompanyTrainingItemId = info.CompanyTrainingItemId,
//LearnTime = trainingItem.LearningTime,
//VideoProgress = 0,
};
db.Training_Task.InsertOnSubmit(newTask);
db.Training_TaskItem.InsertOnSubmit(newTaskItem);
db.SubmitChanges();
}
return true;
}
}
}