예제 #1
0
        /// <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());
        }
예제 #2
0
        /// <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();
        }