Pārlūkot izejas kodu

核价后台: 1、新增弹簧类型及想过逻辑;2、修改导入物料价格表时识别行;3、搜索支持使用逗号多个内容模糊查询

chen_yjin 1 dienu atpakaļ
vecāks
revīzija
60496161a3

+ 1 - 0
JLHHJSvr/Com/GetMtrlDefList.cs

@@ -17,6 +17,7 @@ namespace JLHHJSvr.Com
         public string token { get; set; }
         public List<int> mtrltypeids { get; set; }
         public int? pricelistid { get; set; }
+        public string keyword { get; set; }
         public int pageSize { get; set; }
         public int pageNum { get; set; }
     }

+ 4 - 0
JLHHJSvr/Com/Model/u_bednet_var.cs

@@ -55,5 +55,9 @@ namespace JLHHJSvr.Com.Model
         /// 明细表
         /// </summary>
         public List<u_bednet_varmx> mxlist { get; set; }
+        /// <summary>
+        /// 是否属于明细计算
+        /// </summary>
+        public int? ifmxformula { get; set; }
     }
 }

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

@@ -6,7 +6,7 @@ using System.Text;
 
 namespace JLHHJSvr.Com.Model
 {
-    [PK(new[] { "mtrlid", "pricelistid", "mtrlid,pricelistid" })]
+    [PK(new[] { "mtrlid,pricelistid", "mtrlid", "pricelistid" })]
     public sealed class u_mtrl_price_pricelist
     {
         /// <summary>

+ 23 - 0
JLHHJSvr/Com/UpdateL1Basicinfo.cs

@@ -0,0 +1,23 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using JLHHJSvr.Com.Model;
+using LJLib.Net.SPI.Com;
+
+namespace JLHHJSvr.Com
+{
+    public sealed class UpdateL1BasicinfoRequest : ILJRequest<UpdateL1BasicinfoResponse>
+    {
+        public override string GetApiName()
+        {
+            return "UpdateL1Basicinfo";
+        }
+        public string token { get; set; }
+    }
+
+    public sealed class UpdateL1BasicinfoResponse : LJResponse
+    {
+        public u_mattress mattress { get; set; }
+    }
+}

+ 2 - 0
JLHHJSvr/DataStore/web_bednetvarlist.xml

@@ -13,6 +13,7 @@ SELECT varid
 	,createtime
 	,createby
 	,formula
+	,ifmxformula
 FROM u_bednet_var
   </selectstr>
   <where>
@@ -32,5 +33,6 @@ FROM u_bednet_var
     <field field="dscrp">备注</field>
     <field field="createby">等记人</field>
     <field field="createtime" datatype="datetime">登记时间</field>
+    <field field="ifmxformula" datatype="checkbox">是否属于明细计算</field>
   </displayfields>
 </select>

+ 1 - 1
JLHHJSvr/DataStore/web_mattress.xml

@@ -125,7 +125,7 @@
 			u_mattress.bcptypeid = 0
 		</when>
 		<when notnull="@arg_search">
-			u_mattress.mattresscode like '%'+ @arg_search + '%' OR u_mattress.mattressrelcode like '%'+ @arg_search + '%' OR u_mattress.mattressname like '%'+ @arg_search + '%'
+			EXISTS (SELECT 1 FROM dbo.SC_SPLIT(@arg_search, ',') A WHERE A.Item <> '' AND (u_mattress.mattresscode LIKE '%'+LTRIM(RTRIM(A.Item))+'%' OR u_mattress.mattressrelcode like '%'+LTRIM(RTRIM(A.Item))+'%' OR u_mattress.mattressname like '%'+LTRIM(RTRIM(A.Item))+'%'))
 		</when>
 	</where>
 	<orderstr>

+ 41 - 11
JLHHJSvr/DataStore/web_spring_define_choose.xml

@@ -9,16 +9,40 @@
 			center_diameter,
 			cyclenum,
 			gram_weight,
-			dscrp,
-			createtime,
-			createby,
-			springtypeid,
-			left(rtrim(cast(u_spring.line_diameter as char(10))),4) + '/'+
-			left(rtrim(cast(u_spring.height as char(10))),4) + '/'+
-			left(rtrim(cast(u_spring.caliber  as char(10))),4) + '/'+
-			left(rtrim(cast(u_spring.center_diameter  as char(10))),4) + '/'+
-			left(rtrim(cast(u_spring.cyclenum  as char(10))),4)   as name
+			u_spring.dscrp,
+			u_spring.createtime,
+			u_spring.createby,
+			u_spring.springtypeid,
+			CASE
+				WHEN springname <> '' THEN springname
+				WHEN u_springtype.springtypecode <> '' THEN 
+					rtrim(u_springtype.springtypecode)  + '/'+
+					left(rtrim(cast(u_spring.height_original as char(10))),2) + '/'+
+					left(rtrim(cast(u_spring.height as char(10))),2) + '/'+
+					left(rtrim(cast(u_spring.caliber  as char(10))),4) + '/'+
+					left(rtrim(cast(u_spring.center_diameter  as char(10))),3) + '/'+
+					left(rtrim(cast(u_spring.cyclenum  as char(10))),1) + '/'+
+					left(rtrim(cast(u_spring.line_diameter as char(10))),3) + '-'+
+					left(rtrim(cast(u_spring.hardness as char(10))),5)
+				ELSE 
+					left(rtrim(cast(u_spring.line_diameter as char(10))),4) + '/'+
+					left(rtrim(cast(u_spring.height as char(10))),4) + '/'+
+					left(rtrim(cast(u_spring.caliber  as char(10))),4) + '/'+
+					left(rtrim(cast(u_spring.center_diameter  as char(10))),4) + '/'+
+					left(rtrim(cast(u_spring.cyclenum  as char(10))),4) 
+				END  
+			AS springname,
+			      u_spring.comperssion_rate,
+			u_springtype.springtypecode,
+			CASE 
+				WHEN hardness <= 8 THEN '软'
+				WHEN hardness <= 11 THEN '中软'
+				WHEN hardness <= 15 THEN '适中'
+				WHEN hardness <= 20 THEN '中硬'
+			ELSE '硬'
+			END AS hardness_level
 		From u_spring
+		INNER JOIN u_springtype ON u_springtype.springtypeid = u_spring.springtypeid
 	</selectstr>
 	<where>
 		<when notempty="@arg_line_diameter" arg_line_diameter!="-1">
@@ -40,11 +64,14 @@
 			bedtypeid=@arg_bedtypeid
 		</when>
 		<when notnull="@arg_springtypeid" arg_springtypeid!="-1">
-			springtypeid=@arg_springtypeid
+			u_spring.springtypeid=@arg_springtypeid
 		</when>
 		<when>
 			his_typeid=1
 		</when>
+		<when>
+			u_spring.springtypeid > 20
+		</when>
 		<when notnull="@arg_search">
 			u_spring.line_diameter LIKE '%' + @arg_search + '%' OR
 			u_spring.height LIKE '%' + @arg_search + '%' OR
@@ -55,6 +82,10 @@
 	</where>
 	<displayfields>
 		<field field="pid" compute="getrow()">序</field>
+		<field field="springname">弹簧名称</field>
+		<field field="springtypeid" mapper="" width="100">弹簧分类</field>
+		<field field="springtypecode" width="50">类型编码</field>
+		<field field="hardness_level" width="50">软硬程度</field>
 		<field field="line_diameter" datatype="number">线径MM</field>
 		<field field="height" datatype="number">高度CM</field>
 		<field field="caliber" datatype="number">口经CM</field>
@@ -64,6 +95,5 @@
 		<field field="dscrp">备注</field>
 		<field field="createby">等记人</field>
 		<field field="createtime" datatype="datetime">登记时间</field>
-		<field field="springtypeid" mapper="">弹簧分类</field>
 	</displayfields>
 </select>

+ 36 - 1
JLHHJSvr/DataStore/web_springlist.xml

@@ -5,6 +5,7 @@ SELECT
 	u_spring.springid, 
 	u_spring.line_diameter, 
 	u_spring.height, 
+	u_spring.height_original, 
 	u_spring.caliber, 
 	u_spring.center_diameter, 
 	u_spring.cyclenum, 
@@ -30,9 +31,38 @@ SELECT
 	u_spring.arrangement_height, 
 	u_spring.roll_width, 
 	u_spring.roll_length, 
-	u_spring.comperssion_rate
+	u_spring.comperssion_rate,
+	CASE
+		WHEN springname <> '' THEN springname
+		WHEN u_springtype.springtypecode <> '' THEN 
+			rtrim(u_springtype.springtypecode)  + '/'+
+			left(rtrim(cast(u_spring.height_original as char(10))),2) + '/'+
+			left(rtrim(cast(u_spring.height as char(10))),2) + '/'+
+			left(rtrim(cast(u_spring.caliber  as char(10))),4) + '/'+
+			left(rtrim(cast(u_spring.center_diameter  as char(10))),3) + '/'+
+			left(rtrim(cast(u_spring.cyclenum  as char(10))),1) + '/'+
+			left(rtrim(cast(u_spring.line_diameter as char(10))),3) + '-'+
+			left(rtrim(cast(u_spring.hardness as char(10))),5)
+		ELSE 
+			left(rtrim(cast(u_spring.line_diameter as char(10))),4) + '/'+
+			left(rtrim(cast(u_spring.height as char(10))),4) + '/'+
+			left(rtrim(cast(u_spring.caliber  as char(10))),4) + '/'+
+			left(rtrim(cast(u_spring.center_diameter  as char(10))),4) + '/'+
+			left(rtrim(cast(u_spring.cyclenum  as char(10))),4) 
+		END  
+	AS springname,
+	u_springtype.springtypecode,
+	u_springtype.springtypename,
+	CASE 
+		WHEN hardness <= 8 THEN '软'
+		WHEN hardness <= 11 THEN '中软'
+		WHEN hardness <= 15 THEN '适中'
+		WHEN hardness <= 20 THEN '中硬'
+		ELSE '硬'
+	END AS hardness_level
 FROM
 	u_spring
+INNER JOIN u_springtype ON u_springtype.springtypeid = u_spring.springtypeid
   </selectstr>
   <where>
 		<when>
@@ -62,8 +92,13 @@ FROM
   </where>
   <displayfields>
     <field field="pid" compute="getrow()">序</field>
+    <field field="springname">弹簧名称</field>
+	<field field="springtypename">弹簧类型</field>
+    <field field="springtypecode">类型编码</field>
+    <field field="hardness_level">软硬程度</field>
     <field field="line_diameter" datatype="number">线径MM</field>
     <field field="height" datatype="number">高度CM</field>
+    <field field="height_original" datatype="number">入袋前高度CM</field>
     <field field="caliber" datatype="number">口经CM</field>
     <field field="center_diameter" datatype="number">中心直径CM</field>
     <field field="cyclenum" datatype="number">圈数</field>

+ 50 - 21
JLHHJSvr/Excutor/GetMtrlDefListExcutor.cs

@@ -70,6 +70,12 @@ namespace JLHHJSvr.Excutor
                     whereList.Add($"u_mtrl_price.mtrltype IN {ListEx.getString(request.mtrltypeids)}");
                 }
 
+                if (!string.IsNullOrEmpty(request.keyword))
+                {
+                    whereList.Add(@"(u_mtrl_price.name LIKE @keyword)");
+                    parms.Add("@keyword", "%" + request.keyword + "%");
+                }
+
                 var outputFields = "mtrlid,mtrltype,name,priceunit,shrinkage,gram_weight,cloth_width,if_inputqty,if_areaprice,createtime,createby,price,thickness,dscrp,erp_mtrlid,fjcnt,isuse,lastdate,handtype,pricelistid,if_subspecs";
                 DbSqlHelper.SelectJoin(cmd, selectStr, ListEx.GetWhereStr(whereList), parms, "mtrlid", outputFields, request.pageNum, request.pageSize, list);
 
@@ -139,32 +145,55 @@ namespace JLHHJSvr.Excutor
                     if (mtrl.erp_mtrlid > 0) mtrlids.Add(mtrl.erp_mtrlid.Value);
                 }
 
