public void GenerateCollectPlan_Temp(string billNo)
        {
            DepotManagementDataContext ctx = CommentParameter.DepotDataContext;

            ctx.Connection.Open();
            ctx.Transaction = ctx.Connection.BeginTransaction();

            try
            {
                var varData = from a in ctx.HR_Train_Plan
                              join b in ctx.HR_Train_PlanCourse on a.BillNo equals b.BillNo
                              where a.BillNo == billNo
                              select new { YearValue = a.YearValue, MonthValue = b.MonthValue,
                                           CourseID  = b.CourseID, PlanCourseID = b.ID };

                foreach (var item in varData)
                {
                    HR_Train_PlanCollect collect = new HR_Train_PlanCollect();

                    Guid guid = Guid.NewGuid();

                    collect.CourseID   = item.CourseID;
                    collect.ID         = guid;
                    collect.MonthValue = (int?)item.MonthValue;
                    collect.PlanBillNo = billNo;
                    collect.PlanType   = CE_HR_Train_PlanType.临时培训计划.ToString();
                    collect.YearValue  = (int?)item.YearValue;

                    ctx.HR_Train_PlanCollect.InsertOnSubmit(collect);
                    ctx.SubmitChanges();

                    var varWorkID = from a in ctx.HR_Train_PlanUser
                                    where a.PlanCourseID == item.PlanCourseID
                                    select a;

                    foreach (var workID in varWorkID)
                    {
                        HR_Train_PlanCollectUser user = new HR_Train_PlanCollectUser();

                        user.CollectID = guid;
                        user.WorkID    = workID.WorkID;

                        ctx.HR_Train_PlanCollectUser.InsertOnSubmit(user);
                    }
                    ctx.SubmitChanges();
                }

                ctx.SubmitChanges();
                ctx.Transaction.Commit();
            }
            catch (Exception ex)
            {
                ctx.Transaction.Rollback();
                throw new Exception(ex.Message);
            }
        }
        public void SaveCollect(List <View_HR_Train_PlanCollect> lstPlan)
        {
            DepotManagementDataContext ctx = CommentParameter.DepotDataContext;

            ctx.Connection.Open();
            ctx.Transaction = ctx.Connection.BeginTransaction();

            try
            {
                foreach (View_HR_Train_PlanCollect plan in lstPlan)
                {
                    HR_Train_PlanCollect collect = new HR_Train_PlanCollect();

                    var varData = from a in ctx.HR_Train_PlanCollect
                                  where a.ID == plan.ID
                                  select a;

                    if (varData.Count() == 1)
                    {
                        varData.Single().MonthValue = plan.月份;
                    }
                    else
                    {
                        throw new Exception("数据异常");
                    }

                    ctx.SubmitChanges();
                }

                ctx.SubmitChanges();
                ctx.Transaction.Commit();
            }
            catch (Exception ex)
            {
                ctx.Transaction.Rollback();
                throw new Exception(ex.Message);
            }
        }
        public void GenerateCollectPlan_Year(List <string> lstBillNo, int yearValue)
        {
            DepotManagementDataContext ctx = CommentParameter.DepotDataContext;

            ctx.Connection.Open();
            ctx.Transaction = ctx.Connection.BeginTransaction();

            try
            {
                var varCollect = from a in ctx.HR_Train_PlanCollect
                                 where a.YearValue == yearValue && a.PlanType == CE_HR_Train_PlanType.年度培训计划.ToString()
                                 select a;

                ctx.HR_Train_PlanCollect.DeleteAllOnSubmit(varCollect);
                ctx.SubmitChanges();


                var varData_Dept = (from a in ctx.HR_Train_Plan
                                    join b in ctx.HR_Train_PlanCourse on a.BillNo equals b.BillNo
                                    join c in ctx.HR_Train_PlanUser on b.ID equals c.PlanCourseID
                                    join d in ctx.HR_Train_Rel_CommCourse on b.CourseID equals d.CourseID
                                    into lef
                                    from LF in lef.DefaultIfEmpty()
                                    where LF.CommCourseID == null && lstBillNo.Contains(a.BillNo)
                                    select new { CourseID = b.CourseID, WorkID = c.WorkID, MonthValue = b.MonthValue.ToString() }).Distinct();

                var varData_Comm = (from a in ctx.HR_Train_Plan
                                    join b in ctx.HR_Train_PlanCourse on a.BillNo equals b.BillNo
                                    join c in ctx.HR_Train_PlanUser on b.ID equals c.PlanCourseID
                                    join d in ctx.HR_Train_Rel_CommCourse on b.CourseID equals d.CourseID
                                    into lef
                                    from LF in lef.DefaultIfEmpty()
                                    where LF.CommCourseID != null && lstBillNo.Contains(a.BillNo)
                                    select new { CourseID = LF.CommCourseID, WorkID = c.WorkID, MonthValue = "" }).Distinct();

                var varDataTemp = varData_Comm.Union(varData_Dept);

                var varTemp1 = (from a in varDataTemp
                                select new { a.CourseID, a.MonthValue }).Distinct();

                foreach (var item in varTemp1)
                {
                    HR_Train_PlanCollect collect = new HR_Train_PlanCollect();

                    Guid guid = Guid.NewGuid();

                    collect.CourseID   = item.CourseID;
                    collect.ID         = guid;
                    collect.MonthValue = item.MonthValue == "" ? null : (int?)Convert.ToInt32(item.MonthValue);
                    collect.PlanBillNo = null;
                    collect.PlanType   = CE_HR_Train_PlanType.年度培训计划.ToString();
                    collect.YearValue  = yearValue;

                    ctx.HR_Train_PlanCollect.InsertOnSubmit(collect);
                    ctx.SubmitChanges();

                    var varTemp2 = (from a in varDataTemp
                                    where a.CourseID == item.CourseID &&
                                    a.MonthValue == item.MonthValue
                                    select a.WorkID).Distinct().ToList();

                    foreach (string workID in varTemp2)
                    {
                        HR_Train_PlanCollectUser user = new HR_Train_PlanCollectUser();
                        user.CollectID = guid;
                        user.WorkID    = workID;

                        ctx.HR_Train_PlanCollectUser.InsertOnSubmit(user);
                    }

                    ctx.SubmitChanges();
                }

                var varPlan = from a in ctx.HR_Train_Plan
                              where lstBillNo.Contains(a.BillNo)
                              select a;

                foreach (HR_Train_Plan item in varPlan)
                {
                    item.IsCollect = true;
                }

                ctx.SubmitChanges();
                ctx.Transaction.Commit();
            }
            catch (Exception ex)
            {
                ctx.Transaction.Rollback();
                throw new Exception(ex.Message);
            }
        }