diff --git a/Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/PersonnelManagement/Views/ADR_Restriction/Form.js b/Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/PersonnelManagement/Views/ADR_Restriction/Form.js index 6d1671fa1..964cce9ec 100644 --- a/Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/PersonnelManagement/Views/ADR_Restriction/Form.js +++ b/Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/PersonnelManagement/Views/ADR_Restriction/Form.js @@ -30,30 +30,43 @@ var bootstrap = function ($, learun) { if (val.value == "四次打卡") { $('#NoonCloseTime').parent('.lr-form-item').show(); $('#NoonWorkTime').parent('.lr-form-item').show(); - $('#NoonCloseTime').removeAttr('isvalid'); - $('#NoonWorkTime').removeAttr('isvalid'); + //$('#NoonCloseTime').removeAttr('isvalid'); + //$('#NoonWorkTime').removeAttr('isvalid'); $('#SignOutStartTime2').parent('.lr-form-item').show(); $('#SignOutEndTime2').parent('.lr-form-item').show(); $('#SignInStartTime2').parent('.lr-form-item').show(); $('#SignInEndTime2').parent('.lr-form-item').show(); - $('#SignOutStartTime2').removeAttr('isvalid'); - $('#SignOutEndTime2').removeAttr('isvalid'); - $('#SignInStartTime2').removeAttr('isvalid'); - $('#SignInEndTime2').removeAttr('isvalid'); + //$('#SignOutStartTime2').removeAttr('isvalid'); + //$('#SignOutEndTime2').removeAttr('isvalid'); + //$('#SignInStartTime2').removeAttr('isvalid'); + //$('#SignInEndTime2').removeAttr('isvalid'); } else { - $('#NoonCloseTime').parent('.lr-form-item').hide(); - $('#NoonWorkTime').parent('.lr-form-item').hide(); - $('#NoonCloseTime').attr('isvalid', 'true'); - $('#NoonWorkTime').attr('isvalid', 'true'); - $('#SignOutStartTime2').parent('.lr-form-item').hide(); - $('#SignOutEndTime2').parent('.lr-form-item').hide(); - $('#SignInStartTime2').parent('.lr-form-item').hide(); - $('#SignInEndTime2').parent('.lr-form-item').hide(); - $('#SignOutStartTime2').attr('isvalid', 'true'); - $('#SignOutEndTime2').attr('isvalid', 'true'); - $('#SignInStartTime2').attr('isvalid', 'true'); - $('#SignInEndTime2').attr('isvalid', 'true'); + //$('#NoonCloseTime').parent('.lr-form-item').hide(); + //$('#NoonWorkTime').parent('.lr-form-item').hide(); + //$('#NoonCloseTime').attr('isvalid', 'true'); + //$('#NoonWorkTime').attr('isvalid', 'true'); + //$('#SignOutStartTime2').parent('.lr-form-item').hide(); + //$('#SignOutEndTime2').parent('.lr-form-item').hide(); + //$('#SignInStartTime2').parent('.lr-form-item').hide(); + //$('#SignInEndTime2').parent('.lr-form-item').hide(); + //$('#SignOutStartTime2').attr('isvalid', 'true'); + //$('#SignOutEndTime2').attr('isvalid', 'true'); + //$('#SignInStartTime2').attr('isvalid', 'true'); + //$('#SignInEndTime2').attr('isvalid', 'true'); + + $('#NoonCloseTime').parent('.lr-form-item').show(); + $('#NoonWorkTime').parent('.lr-form-item').show(); + //$('#NoonCloseTime').removeAttr('isvalid'); + //$('#NoonWorkTime').removeAttr('isvalid'); + $('#SignOutStartTime2').parent('.lr-form-item').show(); + $('#SignOutEndTime2').parent('.lr-form-item').show(); + $('#SignInStartTime2').parent('.lr-form-item').show(); + $('#SignInEndTime2').parent('.lr-form-item').show(); + //$('#SignOutStartTime2').removeAttr('isvalid'); + //$('#SignOutEndTime2').removeAttr('isvalid'); + //$('#SignInStartTime2').removeAttr('isvalid'); + //$('#SignInEndTime2').removeAttr('isvalid'); } } }).lrselectSet('二次打卡'); 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 753ed76d9..87cc912f7 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 @@ -219,6 +219,21 @@ namespace Learun.Application.TwoDevelopment.PersonnelManagement DateTime signOutStartTime = Convert.ToDateTime(datenow + " " + attendancerulEntity.SignOutStartTime); DateTime signOutEndTime = Convert.ToDateTime(datenow + " " + attendancerulEntity.SignOutEndTime); + //中午下班时间 + DateTime offworkDateTimelunch = Convert.ToDateTime(datenow + " " + attendancerulEntity.NoonCloseTime); + //中午上班时间 + DateTime workDateTimelunch = Convert.ToDateTime(datenow + " " + attendancerulEntity.NoonWorkTime); + //中午下班考勤时间段 + DateTime offworkstartlunch = Convert.ToDateTime(datenow + " " + attendancerulEntity.SignOutStartTime2); + DateTime offworkendlunch = Convert.ToDateTime(datenow + " " + attendancerulEntity.SignOutEndTime2); + //中午上班考勤时间段 + DateTime workstartlunch = Convert.ToDateTime(datenow + " " + attendancerulEntity.SignInStartTime2); + DateTime workendlunch = Convert.ToDateTime(datenow + " " + attendancerulEntity.SignInEndTime2); + + + var leaveTime = attendancerulEntity.LeaveOverTime ?? 0; + var overTime = attendancerulEntity.LateOvertime ?? 0; + //2021.12.30 上下班设置时间段打卡 #region 二次打卡 @@ -238,7 +253,7 @@ namespace Learun.Application.TwoDevelopment.PersonnelManagement ADType = "2";//下班 ClockStatus = "1";//正常 } - else if (devicetime <= signOutStartTime)//小于下班时间 + else if (devicetime < signOutStartTime && devicetime > signInEndTime)//小于下班时间 { //首先判断是上班还是下班 //该用户当日有签到记录视为下班签退 @@ -249,50 +264,101 @@ namespace Learun.Application.TwoDevelopment.PersonnelManagement if (attendancerecord.Count() > 0)//如果存在上班考勤记录 { - //判断为下班早退 - if (attendancerulEntity.LeaveOverTime.HasValue && attendancerulEntity.LeaveOverTime != 0)//如果允许早退,获取范围 + ADType = "2";//下班 + + if(devicetime< workDateTimelunch) { - //最早签退时间 - DateTime offworkDateTimeFree = offworkDateTime.AddMinutes(-Convert.ToDouble(attendancerulEntity.LeaveOverTime)); - if (devicetime >= offworkDateTimeFree)//在允许早退范围内记为正常 + DateTime offworkDateTimeFree1 = offworkstartlunch.AddMinutes(-leaveTime); + if (devicetime < offworkDateTimeFree1) { - ADType = "2";//下班 - ClockStatus = "1";//正常 + ClockStatus = "3"; } - else//超出早退范围视为早退 + else { - ADType = "2";//下班 - ClockStatus = "3";//早退 + ClockStatus = "1"; } + } - else//不允许早退直接视为早退 - { - ADType = "2";//下班 - ClockStatus = "3";//早退 - } - } - else//判断为上班迟到 - { - if (attendancerulEntity.LateOvertime.HasValue && attendancerulEntity.LateOvertime != 0)//如果允许迟到,获取范围 + else { - //最晚签到时间 - DateTime workDateTimeFree = workDateTime.AddMinutes(Convert.ToDouble(attendancerulEntity.LateOvertime)); - if (devicetime <= workDateTimeFree)//在允许迟到范围内记为正常 + if(devicetime>=(signOutStartTime.AddMinutes(-leaveTime))) { - ADType = "1";//上班 - ClockStatus = "1";//正常 + ClockStatus = "1"; } else { - ADType = "1";//上班 - ClockStatus = "2";//迟到 + ClockStatus = "3"; } } + + + ////判断为下班早退 + //if (attendancerulEntity.LeaveOverTime.HasValue && attendancerulEntity.LeaveOverTime != 0)//如果允许早退,获取范围 + //{ + // //最早签退时间 + // DateTime offworkDateTimeFree = offworkDateTime.AddMinutes(-Convert.ToDouble(attendancerulEntity.LeaveOverTime)); + // if (devicetime >= offworkDateTimeFree)//在允许早退范围内记为正常 + // { + // ADType = "2";//下班 + // ClockStatus = "1";//正常 + // } + // else//超出早退范围视为早退 + // { + // ADType = "2";//下班 + // ClockStatus = "3";//早退 + // } + //} + //else//不允许早退直接视为早退 + //{ + // ADType = "2";//下班 + // ClockStatus = "3";//早退 + //} + } + else//判断为上班迟到 + { + if (devicetime< offworkstartlunch.AddMinutes(-leaveTime)) + { + ADType = "1"; + ClockStatus = "2"; + } + else if(devicetime>= offworkstartlunch.AddMinutes(-leaveTime) && devicetime<= offworkendlunch) + { + ADType = "2"; + ClockStatus = "1"; + } + else if(devicetime>= workstartlunch && devicetime<=workendlunch.AddMinutes(overTime)) + { + ADType = "1"; + ClockStatus = "1"; + } else { - ADType = "1";//上班 - ClockStatus = "2";//迟到 + ADType = "1"; + ClockStatus = "2"; } + + + + //if (attendancerulEntity.LateOvertime.HasValue && attendancerulEntity.LateOvertime != 0)//如果允许迟到,获取范围 + //{ + // //最晚签到时间 + // DateTime workDateTimeFree = workDateTime.AddMinutes(Convert.ToDouble(attendancerulEntity.LateOvertime)); + // if (devicetime <= workDateTimeFree)//在允许迟到范围内记为正常 + // { + // ADType = "1";//上班 + // ClockStatus = "1";//正常 + // } + // else + // { + // ADType = "1";//上班 + // ClockStatus = "2";//迟到 + // } + //} + //else + //{ + // ADType = "1";//上班 + // ClockStatus = "2";//迟到 + //} } } @@ -455,16 +521,7 @@ namespace Learun.Application.TwoDevelopment.PersonnelManagement #region 四次打卡 else//四次打卡 { - //中午下班时间 - DateTime offworkDateTimelunch = Convert.ToDateTime(datenow + " " + attendancerulEntity.NoonCloseTime); - //中午上班时间 - DateTime workDateTimelunch = Convert.ToDateTime(datenow + " " + attendancerulEntity.NoonWorkTime); - //中午下班考勤时间段 - DateTime offworkstartlunch = Convert.ToDateTime(datenow + " " + attendancerulEntity.SignOutStartTime2); - DateTime offworkendlunch = Convert.ToDateTime(datenow + " " + attendancerulEntity.SignOutEndTime2); - //中午上班考勤时间段 - DateTime workstartlunch = Convert.ToDateTime(datenow + " " + attendancerulEntity.SignInStartTime2); - DateTime workendlunch = Convert.ToDateTime(datenow + " " + attendancerulEntity.SignInEndTime2); + //首先判断是否在中午考勤时间段 //如果在中午下班考勤时间段 if (offworkstartlunch <= devicetime && devicetime <= offworkendlunch) @@ -563,7 +620,7 @@ namespace Learun.Application.TwoDevelopment.PersonnelManagement { this.BaseRepository("CollegeMIS").ExecuteBySql("insert into ADR_Record(ID, UserNo, ADType, ADTime, ClockTime, ClockStatus, ClockPlace,Img, ADYear, ADMonth, ADDay, ADPhoto,ALon,ALat,AIsOut,IsFit,ARemark) values(" + "'" + adrRecordEntity.ID + "','" + adrRecordEntity.UserNo + "','" + adrRecordEntity.ADType + "','" + adrRecordEntity.ADTime + "'," + - "'" + adrRecordEntity.ClockTime + "','" + adrRecordEntity.ClockStatus + "','" + adrRecordEntity.ClockPlace + "','"+adrRecordEntity.Img+"','" + adrRecordEntity.ADYear + "'," + + "'" + adrRecordEntity.ClockTime + "','" + adrRecordEntity.ClockStatus + "','" + adrRecordEntity.ClockPlace + "','" + adrRecordEntity.Img + "','" + adrRecordEntity.ADYear + "'," + "'" + adrRecordEntity.ADMonth + "','" + adrRecordEntity.ADDay + "','" + adrRecordEntity.ADPhoto + "'," + adrRecordEntity.ALon + "," + adrRecordEntity.ALat + ",'" + adrRecordEntity.AIsOut + "','" + adrRecordEntity.IsFit + "','" + adrRecordEntity.ARemark + "')"); return true; } @@ -655,7 +712,7 @@ namespace Learun.Application.TwoDevelopment.PersonnelManagement { this.BaseRepository("CollegeMIS").ExecuteBySql("insert into ADR_Record(ID, UserNo, ADType, ADTime, ClockTime, ClockStatus, ClockPlace,Img, ADYear, ADMonth, ADDay, ADPhoto,ALon,ALat,AIsOut,IsFit,ARemark) values(" + "'" + adrRecordEntity.ID + "','" + adrRecordEntity.UserNo + "','" + adrRecordEntity.ADType + "','" + adrRecordEntity.ADTime + "'," + - "'" + adrRecordEntity.ClockTime + "','" + adrRecordEntity.ClockStatus + "','" + adrRecordEntity.ClockPlace + "','"+adrRecordEntity.Img+"','" + adrRecordEntity.ADYear + "'," + + "'" + adrRecordEntity.ClockTime + "','" + adrRecordEntity.ClockStatus + "','" + adrRecordEntity.ClockPlace + "','" + adrRecordEntity.Img + "','" + adrRecordEntity.ADYear + "'," + "'" + adrRecordEntity.ADMonth + "','" + adrRecordEntity.ADDay + "','" + adrRecordEntity.ADPhoto + "'," + adrRecordEntity.ALon + "," + adrRecordEntity.ALat + ",'" + adrRecordEntity.AIsOut + "','" + adrRecordEntity.IsFit + "','" + adrRecordEntity.ARemark + "')"); } return true; @@ -989,7 +1046,7 @@ namespace Learun.Application.TwoDevelopment.PersonnelManagement adrRecordEntity.ClockPlace = ClockPlace; adrRecordEntity.Img = img; adrRecordEntity.IsFit = true; - + //adrRecordEntity.ADPhoto = str; ////记录日志 //ADR_DeviceLogEntity adrDeviceLogEntitylateorleave = new ADR_DeviceLogEntity(); @@ -2093,7 +2150,7 @@ namespace Learun.Application.TwoDevelopment.PersonnelManagement var preTeachAttendanceList = this.BaseRepository("CollegeMIS").FindList(x => x.EmpNo == entity.UserNo && preALTIdList.Contains(x.ALTId)); if (preTeachAttendanceList.Any()) { - db.ExecuteBySql($"delete from Teach_Attendance where ID in ('{string.Join("','",preTeachAttendanceList.Select(x => x.ID)) }')"); + db.ExecuteBySql($"delete from Teach_Attendance where ID in ('{string.Join("','", preTeachAttendanceList.Select(x => x.ID)) }')"); } //上班-下班打卡时间范围内的课