537 lines
		
	
	
		
			27 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			537 lines
		
	
	
		
			27 KiB
		
	
	
	
		
			C#
		
	
	
	
|  | using System; | |||
|  | using System.Collections.Generic; | |||
|  | using System.Linq; | |||
|  | using System.Text; | |||
|  | using System.Threading.Tasks; | |||
|  | using EmitMapper; | |||
|  | using EmitMapper.MappingConfiguration; | |||
|  | 
 | |||
|  | namespace BLL | |||
|  | { | |||
|  |     /// <summary> | |||
|  |     /// 考试计划 | |||
|  |     /// </summary> | |||
|  |     public static class APITestPlanService | |||
|  |     { | |||
|  |         #region 根据projectId、states获取考试计划列表 | |||
|  |         /// <summary> | |||
|  |         /// 根据projectId、states获取考试计划列表 | |||
|  |         /// </summary> | |||
|  |         /// <param name="projectId">项目ID</param> | |||
|  |         /// <param name="states">状态(0-待提交;1-已发布;2-考试中;3考试结束)</param> | |||
|  |         /// <returns></returns> | |||
|  |         public static List<Model.TestPlanItem> getTestPlanListByProjectIdStates(string projectId, string states) | |||
|  |         { | |||
|  |             using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) | |||
|  |             { | |||
|  |                 var getDataLists = (from x in db.Training_TestPlan | |||
|  |                                     where x.ProjectId == projectId && (x.States == states || states == null) | |||
|  |                                     orderby x.TestStartTime descending | |||
|  |                                     select new Model.TestPlanItem | |||
|  |                                     { | |||
|  |                                         TestPlanId = x.TestPlanId, | |||
|  |                                         TestPlanCode = x.PlanCode, | |||
|  |                                         TestPlanName = x.PlanName, | |||
|  |                                         ProjectId = x.ProjectId, | |||
|  |                                         TestPlanManId = x.PlanManId, | |||
|  |                                         TestPlanManName = db.Sys_User.First(y => y.UserId == x.PlanManId).UserName, | |||
|  |                                         TestPalce = x.TestPalce, | |||
|  |                                         TestStartTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.TestStartTime), | |||
|  |                                         TestEndTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.TestEndTime), | |||
|  |                                         States = x.States, | |||
|  |                                         QRCodeUrl = x.QRCodeUrl.Replace('\\', '/'), | |||
|  |                                     }).ToList(); | |||
|  |                 return getDataLists; | |||
|  |             } | |||
|  |         } | |||
|  |         #endregion | |||
|  | 
 | |||
|  |         #region 根据考试ID获取考试计划详细 | |||
|  |         /// <summary> | |||
|  |         /// 根据考试ID获取考试计划详细 | |||
|  |         /// </summary> | |||
|  |         /// <param name="testPlanId"></param> | |||
|  |         /// <returns></returns> | |||
|  |         public static Model.TestPlanItem getTestPlanByTestPlanId(string testPlanId) | |||
|  |         { | |||
|  |             using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) | |||
|  |             { | |||
|  |                 var getDataLists = from x in db.Training_TestPlan | |||
|  |                                    where x.TestPlanId == testPlanId | |||
|  |                                    select new Model.TestPlanItem | |||
|  |                                    { | |||
|  |                                        TestPlanId = x.TestPlanId, | |||
|  |                                        ProjectId = x.ProjectId, | |||
|  |                                        TestPlanCode = x.PlanCode, | |||
|  |                                        TestPlanName = x.PlanName, | |||
|  |                                        TestPlanManId = x.PlanManId, | |||
|  |                                        TestPlanManName = db.Sys_User.First(y => y.UserId == x.TestPlanId).UserName, | |||
|  |                                        TestPlanDate = string.Format("{0:yyyy-MM-dd HH:mm}", x.PlanDate), | |||
|  |                                        TestStartTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.TestStartTime), | |||
|  |                                        TestEndTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.TestEndTime), | |||
|  |                                        Duration = x.Duration, | |||
|  |                                        SValue = x.SValue, | |||
|  |                                        MValue = x.MValue, | |||
|  |                                        JValue = x.JValue, | |||
|  |                                        TotalScore = x.TotalScore ?? 0, | |||
|  |                                        QuestionCount = x.QuestionCount ?? 0, | |||
|  |                                        TestPalce = x.TestPalce, | |||
|  |                                        UnitIds = x.UnitIds, | |||
|  |                                        UnitNames = UnitService.getUnitNamesUnitIds(x.UnitIds), | |||
|  |                                        WorkPostIds = x.WorkPostIds, | |||
|  |                                        WorkPostNames = WorkPostService.getWorkPostNamesWorkPostIds(x.WorkPostIds), | |||
|  |                                        States = x.States, | |||
|  |                                        QRCodeUrl = x.QRCodeUrl.Replace('\\', '/'), | |||
|  |                                        TrainingPlanId = x.PlanId, | |||
|  |                                    }; | |||
|  |                 return getDataLists.FirstOrDefault(); | |||
|  |             } | |||
|  |         } | |||
|  |         #endregion | |||
|  | 
 | |||
