Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        /// <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);
                }
            });
        }
Ejemplo n.º 3
0
        /// <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;
                }
            }
        }
Ejemplo n.º 6
0
        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>());
        }
Ejemplo n.º 7
0
        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>());
        }
Ejemplo n.º 8
0
        /// <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);
            }
        }