diff --git a/Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/LogisticsManagement/Views/ADR_Record/StatisticDetailIndex.js b/Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/LogisticsManagement/Views/ADR_Record/StatisticDetailIndex.js index 38eb89978..a4adc7a7a 100644 --- a/Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/LogisticsManagement/Views/ADR_Record/StatisticDetailIndex.js +++ b/Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/LogisticsManagement/Views/ADR_Record/StatisticDetailIndex.js @@ -54,9 +54,9 @@ var bootstrap = function ($, learun) { }); } }, - { label: "日期", name: "ClockDate", width: 100, align: "left" }, - { label: "班次", name: "BanCi", width: 60, align: "left" }, - { label: "时间段", name: "TimePeriod", width: 150, align: "left" }, + { label: "日期", name: "ClockDate", width: 100, align: "left", sort: true }, + { label: "班次", name: "BanCi", width: 60, align: "left", sort: true }, + { label: "时间段", name: "TimePeriod", width: 150, align: "left", sort: true }, { label: "上班状态", name: "ADStatusWork", width: 60, align: "left", formatterAsync: function (callback, value, row, op, $cell) { learun.clientdata.getAsync('dataItem', { @@ -76,7 +76,7 @@ var bootstrap = function ($, learun) { } }); - } + }, sort: true }, { label: "下班状态", name: "ADStatusClose", width: 60, align: "left", formatterAsync: function (callback, value, row, op, $cell) { @@ -96,16 +96,16 @@ var bootstrap = function ($, learun) { } }); - } + }, sort: true }, - { label: "签到时间", name: "ClockTimeWork", width: 80, align: "left" }, - { label: "签退时间", name: "ClockTimeClose", width: 80, align: "left" }, - { label: "迟到(分钟)", name: "ChidaoMinutes", width: 80, align: "left" }, - { label: "早退(分钟)", name: "ZaoTuiMinutes", width: 80, align: "left" }, - { label: "出勤(分钟)", name: "ChuQinMinutes", width: 80, align: "left" }, - { label: "缺勤(分钟)", name: "QueQinMinutes", width: 80, align: "left" }, - { label: "工作(分钟)", name: "WorkMinutes", width: 80, align: "left" }, - { label: "休息(分钟)", name: "RestMinutes", width: 80, align: "left" }, + { label: "签到时间", name: "ClockTimeWork", width: 80, align: "left", sort: true }, + { label: "签退时间", name: "ClockTimeClose", width: 80, align: "left", sort: true}, + { label: "迟到(分钟)", name: "ChidaoMinutes", width: 80, align: "left", sort: true }, + { label: "早退(分钟)", name: "ZaoTuiMinutes", width: 80, align: "left", sort: true}, + { label: "出勤(分钟)", name: "ChuQinMinutes", width: 80, align: "left", sort: true }, + //{ label: "缺勤(分钟)", name: "QueQinMinutes", width: 80, align: "left",sort: true }, + { label: "工作(分钟)", name: "WorkMinutes", width: 80, align: "left",sort: true }, + { label: "休息(分钟)", name: "RestMinutes", width: 80, align: "left", sort: true }, ], mainId: '', isPage: true, diff --git a/Learun.Framework.Ultimate V7/Learun.Application.Web/XmlConfig/system.config b/Learun.Framework.Ultimate V7/Learun.Application.Web/XmlConfig/system.config index 6ec74a1f8..190162288 100644 --- a/Learun.Framework.Ultimate V7/Learun.Application.Web/XmlConfig/system.config +++ b/Learun.Framework.Ultimate V7/Learun.Application.Web/XmlConfig/system.config @@ -162,7 +162,7 @@ - + diff --git a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/LogisticsManagement/ADR_Record/ADR_RecordService.cs b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/LogisticsManagement/ADR_Record/ADR_RecordService.cs index c5d041b73..ba7d6c0e1 100644 --- a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/LogisticsManagement/ADR_Record/ADR_RecordService.cs +++ b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/LogisticsManagement/ADR_Record/ADR_RecordService.cs @@ -83,7 +83,7 @@ namespace Learun.Application.TwoDevelopment.LogisticsManagement dp.Add("ADStatus", queryParam["ADStatus"].ToString(), DbType.String); strSql.Append(" AND t.ClockStatus = @ADStatus "); } - + return this.BaseRepository("CollegeMIS").FindList(strSql.ToString(), dp, pagination); } catch (Exception ex) @@ -289,69 +289,114 @@ namespace Learun.Application.TwoDevelopment.LogisticsManagement ClockStatus = y.ClockStatus }) }); - //启用的考勤规则 - var restrictionEntity = this.BaseRepository("CollegeMIS").FindEntity(m => m.REnable == true); - var WorkTimeTemp = string.Format("{0} {1}", date, restrictionEntity?.WorkTime).ToDate(); - var NoonCloseTimeTemp = string.Format("{0} {1}", date, restrictionEntity?.NoonCloseTime).ToDate(); - var NoonWorkTimeTemp = string.Format("{0} {1}", date, restrictionEntity?.NoonWorkTime).ToDate(); - var CloseTimeTemp = string.Format("{0} {1}", date, restrictionEntity?.CloseTime).ToDate(); - var MorningMinutes = (NoonCloseTimeTemp - WorkTimeTemp).TotalMinutes.ToInt();//上午应工作分钟数 - var AfternoonMinutes = (CloseTimeTemp - NoonWorkTimeTemp).TotalMinutes.ToInt();//下午应工作分钟数 - //结果列表 var result = new List(); - 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 restrictionEntity = this.BaseRepository("CollegeMIS").FindEntity(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 == "二次打卡") { - 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() + #region 二次打卡 + 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() + { + 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 + } + else { - 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); - } + #region 四次打卡 + //中午下班时间 + var NoonCloseTimeTemp = string.Format("{0} {1}", date, restrictionEntity?.NoonCloseTime).ToDate(); + //中午上班时间 + var NoonWorkTimeTemp = string.Format("{0} {1}", date, restrictionEntity?.NoonWorkTime).ToDate(); + var MorningMinutes = (NoonCloseTimeTemp - WorkTimeTemp).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() + { + 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 + } + } return result.OrderBy(x => x.UserNo).ThenBy(x => x.UserName).ThenBy(x => x.TimePeriodNo); } catch (Exception ex)