-                if(mtrlids.Count > 0)
+                //if(mtrlids.Count > 0)
+                //{
+                //    var mtrldefList = new List<erp_mtrldef>();
+                //    var erp_mtrl_dict = new Dictionary<int, erp_mtrldef>();
+
+                //    var erpHelper = HelperBase.GetHelper<ERPHelper>(null);
+
+                //    var parameters = new JObject();
+                //    parameters.Add("mtrlids", JToken.FromObject(mtrlids));
+
+                //    mtrldefList = erpHelper.GetERPList<erp_mtrldef>("GetL1Mtrldef", parameters);
+
+                //    foreach (var mtrl in mtrldefList)
+                //    {
+                //        erp_mtrl_dict.Add(mtrl.mtrlid.Value, mtrl);
+                //    }
+
+                //    foreach(var mtrl in list)
+                //    {
+                //        if(mtrl.erp_mtrlid > 0 && erp_mtrl_dict.TryGetValue(mtrl.erp_mtrlid.Value,out var mtrl_temp))
+                //        {
+                //            mtrl.erp_mtrlcode = mtrl_temp.mtrlcode;
+                //            mtrl.erp_mtrlname = mtrl_temp.mtrlname;
+                //            mtrl.erp_mtrlmode = mtrl_temp.mtrlmode;
+                //            mtrl.erp_unit = mtrl_temp.unit;
+                //            mtrl.erp_mtrlengname = mtrl_temp.mtrlengname;
+                //        }
+                //    }
+                //}
+
+                if (mtrlids.Count > 0)
                 {
-                    var mtrldefList = new List<erp_mtrldef>();
-                    var erp_mtrl_dict = new Dictionary<int, erp_mtrldef>();
-
                     var erpHelper = HelperBase.GetHelper<ERPHelper>(null);
+                    var total = 0;
+                    var resultList = erpHelper.GetERPMtrldef(cmd, ref total, "", new L1Mtrldef(), 0, 0, 1, mtrlids);
 
-                    var parameters = new JObject();
-                    parameters.Add("mtrlids", JToken.FromObject(mtrlids));
-
-                    mtrldefList = erpHelper.GetERPList<erp_mtrldef>("GetL1Mtrldef", parameters);
-
-                    foreach (var mtrl in mtrldefList)
-                    {
-                        erp_mtrl_dict.Add(mtrl.mtrlid.Value, mtrl);
-                    }
-
-                    foreach(var mtrl in list)
+                    if (resultList != null && resultList.Any())
                     {
-                        if(mtrl.erp_mtrlid > 0 && erp_mtrl_dict.TryGetValue(mtrl.erp_mtrlid.Value,out var mtrl_temp))
+                        foreach (var mx in list)
                         {
-                            mtrl.erp_mtrlcode = mtrl_temp.mtrlcode;
-                            mtrl.erp_mtrlname = mtrl_temp.mtrlname;
-                            mtrl.erp_mtrlmode = mtrl_temp.mtrlmode;
-                            mtrl.erp_unit = mtrl_temp.unit;
-                            mtrl.erp_mtrlengname = mtrl_temp.mtrlengname;
+                            var result = resultList.FirstOrDefault(o => o.mtrlid == mx.erp_mtrlid);
+                            if (result != null)
+                            {
+                                mx.erp_mtrlcode = result.mtrlcode;
+                                mx.erp_mtrlname = result.mtrlname;
+                                mx.erp_mtrlmode = result.mtrlmode;
+                                mx.erp_unit = result.unit;
+                                mx.erp_mtrlengname = result.zxmtrlmode;
+                            }
                         }
                     }
                 }

