public static string GetWorkTimeType(WorkTimeType timeType) { var name = ""; switch (timeType) { case WorkTimeType.AtWork: name = "کار اداری"; break; case WorkTimeType.LeaveWork: name = "مرخصی"; break; case WorkTimeType.Mission: name = "ماموریت"; break; case WorkTimeType.OverTime: name = "اضافه کاری"; break; case WorkTimeType.Holiday: name = "تعطیل"; break; } return(name); }
/// <summary> /// 更新考勤模式 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnATMode_Click(object sender, EventArgs e) { MessageBox.Show("切换后,需重新设置考勤时间,你确定么?", MessageBoxButtons.YesNo, (object o, MessageBoxHandlerArgs args) => { try { if (args.Result == Smobiler.Core.Controls.ShowResult.Yes) { switch (ATMode) { case WorkTimeType.一天一上下班: ATMode = WorkTimeType.一天二上下班; break; case WorkTimeType.一天二上下班: ATMode = WorkTimeType.一天一上下班; break; } ATemplate.AT_CommutingType = ATMode; ATemplate.CustomDates.Clear(); upATMode(); } } catch (Exception ex) { Toast(ex.Message, ToastLength.SHORT); } }); }
/// <summary> /// 自定义日期更新 /// </summary> /// <param name="atType">考勤类型</param> /// <param name="StartTime">上班时间</param> /// <param name="EndTime">下班时间</param> /// <param name="AMStartTime">上午上班时间</param> /// <param name="AMEndTime">上午下班时间</param> /// <param name="PMStartTime">下午上班时间</param> /// <param name="PMEndTime">下午下班时间</param> private void upsettingDate(WorkTimeType atType, string StartTime, string EndTime, string AMStartTime, string AMEndTime, string PMStartTime, string PMEndTime) { try { switch (atType) { case WorkTimeType.一天一上下班: if (string.IsNullOrEmpty(StartTime) == false) { DateTime atsettingDate = atcdInput.AT_CD_Date.Date.AddHours(Convert.ToDateTime(StartTime).Hour).AddMinutes(Convert.ToDateTime(StartTime).Minute); dpStartWork.Value = atsettingDate; atcdInput.AT_CD_StartTime = dpStartWork.Value; } if (string.IsNullOrEmpty(EndTime) == false) { DateTime atsettingDate = atcdInput.AT_CD_Date.Date.AddHours(Convert.ToDateTime(EndTime).Hour).AddMinutes(Convert.ToDateTime(EndTime).Minute); dpEndWork.Value = atsettingDate; atcdInput.AT_CD_EndTime = dpEndWork.Value; } break; case WorkTimeType.一天二上下班: if (string.IsNullOrEmpty(AMStartTime) == false) { DateTime atsettingDate = atcdInput.AT_CD_Date.Date.AddHours(Convert.ToDateTime(AMStartTime).Hour).AddMinutes(Convert.ToDateTime(AMStartTime).Minute); dpAMStartWork.Value = atsettingDate; atcdInput.AT_CD_AMStartTime = dpAMStartWork.Value; } if (string.IsNullOrEmpty(AMEndTime) == false) { DateTime atsettingDate = atcdInput.AT_CD_Date.Date.AddHours(Convert.ToDateTime(AMEndTime).Hour).AddMinutes(Convert.ToDateTime(AMEndTime).Minute); dpAMEndWork.Value = atsettingDate; atcdInput.AT_CD_AMEndTime = dpAMEndWork.Value; } if (string.IsNullOrEmpty(PMStartTime) == false) { DateTime atsettingDate = atcdInput.AT_CD_Date.Date.AddHours(Convert.ToDateTime(PMStartTime).Hour).AddMinutes(Convert.ToDateTime(PMStartTime).Minute); dpPMStartWork.Value = atsettingDate; atcdInput.AT_CD_PMStartTime = dpPMStartWork.Value; } if (string.IsNullOrEmpty(PMEndTime) == false) { DateTime atsettingDate = atcdInput.AT_CD_Date.Date.AddHours(Convert.ToDateTime(PMEndTime).Hour).AddMinutes(Convert.ToDateTime(PMEndTime).Minute); dpPMEndWork.Value = atsettingDate; atcdInput.AT_CD_PMEndTime = dpPMEndWork.Value; } break; } } catch (Exception ex) { Toast(ex.Message, ToastLength.SHORT); } }
public int GetBusinessWorkCount(int id, WorkTimeType workTimeType) { int count = 0; int days = System.Threading.Thread.CurrentThread.CurrentUICulture.Calendar.GetDaysInMonth(DateTime.Now.Year, GlobalDefine.Instance.Config.CurrentMonth); for (int i = 0; i < days; i++) { if (GetBusinessWorkType(id, i + 1).WorkTimeType == workTimeType) { count++; } } return(count); }
public override void Create(ExcelPackage package, string sheetName) { var excelSetting = GlobalDefine.Instance.Config.ExportExcelSetting; var sheet = package.Workbook.Worksheets.Add(sheetName); for (int i = 1; i <= GlobalDefine.BUSINESS_EXCEL_TITLE.Length; i++) { var cell = sheet.Cells[1, i]; cell.Value = GlobalDefine.BUSINESS_EXCEL_TITLE[i - 1]; cell.Style.Fill.PatternType = ExcelFillStyle.Solid; cell.Style.Fill.BackgroundColor.SetColor(System.Drawing.ColorTranslator.FromHtml(excelSetting.SignTitleBackgroundColor)); cell.Style.Font.Bold = true; } int days = System.Threading.Thread.CurrentThread.CurrentUICulture.Calendar.GetDaysInMonth(DateTime.Now.Year, GlobalDefine.Instance.Config.CurrentMonth); for (int i = 0; i < days; i++) { var cell = sheet.Cells[1, GlobalDefine.BUSINESS_EXCEL_TITLE.Length + i + 1]; cell.Value = i + 1; cell.Style.Fill.PatternType = ExcelFillStyle.Solid; DateTime dt = new DateTime(DateTime.Now.Year, GlobalDefine.Instance.Config.CurrentMonth, i + 1); cell.Style.Fill.BackgroundColor.SetColor(System.Drawing.ColorTranslator.FromHtml(dt.DayOfWeek == DayOfWeek.Monday ? GlobalDefine.MONDAY_COLOR : excelSetting.SignTitleBackgroundColor)); cell.Style.Font.Bold = true; } var config = GlobalDefine.Instance.Config; int memberCount = AttendanceDataManager.Instance.BusinessMemberNameList.Count; int memberIndex = 0; foreach (var key in AttendanceDataManager.Instance.BusinessMemberNameList.Keys) { int col = 1; var cell = sheet.Cells[memberIndex + 2, col++]; cell.Value = AttendanceDataManager.Instance.BusinessMemberNameList[key]; cell.AddComment("人员编号: " + key, config.ExportExcelSetting.Author); cell = sheet.Cells[memberIndex + 2, col++]; int num = AttendanceDataManager.Instance.GetBusinessWorkCount(key, WorkTimeType.Normal) + AttendanceDataManager.Instance.GetBusinessWorkCount(key, WorkTimeType.WorkLeaveEarly) + AttendanceDataManager.Instance.GetBusinessWorkCount(key, WorkTimeType.WorkLate) + AttendanceDataManager.Instance.GetBusinessWorkCount(key, WorkTimeType.WorkLateAndLeveaEarly) + AttendanceDataManager.Instance.GetBusinessWorkCount(key, WorkTimeType.WorkUnClockIn) + AttendanceDataManager.Instance.GetBusinessWorkCount(key, WorkTimeType.WorkUnClockOff); if (num > 0) { cell.Value = num; } cell = sheet.Cells[memberIndex + 2, col++]; num = AttendanceDataManager.Instance.GetBusinessWorkCount(key, WorkTimeType.WorkRest) + AttendanceDataManager.Instance.GetBusinessWorkCount(key, WorkTimeType.WorkUnClockInAndOff); if (num > 0) { cell.Value = num; } cell = sheet.Cells[memberIndex + 2, col++]; num = 0; if (num > 0) { cell.Value = num; } cell = sheet.Cells[memberIndex + 2, col++]; num = AttendanceDataManager.Instance.GetBusinessWorkCount(key, WorkTimeType.WorkLeaveEarly) + AttendanceDataManager.Instance.GetBusinessWorkCount(key, WorkTimeType.WorkLate) + AttendanceDataManager.Instance.GetBusinessWorkCount(key, WorkTimeType.WorkLateAndLeveaEarly); if (num > 0) { cell.Value = num; } cell = sheet.Cells[memberIndex + 2, col]; num = AttendanceDataManager.Instance.GetBusinessWorkCount(key, WorkTimeType.WorkUnClockIn) + AttendanceDataManager.Instance.GetBusinessWorkCount(key, WorkTimeType.WorkUnClockOff) + AttendanceDataManager.Instance.GetBusinessWorkCount(key, WorkTimeType.WorkUnClockInAndOff); if (num > 0) { cell.Value = num; } for (int j = 0; j < days; j++) { cell = sheet.Cells[memberIndex + 2, j + GlobalDefine.BUSINESS_EXCEL_TITLE.Length + 1]; var workTypeInfo = AttendanceDataManager.Instance.GetBusinessWorkType(key, j + 1); WorkTimeType workTimeType = workTypeInfo.WorkTimeType; cell.Value = GlobalDefine.WORK_TIME_TYPE_STRINGS[(int)workTimeType]; cell.Style.Fill.PatternType = ExcelFillStyle.Solid; cell.Style.Fill.BackgroundColor.SetColor(System.Drawing.ColorTranslator.FromHtml(GlobalDefine.WORK_TYPE_COLOR[(int)workTimeType])); if (workTimeType == WorkTimeType.WorkUnClockInAndOff) { cell.Style.Font.Color.SetColor(Color.Red); } cell.AddComment(workTypeInfo.GetComment(), config.ExportExcelSetting.Author); cell.Comment.Font.Size = excelSetting.SignTitleFontSize * 0.8f; } sheet.Row(memberIndex + 2).Height = excelSetting.SignCellHeight; memberIndex++; } for (int i = 0; i < GlobalDefine.WORK_TIME_TYPE_STRINGS.Length; i++) { var cell = sheet.Cells[memberCount + 3, GlobalDefine.BUSINESS_EXCEL_TITLE.Length + i + 1]; cell.Value = GlobalDefine.WORK_TIME_TYPE_STRINGS[i]; cell.Style.Fill.PatternType = ExcelFillStyle.Solid; cell.Style.Fill.BackgroundColor.SetColor(System.Drawing.ColorTranslator.FromHtml(GlobalDefine.WORK_TYPE_COLOR[i])); sheet.Row(memberCount + 3).Height = excelSetting.SignCellHeight; if (i == (int)WorkTimeType.WorkUnClockInAndOff) { cell.Style.Font.Color.SetColor(Color.Red); } } sheet.Row(1).Height = excelSetting.SignCellHeight; string startColumn = Util.Util.ToNumberSystem26(1); string endColumn = Util.Util.ToNumberSystem26(sheet.Dimension.End.Column); string columnRange = $"{startColumn}:{endColumn}"; sheet.Cells[columnRange].Style.Font.Size = excelSetting.SignTitleFontSize; sheet.Cells[columnRange].Style.HorizontalAlignment = ExcelHorizontalAlignment.Center; sheet.Cells[columnRange].Style.VerticalAlignment = ExcelVerticalAlignment.Center; sheet.Cells[columnRange].Style.Border.Top.Style = ExcelBorderStyle.Thin; sheet.Cells[columnRange].Style.Border.Bottom.Style = ExcelBorderStyle.Thin; sheet.Cells[columnRange].Style.Border.Right.Style = ExcelBorderStyle.Thin; sheet.Cells[columnRange].Style.Border.Left.Style = ExcelBorderStyle.Thin; sheet.Cells[columnRange].Style.WrapText = true; for (int i = 1; i <= sheet.Dimension.End.Column; i++) { if (i == 1) { sheet.Column(i).AutoFit(8); } else { sheet.Column(i).Width = config.ExportExcelSetting.SignCellWidth; } } }
public async Task <RepResult <bool> > InsertAttendanceTime(int personnelId, WorkTimeType timeType, DateTime dateTime) { if (dbContext != null) { var query = from a in dbContext.AttendanceTimes where a.PersonnelId == personnelId && a.DateTime.Date == dateTime.Date orderby a.DateTime descending select a; var enumer = query.ToAsyncEnumerable(); var any = await enumer.Any(); var count = await enumer.Count(); if (any) { var lastObj = await query.FirstOrDefaultAsync(); if (lastObj.DateTime > dateTime) { return(new RepResult <bool> { Successed = false, Message = "زمان که برای ثبت تعیین شده از آخرین زمان که در سیستم ثبت شده کوچکتر است ", ResultObject = false }); } } if (any && (count % 2) == 1) { var lastObj = await query.FirstOrDefaultAsync(); if (lastObj.TimeType != timeType) { if (timeType == WorkTimeType.LeaveWork || timeType == WorkTimeType.Mission || timeType == WorkTimeType.OverTime) { await dbContext.AttendanceTimes.AddAsync(new AttendanceTime() { PersonnelId = personnelId, DateTime = dateTime, TimeType = lastObj.TimeType }); } } } await dbContext.AttendanceTimes.AddAsync(new AttendanceTime() { PersonnelId = personnelId, DateTime = dateTime.AddSeconds(1), TimeType = timeType }); await dbContext.SaveChangesAsync(); return(new RepResult <bool> { Successed = true, ResultObject = true }); } return(new RepResult <bool>()); }
public async Task <RepResult <bool> > Add(int personnelId, DateTime dateTime, WorkTimeType timeType) { if (dbContext != null) { var resAdd = await InsertAttendanceTime(personnelId, timeType, dateTime); if (resAdd.Successed) { await spanRep.GenerateSpans(personnelId, dateTime); return(new RepResult <bool> { Successed = true, ResultObject = true }); } } return(new RepResult <bool>()); }
/// <summary> /// 获取考勤信息 /// </summary> private void GetAT() { try { if (string.IsNullOrEmpty(ATNo) == false) { btnSave.Width = 134; btnDelete.Visible = true; ATDetailDto At = AutofacConfig.attendanceService.GetATByID(ATNo); if (At != null) { ATemplate.AT_ID = At.AT_ID; ATemplate.AT_Name = At.AT_Name; txtName.Text = ATemplate.AT_Name; //工作日考勤时间 if (string.IsNullOrEmpty(At.AT_CommutingType) == false) { ATMode = (WorkTimeType)Enum.Parse(typeof(WorkTimeType), At.AT_CommutingType); ATemplate.AT_CommutingType = ATMode; switch (ATMode) { case WorkTimeType.一天一上下班: if (At.AT_StartTime != null) { ATemplate.AT_AMStartTime = At.AT_StartTime; } if (At.AT_PMEndTime != null) { ATemplate.AT_PMEndTime = At.AT_EndTime; } break; case WorkTimeType.一天二上下班: if (At.AT_AMStartTime != null) { ATemplate.AT_AMStartTime = At.AT_AMStartTime; } if (At.AT_AMEndTime != null) { ATemplate.AT_AMEndTime = At.AT_AMEndTime; } if (At.AT_PMStartTime != null) { ATemplate.AT_PMStartTime = At.AT_PMStartTime; } if (At.AT_PMEndTime != null) { ATemplate.AT_PMEndTime = At.AT_PMEndTime; } break; } } //考勤工作日 if (string.IsNullOrEmpty(At.AT_WeeklyWorkingDay) == false) { ATemplate.AT_WeeklyWorkingDay = At.AT_WeeklyWorkingDay; } else { ATemplate.AT_WeeklyWorkingDay = ((int)Week.Monday).ToString() + "," + ((int)Week.Tuesday).ToString() + "," + ((int)Week.Wednesday).ToString() + "," + ((int)Week.Thursday).ToString() + "," + ((int)Week.Friday).ToString(); } int nATUser = 0; //考勤人数 if (string.IsNullOrEmpty(At.AT_Users) == false) { string[] atUser = At.AT_Users.Split(','); nATUser = atUser.Length; ATemplate.AT_Users = At.AT_Users; } btnUser.Text = nATUser.ToString() + "人" + " > "; //考勤位置 ATemplate.AT_Longitude = At.AT_Longitude; ATemplate.AT_Latitude = At.AT_Latitude; if (string.IsNullOrEmpty(At.AT_Positions) == false) { ATemplate.AT_Positions = At.AT_Positions; } ATemplate.AT_AllowableDeviation = At.AT_AllowableDeviation; lblAddress.Text = At.AT_Positions; txtADeviation.Text = At.AT_AllowableDeviation.ToString(); } } else { btnSave.Width = 280; btnDelete.Visible = false; gps1.GetGps(); ATMode = (int)WorkTimeType.一天一上下班; ATemplate.AT_WeeklyWorkingDay = ((int)Week.Monday).ToString() + "," + ((int)Week.Tuesday).ToString() + "," + ((int)Week.Wednesday).ToString() + "," + ((int)Week.Thursday).ToString() + "," + ((int)Week.Friday).ToString(); ATemplate.AT_CommutingType = ATMode; } if (Convert.IsDBNull(ATMode) == false) { upATMode(); //更新考勤模式 } upATweeklyWorkingDay(); //更新日期 } catch (Exception ex) { MessageBox.Show(ex.Message); } }