using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using Core.Mes.Client.Comm.Format; using Core.Mes.Client.Comm.Tool; using Core.StlMes.Client.PlnSaleOrd.BaseMethod; using Core.StlMes.Client.PlnSaleOrd.炼钢计划.entity; using CoreFS.CA06; using Infragistics.Win; using Infragistics.Win.UltraWinEditors; using Infragistics.Win.UltraWinGrid; namespace Core.StlMes.Client.PlnSaleOrd.炼钢计划 { /// /// 组炉组烧计划编制 /// public partial class FrmSteelMakingPlanDesign : FrmBase { private OpeBase ob; public FrmSteelMakingPlanDesign() { this.IsLoadUserView = true; InitializeComponent(); } public FrmSteelMakingPlanDesign(OpeBase ob) { this.ob = ob; InitializeComponent(); this.IsLoadUserView = true; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; //注册生产订单值变化事件 controlOrderPlan1.ultraGridCast.CellChange += ultraGridCast_CellChange; //注册生产订单初始行事件 controlOrderPlan1.ultraGridCast.InitializeRow += ultraGridCast_InitializeRow; } void ultraGridCast_InitializeRow(object sender, InitializeRowEventArgs e) { BaseHelper.ControlCellEdit(e.Row); } /// /// 调用控件事件 /// /// /// void ultraGridCast_CellChange(object sender, CellEventArgs e) { controlOrderPlan1.ultraGridCast.UpdateData(); if (e.Cell.Column.Key.Equals("CanNum")) { if (e.Cell.Row.Cells["PlanWtS"].Value == null || e.Cell.Row.Cells["PlanWtS"].Value.ToString().Equals("") || e.Cell.Row.Cells["PlanNumS"].Value == null || e.Cell.Row.Cells["PlanNumS"].Value.ToString().Equals("") || e.Cell.Value == null || e.Cell.Value.ToString().Equals("")) { e.Cell.Value = 0; e.Cell.Row.Cells["CanWgt"].Value = 0; return; } int canNum = Convert.ToInt32(e.Cell.Value.ToString()); //排产重量 double planWts = Convert.ToDouble(e.Cell.Row.Cells["PlanWtS"].Value.ToString()); //排产支数 int planNums = Convert.ToInt32(e.Cell.Row.Cells["PlanNumS"].Value.ToString()); //已组炉支数 int planedNums = Convert.ToInt32(e.Cell.Row.Cells["PlanedNum"].Text == "" ? "0" : e.Cell.Row.Cells["PlanedNum"].Text.ToString()); //已组炉重量 double planedWgt = Convert.ToDouble(e.Cell.Row.Cells["PlanedWt"].Text == "" ? "0" : e.Cell.Row.Cells["PlanedWt"].Text.ToString()); if (canNum > planNums - planedNums) { e.Cell.Value = planNums - planedNums; e.Cell.Row.Cells["CanWgt"].Value = planWts - planedWgt; return; } //求重量 e.Cell.Row.Cells["CanWgt"].Value = Math.Round(canNum * planWts / planNums, 3); Calculation(); } if (e.Cell.Column.Key.Equals("CHC")) { Calculation(); } } private void FrmSteelMakingPlanDesign_Load(object sender, EventArgs e) { InitFurcaseInfo(); InitSurplusType(); BaseHelper.setOtherColumnReadOnly(ultraGridSurplus, new string[] { "CHC", "TOT_MUM_M", "SURPLUS_TYPE" }); BaseHelper.InitCellPosition(ultraGridSurplus, new string[] { "DIAMETER", "LEN_GP_SINGLE", "CUT_NUM_GP", "LENGTH_M", "WEIGHT_M", "TOT_WEIGHT_M", "TOT_MUM_M" }); BaseHelper.setColumnBackColor(ultraGridSurplus, new string[] { "TOT_MUM_M", "SURPLUS_TYPE" }); BaseHelper.GridColumnCount(ultraGridSurplus, new string[] { "TOT_MUM_M" }); BaseHelper.GridColumnSum(ultraGridSurplus, new string[] { "TOT_WEIGHT_M" }); BaseHelper.setColumnBackColor(controlOrderPlan1.ultraGridCast, new string[] { "CanNum" }); BaseHelper.GridColumnCount(controlOrderPlan1.ultraGridCast, new string[] { "CanNum" }); BaseHelper.GridColumnSum(controlOrderPlan1.ultraGridCast, new string[] { "CanWgt" }); } /// /// 初始化余材下拉框 /// private void InitSurplusType() { UltraComboEditor uce = new UltraComboEditor(); SteelHelper.InitSurplusType(uce); this.Controls.Add(uce); uce.Visible = false; uce.DropDownListWidth = -1; uce.DropDownStyle = DropDownStyle.DropDownList; ultraGridSurplus.DisplayLayout.Bands[0].Columns["SURPLUS_TYPE"].EditorComponent = uce; ultraGridSurplus.DisplayLayout.Bands[0].Columns["SURPLUS_TYPE"].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.DropDownList; } /// /// 初始化组炉信息(由于炼钢产线基础数据暂未维护,先给默认值) /// private void InitFurcaseInfo() { //最小重量 txtMinwgt.Value = 60; //最大重量 txtMaxwgt.Value = 80; //标准重量 txtStardWgt.Value = (Convert.ToDouble(txtMinwgt.Value.ToString()) + Convert.ToDouble(txtMaxwgt.Value.ToString())) / 2; //炉龄 txtFurnaceAge.Value = 100; //最大炉龄 double maxFurnaceAge = 200; //计划重量:最小重量+ 炉龄*(最大重量-最小重量)/最大炉龄 txtPlanwgt.Value = Convert.ToDouble(txtMinwgt.Value.ToString()) + Convert.ToDouble(txtFurnaceAge.Value.ToString()) * (Convert.ToDouble(txtMaxwgt.Value.ToString()) - Convert.ToDouble(txtMinwgt.Value.ToString())) / maxFurnaceAge; } /// /// 订单选择 /// /// /// private void buttonOrderSelect_Click(object sender, EventArgs e) { //将已选的订单行值转回去(如果没选择行,则直接转null) PlnOrderCastSEntity slectedEntity = null; if (controlOrderPlan1.ultraGridCast.Rows.Count() > 0) { UltraGridRow ugr = controlOrderPlan1.ultraGridCast.Rows[0]; slectedEntity = (PlnOrderCastSEntity)ugr.ListObject; } FrmSteelMakingOrder frmSteelMakingOrder = new FrmSteelMakingOrder(slectedEntity, this.ob); frmSteelMakingOrder.ShowDialog(); ArrayList entityList = frmSteelMakingOrder.EntityList; if (entityList != null) { foreach (PlnOrderCastSEntity entity in entityList) { controlOrderPlan1.Add(entity); } } } /// /// 订单取消 /// /// /// private void buttonOrderCancel_Click(object sender, EventArgs e) { ArrayList entityList = controlOrderPlan1.GetChcRows(); if (entityList == null) { MessageUtil.ShowWarning("请选择要取消的订单!"); return; } if (entityList != null) { foreach (PlnOrderCastSEntity entity in entityList) { controlOrderPlan1.Delete(entity); } } } /// /// 选择订单自动生成余材信息 /// /// /// private void buttonSurplusInit_Click(object sender, EventArgs e) { PlnOrderCastSEntity castEntity = controlOrderPlan1.GetActiveRow(); if (castEntity == null) { return; } if (MessageUtil.ShowYesNoAndQuestion("是否自动生余材信息?(根据激活订单)") == DialogResult.No) { return; } DataRow dr = dataTable1.NewRow(); //余材参照铸造订单号 dr["REF_ORD_ZZ"] = castEntity.ProPlanId; ////余材参照管坯需求号 //dr["REF_GPREQ_ID"] = castEntity.GpreqId; //倍尺数 dr["CUT_NUM_GP"] = castEntity.CutNumGp; //管坯直径 dr["DIAMETER"] = castEntity.DiameterLz; //单倍坯长(mm) dr["LEN_GP_SINGLE"] = castEntity.LenGpSingle; //母坯长度(mm) dr["LENGTH_M"] = castEntity.LengthLz; //母坯单重 dr["WEIGHT_M"] = castEntity.WtCastOne; dataTable1.Rows.Add(dr); } /// /// 删除余材 /// /// /// private void buttonSurplusDelete_Click(object sender, EventArgs e) { try { ultraGridSurplus.UpdateData(); IQueryable chcRows = ultraGridSurplus.Rows.AsQueryable().Where(a => a.GetValue("CHC") == "True"); if (chcRows == null || chcRows.Count() == 0) { return; } if (MessageUtil.ShowYesNoAndQuestion("是否删除选择余材信息?") == DialogResult.No) { return; } foreach (UltraGridRow ugr in chcRows) { ugr.Delete(); } } finally { } } /// /// 查询炉信息 /// /// /// private void buttonFurcaseQuery_Click(object sender, EventArgs e) { controlFurNacePlan1.QueryFurNace(this.ob); } /// /// 组炉 /// /// /// private void buttonAddFurnace_Click(object sender, EventArgs e) { ultraGridSurplus.UpdateData(); controlOrderPlan1.ultraGridCast.UpdateData(); IQueryable chcSurplusRows = ultraGridSurplus.Rows.AsQueryable().Where(a => a.GetValue("CHC") == "True"); IQueryable chcCastRows = controlOrderPlan1.ultraGridCast.Rows.AsQueryable().Where(a => a.GetValue("CHC") == "True"); if (chcCastRows == null || chcCastRows.Count() == 0) { MessageUtil.ShowWarning("请选择要组炉的订单!"); return; } //余材json字符串集合 ArrayList surplusList = new ArrayList(); if (chcSurplusRows != null && chcSurplusRows.Count() != 0) { foreach (UltraGridRow ugr in chcSurplusRows) { PlnSteelforOrdEntity entity = RowToEntity(ugr); if (Convert.ToDouble(entity.TotWeightM) <= 0) { MessageUtil.ShowWarning("余材信息支数不能为0!"); return; } if (entity.SurplusType.Equals("")) { MessageUtil.ShowWarning("请选择余材类型!"); return; } surplusList.Add(JSONFormat.Format(entity)); } } //订单json字符串集合 ArrayList castList = new ArrayList(); foreach (UltraGridRow ugr in chcCastRows) { PlnOrderCastSEntity entity = (PlnOrderCastSEntity)ugr.ListObject; if (entity.CanNum == null || entity.CanNum == "") { MessageUtil.ShowWarning("订单可组炉支数不能为0!"); return; } castList.Add(JSONFormat.Format(entity)); } //操作人 string userName = UserInfo.GetUserName(); //计划重量 string planWgt = txtPlanwgt.Value.ToString(); //总重量 string allWgt = txtAllwgt.Value.ToString(); //总支数 string allnum = txtAllnum.Value.ToString(); //备注 string memo = txtMemo.Text.Trim(); if (MessageUtil.ShowYesNoAndQuestion("是否组炉?") == DialogResult.No) { return; } string[] param = SteelHelper.SetData("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelMakingPlanDesign.furnaceGroup", new object[] { surplusList, castList, userName, planWgt, allWgt, allnum, memo }, this.ob); if (param == null) { MessageUtil.ShowTips("服务端处理失败!"); } else { MessageUtil.ShowTips(param[1]); if ((bool.Parse(param[0]))) { controlFurNacePlan1.QueryFurNace(this.ob); } } } /// /// 行转实体类 /// /// /// private PlnSteelforOrdEntity RowToEntity(UltraGridRow ugr) { PlnSteelforOrdEntity entity = new PlnSteelforOrdEntity(); ////余材参照铸造订单号 //entity.RefGpreqId = ugr.Cells["REF_GPREQ_ID"].Text.Trim(); ////余材参照铸造订单号 //entity.RefOrdZz = ugr.Cells["REF_ORD_ZZ"].Text.Trim(); if (ugr.Cells["SURPLUS_TYPE"].Value == null) { entity.SurplusType = ""; } else { entity.SurplusType = ugr.Cells["SURPLUS_TYPE"].Value.ToString(); } //倍尺数 entity.CutNumGp = (decimal?)Convert.ToDouble(ugr.Cells["CUT_NUM_GP"].Text == "" ? "0" : ugr.Cells["CUT_NUM_GP"].Text.Trim()); //管坯直径 //entity.Diameter = (decimal?)Convert.ToDouble(ugr.Cells["DIAMETER"].Text == "" ? "0" : ugr.Cells["DIAMETER"].Text.Trim()); //单倍坯长(mm) entity.LenGpSingle = (decimal?)Convert.ToDouble(ugr.Cells["LEN_GP_SINGLE"].Text == "" ? "0" : ugr.Cells["LEN_GP_SINGLE"].Text.Trim()); //母坯长度(mm) entity.LengthM = (decimal?)Convert.ToDouble(ugr.Cells["LENGTH_M"].Text == "" ? "0" : ugr.Cells["LENGTH_M"].Text.Trim()); //母坯单重 entity.WeightM = (decimal?)Convert.ToDouble(ugr.Cells["WEIGHT_M"].Text == "" ? "0" : ugr.Cells["WEIGHT_M"].Text.Trim()); //本炉本订单母坯重量 entity.TotWeightM = (decimal?)Convert.ToDouble(ugr.Cells["TOT_WEIGHT_M"].Text == "" ? "0" : ugr.Cells["TOT_WEIGHT_M"].Text.Trim()); //本炉本订单母坯支数 entity.TotMumM = (decimal?)Convert.ToDouble(ugr.Cells["TOT_MUM_M"].Text == "" ? "0" : ugr.Cells["TOT_MUM_M"].Text.Trim()); //获取订单第一行(肯定存在这一行),然后取钢种等多条订单相同的信息 PlnOrderCastSEntity castentity = (PlnOrderCastSEntity)controlOrderPlan1.ultraGridCast.Rows[0].ListObject; entity.Gradecode = castentity.Gradecode; entity.Gradename = castentity.Gradename; entity.Castingtype = castentity.Castingtype; entity.Cic = castentity.Cic; return entity; } /// /// 删除炉 /// /// /// private void buttonDeleteFurnace_Click(object sender, EventArgs e) { ArrayList entityList = controlFurNacePlan1.GetParentChcRow(); if (entityList == null) { MessageUtil.ShowTips("请选择要删除的炉!"); return; } ArrayList jsonlist = new ArrayList(); foreach (PlnSteelforfurnaceOEntity entity in entityList) { jsonlist.Add(JSONFormat.Format(entity)); } if (MessageUtil.ShowYesNoAndQuestion("是否删除炉?") == DialogResult.No) { return; } string[] param = SteelHelper.SetData("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelMakingPlanDesign.deleteFurnace", new object[] { jsonlist }, this.ob); if (param == null) { MessageUtil.ShowTips("服务端处理失败!"); } else { MessageUtil.ShowTips(param[1]); if ((bool.Parse(param[0]))) { controlFurNacePlan1.QueryFurNace(this.ob); } } } /// /// ultraGridSurplus字段发生变化事件 /// /// /// private void ultraGridSurplus_CellChange(object sender, CellEventArgs e) { ultraGridSurplus.UpdateData(); if (e.Cell.Column.Key.Equals("TOT_MUM_M")) { if (e.Cell.Row.Cells["DIAMETER"].Value == null || e.Cell.Row.Cells["DIAMETER"].Value.ToString().Equals("") || e.Cell.Value == null || e.Cell.Value.ToString().Equals("")) { e.Cell.Row.Cells["TOT_WEIGHT_M"].Value = 0; e.Cell.Value = 0; return; } double dimater = Convert.ToDouble(e.Cell.Row.Cells["DIAMETER"].Value.ToString()); e.Cell.Row.Cells["TOT_WEIGHT_M"].Value = Convert.ToString(Math.Round((7.8 * 3.1415926 / 4 * dimater * dimater) / 1000 / 1000 * Convert.ToDouble(e.Cell.Value.ToString()), 3)); Calculation(); } else if (e.Cell.Column.Key.Equals("CHC")) { Calculation(); } } /// /// 计算支数和重量(组炉) /// private void Calculation() { IQueryable chcSurplusRows = ultraGridSurplus.Rows.AsQueryable().Where(a => a.GetValue("CHC") == "True"); IQueryable chcCastRows = controlOrderPlan1.ultraGridCast.Rows.AsQueryable().Where(a => a.GetValue("CHC") == "True"); double allwgt = 0; int allnum = 0; if (chcSurplusRows != null && chcSurplusRows.Count() > 0) { foreach (UltraGridRow ugr in chcSurplusRows) { if (ugr.Cells["TOT_MUM_M"].Value != null && SteelHelper.IsNum(ugr.Cells["TOT_MUM_M"].Value.ToString())) { allnum = allnum + Convert.ToInt32(ugr.Cells["TOT_MUM_M"].Value.ToString()); } if (ugr.Cells["TOT_WEIGHT_M"].Value != null && SteelHelper.IsNum(ugr.Cells["TOT_WEIGHT_M"].Value.ToString())) { allwgt = allwgt + Convert.ToDouble(ugr.Cells["TOT_WEIGHT_M"].Value.ToString()); } } } if (chcCastRows != null && chcCastRows.Count() > 0) { foreach (UltraGridRow ugr in chcCastRows) { if (ugr.Cells["CanNum"].Value != null && SteelHelper.IsNum(ugr.Cells["CanNum"].Value.ToString())) { allnum = allnum + Convert.ToInt32(ugr.Cells["CanNum"].Value.ToString()); } if (ugr.Cells["CanWgt"].Value != null && SteelHelper.IsNum(ugr.Cells["CanWgt"].Value.ToString())) { allwgt = allwgt + Convert.ToDouble(ugr.Cells["CanWgt"].Value.ToString()); } } } txtAllnum.Value = allnum; txtAllwgt.Value = allwgt; } /// /// 控制列可编辑 /// /// /// private void ultraGridSurplus_InitializeRow(object sender, InitializeRowEventArgs e) { BaseHelper.ControlCellEdit(e.Row); } private void ultraTabControl1_SelectedTabChanged(object sender, Infragistics.Win.UltraWinTabControl.SelectedTabChangedEventArgs e) { if (e.Tab.Key.Equals("0")) { controlFurNacePlan1.QueryFurNace(this.ob); } else { controlFurNacePlan2.QueryFurNace(this.ob); } } /// /// 查询炉 /// /// /// private void buttonFurnaceQuery_Click(object sender, EventArgs e) { controlFurNacePlan2.QueryFurNace(this.ob); } /// /// 组浇 /// /// /// private void buttonCastGroup_Click(object sender, EventArgs e) { controlFurNacePlan2.ultraGridFurName.UpdateData(); ArrayList entityList = controlFurNacePlan2.GetParentChcRow(); if (entityList == null) { MessageUtil.ShowTips("请选择炉!"); return; } ArrayList jsonlist = new ArrayList(); foreach (PlnSteelforfurnaceOEntity entity in entityList) { jsonlist.Add(JSONFormat.Format(entity)); } if (MessageUtil.ShowYesNoAndQuestion("是否组浇?") == DialogResult.No) { return; } string username = UserInfo.GetUserName(); string[] param = SteelHelper.SetData("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelMakingPlanDesign.castGroup", new object[] { jsonlist, username }, this.ob); if (param == null) { MessageUtil.ShowTips("服务端处理失败!"); } else { MessageUtil.ShowTips(param[1]); if ((bool.Parse(param[0]))) { controlFurNacePlan2.QueryFurNace(this.ob); controlCastPlan1.QueryCast("", "", "", "","",this.ob); } } } /// /// 查询浇次 /// /// /// private void buttonCastQuery_Click(object sender, EventArgs e) { controlCastPlan1.QueryCast("", "", "", "","", this.ob); } /// /// 删除浇次信息 /// /// /// private void buttonCastDelete_Click(object sender, EventArgs e) { controlCastPlan1.ultraGridCast.UpdateData(); ArrayList entitylist = controlCastPlan1.GetChcRow(); if (entitylist == null) { MessageUtil.ShowTips("请选择浇次!"); return; } ArrayList jsonlist = new ArrayList(); foreach (PlnSteelforcastEntity entity in entitylist) { jsonlist.Add(JSONFormat.Format(entity)); } if (MessageUtil.ShowYesNoAndQuestion("是否删除浇次?") == DialogResult.No) { return; } string[] param = SteelHelper.SetData("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelMakingPlanDesign.deleteCast", new object[] { jsonlist }, this.ob); if (param == null) { MessageUtil.ShowTips("服务端处理失败!"); } else { MessageUtil.ShowTips(param[1]); if ((bool.Parse(param[0]))) { controlFurNacePlan2.QueryFurNace(this.ob); controlCastPlan1.QueryCast("", "", "", "", "",this.ob); } } } } }