Browse Source

考勤打卡新逻辑

黑艺新账号
北京泉江 11 months ago
parent
commit
aabf9aed61
2 changed files with 131 additions and 61 deletions
  1. +31
    -18
      Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/PersonnelManagement/Views/ADR_Restriction/Form.js
  2. +100
    -43
      Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/PersonnelManagement/ADR_Restriction/ADR_RestrictionService.cs

+ 31
- 18
Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/PersonnelManagement/Views/ADR_Restriction/Form.js View File

@@ -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('二次打卡');


+ 100
- 43
Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/PersonnelManagement/ADR_Restriction/ADR_RestrictionService.cs View File

@@ -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<Teach_attendanceEntity>(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)) }')");
}

//上班-下班打卡时间范围内的课


Loading…
Cancel
Save