浏览代码

床垫报价计价逻辑修改

chen_yjin 5 月之前
父节点
当前提交
d5eb8050f1
共有 2 个文件被更改,包括 34 次插入20 次删除
  1. 33 20
      JLHHJSvr/Helper/MattressHelper.cs
  2. 1 0
      JLHHJSvr/LJFrameWork/Tools/LJExprParser.cs

+ 33 - 20
JLHHJSvr/Helper/MattressHelper.cs

@@ -374,7 +374,7 @@ namespace JLHHJSvr.Helper
             }else if (mattress.woodpallettype == 1)
             {
                 AddKeyValue("木托方式", " '夹板木托'");
-            }else
+            }else if (mattress.woodpallettype == 2)
             {
                 AddKeyValue("木托方式", "'铁管木托' ");
             }
@@ -437,7 +437,7 @@ namespace JLHHJSvr.Helper
         {
             mx.mtrlname = !string.IsNullOrEmpty(mx.mtrlname) ? mx.mtrlname.Trim() : "null";
 
-            mx.shrinkage = mx.shrinkage ?? 1;
+            mx.shrinkage = mx.shrinkage == 0 ? 1 : mx.shrinkage;
 
             //取mtrldef.name的前两位
             AddKeyValue("名称前2位", mx.mtrlname.Substring(0, 2));
@@ -465,7 +465,7 @@ namespace JLHHJSvr.Helper
             // 获取垫层的数据
             decimal bigSum = 0, smallSum = 0, vSum = 0;
 
-            string bigChaStr = mx.chastr ?? "大侧";
+            string bigChaStr = "大侧";
             string smallChaStr = mx.chastr ?? "小侧1";
             string vChaStr = mx.chastr ?? "V侧1";
 
@@ -478,17 +478,17 @@ namespace JLHHJSvr.Helper
 
             if (bigSum > 0)
             {
-                AddKeyValue("大侧高度", bigSum);
+                AddKeyValue("垫层", bigSum);
             }
 
             if (smallSum > 0)
             {
-                AddKeyValue("小侧高度", smallSum);
+                AddKeyValue("垫层", smallSum);
             }
 
             if (vSum > 0)
             {
-                AddKeyValue("V侧高度", vSum);
+                AddKeyValue("垫层", vSum);
             }
 
             #region 替换大侧高度
@@ -496,6 +496,7 @@ namespace JLHHJSvr.Helper
             {
                 if (!string.IsNullOrEmpty(mattersstype.formula_big_side)) expression = expression.Replace("【大侧高度】", $"({mattersstype.formula_big_side})");
                 expression = expression.Replace("【位置】", $"'{bigChaStr}'");
+                if (bigSum > 0) expression = expression.Replace("【大侧高度】", $"{bigSum}");
             }
             #endregion
 
@@ -504,6 +505,7 @@ namespace JLHHJSvr.Helper
             {
                 if (!string.IsNullOrEmpty(mattersstype.formula_small_side)) expression = expression.Replace("【小侧高度】", $"({mattersstype.formula_small_side})");
                 expression = expression.Replace("【位置】", $"'{smallChaStr}'");
+                expression = expression.Replace("【小侧高度】", $"{smallSum}");
             }
             #endregion
 
@@ -512,6 +514,7 @@ namespace JLHHJSvr.Helper
             {
                 if(!string.IsNullOrEmpty(mattersstype.formula_v_side)) expression = expression.Replace("【V侧高度】", $"({mattersstype.formula_v_side})");
                 expression = expression.Replace("【位置】", $"'{vChaStr}'");
+                expression = expression.Replace("【V侧高度】", $"18");
             }
             #endregion
 
@@ -557,18 +560,28 @@ namespace JLHHJSvr.Helper
         private void InitMxShrinkageReplaceMents(u_mattress_mx_mtrl mx, List<u_mattress_mx_mtrl> mxlist)
         {
             decimal thickness = 0, shrinkage = 0;
-            if(new List<int>() { 0,40,50,60,70,80,1,41, 51,61,71,81, 2,42,52,62,72,82,3,43, 53,63,73,83,4,44, 54,64,74,84 }.Contains(mx.formulakind.Value))
+
+            int[][] formulaKinds = new int[][]
+            {
+                new int [] {50, 0, 40, 60, 70, 80},
+                new int [] {51, 1, 41, 61, 71, 81},
+                new int [] {52, 2, 42, 62, 72, 82},
+                new int [] {53, 3, 43, 63, 73, 83},
+                new int [] {54, 4, 44, 64, 74, 84},
+            };
+            foreach (int[] kindGroup in formulaKinds)
             {
-                foreach (var row in mxlist) // mxList.Rows等价于arg_dw.RowCount()
+                if (kindGroup.Contains(mx.formulakind.Value))
                 {
-                    if (new List<int>() { 50, 51, 52, 53, 54 }.Contains(row.formulakind.Value))
+                    foreach (var row in mxlist) // mxList.Rows等价于arg_dw.RowCount()
                     {
-                        // 如果当前行的公式种类匹配
-                        thickness += row.thickness.Value * row.qty.Value; // 简化计算
+                        if (row.formulakind.Value == kindGroup[0])
+                        {
+                            thickness += row.thickness.Value * row.qty.Value; // 简化计算
+                        }
                     }
                 }
             }
-            
 
             if(thickness >= 0)
             {
@@ -870,7 +883,7 @@ namespace JLHHJSvr.Helper
                 string field = butaoJd ? "num_4" : (butaoFz ? "num_5" : "");
 
                 // 查找点数
-                var workmanship = new u_workmanship_add() { deptid = mattress.deptid, mattresstypeid = mattress.mattresstypeid, workmanshipname = field };
+                //var workmanship = new u_workmanship_add() { deptid = mattress.deptid, mattresstypeid = mattress.mattresstypeid, workmanshipname = field };
                 mattress.butao_point = GetWorkmanshipRate(mattress, field);
             }
             AddKeyValue("内布套点数", mattress.butao_point);
@@ -920,19 +933,18 @@ namespace JLHHJSvr.Helper
         public decimal GetWorkmanshipRate(u_mattress mattress, string field)
         {
             decimal rate = 0;
-            cmd.CommandText = @"SELECT rate FROM u_workmanship_add WHERE deptid = @deptid AND  mattresstypeid = @mattresstypeid AND  workmanshipname = @workmanshipname";
+            if (field == "") return 0;
+            //cmd.CommandText = @"SELECT rate FROM u_workmanship_add WHERE deptid = @deptid AND  mattresstypeid = @mattresstypeid AND  workmanshipname = @workmanshipname";
+            cmd.CommandText = @"SELECT " + field + " FROM u_workmanship_dianshu WHERE deptid = @deptid AND  mattresstypeid = @mattresstypeid";
             cmd.Parameters.Clear();
             cmd.Parameters.AddWithValue("@deptid", mattress.deptid);
             cmd.Parameters.AddWithValue("@mattresstypeid", mattress.mattresstypeid);
-            cmd.Parameters.AddWithValue("@workmanshipname", field);
+            //cmd.Parameters.AddWithValue("@workmanshipname", field);
             using (var reader = cmd.ExecuteReader())
             {
                 if (reader.Read())
                 {
-                    rate = reader["rate"] == null ? 0 : Convert.ToDecimal(reader["rate"]);
-                } else
-                {
-                    rate = 1;
+                    rate = reader[field] == null ? 0 : Convert.ToDecimal(reader[field]);
                 }
             }
             return rate;
@@ -948,7 +960,8 @@ namespace JLHHJSvr.Helper
             string field = "散单".Equals(typename) ? "num_9" : "标准".Equals(typename) ? "num_10" : "大单".Equals(typename) ? "num_11" : "";
 
             // 查找点数
-            mattress.dannum_rate = GetWorkmanshipRate(mattress, field);
+            decimal _rate = GetWorkmanshipRate(mattress, field);
+            mattress.dannum_rate = _rate == 0 ? 1 : _rate;
             AddKeyValue("大小单", mattress.dannum_rate);
         }
         /// <summary>

+ 1 - 0
JLHHJSvr/LJFrameWork/Tools/LJExprParser.cs

@@ -29,6 +29,7 @@ namespace JLHHJSvr.LJFramework.Tools
             //treatedExpr = treatedExpr.Replace(" = ", " == ");
             treatedExpr = Regex.Replace(treatedExpr, "([ ]|[\\w])([=])([^=])", "$1==$3");
             treatedExpr = Regex.Replace(treatedExpr, "if(\\s*)[(]", "iif(");
+            treatedExpr = Regex.Replace(treatedExpr, "int(\\s*)[(]", "(");
             treatedExpr = ConvertNotLikeExpression(treatedExpr);
             treatedExpr = ConvertLikeExpression(treatedExpr);
             treatedExpr = ConvertPosExpression(treatedExpr);