+ 21 - 21
JLHHJSvr/Excutor/ImportMtrlPriceByExcelExcutor.cs

@@ -86,30 +86,30 @@ namespace JLHHJSvr.Excutor
                     {
                         headers.Add(new HeaderPropetry { name = cell.ToString(), colIndex = k});
                     }
-                    ICellStyle cellStyle = cell.CellStyle;
-                    //if(cellStyle.FillForegroundColorColor)
-                    byte[] rgb;
-                    if (request.filename.ToLower().IndexOf(".xlsx") > 0)
-                    {
-                        rgb = ((XSSFColor)cell.CellStyle.FillForegroundColorColor).RGB;
-                    }
-                    else 
-                    {
-                        rgb = ((HSSFColor)cell.CellStyle.FillForegroundColorColor).RGB;
-                    }
-                    if(rgb.Count() == 3 && rgb[0].ToString() == "255" && rgb[1].ToString() == "204" && rgb[2].ToString() == "153")
+                    //ICellStyle cellStyle = cell.CellStyle;
+                    ////if(cellStyle.FillForegroundColorColor)
+                    //byte[] rgb;
+                    //if (request.filename.ToLower().IndexOf(".xlsx") > 0)
+                    //{
+                    //    rgb = ((XSSFColor)cell.CellStyle.FillForegroundColorColor).RGB;
+                    //}
+                    //else 
+                    //{
+                    //    rgb = ((HSSFColor)cell.CellStyle.FillForegroundColorColor).RGB;
+                    //}
+                    //if(rgb.Count() == 3 && rgb[0].ToString() == "255" && rgb[1].ToString() == "204" && rgb[2].ToString() == "153")
                     //if (cell.ToString().IndexOf("价格表") > -1)