|  |         #region 保存考试计划 | |||
|  |         /// <summary> | |||
|  |         /// 保存TestPlan | |||
|  |         /// </summary> | |||
|  |         /// <param name="getTestPlan">考试计划记录</param> | |||
|  |         public static string SaveTestPlan(Model.TestPlanItem getTestPlan) | |||
|  |         { | |||
|  |             string alterStr =string.Empty ; | |||
|  |             using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) | |||
|  |             { | |||
|  |                 Model.Training_TestPlan newTestPlan = new Model.Training_TestPlan | |||
|  |                 { | |||
|  |                     TestPlanId = getTestPlan.TestPlanId, | |||
|  |                     ProjectId = getTestPlan.ProjectId, | |||
|  |                     PlanCode = getTestPlan.TestPlanCode, | |||
|  |                     PlanName = getTestPlan.TestPlanName, | |||
|  |                     PlanManId = getTestPlan.TestPlanManId, | |||
|  |                     //PlanDate= getTestPlan.TestPlanDate, | |||
|  |                     TestStartTime = Funs.GetNewDateTimeOrNow(getTestPlan.TestStartTime), | |||
|  |                     TestEndTime = Funs.GetNewDateTimeOrNow(getTestPlan.TestEndTime), | |||
|  |                     Duration = getTestPlan.Duration, | |||
|  |                     SValue = getTestPlan.SValue, | |||
|  |                     MValue = getTestPlan.MValue, | |||
|  |                     JValue = getTestPlan.JValue, | |||
|  |                     TotalScore = getTestPlan.TotalScore, | |||
|  |                     QuestionCount = getTestPlan.QuestionCount, | |||
|  |                     TestPalce = getTestPlan.TestPalce, | |||
|  |                     UnitIds = getTestPlan.UnitIds, | |||
|  |                     WorkPostIds = getTestPlan.WorkPostIds, | |||
|  |                     States = getTestPlan.States, | |||
|  |                     PlanDate = DateTime.Now, | |||
|  |                 }; | |||
|  | 
 | |||
|  |                 if (!string.IsNullOrEmpty(getTestPlan.TrainingPlanId)) | |||
|  |                 { | |||
|  |                     newTestPlan.PlanId = getTestPlan.TrainingPlanId; | |||
|  |                 } | |||
|  |                 var isUpdate = db.Training_TestPlan.FirstOrDefault(x => x.TestPlanId == newTestPlan.TestPlanId); | |||
|  |                 if (isUpdate == null) | |||
|  |                 { | |||
|  |                     string unitId = string.Empty; | |||
|  |                     var user = db.Sys_User.FirstOrDefault(e => e.UserId == newTestPlan.PlanManId);  | |||
|  |                     if (user != null) | |||
|  |                     { | |||
|  |                         unitId = user.UnitId; | |||
|  |                     } | |||
|  |                     newTestPlan.PlanCode = CodeRecordsService.ReturnCodeByMenuIdProjectId(Const.ProjectTestPlanMenuId, newTestPlan.ProjectId, unitId); | |||
|  |                     if (string.IsNullOrEmpty(newTestPlan.TestPlanId)) | |||
|  |                     { | |||
|  |                         newTestPlan.TestPlanId = SQLHelper.GetNewID(); | |||
|  |                     } | |||
|  | 
 | |||
|  |                     db.Training_TestPlan.InsertOnSubmit(newTestPlan); | |||
|  |                     db.SubmitChanges(); | |||
|  | 
 | |||
|  |                     CodeRecordsService.InsertCodeRecordsByMenuIdProjectIdUnitId(Const.ProjectTestPlanMenuId, newTestPlan.ProjectId, null, newTestPlan.TestPlanId, newTestPlan.PlanDate); | |||
|  |                 } | |||
|  |                 else | |||
|  |                 { | |||
|  |                     isUpdate.States = newTestPlan.States; | |||
|  |                     if (isUpdate.States == "0" || isUpdate.States == "1") | |||
|  |                     { | |||
|  |                         isUpdate.PlanName = newTestPlan.PlanName; | |||
|  |                         isUpdate.PlanManId = newTestPlan.PlanManId; | |||
|  |                         isUpdate.PlanDate = newTestPlan.PlanDate; | |||
|  |                         isUpdate.TestStartTime = newTestPlan.TestStartTime; | |||
|  |                         isUpdate.TestEndTime = newTestPlan.TestEndTime; | |||
|  |                         isUpdate.Duration = newTestPlan.Duration; | |||
|  |                         isUpdate.TotalScore = newTestPlan.TotalScore; | |||
|  |                         isUpdate.QuestionCount = newTestPlan.QuestionCount; | |||
|  |                         isUpdate.TestPalce = newTestPlan.TestPalce; | |||
|  |                         isUpdate.UnitIds = newTestPlan.UnitIds; | |||
|  |                         isUpdate.WorkPostIds = newTestPlan.WorkPostIds; | |||
|  |                         ////删除 考生记录 | |||
|  |                         var deleteRecords = from x in db.Training_TestRecord | |||
|  |                                             where x.TestPlanId == isUpdate.TestPlanId | |||
|  |                                             select x; | |||
|  |                         if (deleteRecords.Count() > 0) | |||
|  |                         { | |||
|  |                             foreach (var item in deleteRecords) | |||
|  |                             { | |||
|  |                                 var testRecordItem = from x in db.Training_TestRecordItem | |||
|  |                                                      where x.TestRecordId == item.TestRecordId | |||
|  |                                                      select x; | |||
|  |                                 if (testRecordItem.Count() > 0) | |||
|  |                                 { | |||
|  |                                     db.Training_TestRecordItem.DeleteAllOnSubmit(testRecordItem); | |||
|  |                                     db.SubmitChanges(); | |||
|  |                                 } | |||
|  |                             } | |||
|  | 
 | |||
|  |                            db.Training_TestRecord.DeleteAllOnSubmit(deleteRecords); | |||
|  |                             db.SubmitChanges(); | |||
|  |                         } | |||
|  | 
 | |||
|  |                         ////删除 考试题目类型 | |||
|  |                         var deleteTestPlanTrainings = from x in db.Training_TestPlanTraining where x.TestPlanId == isUpdate.TestPlanId select x; | |||
|  |                         if (deleteTestPlanTrainings.Count() > 0) | |||
|  |                         { | |||
|  |                             db.Training_TestPlanTraining.DeleteAllOnSubmit(deleteTestPlanTrainings); | |||
|  |                             db.SubmitChanges(); | |||
|  |                         } | |||
|  | 
 | |||
|  |                     } | |||
|  |                     else if (isUpdate.States == "3") ////考试状态3时 更新培训计划状态 把培训计划写入培训记录中 | |||
|  |                     { | |||
|  |                         DateTime? endTime = Funs.GetNewDateTime(getTestPlan.TestEndTime); | |||
|  |                         ////判断是否有未考完的考生 | |||
|  |                         var getTrainingTestRecords = db.Training_TestRecord.FirstOrDefault(x => x.TestPlanId == isUpdate.TestPlanId | |||
|  |                                             && (!x.TestStartTime.HasValue || ((!x.TestEndTime.HasValue || !x.TestScores.HasValue) && x.TestStartTime.Value.AddMinutes(isUpdate.Duration) >= DateTime.Now))); | |||
|  |                         if (getTrainingTestRecords != null && endTime.HasValue && endTime.Value.AddMinutes(isUpdate.Duration) < DateTime.Now) | |||
|  |                         { | |||
|  |                             alterStr = "当前存在未交卷考生,不能提前结束考试!"; | |||
|  |                             isUpdate.States = "2"; | |||
|  |                         } | |||
|  |                         else | |||
|  |                         { | |||
|  |                             SubmitTest(isUpdate); | |||
|  |                         } | |||
|  |                     } | |||
|  |                     else if (newTestPlan.States == "2") ////开始考试 只更新考试计划状态为考试中。 | |||
|  |                     { | |||
|  |                         if (isUpdate.TestStartTime > DateTime.Now) | |||
|  |                         { | |||
|  |                             isUpdate.States = "1"; | |||
|  |                             alterStr = "未到考试扫码开始时间,不能开始考试!"; | |||
|  |                         } | |||
|  |                     } | |||
|  |                     if (string.IsNullOrEmpty(alterStr)) | |||
|  |                     { | |||
|  |                         db.SubmitChanges(); | |||
|  |                     } | |||
|  |                 } | |||
|  | 
 | |||
|  |                 if (newTestPlan.States == "0" || newTestPlan.States == "1") | |||
|  |                 { | |||
|  |                     if (getTestPlan.TestRecordItems.Count() > 0) | |||
|  |                     { | |||
|  |                         ////新增考试人员明细                         | |||
|  |                         foreach (var item in getTestPlan.TestRecordItems) | |||
|  |                         { | |||
|  |                             var person = db.SitePerson_Person.FirstOrDefault(e => e.PersonId == item.TestManId);  | |||
|  |                             if (person != null) | |||
|  |                             { | |||
|  |                                 Model.Training_TestRecord newTrainDetail = new Model.Training_TestRecord | |||
|  |                                 { | |||
|  |                                     TestRecordId = SQLHelper.GetNewID(), | |||
|  |                                     ProjectId = newTestPlan.ProjectId, | |||
|  |                                     TestPlanId = newTestPlan.TestPlanId, | |||
|  |                                     TestManId = item.TestManId, | |||
|  |                                     TestType = item.TestType, | |||
|  |                                     Duration = newTestPlan.Duration, | |||
|  |                                 }; | |||
|  |                                 db.Training_TestRecord.InsertOnSubmit(newTrainDetail); | |||
|  |                                 db.SubmitChanges(); | |||
|  |                             } | |||
|  |                         } | |||
|  |                     } | |||
|  |                     if (getTestPlan.TestPlanTrainingItems.Count() > 0) | |||
|  |                     { | |||
|  |                         foreach (var item in getTestPlan.TestPlanTrainingItems) | |||
|  |                         { | |||
|  |                             var trainingType = TestTrainingService.GetTestTrainingById(item.TrainingTypeId); | |||
|  |                             if (trainingType != null) | |||
|  |                             { | |||
|  |                                 Model.Training_TestPlanTraining newPlanItem = new Model.Training_TestPlanTraining | |||
|  |                                 { | |||
|  |                                     TestPlanTrainingId = SQLHelper.GetNewID(), | |||
|  |                                     TestPlanId = newTestPlan.TestPlanId, | |||
|  |                                     TrainingId = item.TrainingTypeId, | |||
|  |                                     TestType1Count = item.TestType1Count, | |||
|  |                                     TestType2Count = item.TestType2Count, | |||
|  |                                     TestType3Count = item.TestType3Count, | |||
|  |                                 }; | |||
|  | 
 | |||
|  |                                 db.Training_TestPlanTraining.InsertOnSubmit(newPlanItem); | |||
|  |                                 db.SubmitChanges(); | |||
|  |                             } | |||
|  |                         } | |||
|  |                     } | |||
|  |                 } | |||
|  |             } | |||
|  |             return alterStr; | |||
|  |         } | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         ///  新增 考试人员明细 | |||
|  |         /// </summary> | |||
|  |         public static void AddTrainingTestRecord(List<Model.TestRecordItem> testRecords, Model.Training_TestPlan newTestPlan) | |||
|  |         { | |||
|  |             foreach (var item in testRecords) | |||
|  |             { | |||
|  |                 var person = PersonService.GetPersonById(item.TestManId); | |||
|  |                 if (person != null) | |||
|  |                 { | |||
|  |                     Model.Training_TestRecord newTrainDetail = new Model.Training_TestRecord | |||
|  |                     { | |||
|  |                         TestRecordId = SQLHelper.GetNewID(), | |||
|  |                         ProjectId = newTestPlan.ProjectId, | |||
|  |                         TestPlanId = newTestPlan.TestPlanId, | |||
|  |                         TestManId = item.TestManId, | |||
|  |                         TestType = item.TestType, | |||
|  |                         Duration= newTestPlan.Duration, | |||
|  |                     }; | |||
|  |                     TestRecordService.AddTestRecord(newTrainDetail); | |||
|  |                 } | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         ///  新增 考试教材类型 明细 | |||
|  |         /// </summary> | |||
|  |         public static void AddTrainingTestPlanTraining(List<Model.TestPlanTrainingItem> TestPlanItems, string testPlanId) | |||
|  |         { | |||
|  |             using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) | |||
|  |             { | |||
|  |                 foreach (var item in TestPlanItems) | |||
|  |                 { | |||
|  |                     var trainingType = db.Training_TestTraining.FirstOrDefault(e => e.TrainingId == item.TrainingTypeId);  | |||
|  |                     if (trainingType != null) | |||
|  |                     { | |||
|  |                         Model.Training_TestPlanTraining newPlanItem = new Model.Training_TestPlanTraining | |||
|  |                         { | |||
|  |                             TestPlanTrainingId = SQLHelper.GetNewID(), | |||
|  |                             TestPlanId = testPlanId, | |||
|  |                             TrainingId = item.TrainingTypeId, | |||
|  |                             TestType1Count = item.TestType1Count, | |||
|  |                             TestType2Count = item.TestType2Count, | |||
|  |                             TestType3Count = item.TestType3Count, | |||
|  |                         }; | |||
|  | 
 | |||
|  |                         db.Training_TestPlanTraining.InsertOnSubmit(newPlanItem); | |||
|  |                         db.SubmitChanges(); | |||
|  |                     } | |||
|  |                 } | |||
|  |             } | |||
|  |         } | |||
|  |         #endregion | |||
|  | 
 | |||
|  |         #region 根据培训计划ID生成 考试计划信息 | |||
|  |         /// <summary> | |||
|  |         /// 根据培训计划ID生成 考试计划信息 | |||
|  |         /// </summary> | |||
|  |         /// <param name="getTestPlan"></param> | |||
|  |         public static string SaveTestPlanByTrainingPlanId(string trainingPlanId,string userId) | |||
|  |         { | |||
|  |             string testPlanId = string.Empty; | |||
|  |             using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) | |||
|  |             { | |||
|  |                 ////培训计划 | |||
|  |                 var getTrainingPlan = db.Training_Plan.FirstOrDefault(x => x.PlanId == trainingPlanId); ; | |||
|  |                 if (getTrainingPlan != null && getTrainingPlan.States == "1") | |||
|  |                 { | |||
|  |                     testPlanId = SQLHelper.GetNewID(); | |||
|  |                     Model.Training_TestPlan newTestPlan = new Model.Training_TestPlan | |||
|  |                     { | |||
|  |                         TestPlanId = testPlanId, | |||
|  |                         ProjectId = getTrainingPlan.ProjectId, | |||
|  |                         //PlanCode = getTrainingPlan.PlanCode, | |||
|  |                         PlanName = getTrainingPlan.PlanName, | |||
|  |                         PlanManId = userId, | |||
|  |                         PlanDate = DateTime.Now, | |||
|  |                         TestStartTime = DateTime.Now, | |||
|  |                         TestPalce = getTrainingPlan.TeachAddress, | |||
|  |                         UnitIds = getTrainingPlan.UnitIds, | |||
|  |                         UnitNames = UnitService.getUnitNamesUnitIds(getTrainingPlan.UnitIds), | |||
|  |                         WorkPostIds = getTrainingPlan.WorkPostId, | |||
|  |                         WorkPostNames = WorkPostService.getWorkPostNamesWorkPostIds(getTrainingPlan.WorkPostId), | |||
|  |                         PlanId = getTrainingPlan.PlanId, | |||
|  |                         States = "0", | |||
|  |                     }; | |||
|  | 
 | |||
|  |                     string unitId = string.Empty; | |||
|  |                     var user = db.Sys_User.FirstOrDefault(e => e.UserId == userId);  | |||
|  |                     if (user != null) | |||
|  |                     { | |||
|  |                         unitId = user.UnitId; | |||
|  |                     } | |||
|  |                     newTestPlan.PlanCode = CodeRecordsService.ReturnCodeByMenuIdProjectId(Const.ProjectTestPlanMenuId, newTestPlan.ProjectId, unitId); | |||
|  | 
 | |||
|  |                     int Duration = 90; | |||
|  |                     int SValue = 1; | |||
|  |                     int MValue = 2; | |||
|  |                     int JValue = 1; | |||
|  |                     int testType1Count = 40; | |||
|  |                     int testType2Count = 10; | |||
|  |                     int testType3Count = 40; | |||
|  |                     ////获取考试规则设置数据 | |||
|  |                     var getTestRule = db.Sys_TestRule.FirstOrDefault(); ////考试数据设置 | |||
|  |                     if (getTestRule != null) | |||
|  |                     { | |||
|  |                         Duration = getTestRule.Duration; | |||
|  |                         SValue = getTestRule.SValue; | |||
|  |                         MValue = getTestRule.MValue; | |||
|  |                         JValue = getTestRule.JValue; | |||
|  |                         testType1Count = getTestRule.SCount; | |||
|  |                         testType2Count = getTestRule.MCount; | |||
|  |                         testType3Count = getTestRule.JCount; | |||
|  |                     } | |||
|  |                     ////按照培训类型获取试题类型及题型数量 | |||
|  |                     var getTrainTypeItems = from x in db.Base_TrainTypeItem | |||
|  |                                             where x.TrainTypeId == getTrainingPlan.TrainTypeId | |||
|  |                                             select x; | |||
|  |                     if (getTrainTypeItems.Count() > 0) | |||
|  |                     { | |||
|  |                         testType1Count = getTrainTypeItems.Sum(x => x.SCount); | |||
|  |                         testType2Count = getTrainTypeItems.Sum(x => x.MCount); | |||
|  |                         testType3Count = getTrainTypeItems.Sum(x => x.JCount); | |||
|  |                     } | |||
|  | 
 | |||
|  |                     newTestPlan.Duration = getTestRule.Duration; | |||
|  |                     newTestPlan.SValue = getTestRule.SValue; | |||
|  |                     newTestPlan.MValue = getTestRule.MValue; | |||
|  |                     newTestPlan.JValue = getTestRule.JValue; | |||
|  |                     newTestPlan.TotalScore = testType1Count * SValue + testType2Count * MValue + testType3Count * JValue; | |||
|  |                     newTestPlan.QuestionCount = testType1Count + testType2Count + testType3Count; | |||
|  |                     newTestPlan.TestEndTime = newTestPlan.TestStartTime.AddMinutes(newTestPlan.Duration); | |||
|  |                     ////新增考试计划记录 | |||
|  |                     var getIsTestPlan = db.Training_TestPlan.FirstOrDefault(x => x.PlanId == newTestPlan.PlanId); | |||
|  |                     if (getIsTestPlan == null) | |||
|  |                     { | |||
|  |                         db.Training_TestPlan.InsertOnSubmit(newTestPlan); | |||
|  |                         db.SubmitChanges(); | |||
|  |                         CodeRecordsService.InsertCodeRecordsByMenuIdProjectIdUnitId(Const.ProjectTestPlanMenuId, newTestPlan.ProjectId, null, testPlanId, newTestPlan.PlanDate); | |||
|  |                         ///培训人员 | |||
|  |                         var getTrainingTask = (from x in db.Training_Task where x.PlanId == trainingPlanId select x).ToList(); | |||
|  |                         foreach (var itemTask in getTrainingTask) | |||
|  |                         { | |||
|  |                             Model.Training_TestRecord newTestRecord = new Model.Training_TestRecord | |||
|  |                             { | |||
|  |                                 TestRecordId = SQLHelper.GetNewID(), | |||
|  |                                 ProjectId = getTrainingPlan.ProjectId, | |||
|  |                                 TestPlanId = testPlanId, | |||
|  |                                 TestManId = itemTask.UserId, | |||
|  |                                 TestType= db.Base_TrainType.First(z=>z.TrainTypeId == getTrainingPlan.TrainTypeId).TrainTypeName, | |||
|  |                             }; | |||
|  | 
 | |||
|  |                             db.Training_TestRecord.InsertOnSubmit(newTestRecord); | |||
|  |                             db.SubmitChanges(); | |||
|  |                         } | |||
|  |                         if (getTrainTypeItems.Count() == 0) | |||
|  |                         { | |||
|  |                             /////考试题型类别及数量 | |||
|  |                             Model.Training_TestPlanTraining newTestPlanTraining = new Model.Training_TestPlanTraining | |||
|  |                             { | |||
|  |                                 TestPlanTrainingId = SQLHelper.GetNewID(), | |||
|  |                                 TestPlanId = testPlanId, | |||
|  |                                 TestType1Count = testType1Count, | |||
|  |                                 TestType2Count = testType2Count, | |||
|  |                                 TestType3Count = testType3Count, | |||
|  |                             }; | |||
|  | 
 | |||
|  |                             db.Training_TestPlanTraining.InsertOnSubmit(newTestPlanTraining); | |||
|  |                             db.SubmitChanges(); | |||
|  |                         } | |||
|  |                         else | |||
|  |                         { | |||
|  |                             foreach (var item in getTrainTypeItems) | |||
|  |                             { | |||
|  |                                 /////考试题型类别及数量 | |||
|  |                                 Model.Training_TestPlanTraining newTestPlanTraining = new Model.Training_TestPlanTraining | |||
|  |                                 { | |||
|  |                                     TestPlanTrainingId = SQLHelper.GetNewID(), | |||
|  |                                     TestPlanId = testPlanId, | |||
|  |                                     TrainingId = item.TrainingId, | |||
|  |                                     TestType1Count = item.SCount, | |||
|  |                                     TestType2Count = item.MCount, | |||
|  |                                     TestType3Count = item.JCount, | |||
|  |                                 }; | |||
|  |                                 db.Training_TestPlanTraining.InsertOnSubmit(newTestPlanTraining); | |||
|  |                                 db.SubmitChanges(); | |||
|  |                             } | |||
|  |                         } | |||
|  |                     } | |||
|  |                     ////回写培训计划状态 | |||
|  |                     getTrainingPlan.States = "2"; | |||
|  |                     db.SubmitChanges(); | |||
|  |                 } | |||
|  |             } | |||
|  |             return testPlanId; | |||
|  |         } | |||
|  |         #endregion | |||
|  | 
 | |||
