/*******************************************************************************
* Copyright(c) 2014 DongkeSoft All rights reserved. / Confidential
* 类的信息:
* 1.程序名称:F_TAT_0803.cs
* 2.功能描述:出勤考核扣罚明细
* 编辑履历:
* 作者 日期 版本 修改内容
* 任海 2014/12/16 1.00 新建
*******************************************************************************/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Dongke.IBOSS.PRD.Basics.BaseControls;
using Dongke.IBOSS.PRD.Basics.BaseResources;
using Dongke.IBOSS.PRD.Client.CommonModule;
using Dongke.IBOSS.PRD.Client.Controls;
using Dongke.IBOSS.PRD.WCF.DataModels;
using Dongke.IBOSS.PRD.WCF.Proxys;
using Dongke.IBOSS.PRD.WCF.Proxys.SystemModuleService;
using Dongke.IBOSS.PRD.WCF.Proxys.TATModuleService;
namespace Dongke.IBOSS.PRD.Client.TATModule
{
///
/// 出勤考核扣罚明细
///
public partial class F_TAT_0803 : FormBase
{
#region 成员变量
// 窗体模式ID
private Constant.FormMode _formType;
// 操作实体ID
private int? _entityId;
// 主体工种ID
private int? _JobsId;
// 操作实体名称
//private string _entityname;
// 操作出勤考核实体
private AttendanceEntity _attendanceEntity = new AttendanceEntity();
// 操作出勤考核明细实体
private AttendanceDetailEntity _attendanceDetailEntity = new AttendanceDetailEntity();
// 选择窗体弹出标识
//private bool _showFlag = true;
// 数据源
private DataSet _dsSourse;
// 窗体加载完毕标识
//private bool _pageLoadOK = false;
#endregion
#region 构造函数
///
/// 窗体构造
///
/// 窗体开启模式
/// 操作实体ID
public F_TAT_0803(Constant.FormMode formType, int AttendanceID,
int JobsId)
{
InitializeComponent();
this._formType = formType;
this._entityId = AttendanceID;
this._JobsId = JobsId;
this.btnSubmit.Text = ButtonText.BTN_SAVE;
this.btnClose.Text = ButtonText.BTN_CANCEL;
}
#endregion
#region 事件处理
///
/// 窗体加载
///
///
///
private void F_TAT_0803_Load(object sender, EventArgs e)
{
try
{
this.WeekData();
///不自动创建列
this.dgvPunishMode.AutoGenerateColumns = false;
this.BindAttFinesRules();
///绑定主体信息
this.BindPage();
/// 加载控件
this.Loading();
if (this._formType == Constant.FormMode.CopyAndAdd)
{
this.dgvPunishMode.ReadOnly = true;
this.dgvPunishMode.IsSetInputColumnsColor = false;
this.dgvPunishMode.AllowUserToAddRows = false;
}
if (this._formType == Constant.FormMode.Display)
{
//列表设置为只读
this.dgvPunishMode.ReadOnly = true;
this.dgvPunishMode.IsSetInputColumnsColor = false;
this.dgvPunishMode.AllowUserToAddRows = false;
//控件除关闭外全部不可用
this.txtday.Enabled = false;
this.cbday.Enabled = false;
this.cbWeek.Enabled = false;
this.SelWeek.Enabled = false;
this.cbPunishSetting.Enabled = false;
this.cbBasicSalaryScale.Enabled = false;
this.btnSubmit.Enabled = false;
}
}
catch (Exception ex)
{
// 对异常进行共通处理
ExceptionManager.HandleEventException(this.ToString(),
System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex);
}
}
///
/// 选中控件时休息天数控件不可用
///
private void cbWeek_Click(object sender, EventArgs e)
{
this.SelWeek.Enabled = true;
this.txtday.Enabled = false;
}
///
/// 选中控件时按星期控件不可用
///
private void cbday_Click(object sender, EventArgs e)
{
this.txtday.Enabled = true;
this.SelWeek.Enabled = false;
}
//
/// 选中控件时表格不可用
///
private void cbBasicSalaryScale_Click(object sender, EventArgs e)
{
try
{
this.dgvPunishMode.Enabled = false;
this.dgvPunishMode.ReadOnly = true;
this.dgvPunishMode.IsSetInputColumnsColor = false;
DataTable dtCurrentTable = this.dgvPunishMode.DataSource as DataTable;
if (dtCurrentTable != null)
{
foreach(DataRow r in dtCurrentTable.Rows)
{
r.Delete();
}
}
this.dgvPunishMode.DataSource = dtCurrentTable;
}
catch (Exception ex)
{
// 对异常进行共通处理
ExceptionManager.HandleEventException(this.ToString(),
System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex);
}
}
///
/// 选中控件时表格可用
///
private void cbPunishSetting_Click(object sender, EventArgs e)
{
this.dgvPunishMode.Enabled = true;
this.dgvPunishMode.ReadOnly = false;
this.dgvPunishMode.IsSetInputColumnsColor = true;
}
///
/// 提交操作
///
///
///
private void btnSubmit_Click(object sender, EventArgs e)
{
try
{
//获取页面值绑定属性
this.BindEntity();
DataTable datatPunishMode = (DataTable)this.dgvPunishMode.DataSource;
int StartIndex = 1;
if (datatPunishMode != null && datatPunishMode.Rows.Count > 0)
{
if (datatPunishMode.Rows[0].RowState != DataRowState.Deleted)
StartIndex = Convert.ToInt32(datatPunishMode.Rows[0]["BeginAbsentDays"]);
}
bool isError = false;
if (datatPunishMode != null)
{
foreach (DataRow drproductionData in datatPunishMode.Rows)
{
if (drproductionData.RowState != DataRowState.Deleted)
{
if (drproductionData["BeginAbsentDays"].ToString() == "" || drproductionData["EndAbsentDays"].ToString() == "")
{
isError = true;
break;
}
if (Convert.ToInt32(drproductionData["BeginAbsentDays"]) != StartIndex)
{
isError = true;
break;
}
int number = Convert.ToInt32(drproductionData["EndAbsentDays"]) - Convert.ToInt32(drproductionData["BeginAbsentDays"]);
if (number < 0)
{
isError = true;
break;
}
StartIndex = (Convert.ToInt32(drproductionData["EndAbsentDays"]) + 1);
}
}
if (isError)
{
MessageBox.Show(string.Format("日期区间不能有间隔或重叠"),
this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
if (this.dgvPunishMode.CurrentRow != null)
{
DataGridViewRow gvrNow = this.dgvPunishMode.CurrentRow;
if (gvrNow.Cells["PunishAmount"].Value.ToString() == "")
{
// 单元格的错误消息
MessageBox.Show(string.Format(Messages.MSG_CMN_W005, "扣罚金额"),
this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
}
}
//
//DataSet ds = new DataSet();
//ds.Tables.Add(datatPunishMode.Copy());
//DataSet dss = _dsSourse;
//提交操作
ServiceResultEntity srEntity =
(ServiceResultEntity)DoAsync(() =>
{
return TATModuleProxy.Service.EditAttendanceDetail(this._attendanceDetailEntity, _dsSourse);//_dsSourse
});
ServiceResultEntityManager.HandleServiceResultEntity(srEntity, this.Text);
if (srEntity.Status == Constant.ServiceResultStatus.Success)
{
this.DialogResult = DialogResult.OK;
}
}
catch (Exception ex)
{
// 对异常进行共通处理
ExceptionManager.HandleEventException(this.ToString(),
System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex);
}
}
///
/// 关闭窗体
///
///
///
private void btnClose_Click(object sender, EventArgs e)
{
this.Close();
}
#endregion
#region 私有方法/函数
///
/// 加载控件
///
private void Loading()
{
//扣罚方式选中状态,判断表格是否可用
if (this.cbBasicSalaryScale.Checked)
{
this.dgvPunishMode.Enabled = false;
this.dgvPunishMode.ReadOnly = true;
this.dgvPunishMode.IsSetInputColumnsColor = false;
}
else
{
this.dgvPunishMode.Enabled = true;
this.dgvPunishMode.ReadOnly = false;
this.dgvPunishMode.IsSetInputColumnsColor = true;
}
if (this.cbWeek.Checked)
{
this.SelWeek.Enabled = true;
this.txtday.Enabled = false;
}
else
{
this.SelWeek.Enabled = false;
this.txtday.Enabled = true;
}
}
///
/// 绑定对应扣罚明细
///
private void BindAttFinesRules()
{
try
{
//获取对应扣罚明细
ServiceResultEntity srEntityDetail
= TATModuleProxy.Service.GetAttFinesRulesById(Convert.ToInt32(this._entityId), Convert.ToInt32(this._JobsId));
if (srEntityDetail.Data != null && srEntityDetail.Data.Tables.Count != 0)
{
this._dsSourse = srEntityDetail.Data;
this.dgvPunishMode.DataSource = srEntityDetail.Data.Tables[0];
this.dgvPunishMode.IsSetInputColumnsColor = true;
}
}
catch (Exception ex)
{
throw ex;
}
}
///
/// 绑定需要操作的实体信息
///
private void BindPage()
{
try
{
if (this._entityId != 0 && this._entityId != null)
{
this._attendanceDetailEntity.AttendanceID = this._entityId;
this._attendanceDetailEntity.JobsID = this._JobsId;
//获取出勤考核明细
ServiceResultEntity srEntity
= TATModuleProxy.Service.GetAttendanceDetail(_attendanceDetailEntity);
//如果取出了对应的数据
if (srEntity.Data != null && srEntity.Data.Tables.Count != 0
&& srEntity.Data.Tables[0].Rows.Count != 0)
{
//为实体及页面相关赋值
DataSet dsEntityData = (DataSet)srEntity.Data;
DataRow drEntityRow = dsEntityData.Tables[0].Rows[0];
this.txtday.Text = drEntityRow["RestDays"].ToString();
int RestmMode = Convert.ToInt32(drEntityRow["RestmMode"]);
this._attendanceDetailEntity.RestmMode = RestmMode;
if (RestmMode == 1)
{
this.cbWeek.Checked = true;
}
else
{
this.cbday.Checked = true;
}
int PunishMode = Convert.ToInt32(drEntityRow["PunishMode"]);
this._attendanceDetailEntity.PunishMode = PunishMode;
if (PunishMode == 1)
{
this.cbBasicSalaryScale.Checked = true;
}
else
{
this.cbPunishSetting.Checked = true;
}
//绑定多选的选项
object[] objec = new object[7];
if (drEntityRow["Monday"].ToString() == "1")
{
objec[0] = 1;
}
else
{
objec[0] = 0;
}
if (drEntityRow["Tuesday"].ToString() == "1")
{
objec[1] = 2;
}
else
{
objec[1] = 0;
}
if (drEntityRow["Wednesday"].ToString() == "1")
{
objec[2] = 3;
}
else
{
objec[2] = 0;
}
if (drEntityRow["Thursday"].ToString() == "1")
{
objec[3] = 4;
}
else
{
objec[3] = 0;
}
if (drEntityRow["Friday"].ToString() == "1")
{
objec[4] = 5;
}
else
{
objec[4] = 0;
}
if (drEntityRow["Saturday"].ToString() == "1")
{
objec[5] = 6;
}
else
{
objec[5] = 0;
}
if (drEntityRow["Sunday"].ToString() == "1")
{
objec[6] = 7;
}
else
{
objec[6] = 0;
}
this.SelWeek.SelectedValues = objec;
this._attendanceDetailEntity.OPTimeStamp = Convert.ToDateTime(drEntityRow["OPTimeStamp"]);
}
}
}
catch (Exception ex)
{
throw ex;
}
}
///
/// 设置绑定星期信息
///
private void WeekData()
{
DataTable dtWeek = new DataTable();
dtWeek.Columns.Add("WeekName");
dtWeek.Columns.Add("WeekValue");
DataRow drWeekOne = dtWeek.NewRow();
drWeekOne["WeekName"] = "星期一";
drWeekOne["WeekValue"] = "1";
dtWeek.Rows.Add(drWeekOne);
DataRow drWeekTwo = dtWeek.NewRow();
drWeekTwo["WeekName"] = "星期二";
drWeekTwo["WeekValue"] = "2";
dtWeek.Rows.Add(drWeekTwo);
DataRow drWeekThree = dtWeek.NewRow();
drWeekThree["WeekName"] = "星期三";
drWeekThree["WeekValue"] = "3";
dtWeek.Rows.Add(drWeekThree);
DataRow drWeekfour = dtWeek.NewRow();
drWeekfour["WeekName"] = "星期四";
drWeekfour["WeekValue"] = "4";
dtWeek.Rows.Add(drWeekfour);
DataRow drWeekfive = dtWeek.NewRow();
drWeekfive["WeekName"] = "星期五";
drWeekfive["WeekValue"] = "5";
dtWeek.Rows.Add(drWeekfive);
DataRow drWeeksix = dtWeek.NewRow();
drWeeksix["WeekName"] = "星期六";
drWeeksix["WeekValue"] = "6";
dtWeek.Rows.Add(drWeeksix);
DataRow drWeekseven = dtWeek.NewRow();
drWeekseven["WeekName"] = "星期日";
drWeekseven["WeekValue"] = "7";
dtWeek.Rows.Add(drWeekseven);
this.SelWeek.DisplayMember = "WeekName";
this.SelWeek.ValueMember = "WeekValue";
this.SelWeek.DataSource = dtWeek;
}
///
/// 为实体绑定页面属性
///
private void BindEntity()
{
this._attendanceDetailEntity.RestDays = Convert.ToInt32(this.txtday.Text);
if (this.cbWeek.Checked)
{
this._attendanceDetailEntity.RestmMode = 1;
}
else
{
this._attendanceDetailEntity.RestmMode = 2;
}
if (this.cbBasicSalaryScale.Checked)
{
this._attendanceDetailEntity.PunishMode = 1;
}
else
{
this._attendanceDetailEntity.PunishMode = 2;
}
//绑定星期页面属性
string[] sub = this.SelWeek.SelectedArray.Split(',');
int Monday = 0;
int Tuesday = 0;
int Wednesday = 0;
int Thursday = 0;
int Friday = 0;
int Saturday = 0;
int Sunday = 0;
if (sub.Length > 0)
{
for (int i = 0; i < sub.Length; i++)
{
switch (Convert.ToInt32(sub[i]))
{
case 1:
Monday = 1;
break;
case 2:
Tuesday = 1;
break;
case 3:
Wednesday = 1;
break;
case 4:
Thursday = 1;
break;
case 5:
Friday = 1;
break;
case 6:
Saturday = 1;
break;
case 7:
Sunday = 1;
break;
}
}
}
this._attendanceDetailEntity.Monday = Monday;
this._attendanceDetailEntity.Tuesday = Tuesday;
this._attendanceDetailEntity.Wednesday = Wednesday;
this._attendanceDetailEntity.Thursday = Thursday;
this._attendanceDetailEntity.Friday = Friday;
this._attendanceDetailEntity.Saturday = Saturday;
this._attendanceDetailEntity.Sunday = Sunday;
}
#endregion
}
}