示例#1
0
        public JsonResult Create(WorkTimeDto dto)
        {
            string strWorkWeeks = Request["WorkWeek"];

            dto.WorkWeek = strWorkWeeks;
            var res = _workTimeContract.Insert(dto);

            return(Json(res));
        }
示例#2
0
        public JsonResult Update(WorkTimeDto dto)
        {
            string strWorkWeeks = Request["WorkWeek"];

            dto.WorkWeek       = strWorkWeeks;
            dto.IsPersonalTime = false;
            if (dto.IsFlexibleWork)
            {
                dto.PmStartTime = "00:00";
                dto.PmEndTime   = "00:00";
                dto.AmStartTime = "00:00";
                dto.AmEndTime   = "00:00";
            }
            dto.AmEndTime   = string.IsNullOrEmpty(dto.AmEndTime) ? "00:00" : Convert.ToDateTime(dto.AmEndTime).ToShortTimeString();
            dto.AmStartTime = string.IsNullOrEmpty(dto.AmStartTime) ? "00:00" : Convert.ToDateTime(dto.AmStartTime).ToShortTimeString();
            dto.PmEndTime   = string.IsNullOrEmpty(dto.PmEndTime) ? "00:00" : Convert.ToDateTime(dto.PmEndTime).ToShortTimeString();
            dto.PmStartTime = string.IsNullOrEmpty(dto.PmStartTime) ? "00:00" : Convert.ToDateTime(dto.PmStartTime).ToShortTimeString();
            dto.AdminId     = AuthorityHelper.OperatorId;
            var res = _workTimeContract.Update(dto);

            return(Json(res));
        }
示例#3
0
 AutofacConfig AutofacConfig = new AutofacConfig(); //调用配置类
 #endregion
 /// <summary>
 /// 页面加载,显示
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void frmAttendanceMain_Load(object sender, EventArgs e)
 {
     try
     {
         if ((ATMainState)Enum.Parse(typeof(ATMainState), enter.ToString()) == ATMainState.考勤签到)
         {
             UserID = Client.Session["U_ID"].ToString();                                                                            //用户ID
         }
         if (string.IsNullOrEmpty(DayTime) == true)                                                                                 //进入签到页面
         {
             lblWeekDay.Text = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetDayName(DateTime.Today.DayOfWeek); //显示当前星期几
             lblDate.Text    = DateTime.Now.ToString("yyyy年MM月dd日");                                                                //显示当前日期
         }
         else                                                                                                                       //进入统计查看页面
         {
             string[] Day = DayTime.Split(' ');
             lblWeekDay.Text = Day[4];          //界面上显示星期几
             lblDate.Text    = Day[0];          //界面上显示年月日
         }
         WorkTimeDto WorkTime = AutofacConfig.attendanceService.GetCurrantASByUser(UserID);
         if ((ATMainState)Enum.Parse(typeof(ATMainState), enter.ToString()) == ATMainState.统计查看)
         {
             Bind();
         }
         else
         {
             if (WorkTime != null)
             {
                 // this.gps1.TimeOut = 2000;
                 //获取定位信息:经纬度和所处位置
                 if ((ATMainState)Enum.Parse(typeof(ATMainState), enter.ToString()) != ATMainState.统计查看)        //只有进行签到时候才获取定位信息
                 {
                     this.gps1.GetGps(new GpsCallBackHandler((object ss, Smobiler.Core.Controls.GPSResultArgs ee) =>
                     {
                         if (ee.isError == true)
                         {
                             hasgps = false;
                         }
                         else
                         {
                             hasgps = true;
                         }
                         if ((ee.Latitude == Convert.ToDouble(WorkTime.AT_Latitude) && ee.Longitude == Convert.ToDouble(WorkTime.AT_Longitude)) || ATAddressDistance.GetDistance(Convert.ToDouble(ee.Latitude), Convert.ToDouble(ee.Longitude), Convert.ToDouble(WorkTime.AT_Latitude), Convert.ToDouble(WorkTime.AT_Longitude)) < Convert.ToDouble(WorkTime.AT_AllowableDeviation.ToString()))
                         {
                             LocState = 1;
                             Location = ee.Location;        //定位签到所在位置
                         }
                         else
                         {
                             LocState = 2;
                         }
                     }));
                 }
                 Bind();      //数据绑定
             }
             else
             {
                 this.lblInfo.Visible = true;
                 this.lblInfo.Text    = "你暂时没有排班,请联系管理员!";
             }
         }
     }
     catch (Exception ex)
     {
         Toast(ex.Message);
     }
 }
