/******************************************************************************* * Copyright(c) 2014 DongkeSoft All rights reserved. / Confidential * 类的信息: * 1.程序名称:F_TAT_0702.cs * 2.功能描述:管理岗位工资策略明细 * 编辑履历: * 作者 日期 版本 修改内容 * 庄天威 2014/11/18 1.00 新建 *******************************************************************************/ using System; using System.Data; 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_0702 : FormBase { #region 成员变量 // 窗体模式ID private Constant.FormMode _formType; // 操作实体ID private int? _entityId; // 操作实体 private ManagerSalaryEntity _msEntity = new ManagerSalaryEntity(); // 选择窗体弹出标识 private bool _showFromFlag = true; // 数据源 private DataSet _dsSourse; // 窗体加载完毕标识 private bool _pageLoadOK = false; #endregion #region 构造函数 /// /// 窗体构造 /// /// 窗体开启模式 /// 操作实体ID public F_TAT_0702(Constant.FormMode formType, int managerSalaryID) { InitializeComponent(); this._formType = formType; this._entityId = managerSalaryID; // 窗口标题 this.Text = FormTitles.F_TAT_0702; // 按钮 this.btnSubmit.Text = ButtonText.BTN_SAVE; this.btnClose.Text = ButtonText.BTN_CANCEL; } #endregion #region 事件处理 /// /// 窗体加载 /// /// /// private void F_TAT_0702_Load(object sender, EventArgs e) { try { BindManagerSalaryType(); //无论如何先绑定工种,即使没有信息,也需要Table的结构 this.dgvManagers.AutoGenerateColumns = false; this.BindManagers(); //如果是编辑或审核模式,还要绑定主体信息 if (this._formType == Constant.FormMode.Edit || this._formType == Constant.FormMode.Display) { this.BindPage(); this.tsbtnOther.Visible = true; } else { //新建模式下是不可以进入明细的 if (this._formType == Constant.FormMode.Add) { this.tsbtnOther.Visible = false; } else //复制模式不可编辑明细 { this.dgvManagers.ReadOnly = true; this.dgvManagers.IsSetInputColumnsColor = false; this.dgvManagers.AllowUserToAddRows = false; } } //页面加载完毕 this._pageLoadOK = true; //如果是审核及观看模式 if (this._formType == Constant.FormMode.Display) { this.btnPass.Visible = true; this.btnReturn.Visible = true; //列表设置为只读 this.dgvManagers.ReadOnly = true; this.dgvManagers.IsSetInputColumnsColor = false; this.dgvManagers.AllowUserToAddRows = false; this.dgvManagers.AllowUserToDeleteRows = false; //控件除关闭外全部不可用 this.txtManagerSalaryName.Enabled = false; this.txtRemarks.Enabled = false; this.dtpStartTime.Enabled = false; this.btnSubmit.Enabled = false; } } catch (Exception ex) { // 对异常进行共通处理 ExceptionManager.HandleEventException(this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex); } } /// /// 提交操作 /// /// /// private void btnSubmit_Click(object sender, EventArgs e) { try { int results = Conservation(); if (results == Constant.INT_IS_ONE) { MessageBox.Show(string.Format(Messages.MSG_CMN_W005, "工资类型"), this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (results == Constant.INT_IS_TWO) { MessageBox.Show(string.Format(Messages.MSG_CMN_W005, "工资百分比"), this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (!ValidationInput()) { return; } //获取页面值绑定属性 this.BindEntity(); //提交操作 ServiceResultEntity srEntity = (ServiceResultEntity)DoAsync(() => { return this.EntityToServer(); }); 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(); } /// /// 进入明细 /// /// /// private void tsbtnOther_Click(object sender, EventArgs e) { try { //获取当前行,如果不为空以及非新建行的话,就可以进入明细页面 DataGridViewRow gvrNow = this.dgvManagers.CurrentRow; if (gvrNow != null && !gvrNow.IsNewRow) { //判断该行是否是新建行 if (gvrNow.Cells["ManagersID"].Value != DBNull.Value) { //获取需要添加明细的信息ID int ManagersId = Convert.ToInt32(gvrNow.Cells["ManagersID"].Value); string StaffName = gvrNow.Cells["StaffName"].Value.ToString(); string OrganizationName = gvrNow.Cells["OrganizationName"].Value.ToString(); string PostName = gvrNow.Cells["PostName"].Value.ToString(); //以编辑模式打开信息窗体 F_TAT_0703 frmTAT0703 = new F_TAT_0703(this._formType, Convert.ToInt32(this._msEntity.ManagerSalaryID), ManagersId, StaffName, OrganizationName, PostName); DialogResult dialogResult = frmTAT0703.ShowDialog(); } else { //提示用户,该管理员信息暂未保存,不可创建组内成员 MessageBox.Show(Messages.MSG_TAT_W002, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning); } } else { //不可为空或选择新建行 } } catch(Exception ex) { // 对异常进行共通处理 ExceptionManager.HandleEventException(this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex); } } /// /// 自适应列宽 /// /// /// private void tsbtnAdaptive_Click(object sender, EventArgs e) { this.dgvManagers.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells); } /// /// 单元格值改变 /// /// /// private void dgvManagers_CellValueChanged(object sender, DataGridViewCellEventArgs e) { try { if (this.dgvManagers.Rows.Count <= Constant.INT_IS_ONE || !_showFromFlag) { return; } DataGridViewRow rowItem = this.dgvManagers.Rows[e.RowIndex]; DataGridViewColumn columnItem = this.dgvManagers.Columns[e.ColumnIndex]; if (columnItem.Name == "StaffCode") { int managerSalaryID = this._entityId == null ? 0 : Convert.ToInt32(this._entityId); _showFromFlag = false; FormUtility.BindManagerRowDataSource(this.dgvManagers, e.RowIndex, columnItem.Name, null, managerSalaryID, false); _showFromFlag = true; foreach (DataGridViewRow gvrFor in this.dgvManagers.Rows) { if (!gvrFor.IsNewRow && gvrFor.Cells["Manager"].Value != DBNull.Value) { gvrFor.Cells["StaffCode"].ReadOnly = true; gvrFor.Cells["SalaryType"].ReadOnly = false; gvrFor.Cells["SalaryPercent"].ReadOnly = false; } //如果是新行,不可录入工种以外的项 if (gvrFor.IsNewRow) { gvrFor.Cells["SalaryType"].ReadOnly = true; gvrFor.Cells["SalaryPercent"].ReadOnly = true; gvrFor.Cells["StaffCode"].ReadOnly = false; } } this.dgvManagers.IsSetInputColumnsColor = true; } } catch (Exception ex) { // 对异常进行共通处理 ExceptionManager.HandleEventException(this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex); } } /// /// 通过审核 /// /// /// private void btnPass_Click(object sender, EventArgs e) { //进行审核操作 this._msEntity.AuditStatus = Convert.ToInt32(Constant.AuditStatus.Agree); ServiceResultEntity srEntity = (ServiceResultEntity)DoAsync(() => { return EntityToServer(); }); //服务实体共通处理 ServiceResultEntityManager.HandleServiceResultEntity(srEntity, this.Text); if (srEntity.Status == Constant.ServiceResultStatus.Success) { this.DialogResult = DialogResult.OK; } } /// /// 驳回审核 /// /// /// private void btnReturn_Click(object sender, EventArgs e) { //进行审核操作 this._msEntity.AuditStatus = Convert.ToInt32(Constant.AuditStatus.Disagree); ServiceResultEntity srEntity = (ServiceResultEntity)DoAsync(() => { return EntityToServer(); }); //服务实体共通处理 ServiceResultEntityManager.HandleServiceResultEntity(srEntity, this.Text); if (srEntity.Status == Constant.ServiceResultStatus.Success) { this.DialogResult = DialogResult.OK; } } #endregion #region 私有方法/函数 /// /// 绑定需要操作的实体信息 /// private void BindPage() { try { if (this._entityId != 0 && this._entityId != null) { this._msEntity.ManagerSalaryID = this._entityId; //获取工价策略 ServiceResultEntity srEntity = TATModuleProxy.Service.GetManagerSalary(_msEntity); //如果取出了对应的数据 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.txtManagerSalaryName.Text = drEntityRow["ManagerSalaryName"].ToString(); this.txtRemarks.Text = drEntityRow["Remarks"].ToString(); this.dtpStartTime.Text = drEntityRow["BeginAccountMonth"].ToString(); this._msEntity.BeginAccountMonth = Convert.ToDateTime(drEntityRow["BeginAccountMonth"].ToString()); this._msEntity.OPTimeStamp = Convert.ToDateTime(drEntityRow["OPTimeStamp"]); } } } catch (Exception ex) { throw ex; } } /// /// 绑定策略类型 /// private void BindManagerSalaryType() { try { //绑定策略类型 DataTable dtSalaryType = new DataTable(); dtSalaryType.Columns.Add("SalaryType"); dtSalaryType.Columns.Add("SalaryTypeName"); Type ManagerSalaryTypeEnum = typeof(Constant.ManagerSalaryType); Array ManagerSalaryTypeArray = Enum.GetValues(ManagerSalaryTypeEnum); for (int i = 0; i < Constant.ManagerSalaryTypeName.Length; i++) { dtSalaryType.Rows.Add(Convert.ToInt32(ManagerSalaryTypeArray.GetValue(i)), Constant.ManagerSalaryTypeName[i]); } this.SalaryType.DisplayMember = "SalaryTypeName"; this.SalaryType.ValueMember = "SalaryType"; this.SalaryType.DataSource = dtSalaryType; } catch(Exception ex) { throw ex; } } /// /// 绑定对应管理者信息 /// private void BindManagers() { try { //获取对应管理者信息 ServiceResultEntity srEntityDetail = TATModuleProxy.Service.GetManagersById(Convert.ToInt32(this._entityId)); if (srEntityDetail.Data != null && srEntityDetail.Data.Tables.Count != 0) { this._dsSourse = srEntityDetail.Data; this.dgvManagers.DataSource = srEntityDetail.Data.Tables[0]; //新行单元格可用性编辑 DataGridViewRow gvrNew = this.dgvManagers.Rows[this.dgvManagers.NewRowIndex]; gvrNew.Cells["StaffCode"].ReadOnly = false; gvrNew.Cells["SalaryType"].ReadOnly = true; gvrNew.Cells["SalaryPercent"].ReadOnly = true; this.dgvManagers.IsSetInputColumnsColor = true; } } catch (Exception ex) { throw ex; } } /// /// 与服务交互操作 /// /// private ServiceResultEntity EntityToServer() { if (this._formType == Constant.FormMode.Add) { return TATModuleProxy.Service.AddManagerSalary(this._msEntity, _dsSourse); } else if (this._formType == Constant.FormMode.Edit) { return TATModuleProxy.Service.EditManagerSalary(this._msEntity, _dsSourse); } else if (_formType == Constant.FormMode.CopyAndAdd) { this._msEntity.CopyId = Convert.ToInt32(this._entityId); return TATModuleProxy.Service.AddManagerSalary(this._msEntity, _dsSourse); } else if (_formType == Constant.FormMode.Display) { return TATModuleProxy.Service.AuditManagerSalary(this._msEntity); } return null; } /// /// 为实体绑定页面属性 /// private void BindEntity() { this._msEntity.ManagerSalaryName = this.txtManagerSalaryName.Text.Trim(); this._msEntity.BeginAccountMonth = this.dtpStartTime.Value.Date; this._msEntity.Remarks = this.txtRemarks.Text; this._msEntity.AuditStatus = 0; } /// /// 验证必填项 /// /// 是否通过 private bool ValidationInput() { if (string.IsNullOrWhiteSpace(this.txtManagerSalaryName.Text)) { this.txtManagerSalaryName.Focus(); return false; } //循环列表,除新行外,工资类别和比例都不可为空 foreach (DataGridViewRow gvrFor in this.dgvManagers.Rows) { if (gvrFor.IsNewRow) { break; } if (gvrFor.Cells["SalaryType"].Value == DBNull.Value || gvrFor.Cells["SalaryPercent"].Value == DBNull.Value) { this.dgvManagers.Rows[gvrFor.Index].Selected = true; return false; } } return true; } /// /// 保存时单元格必输项不能为空 /// private int Conservation() { int isConservation = Constant.INT_IS_ZERO; DataTable datatManagers = (DataTable)this.dgvManagers.DataSource; foreach (DataRow drproductionData in datatManagers.Rows) { if (drproductionData.RowState == DataRowState.Added || drproductionData.RowState == DataRowState.Modified) { if (drproductionData["SalaryType"].ToString() == "") { isConservation = Constant.INT_IS_ONE; break; } if (drproductionData["SalaryPercent"].ToString() == "") { isConservation = Constant.INT_IS_TWO; break; } } } return isConservation; } #endregion } }