using com.steering.pss.plnsaleord.ordAmCal.model; using com.steering.pss.plnsaleord.order.model; using Core.Mes.Client.Comm.Server; using CoreFS.CA06; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; namespace Core.StlMes.Client.PlnSaleOrd.BaseMethod { class PlnOrdProcRefresCal { /// /// 重算 /// public static bool RefresCal(string ordLnDlyPk, string plnDivideId, OpeBase _ob, out string message) { message = ""; bool fl = false; PlnSaleordProcEntity ordProcEntity = new PlnSaleordProcEntity(); DataTable dtProc = ServerHelper.GetData("com.steering.pss.plnsaleord.order.baseMethod.CoreOrdProcRefresCal.queryPlnOrdProc", new object[] { ordLnDlyPk, plnDivideId }, _ob); if (dtProc == null || dtProc.Rows.Count <= 0) { message = "未找到排产记录!"; return false; } if (!dtProc.Rows[0]["PLANSTATUS"].ToString().Equals("1")) { message = "合同已经下发。"; return false; } 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(); string codeJg = dtProc.Rows[0]["CODE_JG"].ToString(); string orderUnit = dtProc.Rows[0]["ORDER_UNIT"].ToString(); string rollMonth = dtProc.Rows[0]["ROLL_MONTH"].ToString(); double orderQtyD = 0; double.TryParse(dtProc.Rows[0]["ORDER_QTY_D"].ToString(), out orderQtyD); if (orderQtyD <= 0) { message = "排产分配订货量有误!"; return false; } if (processSeq.Contains("D") && !plineD.Trim().Equals("C072") && !outsStlPipeFl.Equals("121903") && !outsStlPipeFl.Equals("121902") || orderUnit.Trim().Equals("支")) { #region 合同量转换 OutOrdParamEntity outOrdParam = new OutOrdParamEntity(); InOrdParamEntity inOrdParam = new InOrdParamEntity(); PlnGetOrdAmount ordAmountCal = new PlnGetOrdAmount(_ob); string errMessage = ""; DateTime date = new DateTime(); double putRate = 1; if (DateTime.TryParse(rollMonth, out date)) { //投料率 putRate = FrmPlnSaleOrder.queryPutRate(date.Year, date.Month, _ob); } inOrdParam = ordAmountCal.getInOrdPlnQtyParam(orderQtyD, orderUnit, desginKey, mscpline, ordLnDlyPk, plineD, bom, codeJg, putRate); if (!ordAmountCal.isRightParam(inOrdParam, desginKey, codeJg, bom, plineD, out errMessage)) { message = errMessage; return false; } ordAmountCal.InEnity = inOrdParam; outOrdParam = ordAmountCal.getOrdAmount(); if (outOrdParam.ErrCode == -1) { message = "合同量转换出错(" + outOrdParam.ErrMessage + ")。"; return false; } 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 } else { #region 外购管 double orderWeight = 0; double aimLenEnd = 0; double weightPerM = 0; int planNum = 0; double.TryParse(dtProc.Rows[0]["WEIGHT_PER_M"].ToString(), out weightPerM); double.TryParse(dtProc.Rows[0]["AIM_LEN_END"].ToString(), out aimLenEnd); if (orderUnit.Equals("米")) { orderWeight = Math.Round((orderQtyD * weightPerM), 3); } else if (orderUnit.Equals("英尺")) { double lengqty = PlanComm.FootoMi(orderQtyD); orderWeight = Math.Round((lengqty * weightPerM), 3); } else if (orderUnit.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(); #endregion } ordProcEntity.OrdLnDlyPk = ordLnDlyPk; ordProcEntity.PlnDivideId = plnDivideId; int suceed = ServerHelper.SetData("com.steering.pss.plnsaleord.order.baseMethod.CoreOrdProcRefresCal.updatePlnOrdProc", new object[] { ordProcEntity }, _ob); if (suceed > 0) { fl = true; } return fl; } } }