|
@@ -246,175 +246,201 @@ namespace Learun.Application.TwoDevelopment.LogisticsManagement |
|
|
{ |
|
|
{ |
|
|
var basedbname = BaseRepository().getDbConnection().Database; |
|
|
var basedbname = BaseRepository().getDbConnection().Database; |
|
|
var queryParam = queryJson.ToJObject(); |
|
|
var queryParam = queryJson.ToJObject(); |
|
|
var date = DateTime.Now.ToDateString(); |
|
|
|
|
|
if (!queryParam["Date"].IsEmpty()) |
|
|
|
|
|
|
|
|
var datest = DateTime.Now.ToDateString(); |
|
|
|
|
|
var dateet = datest; |
|
|
|
|
|
if (!queryParam["startTime"].IsEmpty()) |
|
|
{ |
|
|
{ |
|
|
date = queryParam["Date"].ToDate().ToDateString(); |
|
|
|
|
|
|
|
|
datest = queryParam["startTime"].ToDate().ToDateString(); |
|
|
} |
|
|
} |
|
|
var strSql = new StringBuilder(); |
|
|
|
|
|
strSql.Append("select u.F_Encode as UserNo,u.F_RealName as UserName,u.F_DepartmentId as Department,t.ID,t.ADType,t.ADTime,t.ClockTime,t.ClockStatus "); |
|
|
|
|
|
strSql.Append(" from " + basedbname + ".dbo.LR_Base_User u "); |
|
|
|
|
|
strSql.Append(" inner join EmpInfo emp on u.F_EnCode=emp.EmpNo "); |
|
|
|
|
|
strSql.Append(" left join ADR_Record t on u.F_EnCode=t.UserNo and t.ADYear='" + date.Substring(0, 4) + "' and t.ADMonth='" + date.Substring(5, 2) + "' and t.ADDay='" + date.Substring(8, 2) + "' "); |
|
|
|
|
|
strSql.Append(" where u.F_Description='教师' AND u.F_DeleteMark = 0 AND u.F_EnabledMark = 1 and u.F_Encode is not null "); |
|
|
|
|
|
|
|
|
|
|
|
var UserNoPrev = Config.GetValue("ADR_RecordUserNoPrev"); |
|
|
|
|
|
if (!string.IsNullOrEmpty(UserNoPrev)) |
|
|
|
|
|
{ |
|
|
|
|
|
strSql.Append(" and u.F_encode like '" + UserNoPrev + "%' "); |
|
|
|
|
|
} |
|
|
|
|
|
// 虚拟参数 |
|
|
|
|
|
var dp = new DynamicParameters(new { }); |
|
|
|
|
|
if (!queryParam["UserNo"].IsEmpty()) |
|
|
|
|
|
{ |
|
|
|
|
|
dp.Add("UserNo", queryParam["UserNo"].ToString(), DbType.String); |
|
|
|
|
|
strSql.Append(" AND u.F_EnCode = @UserNo "); |
|
|
|
|
|
} |
|
|
|
|
|
if (!queryParam["UserName"].IsEmpty()) |
|
|
|
|
|
{ |
|
|
|
|
|
dp.Add("UserName", "%" + queryParam["UserName"].ToString() + "%", DbType.String); |
|
|
|
|
|
strSql.Append(" AND u.F_RealName Like @UserName "); |
|
|
|
|
|
} |
|
|
|
|
|
if (!queryParam["F_DepartmentId"].IsEmpty()) |
|
|
|
|
|
|
|
|
if (!queryParam["endTime"].IsEmpty()) |
|
|
{ |
|
|
{ |
|
|
dp.Add("F_DepartmentId", queryParam["F_DepartmentId"].ToString(), DbType.String); |
|
|
|
|
|
strSql.Append(" AND emp.F_DepartmentId = @F_DepartmentId "); |
|
|
|
|
|
|
|
|
dateet = queryParam["endTime"].ToDate().ToDateString(); |
|
|
} |
|
|
} |
|
|
if (!queryParam["ClockStatus"].IsEmpty()) |
|
|
|
|
|
{ |
|
|
|
|
|
dp.Add("ClockStatus", queryParam["ClockStatus"].ToString(), DbType.String); |
|
|
|
|
|
if (queryParam["ClockStatus"].ToString() == "6" || queryParam["ClockStatus"].ToString() == "0")//缺勤、旷工 |
|
|
|
|
|
|
|
|
//考勤时间段查询结果 |
|
|
|
|
|
var totalResult = new List<ADR_RecordEntity>(); |
|
|
|
|
|
//启用的考勤规则 |
|
|
|
|
|
var restrictionEntity = this.BaseRepository("CollegeMIS").FindEntity<ADR_RestrictionEntity>(m => m.REnable == true); |
|
|
|
|
|
if (restrictionEntity == null) |
|
|
|
|
|
{ |
|
|
|
|
|
return totalResult; |
|
|
|
|
|
} |
|
|
|
|
|
//考勤时间段查询语句 |
|
|
|
|
|
var totalSql = new StringBuilder(); |
|
|
|
|
|
totalSql.Append("select top 100 percent * from ( "); |
|
|
|
|
|
//考勤时间段查询 |
|
|
|
|
|
for (int i = 0; i < (dateet.ToDate() - datest.ToDate()).Days + 1; i++) |
|
|
|
|
|
{ |
|
|
|
|
|
//当天日期 |
|
|
|
|
|
var date = datest.ToDate().AddDays(i).ToDateString(); |
|
|
|
|
|
//当天查询语句 |
|
|
|
|
|
var strSql = new StringBuilder(); |
|
|
|
|
|
strSql.Append($"select u.F_Encode as UserNo,u.F_RealName as UserName,u.F_DepartmentId as Department,t.ID,t.ADType,t.ADTime,t.ClockTime,t.ClockStatus,'{date}' as ClockDate "); |
|
|
|
|
|
strSql.Append(" from " + basedbname + ".dbo.LR_Base_User u "); |
|
|
|
|
|
strSql.Append(" inner join EmpInfo emp on u.F_EnCode=emp.EmpNo "); |
|
|
|
|
|
strSql.Append(" left join ADR_Record t on u.F_EnCode=t.UserNo and t.ADYear='" + date.Substring(0, 4) + "' and t.ADMonth='" + date.Substring(5, 2) + "' and t.ADDay='" + date.Substring(8, 2) + "' "); |
|
|
|
|
|
strSql.Append(" where u.F_Description='教师' AND u.F_DeleteMark = 0 AND u.F_EnabledMark = 1 and u.F_Encode is not null "); |
|
|
|
|
|
|
|
|
|
|
|
var UserNoPrev = Config.GetValue("ADR_RecordUserNoPrev"); |
|
|
|
|
|
if (!string.IsNullOrEmpty(UserNoPrev)) |
|
|
{ |
|
|
{ |
|
|
strSql.Append(" AND t.ClockStatus is null "); |
|
|
|
|
|
|
|
|
strSql.Append(" and u.F_encode like '" + UserNoPrev + "%' "); |
|
|
} |
|
|
} |
|
|
else |
|
|
|
|
|
|
|
|
// 虚拟参数 |
|
|
|
|
|
if (!queryParam["UserNo"].IsEmpty()) |
|
|
{ |
|
|
{ |
|
|
strSql.Append(" AND t.ClockStatus = @ClockStatus "); |
|
|
|
|
|
|
|
|
strSql.Append($" AND u.F_EnCode = '{queryParam["UserNo"].ToString()}' "); |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
//某天记录列表 |
|
|
|
|
|
var data = this.BaseRepository("CollegeMIS").FindList<ADR_RecordEntity>(strSql.ToString(), dp, pagination) |
|
|
|
|
|
.GroupBy(x => new { x.UserNo, x.UserName, x.Department }).Select(x => new |
|
|
|
|
|
|
|
|
if (!queryParam["UserName"].IsEmpty()) |
|
|
|
|
|
{ |
|
|
|
|
|
strSql.Append($" AND u.F_RealName Like '%{queryParam["UserName"].ToString()}%' "); |
|
|
|
|
|
} |
|
|
|
|
|
if (!queryParam["F_DepartmentId"].IsEmpty()) |
|
|
|
|
|
{ |
|
|
|
|
|
strSql.Append($" AND emp.F_DepartmentId = '{queryParam["F_DepartmentId"].ToString()}' "); |
|
|
|
|
|
} |
|
|
|
|
|
if (!queryParam["ClockStatus"].IsEmpty()) |
|
|
{ |
|
|
{ |
|
|
UserNo = x.Key.UserNo, |
|
|
|
|
|
UserName = x.Key.UserName, |
|
|
|
|
|
Department = x.Key.Department, |
|
|
|
|
|
Group = x.Select(y => new ADR_RecordEntity() |
|
|
|
|
|
|
|
|
if (queryParam["ClockStatus"].ToString() == "6" || queryParam["ClockStatus"].ToString() == "0")//缺勤、旷工 |
|
|
{ |
|
|
{ |
|
|
ADType = y.ADType, |
|
|
|
|
|
ClockTime = y.ClockTime, |
|
|
|
|
|
ClockStatus = y.ClockStatus |
|
|
|
|
|
}) |
|
|
|
|
|
}); |
|
|
|
|
|
//结果列表 |
|
|
|
|
|
var result = new List<ADR_RecordEntity>(); |
|
|
|
|
|
//启用的考勤规则 |
|
|
|
|
|
var restrictionEntity = this.BaseRepository("CollegeMIS").FindEntity<ADR_RestrictionEntity>(m => m.REnable == true); |
|
|
|
|
|
if (restrictionEntity != null) |
|
|
|
|
|
{ |
|
|
|
|
|
//上班时间 |
|
|
|
|
|
var WorkTimeTemp = string.Format("{0} {1}", date, restrictionEntity.WorkTime).ToDate(); |
|
|
|
|
|
//下班时间 |
|
|
|
|
|
var CloseTimeTemp = string.Format("{0} {1}", date, restrictionEntity.CloseTime).ToDate(); |
|
|
|
|
|
if (restrictionEntity.ClockTime == "二次打卡") |
|
|
|
|
|
|
|
|
strSql.Append(" AND t.ClockStatus is null "); |
|
|
|
|
|
} |
|
|
|
|
|
else |
|
|
|
|
|
{ |
|
|
|
|
|
strSql.Append($" AND t.ClockStatus = '{queryParam["ClockStatus"].ToString()}' "); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
totalSql.Append(strSql); |
|
|
|
|
|
if (i < (dateet.ToDate() - datest.ToDate()).Days) |
|
|
|
|
|
{ |
|
|
|
|
|
totalSql.Append(" union "); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
totalSql.Append(" ) as bb where 1=1 order by bb.ClockDate"); |
|
|
|
|
|
//当天记录列表 |
|
|
|
|
|
var data = this.BaseRepository("CollegeMIS").FindList<ADR_RecordEntity>(totalSql.ToString(), pagination) |
|
|
|
|
|
.GroupBy(x => new { x.UserNo, x.UserName, x.Department, x.ClockDate }).Select(x => new |
|
|
|
|
|
{ |
|
|
|
|
|
UserNo = x.Key.UserNo, |
|
|
|
|
|
UserName = x.Key.UserName, |
|
|
|
|
|
Department = x.Key.Department, |
|
|
|
|
|
ClockDate = x.Key.ClockDate, |
|
|
|
|
|
Group = x.Select(y => new ADR_RecordEntity() |
|
|
|
|
|
{ |
|
|
|
|
|
ADType = y.ADType, |
|
|
|
|
|
ClockTime = y.ClockTime, |
|
|
|
|
|
ClockStatus = y.ClockStatus |
|
|
|
|
|
}) |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
if (restrictionEntity.ClockTime == "二次打卡") |
|
|
|
|
|
{ |
|
|
|
|
|
#region 二次打卡 |
|
|
|
|
|
|
|
|
|
|
|
foreach (var item in data) |
|
|
{ |
|
|
{ |
|
|
#region 二次打卡 |
|
|
|
|
|
|
|
|
//上班时间 |
|
|
|
|
|
var WorkTimeTemp = string.Format("{0} {1}", item.ClockDate, restrictionEntity.WorkTime).ToDate(); |
|
|
|
|
|
//下班时间 |
|
|
|
|
|
var CloseTimeTemp = string.Format("{0} {1}", item.ClockDate, restrictionEntity.CloseTime).ToDate(); |
|
|
var WholeMinutes = (CloseTimeTemp - WorkTimeTemp).TotalMinutes.ToInt();//全天应工作分钟数 |
|
|
var WholeMinutes = (CloseTimeTemp - WorkTimeTemp).TotalMinutes.ToInt();//全天应工作分钟数 |
|
|
|
|
|
|
|
|
foreach (var item in data) |
|
|
|
|
|
|
|
|
var adtype1 = item.Group.FirstOrDefault(x => x.ADType == "1");//上班 |
|
|
|
|
|
var adtype2 = item.Group.FirstOrDefault(x => x.ADType == "2");//下班 |
|
|
|
|
|
//全天 |
|
|
|
|
|
var whole = new ADR_RecordEntity() |
|
|
{ |
|
|
{ |
|
|
var adtype1 = item.Group.FirstOrDefault(x => x.ADType == "1");//上班 |
|
|
|
|
|
var adtype2 = item.Group.FirstOrDefault(x => x.ADType == "2");//下班 |
|
|
|
|
|
//全天 |
|
|
|
|
|
var whole = new ADR_RecordEntity() |
|
|
|
|
|
{ |
|
|
|
|
|
UserNo = item.UserNo, |
|
|
|
|
|
UserName = item.UserName, |
|
|
|
|
|
Department = item.Department, |
|
|
|
|
|
ClockDate = date, |
|
|
|
|
|
BanCi = "上下班", |
|
|
|
|
|
TimePeriodNo = 0, |
|
|
|
|
|
TimePeriod = string.Format("上下班({0}-{1})", restrictionEntity.WorkTime, restrictionEntity.CloseTime), |
|
|
|
|
|
ADStatusWork = adtype1 != null ? adtype1.ClockStatus : "6", |
|
|
|
|
|
ADStatusClose = adtype2 != null ? adtype2.ClockStatus : "6", |
|
|
|
|
|
ClockTimeWork = adtype1 != null ? adtype1.ClockTime.ToTimeString() : "-", |
|
|
|
|
|
ClockTimeClose = adtype2 != null ? adtype2.ClockTime.ToTimeString() : "-", |
|
|
|
|
|
ChidaoMinutes = adtype1 != null ? adtype1.ClockStatus == "2" ? (adtype1.ClockTime.Value - WorkTimeTemp).TotalMinutes.ToInt() : 0 : 0, |
|
|
|
|
|
ZaoTuiMinutes = adtype2 != null ? adtype2.ClockStatus == "3" ? (CloseTimeTemp - adtype2.ClockTime.Value).TotalMinutes.ToInt() : 0 : 0, |
|
|
|
|
|
ChuQinMinutes = adtype1 != null && adtype2 != null ? (adtype2.ClockTime.Value - adtype1.ClockTime.Value).TotalMinutes.ToInt() : 0, |
|
|
|
|
|
QueQinMinutes = adtype1 != null && adtype2 != null ? 0 : WholeMinutes, |
|
|
|
|
|
RestMinutes = 0 |
|
|
|
|
|
}; |
|
|
|
|
|
whole.WorkMinutes = WholeMinutes == whole.QueQinMinutes ? 0 : WholeMinutes - whole.ChidaoMinutes - whole.ZaoTuiMinutes - whole.QueQinMinutes; |
|
|
|
|
|
result.Add(whole); |
|
|
|
|
|
} |
|
|
|
|
|
#endregion |
|
|
|
|
|
|
|
|
UserNo = item.UserNo, |
|
|
|
|
|
UserName = item.UserName, |
|
|
|
|
|
Department = item.Department, |
|
|
|
|
|
ClockDate = item.ClockDate, |
|
|
|
|
|
BanCi = "上下班", |
|
|
|
|
|
TimePeriodNo = 0, |
|
|
|
|
|
TimePeriod = string.Format("上下班({0}-{1})", restrictionEntity.WorkTime, restrictionEntity.CloseTime), |
|
|
|
|
|
ADStatusWork = adtype1 != null ? adtype1.ClockStatus : "6", |
|
|
|
|
|
ADStatusClose = adtype2 != null ? adtype2.ClockStatus : "6", |
|
|
|
|
|
ClockTimeWork = adtype1 != null ? adtype1.ClockTime.ToTimeString() : "-", |
|
|
|
|
|
ClockTimeClose = adtype2 != null ? adtype2.ClockTime.ToTimeString() : "-", |
|
|
|
|
|
ChidaoMinutes = adtype1 != null ? adtype1.ClockStatus == "2" ? (adtype1.ClockTime.Value - WorkTimeTemp).TotalMinutes.ToInt() : 0 : 0, |
|
|
|
|
|
ZaoTuiMinutes = adtype2 != null ? adtype2.ClockStatus == "3" ? (CloseTimeTemp - adtype2.ClockTime.Value).TotalMinutes.ToInt() : 0 : 0, |
|
|
|
|
|
ChuQinMinutes = adtype1 != null && adtype2 != null ? (adtype2.ClockTime.Value - adtype1.ClockTime.Value).TotalMinutes.ToInt() : 0, |
|
|
|
|
|
QueQinMinutes = adtype1 != null && adtype2 != null ? 0 : WholeMinutes, |
|
|
|
|
|
RestMinutes = 0 |
|
|
|
|
|
}; |
|
|
|
|
|
whole.WorkMinutes = WholeMinutes == whole.QueQinMinutes ? 0 : WholeMinutes - whole.ChidaoMinutes - whole.ZaoTuiMinutes - whole.QueQinMinutes; |
|
|
|
|
|
totalResult.Add(whole); |
|
|
} |
|
|
} |
|
|
else |
|
|
|
|
|
|
|
|
#endregion |
|
|
|
|
|
} |
|
|
|
|
|
else |
|
|
|
|
|
{ |
|
|
|
|
|
#region 四次打卡 |
|
|
|
|
|
|
|
|
|
|
|
foreach (var item in data) |
|
|
{ |
|
|
{ |
|
|
#region 四次打卡 |
|
|
|
|
|
|
|
|
//上班时间 |
|
|
|
|
|
var WorkTimeTemp = string.Format("{0} {1}", item.ClockDate, restrictionEntity.WorkTime).ToDate(); |
|
|
|
|
|
//下班时间 |
|
|
|
|
|
var CloseTimeTemp = string.Format("{0} {1}", item.ClockDate, restrictionEntity.CloseTime).ToDate(); |
|
|
//中午下班时间 |
|
|
//中午下班时间 |
|
|
var NoonCloseTimeTemp = string.Format("{0} {1}", date, restrictionEntity?.NoonCloseTime).ToDate(); |
|
|
|
|
|
|
|
|
var NoonCloseTimeTemp = string.Format("{0} {1}", item.ClockDate, restrictionEntity?.NoonCloseTime).ToDate(); |
|
|
//中午上班时间 |
|
|
//中午上班时间 |
|
|
var NoonWorkTimeTemp = string.Format("{0} {1}", date, restrictionEntity?.NoonWorkTime).ToDate(); |
|
|
|
|
|
|
|
|
var NoonWorkTimeTemp = string.Format("{0} {1}", item.ClockDate, restrictionEntity?.NoonWorkTime).ToDate(); |
|
|
var MorningMinutes = (NoonCloseTimeTemp - WorkTimeTemp).TotalMinutes.ToInt();//上午应工作分钟数 |
|
|
var MorningMinutes = (NoonCloseTimeTemp - WorkTimeTemp).TotalMinutes.ToInt();//上午应工作分钟数 |
|
|
var AfternoonMinutes = (CloseTimeTemp - NoonWorkTimeTemp).TotalMinutes.ToInt();//下午应工作分钟数 |
|
|
var AfternoonMinutes = (CloseTimeTemp - NoonWorkTimeTemp).TotalMinutes.ToInt();//下午应工作分钟数 |
|
|
|
|
|
|
|
|
foreach (var item in data) |
|
|
|
|
|
|
|
|
var adtype1 = item.Group.FirstOrDefault(x => x.ADType == "1");//上班 |
|
|
|
|
|
var adtype8 = item.Group.FirstOrDefault(x => x.ADType == "8");//中午下班 |
|
|
|
|
|
var adtype7 = item.Group.FirstOrDefault(x => x.ADType == "7");//中午上班 |
|
|
|
|
|
var adtype2 = item.Group.FirstOrDefault(x => x.ADType == "2");//下班 |
|
|
|
|
|
//上午 |
|
|
|
|
|
var morning = new ADR_RecordEntity() |
|
|
{ |
|
|
{ |
|
|
var adtype1 = item.Group.FirstOrDefault(x => x.ADType == "1");//上班 |
|
|
|
|
|
var adtype8 = item.Group.FirstOrDefault(x => x.ADType == "8");//中午下班 |
|
|
|
|
|
var adtype7 = item.Group.FirstOrDefault(x => x.ADType == "7");//中午上班 |
|
|
|
|
|
var adtype2 = item.Group.FirstOrDefault(x => x.ADType == "2");//下班 |
|
|
|
|
|
//上午 |
|
|
|
|
|
var morning = new ADR_RecordEntity() |
|
|
|
|
|
{ |
|
|
|
|
|
UserNo = item.UserNo, |
|
|
|
|
|
UserName = item.UserName, |
|
|
|
|
|
Department = item.Department, |
|
|
|
|
|
ClockDate = date, |
|
|
|
|
|
BanCi = "上下班", |
|
|
|
|
|
TimePeriodNo = 1, |
|
|
|
|
|
TimePeriod = string.Format("上午上下班({0}-{1})", restrictionEntity.WorkTime, restrictionEntity.NoonCloseTime), |
|
|
|
|
|
ADStatusWork = adtype1 != null ? adtype1.ClockStatus : "6", |
|
|
|
|
|
ADStatusClose = adtype8 != null ? adtype8.ClockStatus : "6", |
|
|
|
|
|
ClockTimeWork = adtype1 != null ? adtype1.ClockTime.ToTimeString() : "-", |
|
|
|
|
|
ClockTimeClose = adtype8 != null ? adtype8.ClockTime.ToTimeString() : "-", |
|
|
|
|
|
ChidaoMinutes = adtype1 != null ? adtype1.ClockStatus == "2" ? (adtype1.ClockTime.Value - WorkTimeTemp).TotalMinutes.ToInt() : 0 : 0, |
|
|
|
|
|
ZaoTuiMinutes = adtype8 != null ? adtype8.ClockStatus == "3" ? (NoonCloseTimeTemp - adtype8.ClockTime.Value).TotalMinutes.ToInt() : 0 : 0, |
|
|
|
|
|
ChuQinMinutes = adtype1 != null && adtype8 != null ? (adtype8.ClockTime.Value - adtype1.ClockTime.Value).TotalMinutes.ToInt() : 0, |
|
|
|
|
|
QueQinMinutes = adtype1 != null && adtype8 != null ? 0 : MorningMinutes, |
|
|
|
|
|
RestMinutes = 0 |
|
|
|
|
|
}; |
|
|
|
|
|
morning.WorkMinutes = MorningMinutes == morning.QueQinMinutes ? 0 : MorningMinutes - morning.ChidaoMinutes - morning.ZaoTuiMinutes - morning.QueQinMinutes; |
|
|
|
|
|
result.Add(morning); |
|
|
|
|
|
//下午 |
|
|
|
|
|
var afternoon = new ADR_RecordEntity() |
|
|
|
|
|
{ |
|
|
|
|
|
UserNo = item.UserNo, |
|
|
|
|
|
UserName = item.UserName, |
|
|
|
|
|
Department = item.Department, |
|
|
|
|
|
ClockDate = date, |
|
|
|
|
|
BanCi = "上下班", |
|
|
|
|
|
TimePeriodNo = 2, |
|
|
|
|
|
TimePeriod = string.Format("下午上下班({0}-{1})", restrictionEntity.NoonWorkTime, restrictionEntity.CloseTime), |
|
|
|
|
|
ADStatusWork = adtype7 != null ? adtype7.ClockStatus : "6", |
|
|
|
|
|
ADStatusClose = adtype2 != null ? adtype2.ClockStatus : "6", |
|
|
|
|
|
ClockTimeWork = adtype7 != null ? adtype7.ClockTime.ToTimeString() : "-", |
|
|
|
|
|
ClockTimeClose = adtype2 != null ? adtype2.ClockTime.ToTimeString() : "-", |
|
|
|
|
|
ChidaoMinutes = adtype7 != null ? adtype7.ClockStatus == "2" ? (adtype7.ClockTime.Value - NoonWorkTimeTemp).TotalMinutes.ToInt() : 0 : 0, |
|
|
|
|
|
ZaoTuiMinutes = adtype2 != null ? adtype2.ClockStatus == "3" ? (CloseTimeTemp - adtype2.ClockTime.Value).TotalMinutes.ToInt() : 0 : 0, |
|
|
|
|
|
ChuQinMinutes = adtype7 != null && adtype2 != null ? (adtype2.ClockTime.Value - adtype7.ClockTime.Value).TotalMinutes.ToInt() : 0, |
|
|
|
|
|
QueQinMinutes = adtype7 != null && adtype2 != null ? 0 : AfternoonMinutes, |
|
|
|
|
|
RestMinutes = 0 |
|
|
|
|
|
}; |
|
|
|
|
|
afternoon.WorkMinutes = AfternoonMinutes == afternoon.QueQinMinutes ? 0 : AfternoonMinutes - afternoon.ChidaoMinutes - afternoon.ZaoTuiMinutes - afternoon.QueQinMinutes; |
|
|
|
|
|
result.Add(afternoon); |
|
|
|
|
|
} |
|
|
|
|
|
#endregion |
|
|
|
|
|
|
|
|
UserNo = item.UserNo, |
|
|
|
|
|
UserName = item.UserName, |
|
|
|
|
|
Department = item.Department, |
|
|
|
|
|
ClockDate = item.ClockDate, |
|
|
|
|
|
BanCi = "上下班", |
|
|
|
|
|
TimePeriodNo = 1, |
|
|
|
|
|
TimePeriod = string.Format("上午上下班({0}-{1})", restrictionEntity.WorkTime, restrictionEntity.NoonCloseTime), |
|
|
|
|
|
ADStatusWork = adtype1 != null ? adtype1.ClockStatus : "6", |
|
|
|
|
|
ADStatusClose = adtype8 != null ? adtype8.ClockStatus : "6", |
|
|
|
|
|
ClockTimeWork = adtype1 != null ? adtype1.ClockTime.ToTimeString() : "-", |
|
|
|
|
|
ClockTimeClose = adtype8 != null ? adtype8.ClockTime.ToTimeString() : "-", |
|
|
|
|
|
ChidaoMinutes = adtype1 != null ? adtype1.ClockStatus == "2" ? (adtype1.ClockTime.Value - WorkTimeTemp).TotalMinutes.ToInt() : 0 : 0, |
|
|
|
|
|
ZaoTuiMinutes = adtype8 != null ? adtype8.ClockStatus == "3" ? (NoonCloseTimeTemp - adtype8.ClockTime.Value).TotalMinutes.ToInt() : 0 : 0, |
|
|
|
|
|
ChuQinMinutes = adtype1 != null && adtype8 != null ? (adtype8.ClockTime.Value - adtype1.ClockTime.Value).TotalMinutes.ToInt() : 0, |
|
|
|
|
|
QueQinMinutes = adtype1 != null && adtype8 != null ? 0 : MorningMinutes, |
|
|
|
|
|
RestMinutes = 0 |
|
|
|
|
|
}; |
|
|
|
|
|
morning.WorkMinutes = MorningMinutes == morning.QueQinMinutes ? 0 : MorningMinutes - morning.ChidaoMinutes - morning.ZaoTuiMinutes - morning.QueQinMinutes; |
|
|
|
|
|
totalResult.Add(morning); |
|
|
|
|
|
//下午 |
|
|
|
|
|
var afternoon = new ADR_RecordEntity() |
|
|
|
|
|
{ |
|
|
|
|
|
UserNo = item.UserNo, |
|
|
|
|
|
UserName = item.UserName, |
|
|
|
|
|
Department = item.Department, |
|
|
|
|
|
ClockDate = item.ClockDate, |
|
|
|
|
|
BanCi = "上下班", |
|
|
|
|
|
TimePeriodNo = 2, |
|
|
|
|
|
TimePeriod = string.Format("下午上下班({0}-{1})", restrictionEntity.NoonWorkTime, restrictionEntity.CloseTime), |
|
|
|
|
|
ADStatusWork = adtype7 != null ? adtype7.ClockStatus : "6", |
|
|
|
|
|
ADStatusClose = adtype2 != null ? adtype2.ClockStatus : "6", |
|
|
|
|
|
ClockTimeWork = adtype7 != null ? adtype7.ClockTime.ToTimeString() : "-", |
|
|
|
|
|
ClockTimeClose = adtype2 != null ? adtype2.ClockTime.ToTimeString() : "-", |
|
|
|
|
|
ChidaoMinutes = adtype7 != null ? adtype7.ClockStatus == "2" ? (adtype7.ClockTime.Value - NoonWorkTimeTemp).TotalMinutes.ToInt() : 0 : 0, |
|
|
|
|
|
ZaoTuiMinutes = adtype2 != null ? adtype2.ClockStatus == "3" ? (CloseTimeTemp - adtype2.ClockTime.Value).TotalMinutes.ToInt() : 0 : 0, |
|
|
|
|
|
ChuQinMinutes = adtype7 != null && adtype2 != null ? (adtype2.ClockTime.Value - adtype7.ClockTime.Value).TotalMinutes.ToInt() : 0, |
|
|
|
|
|
QueQinMinutes = adtype7 != null && adtype2 != null ? 0 : AfternoonMinutes, |
|
|
|
|
|
RestMinutes = 0 |
|
|
|
|
|
}; |
|
|
|
|
|
afternoon.WorkMinutes = AfternoonMinutes == afternoon.QueQinMinutes ? 0 : AfternoonMinutes - afternoon.ChidaoMinutes - afternoon.ZaoTuiMinutes - afternoon.QueQinMinutes; |
|
|
|
|
|
totalResult.Add(afternoon); |
|
|
} |
|
|
} |
|
|
|
|
|
#endregion |
|
|
} |
|
|
} |
|
|
return result.OrderBy(x => x.UserNo).ThenBy(x => x.UserName).ThenBy(x => x.TimePeriodNo); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return totalResult.OrderBy(x => x.ClockDate).ThenBy(x => x.UserNo).ThenBy(x => x.TimePeriodNo); |
|
|
} |
|
|
} |
|
|
catch (Exception ex) |
|
|
catch (Exception ex) |
|
|
{ |
|
|
{ |
|
|