|  |         #region 根据TestPlanId获取考试试题类型列表 | |||
|  |         /// <summary> | |||
|  |         /// 根据TestPlanId获取考试试题类型列表 | |||
|  |         /// </summary> | |||
|  |         /// <param name="testPlanId">考试计划ID</param> | |||
|  |         /// <returns></returns> | |||
|  |         public static List<Model.TestPlanTrainingItem> getTestPlanTrainingListByTestPlanId(string testPlanId) | |||
|  |         { | |||
|  |             using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) | |||
|  |             { | |||
|  |                 var getDataLists = (from x in db.Training_TestPlanTraining | |||
|  |                                     join y in db.Training_TestTraining on x.TrainingId equals y.TrainingId | |||
|  |                                     where x.TestPlanId == testPlanId | |||
|  |                                     orderby y.TrainingCode | |||
|  |                                     select new Model.TestPlanTrainingItem | |||
|  |                                     { | |||
|  |                                         TestPlanTrainingId = x.TestPlanTrainingId, | |||
|  |                                         TestPlanId = x.TestPlanId, | |||
|  |                                         TrainingTypeId = x.TrainingId, | |||
|  |                                         TrainingTypeName = y.TrainingName, | |||
|  |                                         TestType1Count = x.TestType1Count ?? 0, | |||
|  |                                         TestType2Count = x.TestType2Count ?? 0, | |||
|  |                                         TestType3Count = x.TestType3Count ?? 0, | |||
|  |                                     }).ToList(); | |||
|  |                 return getDataLists; | |||
|  |             } | |||
|  |         } | |||
|  |         #endregion | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 结束考试 | |||
|  |         /// </summary> | |||
|  |         public static void SubmitTest(Model.Training_TestPlan getTestPlan) | |||
|  |         { | |||
|  |             using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) | |||
|  |             { | |||
|  |                 ////所有交卷的人员 交卷 并计算分数 | |||
|  |                 var getTrainingTestRecords = from x in db.Training_TestRecord | |||
|  |                                              where x.TestPlanId == getTestPlan.TestPlanId && (!x.TestEndTime.HasValue || !x.TestScores.HasValue) | |||
|  |                                              select x; | |||
|  |                 foreach (var itemRecord in getTrainingTestRecords) | |||
|  |                 { | |||
|  |                     itemRecord.TestEndTime = DateTime.Now; | |||
|  |                     itemRecord.TestScores = db.Training_TestRecordItem.Where(x => x.TestRecordId == itemRecord.TestRecordId).Sum(x => x.SubjectScore) ?? 0; | |||
|  |                     db.SubmitChanges(); | |||
|  |                 } | |||
|  | 
 | |||
|  |                 var getTrainingTasks = from x in db.Training_Task | |||
|  |                                        where x.PlanId == getTestPlan.PlanId && (x.States != "2" || x.States == null) | |||
|  |                                        select x; | |||
|  |                 foreach (var item in getTrainingTasks) | |||
|  |                 { | |||
|  |                     item.States = "2"; | |||
|  |                     db.SubmitChanges(); | |||
|  |                 } | |||
|  | 
 | |||
|  |                 ////TODO 讲培训计划 考试记录 写入到培训记录 | |||
|  |                 APITrainRecordService.InsertTrainRecord(getTestPlan); | |||
|  |             } | |||
|  |         } | |||
|  |     } | |||
|  | } |