using FineUIPro; using System; using System.Collections; using System.Linq; namespace BLL { /// /// 考试记录 /// public static class TestRecordService { #region 获取列表数据 /// /// 记录数 /// public static int count { get; set; } /// /// 定义变量 /// private static IQueryable getDataLists = from x in Funs.DB.Training_TestRecord where x.TestStartTime.HasValue select x; /// /// 获取分页列表 /// /// /// /// public static IEnumerable getListData(string personId, Grid Grid1) { var db1 = Funs.DB; IQueryable getDataList = (from x in db1.Training_TestRecord where x.TestStartTime.HasValue select x).Where(x => x.TestManId == personId); count = getDataList.Count(); if (count == 0) { return null; } getDataList = SortConditionHelper.SortingAndPaging(getDataList, Grid1.SortField, Grid1.SortDirection, Grid1.PageIndex, Grid1.PageSize); return from x in getDataList join y in db1.Training_TestPlan on x.TestPlanId equals y.TestPlanId join z in db1.Training_Plan on y.PlanId equals z.PlanId into g from z in g.DefaultIfEmpty() select new { x.TestRecordId, x.TestPlanId, x.ProjectId, db1.Base_Project.First(p => p.ProjectId == x.ProjectId).ProjectName, y.PlanName, y.PlanCode, y.TestPalce, y.PlanDate, x.TestStartTime, x.TestEndTime, x.TestScores, z.TrainTypeId, db1.Base_TrainType.First(u => u.TrainTypeId == z.TrainTypeId).TrainTypeName, z.TrainStartDate, }; } #endregion /// /// 根据主键获取考试记录 /// /// /// public static Model.Training_TestRecord GetTestRecordById(string testRecordId) { return Funs.DB.Training_TestRecord.FirstOrDefault(e => e.TestRecordId == testRecordId); } /// /// 新增考生记录信息 /// /// public static void AddTestRecord(Model.Training_TestRecord testRecord) { Model.SGGLDB db = Funs.DB; Model.Training_TestRecord newTestRecord = new Model.Training_TestRecord { TestRecordId = testRecord.TestRecordId, ProjectId = testRecord.ProjectId, TestPlanId = testRecord.TestPlanId, TestManId = testRecord.TestManId, TestType = testRecord.TestType, }; if (string.IsNullOrEmpty(newTestRecord.TestType)) { var getTrainTypeName = (from x in db.Training_TestPlan join y in db.Training_Plan on x.PlanId equals y.PlanId join z in db.Base_TrainType on y.TrainTypeId equals z.TrainTypeId where x.TestPlanId == testRecord.TestPlanId select z).FirstOrDefault(); if (getTrainTypeName != null) { testRecord.TestType = getTrainTypeName.TrainTypeName; } } db.Training_TestRecord.InsertOnSubmit(newTestRecord); db.SubmitChanges(); } /// /// 修改考试记录信息 /// /// public static void UpdateTestRecord(Model.Training_TestRecord testRecord) { Model.SGGLDB db = Funs.DB; Model.Training_TestRecord newTestRecord = db.Training_TestRecord.FirstOrDefault(e => e.TestRecordId == testRecord.TestRecordId); if (newTestRecord != null) { newTestRecord.TestScores = testRecord.TestScores; newTestRecord.TestEndTime = testRecord.TestEndTime; newTestRecord.IsFiled = testRecord.IsFiled; db.SubmitChanges(); } } /// /// 根据计划主键删除考试人员信息 /// /// public static void DeleteTestRecordByTestPlanId(string testPlanId) { var deleteRecords = from x in Funs.DB.Training_TestRecord where x.TestPlanId == testPlanId select x; if (deleteRecords.Count() > 0) { foreach (var item in deleteRecords) { DeleteTestRecordByTestRecordId(item.TestRecordId); } } } /// /// 根据考生主键删除考生信息 /// /// public static void DeleteTestRecordByTestRecordId(string testRecordId) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var testRecord = db.Training_TestRecord.FirstOrDefault(e => e.TestRecordId == testRecordId); if (testRecord != null) { var testRecordItem = from x in db.Training_TestRecordItem where x.TestRecordId == testRecordId select x; if (testRecordItem.Count() > 0) { db.Training_TestRecordItem.DeleteAllOnSubmit(testRecordItem); db.SubmitChanges(); } db.Training_TestRecord.DeleteOnSubmit(testRecord); db.SubmitChanges(); } } } /// /// 更新没有结束时间且超时的考试记录 /// public static int UpdateTestEndTimeNull(string testRecordId) { int icount = 0; using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var testRecord = from x in db.Training_TestRecord where !x.TestEndTime.HasValue && x.TestStartTime.HasValue && x.TestStartTime.Value.AddMinutes(x.Duration) < DateTime.Now && x.TestRecordId == testRecordId select x; if (testRecord.Count() > 0) { foreach (var item in testRecord) { item.TestEndTime = item.TestStartTime.Value.AddMinutes(item.Duration); item.TestScores = db.Training_TestRecordItem.Where(x => x.TestRecordId == item.TestRecordId).Sum(x => x.SubjectScore) ?? 0; icount++; } db.SubmitChanges(); } } return icount; } /// /// 根据人员id、日期获取入场教育合格考试记录 /// /// /// public static Model.Training_TestRecord GetOKTestRecordByPersonIdAndDate(string testManId, DateTime? date) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var testRecord = (from x in db.Training_TestRecord join y in db.Training_TestPlan on x.TestPlanId equals y.TestPlanId join z in db.Training_Plan on y.PlanId equals z.PlanId where x.TestManId == testManId && x.TestStartTime >= date && x.TestScores >= 60 && z.TrainTypeId == BLL.Const.EntryEducationTrainTypeId select x).FirstOrDefault(); return testRecord; } } } }