UnitByConvUnit.cs 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. using SqlSugar;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace WMS.Core.ImportExecl
  8. {
  9. public class UnitByConvUnit
  10. {
  11. /// <summary>
  12. /// 转换单位
  13. /// </summary>
  14. /// <param name="MatNo">料号</param>
  15. /// <param name="ConvUnit">转换单位</param>
  16. /// <param name="ConvValue">转换值</param>
  17. /// <returns></returns>
  18. public static JsonConvUnitEntity GetConvUnitByBase(int busTypes, string MatNo, string ConvUnit, decimal ConvValue)
  19. {
  20. SqlSugarClient sugar = null;
  21. JsonConvUnitEntity json = new JsonConvUnitEntity();
  22. try
  23. {
  24. sugar = SysDbCore.GetDbCtx();
  25. ConvUnitEntity entity = null;
  26. if (string.IsNullOrEmpty(MatNo) || string.IsNullOrEmpty(ConvUnit))
  27. throw new Exception("料号或者转换单位不能为空");
  28. if (busTypes != 12)
  29. {
  30. if (ConvValue <= 0)
  31. throw new Exception("参数值不能小于0");
  32. }
  33. var mat = sugar.Queryable<BASE_MATITEM>().Where(v => v.F_NO == MatNo).First();
  34. if (mat == null)
  35. throw new Exception("料号不存在");
  36. if (string.IsNullOrEmpty(mat.F_BASEUNITNO))
  37. throw new Exception("物料基本单位未维护");
  38. if (string.IsNullOrEmpty(mat.F_DEFINE04))
  39. throw new Exception("最小包装单位未维护");
  40. var convUnit = sugar.Queryable<BASE_MATCONVUNIT>().Where(v => v.F_MATNO == MatNo && v.F_CONVUNIT == ConvUnit).First();
  41. if (convUnit == null)
  42. throw new Exception(MatNo + ":未找到基本转换关系[" + ConvUnit + "-->" + mat.F_BASEUNITNO + "]");
  43. if (convUnit.F_CONVERSION <= 0)
  44. throw new Exception("基本转换率不能小于等于0");
  45. decimal baseValue = ConvValue != 0 ? convUnit.F_CONVERSION * ConvValue : 0;
  46. entity = new ConvUnitEntity();
  47. entity.MatNo = mat.F_NO;
  48. entity.BaseUnit = mat.F_BASEUNITNO;
  49. entity.Conversion = convUnit.F_CONVERSION;
  50. entity.ConvUnit = ConvUnit;
  51. entity.ConvValue = ConvValue;
  52. entity.BaseValue = baseValue;
  53. entity.MinUnit = mat.F_DEFINE04;
  54. entity.MinValue = baseValue;
  55. if (mat.F_BASEUNITNO != mat.F_DEFINE04)
  56. {
  57. var minUnit = sugar.Queryable<BASE_MATCONVUNIT>().Where(v => v.F_MATNO == MatNo && v.F_CONVUNIT == mat.F_DEFINE04).First();
  58. if (minUnit == null)
  59. throw new Exception(MatNo + ":未找到包装转换关系[" + mat.F_BASEUNITNO + "-->" + mat.F_DEFINE04 + "]");
  60. if (minUnit.F_CONVERSION <= 0)
  61. throw new Exception("包装转换率不能小于等于0");
  62. var minValue = baseValue != 0 ? baseValue / minUnit.F_CONVERSION : 0;
  63. if (minValue == 0)
  64. entity.MinValue = 0;
  65. else
  66. entity.MinValue = (baseValue % minUnit.F_CONVERSION) > 0 ? minValue + 1 : minValue;
  67. }
  68. json.Type = 1;
  69. json.Message = "成功";
  70. json.Entity = entity;
  71. }
  72. catch (Exception ex)
  73. {
  74. json.Type = 0;
  75. json.Message = ex.Message;
  76. json.Entity = null;
  77. }
  78. return json;
  79. }
  80. /// <summary>
  81. /// 转换单位
  82. /// </summary>
  83. /// <param name="MatNo">料号</param>
  84. /// <param name="ConvUnit">转换单位</param>
  85. /// <param name="ConvValue">转换值</param>
  86. /// <returns></returns>
  87. public static JsonConvUnitEntity GetConvUnitByBase(int busTypes, string MatNo, string ConvUnit, decimal ConvValue, SqlSugarClient sugar)
  88. {
  89. JsonConvUnitEntity json = new JsonConvUnitEntity();
  90. try
  91. {
  92. ConvUnitEntity entity = null;
  93. if (string.IsNullOrEmpty(MatNo) || string.IsNullOrEmpty(ConvUnit))
  94. throw SysExCore.ThrowFailException("料号或者转换单位不能为空");
  95. if (busTypes != 12)
  96. {
  97. if (ConvValue <= 0)
  98. throw new Exception("参数值不能小于0");
  99. }
  100. var mat = sugar.Queryable<BASE_MATITEM>().Where(v => v.F_NO == MatNo).First();
  101. if (mat == null)
  102. throw new Exception("料号不存在");
  103. if (string.IsNullOrEmpty(mat.F_BASEUNITNO))
  104. throw new Exception("物料基本单位未维护");
  105. if (string.IsNullOrEmpty(mat.F_DEFINE04))
  106. throw new Exception("最小包装单位未维护");
  107. var convUnit = sugar.Queryable<BASE_MATCONVUNIT>().Where(v => v.F_MATNO == MatNo && v.F_CONVUNIT == ConvUnit).First();
  108. if (convUnit == null)
  109. throw new Exception(MatNo + ":未找到基本转换关系[" + ConvUnit + "-->" + mat.F_BASEUNITNO + "]");
  110. if (convUnit.F_CONVERSION <= 0)
  111. throw new Exception("基本转换率不能小于等于0");
  112. decimal baseValue = ConvValue != 0 ? convUnit.F_CONVERSION * ConvValue : 0;
  113. entity = new ConvUnitEntity();
  114. entity.MatNo = mat.F_NO;
  115. entity.BaseUnit = mat.F_BASEUNITNO;
  116. entity.Conversion = convUnit.F_CONVERSION;
  117. entity.ConvUnit = ConvUnit;
  118. entity.ConvValue = ConvValue;
  119. entity.BaseValue = baseValue;
  120. entity.MinUnit = mat.F_DEFINE04;
  121. entity.MinValue = baseValue;
  122. if (mat.F_BASEUNITNO != mat.F_DEFINE04)
  123. {
  124. var minUnit = sugar.Queryable<BASE_MATCONVUNIT>().Where(v => v.F_MATNO == MatNo && v.F_CONVUNIT == mat.F_DEFINE04).First();
  125. if (minUnit == null)
  126. throw new Exception(MatNo + ":未找到包装转换关系[" + mat.F_BASEUNITNO + "-->" + mat.F_DEFINE04 + "]");
  127. if (minUnit.F_CONVERSION <= 0)
  128. throw new Exception("包装转换率不能小于等于0");
  129. var minValue = baseValue != 0 ? baseValue / minUnit.F_CONVERSION : 0;
  130. if (minValue == 0)
  131. entity.MinValue = 0;
  132. else
  133. entity.MinValue = (baseValue % minUnit.F_CONVERSION) > 0 ? minValue + 1 : minValue;
  134. }
  135. json.Type = 1;
  136. json.Message = "成功";
  137. json.Entity = entity;
  138. }
  139. catch (Exception ex)
  140. {
  141. json.Type = 0;
  142. json.Message = ex.Message;
  143. json.Entity = null;
  144. }
  145. return json;
  146. }
  147. }
  148. }