/// <summary> /// 根据制造订单号和制造订单行号查询未结生产工单 /// </summary> /// <param name="moNumber"></param> /// <param name="moLineNo"></param> /// <returns></returns> private OpenPWOInfo FindPWOWithNumberAndNo(string moNumber, int moLineNo) { string strProcedureName = string.Format( "{0}.{1}", className, MethodBase.GetCurrentMethod().Name); OpenPWOInfo rlt = null; TWaitting.Instance.ShowWaitForm("查询未结生产工单"); WriteLog.Instance.WriteBeginSplitter(strProcedureName); try { int errCode = 0; string errText = ""; List <OpenPWOInfo> pwos = new List <OpenPWOInfo>(); IRAPMESClient.Instance.mfn_GetInfo_OpenPWOs( IRAPUser.Instance.CommunityID, moNumber, moLineNo, ref pwos, out errCode, out errText); WriteLog.Instance.Write( string.Format("({0}){1}", errCode, errText), strProcedureName); if (errCode != 0) { XtraMessageBox.Show( errText, "系统信息", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { if (pwos.Count > 0) { rlt = pwos[0].Clone(); } } } finally { WriteLog.Instance.WriteEndSplitter(strProcedureName); TWaitting.Instance.CloseWaitForm(); } return(rlt); }
private void grdvOrders_ValidateRow( object sender, ValidateRowEventArgs e) { DataRow dr = grdvOrders.GetDataRow(e.RowHandle); if (dr != null) { try { switch (dr.RowState) { case DataRowState.Modified: case DataRowState.Detached: case DataRowState.Added: if ((int)dr["RecordStatus"] == 0) { dr["RecordStatus"] = 2; } #region 校验工单信息 if (dr["MONumber"] == null || ((string)dr["MONumber"]).Trim() == "") { dr["ErrCode"] = 99; dr["ErrText"] = "订单号不能空白"; } else { // 检查工单列表中是否有重复的订单号和行号 foreach (DataRow dataRow in dtPWOs.Rows) { if ((string)dr["MONumber"] == (string)dataRow["MONumber"] && (int)dr["MOLineNo"] == (int)dataRow["MOLineNo"] && (int)dr["Ordinal"] != (int)dataRow["Ordinal"] && (int)dataRow["RecordStatus"] != 3) { dr["ErrCode"] = 99; dr["ErrText"] = "在同一炉次中不允许有相同的订单号和行号出现"; return; } } // 校验工单信息 OpenPWOInfo pwo = FindPWOWithNumberAndNo( (string)dr["MONumber"], (int)dr["MOLineNo"]); if (pwo == null) { dr["ErrCode"] = 99; dr["ErrText"] = string.Format( "未找到 订单号[{1}]和行号[{2}] 的制造订单", dr["ErrText"].ToString(), dr["MONumber"].ToString(), dr["MOLineNo"].ToString()); } else { dr["T102Code"] = pwo.ProductNo; dr["LotNumber"] = pwo.LotNumber; dr["LinkedFactID"] = pwo.PWOIssuingFactID; dr["Qty"] = pwo.OrderQty; #region 解析 T102Code int errCode = 0; string errText = ""; Stb058 data = new Stb058(); IRAPMDMClient.Instance.mfn_GetInfo_Entity058WithCode( IRAPUser.Instance.CommunityID, 102, pwo.ProductNo, ref data, out errCode, out errText); if (errCode == 0) { string[] strTemps = data.NodeName.Split('-'); if (strTemps.Length >= 1) { dr["PlateNo"] = strTemps[0]; } if (strTemps.Length >= 2) { dr["T131Code"] = strTemps[1]; } } #endregion dr["ErrCode"] = 0; dr["ErrText"] = ""; } } #endregion #region 校验材质 if (dr["T131Code"] == null || ((string)dr["T131Code"]).Trim() == "") { dr["ErrCode"] = (int)dr["ErrCode"] + 1; dr["ErrText"] = (string)dr["ErrText"] + ";材质不能空白"; } else { // 校验材质 if (((string)dr["T131Code"]).Substring(0, 3) != infoSmeltProduct.T131Code) { dr["ErrCode"] = (int)dr["ErrCode"] + 1; dr["ErrText"] = (string)dr["ErrText"] + string.Format(";材质必须是 [{0}] 系列的", infoSmeltProduct.T131Code); } } #endregion break; } } finally { for (int i = 0; i < dtPWOs.Rows.Count; i++) { dtPWOs.Rows[i]["Ordinal"] = i + 1; } } } }