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);
}
}
}
}
}