+                    //{
+                    cmd.CommandText = "Select isnull(pricelistid,0) From u_pricelist where pricelistname = @pricelistname";
+                    cmd.Parameters.Clear();
+                    cmd.Parameters.AddWithValue("@pricelistname", cell.ToString().Trim());
+                    var pricelistid = Convert.ToInt32(cmd.ExecuteScalar());
+                    if (pricelistid > 0)
                     {
-                        cmd.CommandText = "Select isnull(pricelistid,0) From u_pricelist where pricelistname = @pricelistname";
-                        cmd.Parameters.Clear();
-                        cmd.Parameters.AddWithValue("@pricelistname", cell.ToString());
-                        var pricelistid = Convert.ToInt32(cmd.ExecuteScalar());
-                        if (pricelistid > 0)
-                        {
-                            priceHeaders.Add(new HeaderPropetry { name = cell.ToString(), colIndex = k, keyId = pricelistid });
-                        }
-                        
+                        priceHeaders.Add(new HeaderPropetry { name = cell.ToString(), colIndex = k, keyId = pricelistid });
                     }
+                        
+                    //}
                     //k++;
                 }
                 if (headers.Count <= 0 || priceHeaders.Count <= 0)

+ 2 - 2
JLHHJSvr/Excutor/SaveBedNetVarExcutor.cs

