Browse Source

核价后台:1、修改床垫报价的计算床网的逻辑

chen_yjin 1 week ago
parent
commit
f2ff61e008

+ 15 - 0
JLHHJSvr/Com/Model/replacement_bednet.cs

@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Data.Common;
+using System.Linq;
+using System.Text;
+
+namespace JLHHJSvr.Com.Model
+{
+    public sealed class replacement_bednet
+    {
+        public string label { get; set; }
+        public object value { get; set; }
+        public List<replacement> replace { get; set; }
+    }
+}

+ 1 - 1
JLHHJSvr/Com/Model/u_mattress_computed.cs

@@ -12,6 +12,6 @@ namespace JLHHJSvr.Com.Model
         public List<replacement> replace { get; set; }
         public string message { get; set; }
         public List<replacement> replace_origin { get; set; }
-        public List<replacement> replace_bednet { get; set; }
+        public List<replacement_bednet> replace_bednet { get; set; }
     }
 }

+ 58 - 18
JLHHJSvr/DataStore/_Mapper_wrkgrpcode2.xml

@@ -3,29 +3,69 @@
 	<json>
 		[
           {
+              "value": 1,
+              "label": "面底裥棉组",
+              "code": "JM001"
+          },      
+    {
+              "value": 2,
+              "label": "侧裥棉组",
+              "code": "JM002"
+          },
+    {
+              "value": 3,
+              "label": "面料裁剪组",
+              "code": "JM003"
+          },
+    {
+              "value": 4,
+              "label": "刺绣组",
+              "code": "JM004"
+          },
+    {
+              "value": 5,
+              "label": "单针裥棉组",
+              "code": "JM005"
+          },
+    {
+              "value": 6,
+              "label": "车位组",
+              "code": "JM006"
+          },
+    {
+              "value": 7,
+              "label": "面底检验组",
+              "code": "JM007"
+          },
+    {
+              "value": 8,
+              "label": "扣布组",
+              "code": "CP001"
+          },
+    {
+              "value": 9,
+              "label": "围边组",
+              "code": "CP002"
+          },
+    {
+              "value": 10,
+              "label": "质检组",
+              "code": "CP003"
+          },
+    {
               "value": 11,
-              "label": "木工-开料(1)1",
-              "code": "A001"
+              "label": "包装组",
+              "code": "CP004"
           },
-          {
+    {
               "value": 12,
-              "label": "木工-加厚(1)2",
-              "code": "A002"
+              "label": "弹簧组",
+              "code": "CW001"
           },
-          {
+    {
               "value": 13,
-              "label": "木工-精裁(1)3",
-              "code": "A003"
-          },
-          {
-              "value": 14,
-              "label": "木工-钻孔(1)",
-              "code": "A004"
-          },
-          {
-              "value": 15,
-              "label": "木工-铣型(1)",
-              "code": "A005"
+              "label": "打底组",
+              "code": "CW002"
           },
         ]
 	</json>

+ 1 - 0
JLHHJSvr/DataStore/web_bednet_define.xml

@@ -93,6 +93,7 @@
 		felt_mtrl_cost,
 		felt_mtrl_x_cost,
 		sponge_mtrl_tc_cost,
+		packet_mtrl_cost,
 		u_bednet.felt_mtrlid,
 		u_bednet.felt_x_mtrlid,
 		u_bednet.nottax_factory_cost,

+ 2 - 2
JLHHJSvr/Helper/BedNetHelper.cs

@@ -282,7 +282,7 @@ namespace JLHHJSvr.Helper
                 #endregion 计算 弹簧人工总成本 结束
 
                 #region 计算 蛇线材料成本 开始
-                if (!string.IsNullOrEmpty(bednet.spring_hr_formula))
+                if (bednet.snake_wire_diameter.Value > 0)
                 {
                     bednet.snake_wire_mtrl_cost_replace_formula = bednet.snake_wire_mtrl_formula;
 
@@ -1042,7 +1042,7 @@ namespace JLHHJSvr.Helper
                 #endregion 计算 弹叉材料重量 结束
             }
 
-            // 计算总材料成本 total_mtrl_cost
+            // 计算总材料重量
             bednet.sum_weight = new decimal[]
             {
                 bednet.spring_weight_qty.Value,

+ 57 - 17
JLHHJSvr/Helper/MattressHelper.cs

@@ -30,7 +30,7 @@ namespace JLHHJSvr.Helper
         /// <summary>
         /// 床网参数替换
         /// </summary>
-        public List<replacement> BendetReplace = new List<replacement>();
+        public List<replacement_bednet> BendetReplace = new List<replacement_bednet>();
         public List<replacement> BendetFormulasReplace = new List<replacement>();
 
         public List<replacement> Replacements
@@ -54,6 +54,9 @@ namespace JLHHJSvr.Helper
                 {
                     res.Add(new replacement { label = item.Key, value = item.Value, type = 0 });
                 }
+
+                string[] keys = { "车间成本", "总床垫车间成本", "不含税出厂价", "部门不含税价", "税金", "部门含税价", "外币价", "底价", "佣金" };
+                res = res.OrderBy(r => Array.IndexOf(keys, r.label.Replace("【", "").Replace("】", ""))).ToList();
                 foreach (var item in formula_replacements_hide)
                 {
                     res.Add(new replacement { label = item.Key, value = item.Value, type = 1 });
@@ -74,14 +77,14 @@ namespace JLHHJSvr.Helper
         public void CalCulateFormula(u_mattress mattress, List<u_mattress_mx_mtrl> mxlist, Boolean isCalBed = true, Boolean isNewFormula = true, List<u_mattress_mx_extra> extraProcesses = null, List<u_mattress_mx_extra> extraCosts = null)
         {
 
-            BendetReplace = new List<replacement>();
+            BendetReplace = new List<replacement_bednet>();
             BendetFormulasReplace = new List<replacement>();
 
             InitMattress(mattress);
 
             InitReplaceMents(mattress, isNewFormula, extraProcesses, extraCosts);
 
-            if (isCalBed || isNewFormula) CalCulateBedNet(mxlist, isNewFormula);
+            if (isCalBed || isNewFormula) CalCulateBedNet(mxlist, isCalBed, isNewFormula);
             // 实时计算价格
             if (isCalBed)
             {
@@ -222,6 +225,8 @@ namespace JLHHJSvr.Helper
 
             InitMattressMxListReplaceMents(mattress, mxlist, isNewFormula);
 
+            string[] keys = { "车间成本", "不含税出厂价", "部门不含税价", "税金", "部门含税价", "外币价", "底价", "佣金" };
+
             if (formula_replacements_hide.Count > 0)
             {
                 foreach (var replacement in formula_replacements_hide)
@@ -230,6 +235,15 @@ namespace JLHHJSvr.Helper
                     var value = CalculateVarFormula(_key).DecimalValue;
                     AddKeyValue(_key, value);
                 }
+                foreach (var replacement in formula_replacements)
+                {
+                    var _key = replacement.Key.Replace("【", "").Replace("】", "");
+                    if (!keys.Contains(_key) )
+                    {
+                        var value = CalculateVarFormula(_key).DecimalValue;
+                        AddKeyValue(_key, value);
+                    }
+                }
             }
         }
         /// <summary>
@@ -297,7 +311,7 @@ namespace JLHHJSvr.Helper
             }
         }
 
-        private void CalCulateBedNet(List<u_mattress_mx_mtrl> mxlist, Boolean isNewFormula = true)
+        private void CalCulateBedNet(List<u_mattress_mx_mtrl> mxlist, Boolean isCalBed = true, Boolean isNewFormula = true)
         {
             var bedNetHelper = HelperBase.GetHelper<BedNetHelper>(cmd, new HelperBase.Context() { tokendata = context.tokendata });
 
@@ -314,6 +328,10 @@ namespace JLHHJSvr.Helper
                 dannumType = Convert.ToInt32(value1);
             }
 
+            List<replacement_bednet> rpBednet = new List<replacement_bednet>();
+            var bednetSumList = new List<decimal?>();
+
+            var index = 0;
             foreach (var mx in bednetList)
             {
                 if (mx.mtrlid <= 0) continue;
@@ -329,13 +347,36 @@ namespace JLHHJSvr.Helper
 
                 bedNetHelper.CalCulateFormula(bednet, bednetMxlist, bednetSpringList, true, true);
 
-                BendetReplace = bedNetHelper.Replacements;
-                BendetFormulasReplace = bedNetHelper.FormulaReplacements.Where(itm => itm.label == "【车间成本】").ToList();
+                var rpBednetItem = new replacement_bednet()
+                {
+                    label = mx.mtrlname,
+                    replace = bedNetHelper.Replacements
+                };
+                BendetFormulasReplace = bedNetHelper.FormulaReplacements.Where(itm => new List<int>{ 0, 1 }.Contains(itm.type.Value)).ToList();
+                rpBednet.Add(rpBednetItem);
 
-                bedNetHelper.SaveBedNet(bednet, bednetMxlist, bednetSpringList);
+                if (isCalBed)
+                {
+                    bedNetHelper.SaveBedNet(bednet, bednetMxlist, bednetSpringList);
+                }
 
-                mx.price = bednet.nottax_factory_cost;
+                if (isNewFormula)
+                {
+                    mx.price = bednet.total_cost;
+                    AddKeyValue("床网车间成本" + (index + 1), bednet.total_cost);
+                    bednetSumList.Add(bednet.total_cost);
+                }
+                else
+                {
+                    mx.price = bednet.nottax_factory_cost;
+                }
             }
+            BendetReplace = rpBednet;
+
+
+            #region 总床网车间成本
+            AddKeyValue("总床网车间成本", bednetSumList.Sum());
+            #endregion
         }
         private void InitMattress(u_mattress mattress)
         {
@@ -656,7 +697,7 @@ namespace JLHHJSvr.Helper
                 param.Add("@varclass", 2);
                 DbSqlHelper.SelectJoin(cmd, selectStr, ListEx.GetWhereStr(whereList), param, "varid", "varid,varkind,varcode,varname,varclass,vartype,varunit,formula", 0, 0, bednetVarList);
 
-                string[] keys = { "车间成本", "不含税出厂价", "部门不含税价", "税金", "部门含税价", "外币价", "底价", "佣金" };
+                string[] keys = { "车间成本", "不含税出厂价", "部门不含税价", "税金", "部门含税价", "外币价", "底价", "佣金", "总床垫车间成本" };
                 // 添加替换公式变量
                 foreach (var netvar in bednetVarList)
                 {
@@ -1017,12 +1058,6 @@ namespace JLHHJSvr.Helper
             #endregion
 
             #region 计算主表 材料成本
-
-            decimal dannumRate = 0;
-            if (replacements.TryGetValue("【大小单系数】", out object value2))
-            {
-                dannumRate = Convert.ToDecimal(value2);
-            }
             var aa = new List<decimal>();
             mxlist.ForEach(t => {
                 var _costamt = t.costamt.Value;
@@ -1045,9 +1080,14 @@ namespace JLHHJSvr.Helper
                             break;
                     }
                     #endregion
-                }
 
-                aa.Add(_costamt);
+                    // 新公式排除床网计算
+                    if (t.formulatype != 99) aa.Add(_costamt);
+                }
+                else
+                {
+                    aa.Add(_costamt);
+                }
             });
             mattress.total_material_cost = aa.Sum();
             AddKeyValue("材料成本", mattress.total_material_cost);

+ 1 - 0
JLHHJSvr/JLHHJSvr.csproj

@@ -101,6 +101,7 @@
     <Compile Include="Com\CopyMtrlDef.cs" />
     <Compile Include="Com\DeleteMattressExtraType.cs" />
     <Compile Include="Com\DeleteMattressExtra.cs" />
+    <Compile Include="Com\Model\replacement_bednet.cs" />
     <Compile Include="Com\Model\u_mattress_computed.cs" />
     <Compile Include="Com\Model\u_mattress_extra_type.cs" />
     <Compile Include="Com\Model\u_mattress_extra.cs" />