/******************************************************************************* * Copyright(c) 2014 DongkeSoft All rights reserved. / Confidential * 类的信息: * 1.程序名称:F_PM_1602.cs * 2.功能描述:新增/编辑半检数据 * 编辑履历: * 作者 日期 版本 修改内容 * 王鑫 2014/12/4 1.00 新建 *******************************************************************************/ using System; using System.Collections.Generic; using System.Data; 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.WCF.DataModels; using Dongke.IBOSS.PRD.WCF.Proxys; using Dongke.IBOSS.PRD.WCF.Proxys.PMModuleService; using Dongke.IBOSS.PRD.WCF.Proxys.SystemModuleService; namespace Dongke.IBOSS.PRD.Client.PMModule { /// /// 新增/编辑半检数据 /// public partial class F_PM_1602 : FormBase { #region 成员变量 // 半检数据ID int _semiTestID = -1; // 过滤数 用来过滤产品对应的缺陷 int _filterCount = 0; // 当前过滤数 int _currentfilterCount = 0; // 默认检验明细数据源 private DataSet _dsSemiTestDetail = null; // 默认缺陷明细数据源 private DataSet _dsSemiTestDefecDetail = null; // 临时表名 private string _TableName = "Temp"; // 时间戳 private DateTime _OPTimeStamp; // 操作工号权限 private string _userPurviews = ""; // 编辑行 int editRow = 0; #endregion #region 属性 /// /// 默认检验明细数据源 /// public DataSet DSTableSemiTestDetail { set { _dsSemiTestDetail = value; } get { if (_dsSemiTestDetail == null) { _dsSemiTestDetail = new DataSet(); return _dsSemiTestDetail; } else { return _dsSemiTestDetail; } } } /// /// 默认缺陷明细数据源 /// public DataSet DSTableSemiTestDefectDetail { set { _dsSemiTestDefecDetail = value; } get { if (_dsSemiTestDefecDetail == null) { _dsSemiTestDefecDetail = new DataSet(); return _dsSemiTestDefecDetail; } else { return _dsSemiTestDefecDetail; } } } #endregion #region 构造函数 public F_PM_1602() { InitializeComponent(); this.btnSave.Text = ButtonText.BTN_SAVE; this.btnCancel.Text = ButtonText.BTN_CANCEL; this.Text = FormTitles.F_PM_1602_ADD; } public F_PM_1602(int semiTestID) { InitializeComponent(); this._semiTestID = semiTestID; this.btnSave.Text = ButtonText.BTN_SAVE; this.btnCancel.Text = ButtonText.BTN_CANCEL; this.Text = FormTitles.F_PM_1602_EDIT; } #endregion #region 事件 // 页面窗体加载事件 private void F_PM_1602_Load(object sender, EventArgs e) { try { this.dgvSemiTestDetail.IsSetInputColumnsColor = true; this.dgvDefectDetail.IsSetInputColumnsColor = true; // 加载权限 FormPermissionManager.FormPermissionControl(this.Name, this, Dongke.IBOSS.PRD.Client.DataModels.LogInUserInfo.CurrentUser.CurrentUserEntity.UserRightData, Dongke.IBOSS.PRD.Client.DataModels.LogInUserInfo.CurrentUser.CurrentUserEntity.FunctionData); this.dgvSemiTestDetail.AutoGenerateColumns = false; //半检明细 this.dgvDefectDetail.AutoGenerateColumns = false; //缺陷明细 this.dgvSemiTestDetail.SelectionMode = DataGridViewSelectionMode.RowHeaderSelect; this.dgvDefectDetail.SelectionMode = DataGridViewSelectionMode.RowHeaderSelect; if (DSTableSemiTestDetail.Tables.IndexOf(_TableName + _filterCount) == -Constant.INT_IS_ONE) { DataTable dtSemiTestDetail = new DataTable(_TableName + _filterCount); dtSemiTestDetail.Columns.Add("GroutingUserCode"); dtSemiTestDetail.Columns.Add("GroutingUserID", typeof(decimal)); dtSemiTestDetail.Columns.Add("GoodsID", typeof(decimal)); dtSemiTestDetail.Columns.Add("GoodsCode"); dtSemiTestDetail.Columns.Add("GoodsName"); dtSemiTestDetail.Columns.Add("GoodsSpecification"); dtSemiTestDetail.Columns.Add("GoodsModel"); dtSemiTestDetail.Columns.Add("GoodsTypeName"); dtSemiTestDetail.Columns.Add("TestNum"); dtSemiTestDetail.Columns.Add("ScrapNum"); dtSemiTestDetail.Columns.Add("ScrapReason"); dtSemiTestDetail.Columns.Add("Feedback"); dtSemiTestDetail.Columns.Add("FilterCount"); DSTableSemiTestDetail.Tables.Add(dtSemiTestDetail); } if (DSTableSemiTestDefectDetail.Tables.IndexOf(_TableName + _filterCount) == -Constant.INT_IS_ONE) { DataTable dtSemiTestDefectDetail = new DataTable(_TableName + _filterCount); dtSemiTestDefectDetail.Columns.Add("DefectID", typeof(decimal)); dtSemiTestDefectDetail.Columns.Add("DefectPositionID", typeof(decimal)); dtSemiTestDefectDetail.Columns.Add("DefectNum"); dtSemiTestDefectDetail.Columns.Add("FilterCount"); DSTableSemiTestDefectDetail.Tables.Add(dtSemiTestDefectDetail); } this.dgvSemiTestDetail.DataSource = DSTableSemiTestDetail.Tables[_TableName + _filterCount]; this.dgvDefectDetail.DataSource = DSTableSemiTestDefectDetail.Tables[_TableName + _filterCount]; //设置操作工号数据源 getPurview();// // 获取检验工号数据源 SUserEntity userEntity = new SUserEntity(); userEntity.IsWorker = 1;//生产工号 DataSet dsUser = (DataSet)DoAsync(new BaseAsyncMethod(() => { return SystemModuleProxy.Service.SearchUserData(userEntity); })); if (dsUser != null && dsUser.Tables[0].Rows.Count > Constant.INT_IS_ZERO) { //this.dropUserID.DisplayMember = "UserCode"; //this.dropUserID.ValueMember = "UserID"; //this.dropUserID.DataSource = dsUser.Tables[0]; //this.GroutingUserID.DisplayMember = "UserCode"; //this.GroutingUserID.ValueMember = "UserID"; //this.GroutingUserID.DataSource = dsUser.Tables[0]; if (this._userPurviews != string.Empty) { this.dropUserID.DisplayMember = "UserCode"; this.dropUserID.ValueMember = "UserID"; DataView dvUser = dsUser.Tables[0].DefaultView; dvUser.RowFilter = "UserID in(" + this._userPurviews + ")"; DataTable dt = dvUser.ToTable(); DataRow dr = dt.NewRow(); dr["UserID"] = -1; dr["UserCode"] = ""; dt.Rows.InsertAt(dr, 0); this.dropUserID.DataSource = dt; // 设置成检工号数据源 this.GroutingUserID.DisplayMember = "UserCode"; this.GroutingUserID.ValueMember = "UserID"; this.GroutingUserID.DataSource = dt; } } // 获取产品档案 GoodsEntity goodsEntity = new GoodsEntity(); goodsEntity.ValueFlag = 1;//有效标记 DataSet dsGoods = (DataSet)DoAsync(new BaseAsyncMethod(() => { return SystemModuleProxy.Service.SerachGoods(goodsEntity); })); if (dsGoods != null && dsGoods.Tables[0].Rows.Count > Constant.INT_IS_ZERO) { // 设置产品数据源 this.GoodsID.DisplayMember = "GoodsCode"; this.GoodsID.ValueMember = "GoodsID"; this.GoodsID.DataSource = dsGoods.Tables[0]; } // 获取缺陷 DataSet dsDefect = (DataSet)DoAsync(new BaseAsyncMethod(() => { return SystemModuleProxy.Service.GetDictionaryData(0, "TPC005"); })); if (dsDefect != null && dsDefect.Tables[0].Rows.Count > Constant.INT_IS_ZERO) { this.DefectID.DisplayMember = "DictionaryValue"; this.DefectID.ValueMember = "DictionaryID"; this.DefectID.DataSource = dsDefect.Tables[0]; } // 获取缺陷位置 DataSet dsDefectPosition = (DataSet)DoAsync(new BaseAsyncMethod(() => { return SystemModuleProxy.Service.GetDictionaryData(0, "TPC006"); })); if (dsDefectPosition != null && dsDefectPosition.Tables[0].Rows.Count > Constant.INT_IS_ZERO) { this.DefectPositionID.DisplayMember = "DictionaryValue"; this.DefectPositionID.ValueMember = "DictionaryID"; this.DefectPositionID.DataSource = dsDefectPosition.Tables[0]; } // 获取半检类别 DataSet dsType = (DataSet)DoAsync(new BaseAsyncMethod(() => { return SystemModuleProxy.Service.GetDictionaryData(0, "TPC007"); })); if (dsType != null && dsType.Tables[0].Rows.Count > Constant.INT_IS_ZERO) { this.dropSemiTestType.DisplayMember = "DictionaryValue"; this.dropSemiTestType.ValueMember = "DictionaryID"; this.dropSemiTestType.DataSource = dsType.Tables[0]; } this.dtpDate.Value = DateTime.Now; //设置检验日期,默认当天 if (this._semiTestID > Constant.INT_IS_ZERO) // 编辑数据 { SetEditDataSource(); } } catch (Exception ex) { // 对异常进行共通处理 ExceptionManager.HandleEventException(this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex); } } //添加行事件 private void dgvSemiTestDetail_UserAddedRow(object sender, DataGridViewRowEventArgs e) { string UpFilterCount = ""; if (this.dgvSemiTestDetail.Rows[e.Row.Index - 1].Cells["FilterCount"].Value != null && this.dgvSemiTestDetail.Rows[e.Row.Index - 1].Cells["FilterCount"].Value.ToString() != string.Empty) { UpFilterCount = this.dgvSemiTestDetail.Rows[e.Row.Index - 1].Cells["FilterCount"].Value.ToString(); } if (UpFilterCount == string.Empty) { this.dgvSemiTestDetail.Rows[e.Row.Index - 1].Cells["FilterCount"].Value = this._filterCount.ToString(); } this._filterCount = this._filterCount + 1; this.dgvSemiTestDetail.Rows[e.Row.Index].Cells["FilterCount"].Value = this._filterCount.ToString(); this._currentfilterCount = this._filterCount; // 添加时把对应只读去掉,防止上来先选择缺陷 this.dgvDefectDetail.ReadOnly = false; dgvSemiTestDetail_SelectionChanged(sender, e); } /// /// 保存按钮事件 /// /// /// private void btnSave_Click(object sender, EventArgs e) { try { if (this.dropUserID.SelectedValue == null || this.dropUserID.SelectedValue.ToString() == "-1") { MessageBox.Show(string.Format(Messages.MSG_CMN_W005, "检验工号"), this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (this.dropSemiTestType.SelectedValue == null || this.dropSemiTestType.SelectedValue.ToString() == string.Empty) { MessageBox.Show(string.Format(Messages.MSG_CMN_W005, "半检类别"), this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (this._semiTestID > Constant.INT_IS_ZERO) { int ValidateRow = (int)DoAsync(new BaseAsyncMethod(() => { return PMModuleProxy.Service.ValidateOPTimeStamp(this._semiTestID, _OPTimeStamp); })); if (ValidateRow == Constant.INT_IS_NEGATIE_ONE) { // 提示信息 MessageBox.Show(string.Format(Messages.MSG_CMN_W012, "编辑半检", "保存"), this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); return; } } SemiTestEntity[] semiTestEntitys = new SemiTestEntity[1]; SemiTestEntity semiTestEntity = new SemiTestEntity(); semiTestEntity.TestUserID = Convert.ToInt32(this.dropUserID.SelectedValue); semiTestEntity.TestDate = this.dtpDate.Value; semiTestEntity.Remarks = this.txtRemarks.Text.Trim(); semiTestEntity.AuditStatus = 0; semiTestEntity.ValueFlag = 1; semiTestEntity.SemiTestType = Convert.ToInt32(this.dropSemiTestType.SelectedValue); semiTestEntitys[0] = semiTestEntity; bool isError = false; // 是否存在错误 int ErrorType = -1; // 默认-1 明细1 缺陷2 int CurrentRowIndex = -1; //错误行号 int DetailCurrentRowIndex = -1; //错误行号 int FilterCount = -1; List semiTestDetailEntitys = new List(); SemiTestDetailEntity semiTestDetailEntity = null; for (int i = 0; i < this.DSTableSemiTestDetail.Tables[0].Rows.Count; i++) //半检明细表 { semiTestDetailEntity = new SemiTestDetailEntity(); if (this.DSTableSemiTestDetail.Tables[0].Rows[i]["GroutingUserID"].ToString() == string.Empty) { isError = true;//有错误 未选择成型工号 ErrorType = 1; //明细 CurrentRowIndex = i; break; } semiTestDetailEntity.GroutingUserID = Convert.ToInt32(this.DSTableSemiTestDetail.Tables[0].Rows[i]["GroutingUserID"]); if (this.DSTableSemiTestDetail.Tables[0].Rows[i]["GoodsCode"].ToString() == string.Empty) { isError = true;//有错误 未选择产品ID ErrorType = 1; //明细 CurrentRowIndex = i; break; } semiTestDetailEntity.GoodsID = Convert.ToInt32(this.DSTableSemiTestDetail.Tables[0].Rows[i]["GoodsID"]); semiTestDetailEntity.GoodsCode = this.DSTableSemiTestDetail.Tables[0].Rows[i]["GoodsCode"].ToString(); semiTestDetailEntity.GoodsName = this.DSTableSemiTestDetail.Tables[0].Rows[i]["GoodsName"].ToString(); semiTestDetailEntity.TestNum = this.DSTableSemiTestDetail.Tables[0].Rows[i]["TestNum"].ToString() == string.Empty ? 0 : Convert.ToInt32(this.DSTableSemiTestDetail.Tables[0].Rows[i]["TestNum"]); semiTestDetailEntity.ScrapNum = this.DSTableSemiTestDetail.Tables[0].Rows[i]["ScrapNum"].ToString() == string.Empty ? 0 : Convert.ToInt32(this.DSTableSemiTestDetail.Tables[0].Rows[i]["ScrapNum"]); semiTestDetailEntity.ScrapReason = this.DSTableSemiTestDetail.Tables[0].Rows[i]["ScrapReason"].ToString(); semiTestDetailEntity.Feedback = this.DSTableSemiTestDetail.Tables[0].Rows[i]["Feedback"].ToString(); semiTestDetailEntity.ValueFlag = 1; // 遍历产品对应的缺陷 List semiTestDefectEntitys = new List(); if (this.DSTableSemiTestDefectDetail.Tables.Contains(string.Format("{0}{1}", this._TableName, this.DSTableSemiTestDetail.Tables[0].Rows[i]["FilterCount"].ToString()))) { SemiTestDefectEntity semiTestDefectEntity = null; DataTable dtTemp = this.DSTableSemiTestDefectDetail.Tables[string.Format("{0}{1}", this._TableName, this.DSTableSemiTestDetail.Tables[0].Rows[i]["FilterCount"].ToString())]; int Row = 0; foreach (DataRow drStaff in dtTemp.Rows) { semiTestDefectEntity = new SemiTestDefectEntity(); if (drStaff["DefectID"] == null || drStaff["DefectID"].ToString() == string.Empty) { isError = true;//有错误 缺陷ID ErrorType = 2; //缺陷明细 CurrentRowIndex = Row; DetailCurrentRowIndex = i; FilterCount = Convert.ToInt32(drStaff["FilterCount"].ToString()); break; } semiTestDefectEntity.DefectID = Convert.ToInt32(drStaff["DefectID"]); if (drStaff["DefectPositionID"] == null || drStaff["DefectPositionID"].ToString() == string.Empty) { isError = true;//有错误 缺陷位置ID ErrorType = 2; //缺陷明细 CurrentRowIndex = Row; DetailCurrentRowIndex = i; FilterCount = Convert.ToInt32(drStaff["FilterCount"].ToString()); break; } semiTestDefectEntity.DefectPositionID = Convert.ToInt32(drStaff["DefectPositionID"]); semiTestDefectEntity.DefectNum = drStaff["DefectNum"].ToString() == string.Empty ? 0 : Convert.ToInt32(drStaff["DefectNum"]); semiTestDefectEntity.ValueFlag = 1; semiTestDefectEntitys.Add(semiTestDefectEntity); Row++; } //semiTestDetailEntity.SemiTestDefects = semiTestDefectEntitys.ToArray(); semiTestDetailEntity.SemiTestDefects = semiTestDefectEntitys; } semiTestDetailEntitys.Add(semiTestDetailEntity); } //semiTestEntitys[0].SemiTestDetails = semiTestDetailEntitys.ToArray(); semiTestEntitys[0].SemiTestDetails = semiTestDetailEntitys; if (isError) { if (ErrorType == Constant.INT_IS_ONE) { this.dgvSemiTestDetail.CurrentCell = null; this.dgvSemiTestDetail.Rows[CurrentRowIndex].Selected = true; // 提示信息 MessageBox.Show("半检明细添加不完整", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } else if (ErrorType == Constant.INT_IS_TWO) { this.dgvSemiTestDetail.CurrentCell = null; this.dgvSemiTestDetail.Rows[DetailCurrentRowIndex].Selected = true; this.dgvDefectDetail.DataSource = this.DSTableSemiTestDefectDetail.Tables[string.Format("{0}{1}", this._TableName, FilterCount)]; this.dgvDefectDetail.CurrentCell = null; this.dgvDefectDetail.Rows[CurrentRowIndex].Selected = true; this.dgvDefectDetail.ReadOnly = false; // 提示信息 MessageBox.Show("半检缺陷明细添加不完整", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } } // 最外层For循环结束 if (semiTestEntitys.Length > Constant.INT_IS_ZERO && this.DSTableSemiTestDetail.Tables[0].Rows.Count > Constant.INT_IS_ZERO) { string returnValue = (string)DoAsync(new BaseAsyncMethod(() => { return PMModuleProxy.Service.AddSemiTest(semiTestEntitys); })); if (string.IsNullOrEmpty(returnValue))//成功 { //保存成功后,并且为编辑时候,把上次编辑的数据禁用 if (this._semiTestID > Constant.INT_IS_ZERO) { int deleteRow = (int)DoAsync(new BaseAsyncMethod(() => { return PMModuleProxy.Service.DeleteSemiTestDataByID(this._semiTestID); })); } // 提示信息 MessageBox.Show(string.Format(Messages.MSG_CMN_I001, "新建" + this.Text, "保存"), this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); this.DialogResult = DialogResult.OK; // 保存成功后,清空相应数据源 this.dtpDate.Value = DateTime.Now; this.txtRemarks.Text = ""; this.DSTableSemiTestDetail.Tables[0].Rows.Clear(); this.DSTableSemiTestDetail.Tables[0].AcceptChanges(); this.DSTableSemiTestDefectDetail.Tables.Clear(); this.dgvSemiTestDetail.DataSource = this.DSTableSemiTestDetail.Tables[0]; this.dgvDefectDetail.DataSource = null; } else { // 提示信息 MessageBox.Show(returnValue, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning); } } } catch (Exception ex) { // 对异常进行共通处理 ExceptionManager.HandleEventException(this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex); } } /// /// 单元格值改变后 /// /// /// private void dgvSemiTestDetail_CellValueChanged(object sender, DataGridViewCellEventArgs e) { if (e.ColumnIndex == Constant.INT_IS_TWO && e.RowIndex != -Constant.INT_IS_ONE) { // 当前过滤数 if (this.dgvSemiTestDetail.Rows[this.dgvSemiTestDetail.CurrentCell.RowIndex].Cells["FilterCount"].Value.ToString() != string.Empty) { this._currentfilterCount = Convert.ToInt32(this.dgvSemiTestDetail.Rows[this.dgvSemiTestDetail.CurrentCell.RowIndex].Cells["FilterCount"].Value); } if (this.dgvSemiTestDetail.Rows[this.dgvSemiTestDetail.CurrentCell.RowIndex].Cells["GoodsID"].Value.ToString() != string.Empty) { DataTable dtGoods = this.GoodsID.DataSource as DataTable; if (dtGoods != null && dtGoods.Rows.Count > Constant.INT_IS_ZERO) { DataRow[] dr = dtGoods.Select("GoodsID=" + this.dgvSemiTestDetail.Rows[this.dgvSemiTestDetail.CurrentCell.RowIndex].Cells["GoodsID"].Value.ToString()); if (dr.Length > Constant.INT_IS_ZERO) { this.dgvSemiTestDetail.Rows[this.dgvSemiTestDetail.CurrentCell.RowIndex].Cells["GoodsCode"].Value = dr[0]["GoodsCode"]; this.dgvSemiTestDetail.Rows[this.dgvSemiTestDetail.CurrentCell.RowIndex].Cells["GoodsName"].Value = dr[0]["GoodsName"]; this.dgvSemiTestDetail.Rows[this.dgvSemiTestDetail.CurrentCell.RowIndex].Cells["GoodsSpecification"].Value = dr[0]["GoodsSpecification"]; this.dgvSemiTestDetail.Rows[this.dgvSemiTestDetail.CurrentCell.RowIndex].Cells["GoodsModel"].Value = dr[0]["GoodsModel"]; this.dgvSemiTestDetail.Rows[this.dgvSemiTestDetail.CurrentCell.RowIndex].Cells["GoodsTypeName"].Value = dr[0]["GoodsTypeName"]; } } } } if (e.RowIndex != -Constant.INT_IS_ONE) { // 当前过滤数 if (this.dgvSemiTestDetail.Rows[this.dgvSemiTestDetail.CurrentCell.RowIndex].Cells["FilterCount"].Value != null) { if (this.dgvSemiTestDetail.Rows[this.dgvSemiTestDetail.CurrentCell.RowIndex].Cells["FilterCount"].Value.ToString() != string.Empty) { this._currentfilterCount = Convert.ToInt32(this.dgvSemiTestDetail.Rows[this.dgvSemiTestDetail.CurrentCell.RowIndex].Cells["FilterCount"].Value); } if (DSTableSemiTestDefectDetail.Tables.IndexOf(_TableName + this._currentfilterCount) == -Constant.INT_IS_ONE) { DataTable dtSemiTestDefectDetail = new DataTable(_TableName + this._currentfilterCount); dtSemiTestDefectDetail.Columns.Add("DefectID", typeof(decimal)); dtSemiTestDefectDetail.Columns.Add("DefectPositionID", typeof(decimal)); dtSemiTestDefectDetail.Columns.Add("DefectNum"); dtSemiTestDefectDetail.Columns.Add("FilterCount"); DSTableSemiTestDefectDetail.Tables.Add(dtSemiTestDefectDetail); } dgvDefectDetail.DataSource = DSTableSemiTestDefectDetail.Tables[_TableName + this._currentfilterCount]; } } } /// /// 半检明细选定项改变事件 /// /// /// private void dgvSemiTestDetail_SelectionChanged(object sender, EventArgs e) { try { if (this.dgvSemiTestDetail.CurrentCell != null) { // 当前过滤数 if (this.dgvSemiTestDetail.Rows[this.dgvSemiTestDetail.CurrentCell.RowIndex].Cells["FilterCount"].Value != null && this.dgvSemiTestDetail.Rows[this.dgvSemiTestDetail.CurrentCell.RowIndex].Cells["FilterCount"].Value.ToString() != string.Empty) { dgvDefectDetail.ReadOnly = false; this._currentfilterCount = Convert.ToInt32(this.dgvSemiTestDetail.Rows[this.dgvSemiTestDetail.CurrentCell.RowIndex].Cells["FilterCount"].Value); dgvDefectDetail.DataSource = DSTableSemiTestDefectDetail.Tables[_TableName + this._currentfilterCount]; } else { dgvDefectDetail.ReadOnly = true; } } } catch (Exception ex) { // 对异常进行共通处理 ExceptionManager.HandleEventException(this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex); } } /// /// 缺陷添加行事件 /// /// /// private void dgvDefectDetail_UserAddedRow(object sender, DataGridViewRowEventArgs e) { int row = 0; if (e.Row.Index != -Constant.INT_IS_ONE) { this.dgvDefectDetail.Rows[e.Row.Index].Selected = true; row = this.dgvDefectDetail.CurrentCell.RowIndex; } else { this.dgvDefectDetail.Rows[0].Selected = true; } string UpFilterCount = ""; if (this.dgvDefectDetail.Rows[row].Cells["DefectFilterCount"].Value != null) { UpFilterCount = this.dgvDefectDetail.Rows[row].Cells["DefectFilterCount"].Value.ToString(); } if (dgvSemiTestDetail.CurrentCell != null) { this._currentfilterCount = Convert.ToInt32(this.dgvSemiTestDetail.Rows[this.dgvSemiTestDetail.CurrentCell.RowIndex].Cells["FilterCount"].Value); } int temp = this._currentfilterCount; if (this.dgvSemiTestDetail.CurrentCell != null) { // 当前过滤数 if (this.dgvSemiTestDetail.Rows[this.dgvSemiTestDetail.CurrentCell.RowIndex].Cells["FilterCount"].Value != null && this.dgvSemiTestDetail.Rows[this.dgvSemiTestDetail.CurrentCell.RowIndex].Cells["FilterCount"].Value.ToString() != string.Empty) { temp = Convert.ToInt32(this.dgvSemiTestDetail.Rows[this.dgvSemiTestDetail.CurrentCell.RowIndex].Cells["FilterCount"].Value); } } if (DSTableSemiTestDefectDetail.Tables.IndexOf(_TableName + temp) == -Constant.INT_IS_ONE) { DataTable dtSemiTestDefectDetail = new DataTable(_TableName + temp); dtSemiTestDefectDetail.Columns.Add("DefectID", typeof(decimal)); dtSemiTestDefectDetail.Columns.Add("DefectPositionID", typeof(decimal)); dtSemiTestDefectDetail.Columns.Add("DefectNum"); dtSemiTestDefectDetail.Columns.Add("FilterCount"); DSTableSemiTestDefectDetail.Tables.Add(dtSemiTestDefectDetail); } if (UpFilterCount == string.Empty) { this.dgvDefectDetail.Rows[this.dgvDefectDetail.CurrentCell.RowIndex].Cells["DefectFilterCount"].Value = temp; } this.dgvDefectDetail.Rows[this.dgvDefectDetail.CurrentCell.RowIndex].Cells["DefectFilterCount"].Value = temp; } /// /// 当前是否有未提交数据事件 /// /// /// private void dgvDefectDetail_CurrentCellDirtyStateChanged(object sender, EventArgs e) { try { if (this.dgvDefectDetail.CurrentCell != null) { // 记录最后选择行 if (this.dgvDefectDetail.CurrentCell.ColumnIndex == Constant.INT_IS_ZERO && this.dgvDefectDetail.CurrentCell.RowIndex != -Constant.INT_IS_ONE) { if (dgvDefectDetail.IsCurrentCellDirty) { dgvDefectDetail.CommitEdit(DataGridViewDataErrorContexts.Commit); } } } } catch (Exception ex) { // 对异常进行共通处理 ExceptionManager.HandleEventException(this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex); } } /// /// 单元格选定项改变事件 /// /// /// private void dgvDefectDetail_SelectionChanged(object sender, EventArgs e) { try { if (this.dgvDefectDetail.CurrentCell != null) { if (dgvSemiTestDetail.CurrentCell != null) { this._currentfilterCount = Convert.ToInt32(this.dgvSemiTestDetail.Rows[this.dgvSemiTestDetail.CurrentCell.RowIndex].Cells["FilterCount"].Value); this.dgvDefectDetail.ReadOnly = false; } else { dgvDefectDetail.ReadOnly = true; } } } catch (Exception ex) { // 对异常进行共通处理 ExceptionManager.HandleEventException(this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex); } } /// /// 单元格状态改变事件 /// /// /// private void dgvSemiTestDetail_CurrentCellDirtyStateChanged(object sender, EventArgs e) { try { //if (this.dgvSemiTestDetail.CurrentCell != null) //{ // // 记录最后选择行 // if (this.dgvSemiTestDetail.CurrentCell.ColumnIndex == Constant.INT_IS_ONE // && this.dgvSemiTestDetail.CurrentCell.RowIndex != -Constant.INT_IS_ONE) // { // if (dgvSemiTestDetail.IsCurrentCellDirty) // { // editRow = this.dgvSemiTestDetail.CurrentCell.RowIndex; // dgvSemiTestDetail.CommitEdit(DataGridViewDataErrorContexts.Commit); // } // } //} } catch (Exception ex) { // 对异常进行共通处理 ExceptionManager.HandleEventException(this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex); } } /// /// 单元格验证事件 /// /// /// private void dgvSemiTestDetail_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) { try { if (e.ColumnIndex == 9 && e.RowIndex != -Constant.INT_IS_ONE) { DataGridViewRow rowItem = dgvSemiTestDetail.Rows[e.RowIndex]; DataGridViewColumn columnItem = dgvSemiTestDetail.Columns[e.ColumnIndex]; object columnvalue = rowItem.Cells[columnItem.Name].EditedFormattedValue; int ScrapNum = 0; if (columnvalue.ToString() != string.Empty) { ScrapNum = Convert.ToInt32(columnvalue.ToString()); } else { this.dgvSemiTestDetail.Rows[this.dgvSemiTestDetail.CurrentCell.RowIndex].Cells["ScrapNum"].Value = 0; } int TestNum = 0; if (this.dgvSemiTestDetail.Rows[this.dgvSemiTestDetail.CurrentCell.RowIndex].Cells["TestNum"].Value.ToString() != string.Empty) { TestNum = Convert.ToInt32(this.dgvSemiTestDetail.Rows[this.dgvSemiTestDetail.CurrentCell.RowIndex].Cells["TestNum"].Value); } if (ScrapNum > TestNum) { //提示信息 MessageBox.Show(string.Format("报废数不能大于总数"), this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); e.Cancel = true; return; } } if (e.ColumnIndex == 8 && e.RowIndex != -Constant.INT_IS_ONE) { DataGridViewRow rowItem = dgvSemiTestDetail.Rows[e.RowIndex]; DataGridViewColumn columnItem = dgvSemiTestDetail.Columns[e.ColumnIndex]; object columnvalue = rowItem.Cells[columnItem.Name].EditedFormattedValue; int TestNum = 0; int ScrapNum = 0; if (columnvalue.ToString() != string.Empty) { TestNum = Convert.ToInt32(columnvalue.ToString()); } if (this.dgvSemiTestDetail.Rows[this.dgvSemiTestDetail.CurrentCell.RowIndex].Cells["ScrapNum"].Value.ToString() != string.Empty) { ScrapNum = Convert.ToInt32(this.dgvSemiTestDetail.Rows[this.dgvSemiTestDetail.CurrentCell.RowIndex].Cells["ScrapNum"].Value); } if (ScrapNum > TestNum) { //提示信息 MessageBox.Show(string.Format("总数不能小于报废数"), this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); e.Cancel = true; return; } } } catch (Exception ex) { // 对异常进行共通处理 ExceptionManager.HandleEventException(this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex); } } #endregion #region 私有方法 /// /// 编辑后设置数据源 /// private void SetEditDataSource() { try { DataSet dsSemiTest = (DataSet)DoAsync(new BaseAsyncMethod(() => { return PMModuleProxy.Service.GetSemiTestByID(this._semiTestID); })); if (dsSemiTest != null && dsSemiTest.Tables[0].Rows.Count > Constant.INT_IS_ZERO) { this.dropUserID.SelectedValue = dsSemiTest.Tables[0].Rows[0]["UserID"].ToString(); this.dtpDate.Value = Convert.ToDateTime(dsSemiTest.Tables[0].Rows[0]["TestDate"]); this.txtRemarks.Text = dsSemiTest.Tables[0].Rows[0]["Remarks"].ToString(); this._OPTimeStamp = Convert.ToDateTime(dsSemiTest.Tables[0].Rows[0]["OPTimeStamp"]); if (dsSemiTest.Tables[0].Rows[0]["UserID"].ToString() != string.Empty) { this.dropSemiTestType.SelectedValue = dsSemiTest.Tables[0].Rows[0]["SemiTestType"].ToString(); } // 审核通过,只能查看,禁用控件 if (Convert.ToInt32(dsSemiTest.Tables[0].Rows[0]["AuditStatus"]) == Constant.INT_IS_ONE) { this.dropUserID.Enabled = false; this.dtpDate.Enabled = false; this.dgvSemiTestDetail.ReadOnly = true; this.dgvDefectDetail.ReadOnly = true; this.btnSave.Enabled = false; this.dropSemiTestType.Enabled = false; this.txtRemarks.Enabled = false; } } if (dsSemiTest != null && dsSemiTest.Tables[1].Rows.Count > Constant.INT_IS_ZERO) { for (int i = 0; i < dsSemiTest.Tables[1].Rows.Count; i++) { DataRow dr = DSTableSemiTestDetail.Tables[_TableName + "0"].NewRow(); dr["GroutingUserCode"] = string.Empty; dr["GroutingUserID"] = dsSemiTest.Tables[1].Rows[i]["GroutingUserID"]; dr["GoodsID"] = dsSemiTest.Tables[1].Rows[i]["GoodsID"]; dr["GoodsCode"] = dsSemiTest.Tables[1].Rows[i]["GoodsCode"]; dr["GoodsName"] = dsSemiTest.Tables[1].Rows[i]["GoodsName"]; dr["GoodsSpecification"] = dsSemiTest.Tables[1].Rows[i]["GoodsSpecification"]; dr["GoodsModel"] = dsSemiTest.Tables[1].Rows[i]["GoodsModel"]; dr["GoodsTypeName"] = dsSemiTest.Tables[1].Rows[i]["GoodsTypeName"]; dr["TestNum"] = dsSemiTest.Tables[1].Rows[i]["TestNum"]; dr["ScrapNum"] = dsSemiTest.Tables[1].Rows[i]["ScrapNum"]; dr["ScrapReason"] = dsSemiTest.Tables[1].Rows[i]["ScrapReason"]; dr["Feedback"] = dsSemiTest.Tables[1].Rows[i]["Feedback"]; dr["FilterCount"] = i; DSTableSemiTestDetail.Tables[_TableName + "0"].Rows.Add(dr); // 产品对应的缺陷 DataRow[] drRow = dsSemiTest.Tables[2].Select("SemiTestDetailID=" + dsSemiTest.Tables[1].Rows[i]["SemiTestDetailID"]); if (drRow.Length > Constant.INT_IS_ZERO) { foreach (DataRow r in drRow) { if (DSTableSemiTestDefectDetail.Tables.IndexOf(_TableName + i) == -Constant.INT_IS_ONE) { DataTable dtSemiTestDefectDetail = new DataTable(_TableName + i); dtSemiTestDefectDetail.Columns.Add("DefectID", typeof(decimal)); dtSemiTestDefectDetail.Columns.Add("DefectPositionID", typeof(decimal)); dtSemiTestDefectDetail.Columns.Add("DefectNum"); dtSemiTestDefectDetail.Columns.Add("FilterCount"); DSTableSemiTestDefectDetail.Tables.Add(dtSemiTestDefectDetail); } DataRow drDefect = DSTableSemiTestDefectDetail.Tables[_TableName + i].NewRow(); drDefect["DefectID"] = r["DefectID"]; drDefect["DefectPositionID"] = r["DefectPositionID"]; drDefect["DefectNum"] = r["DefectNum"]; drDefect["FilterCount"] = i; DSTableSemiTestDefectDetail.Tables[_TableName + i].Rows.Add(drDefect); } } else { if (DSTableSemiTestDefectDetail.Tables.IndexOf(_TableName + i) == -Constant.INT_IS_ONE) { DataTable dtSemiTestDefectDetail = new DataTable(_TableName + i); dtSemiTestDefectDetail.Columns.Add("DefectID", typeof(decimal)); dtSemiTestDefectDetail.Columns.Add("DefectPositionID", typeof(decimal)); dtSemiTestDefectDetail.Columns.Add("DefectNum"); dtSemiTestDefectDetail.Columns.Add("FilterCount"); DSTableSemiTestDefectDetail.Tables.Add(dtSemiTestDefectDetail); } } this._filterCount = this._filterCount + 1; } } } catch (Exception ex) { throw ex; } } /// /// 获取当前工号权限 /// protected void getPurview() { try { StringBuilder sbUserPurview = new StringBuilder(); //获取用户权限集 DataSet dsUserPurview = (DataSet)DoAsync(new BaseAsyncMethod(() => { return SystemModuleProxy.Service.GetUserPurview(4, Dongke.IBOSS.PRD.Client.DataModels.LogInUserInfo.CurrentUser.UserID); })); //拼接字符串 if (dsUserPurview != null) { foreach (DataRow dr in dsUserPurview.Tables[Constant.INT_IS_ZERO].Rows) { sbUserPurview.Append(dr[Constant.INT_IS_ZERO].ToString() + ","); } if (sbUserPurview.Length != Constant.INT_IS_ZERO) { this._userPurviews = sbUserPurview.ToString().Substring(Constant.INT_IS_ZERO, sbUserPurview.Length - 1); } } } catch (Exception ex) { throw ex; } } #endregion } }