@@ -55,13 +55,13 @@ namespace JLHHJSvr.Excutor
                             request.bednetvar.createtime = dtNow;
                             request.bednetvar.createby = tokendata.username;
 
-                            var fields = @"varid,varkind,varcode,varname,varclass,vartype,varunit,varvalue,dscrp,createtime,createby,formula";
+                            var fields = @"varid,varkind,varcode,varname,varclass,vartype,varunit,varvalue,dscrp,createtime,createby,formula,ifmxformula";
                             DbSqlHelper.Insert(cmd, "u_bednet_var", null, request.bednetvar, fields);
                         }
                         else
                         {
                             //修改
-                            var fields = @"varcode,varname,varclass,vartype,varunit,varvalue,dscrp,formula";
+                            var fields = @"varcode,varname,varclass,vartype,varunit,varvalue,dscrp,formula,ifmxformula";
                             DbSqlHelper.Update(cmd, "u_bednet_var", null, request.bednetvar, "varid", fields);
                         }
 

+ 70 - 0
JLHHJSvr/Excutor/UpdateL1BasicinfoExcutor.cs

@@ -0,0 +1,70 @@
+using System;
+using System.Collections.Generic;
+using System.Data.SqlClient;
+using JLHHJSvr.BLL;
+using JLHHJSvr.Com;
+using JLHHJSvr.Com.Model;
+using JLHHJSvr.Helper;
+using LJLib.DAL.SQL;
+using LJLib.Net.SPI.Server;
+using Newtonsoft.Json.Linq;
+
+namespace JLHHJSvr.Excutor
+{
+    internal sealed class UpdateL1BasicinfoExcutor : ExcutorBase<UpdateL1BasicinfoRequest, UpdateL1BasicinfoResponse>
+    {
+        Dictionary<string, object> replacements = new Dictionary<string, object>();
+
+        protected override void ExcuteInternal(UpdateL1BasicinfoRequest request, object state, UpdateL1BasicinfoResponse rslt)
+        {
+            var tokendata = BllHelper.GetToken(request.token);
+            if (tokendata == null)
+            {
+                rslt.ErrMsg = "会话已经中断,请重新登录";
+                return;
+            }
+
+            using (var con = new SqlConnection(GlobalVar.ConnectionString))
+            using (var cmd = con.CreateCommand())
+            {
+                con.Open();
+
+
+                var maxMtrlModdate = (DateTime?)null;
+
+                cmd.CommandText = @"
+                    SELECT MAX(MaxAmount) AS moddate
+                    FROM (
+                        SELECT MAX(moddate) AS MaxAmount
+                        FROM u_mtrldef
+                        UNION ALL
+                        SELECT MAX(opdate)
+                        FROM u_mtrldef
+                    ) AS SubQuery;
+                ";
+                cmd.Parameters.Clear();
+                using (var reader = cmd.ExecuteReader())
+                {
+                    if (reader.Read())
+                    {
+                        maxMtrlModdate = Convert.ToDateTime(reader["moddate"]);
+                    }
+                }
+
+                var mtrldefList = new List<erp_mtrldef>();
+
+                var erpHelper = HelperBase.GetHelper<ERPHelper>(null);
+
+                var parameters = new JObject();
+                parameters.Add("moddate", JToken.FromObject(maxMtrlModdate));
+                parameters.Add("pageindex", JToken.FromObject(0));
+                parameters.Add("pagesize", JToken.FromObject(0));
+
+                mtrldefList = erpHelper.GetERPList<erp_mtrldef>("GetL1Mtrldef", parameters);
+
+
+            }
+        }
+
+    }
+}