示例#4
0
        /// <summary>
        /// 数据绑定
        /// </summary>
        public void Bind()
        {
            try
            {
                DataTable table = new DataTable();
                table.Columns.Add("ID");                                                                //签到模板编号
                table.Columns.Add("Picture");                                                           //签到图片
                table.Columns.Add("Description");                                                       //签到描述
                table.Columns.Add("Time", typeof(System.String));                                       //签到时间
                table.Columns.Add("Img");                                                               //图片ID
                table.Columns.Add("Action");                                                            //签到或签退
                table.Columns.Add("Info");                                                              //显示当前是否能签到,是否已经签到
                if ((ATMainState)Enum.Parse(typeof(ATMainState), enter.ToString()) == ATMainState.统计查看) //统计页面进入查看
                {
                    List <ALDto> listStats = AutofacConfig.attendanceService.GetALByUserAndDate(UserID, Convert.ToDateTime(DayTime));
                    CommutingType = listStats[0].AL_CommutingType;                                                            //上下班类型
                    if ((WorkTimeType)Enum.Parse(typeof(WorkTimeType), listStats[0].AL_CommutingType) == WorkTimeType.一天一上下班) //一天一上下班
                    {
                        table.Rows.Add("4", "shangban2", "上班", listStats[0].AL_OnTime.ToString("HH:mm"), null, null, "未开始");
                        table.Rows.Add("5", "xiaban2", "下班", listStats[1].AL_OnTime.ToString("HH:mm"), null, null, "未开始");
                    }
                    else               //一天两上下班
                    {
                        table.Rows.Add("0", "shangban2", "上午上班", listStats[0].AL_OnTime.ToString("HH:mm"), null, null, "未开始");
                        table.Rows.Add("1", "gongzuozhong2", "上午下班", listStats[1].AL_OnTime.ToString("HH:mm"), null, null, "未开始");
                        table.Rows.Add("2", "gongzuozhong2", "下午上班", listStats[2].AL_OnTime.ToString("HH:mm"), null, null, "未开始");
                        table.Rows.Add("3", "xiaban2", "下午下班", listStats[3].AL_OnTime.ToString("HH:mm"), null, null, "未开始");
                    }
                }
                else        //进入签到页面
                {
                    WorkTimeDto Mode = AutofacConfig.attendanceService.GetCurrantASByUser(UserID);
                    CommutingType = Mode.AT_CommutingType;           //上下班类型
                    if (Mode.AT_ASType == "上班")
                    {
                        if ((WorkTimeType)Enum.Parse(typeof(WorkTimeType), Mode.AT_CommutingType) == WorkTimeType.一天一上下班)            //一天一上下班
                        {
                            table.Rows.Add("4", "shangban1", "上班", Convert.ToDateTime(Mode.AT_StartTime).ToString("HH:mm"), null, null, "未开始");
                            table.Rows.Add("5", "xiaban1", "下班", Convert.ToDateTime(Mode.AT_EndTime).ToString("HH:mm"), null, null, "未开始");
                        }
                        else                     //一天两上下班
                        {
                            table.Rows.Add("0", "shangban1", "上午上班", Convert.ToDateTime(Mode.AT_AMStartTime).ToString("HH:mm"), null, null, "未开始");
                            table.Rows.Add("1", "gongzuozhong1", "上午下班", Convert.ToDateTime(Mode.AT_AMEndTime).ToString("HH:mm"), null, null, "未开始");
                            table.Rows.Add("2", "gongzuozhong1", "下午上班", Convert.ToDateTime(Mode.AT_PMStartTime).ToString("HH:mm"), null, null, "未开始");
                            table.Rows.Add("3", "xiaban1", "下午下班", Convert.ToDateTime(Mode.AT_PMEndTime).ToString("HH:mm"), null, null, "未开始");
                        }
                    }
                    else
                    {
                        this.lblInfo.Visible = true;
                        this.lblInfo.Text    = "今天是休息日!";
                    }
                }
                List <ALDto> listLogs = AutofacConfig.attendanceService.GetALByUserAndDate(UserID, DateTime.Now);                             //判断当天是否已经有签到
                if (listLogs.Count == table.Rows.Count && (ATMainState)Enum.Parse(typeof(ATMainState), enter.ToString()) == ATMainState.考勤签到) //如果当天已完成所有签到
                {
                    DayTime = DateTime.Now.ToString();                                                                                        //给DayTime值,使得页面显示统计模式
                }
                if (string.IsNullOrEmpty(DayTime) == false)                                                                                   //如果进入的是统计查看页面
                {
                    List <ALDto> listStats = AutofacConfig.attendanceService.GetALByUserAndDate(UserID, Convert.ToDateTime(DayTime));
                    for (int i = 0; i < table.Rows.Count; i++)
                    {
                        //table.Rows[i]["Action"] = null;         //隐藏签到(签退)按钮
                        foreach (ALDto Row in listStats)
                        {
                            if (Row.AL_OnTime.ToString("HH:mm") == table.Rows[i]["Time"].ToString())
                            {
                                AL_Date = Row.AL_Date;                  //签到时间
                                switch ((AttendanceType)Enum.Parse(typeof(AttendanceType), Row.AL_Status))
                                {
                                case AttendanceType.未签到:
                                case AttendanceType.未签退:
                                    table.Rows[i]["Info"] = Row.AL_Status;
                                    break;

                                case AttendanceType.迟到:
                                case AttendanceType.早退:
                                case AttendanceType.准点:
                                    if (Convert.ToInt32(table.Rows[i]["ID"].ToString()) % 2 == 0)           //奇数行
                                    {
                                        table.Rows[i]["Info"] = "已签到" + "  " + AL_Date.ToString("HH:mm");
                                    }
                                    else
                                    {
                                        table.Rows[i]["Info"] = "已签退" + "  " + AL_Date.ToString("HH:mm");
                                    }
                                    break;
                                }
                            }
                            if (string.IsNullOrEmpty(Row.AL_Reason) == false && Row.AL_LogTimeType == table.Rows[i]["Description"] + "时间")   //如果有迟到早退原因,则显示信息提示框
                            {
                                table.Rows[i]["Img"] = "!\\ue85d000146223";
                            }
                            ATMainPicture.AllBlackWhite(table);           //签到状态下,将图片显示为黑白
                        }
                    }
                }
                else                //判断当天哪几次已经签到,并且进行显示(签到页面)
                {
                    int x = 0;
                    while (x < table.Rows.Count - 1)    //当上一条行项未签到,且时间已超过下一行项的签到时间时,显示未签到
                    {
                        if (DateTime.Now >= Convert.ToDateTime(table.Rows[x + 1]["Time"]))
                        {
                            if (Convert.ToInt32(table.Rows[x]["ID"].ToString()) % 2 == 0)
                            {
                                table.Rows[x]["Info"] = "未签到";
                            }
                            else
                            {
                                table.Rows[x]["Info"] = "未签退";
                            }
                            x++;
                        }
                        else
                        {
                            x++;
                            break;
                        }
                    }
                    int count = 0;             //当前页面未签到和未签退的行项数
                    foreach (DataRow Row in table.Rows)
                    {
                        if (Row["Info"].ToString() == "未签到" || Row["Info"].ToString() == "未签退")
                        {
                            count++;
                        }
                    }
                    for (int i = listLogs.Count; i < count; i++)//当未签行项数大于数据库已记录未签条数时
                    {
                        if (table.Rows[i]["Info"].ToString() == "未签到" || table.Rows[i]["Info"].ToString() == "未签退")
                        {
                            newLog.AL_Reason = null;
                            switch ((StatisticsTime)Enum.Parse(typeof(StatisticsTime), table.Rows[i]["Description"] + "时间"))
                            {
                            case StatisticsTime.午上班时间:
                                newLog.AL_LogTimeType = StatisticsTime.午上班时间;
                                break;

                            case StatisticsTime.午下班时间:
                                newLog.AL_LogTimeType = StatisticsTime.午下班时间;
                                break;

                            case StatisticsTime.午上班时间:
                                newLog.AL_LogTimeType = StatisticsTime.午上班时间;
                                break;

                            case StatisticsTime.午下班时间:
                                newLog.AL_LogTimeType = StatisticsTime.午下班时间;
                                break;

                            case StatisticsTime.班时间:
                                newLog.AL_LogTimeType = StatisticsTime.班时间;
                                break;

                            case StatisticsTime.班时间:
                                newLog.AL_LogTimeType = StatisticsTime.班时间;
                                break;
                            }
                            newLog.AL_Date   = DateTime.Now;    //考勤日期
                            newLog.AL_UserID = UserID;          //用户ID
                            if ((WorkTimeType)Enum.Parse(typeof(WorkTimeType), CommutingType) == WorkTimeType.一天一上下班)
                            {
                                newLog.AL_CommutingType = WorkTimeType.一天一上下班;       //上下班类型
                            }
                            else
                            {
                                newLog.AL_CommutingType = WorkTimeType.一天二上下班;              //上下班类型
                            }
                            newLog.AL_Position = "无签到地点";                                   //考勤地点
                            newLog.AL_OnTime   = Convert.ToDateTime(table.Rows[i]["Time"]); //签到准点时间
                            if (Convert.ToInt32(table.Rows[i]["ID"].ToString()) % 2 == 0)   //判断考勤状态
                            {
                                newLog.AL_Status = AttendanceType.未签到;
                            }
                            else
                            {
                                newLog.AL_Status = AttendanceType.未签退;
                            }
                            ReturnInfo r = AutofacConfig.attendanceService.AddAttendanceLog(newLog);
                        }
                    }
                    if (Convert.ToInt32(table.Rows[x - 1]["ID"]) % 2 == 0)
                    {
                        table.Rows[x - 1]["Action"] = "签到";    //尚未签到的第一行,显示签到(签退)按钮
                    }
                    else
                    {
                        table.Rows[x - 1]["Action"] = "签退";                                                              //尚未签到的第一行,显示签到(签退)按钮
                    }
                    List <ALDto> listNewLogs = AutofacConfig.attendanceService.GetALByUserAndDate(UserID, DateTime.Now); //判断当天是否已经有签到
                    for (int i = 0; i < listNewLogs.Count; i++)
                    {
                        table.Rows[i]["Action"] = null;           //隐藏已签到这行的签到按钮
                        if (Convert.ToInt32(table.Rows[i + 1]["ID"]) % 2 == 0)
                        {
                            table.Rows[i + 1]["Action"] = "签到";    //尚未签到的第一行,显示签到(签退)按钮
                        }
                        else
                        {
                            table.Rows[i + 1]["Action"] = "签退";    //尚未签到的第一行,显示签到(签退)按钮
                        }
                        foreach (ALDto Row in listNewLogs)
                        {
                            AL_Date = Row.AL_Date;                                                                             //考勤时间
                            if (Convert.ToInt32(table.Rows[i]["ID"].ToString()) % 2 == 0 && listNewLogs[i].AL_Status != "未签到") //显示已签和签到时间
                            {
                                table.Rows[i]["Info"] = "已签到" + "  " + AL_Date.ToString("HH:mm");
                            }
                            else if (Convert.ToInt32(table.Rows[i]["ID"].ToString()) % 2 == 1 && listNewLogs[i].AL_Status != "未签退")
                            {
                                table.Rows[i]["Info"] = "已签退" + "  " + AL_Date.ToString("HH:mm");
                            }
                            if (Row.AL_OnTime == Convert.ToDateTime(table.Rows[i]["Time"]))
                            {
                                if (Row.AL_Status == "未签到" || Row.AL_Status == "未签退")         //显示未签
                                {
                                    table.Rows[i]["Info"] = Row.AL_Status;
                                }
                                if (string.IsNullOrEmpty(Row.AL_Reason) == false)   //如果有迟到早退原因,显示信息提示框
                                {
                                    table.Rows[i]["Img"] = "!\\ue85d000146223";
                                }
                            }
                        }
                        ATMainPicture.BlackWhite(table, i);  //已经签到的行项中,图片显示黑白
                    }
                    ATMainPicture.getPictures(table);        //对每个行项进行匹配,显示正确的图片信息
                }
                gridATdata.Rows.Clear();
                if (table.Rows.Count > 0)           //如果数据不为空
                {
                    this.gridATdata.DataSource = table;
                    this.gridATdata.DataBind();
                }
            }
            catch (Exception ex)
            {
                Toast(ex.Message);
            }
        }
