/// <summary> /// 自定义日期验证 /// </summary> /// <param name="entity">自定义日期对象</param> public static string ValidateAT_CDInputDto(AT_CDInputDto entity) { //基础验证 StringBuilder sb = BasicValidate <AT_CDInputDto>(entity); //额外验证(自定义为上班,则不同的上下班类型,部分字段不能为空) if (entity.AT_CD_CDType == WorkOrRest.班) { if (entity.AT_CD_CommutingType == WorkTimeType.一天一上下班) { if (entity.AT_CD_StartTime == null) { sb.Append("上班时间不能为空."); } if (entity.AT_CD_EndTime == null) { sb.Append("下班时间不能为空."); } } else if (entity.AT_CD_CommutingType == WorkTimeType.一天二上下班) { if (entity.AT_CD_AMStartTime == null) { sb.Append("上午上班时间不能为空."); } if (entity.AT_CD_AMEndTime == null) { sb.Append("上午下班时间不能为空."); } if (entity.AT_CD_PMStartTime == null) { sb.Append("下午上班时间不能为空."); } if (entity.AT_CD_PMEndTime == null) { sb.Append("下午下班时间不能为空."); } } } return(sb.ToString()); }
/// <summary> /// 更新自定义日期 /// </summary> private void upSettingDateType() { if (string.IsNullOrEmpty(ATNo) == true) { //创建考勤时,日历选中日期大于现在日期,若模板存在自定义,则显示自定义状态 if (calendar1.SelectDate.Date >= DateTime.Now.AddDays(+1).Date) { string startTime = null; //上班时间 string endTime = null; //下班时间 string amStartTime = null; //上午上班时间 string amEndTime = null; //上午下班时间 string pmStartTime = null; //下午上班时间 string pmEndTime = null; //下午下班时间 atcdInput = new AT_CDInputDto(); //考勤自定义日期 atcdInput.AT_CD_Date = calendar1.SelectDate.Date; //考勤上下班类型 atcdInput.AT_CD_CommutingType = atWorkDate.AT_Type; //创建考勤时,现日期之后的选中日期如果已自定义且考勤模式相等,则将自定义日期日期赋值给当前自定义日期控件 if (IsCATSettingDay(atcdInput.AT_CD_Date) == true) { foreach (AT_CDInputDto atcdInputDto in listatcdInput) { if (atcdInputDto.AT_CD_Date.Date.Equals(atcdInput.AT_CD_Date.Date) & atcdInputDto.AT_CD_CommutingType == atWorkDate.AT_Type & workType == WorkOrRest.班) { //workType = atcdInputDto.AT_CD_CDType; //上班时间 if (atcdInputDto.AT_CD_StartTime != null) { startTime = atcdInputDto.AT_CD_StartTime.ToString(); } else { startTime = atWorkDate.AT_StartTime.ToString(); } //下班时间 if (atcdInputDto.AT_CD_EndTime != null) { endTime = atcdInputDto.AT_CD_EndTime.ToString(); } else { endTime = atWorkDate.AT_EndTime.ToString(); } //上午上班时间 if (atcdInputDto.AT_CD_AMStartTime != null) { amStartTime = atcdInputDto.AT_CD_AMStartTime.ToString(); } else { amStartTime = atWorkDate.AT_AMStartTime.ToString(); } //上午下班时间 if (atcdInputDto.AT_CD_AMEndTime != null) { amEndTime = atcdInputDto.AT_CD_AMEndTime.ToString(); } else { amEndTime = atWorkDate.AT_AMEndTime.ToString(); } //下午上班时间 if (atcdInputDto.AT_CD_PMStartTime != null) { pmStartTime = atcdInputDto.AT_CD_PMStartTime.ToString(); } else { pmStartTime = atWorkDate.AT_PMStartTime.ToString(); } //下午下班时间 if (atcdInputDto.AT_CD_PMEndTime != null) { pmEndTime = atcdInputDto.AT_CD_PMEndTime.ToString(); } else { pmEndTime = atWorkDate.AT_PMEndTime.ToString(); } break; } } } else { //上班时间 if (atWorkDate.AT_StartTime != null) { startTime = atWorkDate.AT_StartTime.ToString(); } //下班时间 if (atWorkDate.AT_EndTime != null) { endTime = atWorkDate.AT_EndTime.ToString(); } //上午上班时间 if (atWorkDate.AT_AMStartTime != null) { amStartTime = atWorkDate.AT_AMStartTime.ToString(); } //上午下班时间 if (atWorkDate.AT_AMEndTime != null) { amEndTime = atWorkDate.AT_AMEndTime.ToString(); } //下午上班时间 if (atWorkDate.AT_PMStartTime != null) { pmStartTime = atWorkDate.AT_PMStartTime.ToString(); } //下午下班时间 if (atWorkDate.AT_PMEndTime != null) { pmEndTime = atWorkDate.AT_PMEndTime.ToString(); } } upsettingDate(atcdInput.AT_CD_CommutingType, startTime, endTime, amStartTime, amEndTime, pmStartTime, pmEndTime); atcdInput.AT_CD_CDType = workType; } } //编辑考勤自定义日期类型 else { //编辑考勤时,日历选中日期小于等于现在日期,若模板存在自定义,则显示自定义状态 if (calendar1.SelectDate.Date < DateTime.Now.AddDays(+1).Date) { WorkTimeDto atcd = AutofacConfig.attendanceService.GetASByATIDAndDate(ATNo, calendar1.SelectDate.Date); if (atcd != null) { switch ((WorkOrRest)Enum.Parse(typeof(WorkOrRest), atcd.AT_ASType)) { case WorkOrRest.班: switch ((WorkTimeType)Enum.Parse(typeof(WorkTimeType), atcd.AT_CommutingType)) { case WorkTimeType.一天一上下班: if (atcd.AT_StartTime != null) { dpStartWork.Value = Convert.ToDateTime(atcd.AT_StartTime); } if (atcd.AT_EndTime != null) { dpEndWork.Value = Convert.ToDateTime(atcd.AT_EndTime); } break; case WorkTimeType.一天二上下班: if (atcd.AT_AMStartTime != null) { dpAMStartWork.Value = Convert.ToDateTime(atcd.AT_AMStartTime); } if (atcd.AT_AMEndTime != null) { dpAMEndWork.Value = Convert.ToDateTime(atcd.AT_AMEndTime); } if (atcd.AT_PMStartTime != null) { dpPMStartWork.Value = Convert.ToDateTime(atcd.AT_PMStartTime); } if (atcd.AT_PMEndTime != null) { dpPMEndWork.Value = Convert.ToDateTime(atcd.AT_PMEndTime); } break; } break; } } } if (calendar1.SelectDate.Date >= DateTime.Now.AddDays(+1).Date) { string startTime = null; //上班时间 string endTime = null; //下班时间 string amStartTime = null; //上午上班时间 string amEndTime = null; //上午下班时间 string pmStartTime = null; //下午上班时间 string pmEndTime = null; //下午下班时间 atcdInput = new AT_CDInputDto(); //考勤自定义日期 atcdInput.AT_CD_Date = calendar1.SelectDate.Date; //考勤上下班类型 atcdInput.AT_CD_CommutingType = atWorkDate.AT_Type; //编辑考勤时,现日期之后的选中日期如果已自定义且考勤模式相等,则将自定义日期日期赋值给当前自定义日期控件 if (IsCATSettingDay(atcdInput.AT_CD_Date) == true) { foreach (AT_CDInputDto atcdInputDto in listatcdInput) { if (atcdInputDto.AT_CD_Date.Date.Equals(atcdInput.AT_CD_Date.Date) & atcdInputDto.AT_CD_CommutingType == atWorkDate.AT_Type & workType == WorkOrRest.班) { //workType = atcdInputDto.AT_CD_CDType; //上班时间 if (atcdInputDto.AT_CD_StartTime != null) { startTime = atcdInputDto.AT_CD_StartTime.ToString(); } else { startTime = atWorkDate.AT_StartTime.ToString(); } //下班时间 if (atcdInputDto.AT_CD_EndTime != null) { endTime = atcdInputDto.AT_CD_EndTime.ToString(); } else { endTime = atWorkDate.AT_EndTime.ToString(); } //上午上班时间 if (atcdInputDto.AT_CD_AMStartTime != null) { amStartTime = atcdInputDto.AT_CD_AMStartTime.ToString(); } else { amStartTime = atWorkDate.AT_AMStartTime.ToString(); } //上午下班时间 if (atcdInputDto.AT_CD_AMEndTime != null) { amEndTime = atcdInputDto.AT_CD_AMEndTime.ToString(); } else { amEndTime = atWorkDate.AT_AMEndTime.ToString(); } //下午上班时间 if (atcdInputDto.AT_CD_PMStartTime != null) { pmStartTime = atcdInputDto.AT_CD_PMStartTime.ToString(); } else { pmStartTime = atWorkDate.AT_PMStartTime.ToString(); } //下午下班时间 if (atcdInputDto.AT_CD_PMEndTime != null) { pmEndTime = atcdInputDto.AT_CD_PMEndTime.ToString(); } else { pmEndTime = atWorkDate.AT_PMEndTime.ToString(); } break; } } } else { //获取当前选中日期考勤的自定义 WorkTimeDto atcd = AutofacConfig.attendanceService.GetASByATIDAndDate(ATNo, calendar1.SelectDate.Date); //如果考勤存在自定义日期且自定义类型与考勤类型一致时,获取考勤上班时间 if (atcd != null) { atcdInput.AT_CD_ATID = ATNo; //类型不对,得到的值等于false if (atWorkDate.AT_Type.Equals((WorkTimeType)Enum.Parse(typeof(WorkTimeType), atcd.AT_CommutingType))) { workType = (WorkOrRest)Enum.Parse(typeof(WorkOrRest), atcd.AT_ASType); if (workType == WorkOrRest.班) { //上班时间 if (atcd.AT_StartTime != null) { startTime = atcd.AT_StartTime.ToString(); } else { startTime = atWorkDate.AT_StartTime.ToString(); } //下班时间 if (atcd.AT_EndTime != null) { endTime = atcd.AT_EndTime.ToString(); } else { endTime = atWorkDate.AT_EndTime.ToString(); } //上午上班时间 if (atcd.AT_AMStartTime != null) { amStartTime = atcd.AT_AMStartTime.ToString(); } else { amStartTime = atWorkDate.AT_AMStartTime.ToString(); } //上午下班时间 if (atcd.AT_AMEndTime != null) { amEndTime = atcd.AT_AMEndTime.ToString(); } else { amEndTime = atWorkDate.AT_AMEndTime.ToString(); } //下午上班时间 if (atcd.AT_PMStartTime != null) { pmStartTime = atcd.AT_PMStartTime.ToString(); } else { pmStartTime = atWorkDate.AT_PMStartTime.ToString(); } //下午下班时间 if (atcd.AT_PMEndTime != null) { pmEndTime = atcd.AT_PMEndTime.ToString(); } else { pmEndTime = atWorkDate.AT_PMEndTime.ToString(); } } } else { switch (workType) { case WorkOrRest.班: //上班时间 if (atWorkDate.AT_StartTime != null) { startTime = atWorkDate.AT_StartTime.ToString(); } //下班时间 if (atWorkDate.AT_EndTime != null) { endTime = atWorkDate.AT_EndTime.ToString(); } //上午上班时间 if (atWorkDate.AT_AMStartTime != null) { amStartTime = atWorkDate.AT_AMStartTime.ToString(); } //上午下班时间 if (atWorkDate.AT_AMEndTime != null) { amEndTime = atWorkDate.AT_AMEndTime.ToString(); } //下午上班时间 if (atWorkDate.AT_PMStartTime != null) { pmStartTime = atWorkDate.AT_PMStartTime.ToString(); } //下午下班时间 if (atWorkDate.AT_PMEndTime != null) { pmEndTime = atWorkDate.AT_PMEndTime.ToString(); } break; } } } else { switch (workType) { case WorkOrRest.班: //上班时间 if (atWorkDate.AT_StartTime != null) { startTime = atWorkDate.AT_StartTime.ToString(); } //下班时间 if (atWorkDate.AT_EndTime != null) { endTime = atWorkDate.AT_EndTime.ToString(); } //上午上班时间 if (atWorkDate.AT_AMStartTime != null) { amStartTime = atWorkDate.AT_AMStartTime.ToString(); } //上午下班时间 if (atWorkDate.AT_AMEndTime != null) { amEndTime = atWorkDate.AT_AMEndTime.ToString(); } //下午上班时间 if (atWorkDate.AT_PMStartTime != null) { pmStartTime = atWorkDate.AT_PMStartTime.ToString(); } //下午下班时间 if (atWorkDate.AT_PMEndTime != null) { pmEndTime = atWorkDate.AT_PMEndTime.ToString(); } break; } } } upsettingDate(atcdInput.AT_CD_CommutingType, startTime, endTime, amStartTime, amEndTime, pmStartTime, pmEndTime); atcdInput.AT_CD_CDType = workType; } } if (atcdInput != null) { if (listatcdInput != null & listatcdInput.Count > 0) { foreach (AT_CDInputDto atcdInputDto in listatcdInput) { if (atcdInputDto.AT_CD_Date.Date.Equals(atcdInput.AT_CD_Date.Date)) { listatcdInput.Remove(atcdInputDto);//先清空集合中等于选中日期的数据 break; } } } listatcdInput.Add(atcdInput); //添加选中日期数据 } upSettingDateTypeControl(); }