+ 2 - 1
JLHHJSvr/GlobalVar/GlobalVar.cs

@@ -238,7 +238,8 @@ namespace JLHHJSvr
 
                 excutorManager.AddMap("JLH_FetchPrice", typeof(JLH_FetchPriceRequest), new JLH_FetchPriceExcutor());
                 excutorManager.AddMap("GetResetWiptype", typeof(GetResetWiptypeRequest), new GetResetWiptypeExcutor());
-                excutorManager.AddMap("ImportMtrlPriceByExcel", typeof(ImportMtrlPriceByExcelRequest), new ImportMtrlPriceByExcelExcutor());
+                excutorManager.AddMap("ImportMtrlPriceByExcel", typeof(ImportMtrlPriceByExcelRequest), new ImportMtrlPriceByExcelExcutor()); //更新物料价格表单价
+                excutorManager.AddMap("UpdateL1Basicinfo", typeof(UpdateL1BasicinfoRequest), new UpdateL1BasicinfoExcutor()); // 更新L1基础资料(物料、物料分类、工组)
             }
             catch (Exception ex)
             {

+ 27 - 8
JLHHJSvr/Helper/BedNetHelper.cs

@@ -1208,6 +1208,7 @@ namespace JLHHJSvr.Helper
             AddKeyValue("卷排列长", spring.roll_length == null ? 0 : spring.roll_length);
             AddKeyValue("排列宽", spring.arrangement_width == null ? 0 : spring.arrangement_width);
             AddKeyValue("排列长", spring.arrangement_height == null ? 0 : spring.arrangement_height);
+            AddKeyValue("弹簧类型id", spring.springtypeid);
         }
         private void InitReplaceMents(u_bednet bednet, Boolean isCalBed = true, int dannumType = 1, decimal dannumRate = 0)
         {
@@ -1252,6 +1253,7 @@ namespace JLHHJSvr.Helper
             AddKeyValue("汇率", bednet.moneyrate);
             AddKeyValue("税率", bednet.taxrate);
             AddKeyValue("卷包", bednet.if_jb);
+            AddKeyValue("海绵包边", !string.IsNullOrEmpty(bednet.sponge_mtrl_formula) && bednet.sponge_mtrlid > 0 ? 1 : 0);
 
             AddKeyValue("大小单系数", bednet.dannum_rate != null ? bednet.dannum_rate : 0);
             var _dannumType = 0;
@@ -1309,6 +1311,7 @@ namespace JLHHJSvr.Helper
 	                                ,vartype
 	                                ,varunit
                                     ,formula
+                                    ,ifmxformula
                                 FROM u_bednet_var";
                 bednetVarList = new List<u_bednet_var>();
                 whereList = new List<string>();
@@ -1317,13 +1320,17 @@ namespace JLHHJSvr.Helper
                 param = new Dictionary<string, object>();
                 param.Add("@varkind", 0);
                 param.Add("@varclass", 2); // 公式
-                DbSqlHelper.SelectJoin(cmd, selectStr, ListEx.GetWhereStr(whereList), param, "varid", "varid,varkind,varcode,varname,varclass,vartype,varunit,formula", 0, 0, bednetVarList);
+                DbSqlHelper.SelectJoin(cmd, selectStr, ListEx.GetWhereStr(whereList), param, "varid", "varid,varkind,varcode,varname,varclass,vartype,varunit,formula,ifmxformula", 0, 0, bednetVarList);
 
-                string[] keys = { "车间成本", "不含税出厂价", "部门不含税价", "税金", "部门含税价", "外币价", "计划价" };
+                string[] keys = { "车间成本", "不含税出厂价", "部门不含税价", "税金", "部门含税价", "外币价", "计划价"};
                 // 添加替换公式变量
                 foreach (var netvar in bednetVarList)
                 {
-                    if (keys.Contains(netvar.varname))
+                    if (netvar.ifmxformula > 0)
+                    {
+                        AddFormulaKeyValue(netvar.varname, netvar.formula);
+                    }
+                    else if (keys.Contains(netvar.varname))
                     {
                         AddFormulaKeyValue(netvar.varname, netvar.formula);
                     }
@@ -1492,7 +1499,7 @@ namespace JLHHJSvr.Helper
                 AddKeyValue("物料名称", mtrl_price.name);
 
                 AddKeyValue("裥棉厚度", bednet.sponge_thickness.Value);
-                AddKeyValue("海绵厚度", bednet.sponge_thickness.Value);
+                AddKeyValue("海绵包边厚度", bednet.sponge_thickness.Value);
 
                 if (bednet.sponge_height.Value > 0)
                 {
@@ -1517,6 +1524,10 @@ namespace JLHHJSvr.Helper
                     }
                 }
             }
