⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 submitotreq.aspx.cs

📁 该管理系统的主要功能是管理员工资料、管理员工考勤、计算员工薪资和业绩评定等。大部分涉及对敏感数据修改的工作都仅由人事部完成
💻 CS
📖 第 1 页 / 共 2 页
字号:
					if( e.Day.Date.Date == dt.Date )
					{
						e.Cell.BackColor = System.Drawing.Color.DarkGreen;
						e.Cell.Font.Bold = true;
						break;
					}
		
				}
			}
		
		}



		//选定开始日期变化时,该日相应的加班时间段也应该改变
		private void cldStartDate_SelectionChanged(object sender, System.EventArgs e)
		{
			//重新绑定开始日期可加班的时间段
			this.BindStartTimeList();
		}

		
		
		//选定结束日期变化时,该日相应的加班时间段也应该改变
		private void cldEndDate_SelectionChanged(object sender, System.EventArgs e)
		{
			//重新绑定结束日期可加班的时间段
			this.BindEndTimeList();
		}


		/// <summary>
		/// 当用户改变“开始时间”日历控件的当前月份时,该方法将重新设定日历控件的选中日期,并重新计算当前月份的国定假日。
		/// </summary>
		/// <param name="sender">发送该事件的对象</param>
		/// <param name="e">网页事件的基本参数</param>
		private void cldStartDate_VisibleMonthChanged(object sender, System.Web.UI.WebControls.MonthChangedEventArgs e)
		{
			//该过程调用 ReCalculateHoliday() 函数,计算日历控件当月所包含的国定假日。
			this.cldStartDate.SelectedDate = e.NewDate;
			
			ReCalculateHoliday();
		}


		/// <summary>
		/// 当用户改变“结束时间”日历控件的当前月份时,该方法将重新设定日历控件的选中日期,并重新计算当前月份的国定假日。
		/// </summary>
		/// <param name="sender">发送该事件的对象</param>
		/// <param name="e">网页事件的基本参数</param>
		private void cldEndDate_VisibleMonthChanged(object sender, System.Web.UI.WebControls.MonthChangedEventArgs e)
		{
			//该过程调用 ReCalculateHoliday() 函数,计算日历控件当月所包含的国定假日。
			this.cldEndDate.SelectedDate = e.NewDate;
			
			ReCalculateHoliday();
		}


	
		/// <summary>
		/// 计算某指定日期是否为国定假日
		/// </summary>
		/// <param name="dt">指定的日期</param>
		/// <returns>返回是否是国定假日的布尔值,是国定假日返回true,否则返回false</returns>
		private bool IsHoliday( DateTime dt )
		{
			//查询 指定日期所在月份的所有国定假日
			ArrayList alHoliday = new ArrayList();		
			int iHolidays = DBUtils.SubmitLvReq.GetHoliday(dt,ref alHoliday);
			
			bool isHoliday = false;

			if(dt.DayOfWeek == DayOfWeek.Saturday ||dt.DayOfWeek ==DayOfWeek.Sunday )
			{
				//指定日期为周末
				isHoliday = true;
			}
			else
			{
			
				if(iHolidays == (int)DBResult.Success && alHoliday.Count != 0)
				{
					//数据库操作正确且该月存在国定假日

					//判断指定日期是否是国定假日
					foreach(DateTime dtHoliday in alHoliday)
					{
						if(dt.ToShortDateString() == dtHoliday.ToShortDateString())
						{
							//是国定假日或者周末
							isHoliday = true;
							break;
						}
					}
				}
			}
			return isHoliday;
		
		}


	
		/// <summary>
		/// 根据用户选定的加班时间,返回加班的总小时数,如果加班日期不正确,则返回 0
		/// </summary>
		/// <returns>返回加班的总小时数</returns>
		private int CalculateHours()
		{

			//调用 ReCalculateHoliday() 函数,
			//计算日历控件当月所包含的国定假日,还调用IsHoliday(dtStart) 函数,判断指定日期是否是国定假日。

			//查询开始时间 月的国定假日
			ArrayList alHolidayL = new ArrayList();			
			int isStartHolidays = DBUtils.SubmitLvReq.GetHoliday(cldStartDate.SelectedDate,ref alHolidayL);
			
			//查询结束时间 月的国定假日
			ArrayList alHolidayR = new ArrayList();			
			int isEndHolidays = DBUtils.SubmitLvReq.GetHoliday(cldEndDate.SelectedDate,ref alHolidayR);

			//创建一个变量用来存储加班小时数
			int iHours = 0;

			//开始日期的开始时间
			int iStartTime = Convert.ToInt32(this.cmbStartTime.SelectedValue);
			//结束日期的结束时间
			int iEndTime = Convert.ToInt32(this.cmbEndTime.SelectedValue);

			//判断加班时间选择是否正确
			if((this.cldStartDate.SelectedDate > this.cldEndDate.SelectedDate)
				||((this.cldStartDate.SelectedDate == this.cldEndDate.SelectedDate)&&(iStartTime > iEndTime )))
			{
				//选择了错误的加班时间
				//开始日期大于结束日期;
				//或者开始日期与结束日期相等,但开始时间大于结束时间
				iHours = 0;
			}
			else
			{
				//正确的选择加班时间
				if((this.cldStartDate.SelectedDate == this.cldEndDate.SelectedDate))
				{
					//开始日期与结束日期是同一天,且不是国定假日、且结束时间大于开始时间、且不是周末
					iHours = iEndTime - iStartTime;
				}
				else
				{
					//开始日期和结束日期不是同一天,且结束日期晚于开始日期
					
					//计算开始日期当天的小时数
					if(this.IsHoliday(this.cldStartDate.SelectedDate))
					{
						//当天是节假日,最多可能加班小时数为9小时
						iHours += 9-iStartTime;
					}
					else
					{
						//当天是工作日,最多可能加班小时数为15小时
						iHours += 15-iStartTime;
					}


					//计算结束日期当天的小时数				
					iHours += iEndTime;
					
					DateTime dt = this.cldStartDate.SelectedDate .AddDays(1);
					while(dt<this.cldEndDate.SelectedDate)
					{
						if(this.IsHoliday(dt))
						{
							//节假日,每天要加班9小时
							iHours += 9;
						}
						else
						{
							//工作日,每天要加班15小时
							iHours +=15;
						}
						dt = dt.AddDays(1);
					}
				}
			}

			//返回加班小时数
			return iHours;

		}


		
		//点击计算加班时间
		private void btnCalculate_Click(object sender, System.EventArgs e)
		{
			int iHours = this.CalculateHours();
			if(iHours == 0)
			{
				//加班日期不正确
				Response.Write("<script>alert('申请加班日期不正确,请重试!')</script>");
			}
			else
			{
				//加班时间正确,显示加班总小时数
				this.lblTotalHours.Text = iHours.ToString();
			}
		}


		//将加班请求记录保存到数据库中
		private void btnSubmit_Click(object sender, System.EventArgs e)
		{
			//计算加班小时数
			int iHours = this.CalculateHours();

			//获取加班者编号
			int iEmpID = Convert.ToInt32(Session["EmployeeID"]);

			//获取加班折算方法
			int iType = Convert.ToInt32(this.rdoOptionList.SelectedValue);

			//获取提交时间
			DateTime dtSubmit = System.DateTime.Now;

			//获取开始加班时间
			string strStartTime = this.cldStartDate.SelectedDate.ToShortDateString().ToString() + " "+ this.cmbStartTime.SelectedItem.Text;
			DateTime dtStart = Convert.ToDateTime(strStartTime);

			//获取结束时间		
			string strEndTime = this.cldEndDate.SelectedDate.ToShortDateString().ToString() +" " + this.cmbEndTime.SelectedItem.Text;
			
			if(this.cmbEndTime.SelectedItem.Text == "24:00")
			{
				//如果结束时间为“24:00”,应转化为次日的0:00来计算
				strEndTime = this.cldEndDate.SelectedDate.AddDays(1).ToString();
			}
			DateTime dtEnd = Convert.ToDateTime(strEndTime);

			//获取审批者编号
			int iApproverID = Convert.ToInt32(this.cmbApproverList.SelectedValue);
			

			//获取加班事由
			string strReason = this.txtReason.Text.Trim();


			if( dtStart<System.DateTime.Now )
			{
				Response.Write("<script>alert('加班日期不正确')</script>");
				this.lblErrorMsg.Text = "加班日期不正确";
				this.lblErrorMsg.Visible = true;
			}
			else
			{
				if(iHours == 0)
				{
					//加班日期不正确
					this.lblErrorMsg.Text = "加班日期不正确";
					this.lblErrorMsg.Visible = true;
				}
				else
				{
					if(strReason == "")
					{
						//加班事由为空
						this.lblErrorMsg.Text = "加班事由不能为空";
						this.lblErrorMsg.Visible = true;
					}
					else
					{
						try
						{
							//判断所选择的时间段内是否已经申请了加班,如果已经申请了则不能再申请
							//创建一个DataSet对象存储历史记录
							DataSet dsHistoryResult = new DataSet();
							//查询所选择的时间段内的历史记录
							int iHasRecord = DBUtils.SubmitOTReq.QueryHistoryReq(iEmpID,iType,dtStart.ToString(),dtEnd.ToString(),ref dsHistoryResult);
							if(iHasRecord == (int)DBResult.Success && dsHistoryResult.Tables[0].Rows.Count != 0)
							{
								//这段时间内已经有加班记录,不能再加班了
								Response.Write("<script>alert('您已经申请了加班,请等待审批')</script>");
							}
							else
							{
								//所选择的时间内还没有加班记录,允许申请加班
								//将加班请求保存到数据库中
								DBUtils.SubmitOTReq.AddOTReq(iEmpID,iType,dtSubmit,dtStart,dtEnd,iApproverID,iHours,strReason);
									
								Response.Write("<script>alert(' 您已经成功申请了 "+iHours+" 小时的加班,请等待审批')</script>");
							}
						}
						catch(Exception ex)
						{
							//将加班请求保存到数据库中出现异常
							this.lblErrorMsg.Text = "提交加班记录失败";
							this.lblErrorMsg.Visible = true;
						}

					}
				}
			}
		}

	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -