using Core.StlMes.Client.PlnSaleOrd.PlanStove.entity; using CoreFS.CA06; using Infragistics.Win.UltraWinGrid; 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 Core.StlMes.Client.PlnSaleOrd; using Core.Mes.Client.Comm.Control; using System.Text.RegularExpressions; using Core.Mes.Client.Comm.Format; using Core.Mes.Client.Comm.Tool; using CoreFS.SA06; using Core.Mes.Client.Comm.Server; namespace Core.StlMes.Client.PlnSaleOrd.PlanStove.Dlg { ///物料选择框 public partial class FrmMaterialChoose : FrmBase { /// 接收从母窗体传过来的单元格事件,确定后会返还给母窗体 /// public string m_InwlId=""; private string m_ProPlanId=""; private string m_GxPlanNo=""; private string m_heatplanno=""; private string m_loginusername=""; private string m_StoveNo=""; private string m_BatchNo=""; private string m_BatchGroupNo=""; private int m_OriginNum=0;//保存修改前作业计划量 private bool Isupdate = false; private int m_OriginTotalnum = 0;//保存该组物料总量 private double m_OriginTOtalWt = 0; private int m_MaxValidCount = 0;//保存能投入的最大量 private string m_PlanStatus = "计划"; private Dictionary RowsCountsMapping = new Dictionary(); /// /// 物料确定的事件,可以将物料清单和母窗体的单元格事件发送给订阅者 /// public event Action> OnMaterialConfirm; public event Action OnDataChange; public FrmMaterialChoose(OpeBase ob, string InwlId, string ProPlanID, string GxPlanNo, string CustomerInfo, string StoveNo, string BatchNO,string BatchGroupNo, string HEAT_PLAN_NO, int outNum,string PlanStatus,string username) { InitializeComponent(); this.ob = ob; this.CustomInfo = CustomerInfo; m_InwlId = InwlId; m_ProPlanId = ProPlanID; m_GxPlanNo = GxPlanNo; //this.OnMaterialConfirm += materialChoose_OnMaterialConfirm; Isupdate = true; m_StoveNo = StoveNo; m_BatchNo = BatchNO; m_BatchGroupNo = BatchGroupNo; m_OriginNum = outNum; m_heatplanno = HEAT_PLAN_NO; m_loginusername = username; m_PlanStatus = PlanStatus; } public FrmMaterialChoose(OpeBase ob,string InwlId,string ProPlanID,string GxPlanNo,string CustomerInfo,string username) { InitializeComponent(); this.ob = ob; this.CustomInfo = CustomerInfo; m_InwlId = InwlId; m_loginusername = username; m_ProPlanId = ProPlanID; m_GxPlanNo = GxPlanNo; this.OnMaterialConfirm += materialChoose_OnMaterialConfirm; } /// /// 窗体的加载事件,初始化数据 /// /// /// private void FrmMaterialChoose_Load(object sender, EventArgs e) { Init_Comm(); queryAll(); if (CustomInfo == CustomInfoDef.DEFINE_CUSTOMER_ZG) { this.ultraGrid1.DisplayLayout.Bands[0].Columns["BATCH_NO"].Hidden = true; this.ultraGrid1.DisplayLayout.Bands[0].Columns["BATCH_GROUD_NO"].Hidden = true; } if (Isupdate) { if (this.ultraGrid1.Rows.Count <= 0) { MessageUtil.ShowTips("未找到对应的物料!"); this.Close(); return; } var row = this.ultraGrid1.Rows.First(); try { if (CustomInfo == CustomInfoDef.DEFINE_CUSTOMER_ZG) { var datasources = EntityHelper.GetData(MethodDef.StoveBase.queryZyC, new Object[] { SqlIDDef.PlanLuZG.queryZYZGC, m_heatplanno }, this.ob); foreach (PlnZyZgCEntity zyzgc in datasources) { var matchrow = this.ultraGrid1.Rows.FirstOrDefault(c => c.Cells["ACT_LEN"].Text.Trim().Equals(zyzgc.LengthGp.ToString().Trim())); if (matchrow != null) { matchrow.Cells["USER_ACT_COUNT"].Value = zyzgc.InGpNum; matchrow.Cells["Choose"].Value = true; matchrow.Cells["USER_ACT_COUNT"].Appearance.BackColor = Color.Pink; } } foreach (var matrow in this.ultraGrid1.Rows) { int count = 0; try { count = Convert.ToInt32(matrow.Cells["USER_ACT_COUNT"].Value); } catch { } RowsCountsMapping.Add(matrow, count); } } else if(CustomInfo == CustomInfoDef.DEFINE_CUSTOMER_JG) { } else { int num = Convert.ToInt32(row.Cells["ACT_COUNT"].Text); double wt = Convert.ToDouble(row.Cells["ACT_WEIGHT"].Text); double singlewt = wt / num; m_OriginTotalnum = m_OriginNum + num; m_OriginTOtalWt = CommHelper.GetSpecDecimalBit(singlewt * (m_OriginNum + num), 3); SetTempData(m_OriginNum, CommHelper.GetSpecDecimalBit(singlewt * m_OriginNum, 3)); } } catch { } } this.ultraGrid2.DisplayLayout.Bands[0].Columns["GxProSeq"].Header.Caption = "生产顺序号"; this.ultraGrid2.DisplayLayout.Bands[0].Columns["OrderSource"].Header.Caption = "主合同来源"; this.ultraGrid2.DisplayLayout.Bands[0].Columns["ExeStatus"].Header.Caption = "执行状态"; CommHelper.SetGridColNoEdit(this.ultraGrid1.DisplayLayout.Bands[0], new string[] { "Choose", "USER_ACT_COUNT" }); CommHelper.SetColumnAutoFitSize1(this.ultraGrid1.DisplayLayout.Bands[0]); CommHelper.SetColumnAutoFitSize1(this.ultraGrid2.DisplayLayout.Bands[0]); } #region 控件事件 /// /// toolbarmanager的tool单击事件 /// /// /// private void ultraToolbarsManager1_ToolClick(object sender, Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e) { switch (e.Tool.Key) { case "Confirm": Confirm(); break; case "Cancel": if (this.OnDataChange != null) { OnDataChange(); } this.Close(); break; } } /// /// 物料选择确定事件的方法函数,第一个参数是弹出框中所选的作业计划的集合,第二个参数单击弹出弹出框时传入的本窗口grid1的单元格单击事件参数,只是为了定位最开始用的哪条订单记录 /// /// /// void materialChoose_OnMaterialConfirm(List obj) { switch (CustomInfo) { case CustomInfoDef.DEFINE_CUSTOMER_DBK: ZYResultProcessDBK(obj); break; case CustomInfoDef.DEFINE_CUSTOMER_RCL: ZYResultProcessRCL(obj); break; case CustomInfoDef.DEFINE_CUSTOMER_JG: ZYResultProcessJGX(obj); break; case CustomInfoDef.DEFINE_CUSTOMER_ZG: ZYResultProcessZG(obj); break; } OnDataChange(); //throw new NotImplementedException(); } /// /// grid1的单元格单击的值改变的事件 /// /// /// private void ultraGrid1_CellChange(object sender, Infragistics.Win.UltraWinGrid.CellEventArgs e) { this.ultraGrid1.UpdateData(); if (e.Cell.Column.Key.Equals("USER_ACT_COUNT")) { if (!Regex.IsMatch(e.Cell.Value.ToString(), @"^-?[1-9]\d*$|^0$")) { e.Cell.Value = 0; return; } } if (e.Cell.Text != null) { if (e.Cell.Column.Key.Equals("USER_ACT_COUNT")) { if (!e.Cell.Row.Cells["Choose"].Text.Equals("True")) { e.Cell.Value = e.Cell.OriginalValue; return; } if (Convert.ToInt64(e.Cell.Value) != 0) { long user_act_count = Convert.ToInt64(e.Cell.Value); long act_count = Convert.ToInt64(e.Cell.Row.Cells["ACT_COUNT"].Value); long totalUserCount = 0; foreach (var row in this.ultraGrid1.Rows.Where(c => c.Cells["Choose"].Text.Equals("True") && !c.Cells["USER_ACT_COUNT"].Text.Equals("0"))) { int tmpUserActCount = 0; try { tmpUserActCount = Convert.ToInt32(row.Cells["USER_ACT_COUNT"].Text); } catch { } totalUserCount += tmpUserActCount; } if (user_act_count > act_count) { e.Cell.Value = e.Cell.OriginalValue; } else if (totalUserCount > m_MaxValidCount) { e.Cell.Value = e.Cell.OriginalValue; MessageUtil.ShowWarning("本工序订单的投入量不能大于计划投入量与加投量的和,请检查输入!"); } else { double act_weight = Convert.ToDouble(e.Cell.Row.Cells["ACT_WEIGHT"].Value); double single_weight = act_weight / act_count; e.Cell.Row.Cells["USER_ACT_WEIGHT"].Value = CommHelper.GetSpecDecimalBit(user_act_count * single_weight, 3); e.Cell.Appearance.BackColor = System.Drawing.Color.Pink; this.ultraGrid1.Refresh(); } } else { e.Cell.Row.Cells["USER_ACT_WEIGHT"].Value = 0; } } else if (e.Cell.Column.Key.Equals("Choose")) { if (e.Cell.Text.ToLower() == "true") { e.Cell.Row.Cells["USER_ACT_COUNT"].Activation = Activation.AllowEdit; this.ultraGrid1.Refresh(); var rows = this.ultraGrid1.Rows.Where(c => c.Cells["Choose"].Text.ToLower() == "true"); foreach (UltraGridRow row in rows) { if (CustomInfo != CustomInfoDef.DEFINE_CUSTOMER_ZG) { if (row.Cells["JUDGE_STOVE_NO"].Value.ToString() != e.Cell.Row.Cells["JUDGE_STOVE_NO"].Value.ToString() || row.Cells["BATCH_NO"].Text != e.Cell.Row.Cells["BATCH_NO"].Text || row.Cells["BATCH_GROUD_NO"].Text != e.Cell.Row.Cells["BATCH_GROUD_NO"].Text) { e.Cell.Value = false; Core.Mes.Client.Comm.Tool.MessageUtil.ShowTips("请选择炉号,组号,批号一致的物料"); return; } } else { if (row.Cells["JUDGE_STOVE_NO"].Value.ToString() != e.Cell.Row.Cells["JUDGE_STOVE_NO"].Value.ToString()) { e.Cell.Value = false; Core.Mes.Client.Comm.Tool.MessageUtil.ShowTips("请选择炉号一致的管坯"); return; } } } } } } } #endregion #region 初始化 private void Init_Comm() { switch(CustomInfo) { case CustomInfoDef.DEFINE_CUSTOMER_DBK: init_dbk(); break; case CustomInfoDef.DEFINE_CUSTOMER_JG: init_jgx(); break; case CustomInfoDef.DEFINE_CUSTOMER_RCL: init_rcl(); break; case CustomInfoDef.DEFINE_CUSTOMER_ZG: init_zg(); break; } } private void init_dbk() { this.ultraGrid2.DataSource = this.plnOrderDbkSEntityBindingSource; Core.Mes.Client.Comm.Tool.EntityHelper.ShowGridCaption(this.ultraGrid2.DisplayLayout.Bands[0]); #region Excel2Code 2016/6/14 19:01:00 setColumnPosition("PlineName", 0); setColumnPosition("GxProSeq", 1); setColumnPosition("ProPlanId", 3); setColumnPosition("GxPlanNo", 4); setColumnPosition("ExeStatus", 5); setColumnPosition("Mcount", 6); setColumnPosition("Mstatus", 7); setColumnPosition("IsRepairPln", 8); setColumnPosition("RepairType", 9); setColumnPosition("WeigthS", 10); setColumnPosition("NumS", 11); setColumnPosition("PlanTimeB", 12); setColumnPosition("PlanTimeE", 13); setColumnPosition("InwlDesc", 14); setColumnPosition("OutwlDesc", 15); setColumnPosition("OrderSource", 16); setColumnPosition("OrderNo", 17); setColumnPosition("OrderSeq", 18); setColumnPosition("DeliveryNo", 19); setColumnPosition("Outdiameter", 20); setColumnPosition("Wallthick", 21); setColumnPosition("OutdiameterIn", 22); setColumnPosition("WallthickIn", 23); setColumnPosition("Aimwallthick", 24); setColumnPosition("Aimoutdiameter", 25); setColumnPosition("Aimlength", 26); setColumnPosition("Lengthdisc", 27); setColumnPosition("LengthIn", 28); setColumnPosition("LengthmaxIn", 29); setColumnPosition("LengthminIn", 30); setColumnPosition("LenCuthead", 31); setColumnPosition("LenCutend", 32); setColumnPosition("InWeightS", 33); setColumnPosition("InNumS", 34); setColumnPosition("MatchWtIn", 35); setColumnPosition("MatchNumIn", 36); setColumnPosition("IfMonitorDbk", 37); setColumnPosition("MonitorPoint", 38); setColumnPosition("PrdcrNo", 39); setColumnPosition("ProMonth", 40); setColumnPosition("PreviousGx", 41); setColumnPosition("PrevGxplanId", 42); setColumnPosition("CraftFileNo", 43); setColumnPosition("CraftSeq", 44); setColumnPosition("CraftFileMan", 45); setColumnPosition("StationRoad", 46); setColumnPosition("BatchedWt", 47); setColumnPosition("BatchedNum", 48); setColumnPosition("PlanGroupId", 49); setColumnPosition("ProOrderNo", 50); setColumnPosition("PlnDivideId", 51); setColumnPosition("Finishweight", 52); setColumnPosition("Finishnum", 53); setColumnPosition("ReqBlId", 54); setColumnPosition("Isendgx", 55); setColumnPosition("IsPlanOk", 56); setColumnPosition("AddWtIn", 57); setColumnPosition("AddNumIn", 58); setColumnPosition("ZyBatchId", 59); setColumnPosition("Cic", 60); setColumnPosition("Pic", 61); setColumnPosition("Sic", 62); setColumnPosition("Dic", 63); setColumnPosition("Wic", 64); setColumnPosition("Gic", 65); #endregion } private void init_rcl() { this.ultraGrid2.DataSource = this.plnOrderRclSEntityBindingSource; Core.Mes.Client.Comm.Tool.EntityHelper.ShowGridCaption(this.ultraGrid2.DisplayLayout.Bands[0]); #region Excel2Code 2016/6/14 19:01:27 setColumnPosition("PlineName", 0); setColumnPosition("GxProSeq", 1); setColumnPosition("ProPlanId", 3); setColumnPosition("GxPlanNo", 4); setColumnPosition("IsRepairPln", 5); setColumnPosition("Mcount", 6); setColumnPosition("Mstatus", 7); setColumnPosition("RepairType", 8); setColumnPosition("ExeStatus", 9); setColumnPosition("WeigthS", 10); setColumnPosition("NumS", 11); setColumnPosition("PlanUsetime", 12); setColumnPosition("PlanTimeB", 13); setColumnPosition("PlanTimeE", 14); setColumnPosition("InwlDesc", 15); setColumnPosition("OutwlDesc", 16); setColumnPosition("OrderSource", 17); setColumnPosition("OrderNo", 18); setColumnPosition("OrderSeq", 19); setColumnPosition("DeliveryNo", 20); setColumnPosition("Steelname", 21); setColumnPosition("Wallthick", 22); setColumnPosition("Outdiameter", 23); setColumnPosition("Aimlength", 24); setColumnPosition("Gradename", 25); setColumnPosition("LengthmaxIn", 26); setColumnPosition("LengthminIn", 27); setColumnPosition("IfMonitorRcl", 28); setColumnPosition("MonitorPoint", 29); setColumnPosition("PrdcrNo", 30); setColumnPosition("ProMonth", 31); setColumnPosition("PreviousGx", 32); setColumnPosition("PrevGxPlanId", 33); setColumnPosition("CraftFileNo", 34); setColumnPosition("CraftFileMan", 35); setColumnPosition("CraftSeq", 36); setColumnPosition("Lengthdisc", 37); setColumnPosition("ProOrderNo", 38); setColumnPosition("Finishweight", 39); setColumnPosition("LengthIn", 40); setColumnPosition("InWeightS", 41); setColumnPosition("InNumS", 42); setColumnPosition("PlanGroupId", 43); setColumnPosition("PlnDivideId", 44); setColumnPosition("MatchWtIn", 45); setColumnPosition("ReqBlId", 46); setColumnPosition("MatchNumIn", 47); setColumnPosition("StationRoad", 48); setColumnPosition("BatchedWt", 49); setColumnPosition("BatchedNum", 50); setColumnPosition("Finishnum", 51); setColumnPosition("ZyBatchId", 52); setColumnPosition("Cic", 53); setColumnPosition("Pic", 54); setColumnPosition("Sic", 55); setColumnPosition("Dic", 56); setColumnPosition("Wic", 57); setColumnPosition("Gic", 58); #endregion } private void init_jgx() { this.ultraGrid2.DataSource = this.plnOrderJgxSEntityBindingSource; #region Excel2Code 2016/6/14 19:01:47 setColumnPosition("PlineName", 0); setColumnPosition("GxProSeq", 1); setColumnPosition("ProPlanId", 3); setColumnPosition("GxplanNo", 4); setColumnPosition("IsRepair", 5); setColumnPosition("Mcount", 6); setColumnPosition("Mstatus", 7); setColumnPosition("RepairType", 8); setColumnPosition("ExeStatus", 9); setColumnPosition("NumS", 10); setColumnPosition("PlanUsetime", 11); setColumnPosition("PlanTimeB", 12); setColumnPosition("PlanTimeE", 13); setColumnPosition("InwlDesc", 14); setColumnPosition("OutwlDesc", 15); setColumnPosition("OrderSource", 16); setColumnPosition("OrderNo", 17); setColumnPosition("OrderSeq", 18); setColumnPosition("DeliveryNo", 19); setColumnPosition("Steelname", 20); setColumnPosition("ModelDesc", 21); setColumnPosition("Outdiameter", 22); setColumnPosition("Wallthick", 23); setColumnPosition("Aimwallthick", 24); setColumnPosition("Lengthmax", 25); setColumnPosition("Lengthmin", 26); setColumnPosition("Aimlength", 27); setColumnPosition("Lengthdisc", 28); setColumnPosition("ShrtLenRato", 29); setColumnPosition("LongLenRato", 30); setColumnPosition("Shortest", 31); setColumnPosition("Longest", 32); setColumnPosition("ShrtStove", 33); setColumnPosition("SiglLen", 34); setColumnPosition("AvgLenMin", 35); setColumnPosition("DifrncLenMax", 36); setColumnPosition("EndlenSpecstd", 37); setColumnPosition("LengthmaxIn", 38); setColumnPosition("LengthminIn", 39); setColumnPosition("IfMonitorJgx", 40); setColumnPosition("MonitorPoint", 41); setColumnPosition("PrdcrNo", 42); setColumnPosition("ProMonth", 43); setColumnPosition("PreviousGx", 44); setColumnPosition("PrevGxplanId", 45); setColumnPosition("CraftFileNo", 46); setColumnPosition("CraftFileMan", 47); setColumnPosition("CraftSeq", 48); setColumnPosition("InWeghtS", 49); setColumnPosition("InNumS", 50); setColumnPosition("LengthIn", 51); setColumnPosition("StationRoad", 52); setColumnPosition("BatchedNum", 53); setColumnPosition("BatchedWt", 54); setColumnPosition("Finishweight", 55); setColumnPosition("Finishnum", 56); setColumnPosition("IsPlanOk", 57); setColumnPosition("ZyBatchId", 58); setColumnPosition("MatchWtIn", 59); setColumnPosition("PlanGroupId", 60); setColumnPosition("PlnDivideId", 61); setColumnPosition("ReqBlId", 62); setColumnPosition("MatchNumIn", 63); setColumnPosition("Cic", 64); setColumnPosition("Pic", 65); setColumnPosition("Sic", 66); setColumnPosition("Dic", 67); setColumnPosition("Wic", 68); setColumnPosition("Gic", 69); #endregion Core.Mes.Client.Comm.Tool.EntityHelper.ShowGridCaption(this.ultraGrid2.DisplayLayout.Bands[0]); } private void init_zg() { this.ultraGrid2.DataSource = this.plnOrderZgSEntityBindingSource; #region Excel2Code 2016/6/14 19:02:19 setColumnPosition("PlineName", 0); setColumnPosition("GxProSeq", 1); setColumnPosition("ProPlanId", 3); setColumnPosition("GxPlanNo", 4); setColumnPosition("RepairType", 5); setColumnPosition("Mcount", 6); setColumnPosition("Mstatus", 7); setColumnPosition("IsRepairPln", 8); setColumnPosition("ExeStatus", 9); setColumnPosition("NumS", 10); setColumnPosition("WeigthS", 11); setColumnPosition("PlanUsetime", 12); setColumnPosition("PlanTimeB", 13); setColumnPosition("PlanTimeE", 14); setColumnPosition("InwlDesc", 15); setColumnPosition("OutwlDesc", 16); setColumnPosition("OrderSource", 17); setColumnPosition("OrderNo", 18); setColumnPosition("OrderSeq", 19); setColumnPosition("DeliveryNo", 20); setColumnPosition("Steelname", 21); setColumnPosition("Gradename", 22); setColumnPosition("Outdiameter", 23); setColumnPosition("Wallthick", 24); setColumnPosition("Aimwallthick", 25); setColumnPosition("Aimlength", 26); setColumnPosition("RollLength", 27); setColumnPosition("DiameterMandrel", 28); setColumnPosition("DiameterGp", 29); setColumnPosition("Lengthdisc", 30); setColumnPosition("LenRollMax", 31); setColumnPosition("LenRollMin", 32); setColumnPosition("Aimoutdiameter", 33); setColumnPosition("LenGpSingle", 34); setColumnPosition("Isendgx", 35); setColumnPosition("IfMonitorZg", 36); setColumnPosition("LenCuthead", 37); setColumnPosition("LenCutend", 38); setColumnPosition("OutnumCut", 39); setColumnPosition("PrdcrNo", 40); setColumnPosition("CraftFileNo", 41); setColumnPosition("MonitorPoint", 42); setColumnPosition("CraftSeq", 43); setColumnPosition("PassName", 44); setColumnPosition("CraftFileMan", 45); setColumnPosition("ReqBlId", 46); setColumnPosition("InNumS", 47); setColumnPosition("InWeightS", 48); setColumnPosition("PlanGroupId", 49); setColumnPosition("ProMonth", 50); setColumnPosition("AddWtIn", 51); setColumnPosition("AddNumIn", 52); setColumnPosition("MatchWtIn", 53); setColumnPosition("StationRoad", 54); setColumnPosition("BatchedNum", 55); setColumnPosition("Finishweight", 56); setColumnPosition("Finishnum", 57); setColumnPosition("IsPlanOk", 58); setColumnPosition("GpreqIfOk", 59); setColumnPosition("GpreqId", 60); setColumnPosition("ZyBatchId", 61); setColumnPosition("PlnDivideId", 62); setColumnPosition("Cic", 63); setColumnPosition("Pic", 64); setColumnPosition("Sic", 65); setColumnPosition("Dic", 66); setColumnPosition("Wic", 67); setColumnPosition("Gic", 68); #endregion Core.Mes.Client.Comm.Tool.EntityHelper.ShowGridCaption(this.ultraGrid2.DisplayLayout.Bands[0]); } private void setColumnPosition(string key, int position) { CommHelper.SetColumnPosition(this.ultraGrid2.DisplayLayout.Bands[0], key, position); } private void SetTempData(int usercount, double userwt) { if (this.ultraGrid1.Rows.Count <= 0) { return; } UltraGridRow row = this.ultraGrid1.Rows.First(); row.Cells["USER_ACT_COUNT"].Value = usercount; row.Cells["USER_ACT_WEIGHT"].Value = userwt; // row.Cells["ACT_COUNT"].Value = totalcount; // row.Cells["ACT_WEIGHT"].Value = totalwt; this.ultraGrid1.UpdateData(); } #endregion #region 私有的算法 /// /// 获取计划产出重量 /// /// /// /// /// private static double GetOutWeight(Object InNum, Object WeigthS, Object NumS) { double result = 0; try { double SingleWeight = Convert.ToDouble(WeigthS) / Convert.ToDouble(NumS); result = Convert.ToDouble(InNum) * SingleWeight; } catch { } result = CommHelper.GetSpecDecimalBit(result, 3); return result; } #endregion #region 处理从MaterialChoose窗口事件返回的信息,并且整合订单时序表的信息和物料选择的信息形成作业计划表的记录 private void ZYResultProcessDBK(List obj) { int num = 0; double wt = 0; int matchnum = 0; double matchwt = 0; int LockFlag = -1; bool IsMatched = false;//原料是否利库 var Row = this.ultraGrid2.Rows.First(); PlnOrderDbkSEntity _orderdbk = (PlnOrderDbkSEntity)Row.ListObject; try { num = Convert.ToInt32(_orderdbk.BatchedNum); wt = Convert.ToDouble(_orderdbk.BatchedWt); } catch { } List entitySqlidList = new List(); List entityjsonStrings = new List(); List entityClassNameList = new List(); List normalSqlidList = new List(); List> normalParameterList = new List>(); int nMaxProdIndex = DBComm.GetMaxProdIndex(CustomInfo, this.ob); foreach (Infragistics.Win.UltraWinGrid.UltraGridRow row in obj) { bool IsZyExist = false; DataSourceList zylist= null; zylist = EntityHelper.GetData(MethodDef.StoveBase.queryZy, new Object[] { SqlIDDef.PlanLuDBK.queryZYDBK, row.Cells["JUDGE_STOVE_NO"].Text, row.Cells["BATCH_NO"].Text, row.Cells["BATCH_GROUD_NO"].Text, _orderdbk.ProPlanId.ToString(), _orderdbk.GxPlanNo.ToString() }, this.ob); PlnZyDbkMEntity existZy = null; if (zylist.Count > 0) { IsZyExist = true; existZy = zylist.First(); } try { matchnum = Convert.ToInt32(_orderdbk.MatchNumIn); matchwt = Convert.ToDouble(_orderdbk.MatchWtIn); } catch { } PlnZyDbkMEntity zydbk = new PlnZyDbkMEntity(); zydbk.ZgBatchNo = row.Cells["BATCH_NO"].Value; zydbk.OrderSource = _orderdbk.OrderSource; zydbk.OrderNo = _orderdbk.OrderNo; zydbk.OrderSeq = _orderdbk.OrderSeq; zydbk.ReqBlId = _orderdbk.ReqBlId; zydbk.Gradename = row.Cells["GRADENAME"].Value; zydbk.Gradecode = row.Cells["GRADECODE"].Value; zydbk.Aimoutdiameter = _orderdbk.Aimoutdiameter; zydbk.Aimwallthick = _orderdbk.Aimwallthick; zydbk.Aimlength = _orderdbk.Aimlength; zydbk.OutdiameterIn = _orderdbk.OutdiameterIn; zydbk.WallthickIn = _orderdbk.WallthickIn; zydbk.LengthIn = _orderdbk.LengthIn; zydbk.LengthmaxIn = _orderdbk.LengthmaxIn; zydbk.LengthminIn = _orderdbk.LengthminIn; zydbk.LenCuthead = _orderdbk.LenCuthead; zydbk.LenCutend = _orderdbk.LenCutend; zydbk.InwlId = _orderdbk.InwlId; zydbk.InwlDesc = _orderdbk.InwlDesc; zydbk.InWt = row.Cells["USER_ACT_WEIGHT"].Value; zydbk.InNum = row.Cells["USER_ACT_COUNT"].Value; zydbk.IfWlMatched = 1; zydbk.OutwlId = _orderdbk.OutwlId; zydbk.OutwlDesc = _orderdbk.OutwlDesc; zydbk.OutWt = CommHelper.GetOutWeight(zydbk.InNum, _orderdbk.WeigthS, _orderdbk.NumS); zydbk.OutNum = zydbk.InNum; zydbk.IfMonitorDbk = _orderdbk.IfMonitorDbk; zydbk.PrdcrNo = _orderdbk.PrdcrNo; zydbk.MonitorPoint = _orderdbk.MonitorPoint; zydbk.CraftFileNo = _orderdbk.CraftFileNo; zydbk.CraftFileMan = _orderdbk.CraftFileMan; zydbk.CraftSeq = _orderdbk.CraftSeq; zydbk.StationRoad = _orderdbk.StationRoad; zydbk.Planstatus = 0; zydbk.InWtReal = ""; zydbk.InNumReal = ""; zydbk.OutWtReal = ""; zydbk.OutNumReal = ""; zydbk.CreateName = UserInfo.GetUserName(); zydbk.CreateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm;ss"); zydbk.UpdateName = ""; zydbk.UpdateTime = ""; zydbk.HeatPlanNo =DBComm.CreateHEAT_PLAN_NO(CustomInfo,this.ob); zydbk.ZyBatchId = _orderdbk.ZyBatchId; zydbk.ProdIndex = ++nMaxProdIndex; zydbk.ProPlanId = _orderdbk.ProPlanId; zydbk.GxPlanNo = _orderdbk.GxPlanNo; zydbk.PlineCode = _orderdbk.PlineCode; zydbk.PlineName = _orderdbk.PlineName; zydbk.ZgHeatPlanNo = row.Cells["HEAT_PLAN_NO"].Value; zydbk.HeatnoLast = row.Cells["JUDGE_STOVE_NO"].Value; zydbk.BatchGroudNo = row.Cells["BATCH_GROUD_NO"].Value; int outnum = 0; double outwt = 0; try { outnum = Convert.ToInt32(zydbk.OutNum); outwt = Convert.ToDouble(zydbk.OutWt); } catch { } if (!CommHelper.IsNullOrEmptry(row.Cells["PRO_ORDER_ID"].Text.Trim())) { if (!_orderdbk.PrevGxplanId.ToString().Equals(row.Cells["PRO_ORDER_ID"].Text))//如果物料里的订单与本工序订单记录的前工序订单号不一致,需要先将物料脱单,然后判定状态改为利库 { LockFlag = 1; IsMatched = true; } else//如果物料里的订单与本工序订单的前工序订单号一致,则判定为普通匹配,只需要累加炉计划已排量 { LockFlag = 0; } } else //如果物料没有绑定订单,则判定为利库,需要累加投入利库量和炉计划已排量 { LockFlag = 1; IsMatched = true; } if (LockFlag == 1) { matchwt += outwt; matchnum += outnum; _orderdbk.MatchNumIn = matchnum; _orderdbk.MatchWtIn = matchwt; } num += outnum; wt += outwt; if (IsZyExist)//如果已有作业计划,只需累加投入产出量,其余动作不变 { int oriOutNum = 0; double oriOutWt = 0; int oriInNum = 0; double oriInWt = 0; try { oriOutNum = Convert.ToInt32(existZy.OutNum); oriOutWt = Convert.ToDouble(existZy.OutWt); oriInNum = Convert.ToInt32(existZy.InNum); oriInWt = Convert.ToDouble(existZy.InWt); oriOutNum +=outnum; oriOutWt += outwt; oriInNum += Convert.ToInt32(zydbk.InNum); oriInWt += Convert.ToDouble(zydbk.InWt); normalSqlidList.Add(SqlIDDef.PlanLuDBK.UpdateZYDBK_WT_NUM); normalParameterList.Add(new List() { oriInWt,oriInNum,oriOutNum,oriOutWt,m_loginusername,existZy.HeatPlanNo}); } catch { } } else { entitySqlidList.Add(SqlIDDef.PlanLuDBK.insertZYDBK); entityClassNameList.Add(ClassDef.PlnZyDbkMEntity); entityjsonStrings.Add(JSONFormat.Format(zydbk)); } //insertZYDBK(zydbk); normalSqlidList.Add(SqlIDDef.MaterialChoose.updateMaterial); normalParameterList.Add(new List() { zydbk.InwlId.ToString(), row.Cells["JUDGE_STOVE_NO"].Value, row.Cells["BATCH_NO"].Value, row.Cells["BATCH_GROUD_NO"].Value, "E", Convert.ToInt32(zydbk.InNum), "E", "镦拔扩", _orderdbk.ProPlanId.ToString(), _orderdbk.GxPlanNo.ToString(), LockFlag,m_loginusername }); //UpdateMAT_ZC_M("E", "镦拔扩", zydbk.InwlId.ToString(), row.Cells["JUDGE_STOVE_NO"].Text, Convert.ToInt32(zydbk.InNum),_orderdbk.ProPlanId.ToString()); } _orderdbk.BatchedNum = num; _orderdbk.BatchedWt = wt; normalSqlidList.Add(SqlIDDef.PlanLuDBK.UpdateOrderDBK_WT_NUM); normalParameterList.Add(new List() { wt, num, _orderdbk.ProPlanId, _orderdbk.GxPlanNo }); if (IsMatched) { normalSqlidList.Add(SqlIDDef.PlanLuDBK.UpdateOrderDBK_MATCH_WT_NUM); normalParameterList.Add(new List() { _orderdbk.MatchWtIn, _orderdbk.MatchNumIn, _orderdbk.ProPlanId, _orderdbk.GxPlanNo }); } //UpdateRows(_orderdbk); BaseEntityDAL.ExcuteTransaction(entitySqlidList, entityjsonStrings, entityClassNameList, normalSqlidList, normalParameterList, this.ob); queryAll(); } private void ZYResultProcessRCL(List obj) { int batchnum = 0; double batchwt = 0; int matchnum = 0; double matchwt = 0; int LockFlag = 0; bool isMatched = false; List entitySqlidList = new List(); List entityjsonStrings = new List(); List entityClassNameList = new List(); List normalSqlidList = new List(); List> normalParameterList = new List>(); var Row = this.ultraGrid2.Rows.First(); PlnOrderRclSEntity _orderrcl = (PlnOrderRclSEntity)Row.ListObject; try { batchnum = Convert.ToInt32(_orderrcl.BatchedNum); batchwt = Convert.ToDouble(_orderrcl.BatchedWt); } catch { batchnum = 0; batchwt = 0; } try { matchnum = Convert.ToInt32(_orderrcl.MatchNumIn); matchwt = Convert.ToDouble(_orderrcl.MatchWtIn); } catch { } int nMaxProdIndex = DBComm.GetMaxProdIndex(CustomInfo, this.ob); foreach (Infragistics.Win.UltraWinGrid.UltraGridRow row in obj) { bool IsZyExist = false; var zylist = EntityHelper.GetData(MethodDef.StoveBase.queryZy, new Object[] { SqlIDDef.PlanLuRCL.queryZyRCL, row.Cells["JUDGE_STOVE_NO"].Value, row.Cells["BATCH_NO"].Value, row.Cells["BATCH_GROUD_NO"].Value, _orderrcl.ProPlanId.ToString(), _orderrcl.GxPlanNo.ToString() }, this.ob); PlnZyDbkMEntity existZy = null; if (zylist.Count > 0) { IsZyExist = true; existZy = zylist.First(); } PlnZyRclMEntity zyrcl = new PlnZyRclMEntity(); zyrcl.HeatPlanNo = DBComm.CreateHEAT_PLAN_NO(CustomInfo, this.ob); zyrcl.ZyBatchId = _orderrcl.ZyBatchId; zyrcl.ProPlanId = _orderrcl.ProPlanId; zyrcl.GxPlanNo = _orderrcl.GxPlanNo; zyrcl.LastHeatPlanNo = _orderrcl.PreviousGx; zyrcl.HeatnoLast = row.Cells["JUDGE_STOVE_NO"].Value; zyrcl.LastBatchNo = row.Cells["BATCH_NO"].Value; zyrcl.BatchGroudNo = row.Cells["BATCH_GROUD_NO"].Value; zyrcl.PlineCode = _orderrcl.PlineCode; zyrcl.PlineName = _orderrcl.PlineName; zyrcl.OrderSource = _orderrcl.OrderSource; zyrcl.OrderNo = _orderrcl.OrderNo; zyrcl.OrderSeq = _orderrcl.OrderSeq; zyrcl.ReqBlId = _orderrcl.ReqBlId; zyrcl.Steelcode = _orderrcl.Steelcode; zyrcl.Steelname = _orderrcl.Steelname; zyrcl.Gradename = _orderrcl.Gradecode; zyrcl.Gradecode = _orderrcl.Gradename; zyrcl.Outdiameter = _orderrcl.Outdiameter; zyrcl.Wallthick = _orderrcl.Wallthick; zyrcl.Lengthdisc = _orderrcl.Lengthdisc; string maxlength = ""; string minlength = ""; DBComm.queryMaxMinLength(_orderrcl.OrdLnDlyPk.ToString(), ref maxlength, ref minlength,this.ob); zyrcl.CpLengthmax = maxlength; zyrcl.CpLengthmin = minlength; // zyrcl.CpLengthmin = row.Cells["ACT_LEN_MAX"].Text; // zyrcl.CpLengthmax = row.Cells["ACT_LEN_MIN"].Text; zyrcl.OutdiameterIn = row.Cells["ACT_DIMATER"].Value; zyrcl.WallthickIn = row.Cells["ACT_HEIGHT"].Value; zyrcl.LengthIn = row.Cells["ACT_LEN"].Value; zyrcl.LengthmaxIn = _orderrcl.LengthmaxIn; zyrcl.LengthminIn = _orderrcl.LengthminIn; zyrcl.LengthOut = _orderrcl.Aimlength; zyrcl.InwlId = _orderrcl.InwlId; zyrcl.InwlDesc = _orderrcl.InwlDesc; zyrcl.InNum = row.Cells["USER_ACT_COUNT"].Value; zyrcl.InWt = row.Cells["USER_ACT_WEIGHT"].Value; zyrcl.IfWlMatched = 1; zyrcl.ProdIndex = ++nMaxProdIndex; zyrcl.OutwlId = _orderrcl.OutwlId; zyrcl.OutwlDesc = _orderrcl.OutwlDesc; zyrcl.OutWt = CommHelper.GetOutWeight(zyrcl.InNum, _orderrcl.WeigthS, _orderrcl.NumS); zyrcl.OutNum = zyrcl.InNum; zyrcl.IfMonitorRcl = _orderrcl.IfMonitorRcl; zyrcl.PrdcrNo = _orderrcl.PrdcrNo; zyrcl.MonitorPoint = _orderrcl.MonitorPoint; zyrcl.CraftFileNo = _orderrcl.CraftFileNo; zyrcl.CraftFileMan = _orderrcl.CraftFileMan; zyrcl.CraftSeq = _orderrcl.CraftSeq; zyrcl.StationRoad = _orderrcl.StationRoad; zyrcl.Planstatus = 0; zyrcl.CreateName = UserInfo.GetUserName(); zyrcl.CreateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm;ss"); zyrcl.UpdateName = ""; zyrcl.UpdateTime = ""; zyrcl.InWtReal = ""; zyrcl.InNumReal = ""; zyrcl.OutWtReal = ""; zyrcl.OutNumReal = ""; int outnum = 0; double outwt = 0; try { outnum = Convert.ToInt32(zyrcl.OutNum); outwt = Convert.ToDouble(zyrcl.OutWt); } catch { } if (!CommHelper.IsNullOrEmptry(row.Cells["PRO_ORDER_ID"].Text.Trim())) { if (!_orderrcl.PrevGxplanId.ToString().Equals(row.Cells["PRO_ORDER_ID"].Text)) { isMatched = true; } } else { isMatched = true; } batchnum += outnum; batchwt += outwt; if (isMatched) { matchwt += outwt; matchnum += outnum; } // /* zyrcl.ProdIndex = GetMaxProdIndex() + 1;*/ if (IsZyExist)//如果已有作业计划,只需累加投入产出量,其余动作不变 { int oriOutNum = 0; double oriOutWt = 0; int oriInNum = 0; double oriInWt = 0; try { oriOutNum = Convert.ToInt32(existZy.OutNum); oriOutWt = Convert.ToDouble(existZy.OutWt); } catch { } try { oriInNum = Convert.ToInt32(existZy.InNum); oriInWt = Convert.ToDouble(existZy.InWt); } catch { } oriOutNum += outnum; oriOutWt += outwt; try { oriInNum += Convert.ToInt32(zyrcl.InNum); oriInWt += Convert.ToDouble(zyrcl.InWt); } catch { } normalSqlidList.Add(SqlIDDef.PlanLuRCL.UpdateZYRCL_WT_NUM); normalParameterList.Add(new List() { oriInWt, oriInNum, oriOutNum, oriOutWt, m_loginusername, existZy.HeatPlanNo }); } else { entitySqlidList.Add(SqlIDDef.PlanLuRCL.AddNewRows); entityjsonStrings.Add(JSONFormat.Format(zyrcl)); entityClassNameList.Add(ClassDef.PlnZyRclMEntity); } //InsertZYRCL(zyrcl); if (isMatched) { LockFlag = 1; } else { LockFlag = 0; } normalSqlidList.Add(SqlIDDef.MaterialChoose.updateMaterial); normalParameterList.Add(new List() { zyrcl.InwlId.ToString(), row.Cells["JUDGE_STOVE_NO"].Value, row.Cells["BATCH_NO"].Value, row.Cells["BATCH_GROUD_NO"].Value, "F", Convert.ToInt32(zyrcl.InNum), "F", "热处理", _orderrcl.ProPlanId.ToString(), _orderrcl.GxPlanNo, LockFlag,m_loginusername }); //UpdateMAT_ZC_M("F", "热处理", zyrcl.InwlId.ToString(), row.Cells["JUDGE_STOVE_NO"].Text,Convert.ToInt32(zyrcl.InNum),_orderrcl.ProPlanId.ToString()); } if (isMatched) { normalSqlidList.Add(SqlIDDef.PlanLuRCL.UpdateOrderRCL_MATCH_WT_NUM); normalParameterList.Add(new List() { CommHelper.GetSpecDecimalBit(matchwt, 3), matchnum, _orderrcl.ProPlanId, _orderrcl.GxPlanNo }); } normalSqlidList.Add(SqlIDDef.PlanLuRCL.UpdateRCLORDER_WT_NUM); normalParameterList.Add(new List() { CommHelper.GetSpecDecimalBit(batchwt, 3), batchnum, _orderrcl.ProPlanId, _orderrcl.GxPlanNo }); BaseEntityDAL.ExcuteTransaction(entitySqlidList, entityjsonStrings, entityClassNameList, normalSqlidList, normalParameterList, this.ob); //UpdateOrderRCL_WT_NUM(_orderrcl); queryAll(); } private void ZYResultProcessZG(List obj) { int batchnum = 0;//炉计划已排支数 double batchwt = 0;//炉计划已排重量 int matchnum = 0;//投入利库支数 double matchwt = 0;//投入利库重量 bool isMatched = false;//判定是否利库(如果订单与物料管坯需求号不匹配,则判定为利库) int plnInNum = 0;//计划投入支数 = 每组的支数相加 var Row = this.ultraGrid2.Rows.First(); PlnOrderZgSEntity _orderzg = (PlnOrderZgSEntity)Row.ListObject; try { batchnum = Convert.ToInt32(_orderzg.BatchedNum); batchwt = Convert.ToDouble(_orderzg.BatchedWt); } catch { } try { matchnum = Convert.ToInt32(_orderzg.MatchNumIn); matchwt = Convert.ToDouble(_orderzg.MatchWtIn); } catch { } int maxProdIndex = DBComm.GetMaxProdIndex(CustomInfo, this.ob); List entitySqlidList = new List();//执行插入的动作时,一般用entity List entityjsonStrings = new List(); List entityClassNameList = new List(); List normalSqlidList = new List();//执行更新或删除的动作时,一般用normal List> normalParameterList = new List>(); PlnZyZgMEntity Mzyzg = new PlnZyZgMEntity(); List zyzgcList = new List(); #region 从工序订单表获取信息 Mzyzg.HeatPlanNo = DBComm.CreateHEAT_PLAN_NO(CustomInfo, this.ob); Mzyzg.ZyBatchId = _orderzg.ZyBatchId; Mzyzg.ProdIndex = ++ maxProdIndex; Mzyzg.ProPlanId = _orderzg.ProPlanId; Mzyzg.GxPlanNo = _orderzg.GxPlanNo; Mzyzg.GpreqId = _orderzg.GpreqId; Mzyzg.PlineCode = _orderzg.PlineCode; Mzyzg.PlineName = _orderzg.PlineName; Mzyzg.Isendgx = _orderzg.Isendgx; Mzyzg.OrderSource = _orderzg.OrderSource; Mzyzg.OrdLnDlyPk = _orderzg.OrdLnDlyPk; Mzyzg.OrderNo = _orderzg.OrderNo; Mzyzg.OrderSeq = _orderzg.OrderSeq; Mzyzg.DeliveryNo = _orderzg.DeliveryNo; Mzyzg.ReqBlId = _orderzg.ReqBlId; Mzyzg.Gradecode = _orderzg.Gradecode; Mzyzg.Gradename = _orderzg.Gradename; Mzyzg.LenRollMax = _orderzg.LenRollMax; Mzyzg.LenRollMin = _orderzg.LenRollMin; Mzyzg.Aimoutdiameter = _orderzg.Aimoutdiameter; Mzyzg.Aimwallthick = _orderzg.Aimwallthick; Mzyzg.Aimlength = _orderzg.Aimlength; Mzyzg.DiameterGp = _orderzg.DiameterGp; Mzyzg.LenGpSingle = _orderzg.LenGpSingle; Mzyzg.RollLength = _orderzg.RollLength; Mzyzg.LenCuthead = _orderzg.LenCuthead; Mzyzg.LenCutend = _orderzg.LenCutend; Mzyzg.OutnumCut = _orderzg.OutnumCut; Mzyzg.DiameterMandrel = _orderzg.DiameterMandrel; Mzyzg.PassCode = _orderzg.PassCode; Mzyzg.PassName = _orderzg.PassName; Mzyzg.InwlId = _orderzg.InwlId; Mzyzg.InwlDesc = _orderzg.InwlDesc; Mzyzg.IfWlMatched = 1; Mzyzg.OutwlId = _orderzg.OutwlId; Mzyzg.OutwlDesc = _orderzg.OutwlDesc; Mzyzg.IfMonitorZg = _orderzg.IfMonitorZg; Mzyzg.PrdcrNo = _orderzg.PrdcrNo; Mzyzg.MonitorPoint = _orderzg.MonitorPoint; Mzyzg.CraftFileNo = _orderzg.CraftFileNo; Mzyzg.CraftFileMan = _orderzg.CraftFileMan; Mzyzg.CraftSeq = _orderzg.CraftSeq; Mzyzg.StationRoad = _orderzg.StationRoad; Mzyzg.Planstatus = 0; Mzyzg.InWtReal = ""; Mzyzg.InNumReal = ""; Mzyzg.OutWtReal = ""; Mzyzg.CreateName = UserInfo.GetUserName(); Mzyzg.CreateTime = ""; Mzyzg.UpdateName = ""; Mzyzg.UpdateTime = ""; #endregion #region 判断是否有同炉号同工序订单同排产序号的主表,如果有,则获取它的从表,缓存主从表 UltraGridRow firstmatrow = null; if (obj.Count <= 0) { return; } else { firstmatrow = obj.First(); } bool IsZyExist = false; var existzylist = EntityHelper.GetData(MethodDef.StoveBase.queryZy, new Object[] { SqlIDDef.PlanLuZG.queryZYZGM, firstmatrow.Cells["JUDGE_STOVE_NO"].Text, "", "", _orderzg.ProPlanId.ToString(), _orderzg.GxPlanNo.ToString() }, this.ob); PlnZyZgMEntity existZy = null; DataSourceList existzycList = null; if (existzylist.Count > 0) { IsZyExist = true; existZy = existzylist.First(); existzycList = EntityHelper.GetData(MethodDef.StoveBase.queryZyC, new Object[] { SqlIDDef.PlanLuZG.queryZYZGC, existZy.HeatPlanNo.ToString() }, this.ob); } #endregion #region 遍历物料编辑行,先假定每一行就是一行子表,加入List foreach (Infragistics.Win.UltraWinGrid.UltraGridRow row in obj) { int lockLiku = 0; Mzyzg.HeatnoLast = row.Cells["JUDGE_STOVE_NO"].Value; try { plnInNum += Convert.ToInt32(row.Cells["USER_ACT_COUNT"].Value); } catch { } if (CommHelper.IsNullOrEmptry(row.Cells["PRO_ORDER_ID"].Text.Trim())) { isMatched = true; lockLiku = 1; } else { if (!_orderzg.GpreqId.ToString().Equals(row.Cells["PRO_ORDER_ID"].Text.Trim())) { isMatched = true; lockLiku = 1; } else { isMatched = false; lockLiku = 0; } } PlnZyZgCEntity Czyzg = new PlnZyZgCEntity();//先形成初步的 Czyzg.InGpNumReal = ""; Czyzg.InGpWtReal = ""; Czyzg.SingleWtReal = ""; Czyzg.SingleNumReal = ""; Czyzg.CutzyStatus = 0; Czyzg.HeatPlanNo = Mzyzg.HeatPlanNo; Czyzg.ZyBatchId = Mzyzg.ZyBatchId; Czyzg.ProPlanId = _orderzg.ProPlanId; Czyzg.GxPlanNo = Mzyzg.GxPlanNo; Czyzg.PlineCode = Mzyzg.PlineCode; Czyzg.PlineName = Mzyzg.PlineName; Czyzg.GpreqId = Mzyzg.GpreqId; Czyzg.HeatnoLast = Mzyzg.HeatnoLast; Czyzg.LengthGp = row.Cells["ACT_LEN"].Value; Czyzg.LenGpSingle = Mzyzg.LenGpSingle; Czyzg.MultipleNum = CommHelper.GetMultipleNum(Czyzg.LengthGp, Czyzg.LenGpSingle); Czyzg.InGpNum = row.Cells["USER_ACT_COUNT"].Value;//计划投入支数由用户决定 Czyzg.InGpWt = CommHelper.GetIN_GP_WT(row.Cells["ACT_WEIGHT"].Value, row.Cells["ACT_COUNT"].Value, Czyzg.InGpNum);//计划投入重量=计划投入支数*(物料总重量/物料总支数) Czyzg.CutSingleNum = Convert.ToInt32(Czyzg.InGpNum) * Convert.ToInt32(Czyzg.MultipleNum);//倍尺数*计划投入支数 Czyzg.CutSingleWt = Convert.ToInt32(Czyzg.LenGpSingle) * PlanComm.GpweightOfmi(Convert.ToDouble(_orderzg.DiameterGp)) * Convert.ToInt32(Czyzg.CutSingleNum)*0.001;//单倍坯长*米单重*单倍坯支数 zyzgcList.Add(Czyzg); normalSqlidList.Add(SqlIDDef.MaterialChoose.updateGP); normalParameterList.Add(new List() { Mzyzg.InwlId, Mzyzg.HeatnoLast, Czyzg.LengthGp, CommHelper.getProcessCode(CustomInfo), Czyzg.InGpNum, CommHelper.getProcessCode(CustomInfo), CommHelper.getProcessDesc(CustomInfo), _orderzg.ProPlanId, _orderzg.GxPlanNo, m_loginusername,lockLiku }); } #endregion #region 根据管坯长度进行分组,每一组代表一行子表行,如果发现已经存在该炉,订单,排产序号的炉计划,并且该炉计划里已有该管坯长度的子表行,则执行累加 var grouplst = zyzgcList.GroupBy(c => c.LengthGp);//根据管坯长度给所选的物料分组 //var grouplst = from n in zyzgcList group n by n.MultipleNum into g select g; int totalCutSingleNum = 0; double totalCutSingleWt = 0; int GpCutNo = 0;//滚皮锯切分组号 if (IsZyExist) { GpCutNo = existzycList.Count; } foreach (var info in grouplst)//遍历组 { PlnZyZgCEntity zyzgc = new PlnZyZgCEntity(); int InGpNum = 0;//本组投入管坯总和 double InGpWt = 0; int cutSingleNum = 0;//本组单倍坯支数总和,该组单倍坯支数 = 管坯投入支数*倍尺数 double cutSingleWt = 0; foreach (var objzgc in info)//遍历组成员 { zyzgc.HeatPlanNo = objzgc.HeatPlanNo; zyzgc.ZyBatchId = objzgc.ZyBatchId; zyzgc.ProPlanId = objzgc.ProPlanId; zyzgc.GxPlanNo = objzgc.GxPlanNo; zyzgc.PlineCode = objzgc.PlineCode; zyzgc.PlineName = objzgc.PlineName; zyzgc.GpreqId = objzgc.GpreqId; zyzgc.HeatnoLast = objzgc.HeatnoLast; zyzgc.LengthGp = objzgc.LengthGp; zyzgc.LenGpSingle = objzgc.LenGpSingle; zyzgc.MultipleNum = objzgc.MultipleNum; try { InGpNum += Convert.ToInt32(objzgc.InGpNum); InGpWt +=Convert.ToDouble(objzgc.InGpWt); } catch { } try { cutSingleNum += Convert.ToInt32(objzgc.CutSingleNum); cutSingleWt += Convert.ToDouble(objzgc.CutSingleWt); } catch { } } zyzgc.InGpNumReal = ""; zyzgc.InGpWtReal = ""; zyzgc.SingleWtReal = ""; zyzgc.SingleNumReal = ""; zyzgc.CutzyStatus = 0; //逐组更新物料 totalCutSingleNum += cutSingleNum; totalCutSingleWt += cutSingleWt; zyzgc.CutSingleWt =CommHelper.GetSpecDecimalBit(cutSingleWt,3); zyzgc.CutSingleNum = cutSingleNum; zyzgc.InGpNum = InGpNum; zyzgc.InGpWt = CommHelper.GetSpecDecimalBit(InGpWt,3); if (IsZyExist) { var existzyc = existzycList.FirstOrDefault(c=>c.LengthGp.ToString().Equals(zyzgc.LengthGp.ToString())); if (existzyc != null) { int oriCutSingleNum = 0; double oriCutSingleWt = 0; int oriInGpNum = 0; double oriInGpWt = 0; try { oriCutSingleNum = Convert.ToInt32(existzyc.CutSingleNum); oriCutSingleWt = Convert.ToDouble(existzyc.CutSingleWt); } catch { } try { oriInGpNum = Convert.ToInt32(existzyc.InGpNum); oriInGpWt = Convert.ToDouble(existzyc.InGpWt); } catch { } //累加子表行计划单倍坯量和计划投入量 existzyc.CutSingleNum = oriCutSingleNum + cutSingleNum; existzyc.CutSingleWt =CommHelper.GetSpecDecimalBit(oriCutSingleWt+cutSingleWt,3); existzyc.InGpNum =oriInGpNum + InGpNum; existzyc.InGpWt =CommHelper.GetSpecDecimalBit(oriInGpWt + InGpWt,3); //更新子表行计划单倍坯量和计划投入量 normalSqlidList.Add(SqlIDDef.PlanLuZG.UpdateZYZGC_GPWT_GPNUM); normalParameterList.Add(new List() { existzyc.CutSingleNum,existzyc.CutSingleWt,existzyc.InGpNum,existzyc.InGpWt,existzyc.HeatPlanNo,existzyc.GpCutNo}); } else//如果没有找到管坯长度一致的子表行,则新增子表行 { ++GpCutNo; zyzgc.GpCutNo = GpCutNo; zyzgc.HeatPlanNo = existZy.HeatPlanNo; entitySqlidList.Add(SqlIDDef.PlanLuZG.insertZYZGC); entityClassNameList.Add(ClassDef.PlnZyZgCEntity); entityjsonStrings.Add(JSONFormat.Format(zyzgc)); } } else//如果没有找到主表,则新增子表行 { ++GpCutNo; zyzgc.GpCutNo = GpCutNo; zyzgc.HeatPlanNo = Mzyzg.HeatPlanNo; entitySqlidList.Add(SqlIDDef.PlanLuZG.insertZYZGC); entityClassNameList.Add(ClassDef.PlnZyZgCEntity); entityjsonStrings.Add(JSONFormat.Format(zyzgc)); } } #endregion #region 累加所有所选物料的单倍坯量,产出量,以及投入管坯量,如果存在该炉,订单,排产序号的作业计划,则执行累加,否则新增作业计划 Mzyzg.CutSingleNum = totalCutSingleNum; Mzyzg.CutSingleWt = CommHelper.GetSpecDecimalBit(totalCutSingleWt,3);//各组单倍坯重量总和 Mzyzg.PlanGpNum = plnInNum; int totaloutNum = totalCutSingleNum * Convert.ToInt32(_orderzg.OutnumCut); Double totaloutWt = CommHelper.GetSpecDecimalBit( totaloutNum * PlanComm.WeightOfMi(Convert.ToDouble(_orderzg.Aimoutdiameter),Convert.ToDouble(_orderzg.Aimwallthick)) * Convert.ToDouble(_orderzg.Aimlength),3 );//计划产出重量= 计划产出支数*管米单重*工序目标长度 Mzyzg.OutNum = totaloutNum;//单倍坯总和*分切数 Mzyzg.OutWt = totaloutWt; if (IsZyExist) { int oriCutSingleNum =0; double oriCutSingleWt = 0; int oriOutNum = 0; double oriOutWt = 0; int oriInGpNum=0; try { oriCutSingleNum = Convert.ToInt32(existZy.CutSingleNum); oriCutSingleWt = Convert.ToDouble(existZy.CutSingleWt); } catch { } try { oriOutNum = Convert.ToInt32(existZy.OutNum); oriOutWt = Convert.ToDouble(existZy.OutWt); } catch { } try { oriInGpNum =Convert.ToInt32(existZy.PlanGpNum); } catch { } //累加单倍坯量,计划产出量,以及计划投入管坯支数 existZy.CutSingleNum = oriCutSingleNum + totalCutSingleNum; existZy.CutSingleWt = oriCutSingleWt + CommHelper.GetSpecDecimalBit(totalCutSingleWt, 3); existZy.OutNum =oriOutNum + totaloutNum; existZy.OutWt = oriOutWt + totaloutWt; existZy.PlanGpNum = oriInGpNum + plnInNum; //更新已经存在的主表行的单倍坯量,计划产出量,以及计划投入管坯支数 normalSqlidList.Add(SqlIDDef.PlanLuZG.UpdateZYZG_WT_NUM); normalParameterList.Add(new List() { existZy.CutSingleNum, existZy.CutSingleWt, existZy.OutNum, existZy.OutWt, m_loginusername,existZy.PlanGpNum,existZy.HeatPlanNo }); } else { entitySqlidList.Add(SqlIDDef.PlanLuZG.insertZYZGM); entityClassNameList.Add(ClassDef.PlnZyZgMEntity); entityjsonStrings.Add(JSONFormat.Format(Mzyzg)); } #endregion #region 累加炉计划已排量和投入利库量 int outnum = 0; double outwt = 0; try { outnum = Convert.ToInt32(Mzyzg.OutNum); outwt = Convert.ToDouble(Mzyzg.OutWt); } catch { } batchnum += outnum; batchwt += outwt; if (isMatched) { matchnum += outnum; matchwt += outwt; normalSqlidList.Add(SqlIDDef.PlanLuZG.UpdateOrderZG_MATCH_WT_NUM); normalParameterList.Add(new List() {matchwt,matchnum,_orderzg.ProPlanId,_orderzg.GxPlanNo }); } else { } _orderzg.BatchedNum = batchnum; _orderzg.BatchedWt = batchwt; normalSqlidList.Add(SqlIDDef.PlanLuZG.UpdateOrderZG_WT_NUM); normalParameterList.Add(new List() { batchwt, batchnum, _orderzg.ProPlanId, _orderzg.GxPlanNo }); BaseEntityDAL.ExcuteTransaction(entitySqlidList, entityjsonStrings, entityClassNameList, normalSqlidList, normalParameterList, this.ob); #endregion queryAll(); } private void ZYResultProcessJGX(List obj) { int batchnum = 0; double batchwt = 0; int lockLiku = -1; int matchnum = 0; double matchwt = 0; bool isMatched = false; List entitySqlidList = new List(); List entityjsonStrings = new List(); List entityClassNameList = new List(); List normalSqlidList = new List(); List> normalParameterList = new List>(); var Row = this.ultraGrid2.Rows.First(); PlnOrderJgxSEntity _orderjgx = (PlnOrderJgxSEntity)Row.ListObject; try { batchnum = Convert.ToInt32(_orderjgx.BatchedNum); batchwt = Convert.ToDouble(_orderjgx.BatchedWt); } catch { batchnum = 0; batchwt = 0; } try { matchnum = Convert.ToInt32(_orderjgx.MatchNumIn); matchwt = Convert.ToDouble(_orderjgx.MatchWtIn); } catch {} int nMaxProdIndex = DBComm.GetMaxProdIndex(CustomInfo, this.ob); bool IsZyExist = false; var firstmatrow = obj.First(); var zylist = EntityHelper.GetData(MethodDef.StoveBase.queryZy, new Object[] { SqlIDDef.PlanLuJGX.queryZYJGXM, firstmatrow.Cells["JUDGE_STOVE_NO"].Value, firstmatrow.Cells["BATCH_NO"].Value, firstmatrow.Cells["BATCH_GROUD_NO"].Value, _orderjgx.ProPlanId.ToString(), _orderjgx.GxPlanNo.ToString() }, this.ob); PlnZyDbkMEntity existZy = null; if (zylist.Count > 0) { IsZyExist = true; existZy = zylist.First(); } PlnZyJgxMEntity mzyjgx = new PlnZyJgxMEntity(); mzyjgx.HeatPlanNo = DBComm.CreateHEAT_PLAN_NO(CustomInfo, this.ob); mzyjgx.ZyBatchId = _orderjgx.ZyBatchId; mzyjgx.ProdIndex = ++nMaxProdIndex; mzyjgx.ProPlanId = _orderjgx.ProPlanId; mzyjgx.GxPlanNo = _orderjgx.GxPlanNo; mzyjgx.GxNameLast = _orderjgx.PreviousGx; mzyjgx.LastHeatPlanNo = _orderjgx.PrevGxplanId; mzyjgx.HeatnoLast = firstmatrow.Cells["JUDGE_STOVE_NO"].Value; mzyjgx.LastBatchNo = firstmatrow.Cells["BATCH_NO"].Value; mzyjgx.BatchGroudNo = firstmatrow.Cells["BATCH_GROUD_NO"].Value; mzyjgx.PlineCode = _orderjgx.PlineCode; mzyjgx.PlineName = _orderjgx.PlineName; mzyjgx.OrderSource = _orderjgx.OrderSource; mzyjgx.OrdLnDlyPk = _orderjgx.OrdLnDlyPk; mzyjgx.OrderNo = _orderjgx.OrderNo; mzyjgx.OrderSeq = _orderjgx.OrderSeq; mzyjgx.DeliveryNo = _orderjgx.DeliveryNo; mzyjgx.ReqBlId = _orderjgx.ReqBlId; mzyjgx.Steelcode = _orderjgx.Steelcode; mzyjgx.Steelname = _orderjgx.Steelname; mzyjgx.Outdiameter = _orderjgx.Outdiameter; mzyjgx.Wallthick = _orderjgx.Wallthick; mzyjgx.Lengthmax = _orderjgx.Lengthmax; mzyjgx.Lengthmin = _orderjgx.Lengthmin; mzyjgx.Lengthdisc = _orderjgx.Lengthdisc; mzyjgx.Aimwallthick = _orderjgx.Aimwallthick; mzyjgx.Aimlength = _orderjgx.Aimlength; mzyjgx.ModelCode = _orderjgx.ModelCode; mzyjgx.ModelDesc = _orderjgx.ModelDesc; mzyjgx.LengthmaxIn = _orderjgx.LengthmaxIn; mzyjgx.LengthminIn = _orderjgx.LengthminIn; mzyjgx.InwlId = _orderjgx.InwlId; mzyjgx.InwlDesc = _orderjgx.InwlDesc; mzyjgx.IfWlMatched = 1; mzyjgx.OutwlId = _orderjgx.OutwlId; mzyjgx.IfMonitorJgx = _orderjgx.IfMonitorJgx; mzyjgx.PrdcrNo = _orderjgx.PrdcrNo; mzyjgx.MonitorPoint = _orderjgx.MonitorPoint; mzyjgx.CraftFileNo = _orderjgx.CraftFileNo; mzyjgx.CraftFileMan = _orderjgx.CraftFileMan; mzyjgx.CraftSeq = _orderjgx.CraftSeq; mzyjgx.StationRoad = _orderjgx.StationRoad; mzyjgx.Planstatus = 0; mzyjgx.InNumReal = ""; mzyjgx.InWtReal = ""; mzyjgx.OutNumReal = ""; mzyjgx.OutWtReal = ""; mzyjgx.CreateName = this.UserInfo.GetUserName(); mzyjgx.CreateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); mzyjgx.UpdateName = ""; mzyjgx.UpdateName = ""; if (!CommHelper.IsNullOrEmptry(firstmatrow.Cells["PRO_ORDER_ID"].Text.Trim())) { if (!_orderjgx.PrevGxplanId.ToString().Equals(firstmatrow.Cells["PRO_ORDER_ID"].Text))//如果物料里的订单与本工序订单记录的前工序订单号不一致,需要先将物料脱单,然后判定状态改为利库 { lockLiku = 1; isMatched = true; } else//如果物料里的订单与本工序订单的前工序订单号一致,则判定为普通匹配,只需要累加炉计划已排量 { lockLiku = 0; isMatched = false; } } else { lockLiku = 1; isMatched = true; } double AIMLENGTH_CUT = 0; try { double CheckJVAL = Convert.ToDouble(BaseEntityDAL.GetCHECKJVAL(mzyjgx.OrdLnDlyPk.ToString(), this.ob)); AIMLENGTH_CUT = Convert.ToDouble(mzyjgx.Aimlength) - CheckJVAL; } catch { } List tempJgxList = new List();//临时的子表行list foreach (Infragistics.Win.UltraWinGrid.UltraGridRow row in obj) { int cutCount = 0; try { cutCount = Convert.ToInt32(Math.Truncate(Convert.ToDouble(row.Cells["ACT_LEN"]) / AIMLENGTH_CUT)); } catch { } PlnZyJgxCEntity czyjgx = new PlnZyJgxCEntity(); czyjgx.HeatPlanNo = mzyjgx.HeatPlanNo; czyjgx.GxPlanNo = mzyjgx.GxPlanNo; czyjgx.PlineCode = mzyjgx.PlineCode; czyjgx.PlineName = mzyjgx.PlineName; czyjgx.HeatnoLast = mzyjgx.HeatnoLast; czyjgx.LengthIn = row.Cells["ACT_LEN"].Value; czyjgx.LastBatchNo = row.Cells["BATCH_NO"].Value; czyjgx.InWt = Convert.ToInt32(row.Cells["USER_ACT_WEIGHT"].Value); czyjgx.InNum = Convert.ToInt32(row.Cells["USER_ACT_COUNT"].Value); czyjgx.AimlengthCut = AIMLENGTH_CUT; czyjgx.OutnumCut = cutCount; try { czyjgx.CutOutNum = Convert.ToDouble(czyjgx.InNum) * Convert.ToDouble(czyjgx.OutnumCut); czyjgx.CutOutWt =CommHelper.GetSpecDecimalBit(PlanComm.WeightOfMi(Convert.ToDouble(mzyjgx.Outdiameter),Convert.ToDouble(mzyjgx.Aimwallthick))*Convert.ToDouble(czyjgx.AimlengthCut)*Convert.ToInt32(czyjgx.CutOutNum),3); } catch { } czyjgx.CutNumReal = ""; czyjgx.CutWtReal = ""; czyjgx.InNumReal = ""; czyjgx.InWtReal = ""; czyjgx.CutzyStatus = 0; czyjgx.ZyBatchId = mzyjgx.ZyBatchId; czyjgx.ProdIndex = mzyjgx.ProdIndex; czyjgx.ProPlanId = mzyjgx.ProPlanId; tempJgxList.Add(czyjgx); } int JgxCutNo = 0; int totalInNum = 0; double totalInWt = 0; int totalCutOutNum = 0; double totalCutOutWt = 0; var Lst_zygroup = tempJgxList.GroupBy(c=>c.LengthIn); foreach (var zygroup in Lst_zygroup) { PlnZyJgxCEntity ZyJgxC = new PlnZyJgxCEntity(); int gp_CutOutNum = 0; double gp_CutOutWt = 0; int gp_InNum = 0; double gp_InWt = 0; foreach(PlnZyJgxCEntity member_zyjgxc in zygroup) { ZyJgxC.AimlengthCut = member_zyjgxc.AimlengthCut; ZyJgxC.CutNumReal = ""; gp_CutOutNum += Convert.ToInt32(member_zyjgxc.CutOutNum); gp_CutOutWt += Convert.ToDouble(member_zyjgxc.CutOutWt); ZyJgxC.CutWtReal = ""; ZyJgxC.CutzyStatus = 0; ZyJgxC.GxPlanNo = member_zyjgxc.GxPlanNo; ZyJgxC.HeatnoLast = member_zyjgxc.HeatnoLast; ZyJgxC.HeatPlanNo = member_zyjgxc.HeatPlanNo; gp_InNum += Convert.ToInt32(member_zyjgxc.InNum); ZyJgxC.InNumReal = ""; gp_InWt += Convert.ToDouble(member_zyjgxc.InWt); ZyJgxC.InWtReal = ""; ZyJgxC.LastBatchNo = member_zyjgxc.LastBatchNo; ZyJgxC.LengthIn = member_zyjgxc.LengthIn; ZyJgxC.OutnumCut = member_zyjgxc.OutnumCut; ZyJgxC.PlineCode = member_zyjgxc.PlineCode; ZyJgxC.PlineName = member_zyjgxc.PlineName; ZyJgxC.ProdIndex = member_zyjgxc.ProdIndex; ZyJgxC.ProPlanId = member_zyjgxc.ProPlanId; ZyJgxC.ZyBatchId = member_zyjgxc.ZyBatchId; } totalCutOutNum += gp_CutOutNum; totalCutOutWt += gp_CutOutWt; totalInNum += gp_InNum; totalInWt += gp_InWt; ZyJgxC.CutOutNum = gp_CutOutNum; ZyJgxC.CutOutWt = gp_CutOutWt; ZyJgxC.InNum = gp_InNum; ZyJgxC.InWt = gp_InWt; bool IsZyCExist = false; PlnZyJgxCEntity existzyc=null; if (IsZyExist) { existzyc= EntityHelper.GetData(MethodDef.StoveBase.queryZyC, new Object[] { SqlIDDef.PlanLuJGX.queryZYJGXC,existZy.HeatPlanNo },this.ob).FirstOrDefault(e=>e.LengthIn.ToString().Equals(ZyJgxC.LengthIn.ToString())); if (existzyc != null) { IsZyCExist = true; } } if (IsZyCExist) { int oriCutOutNumC = Convert.ToInt32(existzyc.CutOutNum); double oriCutOutWtC = Convert.ToDouble(existzyc.CutOutWt); int oriInNum = Convert.ToInt32(existzyc.InNum); double oriInWt = Convert.ToDouble(existzyc.InWt); oriCutOutNumC += gp_CutOutNum; oriCutOutWtC += gp_CutOutWt; oriInNum += gp_InNum; oriInWt += gp_InWt; normalSqlidList.Add(SqlIDDef.PlanLuJGX.UpdateZYJGXC_WT_NUM); normalParameterList.Add(new List() { oriCutOutNumC,oriCutOutWtC,oriInNum,oriInWt,existzyc.HeatPlanNo,existzyc.JgxCutNo}); } else { ZyJgxC.JgxCutNo = ++JgxCutNo; entitySqlidList.Add(SqlIDDef.PlanLuJGX.insertZYJGXC); entityjsonStrings.Add(JSONFormat.Format(ZyJgxC)); entityClassNameList.Add(ClassDef.PlnZyJgxCEntity); } } mzyjgx.InNum = totalInNum; mzyjgx.InWt = totalInWt; mzyjgx.OutNum = totalCutOutNum; mzyjgx.OutWt = totalCutOutWt; if (IsZyExist)//如果已有作业计划,只需累加投入产出量,其余动作不变 { int oriOutNum = 0; double oriOutWt = 0; int oriInNum = 0; double oriInWt = 0; try { oriOutNum = Convert.ToInt32(existZy.OutNum); oriOutWt = Convert.ToDouble(existZy.OutWt); oriInNum = Convert.ToInt32(existZy.InNum); oriInWt = Convert.ToDouble(existZy.InWt); oriOutNum += totalCutOutNum; oriOutWt += totalCutOutWt; oriInNum +=totalInNum; oriInWt +=totalInWt; normalSqlidList.Add(SqlIDDef.PlanLuJGX.UpdateZYJGX_WT_NUM); normalParameterList.Add(new List() { oriInWt, oriInNum, oriOutNum, oriOutWt, m_loginusername, existZy.HeatPlanNo }); } catch { } } else { entitySqlidList.Add(SqlIDDef.PlanLuJGX.insertZYJGXM); entityjsonStrings.Add(JSONFormat.Format(mzyjgx)); entityClassNameList.Add(ClassDef.PlnZyJgxMEntity); } if (isMatched) { matchwt += totalCutOutWt; matchnum += totalCutOutNum; normalSqlidList.Add(SqlIDDef.PlanLuJGX.UpdateOrderJGX_MATCH_WT_NUM); normalParameterList.Add(new List() { _orderjgx.MatchWtIn, _orderjgx.MatchNumIn, _orderjgx.ProPlanId, _orderjgx.GxPlanNo }); } batchnum += totalCutOutNum; batchwt += totalCutOutWt; normalSqlidList.Add(SqlIDDef.MaterialChoose.updateMaterial); normalParameterList.Add(new List() { mzyjgx.InwlId.ToString(), firstmatrow.Cells["JUDGE_STOVE_NO"].Value, firstmatrow.Cells["BATCH_NO"].Value, firstmatrow.Cells["BATCH_GROUD_NO"].Value, "G", Convert.ToInt32(mzyjgx.InNum), "G", "加工线", _orderjgx.ProPlanId.ToString(), _orderjgx.GxPlanNo, lockLiku, m_loginusername }); normalSqlidList.Add(SqlIDDef.PlanLuJGX.UpdateOrderJGX_WT_NUM); normalParameterList.Add(new List() { batchwt, batchnum, _orderjgx.ProPlanId, _orderjgx.GxPlanNo }); BaseEntityDAL.ExcuteTransaction(entitySqlidList, entityjsonStrings, entityClassNameList, normalSqlidList, normalParameterList, this.ob); //BaseEntityDAL.UpdateOrder_WT_NUM("PLN_ORDER_JGX_S",_orderjgx.BatchedWt.ToString(),_orderjgx.BatchedNum.ToString(),_orderjgx.ProPlanId.ToString(),_orderjgx.GxPlanNo.ToString(),this.ob); //UpdateOrderRCL_WT_NUM(_orderjgx); queryAll(); //throw new NotImplementedException(); } #endregion #region 数据库操作 private void queryAll() { queryMat(); queryOrder(); } /// /// 物料确认动作的方法 /// private void Confirm() { this.ultraGrid1.UpdateData(); var editedrows = this.ultraGrid1.Rows.Where(c => c.Cells["Choose"].Text.Equals("True") && !string.IsNullOrEmpty(c.Cells["USER_ACT_COUNT"].Value.ToString()) && !c.Cells["USER_ACT_COUNT"].Value.ToString().Equals("0")); if (!Isupdate) { List ListMATRows = new List(); foreach (Infragistics.Win.UltraWinGrid.UltraGridRow row in editedrows) { ListMATRows.Add(row); } if (ListMATRows.Count > 0) { OnMaterialConfirm(ListMATRows); } } else { if (editedrows.Count() > 0) { var orderrow = this.ultraGrid2.Rows.First(); foreach (var row in editedrows) { if (CustomInfo == CustomInfoDef.DEFINE_CUSTOMER_ZG) { m_OriginNum = RowsCountsMapping[row]; } if (row.Cells["USER_ACT_COUNT"].Text.Trim().Equals("0")) { MessageUtil.ShowTips(string.Format("无法将投入量修改为0,如需删除作业计划请尝试回到{0}炉计划界面进行脱单或删除", CommHelper.getProcessDesc(CustomInfo))); return; } int finalNum = 0; finalNum = Convert.ToInt32(row.Cells["USER_ACT_COUNT"].Text.Trim()); double MAT_sinlewt = CommHelper.GetSpecDecimalBit(Convert.ToDouble(row.Cells["ACT_WEIGHT"].Text) / Convert.ToDouble(row.Cells["ACT_COUNT"].Text), 3); double OUT_singlewt = CommHelper.GetSpecDecimalBit(Convert.ToDouble(orderrow.Cells["WeigthS"].Text) / Convert.ToDouble(orderrow.Cells["NumS"].Text), 3); List normalSqlidList = new List(); List> normalParameterList = new List>(); string sqlID_UPDATEZY_WT_NUM = ""; string sqlID_UPDATEORDER_WT_NUM = ""; string sqlID_UPDATEOREER_MATCH_WT_NUM = ""; switch (CustomInfo) { case CustomInfoDef.DEFINE_CUSTOMER_DBK: sqlID_UPDATEZY_WT_NUM = SqlIDDef.PlanLuDBK.UpdateZYDBK_WT_NUM; sqlID_UPDATEORDER_WT_NUM = SqlIDDef.PlanLuDBK.UpdateOrderDBK_WT_NUM; sqlID_UPDATEOREER_MATCH_WT_NUM = SqlIDDef.PlanLuDBK.UpdateOrderDBK_MATCH_WT_NUM; break; case CustomInfoDef.DEFINE_CUSTOMER_JG: sqlID_UPDATEZY_WT_NUM = SqlIDDef.PlanLuJGX.UpdateZYJGX_WT_NUM; sqlID_UPDATEORDER_WT_NUM = SqlIDDef.PlanLuJGX.UpdateOrderJGX_WT_NUM; sqlID_UPDATEOREER_MATCH_WT_NUM = SqlIDDef.PlanLuJGX.UpdateOrderJGX_MATCH_WT_NUM; break; case CustomInfoDef.DEFINE_CUSTOMER_RCL: sqlID_UPDATEZY_WT_NUM = SqlIDDef.PlanLuRCL.UpdateZYRCL_WT_NUM; sqlID_UPDATEORDER_WT_NUM = SqlIDDef.PlanLuRCL.UpdateRCLORDER_WT_NUM; sqlID_UPDATEOREER_MATCH_WT_NUM = SqlIDDef.PlanLuRCL.UpdateOrderRCL_MATCH_WT_NUM; break; case CustomInfoDef.DEFINE_CUSTOMER_ZG: sqlID_UPDATEZY_WT_NUM = SqlIDDef.PlanLuZG.UpdateZYZG_WT_NUM; sqlID_UPDATEORDER_WT_NUM = SqlIDDef.PlanLuZG.UpdateOrderZG_WT_NUM; sqlID_UPDATEOREER_MATCH_WT_NUM = SqlIDDef.PlanLuZG.UpdateOrderZG_MATCH_WT_NUM; break; } int nLockLiku = 0; nLockLiku = DBComm.queryLockLiku(m_StoveNo, m_BatchNo, m_BatchGroupNo, m_ProPlanId, m_GxPlanNo, this.ob); int actlen = 0; try { actlen = Convert.ToInt32(row.Cells["ACT_LEN"].Value); } catch {} if (finalNum > m_OriginNum)//利库 { int likuNum = finalNum - m_OriginNum; #region 更新物料 if (CustomInfo == CustomInfoDef.DEFINE_CUSTOMER_ZG) { normalSqlidList.Add(SqlIDDef.MaterialChoose.updateGP); normalParameterList.Add(new List() { m_InwlId, m_StoveNo,row.Cells["ACT_LEN"].Value, CommHelper.getProcessCode(CustomInfo), likuNum, CommHelper.getProcessCode(CustomInfo), CommHelper.getProcessDesc(CustomInfo), m_ProPlanId, m_GxPlanNo, m_loginusername,nLockLiku }); } else { normalSqlidList.Add(SqlIDDef.MaterialChoose.updateMaterial); normalParameterList.Add(new List() { m_InwlId, m_StoveNo, m_BatchNo, m_BatchGroupNo, CommHelper.getProcessCode(CustomInfo), likuNum, CommHelper.getProcessCode(CustomInfo), CommHelper.getProcessDesc(CustomInfo), m_ProPlanId, m_GxPlanNo, nLockLiku, m_loginusername }); } #endregion #region 更新作业计划量 //计划投入重量 double InWt = finalNum * MAT_sinlewt; //计划投入支数 int InNum = finalNum; //计划产出重量 double OutWt = finalNum * OUT_singlewt; //计划产出支数 int OutNum = finalNum; // int addCutSingleNum = 0; double addCutSinleWt = 0; if (CustomInfo == CustomInfoDef.DEFINE_CUSTOMER_ZG) { var zyzgcs = EntityHelper.GetData(MethodDef.StoveBase.queryZyC, new Object[] { SqlIDDef.PlanLuZG.queryZYZGC, m_heatplanno }, this.ob); PlnZyZgCEntity zyzgc = zyzgcs.Where(c => c.LengthGp.ToString().Trim().Equals(actlen.ToString())).First(); if (zyzgc == null) { MessageUtil.ShowError(string.Format("数据出错,未能根据物料找到对应长度的从表记录 --ACT_LEN={0}", actlen)); return; } int oriCutSingleNum = Convert.ToInt32(zyzgc.CutSingleNum); double oriCutSingleWt = Convert.ToDouble(zyzgc.CutSingleWt); //冲减从表作业计划量 addCutSingleNum = Convert.ToInt32(zyzgc.MultipleNum) * (finalNum - m_OriginNum); addCutSinleWt = CommHelper.GetSpecDecimalBit(addCutSingleNum * PlanComm.GpweightOfmi(Convert.ToDouble(orderrow.Cells["Aimoutdiameter"].Value)) * Convert.ToInt16(zyzgc.LenGpSingle)*0.001, 3); OutNum = addCutSingleNum * Convert.ToInt32(orderrow.Cells["OutnumCut"].Value); OutWt =CommHelper.GetSpecDecimalBit( OutNum * PlanComm.WeightOfMi(Convert.ToDouble(orderrow.Cells["Aimoutdiameter"].Value), Convert.ToDouble(orderrow.Cells["Aimwallthick"].Value)) * Convert.ToDouble(orderrow.Cells["Aimlength"].Value),3); oriCutSingleNum += addCutSingleNum; oriCutSingleWt += addCutSinleWt; int InGpNum = finalNum; double InGpWt =CommHelper.GetSpecDecimalBit(finalNum * MAT_sinlewt,3); normalSqlidList.Add(SqlIDDef.PlanLuZG.UpdateZYZGC_GPWT_GPNUM); normalParameterList.Add(new List() {oriCutSingleNum,oriCutSingleWt,InGpNum,InGpWt,m_heatplanno,zyzgc.GpCutNo }); //冲减主表作业计划量 var zyzgms = EntityHelper.GetData(MethodDef.StoveBase.queryZy,new Object[]{SqlIDDef.PlanLuZG.queryZYZGM,m_heatplanno},this.ob); PlnZyZgMEntity zyzgm = zyzgms.First(); int MoriCutSingleNum = Convert.ToInt32(zyzgm.CutSingleNum); double MoriCutSingleWt = Convert.ToDouble(zyzgm.CutSingleWt); int MOriPlanGpNum = Convert.ToInt32(zyzgm.PlanGpNum); int MOriOutNum = Convert.ToInt32(zyzgm.OutNum); double MOriOutWt = Convert.ToDouble(zyzgm.OutWt); MoriCutSingleNum += addCutSingleNum; MoriCutSingleWt += addCutSinleWt; MOriOutNum += OutNum; MOriOutWt += OutWt; MOriPlanGpNum += finalNum - m_OriginNum; normalSqlidList.Add(SqlIDDef.PlanLuZG.UpdateZYZG_WT_NUM); normalParameterList.Add(new List() { MoriCutSingleNum, MoriCutSingleWt, MOriOutNum, MOriOutWt, m_loginusername, MOriPlanGpNum, m_heatplanno }); } else { normalSqlidList.Add(sqlID_UPDATEZY_WT_NUM); normalParameterList.Add(new List() { InWt, InNum, OutNum, OutWt, m_loginusername, m_heatplanno }); } #endregion #region 累加炉计划已排支数 //原始支数 int Ori_Batch_Num = Convert.ToInt32(orderrow.Cells["BatchedNum"].Text); //原始重量 double Ori_Batch_Wt = Convert.ToDouble(orderrow.Cells["BatchedWt"].Text); if (CustomInfo == CustomInfoDef.DEFINE_CUSTOMER_ZG) { Ori_Batch_Num += OutNum; Ori_Batch_Wt += OutWt; } else { //累加炉计划已排数量 Ori_Batch_Num += likuNum; Ori_Batch_Wt += likuNum * OUT_singlewt; } normalSqlidList.Add(sqlID_UPDATEORDER_WT_NUM); normalParameterList.Add(new List() { Ori_Batch_Wt, Ori_Batch_Num, m_ProPlanId, m_GxPlanNo }); #endregion #region 更新利库量 if (nLockLiku == 1)//更新利库量 { //原始投入利库支数 int Ori_Match_Num = Convert.ToInt32(orderrow.Cells["MatchNumIn"].Text); //原始投入利库重量 double Ori_Match_Wt = Convert.ToDouble(orderrow.Cells["MatchWtIn"].Text); //累加投入利库量 if (CustomInfo == CustomInfoDef.DEFINE_CUSTOMER_ZG) { Ori_Match_Num += OutNum; Ori_Batch_Wt += OutWt; } else { Ori_Match_Num += likuNum; Ori_Match_Wt += likuNum * OUT_singlewt; } normalSqlidList.Add(sqlID_UPDATEOREER_MATCH_WT_NUM); normalParameterList.Add(new List() { Ori_Match_Wt, Ori_Match_Num, m_ProPlanId, m_GxPlanNo }); } #endregion } else if (finalNum < m_OriginNum)//脱单 { int sepNum = m_OriginNum - finalNum; #region 退回物料 // if (CustomInfo == CustomInfoDef.DEFINE_CUSTOMER_ZG) { if (!m_PlanStatus.Equals("计划")) { MessageUtil.ShowWarning("轧管只允状态为计划的作业计划进行脱单"); return; } normalSqlidList.Add(SqlIDDef.MaterialChoose.updateGPBack); normalParameterList.Add(new List() { m_InwlId, m_StoveNo, m_ProPlanId, m_GxPlanNo,actlen, CommHelper.getProcessCode(CustomInfo), CommHelper.getProcessDesc(CustomInfo), CommHelper.getProcessCode(CustomInfo), sepNum, m_loginusername }); } else { if (m_PlanStatus.Equals("生产完成")) { normalSqlidList.Add(SqlIDDef.MaterialChoose.updateMaterialBackWhenFinish); normalParameterList.Add(new List() { m_InwlId, m_StoveNo, m_GxPlanNo, m_BatchNo, m_BatchGroupNo, CommHelper.getProcessCode(CustomInfo), CommHelper.getProcessDesc(CustomInfo), m_ProPlanId, CommHelper.getProcessCode(CustomInfo), sepNum, 0, m_loginusername }); } else { normalSqlidList.Add(SqlIDDef.MaterialChoose.updateMaterialBack); normalParameterList.Add(new List() { m_InwlId, m_StoveNo, m_GxPlanNo, m_BatchNo, m_BatchGroupNo, CommHelper.getProcessCode(CustomInfo), CommHelper.getProcessDesc(CustomInfo), m_ProPlanId, CommHelper.getProcessCode(CustomInfo), sepNum, 0, m_loginusername }); } } #endregion #region 冲减作业计划量 double InWt = finalNum * MAT_sinlewt;//计划投入重量 int InNum = finalNum;//计划投入支数 double OutWt = finalNum * OUT_singlewt; //计划产出重量 int OutNum = finalNum;//计划产出支数 int sepCutSingleNum = 0; double sepCutSingleWt = 0; if (CustomInfo == CustomInfoDef.DEFINE_CUSTOMER_ZG) { //冲减作业计划从表 var zyzgcs = EntityHelper.GetData(MethodDef.StoveBase.queryZyC, new Object[] { SqlIDDef.PlanLuZG.queryZYZGC, m_heatplanno }, this.ob); PlnZyZgCEntity zyzgc = zyzgcs.Where(c => c.LengthGp.ToString().Trim().Equals(actlen.ToString())).First(); sepCutSingleNum = sepNum * Convert.ToInt32(zyzgc.MultipleNum); sepCutSingleWt = CommHelper.GetSpecDecimalBit(sepCutSingleNum * PlanComm.GpweightOfmi(Convert.ToDouble(orderrow.Cells["Aimoutdiameter"].Value)) * Convert.ToInt16(zyzgc.LenGpSingle)*0.001, 3); OutNum = sepCutSingleNum * Convert.ToInt32(orderrow.Cells["OutnumCut"].Value); OutWt = CommHelper.GetSpecDecimalBit(OutNum * PlanComm.WeightOfMi(Convert.ToDouble(orderrow.Cells["Aimoutdiameter"].Value), Convert.ToDouble(orderrow.Cells["Aimwallthick"].Value)) * Convert.ToDouble(orderrow.Cells["Aimlength"].Value), 3); int CoriCutSingleNum = Convert.ToInt32(zyzgc.CutSingleNum); double CoriCutSingleWt = Convert.ToDouble(zyzgc.CutSingleWt); CoriCutSingleNum -= sepCutSingleNum; CoriCutSingleWt -= sepCutSingleWt; normalSqlidList.Add(SqlIDDef.PlanLuZG.UpdateZYZGC_GPWT_GPNUM); normalParameterList.Add(new List() { CoriCutSingleNum,CoriCutSingleWt,finalNum,InWt,m_heatplanno,zyzgc.GpCutNo}); //冲减作业计划主表 var zyzgms = EntityHelper.GetData(MethodDef.StoveBase.queryZy,new Object[]{SqlIDDef.PlanLuZG.queryZYZGM,m_heatplanno},this.ob); PlnZyZgMEntity zyzgm = zyzgms.First(); int MoriCutSingleNum = Convert.ToInt32(zyzgm.CutSingleNum); double MoriCutSingleWt = Convert.ToDouble(zyzgm.CutSingleWt); int MoriOutNum = Convert.ToInt32(zyzgm.OutNum); double MoriOutWt = Convert.ToDouble(zyzgm.OutWt); int MoriPlanGpNum = Convert.ToInt32(zyzgm.PlanGpNum); MoriCutSingleNum -= sepCutSingleNum; MoriCutSingleWt -= sepCutSingleWt; MoriOutNum -= OutNum; MoriOutWt -= OutWt; MoriPlanGpNum -= sepNum; normalSqlidList.Add(SqlIDDef.PlanLuZG.UpdateZYZG_WT_NUM); normalParameterList.Add(new List() {MoriCutSingleNum,MoriCutSingleWt,MoriOutNum,MoriOutWt,m_loginusername,MoriPlanGpNum,m_heatplanno }); } else { normalSqlidList.Add(sqlID_UPDATEZY_WT_NUM); normalParameterList.Add(new List() { InWt, InNum, OutNum, OutWt, m_loginusername, m_heatplanno }); } #endregion #region 冲减炉计划已排量 // normalSqlidList.Add(sqlID_UPDATEORDER_WT_NUM); int Ori_Batch_Num = 0; double Ori_Batch_Wt = 0; //原始支数 try { Ori_Batch_Num = Convert.ToInt32(orderrow.Cells["BatchedNum"].Text); //原始重量 Ori_Batch_Wt = Convert.ToDouble(orderrow.Cells["BatchedWt"].Text); } catch { } //冲减炉计划已排量 if (CustomInfo == CustomInfoDef.DEFINE_CUSTOMER_ZG) { Ori_Batch_Num -= OutNum; Ori_Batch_Wt -= OutWt; } else { Ori_Batch_Num -= sepNum; Ori_Batch_Wt -= sepNum * OUT_singlewt; } normalParameterList.Add(new List() { Ori_Batch_Wt, Ori_Batch_Num, m_ProPlanId, m_GxPlanNo }); #endregion #region 冲减投入利库量 // if (nLockLiku == 1)//更新利库量 { //原始投入利库支数 int Ori_Match_Num = Convert.ToInt32(orderrow.Cells["MatchNumIn"].Text); //原始投入利库重量 double Ori_Match_Wt = Convert.ToDouble(orderrow.Cells["MatchWtIn"].Text); //累加投入利库量 if (CustomInfo == CustomInfoDef.DEFINE_CUSTOMER_ZG) { Ori_Match_Num -= OutNum; Ori_Batch_Wt -= OutWt; } else { Ori_Match_Num -= sepNum; Ori_Match_Wt -= sepNum * OUT_singlewt; } normalSqlidList.Add(sqlID_UPDATEOREER_MATCH_WT_NUM); normalParameterList.Add(new List() { Ori_Match_Wt, Ori_Match_Num, m_ProPlanId, m_GxPlanNo }); } #endregion } if (normalSqlidList.Count > 0) { BaseEntityDAL.ExcuteTransaction(normalSqlidList, normalParameterList, this.ob); double singlewt = CommHelper.GetSpecDecimalBit(m_OriginTOtalWt / m_OriginTotalnum, 3); if (CustomInfo != CustomInfoDef.DEFINE_CUSTOMER_ZG) { m_OriginNum = finalNum; SetTempData(m_OriginNum, singlewt * m_OriginNum); } else { RowsCountsMapping[row] = finalNum; } } } if (CustomInfo == CustomInfoDef.DEFINE_CUSTOMER_ZG) { int count = 0; foreach (var obj in RowsCountsMapping) { count += obj.Value; } m_OriginNum = count; } queryOrder(); } } } private void queryOrder() { switch (CustomInfo) { case CustomInfoDef.DEFINE_CUSTOMER_DBK: this.plnOrderDbkSEntityBindingSource.DataSource = DBComm.queryOrderDBK("", "", m_ProPlanId, m_GxPlanNo, new string[] { "计划", "生产中", "生产完成", "关闭A" }, this.ob); break; case CustomInfoDef.DEFINE_CUSTOMER_JG: this.plnOrderJgxSEntityBindingSource.DataSource = DBComm.QueryOrderJG("", "", m_ProPlanId, m_GxPlanNo, new string[] { "计划", "生产中", "生产完成", "关闭A" }, this.ob); break; case CustomInfoDef.DEFINE_CUSTOMER_RCL: this.plnOrderRclSEntityBindingSource.DataSource = DBComm.QueryOrderRCL("", "", m_ProPlanId, m_GxPlanNo, new string[] { "计划", "生产中", "生产完成", "关闭A" }, this.ob); break; case CustomInfoDef.DEFINE_CUSTOMER_ZG: this.plnOrderZgSEntityBindingSource.DataSource = DBComm.QueryOrderZG("", "", m_ProPlanId, m_GxPlanNo, new string[] { "计划", "生产中", "生产完成", "关闭A" }, this.ob); break; } DataTable dt = ServerHelper.GetData(MethodDef.StoveBase.queryBatchMatch, new Object[] { CommHelper.GetOrdertableName(CustomInfo), m_ProPlanId, m_GxPlanNo }, this.ob); if (dt.Rows.Count > 0) { int InNumS = 0; int ADD_NUM_IN = 0; int BATCHED_NUM = 0; try { InNumS = Convert.ToInt32(dt.Rows[0]["IN_NUM_S"].ToString()); ADD_NUM_IN = Convert.ToInt32(dt.Rows[0]["ADD_NUM_IN"].ToString()); } catch { } try { BATCHED_NUM = Convert.ToInt32(dt.Rows[0]["BATCHED_NUM"].ToString()); if (CustomInfo == CustomInfoDef.DEFINE_CUSTOMER_ZG) { DataTable dtInGpSum = ServerHelper.GetData(MethodDef.PlanLuZG.queryInNumInOrder, new Object[] { m_ProPlanId, m_GxPlanNo }, this.ob); if (dtInGpSum.Rows.Count > 0) { BATCHED_NUM = Convert.ToInt32(dtInGpSum.Rows[0][0]); } } } catch { } if (Isupdate) { m_MaxValidCount = InNumS + ADD_NUM_IN + m_OriginNum - BATCHED_NUM; } else { m_MaxValidCount = InNumS + ADD_NUM_IN - BATCHED_NUM; } } } private void queryMat() { DataTable dt = new DataTable(); if (Isupdate) { dt = DBComm.queryMaterialbyStv(m_InwlId,CustomInfo,m_StoveNo,m_BatchNo,m_BatchGroupNo,m_ProPlanId,m_GxPlanNo,this.ob); } else { dt = DBComm.queryMaterial(m_InwlId, CustomInfo, this.ob); } GridHelper.CopyDataToDatatable(dt,this.dataTable1,true); } /// /// 根据物料编码更新MAT_GP_M表的前Usercount条数据的Process_Code和Process_DESC /// /// /// /// /// /// private int UpdateMAT_GP_M(String PROCESS_CDOE, String PROCESS_DESC, String MATERIAL_NO, String JUDGE_STOVE_NO, int USERCOUNT) { int nret = 0; nret = Core.Mes.Client.Comm.Server.ServerHelper.SetData(MethodDef.MaterialChoose.UpdateMAT_GP_M, new Object[] { PROCESS_CDOE, PROCESS_DESC, MATERIAL_NO, JUDGE_STOVE_NO, USERCOUNT }, this.ob); return nret; } #endregion } }