From 28884ea88617abb95a421e6342abe6bef716036a Mon Sep 17 00:00:00 2001 From: liangkun Date: Tue, 8 Aug 2023 17:04:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AD=A6=E7=94=9F=E4=B8=8A=E8=AF=BE=E7=AD=BE?= =?UTF-8?q?=E5=88=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Modules/AttendanceApi.cs | 13 + .../StuAttendance/StuAttendanceEntity.cs | 5 + .../ADR_Restriction/ADR_RestrictionBLL.cs | 20 ++ .../ADR_Restriction/ADR_RestrictionEntity.cs | 17 ++ .../ADR_Restriction/ADR_RestrictionIBLL.cs | 1 + .../ADR_Restriction/ADR_RestrictionService.cs | 241 +++++++++++++++++- 6 files changed, 292 insertions(+), 5 deletions(-) diff --git a/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Modules/AttendanceApi.cs b/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Modules/AttendanceApi.cs index 28fad63fb..4ec01c1bc 100644 --- a/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Modules/AttendanceApi.cs +++ b/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Modules/AttendanceApi.cs @@ -25,6 +25,8 @@ namespace Learun.Application.WebApi.Modules Get["/getrecordpagelist"] = GetRecordPageList; //判断学生当前打卡状态 Get["IsAttendanceStudent"] = IsAttendanceStudent; + //学生打卡 + Post["/clockinStudent"] = ClockInStudent; } private ADR_RestrictionIBLL adr_RestrictionBLL = new ADR_RestrictionBLL(); private ADR_RecordIBLL adr_RecordBLL = new ADR_RecordBLL(); @@ -68,6 +70,9 @@ namespace Learun.Application.WebApi.Modules public string ARemark { get; set; } public string ADPhoto { get; set; } public string ClockPlace { get; set; } + public string LessonSortNo { get; set; } + public string ALTId { get; set; } + public string ALTOEId { get; set; } } /// @@ -83,6 +88,14 @@ namespace Learun.Application.WebApi.Modules return Success("打卡成功"); } + public Response ClockInStudent(dynamic _) + { + Attendance parameter = this.GetReqData(); + + adr_RestrictionBLL.ClockInStudent(parameter.ALon, parameter.ALat, parameter.AIsOut, parameter.ARemark, parameter.ADPhoto, parameter.ClockPlace,parameter.LessonSortNo,parameter.ALTId,parameter.ALTOEId); + + return Success("打卡成功"); + } /// /// 打卡 /// diff --git a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/StuAttendance/StuAttendanceEntity.cs b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/StuAttendance/StuAttendanceEntity.cs index d37bb6f15..fd776b29b 100644 --- a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/StuAttendance/StuAttendanceEntity.cs +++ b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/StuAttendance/StuAttendanceEntity.cs @@ -121,6 +121,11 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration [Column("LESSONTIME")] public string LessonTime { get; set; } /// + /// 上课时间几点到几点 + /// + [Column("LESSONTIME2")] + public string LessonTime2 { get; set; } + /// /// 出勤否(填是、否) /// [Column("ATTENDORNO")] diff --git a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/PersonnelManagement/ADR_Restriction/ADR_RestrictionBLL.cs b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/PersonnelManagement/ADR_Restriction/ADR_RestrictionBLL.cs index 8c377e54a..8c0c13f4d 100644 --- a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/PersonnelManagement/ADR_Restriction/ADR_RestrictionBLL.cs +++ b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/PersonnelManagement/ADR_Restriction/ADR_RestrictionBLL.cs @@ -262,6 +262,26 @@ namespace Learun.Application.TwoDevelopment.PersonnelManagement } } + public bool ClockInStudent(decimal ALon, decimal ALat, bool AIsOut, string ARemark, string ADPhoto, string ClockPlace, + string LessonSortNo, string ALTId, string AlTOEId) + { + try + { + return aDR_RestrictionService.ClockInStudent(ALon, ALat, AIsOut, ARemark, ADPhoto, ClockPlace, LessonSortNo,ALTId,AlTOEId); + } + catch (Exception ex) + { + if (ex is ExceptionEx) + { + throw; + } + else + { + throw ExceptionEx.ThrowBusinessException(ex); + } + } + } + #endregion } diff --git a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/PersonnelManagement/ADR_Restriction/ADR_RestrictionEntity.cs b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/PersonnelManagement/ADR_Restriction/ADR_RestrictionEntity.cs index 14f6c222b..5435c1426 100644 --- a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/PersonnelManagement/ADR_Restriction/ADR_RestrictionEntity.cs +++ b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/PersonnelManagement/ADR_Restriction/ADR_RestrictionEntity.cs @@ -163,16 +163,33 @@ namespace Learun.Application.TwoDevelopment.PersonnelManagement [NotMapped] public string AttendanceTypeString { get; set; } [NotMapped] + public string LessonNo { get; set; } + [NotMapped] public string LessonName { get; set; } [NotMapped] + public string LessonSortNo { get; set; } + [NotMapped] + public string LessonSection { get; set; } + [NotMapped] + public string LessonTime { get; set; } + [NotMapped] + public string EmpNo { get; set; } + [NotMapped] public string EmpName { get; set; } [NotMapped] public string StartTime { get; set; } [NotMapped] public string EndTime { get; set; } [NotMapped] + public string ClassroomNo { get; set; } + [NotMapped] public string Classroom { get; set; } + [NotMapped] + public string ALTId { get; set; } + [NotMapped] + public string ALTOEId { get; set; } + #endregion #region 扩展操作 diff --git a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/PersonnelManagement/ADR_Restriction/ADR_RestrictionIBLL.cs b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/PersonnelManagement/ADR_Restriction/ADR_RestrictionIBLL.cs index d7bf174d0..27fd369b3 100644 --- a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/PersonnelManagement/ADR_Restriction/ADR_RestrictionIBLL.cs +++ b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/PersonnelManagement/ADR_Restriction/ADR_RestrictionIBLL.cs @@ -62,5 +62,6 @@ namespace Learun.Application.TwoDevelopment.PersonnelManagement IEnumerable GetADR_RestrictionDay(string keyValue); void SaveFormDay(string keyValue, List entity); ADR_RestrictionEntity IsAttendanceStudent(); + bool ClockInStudent(decimal ALon, decimal ALat, bool AIsOut, string ARemark, string ADPhoto, string ClockPlace, string LessonSortNo, string ALTId, string AlTOEId); } } diff --git a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/PersonnelManagement/ADR_Restriction/ADR_RestrictionService.cs b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/PersonnelManagement/ADR_Restriction/ADR_RestrictionService.cs index 76d07acac..5396764b9 100644 --- a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/PersonnelManagement/ADR_Restriction/ADR_RestrictionService.cs +++ b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/PersonnelManagement/ADR_Restriction/ADR_RestrictionService.cs @@ -1162,6 +1162,15 @@ namespace Learun.Application.TwoDevelopment.PersonnelManagement //上班 大于上班开始时间 小于上班最晚签到时间,已经打卡是红色 if (datetimenow > signInStartTime && datetimenow < workDateTimeFree && attendancerecordList.Count(x => x.ADType == "1") > 0) { + //存在签退记录,更新下班时间 + if (attendancerecordList.Count(x => x.ADType == "2")>0) + { + adrresult.AttendanceType = 3; + adrresult.AttendanceTypeString = "早退打卡"; + adrresult.UserWorkTime = attendancerecordList.Where(m=>m.ADType=="1").OrderByDescending(m => m.ADTime).First().ADTime.Value.ToString(); + adrresult.UserCloseTime = attendancerecordList.Where(m => m.ADType == "2").OrderByDescending(m => m.ADTime).First().ADTime.Value.ToString(); + return adrresult; + } adrresult.AttendanceType = 3; adrresult.AttendanceTypeString = "早退打卡"; adrresult.UserWorkTime = attendancerecordList.OrderByDescending(m => m.ADTime).First().ADTime.Value.ToString(); @@ -1436,7 +1445,6 @@ namespace Learun.Application.TwoDevelopment.PersonnelManagement var datenow = DateTime.Now.ToString("yyyy-MM-dd"); var datetimenow = DateTime.Now; - var StuNo = LoginUserInfo.Get().account; //首先获取考勤规则 ADR_RestrictionEntity attendancerulEntity = null; if (stuInfoBasic !=null) @@ -1459,15 +1467,17 @@ namespace Learun.Application.TwoDevelopment.PersonnelManagement //当前学年学期信息 var say=Common.GetSemesterAndYear(); //当天课程 - var lessons = BaseRepository("").FindList(m => m.AcademicYearNo == say.AcademicYearShort&&m.Semester==say.Semester + //必修课 + var lessons = BaseRepository("CollegeMIS").FindList(m => m.AcademicYearNo == say.AcademicYearShort&&m.Semester==say.Semester &&m.DeptNo==stuInfoBasic.DeptNo&&m.MajorNo==stuInfoBasic.MajorNo&&m.TeachClassNo.Contains(stuInfoBasic.ClassNo)&&m.LessonDate.Value.ToString("yyyy-MM-dd") == datenow); //当前打卡课程判断 foreach (var arrangeLessonTermEntity in lessons) { TimeSpan start = TimeSpan.Parse(arrangeLessonTermEntity.StartTime); + TimeSpan end = TimeSpan.Parse(arrangeLessonTermEntity.EndTime); int StuAttendanceEarliestMinute=string.IsNullOrEmpty(Util.Config.GetValue("StuAttendanceEarliestMinute"))?Convert.ToInt32(Util.Config.GetValue("StuAttendanceEarliestMinute")) :0; //当前时间小于等于上课时间,且大于开课前指定分钟 - if (datetimenow.TimeOfDay<=start && datetimenow.TimeOfDay< start.Add(-TimeSpan.FromMinutes(StuAttendanceEarliestMinute))) + if (datetimenow.TimeOfDay<=start && datetimenow.TimeOfDay>= start.Add(-TimeSpan.FromMinutes(StuAttendanceEarliestMinute))) { adrresult.AttendanceType = 1; adrresult.AttendanceTypeString = "正常签到"; @@ -1475,12 +1485,92 @@ namespace Learun.Application.TwoDevelopment.PersonnelManagement adrresult.StartTime = arrangeLessonTermEntity.StartTime; adrresult.EndTime = arrangeLessonTermEntity.EndTime; adrresult.EmpName = arrangeLessonTermEntity.EmpName; - adrresult.Classroom = BaseRepository("").FindEntity(m => m.ClassroomNo == arrangeLessonTermEntity.ClassroomNo)?.ClassroomName; + adrresult.Classroom = BaseRepository("CollegeMIS").FindEntity(m => m.ClassroomNo == arrangeLessonTermEntity.ClassroomNo)?.ClassroomName; + adrresult.LessonSortNo = "1"; + adrresult.ALTId = arrangeLessonTermEntity.ALTId; + return adrresult; + } + //迟到打卡 + if (datetimenow.TimeOfDay > start && datetimenow.TimeOfDay <= end) + { + adrresult.AttendanceType = 2; + adrresult.AttendanceTypeString = "迟到"; + adrresult.LessonName = arrangeLessonTermEntity.LessonName; + adrresult.StartTime = arrangeLessonTermEntity.StartTime; + adrresult.EndTime = arrangeLessonTermEntity.EndTime; + adrresult.EmpName = arrangeLessonTermEntity.EmpName; + adrresult.Classroom = BaseRepository("CollegeMIS").FindEntity(m => m.ClassroomNo == arrangeLessonTermEntity.ClassroomNo)?.ClassroomName; + adrresult.LessonSortNo = "1"; + adrresult.ALTId = arrangeLessonTermEntity.ALTId; return adrresult; } + } + //选修课 + var AcademicYearNo = Common.GetSemesterAndYear(); + //当前学年学期选修课数据 + var arrangeLessonTermOfElectiveListOfCurrentSemester =BaseRepository("CollegeMIS").FindList(m=>m.AcademicYearNo==AcademicYearNo.AcademicYearShort&&m.Semester==AcademicYearNo.Semester); + //选课数据 + var stuselectlessonofelective = BaseRepository("CollegeMIS").FindList(m=>m.StuNo== stuInfoBasic.StuNo&&m.AcademicYearNo== AcademicYearNo.AcademicYearShort&&m.Semester== AcademicYearNo.Semester); + //选修课课表集合 + List arrangeLessonTermOfElectiveList =new List(); + foreach (var electiveEntity in stuselectlessonofelective) + { + if (electiveEntity.LessonSection.Contains(",")) + { + string[] lessonsection = electiveEntity.LessonSection.Split(','); + //foreach (var s in lessonsection) + //{ + var currentstudentelective = arrangeLessonTermOfElectiveListOfCurrentSemester.Where(m => m.AcademicYearNo == electiveEntity.AcademicYearNo && m.Semester == electiveEntity.Semester + && m.LessonNo == electiveEntity.LessonNo && m.EmpNo == electiveEntity.EmpNo && m.ClassRoomNo == electiveEntity.ClassRoomNo && (m.LessonSection==lessonsection[0]||m.LessonSection == lessonsection[1])); + + //有可能报错?//todo + arrangeLessonTermOfElectiveList.InsertRange(0,currentstudentelective.ToList()); + //} + } else { - continue; + var currentstudentelective = arrangeLessonTermOfElectiveListOfCurrentSemester.Where(m => m.AcademicYearNo == electiveEntity.AcademicYearNo && m.Semester == electiveEntity.Semester + && m.LessonNo == electiveEntity.LessonNo && m.EmpNo == electiveEntity.EmpNo && m.ClassRoomNo == electiveEntity.ClassRoomNo &&m.LessonSection == electiveEntity.LessonSection); + + //有可能报错?//todo + arrangeLessonTermOfElectiveList.InsertRange(0, currentstudentelective.ToList()); + } + } + var lessonelective = arrangeLessonTermOfElectiveList.Where(m=> m.LessonDate.Value.ToString("yyyy-MM-dd") == datenow&&m.LessonTime.Contains("-")); + //当前打卡课程判断 + foreach (var arrangeLessonTermEntity in lessonelective) + { + var lessontime = arrangeLessonTermEntity.LessonTime.Split('-'); + TimeSpan start = TimeSpan.Parse(lessontime[0]); + TimeSpan end = TimeSpan.Parse(lessontime[1]); + int StuAttendanceEarliestMinute = string.IsNullOrEmpty(Util.Config.GetValue("StuAttendanceEarliestMinute")) ? Convert.ToInt32(Util.Config.GetValue("StuAttendanceEarliestMinute")) : 0; + //当前时间小于等于上课时间,且大于开课前指定分钟 + if (datetimenow.TimeOfDay <= start && datetimenow.TimeOfDay >= start.Add(-TimeSpan.FromMinutes(StuAttendanceEarliestMinute))) + { + adrresult.AttendanceType = 1; + adrresult.AttendanceTypeString = "正常签到"; + adrresult.LessonName = arrangeLessonTermEntity.LessonName; + adrresult.StartTime = lessontime[0]; + adrresult.EndTime = lessontime[1]; + adrresult.EmpName = arrangeLessonTermEntity.EmpName; + adrresult.Classroom = BaseRepository("CollegeMIS").FindEntity(m => m.ClassroomNo == arrangeLessonTermEntity.ClassRoomNo)?.ClassroomName; + adrresult.LessonSortNo = "2"; + adrresult.ALTOEId = arrangeLessonTermEntity.Id; + return adrresult; + } + //迟到打卡 + if (datetimenow.TimeOfDay > start && datetimenow.TimeOfDay <= end) + { + adrresult.AttendanceType = 2; + adrresult.AttendanceTypeString = "迟到"; + adrresult.LessonName = arrangeLessonTermEntity.LessonName; + adrresult.StartTime = lessontime[0]; + adrresult.EndTime = lessontime[1]; + adrresult.EmpName = arrangeLessonTermEntity.EmpName; + adrresult.Classroom = BaseRepository("CollegeMIS").FindEntity(m => m.ClassroomNo == arrangeLessonTermEntity.ClassRoomNo)?.ClassroomName; + adrresult.LessonSortNo = "2"; + adrresult.ALTOEId = arrangeLessonTermEntity.Id; + return adrresult; } } adrresult.AttendanceType = 5; @@ -1499,5 +1589,146 @@ namespace Learun.Application.TwoDevelopment.PersonnelManagement } } } + /// + /// 学生考勤 + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + public bool ClockInStudent(decimal aLon, decimal aLat, bool aIsOut, string aRemark, string adPhoto, string clockPlace, string lessonSortNo, string altId, string alToeId) + { + try + { + var userinfo=LoginUserInfo.Get(); + var stuinfo= BaseRepository("CollegeMIS").FindEntity(m => m.StuNo == userinfo.account); + var dept = BaseRepository("CollegeMIS").FindList(); + var major = BaseRepository("CollegeMIS").FindList(m=>m.CheckMark==true); + var classinfo = BaseRepository("CollegeMIS").FindList(m=>m.CheckMark==true); + var classroom = BaseRepository("CollegeMIS").FindList(m=>m.CheckMark==true); + StuAttendanceEntity attendanceEntity=new StuAttendanceEntity(); + attendanceEntity.Create(); + if (lessonSortNo=="1") + { + var arrangelessonterm = base.BaseRepository("CollegeMIS").FindEntity(m=>m.ALTId==altId); + attendanceEntity.AcademicYearNo = arrangelessonterm.AcademicYearNo; + attendanceEntity.Semester = arrangelessonterm.Semester; + attendanceEntity.StuNo = stuinfo.StuNo; + attendanceEntity.StuName = stuinfo.StuName; + attendanceEntity.Gender = stuinfo.GenderNo.Value?"男":"女"; + attendanceEntity.Grade = stuinfo.Grade; + attendanceEntity.DeptNo = stuinfo.DeptNo; + attendanceEntity.DeptName = dept.FirstOrDefault(m => m.DeptNo == stuinfo.DeptNo)?.DeptName; + attendanceEntity.MajorNo = stuinfo.MajorNo; + attendanceEntity.MajorName = major.FirstOrDefault(m => m.MajorNo == stuinfo.MajorNo)?.MajorName; + attendanceEntity.ClassNo = stuinfo.ClassNo; + attendanceEntity.ClassName = classinfo.FirstOrDefault(m => m.ClassNo == stuinfo.ClassNo)?.ClassName; + attendanceEntity.LessonNo = arrangelessonterm.LessonNo; + attendanceEntity.LessonName = arrangelessonterm.LessonName; + attendanceEntity.TeachClassNo = attendanceEntity.ClassNo; + attendanceEntity.LessonSortNo = "1"; + attendanceEntity.LessonSortName = "必修课"; + attendanceEntity.LessonDate = arrangelessonterm.LessonDate; + attendanceEntity.LessonTime = arrangelessonterm.LessonTime; + attendanceEntity.LessonTime2 = ""; + attendanceEntity.AttendOrNo = "是"; + //迟到状态判断 + var datetimenow = DateTime.Now; + TimeSpan start = TimeSpan.Parse(arrangelessonterm.StartTime); + TimeSpan end = TimeSpan.Parse(arrangelessonterm.EndTime); + int StuAttendanceEarliestMinute = string.IsNullOrEmpty(Util.Config.GetValue("StuAttendanceEarliestMinute")) ? Convert.ToInt32(Util.Config.GetValue("StuAttendanceEarliestMinute")) : 0; + //当前时间小于等于上课时间,且大于开课前指定分钟 + if (datetimenow.TimeOfDay <= start && datetimenow.TimeOfDay >= start.Add(-TimeSpan.FromMinutes(StuAttendanceEarliestMinute))) + { + attendanceEntity.Sort = "准时"; + } + //迟到打卡 + else if (datetimenow.TimeOfDay > start && datetimenow.TimeOfDay <= end) + { + attendanceEntity.Sort = "迟到"; + } + else + { + return false; + } + attendanceEntity.EmpNo = arrangelessonterm.EmpNo; + attendanceEntity.CheckMarkDept = "0"; + attendanceEntity.CheckMark = "0"; + attendanceEntity.InertDate = datetimenow; + attendanceEntity.ClassRoomNo = arrangelessonterm.ClassroomNo; + attendanceEntity.ClassRoomName = classroom.FirstOrDefault(m => m.ClassroomNo == arrangelessonterm.ClassroomNo)?.ClassroomName; + } + if (lessonSortNo == "2") + { + var arrangeLessonTermOfElective = base.BaseRepository("CollegeMIS").FindEntity(m => m.Id == alToeId); + attendanceEntity.AcademicYearNo = arrangeLessonTermOfElective.AcademicYearNo; + attendanceEntity.Semester = arrangeLessonTermOfElective.Semester; + attendanceEntity.StuNo = stuinfo.StuNo; + attendanceEntity.StuName = stuinfo.StuName; + attendanceEntity.Gender = stuinfo.GenderNo.Value ? "男" : "女"; + attendanceEntity.Grade = stuinfo.Grade; + attendanceEntity.DeptNo = stuinfo.DeptNo; + attendanceEntity.DeptName = dept.FirstOrDefault(m => m.DeptNo == stuinfo.DeptNo)?.DeptName; + attendanceEntity.MajorNo = stuinfo.MajorNo; + attendanceEntity.MajorName = major.FirstOrDefault(m => m.MajorNo == stuinfo.MajorNo)?.MajorName; + attendanceEntity.ClassNo = stuinfo.ClassNo; + attendanceEntity.ClassName = classinfo.FirstOrDefault(m => m.ClassNo == stuinfo.ClassNo)?.ClassName; + attendanceEntity.LessonNo = arrangeLessonTermOfElective.LessonNo; + attendanceEntity.LessonName = arrangeLessonTermOfElective.LessonName; + attendanceEntity.TeachClassNo = attendanceEntity.ClassNo; + attendanceEntity.LessonSortNo = "2"; + attendanceEntity.LessonSortName = "选修课"; + attendanceEntity.LessonDate = arrangeLessonTermOfElective.LessonDate; + attendanceEntity.LessonTime = arrangeLessonTermOfElective.LessonSection; + attendanceEntity.LessonTime2 = arrangeLessonTermOfElective.LessonTime; + attendanceEntity.AttendOrNo = "是"; + //迟到状态判断 + var datetimenow = DateTime.Now; + var lessontime = arrangeLessonTermOfElective.LessonTime.Split('-'); + TimeSpan start = TimeSpan.Parse(lessontime[0]); + TimeSpan end = TimeSpan.Parse(lessontime[1]); + int StuAttendanceEarliestMinute = string.IsNullOrEmpty(Util.Config.GetValue("StuAttendanceEarliestMinute")) ? Convert.ToInt32(Util.Config.GetValue("StuAttendanceEarliestMinute")) : 0; + //当前时间小于等于上课时间,且大于开课前指定分钟 + if (datetimenow.TimeOfDay <= start && datetimenow.TimeOfDay >= start.Add(-TimeSpan.FromMinutes(StuAttendanceEarliestMinute))) + { + attendanceEntity.Sort = "准时"; + } + //迟到打卡 + else if (datetimenow.TimeOfDay > start && datetimenow.TimeOfDay <= end) + { + attendanceEntity.Sort = "迟到"; + } + else + { + return false; + } + attendanceEntity.EmpNo = arrangeLessonTermOfElective.EmpNo; + attendanceEntity.CheckMarkDept = "0"; + attendanceEntity.CheckMark = "0"; + attendanceEntity.InertDate = datetimenow; + attendanceEntity.ClassRoomNo = arrangeLessonTermOfElective.ClassRoomNo; + attendanceEntity.ClassRoomName = classroom.FirstOrDefault(m => m.ClassroomNo == arrangeLessonTermOfElective.ClassRoomNo)?.ClassroomName; + } + base.BaseRepository("CollegeMIS").Insert(attendanceEntity); + return true; + } + catch (Exception ex) + { + if (ex is ExceptionEx) + { + throw; + } + else + { + throw ExceptionEx.ThrowServiceException(ex); + } + } + } } }