+            else
+            {
+                AddKeyValue("海绵包边厚度", 0);
+            }
             #endregion 计算 海绵包边 结束
 
             #region 计算 填充海绵 开始
@@ -1528,7 +1539,7 @@ namespace JLHHJSvr.Helper
                 AddKeyValue("物料名称", mtrl_price.name);
 
                 AddKeyValue("裥棉厚度", bednet.sponge_tc_thickness.Value);
-                AddKeyValue("海绵厚度", bednet.sponge_tc_thickness.Value);
+                AddKeyValue("填充海绵厚度", bednet.sponge_tc_thickness.Value);
 
                 if (bednet.sponge_tc_height.Value > 0)
                 {
@@ -1553,6 +1564,10 @@ namespace JLHHJSvr.Helper
                     }
                 }
             }
+            else
+            {
+                AddKeyValue("填充海绵厚度", 0);
+            }
             #endregion 计算 填充海绵 结束
 
             #region 计算 封边 开始
@@ -2851,8 +2866,8 @@ namespace JLHHJSvr.Helper
         {
 
             // 默认方法
-            AddFormulaKeyValue("弹簧排列个数-宽", "if(【卷包】=1,round((【床垫宽】- 2)/(【中心直径】-【卷排列宽】),0),round((【床垫宽】- 2)/(【中心直径】-【排列宽】),0))");
-            AddFormulaKeyValue("弹簧排列个数-长", "if(【卷包】=1,round((【床垫长】- 2)/(【中心直径】-【卷排列长】),0),round((【床垫长】- 2)/(【中心直径】-【排列长】),0))");
+            AddFormulaKeyValue("计算弹簧排列个数-宽", "if(【卷包】=1,round((【床垫宽】- 2)/(【中心直径】-【卷排列宽】),0),round((【床垫宽】- 2)/(【中心直径】-【排列宽】),0))");
+            AddFormulaKeyValue("计算弹簧排列个数-长", "if(【卷包】=1,round((【床垫长】- 2)/(【中心直径】-【卷排列长】),0),round((【床垫长】- 2)/(【中心直径】-【排列长】),0))");
 
             InitReplaceMents(bednet);
 
@@ -2865,13 +2880,17 @@ namespace JLHHJSvr.Helper
                     _springid = springList[0].springid;
                 }
                 var spring = new u_spring() { springid = _springid };
-                DbSqlHelper.SelectOne(cmd, spring, "line_diameter,gram_weight,height,center_diameter,caliber,cyclenum,roll_width,roll_length,arrangement_width,arrangement_height");
+                DbSqlHelper.SelectOne(cmd, spring, "line_diameter,gram_weight,height,center_diameter,caliber,cyclenum,roll_width,roll_length,arrangement_width,arrangement_height,springtypeid");
 
                 // 处理相同公式部分
                 InitMxReplaceMents(bednet, mx, spring);
 
                 InitSptringRepaceMents(spring);
 
+                #region  计算 海绵包边材料成本 开始
+                CalSpringMtrlCol2(bednet, mx, springList, "海绵包边");
+                #endregion 计算 海绵包边材料成本 结束
+
                 #region 弹簧排列个数-宽
                 mx.spring_qty_width = Convert.ToInt32(CalculateVarFormula("弹簧排列个数-宽").DecimalValue);
                 AddKeyValue("弹簧排列个数-宽", mx.spring_qty_width);