From ce695b6dc837d32100a2df640990016ea52f4542 Mon Sep 17 00:00:00 2001 From: dyy <807692433@qq.com> Date: Wed, 15 Nov 2023 09:38:14 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E4=BF=AE=E6=94=B9=E3=80=91=E5=9D=90?= =?UTF-8?q?=E7=8F=AD=E8=80=83=E5=8B=A4=E6=98=8E=E7=BB=86=EF=BC=9A=E8=80=83?= =?UTF-8?q?=E5=8B=A4=E6=97=B6=E9=97=B4=E6=9F=A5=E8=AF=A2=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=E8=8C=83=E5=9B=B4=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ADR_Record/StatisticDetailIndex.cshtml | 17 +- .../Views/ADR_Record/StatisticDetailIndex.js | 47 ++- .../ADR_Record/ADR_RecordEntity.cs | 2 +- .../ADR_Record/ADR_RecordService.cs | 316 ++++++++++-------- 4 files changed, 214 insertions(+), 168 deletions(-) diff --git a/Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/LogisticsManagement/Views/ADR_Record/StatisticDetailIndex.cshtml b/Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/LogisticsManagement/Views/ADR_Record/StatisticDetailIndex.cshtml index 9b3438c1a..d36f84966 100644 --- a/Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/LogisticsManagement/Views/ADR_Record/StatisticDetailIndex.cshtml +++ b/Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/LogisticsManagement/Views/ADR_Record/StatisticDetailIndex.cshtml @@ -2,23 +2,24 @@ ViewBag.Title = "考勤记录统计"; Layout = "~/Views/Shared/_Index.cshtml"; } -
+ + +
- @*
- -
-
-  查询 -
*@
考勤时间
- + @**@ +
职工编号
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 836fe3089..180de84d3 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 @@ -7,7 +7,8 @@ var refreshGirdData; var bootstrap = function ($, learun) { "use strict"; - //var date = ""; + var startTime; + var endTime; var page = { init: function () { page.initGird(); @@ -17,22 +18,39 @@ var bootstrap = function ($, learun) { $('#multiple_condition_query').lrMultipleQuery(function (queryJson) { page.search(queryJson); }, 250, 400); + // 时间搜索框 + $('#datesearch').lrdate({ + dfdata: [ + { name: '今天', begin: function () { return learun.getDate('yyyy-MM-dd 00:00:00') }, end: function () { return learun.getDate('yyyy-MM-dd 23:59:59') } }, + { name: '近7天', begin: function () { return learun.getDate('yyyy-MM-dd 00:00:00', 'd', -6) }, end: function () { return learun.getDate('yyyy-MM-dd 23:59:59') } }, + { name: '近1个月', begin: function () { return learun.getDate('yyyy-MM-dd 00:00:00', 'm', -1) }, end: function () { return learun.getDate('yyyy-MM-dd 23:59:59') } }, + { name: '近3个月', begin: function () { return learun.getDate('yyyy-MM-dd 00:00:00', 'm', -3) }, end: function () { return learun.getDate('yyyy-MM-dd 23:59:59') } } + ], + // 月 + mShow: false, + premShow: false, + // 季度 + jShow: false, + prejShow: false, + // 年 + ysShow: false, + yxShow: false, + preyShow: false, + yShow: false, + // 默认 + dfvalue: '0', + selectfn: function (begin, end) { + startTime = begin; + endTime = end; + } + }); //当前年 - var now = learun.formatDate(new Date(), 'yyyy-MM-dd'); - $('#Date').val(now); + //var now = learun.formatDate(new Date(), 'yyyy-MM-dd'); + //$('#Date').val(now); // 刷新 $('#lr_refresh').on('click', function () { location.reload(); }); - //查询 - //$('#btn_Search').on('click', function () { - // date = $('#date').val(); - // if (date == null || date == undefined || date == "") { - // learun.alert.warning("请选择查询时间!"); - // return; - // } - // page.search(); - //}); // 部门选择 $('#F_DepartmentId').lrselect({ type: 'tree', @@ -121,13 +139,14 @@ var bootstrap = function ($, learun) { ], mainId: '', isPage: true, - sidx: 'UserNo,UserName,ClockTime' + sidx: '' }); page.search(); }, search: function (param) { param = param || {}; - //param.Date = date; + param.startTime = startTime; + param.endTime = endTime; $('#gridtable').jfGridSet('reload', { queryJson: JSON.stringify(param) }); } }; diff --git a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/LogisticsManagement/ADR_Record/ADR_RecordEntity.cs b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/LogisticsManagement/ADR_Record/ADR_RecordEntity.cs index 9791da744..2f27fe1d7 100644 --- a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/LogisticsManagement/ADR_Record/ADR_RecordEntity.cs +++ b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/LogisticsManagement/ADR_Record/ADR_RecordEntity.cs @@ -120,7 +120,7 @@ namespace Learun.Application.TwoDevelopment.LogisticsManagement #endregion #region 扩展字段 /// - /// 打卡时间 + /// 打卡时间(年月日) /// [NotMapped] public string ClockDate { get; set; } 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 15fcb512f..2cc5fe2e6 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 @@ -246,175 +246,201 @@ namespace Learun.Application.TwoDevelopment.LogisticsManagement { var basedbname = BaseRepository().getDbConnection().Database; 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(); + //启用的考勤规则 + var restrictionEntity = this.BaseRepository("CollegeMIS").FindEntity(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(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(); - //启用的考勤规则 - 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 == "二次打卡") + 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(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();//全天应工作分钟数 - 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 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) {