示例#5
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();
        }
示例#6
0
        /// <summary>
        /// 更新日期自定义类型控件
        /// </summary>
        private void upSettingDateTypeControl()
        {
            if (calendar1.SelectDate.Date < DateTime.Now.AddDays(+1).Date)
            {
                //创建考勤时,当前选中日期小于现日期时,自定义日期考勤控件不显示
                if (string.IsNullOrEmpty(ATNo) == true)
                {
                    lblRest.Visible        = false;
                    dpStartWork.Visible    = false;
                    dpEndWork.Visible      = false;
                    lblPMEndWork.Visible   = false;
                    lblPMStartWork.Visible = false;
                    dpAMStartWork.Visible  = false;
                    dpAMEndWork.Visible    = false;
                    dpPMStartWork.Visible  = false;
                    dpPMEndWork.Visible    = false;
                    lblStartWork.Visible   = false;;
                    lblEndWork.Visible     = false;
                    btnCDType.Visible      = false;
                }
                else
                {
                    //编辑考勤时,日历选中日期小于等于现在日期,若模板存在自定义,则显示自定义状态
                    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;
                        }
                        switch ((WorkOrRest)Enum.Parse(typeof(WorkOrRest), atcd.AT_ASType))
                        {
                        case WorkOrRest.休息:
                            lblRest.Visible        = true;
                            dpStartWork.Visible    = false;
                            dpEndWork.Visible      = false;
                            lblPMEndWork.Visible   = false;
                            lblPMStartWork.Visible = false;
                            dpAMStartWork.Visible  = false;
                            dpAMEndWork.Visible    = false;
                            dpPMStartWork.Visible  = false;
                            dpPMEndWork.Visible    = false;
                            lblStartWork.Visible   = false;;
                            lblEndWork.Visible     = false;
                            btnCDType.Visible      = false;
                            break;

                        case WorkOrRest.班:
                            lblStartWork.Top = lblRest.Top;
                            lblRest.Visible  = false;
                            switch ((WorkTimeType)Enum.Parse(typeof(WorkTimeType), atcd.AT_CommutingType))
                            {
                            case WorkTimeType.一天一上下班:
                                lblStartWork.Visible   = true;
                                lblEndWork.Visible     = true;
                                dpStartWork.Visible    = true;
                                dpEndWork.Visible      = true;
                                dpStartWork.Enabled    = false;
                                dpEndWork.Enabled      = false;
                                lblPMEndWork.Visible   = false;
                                lblPMStartWork.Visible = false;
                                dpAMStartWork.Visible  = false;
                                dpAMEndWork.Visible    = false;
                                dpPMStartWork.Visible  = false;
                                dpPMEndWork.Visible    = false;
                                lblStartWork.Text      = "上班时间";
                                lblEndWork.Text        = "下班时间";
                                dpStartWork.Top        = lblStartWork.Top;
                                dpEndWork.Top          = lblEndWork.Top;
                                break;

                            case WorkTimeType.一天二上下班:
                                lblStartWork.Visible   = true;
                                lblEndWork.Visible     = true;
                                dpStartWork.Visible    = false;
                                dpEndWork.Visible      = false;
                                lblPMEndWork.Visible   = true;
                                lblPMStartWork.Visible = true;
                                dpAMStartWork.Visible  = true;
                                dpAMEndWork.Visible    = true;
                                dpPMStartWork.Visible  = true;
                                dpPMEndWork.Visible    = true;
                                dpAMStartWork.Enabled  = false;
                                dpAMEndWork.Enabled    = false;
                                dpPMStartWork.Enabled  = false;
                                dpPMEndWork.Enabled    = false;
                                lblStartWork.Text      = "上午上班";
                                lblEndWork.Text        = "上午下班";
                                dpAMStartWork.Top      = lblStartWork.Top;
                                dpAMEndWork.Top        = lblEndWork.Top;
                                lblPMStartWork.Top     = lblEndWork.Top + lblEndWork.Height;
                                dpPMStartWork.Top      = lblPMStartWork.Top;
                                lblPMEndWork.Top       = lblPMStartWork.Top + lblPMStartWork.Height;
                                dpPMEndWork.Top        = lblPMEndWork.Top;
                                break;
                            }
                            btnCDType.Visible = false;
                            break;
                        }
                    }
                    else
                    {
                        lblRest.Visible        = false;
                        dpStartWork.Visible    = false;
                        dpEndWork.Visible      = false;
                        lblPMEndWork.Visible   = false;
                        lblPMStartWork.Visible = false;
                        dpAMStartWork.Visible  = false;
                        dpAMEndWork.Visible    = false;
                        dpPMStartWork.Visible  = false;
                        dpPMEndWork.Visible    = false;
                        lblStartWork.Visible   = false;;
                        lblEndWork.Visible     = false;
                        btnCDType.Visible      = false;
                    }
                }
            }
            //创建编辑考勤时,日历选中日期大于现在日期,根据选中日期自定义类型显示考勤控件
            if (calendar1.SelectDate.Date >= DateTime.Now.AddDays(+1).Date)
            {
                switch (workType)
                {
                case WorkOrRest.班:
                    lblRest.Visible = false;
                    // lblStartWork.Top = calendar1.Top + calendar1.Height + 10;
                    lblStartWork.Top = lblRest.Top;
                    lblEndWork.Top   = lblStartWork.Top + lblStartWork.Height;
                    switch (atWorkDate.AT_Type)
                    {
                    case WorkTimeType.一天一上下班:
                        lblStartWork.Visible   = true;
                        lblEndWork.Visible     = true;
                        dpStartWork.Visible    = true;
                        dpEndWork.Visible      = true;
                        dpStartWork.Enabled    = true;
                        dpEndWork.Enabled      = true;
                        lblPMEndWork.Visible   = false;
                        lblPMStartWork.Visible = false;
                        dpAMStartWork.Visible  = false;
                        dpAMEndWork.Visible    = false;
                        dpPMStartWork.Visible  = false;
                        dpPMEndWork.Visible    = false;
                        lblStartWork.Text      = "上班时间";
                        lblEndWork.Text        = "下班时间";
                        dpStartWork.Top        = lblStartWork.Top;
                        dpEndWork.Top          = lblEndWork.Top;
                        btnCDType.Top          = lblEndWork.Top + lblEndWork.Height;
                        break;

                    case WorkTimeType.一天二上下班:
                        dpStartWork.Visible    = false;
                        dpEndWork.Visible      = false;
                        lblStartWork.Visible   = true;
                        lblEndWork.Visible     = true;
                        lblPMEndWork.Visible   = true;
                        lblPMStartWork.Visible = true;
                        dpAMStartWork.Visible  = true;
                        dpAMEndWork.Visible    = true;
                        dpPMStartWork.Visible  = true;
                        dpPMEndWork.Visible    = true;
                        dpAMStartWork.Enabled  = true;
                        dpAMEndWork.Enabled    = true;
                        dpPMStartWork.Enabled  = true;
                        dpPMEndWork.Enabled    = true;
                        lblStartWork.Text      = "上午上班";
                        lblEndWork.Text        = "上午下班";
                        dpAMStartWork.Top      = lblStartWork.Top;
                        dpAMEndWork.Top        = lblEndWork.Top;
                        lblPMStartWork.Top     = lblEndWork.Top + lblEndWork.Height;
                        dpPMStartWork.Top      = lblPMStartWork.Top;
                        lblPMEndWork.Top       = lblPMStartWork.Top + lblPMStartWork.Height;
                        dpPMEndWork.Top        = lblPMEndWork.Top;
                        btnCDType.Top          = lblPMEndWork.Top + lblPMEndWork.Height;
                        break;
                    }
                    btnCDType.Visible = true;
                    btnCDType.Text    = "设置为休息";
                    break;

                case WorkOrRest.休息:
                    dpStartWork.Visible    = false;
                    dpEndWork.Visible      = false;
                    lblPMEndWork.Visible   = false;
                    lblPMStartWork.Visible = false;
                    dpAMStartWork.Visible  = false;
                    dpAMEndWork.Visible    = false;
                    dpPMStartWork.Visible  = false;
                    dpPMEndWork.Visible    = false;
                    lblStartWork.Visible   = false;;
                    lblEndWork.Visible     = false;
                    lblRest.Visible        = true;
                    btnCDType.Visible      = true;
                    btnCDType.Top          = lblRest.Top + lblRest.Height;
                    btnCDType.Text         = "设置为考勤";
                    break;
                }
            }
        }