/******************************************************************************* * 类的信息: * 1.程序名称:F_PM_1107.cs * 2.功能描述:批量报废信息窗体 * 编辑履历: * 作者 日期 * 李士越 2024/05/29 *******************************************************************************/ using System; using System.Collections.Generic; using System.Data; using System.Windows.Forms; using Dongke.IBOSS.PRD.Basics.BaseResources; using Dongke.IBOSS.PRD.WCF.Proxys; using Dongke.IBOSS.PRD.WCF.Proxys.PMModuleService; using Dongke.IBOSS.PRD.Client.CommonModule; using Dongke.IBOSS.PRD.Basics.BaseControls; using Dongke.IBOSS.PRD.Basics.Library; using Dongke.IBOSS.PRD.WCF.DataModels; using Dongke.IBOSS.PRD.Client.Controls; namespace Dongke.IBOSS.PRD.Client.PMModule { /// /// 批量报废信息窗体 /// public partial class F_PM_1107 : DKFormBase { #region 成员变量 //窗体模式ID private Constant.FormMode _formType; //修改产品报损信息ID private string _barCode; //页面报损工序的数据源 private List _productionDataList = new List(); //该产品在产信息实体 private InProductionEntity _isScrapProductEntity; //用户选择报损工序实体 private ProductionDataEntity _scrapProductResponProcedure; //当前责任人集合 private List _scrapResponsibleList = new List(); //修改用废弃产品实体 private ScrapProductEntity _updateEntity; //修改用废弃责任工序实体 private ResponProcedureEntity _updateProcedureEntity; //修改用责任人集合 private List _updateScrapResponsibleList; //有效条码标示 private bool _yxBarCode = false; //产品分级类别ID private int _goodsLevelTypeID = Convert.ToInt32(Constant.GoodsLevelType.Damage); //产品分级ID private int _goodsLevelId; //报损信息ID private int _editSPId; //是否允许审批 private bool _isScrap = false; //未干补 int SpecialRepairFlag = 0; //完成工序 int? _CompleteProcdureID = null; //完成工序编码 string _CompleteProcdureCode = ""; //完成工序名称 string _CompleteProcdureName = ""; // 商标ID int? _LogoID = null; //可以报损的产品条码集合 List ReportingLosses = new List(); // 可成型报损产品条码 Dictionary GroutingScrapProducts = new Dictionary(); DataRow _barCodeRow = null; #endregion #region 构造函数 /// /// 窗体构造 /// public F_PM_1107(Constant.FormMode formType, string BarCode, int EditSPId, bool isScrap) { InitializeComponent(); this._formType = formType; this._barCode = BarCode; this._editSPId = EditSPId; this._isScrap = isScrap; //if (formType == Constant.FormMode.Add) //{ this.Text = "批量报损"; //} //else //{ // this.Text = FormTitles.F_PM_1107_EDIT; //} //this.btnViewApprover.Text = ButtonText.BTN_VIEWAPPROVER; this.btnSave.Text = ButtonText.BTN_SAVE; this.btnCancel.Text = ButtonText.BTN_CLOSE; } #endregion #region 事件 /// /// 窗体加载 /// /// /// private void F_PM_1107_Load(object sender, EventArgs e) { try { //获取当前产品分级ID this._goodsLevelId = Convert.ToInt32(SystemModuleProxy.Service.GetGoodsLevelDataById(_goodsLevelTypeID, null) .Tables[0].Rows[0]["GoodsLevelID"]); DataTable dt = new DataTable(); dt.Columns.Add("DictionaryID", typeof(int)); dt.Columns.Add("DictionaryValue", typeof(string)); DataRow drbydt = dt.NewRow(); drbydt["DictionaryID"] = 119; drbydt["DictionaryValue"] = "盘点报损"; dt.Rows.Add(drbydt); this.cmbRreason.DisplayMember = "DictionaryValue"; this.cmbRreason.ValueMember = "DictionaryID"; this.cmbRreason.DataSource = dt; //绑定损坯状态 DataTable dtAuditStatus = new DataTable(); dtAuditStatus.Columns.Add("AuditStatusID"); dtAuditStatus.Columns.Add("AuditStatusValue"); DataRow dr = dtAuditStatus.NewRow(); dr = dtAuditStatus.NewRow(); dr["AuditStatusID"] = 1; dr["AuditStatusValue"] = "损坯通过"; dtAuditStatus.Rows.Add(dr); this.cmbAuditStatus.DisplayMember = "AuditStatusValue"; this.cmbAuditStatus.ValueMember = "AuditStatusID"; this.cmbAuditStatus.DataSource = dtAuditStatus; if (this._formType == Constant.FormMode.Edit) { BindEntity(); } } catch (Exception ex) { // 对异常进行共通处理 ExceptionManager.HandleEventException(this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex); } } /// /// 提交操作 /// /// /// private void btnSave_Click(object sender, EventArgs e) { try { if (this.txtBarCode.Text == string.Empty) { this.txtBarCode.Focus(); return; } //模拟回车 KeyPressEventArgs args = new KeyPressEventArgs('\r'); //条码校验防止重复报损 txtBarCode_KeyPress(sender, args); this.txtRemarks.Focus();//把光标移开,由于删除工号后,值未变 //if (ReportingLosses.Count == 0) //{ // MessageBox.Show("未有可报损条码", // this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning); //} //this.txtRemarks.Focus();//把光标移开,由于删除工号后,值未变 DataTable dt = new DataTable(); //备注 dt.Columns.Add("notes"); //产品编码 dt.Columns.Add("ProductCode"); // 成型报损 foreach (var item in GroutingScrapProducts.Keys) { DataRow dr = dt.NewRow(); dr["notes"] = saveGroutingScrapProducts(item); dr["ProductCode"] = item; dt.Rows.Add(dr); } // 产品报损 foreach (var item in ReportingLosses) { DataRow dr = dt.NewRow(); dr["notes"] = save(item); dr["ProductCode"] = item; dt.Rows.Add(dr); } this.detailsView.DataSource = dt; } catch (Exception ex) { // 对异常进行共通处理 ExceptionManager.HandleEventException(this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex); } } private string saveGroutingScrapProducts(string barcode) { try { _barCodeRow = GroutingScrapProducts[barcode]; int ResponUserID = Convert.ToInt32(_barCodeRow["GroutingUserID"]); string ResponUserCode = _barCodeRow["GroutingUserCode"] + ""; // 校验数据 DataSet dsUser = (DataSet)DoAsync(new BaseAsyncMethod(() => { return HRModuleProxy.Service.SearchHrStaffInfo(ResponUserID); })); if (dsUser != null && dsUser.Tables.Count > 0) { //DataTable returnTable = dsUser.Tables[0]; //if (!returnTable.Columns.Contains("UserSelected")) //{ // returnTable.Columns.Add("UserSelected", typeof(int)); //} //foreach (DataRow row in returnTable.Rows) //{ // row["UserSelected"] = 1; //} } else { return string.Format(Messages.W_CMN_C_003, "责任员工"); } // 给实体赋值 ClientRequestEntity cre = new ClientRequestEntity(); cre.NameSpace = "GroutingScrapProduct"; cre.Name = "SaveGroutingScrapProduct"; // 产品条码 cre.Properties["BarCode"] = _barCodeRow["BarCode"]; // 产品ID cre.Properties["GoodsID"] = _barCodeRow["GoodsID"]; // 产品编码 cre.Properties["GoodsCode"] = _barCodeRow["GoodsCode"]; // 产品名称 cre.Properties["GoodsName"] = _barCodeRow["GoodsName"]; // 注浆日报ID cre.Properties["GroutingDailyID"] = _barCodeRow["GroutingDailyID"]; // 注浆日报明细ID cre.Properties["GroutingDailyDetailID"] = _barCodeRow["GroutingDailyDetailID"]; // 注浆日期 cre.Properties["GroutingDate"] = _barCodeRow["GroutingDate"]; // 成型生产线ID cre.Properties["GroutingLineID"] = _barCodeRow["GroutingLineID"]; // 成型生产线编码 cre.Properties["GroutingLineCode"] = _barCodeRow["GroutingLineCode"]; // 成型生产线名称 cre.Properties["GroutingLineName"] = _barCodeRow["GroutingLineName"]; // 成型线类型ID cre.Properties["GMouldTypeID"] = _barCodeRow["GMouldTypeID"]; // 成型生产线明细ID cre.Properties["GroutingLineDetailID"] = _barCodeRow["GroutingLineDetailID"]; // 注浆模具编号 cre.Properties["GroutingMouldCode"] = _barCodeRow["GroutingMouldCode"]; // 模具编号 cre.Properties["MouldCode"] = _barCodeRow["MouldCode"]; // 注浆工号ID cre.Properties["GroutingUserID"] = _barCodeRow["GroutingUserID"]; // 注浆工号编码 cre.Properties["GroutingUserCode"] = _barCodeRow["GroutingUserCode"]; // 注浆次数 cre.Properties["GroutingNum"] = _barCodeRow["GroutingNum"]; // 报损类型 cre.Properties["ScrapType"] = "1"; // 损坯日期 cre.Properties["ScrapDate"] = DateTime.Now.ToString("yyyy-MM-dd"); // 报损原因 cre.Properties["ScrapRreasonID"] = 3; // 责任工号ID cre.Properties["ResponUserID"] = ResponUserID; // 责任工号编码 cre.Properties["ResponUserCode"] = ResponUserCode; // 备注 cre.Properties["Remarks"] = this.txtRemarks.Text.Trim(); // 审核状态 cre.Properties["AuditStatus"] = this.cmbAuditStatus.SelectedValue; // 责任员工 //DataTable returnTable = this.dgvResponsible.DataSource as DataTable; //returnTable.AcceptChanges(); //returnTable = returnTable.Copy(); //returnTable.DefaultView.RowFilter = "UserSelected = 1"; //returnTable = returnTable.DefaultView.ToTable(); //cre.Data = new DataSet(); //cre.Data.Tables.Add(returnTable); cre.Data = dsUser; ServiceResultEntity result = (ServiceResultEntity)DoAsync(new BaseAsyncMethod(() => { return PMModuleProxyNew.Service.HandleRequest(cre); })); int resultRow = (int)result.Result; if (resultRow > Constant.INT_IS_ZERO) { //成功 return string.Format(Messages.MSG_CMN_I001, "成型报损", "保存"); } else if (resultRow == -99) { return string.Format(Messages.W_CMN_C_006, "未查询到该产品信息,请确认该产品是否已经进行注浆"); } else if (resultRow == -100) { return string.Format(Messages.W_CMN_C_006, "该产品还未进行注浆"); } else if (resultRow == -101) { return string.Format(Messages.W_CMN_C_006, "该产品已经交坯"); } else if (resultRow == -102) { return string.Format(Messages.W_CMN_C_006, "该产品已经报损"); } else { //失败 return string.Format(Messages.MSG_CMN_W001, "成型报损", "保存"); } } catch (Exception ex) { // 对异常进行共通处理 ExceptionManager.HandleEventException(this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex); } return string.Format(Messages.MSG_CMN_W001, "成型报损", "保存"); } /// /// 保存方法 /// /// /// public string save(string barcode) { string result = ""; try { if (this.txtBarCode.Text == string.Empty) { this.txtBarCode.Focus(); return ""; } ServiceResultEntity sreByid = DoAsync(() => { ClientRequestEntity cre = new ClientRequestEntity(); cre.NameSpace = "F_PM_1107"; cre.Name = "ReadAllDataByProductCode"; cre.Properties["BARCODE"] = barcode; return SystemModuleProxy.Service.DoRequest(cre); }); if (sreByid.Data.Tables[0].Rows[0]["USERID"].ToString()==string.Empty || sreByid.Data.Tables[0].Rows[0]["USERID"].ToString()=="" || sreByid.Data.Tables[0].Rows[0]["USERID"].ToString()==null) { return "信息不全,此产品不做任何处理"; } ServiceResultEntity sreByuserid = DoAsync(() => { ClientRequestEntity cre = new ClientRequestEntity(); cre.NameSpace = "F_PM_1107"; cre.Name = "ReadStaffInformation"; cre.Properties["USERID"] = sreByid.Data.Tables[0].Rows[0]["USERID"].ToString(); return SystemModuleProxy.Service.DoRequest(cre); }); this.txtRemarks.Focus();//把光标移开,由于删除工号后,值未变 if (this._formType == Constant.FormMode.Add) { //获取责任人集合 List addResponsibleList = new List() { new ScrapResponsibleEntity() { BarCode = sreByid.Data.Tables[0].Rows[0]["BarCode"].ToString(), StaffID = Convert.ToInt32(sreByuserid.Data.Tables[0].Rows[0]["STAFFID"].ToString()), StaffStatus = Convert.ToInt32(sreByuserid.Data.Tables[0].Rows[0]["Staffstatus"].ToString()), UserID = Convert.ToInt32(sreByuserid.Data.Tables[0].Rows[0]["USERID"].ToString()), UserCode = sreByuserid.Data.Tables[0].Rows[0]["USERCODE"].ToString() + "", UJobsID = Convert.ToInt32(sreByuserid.Data.Tables[0].Rows[0]["UJobsId"].ToString()), SJobsID = Convert.ToInt32(sreByuserid.Data.Tables[0].Rows[0]["JOBS"].ToString()), } }; //如果选择了责任工序就一定要选择责任人 //if (cbResponProcedure.Text != string.Empty && addResponsibleList.Count == Constant.INT_IS_ZERO) if (addResponsibleList.Count == Constant.INT_IS_ZERO) { //MessageBox.Show("请选择责任人!", // this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); return "请选择责任人!"; } //首先判断责任类型 int thisResponType = 0; if (sreByid.Data.Tables[0].Rows.Count == 0 && addResponsibleList.Count == Constant.INT_IS_ZERO) { thisResponType = 1; } else if (sreByid.Data.Tables[0].Rows.Count > 0 && addResponsibleList.Count != Constant.INT_IS_ZERO) { thisResponType = 3; } else if (sreByid.Data.Tables[0].Rows.Count == 0 && addResponsibleList.Count != Constant.INT_IS_ZERO) { thisResponType = 2; } if (thisResponType == Constant.INT_IS_ZERO) { //MessageBox.Show("责任类别不正确!", // this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); return "责任类别不正确!"; } //新建报损产品实体 ScrapProductEntity addScrapProduct = new ScrapProductEntity(); addScrapProduct.BarCode = sreByid.Data.Tables[0].Rows[0]["BarCode"].ToString(); addScrapProduct.ProductionLineID = int.Parse(sreByid.Data.Tables[0].Rows[0]["PRODUCTIONLINEID"].ToString()); addScrapProduct.ProductionLineCode = sreByid.Data.Tables[0].Rows[0]["PRODUCTIONLINECODE"].ToString(); addScrapProduct.ProductionLineName = sreByid.Data.Tables[0].Rows[0]["PRODUCTIONLINENAME"].ToString(); addScrapProduct.GoodsID = int.Parse(sreByid.Data.Tables[0].Rows[0]["GOODSID"].ToString()); addScrapProduct.GoodsCode = sreByid.Data.Tables[0].Rows[0]["GOODSCODE"].ToString(); addScrapProduct.GoodsName = sreByid.Data.Tables[0].Rows[0]["GOODSNAME"].ToString(); addScrapProduct.GroutingDailyID = int.Parse(sreByid.Data.Tables[0].Rows[0]["GROUTINGDAILYID"].ToString()); addScrapProduct.GroutingDailyDetailID = int.Parse(sreByid.Data.Tables[0].Rows[0]["GROUTINGDAILYDETAILID"].ToString()); addScrapProduct.GroutingDate = Convert.ToDateTime(sreByid.Data.Tables[0].Rows[0]["GROUTINGDATE"].ToString()); addScrapProduct.GroutingLineID = int.Parse(sreByid.Data.Tables[0].Rows[0]["GROUTINGLINEID"].ToString()); addScrapProduct.GroutingLineCode = sreByid.Data.Tables[0].Rows[0]["GROUTINGLINECODE"].ToString(); addScrapProduct.GroutingLineName = sreByid.Data.Tables[0].Rows[0]["GROUTINGLINENAME"].ToString(); addScrapProduct.GMouldTypeID = int.Parse(sreByid.Data.Tables[0].Rows[0]["GMOULDTYPEID"].ToString()); addScrapProduct.GroutingLineDetailID = int.Parse(sreByid.Data.Tables[0].Rows[0]["GROUTINGLINEDETAILID"].ToString()); addScrapProduct.GroutingMouldCode = sreByid.Data.Tables[0].Rows[0]["GROUTINGMOULDCODE"].ToString(); addScrapProduct.MouldCode = sreByid.Data.Tables[0].Rows[0]["MOULDCODE"].ToString(); addScrapProduct.GoodsLevelTypeID = _goodsLevelTypeID; addScrapProduct.GoodsLevelID = _goodsLevelId; addScrapProduct.ScrapDate = DateTime.Now; addScrapProduct.Rreason = "盘点报损"; addScrapProduct.ResponUserID = Convert.ToInt32(sreByuserid.Data.Tables[0].Rows[0]["USERID"].ToString()); addScrapProduct.ResponUserCode = sreByuserid.Data.Tables[0].Rows[0]["USERCODE"].ToString() + ""; addScrapProduct.ResponUserName = sreByuserid.Data.Tables[0].Rows[0]["USERNAME"].ToString(); addScrapProduct.Remarks = this.txtRemarks.Text; addScrapProduct.AuditStatus = 0; addScrapProduct.SettlementFlag = 0; addScrapProduct.ResponType = thisResponType; addScrapProduct.GroutingUserID = Convert.ToInt32(sreByid.Data.Tables[0].Rows[0]["GROUTINGUSERID"].ToString()); addScrapProduct.GroutingUserCode = sreByid.Data.Tables[0].Rows[0]["GROUTINGUSERCODE"].ToString(); addScrapProduct.GroutingNum = decimal.Parse(sreByid.Data.Tables[0].Rows[0]["GROUTINGNUM"].ToString()); addScrapProduct.IsPublicBody = Convert.ToInt32(sreByid.Data.Tables[0].Rows[0]["ISPUBLICBODY"].ToString()); addScrapProduct.IsReFire = Convert.ToInt32(sreByid.Data.Tables[0].Rows[0]["ISREFIRE"].ToString()); addScrapProduct.AuditStatus = Convert.ToInt32(cmbAuditStatus.SelectedValue); addScrapProduct.SpecialRepairflag = int.Parse(sreByid.Data.Tables[0].Rows[0]["SPECIALREPAIRFLAG"].ToString()); addScrapProduct.LogoID = int.Parse(sreByid.Data.Tables[0].Rows[0]["LogoID"].ToString()); if (sreByid.Data.Tables[0].Rows[0]["PROCEDUREID"].ToString() != null) { addScrapProduct.ProcedureID = int.Parse(sreByid.Data.Tables[0].Rows[0]["PROCEDUREID"].ToString()); //addScrapProduct.ProcedureName = this.txtCompleteProcdure.Text; addScrapProduct.ProcedureName = sreByid.Data.Tables[0].Rows[0]["ProcedureName"].ToString(); addScrapProduct.ProcedureCode = sreByid.Data.Tables[0].Rows[0]["ProcedureCode"].ToString(); } ResponProcedureEntity addRProcedure = new ResponProcedureEntity(); //如果存在责任工序的话,也要添加责任工序 if (thisResponType == Constant.INT_IS_THREE) { addRProcedure.BarCode = sreByid.Data.Tables[0].Rows[0]["BarCode"].ToString(); addRProcedure.ProductionDataID = int.Parse(sreByid.Data.Tables[0].Rows[0]["PRODUCTIONDATAID"].ToString()); addRProcedure.ProductionLineID = int.Parse(sreByid.Data.Tables[0].Rows[0]["PRODUCTIONLINEID"].ToString()); addRProcedure.ProductionLineCode = sreByid.Data.Tables[0].Rows[0]["PRODUCTIONLINECODE"].ToString(); addRProcedure.ProductionLineName = sreByid.Data.Tables[0].Rows[0]["PRODUCTIONLINENAME"].ToString(); addRProcedure.ProcedureID = int.Parse(sreByid.Data.Tables[0].Rows[0]["PROCEDUREID"].ToString()); addRProcedure.ProcedureCode = sreByid.Data.Tables[0].Rows[0]["ProcedureCode"].ToString(); addRProcedure.ProcedureName = sreByid.Data.Tables[0].Rows[0]["ProcedureName"].ToString(); addRProcedure.UserID = Convert.ToInt32(sreByuserid.Data.Tables[0].Rows[0]["USERID"].ToString()); addRProcedure.UserCode = sreByuserid.Data.Tables[0].Rows[0]["USERCODE"].ToString() + ""; addRProcedure.UserName = sreByuserid.Data.Tables[0].Rows[0]["USERNAME"].ToString(); addRProcedure.Remarks = ""; } int addReturn = (int)DoAsync(new BaseAsyncMethod(() => { return PMModuleProxy.Service.AddScrapProduct(addScrapProduct, addRProcedure, addResponsibleList); })); if (addReturn > Constant.INT_IS_ZERO) { //成功 //MessageBox.Show(string.Format(Messages.MSG_CMN_I001, "废弃产品", "保存"), // this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); //this.DialogResult = DialogResult.OK; return string.Format(Messages.MSG_CMN_I001, "废弃产品", "保存"); } else if (addReturn == Constant.RETURN_IS_DATACHANGED) { //成功 //MessageBox.Show(string.Format(Messages.MSG_CMN_W007, "操作的数据已经发生了变化"), // this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); //this.DialogResult = DialogResult.OK; return string.Format(Messages.MSG_CMN_W007, "操作的数据已经发生了变化"); } else { //失败 //MessageBox.Show(string.Format(Messages.MSG_CMN_W001, "废弃产品", "保存"), // this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning); return string.Format(Messages.MSG_CMN_W001, "废弃产品", "保存"); } } } catch (Exception ex) { // 对异常进行共通处理 ExceptionManager.HandleEventException(this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex); } return result; } /// /// 窗体关闭 /// /// /// private void btnCancel_Click(object sender, EventArgs e) { this.Close(); } /// /// 按下回车后调用产品条码检验 /// /// /// private void txtBarCode_KeyPress(object sender, KeyPressEventArgs e) { try { if ((int)e.KeyChar == 13 && (this.txtBarCode.Text != "" && this.txtBarCode.Text != string.Empty && this.txtBarCode.Text != null)) // 按了回车键 { //var sss = SplitLong11(this.txtBarCode.Text); var sss = this.txtBarCode.Lines; //清除所有产品条码 ReportingLosses.Clear(); GroutingScrapProducts.Clear(); var dt = new DataTable(); //备注 dt.Columns.Add("notes"); //产品编码 dt.Columns.Add("ProductCode"); foreach (var item in sss) { if (string.IsNullOrWhiteSpace(item)) { continue; } _barCodeRow = null; string pubg = GroutingScrapProduct(item); if ("NEXT" == pubg) { pubg = ReadAllDataByProductCode(item); if (pubg == "没有问题") { ReportingLosses.Add(item); } } else if (pubg == "没有问题") { GroutingScrapProducts.Add(item, _barCodeRow); } _barCodeRow = null; DataRow dr = dt.NewRow(); dr["notes"] = pubg; dr["ProductCode"] = item; dt.Rows.Add(dr); } this.dgvResponsible.DataSource = dt; } } catch (Exception ex) { // 对异常进行共通处理 ExceptionManager.HandleEventException(this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex); } } /// /// 字符串按11位分割 /// /// /// public List SplitLong11(string item) { List result = new List(); // 检查字符串长度是否大于或等于分组大小 if (item.Length >= 11) { for (int i = 0; i < item.Length; i += 11) { // 截取当前分组,注意不要超出字符串长度 int length = Math.Min(11, this.txtBarCode.Text.Length - i); string chunk = this.txtBarCode.Text.Substring(i, length); result.Add(chunk); } } return result; } #endregion /// /// 成型报损 /// /// /// private string GroutingScrapProduct(string item) { string notes = "没有问题"; try { if (!string.IsNullOrWhiteSpace(item)) { ClientRequestEntity cre = new ClientRequestEntity(); cre.NameSpace = "GroutingScrapProduct"; cre.Name = "GetGroutingDailyDetail"; cre.Properties["BarCode"] = item; ServiceResultEntity result = (ServiceResultEntity)DoAsync(new BaseAsyncMethod(() => { return PMModuleProxyNew.Service.HandleRequest(cre); })); if (result == null || result.Data == null || result.Data.Tables.Count == 0 || result.Data.Tables[0].Rows.Count == 0) { return notes = "未查询到该产品信息,请确认该产品是否已经进行注浆!"; } _barCodeRow = result.Data.Tables[0].Rows[0]; // 判断是否进行了注浆 if ("0".Equals(_barCodeRow["GroutingFlag"])) { return notes = "该产品还未进行注浆!"; } // 判断是否已经报损 if ("1".Equals(_barCodeRow["ScrapFlag"])) { return notes = "该产品已经报损!"; } // 判断是否进行了交坯 if ("1".Equals(_barCodeRow["DeliverFlag"]) || "1".Equals(_barCodeRow["beginningflag"])) { //return notes = "该产品已经交坯!"; return notes = "NEXT"; } return notes; } // 如果产品条码是空,那么就清空相关信息 return notes = "无效条码"; } catch (Exception ex) { // 对异常进行共通处理 ExceptionManager.HandleEventException(this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex); } return "条码成型报损验证异常"; } /// /// 产品条码检验 /// /// /// private string ReadAllDataByProductCode(string item) { string notes = "没有问题"; try { string doRuselt = (string)DoAsync(new BaseAsyncMethod(() => { return PMModuleProxy.Service.ScrapProductChack(item); })); string[] doRuselts = doRuselt.Split(':'); int isHave = Convert.ToInt32(doRuselts[0]); if (isHave == 2) { return notes = "不是在产产品不能报损!"; //MessageBox.Show("产品编码为" + item + " 不是在产产品不能报损!", // this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); //this.txtBarCode.Text = ""; //this.txtBarCode.Focus(); //Product = false; } if (isHave == 3) { return notes = "当前工号没有此产品所在工序"+ doRuselts[1] + "的操作权限,不能报损!"; //MessageBox.Show(string.Format("产品编码为" + item + " 当前工号没有此产品所在工序【{0}】的操作权限,不能报损!", doRuselts[1]), // this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); //this.txtBarCode.Text = ""; //this.txtBarCode.Focus(); //Product = false; } if (isHave == 4) { return notes = doRuselts[1]; // MessageBox.Show(doRuselts[1], // this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); //this.txtBarCode.Text = ""; //this.txtBarCode.Focus(); //Product = false; } if (isHave == Constant.INT_IS_ZERO) { return notes = "已经存在报损记录!"; // MessageBox.Show("产品编码为" + item + " 已经存在报损记录!", // this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); //this.txtBarCode.Text = ""; //this.txtBarCode.Focus(); //Product = false; } DataSet dsReturn = (DataSet)DoAsync(new BaseAsyncMethod(() => { return PMModuleProxy.Service.GetInProductionAndProductionData(item); })); if (dsReturn != null) { if (dsReturn.Tables.Count == Constant.INT_IS_TWO) { if (dsReturn.Tables[0].Rows.Count == Constant.INT_IS_ZERO) //在产表中没有数据 { //目前不在生产线上也只报损 2015/07/14 modify wangx DataSet dsDailyDetail = (DataSet)DoAsync(new BaseAsyncMethod(() => { return PMModuleProxy.Service.GetBarCodeInGroutingDailyDetail(item); })); if (dsDailyDetail != null && dsDailyDetail.Tables[0].Rows.Count == 0) { return notes = "条码无效,无法报损!"; //MessageBox.Show("产品编码为" + item + " 条码无效,无法报损!", // this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); //this.txtBarCode.Text = ""; //this.txtBarCode.Focus(); //Product = false; } return notes = "不是在产产品不能报损!"; // 2015/07/14 modify wangx end ////产品不在生产线上 //MessageBox.Show("产品编码为" + item + " 不是在产产品不能报损!", // this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); //this.txtBarCode.Text = ""; //this.txtBarCode.Focus(); //////判断条码是否有效 //Product = false; } //获取产品情况以及经过工序情况 DataTable dtInProduction = dsReturn.Tables[0]; //2015-05-26 begin modify by wangx if (dtInProduction != null && dtInProduction.Rows.Count > 0) { if (dtInProduction.Rows[0]["endmode"].ToString() == "2")//代表已经产成品 { return notes = "已经生产完成,无法报损!"; //MessageBox.Show("产品编码为" + item + " 已经生产完成,无法报损!", // this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); //this.txtBarCode.Text = ""; //this.txtBarCode.Focus(); //Product = false; } if (dtInProduction.Rows[0]["IsReworkFlag"].ToString() == "1")//代表已经返工 { return notes = "已经是返工状态,无法报损!"; //MessageBox.Show("产品编码为" + item + " 已经是返工状态,无法报损!", // this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); //this.txtBarCode.Text = ""; //this.txtBarCode.Focus(); //Product = false; } } //2015-05-26 end //获取节点类型 //如果存在该类型的字段的话,判断一下 // string a = dtInProduction.Columns[dtInProduction.Columns.Count - 1].ColumnName; foreach (DataColumn dcFor in dtInProduction.Columns) { if (dcFor.ColumnName.ToLower() == "proceduremodeltypeid") { int modelType = Convert.ToInt32(dtInProduction.Rows[0]["ProcedureModelTypeID"]); // 装车,入窑,出窑,窑车补件不能报损 if (modelType == Constant.INT_IS_ONE || modelType == Constant.INT_IS_TWO || modelType == Constant.INT_IS_THREE || modelType == Constant.INT_IS_SIX) { return notes = "处于无法报损的特殊工序中!"; //某些特殊工序不可报损 //MessageBox.Show("产品编码为" + item + " 处于无法报损的特殊工序中!", // this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); //this.txtBarCode.Text = ""; //this.txtBarCode.Focus(); //Product = false; } } } List inProductionList = DataConvert.TableConvertToObject(dtInProduction); if (inProductionList.Count != Constant.INT_IS_ZERO) { this._isScrapProductEntity = inProductionList[0]; return notes; } else { if (this._updateEntity == null) { return null; } if (this._updateEntity.GoodsLevelTypeID != this._goodsLevelTypeID) { return null; } //失败,条码不存在数据或无法转换 MessageBox.Show(Messages.MSG_PM_W007, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); return null; } } else { if (this._updateEntity == null) { return null; } if (this._updateEntity.GoodsLevelTypeID != this._goodsLevelTypeID) { return null; } //失败 MessageBox.Show(Messages.MSG_PM_W007, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); } } } catch (Exception ex) { // 对异常进行共通处理 ExceptionManager.HandleEventException(this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex); } //return notes; return "条码产品报损验证异常"; } #region 私有方法 /// /// 加载数据 /// private void BindEntity() { try { //条码控件不可用 this.txtBarCode.Enabled = false; this._updateEntity = new ScrapProductEntity(); this._updateEntity.BarCode = _barCode; this._updateEntity.ScrapProductID = _editSPId; //绑定生产工序集合 DataSet dsReturn = (DataSet)DoAsync(new BaseAsyncMethod(() => { return PMModuleProxy.Service.GetInProductionAndProductionData(_barCode); })); if (dsReturn != null) { if (dsReturn.Tables.Count == Constant.INT_IS_TWO) { //获取产品情况以及经过工序情况 DataTable dtInProduction = dsReturn.Tables[0]; DataTable dtProductionData = dsReturn.Tables[1]; //foreach (DataRow drFor in dtInProduction.Rows) //{ // this.txtProductionLineName.Text = drFor["ProductionLineName"].ToString(); // this.txtGoodsCode.Text = drFor["GoodsCode"].ToString(); // this.txtGroutingLine.Text = drFor["GroutingLineCode"].ToString(); // this.txtMouldCode.Text = drFor["GroutingMouldCode"].ToString(); // this.txtGroutingUser.Text = drFor["GroutingUserCode"].ToString(); //} //this.cbResponProcedure.DataSource = dtProductionData; //this.cbResponProcedure.DisplayMember = "ProcedureName"; //this.cbResponProcedure.ValueMember = "ProcedureID"; this._productionDataList = DataTableToListByProductionData(dtProductionData); if (this._productionDataList.Count != Constant.INT_IS_ZERO) { this._scrapProductResponProcedure = this._productionDataList[0]; } } } //获取报废产品实体 DataSet dsScrap = (DataSet)DoAsync(new BaseAsyncMethod(() => { return PMModuleProxy.Service.GetScrapProduct(this._updateEntity); })); if (dsScrap != null) { if (dsScrap.Tables.Count != Constant.INT_IS_ZERO) { DataRow drScrap = dsScrap.Tables[0].Rows[0]; this._updateEntity.BarCode = drScrap["BarCode"].ToString(); if (drScrap["ProductionLineID"].ToString() != "") { this._updateEntity.ProductionLineID = Convert.ToInt32(drScrap["ProductionLineID"]); this._updateEntity.ProductionLineCode = drScrap["ProductionLineCode"].ToString(); this._updateEntity.ProductionLineName = drScrap["ProductionLineName"].ToString(); //this.txtGoodsCode.Text = drScrap["GoodsCode"].ToString(); //this.txtGroutingLine.Text = drScrap["GroutingLineCode"].ToString(); //this.txtMouldCode.Text = drScrap["GroutingMouldCode"].ToString(); //this.txtGroutingUser.Text = drScrap["GroutingUserCode"].ToString(); this._CompleteProcdureID = Convert.ToInt32(drScrap["ProcedureID"]); this._CompleteProcdureCode = drScrap["ProcedureCode"].ToString(); //this.txtCompleteProcdure.Text = drScrap["ProcedureName"].ToString(); } //else //等于空时,取模具信息 //{ // this.txtGoodsCode.Text = drScrap["GoodsCode"].ToString(); // this.txtGroutingLine.Text = drScrap["GroutingLineCode"].ToString(); // this.txtMouldCode.Text = drScrap["GroutingMouldCode"].ToString(); // this.txtGroutingUser.Text = drScrap["GroutingUserCode"].ToString(); //} if (drScrap["logoid"].ToString() != "") { this._LogoID = Convert.ToInt32(drScrap["logoid"]); } this._updateEntity.GoodsID = Convert.ToInt32(drScrap["GoodsID"]); this._updateEntity.GoodsCode = drScrap["GoodsCode"].ToString(); this._updateEntity.GoodsName = drScrap["GoodsName"].ToString(); this._updateEntity.GroutingDailyID = Convert.ToInt32(drScrap["GroutingDailyID"]); this._updateEntity.GroutingDailyDetailID = Convert.ToInt32(drScrap["GroutingDailyDetailID"]); this._updateEntity.GroutingDate = Convert.ToDateTime(drScrap["GroutingDate"]); this._updateEntity.GroutingLineID = Convert.ToInt32(drScrap["GroutingLineID"]); this._updateEntity.GroutingLineCode = drScrap["GroutingLineCode"].ToString(); this._updateEntity.GroutingLineName = drScrap["GroutingLineName"].ToString(); this._updateEntity.GMouldTypeID = Convert.ToInt32(drScrap["GMouldTypeID"]); this._updateEntity.GroutingLineDetailID = Convert.ToInt32(drScrap["GroutingLineDetailID"]); this._updateEntity.GroutingMouldCode = drScrap["GroutingMouldCode"].ToString(); this._updateEntity.MouldCode = drScrap["MouldCode"].ToString(); this._updateEntity.GoodsLevelTypeID = Convert.ToInt32(drScrap["GoodsLevelTypeID"]); this._updateEntity.GoodsLevelID = Convert.ToInt32(drScrap["GoodsLevelID"]); this._updateEntity.ScrapDate = Convert.ToDateTime(drScrap["ScrapDate"]); this._updateEntity.Rreason = drScrap["Rreason"].ToString(); this._updateEntity.Remarks = drScrap["Remarks"].ToString(); this._updateEntity.AuditStatus = Convert.ToInt32(drScrap["AuditStatus"]); this._updateEntity.ResponType = Convert.ToInt32(drScrap["ResponType"]); this._updateEntity.SpecialRepairflag = Convert.ToInt32(drScrap["SpecialRepairflag"]); this.SpecialRepairFlag = Convert.ToInt32(drScrap["SpecialRepairflag"]); if (drScrap["Auditor"] != DBNull.Value) { this._updateEntity.Auditor = Convert.ToInt32(drScrap["Auditor"]); } if (drScrap["AuditDate"] != DBNull.Value) { this._updateEntity.AuditlDate = Convert.ToDateTime(drScrap["AuditDate"]); } this._updateEntity.SettlementFlag = Convert.ToInt32(drScrap["SettlementFlag"]); if (drScrap["ResponProcedureID"] != DBNull.Value) //ProcedureID--改到ResponProcedureID { this._updateEntity.ResponProcedureID = Convert.ToInt32(drScrap["ResponProcedureID"]); } if (drScrap["UserID"] != DBNull.Value) { this._updateEntity.ResponUserID = Convert.ToInt32(drScrap["UserID"]); } if (drScrap["UserCode"] != DBNull.Value) { this._updateEntity.ResponUserCode = drScrap["UserCode"].ToString(); } if (drScrap["UserName"] != DBNull.Value) { this._updateEntity.ResponUserName = drScrap["UserName"].ToString(); } if (drScrap["ScrapFine"] != DBNull.Value) { this._updateEntity.ScrapFine = Convert.ToDecimal(drScrap["ScrapFine"]); } this.cmbAuditStatus.SelectedValue = this._updateEntity.AuditStatus; if (this._updateEntity.GoodsLevelTypeID != this._goodsLevelTypeID || (this._updateEntity.AuditStatus == Constant.INT_IS_ONE || this._updateEntity.AuditStatus == Constant.INT_IS_TWO)) //除关闭窗体外所有功能不可用 { this.txtBarCode.Enabled = false; //this.txtGoodsCode.Enabled = false; //this.txtProductionLineName.Enabled = false; //this.cbResponProcedure.Enabled = false; // 报损日期不能修改 //this.txtScrapDate.Enabled = false; this.cmbRreason.Enabled = false; this.txtRemarks.Enabled = false; //this.scbUser.Enabled = false; this.dgvResponsible.Enabled = false; this.btnSave.Enabled = false; //this.btnViewApprover.Visible = false; this.cmbAuditStatus.Enabled = false; } } } else { this.Close(); return; } //获取报废责任工序实体 if (Convert.ToInt32(_updateEntity.ResponType) == Constant.INT_IS_THREE) { DataSet dsResPro = (DataSet)DoAsync(new BaseAsyncMethod(() => { return PMModuleProxy.Service.GetResponProcedureBySPId(Convert.ToInt32(_updateEntity.ScrapProductID)); })); this._updateProcedureEntity = new ResponProcedureEntity(); if (dsResPro != null && dsResPro.Tables[0].Rows.Count > 0) //如果原来存在责任工序实体 { DataRow drResPro = dsResPro.Tables[0].Rows[0]; this._updateProcedureEntity.ResponProcedureID = Convert.ToInt32(drResPro["ResponProcedureID"]); //this.scbUser.Enabled = false; } this._updateProcedureEntity.BarCode = _updateEntity.BarCode; } //获取报废责任人实体集合 if (Convert.ToInt32(_updateEntity.ResponType) != Constant.INT_IS_ONE) { this._updateScrapResponsibleList = new List(); DataSet dsResponsible = (DataSet)DoAsync(new BaseAsyncMethod(() => { return PMModuleProxy.Service.GetScrapResponsibleBySPId(Convert.ToInt32(_updateEntity.ScrapProductID)); })); DataTableToListByScrapResponsible(dsResponsible); } //控件赋值 this.txtBarCode.Text = _updateEntity.BarCode; //this.txtGoodsCode.Text = _updateEntity.GoodsCode; //this.txtProductionLineName.Text = _updateEntity.ProductionLineName; //this.cbResponProcedure.SelectedValue = _updateEntity.ResponProcedureID; try { this.cmbRreason.Text = _updateEntity.Rreason; } catch { this.cmbRreason.Text = ""; } this.txtRemarks.Text = _updateEntity.Remarks; //this.txtScrapFine.Text = _updateEntity.ScrapFine.ToString(); //this._updateEntity.ScrapFine if (this._updateEntity.ResponUserID != null) { // scbUser.SearchedPKMember = Convert.ToInt32(_updateEntity.ResponUserID); // scbUser.InitValue(_updateEntity.ResponUserName, _updateEntity.ResponUserCode); //this.dkUser.UserID = _updateEntity.ResponUserID; // this.dkUser.UserCode = _updateEntity.ResponUserCode; // this.dkUser.UserName = _updateEntity.ResponUserName; } else if (this._scrapResponsibleList.Count != Constant.INT_IS_ZERO) { //scbUser.SearchedPKMember = Convert.ToInt32(_scrapResponsibleList[0].UserID); //scbUser.InitValue(_scrapResponsibleList[0].UserName, _scrapResponsibleList[0].UserCode); //this.dkUser.UserID = _scrapResponsibleList[0].UserID; // this.dkUser.UserCode = _scrapResponsibleList[0].UserCode; // this.dkUser.UserName = _scrapResponsibleList[0].UserName; } } catch (Exception ex) { throw ex; } } /// /// 数据表到实体转换 /// /// private void DataTableToListByScrapResponsible(DataSet dsScrapResponsible) { foreach (DataRow drFor in dsScrapResponsible.Tables[0].Rows) { ScrapResponsibleEntity srEntity = new ScrapResponsibleEntity(); srEntity.ResponsibleID = Convert.ToInt32(drFor["ResponsibleID"]); srEntity.ScrapProductID = Convert.ToInt32(drFor["ScrapProductID"]); srEntity.BarCode = drFor["BarCode"].ToString(); srEntity.ResponType = Convert.ToInt32(drFor["ResponType"]); if (drFor["ResponProcedureID"] != DBNull.Value) { srEntity.ResponProcedureID = Convert.ToInt32(drFor["ResponProcedureID"]); } srEntity.StaffID = Convert.ToInt32(drFor["StaffID"]); srEntity.UserID = Convert.ToInt32(drFor["UserID"]); srEntity.UserCode = drFor["UserCode"].ToString(); srEntity.UJobsID = Convert.ToInt32(drFor["UJobsID"]); srEntity.SJobsID = Convert.ToInt32(drFor["SJobsID"]); srEntity.StaffStatus = Convert.ToInt32(drFor["StaffStatus"]); srEntity.AccountID = Convert.ToInt32(drFor["AccountID"]); srEntity.CreateTime = Convert.ToDateTime(drFor["CreateTime"]); srEntity.CreateUserID = Convert.ToInt32(drFor["CreateUserID"]); srEntity.UpdateTime = Convert.ToDateTime(drFor["UpdateTime"]); srEntity.UpdateUserID = Convert.ToInt32(drFor["UpdateUserID"]); srEntity.OPTimeStamp = Convert.ToDateTime(drFor["OPTimeStamp"]); srEntity.UserName = drFor["userName"].ToString(); this._scrapResponsibleList.Add(srEntity); } } /// /// 数据表到实体转换 /// /// /// private List DataTableToListByProductionData(DataTable dtProductionData) { List pdList = new List(); foreach (DataRow drFor in dtProductionData.Rows) { ProductionDataEntity pdEntity = new ProductionDataEntity(); pdEntity.ProductionDataID = Convert.ToInt32(drFor["ProductionDataID"]); pdEntity.ProcedureID = Convert.ToInt32(drFor["ProcedureID"]); pdEntity.ProcedureCode = drFor["ProcedureCode"].ToString(); pdEntity.ProcedureName = drFor["ProcedureName"].ToString(); pdList.Add(pdEntity); } return pdList; } #endregion private void button1_Click(object sender, EventArgs e) { this.txtBarCode.Clear(); } } }