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 System.Collections; using CoreFS.CA06; using Core.Mes.Client.Comm.Tool; using com.steering.pss.plnsaleord.order.model; using Infragistics.Win.UltraWinGrid; using Core.Mes.Client.Comm.Server; using Core.Mes.Client.Comm; using com.steering.pss.plnsaleord.ordAmCal.model; using Core.StlMes.Client.PlnSaleOrd.BaseMethod; namespace Core.StlMes.Client.PlnSaleOrd.PopupWindow { public partial class FrmChangeBomDp : FrmBase { /// /// 全程产线号 /// private string mscPline = ""; /// /// 轧管产线代码 /// private string plinCode = ""; /// /// Bom /// private string bom = ""; /// /// 交货行pk /// private string ordLnDlyPk = ""; /// /// 排产流水号 /// private string plnDivideId = ""; /// /// DESGiN_KEY /// private string desginKey = ""; /// /// 物料编码 /// private string materialNo = ""; /// /// 冶金规范码 /// private string msc = ""; /// /// 冶金规范类型 /// private string mscStyle = ""; /// /// 产品码 /// private string psc = ""; /// /// 成品外径 /// private string outdiameter = ""; /// /// 成品壁厚 /// private string wallthick = ""; /// /// 成品规格代码 /// private string specCode = ""; /// /// 成品规格描述 /// private string specName = ""; /// /// 品名代码 /// private string producCode = ""; /// /// 品名 /// private string producName = ""; /// /// 扣型代码 /// private string modelCode = ""; /// /// 扣型 /// private string modelName = ""; /// /// 外购坯 /// private string outsBilletFl = ""; /// /// 外购管 /// private string outsStlPipeFl = ""; /// /// 最终用户代码 /// private string finalUser = ""; /// /// 分类 /// private string custom = ""; /// /// 分类 /// public string Custom { get { return custom; } set { custom = value; } } private void ultraToolbarsManager1_ToolClick(object sender, Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e) { switch (e.Tool.Key) { case "Query": DoQuery(); break; case "Save": DoSave(); break; case "AddEspec": DoAddEspec(); break; case "Colse": this.Close(); break; } } public FrmChangeBomDp(string _ordLnDlyPk, string _plnDivideId, OpeBase baseOb) { this.IsLoadUserView = true; this.ob = baseOb; ordLnDlyPk = _ordLnDlyPk; plnDivideId = _plnDivideId; InitializeComponent(); EntityHelper.ShowGridCaption(ultraGridBom.DisplayLayout.Bands[0]); EntityHelper.ShowGridCaption(this.ultraGridDPine.DisplayLayout.Bands[0]); } private void FrmChangeBomDp_Load(object sender, EventArgs e) { Init(); DoQuery(); } private void Init() { if (!this.custom.Equals("Dbk") && !this.custom.Equals("")) { ultraToolbarsManager1.Tools.Remove(ultraToolbarsManager1.Tools["AddEspec"]); } if (!this.custom.Equals("Zg") && !this.custom.Equals("")) { splitContainer1.Panel2Collapsed = true; } } /// /// 刷新 /// //private void RefresDate() //{ // DataTable dt = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CoreSaleOrderReceive.querySaleProcStatus", // new object[] { ordLnDlyPk, plnDivideId }, this.ob); // if (dt != null && dt.Rows.Count > 0) // { // DataRow dr = dt.Rows[0]; // desginKey = dr["DESGIN_KEY"].ToString(); // msc = dr["MSC"].ToString(); // mscStyle = dr["MSC_STYLE"].ToString();//冶金规范描述 // psc = dr["PSC"].ToString();//产品码 // outdiameter = dr["OUTDIAMETER"].ToString(); // wallthick = dr["WALLTHICK"].ToString(); // specCode = dr["SPEC_CODE"].ToString();//规格 // specName = dr["SPEC_NAME"].ToString(); // modelCode = dr["MODEL_CODE"].ToString();//扣型 // modelName = dr["MODEL_DESC"].ToString(); // producCode = dr["PRODUCCODE"].ToString();//品名 // producName = dr["PRODUCNAME"].ToString(); // outsBilletFl = dr["OUTS_BILLET_FL"].ToString();//外购坯(COM_BASE_INFO:1218) // outsStlPipeFl = dr["OUTS_STL_PIPE_FL"].ToString();//外购管(COM_BASE_INFO:1219) // materialNo = dr["MATERIAL_NO"].ToString();//外购管(COM_BASE_INFO:1219) // finalUser = dr["FINAL_USER"].ToString();//外购管(COM_BASE_INFO:1219) // } //} /// /// 查询 /// private void DoQuery() { //ArrayList param = new ArrayList(); List listSource = null; string checkDbk = ""; string checkZgPline = ""; DataTable dt = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CoreSaleOrderReceive.querySaleProcStatus", new object[] { ordLnDlyPk, plnDivideId }, this.ob); if (dt == null || dt.Rows.Count <= 0) { MessageUtil.ShowError("找不到合同信息!"); this.Close(); return; } DataRow dr = dt.Rows[0]; desginKey = dr["DESGIN_KEY"].ToString(); msc = dr["MSC"].ToString(); mscStyle = dr["MSC_STYLE"].ToString();//冶金规范描述 psc = dr["PSC"].ToString();//产品码 outdiameter = dr["OUTDIAMETER"].ToString(); wallthick = dr["WALLTHICK"].ToString(); specCode = dr["SPEC_CODE"].ToString();//规格 specName = dr["SPEC_NAME"].ToString(); modelCode = dr["MODEL_CODE"].ToString();//扣型 modelName = dr["MODEL_DESC"].ToString(); producCode = dr["PRODUCCODE"].ToString();//品名 producName = dr["PRODUCNAME"].ToString(); outsBilletFl = dr["OUTS_BILLET_FL"].ToString();//外购坯(COM_BASE_INFO:1218) outsStlPipeFl = dr["OUTS_STL_PIPE_FL"].ToString();//外购管(COM_BASE_INFO:1219) materialNo = dr["MATERIAL_NO"].ToString();//外购管(COM_BASE_INFO:1219) finalUser = dr["FINAL_USER"].ToString();//外购管(COM_BASE_INFO:1219) mscPline = dr["INDEX_SEQ"].ToString(); plinCode = dr["GROUP_ROLL"].ToString(); bom = dr["BOM"].ToString(); if (!this.custom.Equals("Dbk" ) && !this.custom.Equals("")) { if (dr["E_IS_OK"].ToString().Trim().Equals("1")) { checkDbk = dr["E_IN_MATERIAL_NO"].ToString(); } if (!this.custom.Equals("Zg")) { if (dr["D_IS_OK"].ToString().Trim().Equals("1")) { checkZgPline = dr["GROUP_ROLL"].ToString(); } } } //param.Add(mscPline); //param.Add(msc); //param.Add(materialNo); //param.Add(dr["PROCESS_SEQ"].ToString()); //listSource = EntityHelper.GetData( // "com.steering.pss.plnsaleord.order.CoreOrderDesignBom.getOrdDesignBom", new object[] { // param, checkDbk, checkZgPline }, this.ob); listSource = EntityHelper.GetData( "com.steering.pss.plnsaleord.order.CoreOrderDesignBom.getOrdLineDesignBom", new object[] { desginKey, checkDbk, checkZgPline }, this.ob); slmOrdDesignBomEntityBindingSource.DataSource = listSource; PlanComm.setGridActivation(ultraGridBom.DisplayLayout.Bands[0], "CHC"); ultraGridBom.Update(); IQueryable checkRows = ultraGridBom.Rows.AsQueryable().Where(" Bom = '" + bom + "' "); if (checkRows.Count() == 0) { return; } checkRows.First().Cells["CHC"].Value = true; ultraGridBom.ActiveRow = checkRows.First(); } /// /// 查询 可选产线 /// /// /// private void DoQueryPline(string inMaterialNo, string outMaterialNo) { ArrayList param = new ArrayList(); param.Add(inMaterialNo); param.Add(outMaterialNo); param.Add(desginKey); param.Add(mscPline); param.Add(finalUser); param.Add(producCode); List listSource = EntityHelper.GetData( "com.steering.pss.plnsaleord.order.CoreSaleOrderReceive.getBomMaterialDpl", new object[] { param }, this.ob); this.slmBaseMaterialDPlEntitybindingSource.DataSource = listSource; PlanComm.setGridActivation(this.ultraGridDPine.DisplayLayout.Bands[0], "CHC"); ultraGridDPine.Update(); IQueryable checkRows = ultraGridDPine.Rows.AsQueryable().Where(" PlineCode = '" + plinCode + "' "); if (checkRows.Count() == 0) { return; } checkRows.First().Cells["CHC"].Value = true; ultraGridDPine.ActiveRow = checkRows.First(); } /// /// 新增镦拔扩规格 /// private void DoAddEspec() { ultraGridBom.UpdateData(); IQueryable checkRows = ultraGridBom.Rows.AsQueryable().Where(" CHC = 'True' "); if (checkRows.Count() == 0) { MessageUtil.ShowTips("未指定钢种!"); return; } UltraGridRow ugr = checkRows.First(); FrmAddEinSpec addSpec = new FrmAddEinSpec(this.ob); ArrayList param = new ArrayList(); param.Add(desginKey); param.Add(ugr.Cells["MscPline"].Value.ToString()); DataTable dtProcess = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CorePlnSaleOrder.queryMscplPrc", new object[] { param }, this.ob); if (dtProcess != null && dtProcess.Rows.Count > 0) { string bjType = ""; foreach (DataRow dr in dtProcess.Rows) { if (dr["PROCESS_CODE"].ToString().Equals("E")) { bjType = dr["PROCESS_CODE_C"].ToString(); } } if (bjType.Equals("")) { MessageUtil.ShowError("未找到镦拔扩二级工序!"); return; } addSpec.Prolineinfo = bjType; addSpec.Gztype = ugr.Cells["Gradecode"].Value.ToString(); addSpec.BjOutdiameter = outdiameter; addSpec.BjWallthick = wallthick; addSpec.ShowDialog(); if (addSpec.isModify) { ArrayList listMscPline = new ArrayList(); ArrayList listwholeBacklog = new ArrayList(); ArrayList listParam = new ArrayList(); listMscPline.Add(ugr.Cells["MscPline"].Value.ToString()); listwholeBacklog.Add(ugr.Cells["wholeBacklog"].Value.ToString()); listParam.Add(desginKey); listParam.Add(msc); listParam.Add(mscStyle); listParam.Add(psc);//产品码 listParam.Add(outdiameter); listParam.Add(wallthick); listParam.Add(specCode);//规格 listParam.Add(specName); listParam.Add(modelCode);//扣型 listParam.Add(modelName); listParam.Add(producCode);//品名 listParam.Add(producName); listParam.Add(outsBilletFl);//外购坯(COM_BASE_INFO:1218) listParam.Add(outsStlPipeFl);//外购管(COM_BASE_INFO:1219) CoreClientParam ccp = new CoreClientParam(); ccp.ServerName = "com.steering.pss.sale.order.craftDesign.main.CraftDesignStandard"; ccp.MethodName = "checkNewSpec"; //ccp.ServerParams = new object[] { desginKey, msc, listMscPline, // listwholeBacklog, outdiameter, wallthick, specCode, specName, psc }; ccp.ServerParams = new object[] { listParam, listMscPline, listwholeBacklog }; ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal); if (ccp.ReturnCode != -1) { MessageUtil.ShowTips(ccp.ReturnInfo); } } } DoQuery(); } /// /// 保存更改 /// private void DoSave() { try { ultraGridBom.UpdateData(); ultraGridDPine.UpdateData(); IQueryable checkRows = ultraGridBom.Rows.AsQueryable().Where("CHC = 'True'"); PlnSaleordProcEntity orderPrcEntity = new PlnSaleordProcEntity(); if (checkRows.Count() == 0) { MessageUtil.ShowError("未选择任何BOM!"); return; } IQueryable checkRows1 = this.ultraGridDPine.Rows.AsQueryable().Where("CHC = 'True'"); DataTable dtSatus = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CoreSaleOrderReceive.querySaleProcStatus", new object[] { ordLnDlyPk, plnDivideId }, this.ob); if (dtSatus == null || dtSatus.Rows.Count <= 0) { MessageUtil.ShowError("找不到合同信息!"); this.Close(); return; } string outsStlPipeFl = dtSatus.Rows[0]["OUTS_STL_PIPE_FL"].ToString(); orderPrcEntity.Bom = checkRows.First().Cells["Bom"].Value.ToString(); DataTable dtBom = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CoreOrderDesignBom.getDesignBomInf", new object[] { orderPrcEntity.Bom }, this.ob); if (dtBom == null || dtBom.Rows.Count <= 0) { return; } orderPrcEntity.GroupRollAll = dtBom.Rows[0]["D_PLINE"].ToString(); orderPrcEntity.Gradecode = dtBom.Rows[0]["GRADECODE"].ToString(); orderPrcEntity.EInMaterialDesc = dtBom.Rows[0]["E_IN_MATERIAL_DESC"].ToString(); orderPrcEntity.EInMaterialNo = dtBom.Rows[0]["E_IN_MATERIAL_NO"].ToString(); orderPrcEntity.DimaterYlg = dtBom.Rows[0]["DIMATER"].ToString(); orderPrcEntity.HeightYlg = dtBom.Rows[0]["HEIGHT"].ToString(); orderPrcEntity.GroupJgx = FrmDefGroup.DefJgxGourp(desginKey, dtSatus.Rows[0]["INDEX_SEQ"].ToString(), orderPrcEntity.Bom, this.ob); orderPrcEntity.GroupRcl = FrmDefGroup.DefRclGourp(desginKey, dtSatus.Rows[0]["INDEX_SEQ"].ToString(), orderPrcEntity.Bom, this.ob); #region 判断坯料的属性 string dinMaterial = ""; ///轧管投入物料(炼钢末工序产出物料) if (!dtBom.Rows[0]["D_IN_MATERIAL_NO"].ToString().Equals("")) { dinMaterial = dtBom.Rows[0]["D_IN_MATERIAL_NO"].ToString(); } else if (!dtBom.Rows[0]["C_OUT_MATERIAL_NO"].ToString().Equals("")) { dinMaterial = dtBom.Rows[0]["C_OUT_MATERIAL_NO"].ToString(); } else if (!dtBom.Rows[0]["B_OUT_MATERIAL_NO"].ToString().Equals("")) { dinMaterial = dtBom.Rows[0]["B_OUT_MATERIAL_NO"].ToString(); } else { dinMaterial = dtBom.Rows[0]["A_OUT_MATERIAL_NO"].ToString(); } orderPrcEntity.StuffProperty = PlnSaleOrderBase.stuffProperty(dinMaterial); #endregion // 轧管去向 orderPrcEntity.Abc = PlnSaleOrderBase.getPlnOrdZgAbc(dtBom.Rows[0]["WHOLE_BACKLOG"].ToString(), dtBom.Rows[0]["WHOLE_BACKLOG_DESC"].ToString()); #region 确认 if (this.custom.Equals("Dbk")) { orderPrcEntity.EIsOk = "1"; orderPrcEntity.DIsOk = dtSatus.Rows[0]["D_IS_OK"].ToString(); orderPrcEntity.GradecodeIsOk = dtSatus.Rows[0]["GRADECODE_IS_OK"].ToString(); if (checkRows1.Count() == 0) { if (ultraGridDPine.Rows.Count > 0) { orderPrcEntity.GroupRoll = ultraGridDPine.Rows[0].Cells["PlineCode"].Value.ToString(); } orderPrcEntity.DIsOk = "0"; } else { orderPrcEntity.GroupRoll = checkRows1.First().Cells["PlineCode"].Value.ToString(); } if (!orderPrcEntity.Bom.Equals(dtSatus.Rows[0]["BOM"].ToString())) { orderPrcEntity.GradecodeIsOk = "0"; } } else if (this.custom.Equals("Zg")) { orderPrcEntity.EIsOk = dtSatus.Rows[0]["E_IS_OK"].ToString(); orderPrcEntity.DIsOk = "1"; orderPrcEntity.GradecodeIsOk = dtSatus.Rows[0]["GRADECODE_IS_OK"].ToString(); if (checkRows1.Count() == 0) { MessageUtil.ShowError("未选择任何轧管产线!"); return; } orderPrcEntity.GroupRoll = checkRows1.First().Cells["PlineCode"].Value.ToString(); if (!orderPrcEntity.Bom.Equals(dtSatus.Rows[0]["BOM"].ToString())) { orderPrcEntity.GradecodeIsOk = "0"; } } else if (this.custom.Equals("Grade")) { orderPrcEntity.EIsOk = dtSatus.Rows[0]["E_IS_OK"].ToString(); orderPrcEntity.DIsOk = dtSatus.Rows[0]["D_IS_OK"].ToString(); orderPrcEntity.GradecodeIsOk = "1"; if (checkRows1.Count() == 0) { if (ultraGridDPine.Rows.Count > 0) { orderPrcEntity.GroupRoll = ultraGridDPine.Rows[0].Cells["PlineCode"].Value.ToString(); } } else { orderPrcEntity.GroupRoll = checkRows1.First().Cells["PlineCode"].Value.ToString(); } } else { if (checkRows1.Count() == 0) { MessageUtil.ShowError("未选择任何轧管产线!"); return; } orderPrcEntity.GroupRoll = checkRows1.First().Cells["PlineCode"].Value.ToString(); orderPrcEntity.EIsOk = "1"; orderPrcEntity.DIsOk = "1"; orderPrcEntity.GradecodeIsOk = "1"; } #endregion if (dtSatus.Rows[0]["PROCESS_SEQ"].ToString().Contains("D") && !orderPrcEntity.GroupRoll.Trim().Equals("C072") && !outsStlPipeFl.Equals("121903") && !outsStlPipeFl.Equals("121902")) { #region 合同量转换 OutOrdParamEntity outOrdParam = new OutOrdParamEntity(); InOrdParamEntity inOrdParam = new InOrdParamEntity(); PlnGetOrdAmount ordAmountCal = new PlnGetOrdAmount(this.ob); DateTime date = new DateTime(); string errMessage = ""; double putRate = 1; if (DateTime.TryParse(dtSatus.Rows[0]["ROLL_MONTH"].ToString(), out date)) { //投料率 putRate = FrmPlnSaleOrder.queryPutRate(date.Year, date.Month, this.ob); } inOrdParam = ordAmountCal.getInOrdPlnParam(desginKey, dtSatus.Rows[0]["INDEX_SEQ"].ToString(), ordLnDlyPk, plnDivideId, orderPrcEntity.GroupRoll, orderPrcEntity.Bom, dtSatus.Rows[0]["CODE_JG"].ToString(), putRate); if (!ordAmountCal.isRightParam(inOrdParam, desginKey, dtSatus.Rows[0]["CODE_JG"].ToString(), orderPrcEntity.Bom, orderPrcEntity.GroupRoll, out errMessage)) { MessageUtil.ShowError(errMessage); return; } ordAmountCal.InEnity = inOrdParam; outOrdParam = ordAmountCal.getOrdAmount(); if (outOrdParam.ErrCode == -1) { MessageUtil.ShowError("合同量转换出错(" + outOrdParam.ErrMessage + ")。"); return; } orderPrcEntity.WeightPerM = outOrdParam.WeightMi.ToString(); orderPrcEntity.PlanWtD = outOrdParam.WeightInA.ToString(); orderPrcEntity.PlanNumD = outOrdParam.PlanNum.ToString(); orderPrcEntity.AimLenRoll = outOrdParam.AimlengthZg.ToString(); orderPrcEntity.AimLenEnd = outOrdParam.AimLength.ToString(); orderPrcEntity.PlanPMain = outOrdParam.WeightPc.ToString(); orderPrcEntity.PlanTotLenD = (outOrdParam.PlanNum * outOrdParam.AimLength).ToString(); orderPrcEntity.TotLenOneP = outOrdParam.TotLenOneP.ToString(); orderPrcEntity.CutNumP = outOrdParam.CutNumP.ToString(); orderPrcEntity.RollLength = outOrdParam.RollLength.ToString(); orderPrcEntity.AimWallthick = outOrdParam.AimWallthick.ToString(); orderPrcEntity.LenRollMax = outOrdParam.LenRollMax.ToString(); orderPrcEntity.LenRollMin = outOrdParam.LenRollMin.ToString(); orderPrcEntity.AimOutdiameter = outOrdParam.AimOutdiameter.ToString(); orderPrcEntity.FeedRate = putRate.ToString(); orderPrcEntity.Coefficient = outOrdParam.Coefficient.ToString(); orderPrcEntity.CoefficientMin = outOrdParam.CoefficientMin.ToString(); orderPrcEntity.PlanPMainMin = outOrdParam.PlanPMainMin.ToString(); orderPrcEntity.AimWtEnd = outOrdParam.AimWtEnd.ToString(); orderPrcEntity.WeightKzM = outOrdParam.WeightKzM.ToString(); #endregion } orderPrcEntity.OrdLnDlyPk = ordLnDlyPk; orderPrcEntity.PlnDivideId = plnDivideId; int succeed = ServerHelper.SetData("com.steering.pss.plnsaleord.order.CoreSaleOrderReceive.updateSaleordProcBomDp", new object[] { orderPrcEntity }, this.ob); if (succeed > 0) { MessageUtil.ShowTips("保存成功。"); } } catch (Exception ex) { if (!(ex is MESException)) { MessageUtil.ShowError(ex.Message); } } DoQuery(); } /// /// 查询BOM向下可选产线 /// /// /// private void ultraGridBom_AfterRowActivate(object sender, EventArgs e) { string inMaterialNo = ultraGridBom.ActiveRow.Cells["DInMaterialNo"].Value.ToString(); string outMaterialNo = ultraGridBom.ActiveRow.Cells["DOutMaterialNo"].Value.ToString(); DoQueryPline(inMaterialNo, outMaterialNo); } /// /// 控制单选 /// /// /// private void ultraGridBom_CellChange(object sender, Infragistics.Win.UltraWinGrid.CellEventArgs e) { if (e.Cell.Column.Key.Equals("CHC")) { if (Convert.ToBoolean(e.Cell.Row.Cells["CHC"].Text)) { foreach (UltraGridRow uRow in ultraGridBom.Rows) { if (uRow != e.Cell.Row) { uRow.Cells["CHC"].Value = false; } } } else { e.Cell.Row.Cells["CHC"].Value = true; } } } /// /// 控制单选 /// /// /// private void ultraGridDPine_CellChange(object sender, CellEventArgs e) { if (e.Cell.Column.Key.Equals("CHC")) { if (Convert.ToBoolean(e.Cell.Row.Cells["CHC"].Text)) { foreach (UltraGridRow uRow in this.ultraGridDPine.Rows) { if (uRow != e.Cell.Row) { uRow.Cells["CHC"].Value = false; } } } else { e.Cell.Row.Cells["CHC"].Value = true; } } } } }