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)