PlnOrdProcRefresCal.cs 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. using com.steering.pss.plnsaleord.ordAmCal.model;
  2. using com.steering.pss.plnsaleord.order.model;
  3. using Core.Mes.Client.Comm.Server;
  4. using CoreFS.CA06;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Data;
  8. using System.Linq;
  9. using System.Text;
  10. namespace Core.StlMes.Client.PlnSaleOrd.BaseMethod
  11. {
  12. class PlnOrdProcRefresCal
  13. {
  14. /// <summary>
  15. /// 重算
  16. /// </summary>
  17. public static bool RefresCal(string ordLnDlyPk, string plnDivideId, OpeBase _ob, out string message)
  18. {
  19. message = "";
  20. bool fl = false;
  21. PlnSaleordProcEntity ordProcEntity = new PlnSaleordProcEntity();
  22. DataTable dtProc = ServerHelper.GetData("com.steering.pss.plnsaleord.order.baseMethod.CoreOrdProcRefresCal.queryPlnOrdProc",
  23. new object[] { ordLnDlyPk, plnDivideId }, _ob);
  24. if (dtProc == null || dtProc.Rows.Count <= 0)
  25. {
  26. message = "未找到排产记录!";
  27. return false;
  28. }
  29. if (!dtProc.Rows[0]["PLANSTATUS"].ToString().Equals("1"))
  30. {
  31. message = "合同已经下发。";
  32. return false;
  33. }
  34. string outsStlPipeFl = dtProc.Rows[0]["OUTS_STL_PIPE_FL"].ToString();
  35. string processSeq = dtProc.Rows[0]["PROCESS_SEQ"].ToString();
  36. string desginKey = dtProc.Rows[0]["DESGIN_KEY"].ToString();
  37. string mscpline = dtProc.Rows[0]["INDEX_SEQ"].ToString();
  38. string bom = dtProc.Rows[0]["BOM"].ToString();
  39. string plineD = dtProc.Rows[0]["GROUP_ROLL"].ToString();
  40. string codeJg = dtProc.Rows[0]["CODE_JG"].ToString();
  41. string orderUnit = dtProc.Rows[0]["ORDER_UNIT"].ToString();
  42. string rollMonth = dtProc.Rows[0]["ROLL_MONTH"].ToString();
  43. double orderQtyD = 0;
  44. double.TryParse(dtProc.Rows[0]["ORDER_QTY_D"].ToString(), out orderQtyD);
  45. if (orderQtyD <= 0)
  46. {
  47. message = "排产分配订货量有误!";
  48. return false;
  49. }
  50. if (processSeq.Contains("D")
  51. && !plineD.Trim().Equals("C072")
  52. && !outsStlPipeFl.Equals("121903")
  53. && !outsStlPipeFl.Equals("121902")
  54. || orderUnit.Trim().Equals("支"))
  55. {
  56. #region 合同量转换
  57. OutOrdParamEntity outOrdParam = new OutOrdParamEntity();
  58. InOrdParamEntity inOrdParam = new InOrdParamEntity();
  59. PlnGetOrdAmount ordAmountCal = new PlnGetOrdAmount(_ob);
  60. string errMessage = "";
  61. DateTime date = new DateTime();
  62. double putRate = 1;
  63. if (DateTime.TryParse(rollMonth, out date))
  64. {
  65. //投料率
  66. putRate = FrmPlnSaleOrder.queryPutRate(date.Year, date.Month, _ob);
  67. }
  68. inOrdParam = ordAmountCal.getInOrdPlnQtyParam(orderQtyD, orderUnit,
  69. desginKey, mscpline, ordLnDlyPk, plineD,
  70. bom, codeJg, putRate);
  71. if (!ordAmountCal.isRightParam(inOrdParam, desginKey,
  72. codeJg, bom, plineD, out errMessage))
  73. {
  74. message = errMessage;
  75. return false;
  76. }
  77. ordAmountCal.InEnity = inOrdParam;
  78. outOrdParam = ordAmountCal.getOrdAmount();
  79. if (outOrdParam.ErrCode == -1)
  80. {
  81. message = "合同量转换出错(" + outOrdParam.ErrMessage + ")。";
  82. return false;
  83. }
  84. ordProcEntity.WeightPerM = outOrdParam.WeightMi.ToString();
  85. ordProcEntity.PlanWtD = outOrdParam.WeightInA.ToString();
  86. ordProcEntity.PlanNumD = outOrdParam.PlanNum.ToString();
  87. ordProcEntity.AimLenRoll = outOrdParam.AimlengthZg.ToString();
  88. ordProcEntity.AimLenEnd = outOrdParam.AimLength.ToString();
  89. ordProcEntity.PlanPMain = outOrdParam.WeightPc.ToString();
  90. ordProcEntity.PlanTotLenD = (outOrdParam.PlanNum * outOrdParam.AimLength).ToString();
  91. ordProcEntity.TotLenOneP = outOrdParam.TotLenOneP.ToString();
  92. ordProcEntity.CutNumP = outOrdParam.CutNumP.ToString();
  93. ordProcEntity.RollLength = outOrdParam.RollLength.ToString();
  94. ordProcEntity.AimWallthick = outOrdParam.AimWallthick.ToString();
  95. ordProcEntity.LenRollMax = outOrdParam.LenRollMax.ToString();
  96. ordProcEntity.LenRollMin = outOrdParam.LenRollMin.ToString();
  97. #endregion
  98. }
  99. else
  100. {
  101. #region 外购管
  102. double orderWeight = 0;
  103. double aimLenEnd = 0;
  104. double weightPerM = 0;
  105. int planNum = 0;
  106. double.TryParse(dtProc.Rows[0]["WEIGHT_PER_M"].ToString(), out weightPerM);
  107. double.TryParse(dtProc.Rows[0]["AIM_LEN_END"].ToString(), out aimLenEnd);
  108. if (orderUnit.Equals("米"))
  109. {
  110. orderWeight = Math.Round((orderQtyD * weightPerM), 3);
  111. }
  112. else if (orderUnit.Equals("英尺"))
  113. {
  114. double lengqty = PlanComm.FootoMi(orderQtyD);
  115. orderWeight = Math.Round((lengqty * weightPerM), 3);
  116. }
  117. else if (orderUnit.Equals("英磅"))
  118. {
  119. orderWeight = PlanComm.PoundtoTon(orderQtyD);
  120. }
  121. else
  122. {
  123. orderWeight = orderQtyD;
  124. }
  125. //目标长度,取长度上下限中间值,计算计划支数
  126. if ((orderWeight % (aimLenEnd * weightPerM)) == 0)
  127. {
  128. planNum = (int)(orderWeight / (aimLenEnd * weightPerM));
  129. }
  130. else
  131. {
  132. planNum = (int)(orderWeight / (aimLenEnd * weightPerM)) + 1;
  133. }
  134. ordProcEntity.PlanWtD = orderWeight.ToString();
  135. ordProcEntity.PlanNumD = planNum.ToString();
  136. ordProcEntity.AimLenEnd = aimLenEnd.ToString();
  137. ordProcEntity.PlanPMain = orderWeight.ToString();
  138. ordProcEntity.PlanTotLenD = (planNum * aimLenEnd).ToString();
  139. #endregion
  140. }
  141. ordProcEntity.OrdLnDlyPk = ordLnDlyPk;
  142. ordProcEntity.PlnDivideId = plnDivideId;
  143. int suceed = ServerHelper.SetData("com.steering.pss.plnsaleord.order.baseMethod.CoreOrdProcRefresCal.updatePlnOrdProc",
  144. new object[] { ordProcEntity }, _ob);
  145. if (suceed > 0)
  146. {
  147. fl = true;
  148. }
  149. return fl;
  150. }
  151. }
  152. }