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 CoreFS.CA06; using Core.Mes.Client.Comm.Tool; using com.steering.pss.plnsaleord.order.model; using Core.Mes.Client.Comm; using System.Collections; using Core.Mes.Client.Comm.Server; using Infragistics.Win.UltraWinGrid; using com.steering.pss.plnsaleord.ordAmCal.model; using Core.StlMes.Client.PlnSaleOrd.BaseMethod; namespace Core.StlMes.Client.PlnSaleOrd.PopupWindow { public partial class FrmChangeIndex : FrmBase { /// /// 交货pk /// private string ordLnDlyPk = ""; /// /// 补量需求编号 /// private string rNumId = ""; private string ordLnDlyPkL = ""; private string plnDivideId = ""; private string orderSource = ""; public FrmChangeIndex() { InitializeComponent(); EntityHelper.ShowGridCaption(ultraGridProc.DisplayLayout.Bands[0]); } public FrmChangeIndex(OpeBase _ob, string _ordLnDlyPk, string _plnDivideId,string _orderSource) { this.ob = _ob; ordLnDlyPkL = _ordLnDlyPk; plnDivideId = _plnDivideId; orderSource = _orderSource; this.IsLoadUserView = true; InitializeComponent(); EntityHelper.ShowGridCaption(ultraGridProc.DisplayLayout.Bands[0]); } private void FrmChangeIndex_Load(object sender, EventArgs e) { this.comMscPilneCtrl1.ComBLL(this.ob); string ordLnPk = ""; if (ordLnDlyPk.Length > 3) { ordLnPk = ordLnDlyPk.Substring(0, ordLnDlyPk.Length - 3); } this.comMscPilneCtrl1.OrdLnPk = ordLnPk; if (!rNumId.Equals("")) { ultraToolbarsManager1.Tools.Remove(ultraToolbarsManager1.Tools["Add"]); ultraToolbarsManager1.Tools.Remove(ultraToolbarsManager1.Tools["Save"]); ultraToolbarsManager1.Tools.Remove(ultraToolbarsManager1.Tools["Delete"]); ultraGridProc.DisplayLayout.Bands[0].Columns["RNumId"].Hidden = false; PlanComm.setGridActivation(this.ultraGridProc.DisplayLayout.Bands[0], "CHC"); } else { PlanComm.setGridActivation(this.ultraGridProc.DisplayLayout.Bands[0], "CHC", "OrderQtyD"); } PlanComm.setGridDigitalCol(this.ultraGridProc.DisplayLayout.Bands[0], 5, 3, "PlanWtD", "FinishWt", "PlanPMain", "OrderQtyD", "AimLenEnd", "AimLenRoll", "PlanPMainMin", "AimWtEnd", "WeightJg"); PlanComm.setGridDigitalCol(this.ultraGridProc.DisplayLayout.Bands[0], 5, 2, "TotLenOneP", "PlanTotLenD", "HeightYlg", "DimaterYlg", "AimWallthick", "RollLength", "AimOutdiameter", "FeedRate", "Coefficient", "CoefficientMin", "CheckJVal"); PlanComm.setGridDigitalCol(this.ultraGridProc.DisplayLayout.Bands[0], 7, 0, "PlanNumD", "CutNumP"); PlanComm.setGridDigitalCol(this.ultraGridProc.DisplayLayout.Bands[0], 3, 6, "WeightPerM", "WeightKzM"); PlanComm.setGridSummarySet(this.ultraGridProc, 3, "PlanWtD","FinishWt", "PlanPMain", "OrderQtyD","PlanPMainMin"); DoQuery(); } private void ultraToolbarsManager1_ToolClick(object sender, Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e) { switch (e.Tool.Key) { case "Query": DoQuery(); break; case "Add": DoNew(); break; case "Modify": DoModify(); break; case "Save": DoSave(); break; case "Delete": DoDelete(); break; case "Colse": this.Close(); break; } } /// /// 查询 /// private void DoQuery() { this.slmPlnSaleordProcEntitybindingSource.DataSource = EntityHelper.GetData( "com.steering.pss.plnsaleord.order.CoreChangeIndex.queryPlnOrderProc", new object[] { ordLnDlyPk, rNumId, plnDivideId }, this.ob); DataTable dt = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CorePlnSaleOrder.querySaleStatus", new object[] { ordLnDlyPk }, this.ob); if (dt != null && dt.Rows.Count > 0) { ultraNumericOrderWt.Value = 0; ultraTextOrderUnit.Value = dt.Rows[0]["ORDER_UNIT"].ToString(); } } /// /// 新增交货行拆分 /// private void DoNew() { try { UltraGridRow ugr = ultraGridProc.ActiveRow; if (ugr == null) { return; } double orderQty = 0; double orderQtyD = 0; ArrayList list = new ArrayList(); if (!double.TryParse(ultraNumericOrderWt.Value.ToString(), out orderQtyD)) { MessageUtil.ShowTips("拆分量未指定!"); return; } if (orderQtyD <= 0) { MessageUtil.ShowTips("拆分量未指定!"); return; } ArrayList param = new ArrayList(); PlnSaleordProcEntity ordProcEntity = new PlnSaleordProcEntity(); comMscPilneCtrl1.UltraGridMscPline.UpdateData(); IQueryable checkRows = comMscPilneCtrl1.UltraGridMscPline.Rows.AsQueryable().Where("CHC = 'True'"); if (checkRows.Count() <= 0) { MessageUtil.ShowError("没有选择的制程工艺!"); return; } string desginKey = this.comMscPilneCtrl1.DesginKey; ordProcEntity.IndexSeq = this.comMscPilneCtrl1.CheMscPline; ordProcEntity.CraftFileMan = this.comMscPilneCtrl1.CheCraftName; ordProcEntity.CraftFileNo = this.comMscPilneCtrl1.CheCraftNo; ordProcEntity.CraftSeq = this.comMscPilneCtrl1.CheCraftSeq; ordProcEntity.GradecodeAll = this.comMscPilneCtrl1.GradeNameAll; ordProcEntity.OrdLnDlyPk = ordLnDlyPk; ordProcEntity.OrderSource = "销售合同"; string finalUser = ""; //最终用户 string produccode = ""; //品名代码 double outdiameter = 0; double wallthick = 0; double delvryRangeMax = 0; double delvryRangeMin = 0; double lengthmax = 0; double lengthmin = 0; string delvryRangeTpe = ""; DataTable dtStatus = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CoreChangeIndex.queryPlnSaleOrderProc", new object[] { ordLnDlyPk }, this.ob); if (dtStatus != null && dtStatus.Rows.Count > 0) { //判断制程有误重复 //foreach (DataRow dr in dtStatus.Rows) //{ // if (dr["CRAFT_SEQ"].Equals(comMscPilneCtrl1.CheCraftSeq)) // { // MessageUtil.ShowError("序号:“" + comMscPilneCtrl1.CheCraftSeq + "”的工艺已经被使用!"); // return; // } //} if (dtStatus.Rows[0]["MERGETYPE"].ToString().Equals("3")) { MessageUtil.ShowError("管坯类型的合同不允许拆分!"); return; } DataTable dtProc = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CoreChangeIndex.queryPlnOrdProcById", new object[] { ordLnDlyPk, ugr.Cells["PlnDivideId"].Value.ToString() }, this.ob); if (dtProc == null || dtProc.Rows.Count <= 0) { return; } if (dtProc.Rows[0]["PLANSTATUS"].ToString().CompareTo("1") > 0) { MessageUtil.ShowTips("交货行拆分项已经下发,不可用再进行拆分!"); return; } if (!double.TryParse(dtProc.Rows[0]["ORDER_QTY_D"].ToString(), out orderQty)) { return; } if (orderQty <= 0) { MessageUtil.ShowTips("合同原订货量有误!"); return; } if (orderQtyD > orderQty) { MessageUtil.ShowTips("拆分量不能大于原订货量!"); return; } double.TryParse(dtStatus.Rows[0]["OUTDIAMETER"].ToString(), out outdiameter); double.TryParse(dtStatus.Rows[0]["WALLTHICK"].ToString(), out wallthick); double.TryParse(dtStatus.Rows[0]["DELVRY_RANGE_MAX"].ToString(), out delvryRangeMax); double.TryParse(dtStatus.Rows[0]["DELVRY_RANGE_MIN"].ToString(), out delvryRangeMin); double.TryParse(dtStatus.Rows[0]["LENGTHMAX"].ToString(), out lengthmax); double.TryParse(dtStatus.Rows[0]["LENGTHMIN"].ToString(), out lengthmin); delvryRangeTpe = dtStatus.Rows[0]["DELVRY_RANGE_TPE"].ToString(); finalUser = dtStatus.Rows[0]["FINAL_USER"].ToString(); produccode = dtStatus.Rows[0]["PRODUCCODE"].ToString(); ordProcEntity.Msc = dtStatus.Rows[0]["MSC"].ToString(); ordProcEntity.MaterialNo = dtStatus.Rows[0]["MATERIAL_NO"].ToString(); ordProcEntity.WeightPerM = dtProc.Rows[0]["WEIGHT_PER_M"].ToString(); ordProcEntity.OrderUnit = dtProc.Rows[0]["ORDER_UNIT"].ToString(); ordProcEntity.Prdcrpro = FrmPlnSaleOrder.getOrdPrdcrpro( dtStatus.Rows[0]["PRDCR_NO"].ToString(), comMscPilneCtrl1.CheMscPline, this.ob); ordProcEntity.GradecodeAll = dtProc.Rows[0]["GRADECODE_ALL"].ToString(); ordProcEntity.IfExport = dtProc.Rows[0]["IF_EXPORT"].ToString(); } string outsStlPipeFl = dtStatus.Rows[0]["OUTS_STL_PIPE_FL"].ToString(); string outsBilletFl = dtStatus.Rows[0]["OUTS_BILLET_FL"].ToString(); param.Add(desginKey); param.Add(ordProcEntity.IndexSeq); DataTable dtProcess = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CorePlnSaleOrder.queryMscplPrc", new object[] { param }, this.ob); if (dtProcess != null && dtProcess.Rows.Count > 0) { ordProcEntity.ProcessSeq = dtProcess.Rows[0]["WHOLE_BACKLOG"].ToString(); if (ordProcEntity.ProcessSeq.Equals("")) { MessageUtil.ShowError("未找到制程经过的工序点,请联系管理员。"); return; } ordProcEntity.BjType = "/"; ordProcEntity.EIsOk = "2"; foreach (DataRow dr in dtProcess.Rows) { if (dr["PROCESS_CODE"].ToString().Equals("E")) { //经过镦拔扩工序 ordProcEntity.EIsOk = "0"; ordProcEntity.BjType = dr["PROCESS_DESC_C"].ToString(); } } } double weightJg=0; double checkJval=0; DataTable dtJg = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CorePlnSaleOrder.queryJgBase", new object[] { dtStatus.Rows[0]["CODE_JG"].ToString() }, this.ob); if(dtJg!=null&&dtJg.Rows.Count>0){ weightJg=double.Parse(dtJg.Rows[0]["WEIGHT_JG"].ToString()); checkJval=double.Parse(dtJg.Rows[0]["CHECK_J_VAL"].ToString()); } //查询物料信息 //param.Clear(); //param.Add(ordProcEntity.IndexSeq); //param.Add(ordProcEntity.Msc); //param.Add(ordProcEntity.MaterialNo); //param.Add(ordProcEntity.ProcessSeq); string outsBillet = "0"; if (outsStlPipeFl.Equals("") || outsStlPipeFl.Equals("121901")) { if (outsBilletFl.Equals("121801")) { outsBilletFl = "1"; } else { outsBilletFl = "0"; } } else { if (outsBilletFl.Equals("121802")) { outsBilletFl = "0"; } else { outsBilletFl = "1"; } } DataTable dtBom = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CoreOrderDesignBom.getOrdLineMscBom", new object[] { desginKey, ordProcEntity.Msc, ordProcEntity.IndexSeq }, this.ob); if (dtBom != null && dtBom.Rows.Count > 0) { bool isAvailBom = false;//是否存在可用BOM string errReason = "";//不可用原因 foreach (DataRow dr in dtBom.Rows) { //查询是否自炼,外购钢种 DataTable dt = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CoreOrderDesignBom.getGradeCode", new object[] { dr["GRADECODE"].ToString(), outsBillet }, this.ob); if (dt != null && dt.Rows.Count > 0) { ordProcEntity.Gradecode = dr["GRADECODE"].ToString(); } else { continue; } ordProcEntity.Bom = dr["BOM"].ToString(); ordProcEntity.GroupRollAll = dr["D_PLINE"].ToString(); ordProcEntity.EInMaterialDesc = dr["E_IN_MATERIAL_DESC"].ToString(); ordProcEntity.EInMaterialNo = dr["E_IN_MATERIAL_NO"].ToString(); ordProcEntity.DimaterYlg = dr["DIMATER"].ToString(); ordProcEntity.HeightYlg = dr["HEIGHT"].ToString(); ordProcEntity.GroupJgx = FrmDefGroup.DefJgxGourp(desginKey, ordProcEntity.IndexSeq, dr["BOM"].ToString(), this.ob); ordProcEntity.GroupRcl = FrmDefGroup.DefRclGourp(desginKey, ordProcEntity.IndexSeq, dr["BOM"].ToString(), this.ob); #region 判断坯料的属性 string dinMaterial = ""; ///轧管投入物料(炼钢末工序产出物料) if (!dr["D_IN_MATERIAL_NO"].ToString().Equals("")) { dinMaterial = dr["D_IN_MATERIAL_NO"].ToString(); } else if (!dr["C_OUT_MATERIAL_NO"].ToString().Equals("")) { dinMaterial = dr["C_OUT_MATERIAL_NO"].ToString(); } else if (!dr["B_OUT_MATERIAL_NO"].ToString().Equals("")) { dinMaterial = dr["B_OUT_MATERIAL_NO"].ToString(); } else { dinMaterial = dr["A_OUT_MATERIAL_NO"].ToString(); } ordProcEntity.StuffProperty = PlnSaleOrderBase.stuffProperty(dinMaterial); #endregion //轧管去向 ordProcEntity.Abc = PlnSaleOrderBase.getPlnOrdZgAbc(dr["WHOLE_BACKLOG"].ToString(), dr["WHOLE_BACKLOG_DESC"].ToString()); if (ordProcEntity.ProcessSeq.Contains("D")) { #region 默认轧管产线 ArrayList paramPline = new ArrayList(); paramPline.Add(dr["D_IN_MATERIAL_NO"].ToString()); paramPline.Add(dr["D_OUT_MATERIAL_NO"].ToString()); paramPline.Add(desginKey); paramPline.Add(ordProcEntity.IndexSeq); paramPline.Add(finalUser); paramPline.Add(produccode); DataTable dtDpl = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CoreOrderDesignBom.getBomMaterialDpl", new object[] { paramPline }, this.ob); if (dtDpl != null && dtDpl.Rows.Count > 0) { //如果存在ASSEL机组,优选ASSEL机组 if (PlanComm.isInDataTable(dtDpl, "PLINE_CODE", "C012")) { if (FrmPlnSaleOrder.queryAsselFl(this.comMscPilneCtrl1.OrdLnPk, this.ob)) { ordProcEntity.GroupRoll = "C012"; } else { bool isPline = false; foreach (DataRow drPine in dtDpl.Rows) { if (!drPine["PLINE_CODE"].ToString().Equals("C012")) { isPline = true; ordProcEntity.GroupRoll = drPine["PLINE_CODE"].ToString(); break; } } if (!isPline) { ordProcEntity.GroupRoll = dtDpl.Rows[0]["PLINE_CODE"].ToString(); } } } else { ordProcEntity.GroupRoll = dtDpl.Rows[0]["PLINE_CODE"].ToString(); } } #endregion } if (ordProcEntity.ProcessSeq.Contains("D") && !ordProcEntity.GroupRoll.Trim().Equals("C072") && !outsStlPipeFl.Equals("121903") && !outsStlPipeFl.Equals("121902") || ordProcEntity.OrderUnit.Trim().Equals("支")) { #region 合同量转换 OutOrdParamEntity outOrdParam = new OutOrdParamEntity(); InOrdParamEntity inOrdParam = new InOrdParamEntity(); PlnGetOrdAmount ordAmountCal = new PlnGetOrdAmount(this.ob); DateTime date = new DateTime(); string errMessage = ""; double putRate = 1; double height = 0; if (DateTime.TryParse(dtStatus.Rows[0]["ROLL_MONTH"].ToString(), out date)) { //投料率 putRate = FrmPlnSaleOrder.queryPutRate(date.Year, date.Month, this.ob); } inOrdParam = ordAmountCal.getInOrdPlnQtyParam( orderQtyD, ordProcEntity.OrderUnit, desginKey, ordProcEntity.IndexSeq, ordLnDlyPk, ordProcEntity.GroupRoll, ordProcEntity.Bom, dtStatus.Rows[0]["CODE_JG"].ToString(), putRate); if (!ordAmountCal.isRightParam(inOrdParam, desginKey, dtStatus.Rows[0]["CODE_JG"].ToString(), ordProcEntity.Bom, ordProcEntity.GroupRoll, out errMessage)) { errReason = errMessage; continue; } ordAmountCal.InEnity = inOrdParam; outOrdParam = ordAmountCal.getOrdAmount(); if (outOrdParam.ErrCode == -1) { errReason = "合同量转换出错(" + outOrdParam.ErrMessage + ")。"; continue; } ordProcEntity.WeightPerM = outOrdParam.WeightMi.ToString(); ordProcEntity.PlanWtD = outOrdParam.WeightInA.ToString(); ordProcEntity.PlanNumD = outOrdParam.PlanNum.ToString(); ordProcEntity.AimLenRoll = outOrdParam.AimlengthZg.ToString(); ordProcEntity.AimLenEnd = outOrdParam.AimLength.ToString(); ordProcEntity.PlanPMain = outOrdParam.WeightPc.ToString(); ordProcEntity.PlanTotLenD = (outOrdParam.PlanNum * outOrdParam.AimLength).ToString(); ordProcEntity.TotLenOneP = outOrdParam.TotLenOneP.ToString(); ordProcEntity.CutNumP = outOrdParam.CutNumP.ToString(); ordProcEntity.RollLength = outOrdParam.RollLength.ToString(); ordProcEntity.AimWallthick = outOrdParam.AimWallthick.ToString(); ordProcEntity.OrderQtyD = orderQtyD.ToString(); ordProcEntity.LenRollMax = outOrdParam.LenRollMax.ToString(); ordProcEntity.LenRollMin = outOrdParam.LenRollMin.ToString(); ordProcEntity.AimOutdiameter = outOrdParam.AimOutdiameter.ToString(); ordProcEntity.FeedRate = putRate.ToString(); ordProcEntity.Coefficient = outOrdParam.Coefficient.ToString(); ordProcEntity.CoefficientMin = outOrdParam.CoefficientMin.ToString(); ordProcEntity.PlanPMainMin = outOrdParam.PlanPMainMin.ToString(); ordProcEntity.AimWtEnd = outOrdParam.AimWtEnd.ToString(); ordProcEntity.WeightKzM = outOrdParam.WeightKzM.ToString(); // 查询控制壁厚 if (inOrdParam.StdWallthickMax == inOrdParam.NkWallthickMax && inOrdParam.StdWallthickMin == inOrdParam.NkWallthickMin && inOrdParam.Wallthick > 0) { ordProcEntity.HeightNkMax = (100 * inOrdParam.StdWallthickMax / inOrdParam.Wallthick).ToString(); ordProcEntity.HeightNkMin = (100 * inOrdParam.StdWallthickMin / inOrdParam.Wallthick).ToString(); } else if (double.TryParse(dr["HEIGHT"].ToString(), out height) && height > 0) { ordProcEntity.HeightNkMax = (100 * inOrdParam.NkWallthickMax / height).ToString(); ordProcEntity.HeightNkMin = (100 * inOrdParam.NkWallthickMin / height).ToString(); } #endregion } else { #region 外购管 double orderWeight = 0; //合同量 double aimlength = 0; //目标长度 int planNum = 0;//合同支数 OrderStdSic std = new OrderStdSic(this.ob); std.DesginKey = desginKey; std.Outdiameter = outdiameter; std.Wallthick = wallthick; std.getStdTolerance(); double weightMI = PlanComm.WeightOfMi(outdiameter, std.AimWallthick);//米单重 double rate = 0; double rateMin = 0; DateTime date = new DateTime(); if (delvryRangeTpe.Trim().Equals("绝对值")) { delvryRangeMax = (delvryRangeMax / orderQtyD) * 100; delvryRangeMin = (delvryRangeMin / orderQtyD) * 100; } if (ordProcEntity.OrderUnit.Equals("米")) { orderWeight = Math.Round((orderQtyD * weightMI), 3); } else if (ordProcEntity.OrderUnit.Equals("英尺")) { double lengqty = PlanComm.FootoMi(orderQtyD); orderWeight = Math.Round((lengqty * weightMI), 3); } else if (ordProcEntity.OrderUnit.Equals("英磅")) { orderWeight = PlanComm.PoundtoTon(orderQtyD); } else { orderWeight = orderQtyD; } //目标长度,取长度上下限中间值,计算计划支数 aimlength = (lengthmax + lengthmin) / 2; if ((orderWeight % (aimlength * weightMI)) == 0) { planNum = (int)(orderWeight / (aimlength * weightMI)); } else { planNum = (int)(orderWeight / (aimlength * weightMI)) + 1; } double putrate= FrmPlnSaleOrder.queryPutRate( date.Year, date.Month, this.ob); if (DateTime.TryParse(dtStatus.Rows[0]["ROLL_MONTH"].ToString(), out date)) { rate = ((delvryRangeMax + delvryRangeMin) * putrate - delvryRangeMin) / 100; rateMin = 1 - delvryRangeMin / 100; } ordProcEntity.OrderQtyD = orderQtyD.ToString(); ordProcEntity.PlanWtD = orderWeight.ToString(); ordProcEntity.PlanNumD = planNum.ToString(); ordProcEntity.WeightPerM = Math.Round(weightMI, 6).ToString(); ordProcEntity.AimLenEnd = aimlength.ToString(); ordProcEntity.PlanPMain = ((1 + rate) * orderWeight).ToString(); ordProcEntity.PlanTotLenD = (planNum * aimlength).ToString(); ordProcEntity.AimWallthick = std.AimWallthick.ToString(); ordProcEntity.AimOutdiameter =outdiameter.ToString(); ordProcEntity.FeedRate =putrate.ToString(); ordProcEntity.Coefficient =(1 + rate).ToString(); ordProcEntity.CoefficientMin = rateMin.ToString(); ordProcEntity.AimWtEnd = (weightJg / 1000 + weightMI * (aimlength - checkJval / 1000)).ToString(); ordProcEntity.WeightKzM = Math.Round(weightMI, 6).ToString(); ordProcEntity.PlanPMainMin = (rateMin * orderWeight).ToString(); // 查询控制壁厚 ordProcEntity.HeightNkMax = (100 * std.StdMax / wallthick).ToString(); ordProcEntity.HeightNkMin = (100 * std.StdMin / wallthick).ToString(); #endregion } isAvailBom = true; break; } if (!isAvailBom) { MessageUtil.ShowError(errReason); return; } } #region 各工序信息确认 if (ordProcEntity.ProcessSeq.Contains("F")) { //判断是否经过热处理工序 ordProcEntity.FIsOk = "0"; } else { ordProcEntity.FIsOk = "2"; } if (ordProcEntity.ProcessSeq.Contains("G")) { //判断是否经过管加工工序 ordProcEntity.GIsOk = "0"; } else { ordProcEntity.GIsOk = "2"; } if (ordProcEntity.ProcessSeq.Contains("D")) { //判断是否经过轧管工序 ordProcEntity.DIsOk = "0"; } else { ordProcEntity.DIsOk = "2"; } if (ordProcEntity.ProcessSeq.Contains("E")) { //判断是否经过镦拔扩工序 ordProcEntity.EIsOk = "0"; } else { ordProcEntity.EIsOk = "2"; } #endregion list.Add((orderQty - orderQtyD).ToString()); list.Add(OrdLnDlyPk); list.Add(ugr.Cells["PlnDivideId"].Value.ToString()); int succeed = ServerHelper.SetData("com.steering.pss.plnsaleord.order.CoreChangeIndex.newPlnOrdProc", new object[] { ordProcEntity, list }, this.ob); if (succeed > 0) { MessageUtil.ShowTips("新增成功。"); } } catch (Exception ex) { if (!(ex is MESException)) { MessageUtil.ShowError(ex.Message); } } DoQuery(); } /// /// 修改 /// private void DoModify() { try { ArrayList param = new ArrayList(); PlnSaleordProcEntity ordProcEntity = new PlnSaleordProcEntity(); UltraGridRow ugr = ultraGridProc.ActiveRow; if (ugr == null) { return; } comMscPilneCtrl1.UltraGridMscPline.UpdateData(); IQueryable checkRows = comMscPilneCtrl1.UltraGridMscPline.Rows.AsQueryable().Where("CHC = 'True'"); if (checkRows.Count() <= 0) { MessageUtil.ShowError("没有选择的制程工艺!"); return; } string desginKey = this.comMscPilneCtrl1.DesginKey; ordProcEntity.IndexSeq = this.comMscPilneCtrl1.CheMscPline; ordProcEntity.CraftFileMan = this.comMscPilneCtrl1.CheCraftName; ordProcEntity.CraftFileNo = this.comMscPilneCtrl1.CheCraftNo; ordProcEntity.CraftSeq = this.comMscPilneCtrl1.CheCraftSeq; ordProcEntity.GradecodeAll = this.comMscPilneCtrl1.GradeNameAll; ordProcEntity.OrdLnDlyPk = ordLnDlyPk; ordProcEntity.PlnDivideId = ugr.Cells["PlnDivideId"].Value.ToString(); string finalUser = ""; //最终用户 string produccode = ""; //品名代码 DataTable dtStatus = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CoreChangeIndex.queryPlnSaleOrderProc", new object[] { ordLnDlyPk }, this.ob); if (dtStatus != null && dtStatus.Rows.Count > 0) { if (dtStatus.Rows[0]["PORDERSTATUS"].ToString().CompareTo("3") > 0) { MessageUtil.ShowTips("合同:" + dtStatus.Rows[0]["ORDER_NO"].ToString() + "/" + dtStatus.Rows[0]["ORDER_SEQ"].ToString() + dtStatus.Rows[0]["DELIVERY_NO"].ToString() + "已经生产完成了。"); return; } //判断制程有误重复 //foreach (DataRow dr in dtStatus.Rows) //{ // if (dr["CRAFT_SEQ"].Equals(comMscPilneCtrl1.CheCraftSeq)) // { // MessageUtil.ShowError("序号:“" + comMscPilneCtrl1.CheCraftSeq + "”的工艺已经被使用!"); // return; // } //} finalUser = dtStatus.Rows[0]["FINAL_USER"].ToString(); produccode = dtStatus.Rows[0]["PRODUCCODE"].ToString(); ordProcEntity.Msc = dtStatus.Rows[0]["MSC"].ToString(); ordProcEntity.MaterialNo = dtStatus.Rows[0]["MATERIAL_NO"].ToString(); ordProcEntity.OrderNo = dtStatus.Rows[0]["ORDER_NO"].ToString(); ordProcEntity.OrderSeq = dtStatus.Rows[0]["ORDER_SEQ"].ToString(); ordProcEntity.WeightPerM = dtStatus.Rows[0]["WEIGHT_PER_M"].ToString(); } string outsStlPipeFl = dtStatus.Rows[0]["OUTS_STL_PIPE_FL"].ToString(); string outsBilletFl = dtStatus.Rows[0]["OUTS_BILLET_FL"].ToString(); DataTable dtProc = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CoreChangeIndex.queryPlnOrdProcById", new object[] { ordLnDlyPk, ugr.Cells["PlnDivideId"].Value.ToString() }, this.ob); if (dtProc == null || dtProc.Rows.Count <= 0) { MessageUtil.ShowError("找不到排产记录:" + ugr.Cells["PlnDivideId"].Value.ToString()); return; } if (!dtProc.Rows[0]["INDEX_SEQ"].ToString().Equals(ordProcEntity.IndexSeq) || !dtProc.Rows[0]["DESGIN_KEY"].ToString().Equals(desginKey)) { param.Add(desginKey); param.Add(ordProcEntity.IndexSeq); DataTable dtProcess = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CorePlnSaleOrder.queryMscplPrc", new object[] { param }, this.ob); if (dtProcess != null && dtProcess.Rows.Count > 0) { ordProcEntity.ProcessSeq = dtProcess.Rows[0]["WHOLE_BACKLOG"].ToString(); if (ordProcEntity.ProcessSeq.Equals("")) { MessageUtil.ShowError("未找到制程经过的工序点,请联系管理员。"); return; } ordProcEntity.BjType = "/"; ordProcEntity.EIsOk = "2"; foreach (DataRow dr in dtProcess.Rows) { if (dr["PROCESS_CODE"].ToString().Equals("E")) { //经过镦拔扩工序 ordProcEntity.EIsOk = "0"; ordProcEntity.BjType = dr["PROCESS_DESC_C"].ToString(); } if (dr["PROCESS_CODE"].ToString().Equals("F")) { //经过热处理工序 ordProcEntity.ProcDescCRcl = dr["PROCESS_DESC_C"].ToString(); } } } //查询物料信息 //param.Clear(); //param.Add(ordProcEntity.IndexSeq); //param.Add(ordProcEntity.Msc); //param.Add(ordProcEntity.MaterialNo); //param.Add(ordProcEntity.ProcessSeq); string outsBillet = "0"; if (outsStlPipeFl.Equals("") || outsStlPipeFl.Equals("121901")) { if (outsBilletFl.Equals("121801")) { outsBilletFl = "1"; } else { outsBilletFl = "0"; } } else { if (outsBilletFl.Equals("121802")) { outsBilletFl = "0"; } else { outsBilletFl = "1"; } } DataTable dtBom = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CoreOrderDesignBom.getOrdLineMscBom", new object[] { desginKey, ordProcEntity.Msc, ordProcEntity.IndexSeq }, this.ob); if (dtBom != null && dtBom.Rows.Count > 0) { bool isAvailBom = false;//是否存在可用BOM string errReason = "";//不可用原因 foreach (DataRow dr in dtBom.Rows) { if (outsBillet.Equals("1")) { //查询是否自炼,外购钢种 DataTable dt = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CoreOrderDesignBom.getGradeCode", new object[] { dr["GRADECODE"].ToString(), outsBillet }, this.ob); if (dt != null && dt.Rows.Count > 0) { ordProcEntity.Gradecode = dr["GRADECODE"].ToString(); } else { errReason = "无外购钢种!"; continue; } } ordProcEntity.Bom = dr["BOM"].ToString(); ordProcEntity.GroupRollAll = dr["D_PLINE"].ToString(); ordProcEntity.Gradecode = dr["GRADECODE"].ToString(); ordProcEntity.EInMaterialDesc = dr["E_IN_MATERIAL_DESC"].ToString(); ordProcEntity.EInMaterialNo = dr["E_IN_MATERIAL_NO"].ToString(); ordProcEntity.DimaterYlg = dr["DIMATER"].ToString(); ordProcEntity.HeightYlg = dr["HEIGHT"].ToString(); ordProcEntity.GroupJgx = FrmDefGroup.DefJgxGourp(desginKey, ordProcEntity.IndexSeq, dr["BOM"].ToString(), this.ob); ordProcEntity.GroupRcl = FrmDefGroup.DefRclGourp(desginKey, ordProcEntity.IndexSeq, dr["BOM"].ToString(), this.ob); #region 判断坯料的属性 string dinMaterial = ""; ///轧管投入物料(炼钢末工序产出物料) if (!dr["D_IN_MATERIAL_NO"].ToString().Equals("")) { dinMaterial = dr["D_IN_MATERIAL_NO"].ToString(); } else if (!dr["C_OUT_MATERIAL_NO"].ToString().Equals("")) { dinMaterial = dr["C_OUT_MATERIAL_NO"].ToString(); } else if (!dr["B_OUT_MATERIAL_NO"].ToString().Equals("")) { dinMaterial = dr["B_OUT_MATERIAL_NO"].ToString(); } else { dinMaterial = dr["A_OUT_MATERIAL_NO"].ToString(); } ordProcEntity.StuffProperty = PlnSaleOrderBase.stuffProperty(dinMaterial); #endregion //轧管去向 ordProcEntity.Abc = PlnSaleOrderBase.getPlnOrdZgAbc(dr["WHOLE_BACKLOG"].ToString(), dr["WHOLE_BACKLOG_DESC"].ToString()); ordProcEntity.DIsOk = "2"; if (ordProcEntity.ProcessSeq.Contains("D")) { #region 默认轧管产线 ArrayList paramPline = new ArrayList(); paramPline.Add(dr["D_IN_MATERIAL_NO"].ToString()); paramPline.Add(dr["D_OUT_MATERIAL_NO"].ToString()); paramPline.Add(desginKey); paramPline.Add(ordProcEntity.IndexSeq); paramPline.Add(finalUser); paramPline.Add(produccode); DataTable dtDpl = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CoreOrderDesignBom.getBomMaterialDpl", new object[] { paramPline }, this.ob); if (dtDpl != null && dtDpl.Rows.Count > 0) { if (PlanComm.isInDataTable(dtDpl, "PLINE_CODE", dtProc.Rows[0]["GROUP_ROLL"].ToString())) { ordProcEntity.GroupRoll = dtProc.Rows[0]["GROUP_ROLL"].ToString(); ordProcEntity.DIsOk = "1"; } //如果存在ASSEL机组,优选ASSEL机组 else { ordProcEntity.DIsOk = "0"; if (PlanComm.isInDataTable(dtDpl, "PLINE_CODE", "C012")) { if (FrmPlnSaleOrder.queryAsselFl(this.comMscPilneCtrl1.OrdLnPk, this.ob)) { ordProcEntity.GroupRoll = "C012"; } else { bool isPline = false; foreach (DataRow drPine in dtDpl.Rows) { if (!drPine["PLINE_CODE"].ToString().Equals("C012")) { isPline = true; ordProcEntity.GroupRoll = drPine["PLINE_CODE"].ToString(); break; } } if (!isPline) { ordProcEntity.GroupRoll = dtDpl.Rows[0]["PLINE_CODE"].ToString(); } } } else { ordProcEntity.GroupRoll = dtDpl.Rows[0]["PLINE_CODE"].ToString(); } } } #endregion } if (ordProcEntity.ProcessSeq.Contains("D") && !ordProcEntity.GroupRoll.Trim().Equals("C072") && !outsStlPipeFl.Equals("121903") && !outsStlPipeFl.Equals("121902")) { #region 合同量转换 OutOrdParamEntity outOrdParam = new OutOrdParamEntity(); InOrdParamEntity inOrdParam = new InOrdParamEntity(); PlnGetOrdAmount ordAmountCal = new PlnGetOrdAmount(this.ob); DateTime date = new DateTime(); string errMessage = ""; double putRate = 1; if (DateTime.TryParse(dtStatus.Rows[0]["ROLL_MONTH"].ToString(), out date)) { //投料率 putRate = FrmPlnSaleOrder.queryPutRate(date.Year, date.Month, this.ob); } inOrdParam = ordAmountCal.getInOrdPlnParam(desginKey, ordProcEntity.IndexSeq, ordLnDlyPk, ordProcEntity.PlnDivideId, ordProcEntity.GroupRoll, ordProcEntity.Bom, dtStatus.Rows[0]["CODE_JG"].ToString(), putRate); if (!ordAmountCal.isRightParam(inOrdParam, desginKey, dtStatus.Rows[0]["CODE_JG"].ToString(), ordProcEntity.Bom, ordProcEntity.GroupRoll, out errMessage)) { errReason = errMessage; continue; } ordAmountCal.InEnity = inOrdParam; outOrdParam = ordAmountCal.getOrdAmount(); if (outOrdParam.ErrCode == -1) { errReason = "合同量转换出错(" + outOrdParam.ErrMessage + ")。"; continue; } ordProcEntity.WeightPerM = outOrdParam.WeightMi.ToString(); ordProcEntity.PlanWtD = outOrdParam.WeightInA.ToString(); ordProcEntity.PlanNumD = outOrdParam.PlanNum.ToString(); ordProcEntity.AimLenRoll = outOrdParam.AimlengthZg.ToString(); ordProcEntity.AimLenEnd = outOrdParam.AimLength.ToString(); ordProcEntity.PlanPMain = outOrdParam.WeightPc.ToString(); ordProcEntity.PlanTotLenD = (outOrdParam.PlanNum * outOrdParam.AimLength).ToString(); ordProcEntity.TotLenOneP = outOrdParam.TotLenOneP.ToString(); ordProcEntity.CutNumP = outOrdParam.CutNumP.ToString(); ordProcEntity.RollLength = outOrdParam.RollLength.ToString(); ordProcEntity.AimWallthick = outOrdParam.AimWallthick.ToString(); ordProcEntity.LenRollMax = outOrdParam.LenRollMax.ToString(); ordProcEntity.LenRollMin = outOrdParam.LenRollMin.ToString(); #endregion } isAvailBom = true; break; } if (!isAvailBom) { MessageUtil.ShowError(errReason); return; } } } CoreClientParam ccp = new CoreClientParam(); ccp.ServerName = "com.steering.pss.plnsaleord.order.CoreChangeIndex"; ccp.MethodName = "updatePlnOrdProcIndex"; ccp.ServerParams = new object[] { ordProcEntity, desginKey }; ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal); if (ccp.ReturnCode != -1) { MessageUtil.ShowTips("修改成功"); } else { MessageUtil.ShowError("修改失败!" + ccp.ReturnInfo); } } catch (Exception ex) { if (!(ex is MESException)) { MessageUtil.ShowError(ex.Message); } } DoQuery(); } /// /// 保存 /// private void DoSave() { try { double planQty = 0; double orderQty = 0; ArrayList list = new ArrayList(); DataTable dtStatus = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CorePlnSaleOrder.querySaleStatus", new object[] { ordLnDlyPk }, this.ob); if (dtStatus == null || dtStatus.Rows.Count <= 0) { return; } double.TryParse(dtStatus.Rows[0]["ORDER_QTY"].ToString(), out orderQty); foreach (UltraGridRow uRow in ultraGridProc.Rows) { PlnSaleordProcEntity ordProcEntity = new PlnSaleordProcEntity(); double finishWt = 0; double orderQtyD = 0; double.TryParse(uRow.Cells["OrderQtyD"].Value.ToString(), out orderQtyD); if (orderQtyD != 0) { DataTable dtProc = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CoreChangeIndex.queryPlnOrdProcById", new object[] { ordLnDlyPk, uRow.Cells["PlnDivideId"].Value.ToString() }, this.ob); if (dtProc == null || dtProc.Rows.Count <= 0) { MessageUtil.ShowError("找不到排产记录:" + uRow.Cells["PlnDivideId"].Value.ToString()); return; } string outsStlPipeFl = dtProc.Rows[0]["OUTS_STL_PIPE_FL"].ToString(); string processSeq = dtProc.Rows[0]["PROCESS_SEQ"].ToString(); string desginKey = dtProc.Rows[0]["DESGIN_KEY"].ToString(); string mscpline = dtProc.Rows[0]["INDEX_SEQ"].ToString(); string bom = dtProc.Rows[0]["BOM"].ToString(); string plineD = dtProc.Rows[0]["GROUP_ROLL"].ToString(); double.TryParse(dtProc.Rows[0]["FINISH_WT"].ToString(), out finishWt); double orderWeight = 0; if (processSeq.Contains("D") && !plineD.Trim().Equals("C072") && !outsStlPipeFl.Equals("121903") && !outsStlPipeFl.Equals("121902") || dtProc.Rows[0]["ORDER_UNIT"].ToString().Trim().Equals("支")) { #region 合同量转换 OutOrdParamEntity outOrdParam = new OutOrdParamEntity(); InOrdParamEntity inOrdParam = new InOrdParamEntity(); PlnGetOrdAmount ordAmountCal = new PlnGetOrdAmount(this.ob); string errMessage = ""; DateTime date = new DateTime(); double putRate = 1; if (DateTime.TryParse(dtStatus.Rows[0]["ROLL_MONTH"].ToString(), out date)) { //投料率 putRate = FrmPlnSaleOrder.queryPutRate(date.Year, date.Month, this.ob); } inOrdParam = ordAmountCal.getInOrdPlnQtyParam(orderQtyD, dtStatus.Rows[0]["ORDER_UNIT"].ToString(), desginKey, mscpline, ordLnDlyPk, plineD, bom, dtStatus.Rows[0]["CODE_JG"].ToString(), putRate); if (!ordAmountCal.isRightParam(inOrdParam, desginKey, dtStatus.Rows[0]["CODE_JG"].ToString(), bom, plineD, out errMessage)) { MessageUtil.ShowError(errMessage); return; } ordAmountCal.InEnity = inOrdParam; outOrdParam = ordAmountCal.getOrdAmount(); if (outOrdParam.ErrCode == -1) { MessageUtil.ShowError("合同量转换出错(" + outOrdParam.ErrMessage + ")。"); return; } ordProcEntity.WeightPerM = outOrdParam.WeightMi.ToString(); ordProcEntity.PlanWtD = outOrdParam.WeightInA.ToString(); ordProcEntity.PlanNumD = outOrdParam.PlanNum.ToString(); ordProcEntity.AimLenRoll = outOrdParam.AimlengthZg.ToString(); ordProcEntity.AimLenEnd = outOrdParam.AimLength.ToString(); ordProcEntity.PlanPMain = outOrdParam.WeightPc.ToString(); ordProcEntity.PlanTotLenD = (outOrdParam.PlanNum * outOrdParam.AimLength).ToString(); ordProcEntity.TotLenOneP = outOrdParam.TotLenOneP.ToString(); ordProcEntity.CutNumP = outOrdParam.CutNumP.ToString(); ordProcEntity.RollLength = outOrdParam.RollLength.ToString(); ordProcEntity.AimWallthick = outOrdParam.AimWallthick.ToString(); ordProcEntity.LenRollMax = outOrdParam.LenRollMax.ToString(); ordProcEntity.LenRollMin = outOrdParam.LenRollMin.ToString(); orderWeight = outOrdParam.WeightInA; ordProcEntity.AimOutdiameter = outOrdParam.AimOutdiameter.ToString(); ordProcEntity.FeedRate = putRate.ToString(); ordProcEntity.Coefficient = outOrdParam.Coefficient.ToString(); ordProcEntity.CoefficientMin = outOrdParam.CoefficientMin.ToString(); ordProcEntity.PlanPMainMin = outOrdParam.PlanPMainMin.ToString(); ordProcEntity.AimWtEnd = outOrdParam.AimWtEnd.ToString(); ordProcEntity.WeightKzM = outOrdParam.WeightKzM.ToString(); #endregion } else { #region 外购管 double aimLenEnd = 0; double weightPerM = 0; int planNum = 0; double rateMin = 0; double.TryParse(dtProc.Rows[0]["WEIGHT_PER_M"].ToString(), out weightPerM); double.TryParse(dtProc.Rows[0]["AIM_LEN_END"].ToString(), out aimLenEnd); double.TryParse(dtProc.Rows[0]["COEFFICIENT_MIN"].ToString(), out rateMin); if (dtProc.Rows[0]["ORDER_UNIT"].ToString().Equals("米")) { orderWeight = Math.Round((orderQtyD * weightPerM), 3); } else if (dtProc.Rows[0]["ORDER_UNIT"].ToString().Equals("英尺")) { double lengqty = PlanComm.FootoMi(orderQtyD); orderWeight = Math.Round((lengqty * weightPerM), 3); } else if (dtProc.Rows[0]["ORDER_UNIT"].ToString().Equals("英磅")) { orderWeight = PlanComm.PoundtoTon(orderQtyD); } else { orderWeight = orderQtyD; } //目标长度,取长度上下限中间值,计算计划支数 if ((orderWeight % (aimLenEnd * weightPerM)) == 0) { planNum = (int)(orderWeight / (aimLenEnd * weightPerM)); } else { planNum = (int)(orderWeight / (aimLenEnd * weightPerM)) + 1; } ordProcEntity.PlanWtD = orderWeight.ToString(); ordProcEntity.PlanNumD = planNum.ToString(); ordProcEntity.AimLenEnd = aimLenEnd.ToString(); ordProcEntity.PlanPMain = orderWeight.ToString(); ordProcEntity.PlanTotLenD = (planNum * aimLenEnd).ToString(); ordProcEntity.PlanPMainMin = (rateMin*orderWeight).ToString(); #endregion } if (Math.Round(orderWeight, 3) < Math.Round(finishWt, 3)) { MessageUtil.ShowError("计划量必须大于等于已完成量!"); return; } } ordProcEntity.OrderQtyD = orderQtyD.ToString(); ordProcEntity.OrdLnDlyPk = ordLnDlyPk; ordProcEntity.PlnDivideId = uRow.Cells["PlnDivideId"].Value.ToString(); planQty += orderQtyD; list.Add(ordProcEntity); } planQty = Math.Round(planQty, 3); if (planQty != orderQty) { MessageUtil.ShowError("合同订货量" + orderQty.ToString() + "吨,与合同分解订货总量" + planQty.ToString() + "不符合!"); return; } int succeed = ServerHelper.SetData("com.steering.pss.plnsaleord.order.CoreChangeIndex.updatePlnOrdProc", new object[] { list }, this.ob); if (succeed > 0) { MessageUtil.ShowTips("保存成功。"); } } catch (Exception ex) { if (!(ex is MESException)) { MessageUtil.ShowError(ex.Message); } } DoQuery(); } /// /// 删除 /// private void DoDelete() { try { double planWtD = 0; ArrayList list = new ArrayList(); ArrayList param = new ArrayList(); UltraGridRow ugr = ultraGridProc.ActiveRow; if (ugr == null) { return; } DataTable dtStatus = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CoreChangeIndex.queryPlnOrdProcById", new object[] { ordLnDlyPk, ugr.Cells["PlnDivideId"].Value.ToString() }, this.ob); if (dtStatus == null || dtStatus.Rows.Count <= 0) { return; } if (!double.TryParse(dtStatus.Rows[0]["PLAN_WT_D"].ToString(), out planWtD)) { return; } if (planWtD != 0) { MessageUtil.ShowError("该交货行分解量大于零,不能删除!"); return; } param.Add(ordLnDlyPk); param.Add(ugr.Cells["PlnDivideId"].Value.ToString()); list.Add(param); int succeed = ServerHelper.SetData("com.steering.pss.plnsaleord.order.CoreChangeIndex.deletePlnOrdProc", new object[] { list }, this.ob); if (succeed > 0) { MessageUtil.ShowTips("删除成功。"); } } catch (Exception ex) { if (!(ex is MESException)) { MessageUtil.ShowError(ex.Message); } } DoQuery(); } private void ultraGridProc_AfterRowActivate(object sender, EventArgs e) { this.comMscPilneCtrl1.CheMscPline = ultraGridProc.ActiveRow.Cells["IndexSeq"].Value.ToString(); this.comMscPilneCtrl1.CheCraftSeq = ultraGridProc.ActiveRow.Cells["CraftSeq"].Value.ToString(); this.comMscPilneCtrl1.OrderSource = orderSource; this.comMscPilneCtrl1.OrdLnDivPk = ordLnDlyPk; this.comMscPilneCtrl1.DoQuery(); } /// /// 交货pk /// public string OrdLnDlyPk { get { return ordLnDlyPk; } set { ordLnDlyPk = value; } } /// /// 补量需求编号 /// public string RNumId { get { return rNumId; } set { rNumId = value; } } } }