Procházet zdrojové kódy

优化计算公式接口

chen_yjin před 5 měsíci
rodič
revize
157d565c8c

+ 3 - 7
JLHHJSvr/Com/GetComputeBednet.cs

@@ -25,12 +25,8 @@ namespace JLHHJSvr.Com
     public sealed class GetComputeBednetResponse : LJResponse
     {
         public u_bednet bednet { get; set; }
-        public List<Replacement> replace { get; set; }
-    }
-
-    public struct Replacement
-    {
-        public string label { get; set; }
-        public object value { get; set; }
+        public List<replacement> replace { get; set; }
+        public List<replacement> formulas { get; set; }
+        public string message { get; set; }
     }
 }

+ 34 - 0
JLHHJSvr/Com/GetComputeMattress.cs

@@ -0,0 +1,34 @@
+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 GetComputeMattressRequest : ILJRequest<GetComputeMattressResponse>
+    {
+        public string GetApiName()
+        {
+            return "GetComputeMattress";
+        }
+        public string token { get; set; }
+        /// <summary>
+        /// 床垫信息:主表
+        /// </summary>
+        public u_mattress mattress { get; set; }
+        /// <summary>
+        /// 所有明细
+        /// </summary>
+        public List<u_mattress_mx_mtrl> mattressMx { get; set; }
+    }
+
+    public sealed class GetComputeMattressResponse : LJResponse
+    {
+        public u_mattress mattress { get; set; }
+        public List<replacement> replace { get; set; }
+        public List<replacement> formulas { get; set; }
+        public string message { get; set; }
+    }
+}

+ 16 - 0
JLHHJSvr/Com/Model/replacement.cs

@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Data.Common;
+using System.Linq;
+using System.Text;
+
+namespace JLHHJSvr.Com.Model
+{
+    public sealed class replacement
+    {
+        public string label { get; set; }
+        public object value { get; set; }
+        public int? type { get; set; }
+        public int? ifnotreplace { get; set; }
+    }
+}

+ 8 - 55
JLHHJSvr/DataStore/web_bednet.xml

@@ -3,11 +3,14 @@
 	<selectstr>
 		SELECT
 		flag,
-		deptid ,
-		bednettypeid,
-		bednetcode
+		deptid,
+		bednetid,
+		u_bednet_type.bednettypeid,
+		bednetcode,
+		nottax_factory_cost
 
 		From u_bednet
+		inner join u_bednet_type ON u_bednet_type.bednettypeid = u_bednet.bednettypeid
 	</selectstr>
 	<where>
 		<when notnull="@arg_bednetid">
@@ -16,58 +19,8 @@
 	</where>
 	<displayfields>
 		<field field="pid" compute="getrow()">序</field>
-		<field field="xd_flag" datatype="checkbox">下单</field>
-		<field field="js1_flag" datatype="checkbox">产品补充审核</field>
 		<field field="flag" datatype="checkbox">财务审核</field>
-		<field field="deptid" mapper="" ddd="ddd_mattress_dept_choose" align="left">部门</field>
-		<field field="mattresscode">报价唯一码</field>
-		<field field="mattressrelcode">床垫编码</field>
-		<field field="mattressname">床垫名称</field>
-		<field field="mattresstypeid" mapper="" ddd="ddd_mattress_type_choose">床垫类别</field>
-		<field field="erp_mtrlcode">L1物料编码</field>
-		<field field="mattress_width" datatype="number">床垫宽/CM</field>
-		<field field="mattress_length" datatype="number">床垫长/CM</field>
-		<field field="mattress_height" datatype="number">床垫高/CM</field>
-		<field field="total_cost" datatype="number">总成本</field>
-		<field field="nottax_factory_cost" datatype="number">不含税出厂价</field>
-		<field field="nottax_dept_cost" datatype="number">部门不含税价</field>
-		<field field="taxes" datatype="number">税金</field>
-		<field field="dept_cost" datatype="number">部门含税价</field>
-		<field field="foreign_cost" datatype="number">外币价</field>
-		<field field="packtype" datatype="checkbox">包装方式</field>
-		<field field="packqty" datatype="number">压包数量</field>
-		<field field="woodpallettype" datatype="checkbox">木托方式</field>
-		<field field="dijia_cost" datatype="number">底价</field>
-		<field field="yongjin" datatype="number" compute="dijia_cost / (1 - (commission - 1 )) - dijia_cost">佣金</field>
-		<field field="taxrate" datatype="number">税率</field>
-		<field field="fob" datatype="number">FOB</field>
-		<field field="moneyrate" mapper="u_mattress.if_moneyrate">汇率</field>
-		<field field="createby">登记人</field>
-		<field field="createtime" datatype="datetime">登记时间</field>
-		<field field="auditingrep">审核人</field>
-		<field field="auditingdate" datatype="datetime">审核时间</field>
-		<field field="mattressid">Mattressid</field>
-		<field field="xd_auditingrep">下单人</field>
-		<field field="xd_auditingdate" datatype="datetime">下单时间</field>
-		<field field="qr_auditingrep">更新人</field>
-		<field field="qr_auditingdate" datatype="datetime">最新更新日期</field>
-		<field field="erp_cb_updatetime" datatype="datetime">erp成本更新时间</field>
-		<field field="dept_profitrate" datatype="number">部门让利点数</field>
-		<field field="fees_dscrp">额外费用说明</field>
-		<field field="commission">佣金点数</field>
-		<field field="other_rate">额外点数</field>
-		<field field="extras_cost">额外费用</field>
-		<field field="if_bcp_type" datatype="checkbox">半成品</field>
-		<field field="if_w_butao" datatype="checkbox">顶布裥棉</field>
-		<field field="biandai_qty" datatype="number">边带数</field>
-		<field field="if_m_chai" datatype="checkbox">面拆</field>
-		<field field="if_n_butao" datatype="checkbox">内布套</field>
-		<field field="s_cover_qty" datatype="number">内布套上覆</field>
-		<field field="z_cover_qty" datatype="number">内布套侧覆</field>
-		<field field="x_cover_qty" datatype="number">内布套下覆</field>
-		<field field="if_m_wbutao_way" datatype="checkbox">面料外布套做法</field>
-		<field field="s_m_cover_qty" datatype="number">面层向大侧覆盖</field>
-		<field field="z_m_cover_qty" datatype="number">大侧向底层覆盖</field>
-		<field field="x_m_cover_qty" datatype="number">底层向大侧覆盖</field>
+		<field field="deptid">部门</field>
+		<field field="bednettypeid" mapper="" table="u_bednet_type">类别</field>
 	</displayfields>
 </select>

+ 7 - 4
JLHHJSvr/DataStore/web_bednet_choose.xml

@@ -4,7 +4,7 @@
 		select
 		u_bednet.bednetid,
 		u_bednet.bednetcode,
-		u_bednet_type.typename,
+		u_bednet_type.bednettypeid,
 		u_bednet.total_cost,
 		u_bednet.mattress_width,
 		u_bednet.mattress_length,
@@ -12,8 +12,8 @@
 		u_bednet.createtime,
 		u_bednet.bednetname,
 		u_bednet.nottax_factory_cost
-		from u_bednet inner join u_bednet_type on
-		u_bednet.bednettypeid = u_bednet_type.bednettypeid
+		from u_bednet
+		inner join u_bednet_type ON u_bednet_type.bednettypeid = u_bednet.bednettypeid
 	</selectstr>
 	<where>
 		<when notnull="@arg_deptid">
@@ -22,12 +22,15 @@
 		<when notnull="@arg_search">
 			u_bednet.bednetname like '%'+ @arg_search + '%' OR u_bednet.bednetcode like '%'+ @arg_search + '%' OR u_bednet.bednetid like '%'+ @arg_search + '%'
 		</when>
+		<when notnull="@arg_bednettypeid">
+			u_bednet_type.bednettypeid=@arg_bednettypeid
+		</when>
 	</where>
 	<displayfields>
 		<field field="pid" compute="getrow()">序</field>
 		<field field="bednetname" table="u_bednet">床网名称</field>
 		<field field="bednetcode" table="u_bednet">报价唯一码</field>
-		<field field="typename" table="u_bednet_type">类别</field>
+		<field field="bednettypeid" mapper="" table="u_bednet_type">类别</field>
 		<field field="mattress_width" table="u_bednet">床垫宽</field>
 		<field field="mattress_length" table="u_bednet">床垫长</field>
 		<field field="mattress_height" table="u_bednet">床垫高</field>

+ 23 - 4
JLHHJSvr/DataStore/web_bednet_define.xml

@@ -114,7 +114,26 @@
 		fob,
 		taxrate,
 		extras_cost,
-		moneyrate
+		moneyrate,
+		spring_hr_formula,
+		cnail_weight_formula,
+		edge_weight_formula,
+		fabrics1_weight_formula,
+		fabrics2_weight_formula,
+		felt_hr_formula,
+		felt_mtrl_formula,
+		felt_weight_formula,
+		fork_weight_formula,
+		hard_around_weight_formula,
+		packet_hr_formula,
+		packet_mtrl_formula,
+		side_iron_weight_formula,
+		sponge_mtrl_tc_formula,
+		sponge_weight_formula,
+		sponge_weight_tc_formula,
+		spring_mtrl_formula,
+		spring_weight_formula
+
 		From u_bednet
 		left join u_mtrl_price u_mtrl_sponge on   u_bednet.sponge_mtrlid=u_mtrl_sponge.mtrlid
 		left join u_mtrl_price u_mtrl_sponge_tc on   u_bednet.sponge_tc_mtrlid=u_mtrl_sponge_tc.mtrlid
@@ -123,12 +142,12 @@
 		left join u_mtrl_price u_mtrl_felt_x on   u_bednet.felt_x_mtrlid=u_mtrl_felt_x.mtrlid
 	</selectstr>
 	<where>
-		<when>
-			u_bednet.autotype = 0
-		</when>
 		<when notnull="@arg_bednetid">
 			u_bednet.bednetid = @arg_bednetid
 		</when>
+		<when notnull="@arg_deptid">
+			u_bednet.autotype = 0
+		</when>
 		<when notnull="@arg_deptid">
 			u_bednet.deptid = @arg_deptid
 		</when>

+ 2 - 1
JLHHJSvr/DataStore/web_his_price.xml

@@ -7,7 +7,8 @@
 			cmpemp,
 			nottax_dept_cost,
 			dept_cost,
-			foreign_cost
+			foreign_cost,
+			typeid
 		from u_his_price
 	</selectstr>
 	<where>

+ 4 - 1
JLHHJSvr/DataStore/web_mattress.xml

@@ -112,6 +112,9 @@
 			u_mattress.mattresscode like '%'+ @arg_search + '%' OR u_mattress.mattressrelcode like '%'+ @arg_search + '%' OR u_mattress.mattressname like '%'+ @arg_search + '%'
 		</when>
 	</where>
+	<orderstr>
+		mattressid DESC
+	</orderstr>
 	<displayfields>
 		<field field="pid" compute="getrow()">序</field>
 		<field field="xd_flag" datatype="checkbox">下单</field>
@@ -150,7 +153,7 @@
 		<field field="qr_auditingrep">更新人</field>
 		<field field="qr_auditingdate" datatype="datetime">最新更新日期</field>
 		<field field="erp_cb_updatetime" datatype="datetime">erp成本更新时间</field>
-		<field field="dept_profitrate" datatype="number">部门让利点数</field>
+		<field field="dept_profitrate_rangli" datatype="number">部门让利点数</field>
 		<field field="fees_dscrp">额外费用说明</field>
 		<field field="commission">佣金点数</field>
 		<field field="other_rate">额外点数</field>

+ 10 - 2
JLHHJSvr/DataStore/web_mattress_mx.xml

@@ -8,7 +8,7 @@
 			u_mattress_mx_mtrl.formula as  formula,
 			u_mattress_mx_mtrl.formulaid,
 			u_mattress_mx_mtrl.mtrlid,
-			vv_mtrl_price.mtrlname,
+			CASE WHEN u_mattress_formula.formulatype = 99 THEN vv_bednet.bednetname ELSE vv_mtrl_price.mtrlname END AS mtrlname,
 			u_mattress_mx_mtrl.price,
 			u_mattress_mx_mtrl.gram_weight,
 			u_mattress_mx_mtrl.cloth_width,
@@ -47,6 +47,14 @@
 				' ' as mtrlname
 				from u_user_jlhprice
 		) AS vv_mtrl_price on vv_mtrl_price.mtrlid = u_mattress_mx_mtrl.mtrlid
+		Left OUTER JOIN (
+		SELECT u_bednet.bednetid,
+		rtrim(u_bednet_type.typename)+ ' ' +  rtrim(u_bednet.bednetcode)+ ' '+cast(u_bednet.mattress_width as char(3))+ '*'
+		+cast(u_bednet.mattress_length as char(3))+ '*'+cast(u_bednet.mattress_height as char(3)) as bednetname
+
+		FROM u_bednet
+		inner join u_bednet_type ON u_bednet_type.bednettypeid = u_bednet.bednettypeid
+		) as vv_bednet ON vv_bednet.bednetid = u_mattress_mx_mtrl.mtrlid
 	</selectstr>
 	<where>
 		<when notnull="@arg_mattressid">
@@ -67,7 +75,7 @@
 		</field>
 		<field field="addmx">+</field>
 		<field field="delmx">-</field>
-		<field field="chastr" datatype="checkbox">位置</field>
+		<field field="chastr">位置</field>
 		<field field="formulakind" table="u_mattress_formula" mapper="" ddd="ddd_mattress_formula_formulakind">公式名</field>
 		<field field="if_mtrl" table="u_mattress_formula" datatype="checkbox">按物料?</field>
 		<field field="thickness" datatype="number">厚度cm</field>

+ 1 - 1
JLHHJSvr/DataStore/web_mattress_mx_neibutao.xml

@@ -64,7 +64,7 @@
 		</field>
 		<field field="addmx">+</field>
 		<field field="delmx">-</field>
-		<field field="chastr" datatype="checkbox">位置</field>
+		<field field="chastr">位置</field>
 		<field field="formulakind" table="u_mattress_formula" mapper="" ddd="ddd_mattress_formula_formulakind">公式名</field>
 		<field field="if_mtrl" table="u_mattress_formula" datatype="checkbox">按物料?</field>
 		<field field="thickness" datatype="number">厚度cm/条数</field>

+ 9 - 7
JLHHJSvr/Excutor/GetComputeBednetExcutor.cs

@@ -78,15 +78,17 @@ namespace JLHHJSvr.Excutor
 
                 var helper = HelperBase.GetHelper<BedNetHelper>(cmd,new HelperBase.Context() { tokendata = tokendata});
 
-                helper.CalCulateFormula(request.bednet, request.bednetMx, request.spring);
-                var replacements = helper.Replacements;
-                rslt.replace = new List<Replacement>();
-
-                // 访问和遍历列表
-                foreach (var item in helper.Replacements)
+                try
+                {
+                    helper.CalCulateFormula(request.bednet, request.bednetMx, request.spring);
+                }
+                catch (Exception e)
                 {
-                    rslt.replace.Add(new Replacement { label = item.Key, value = item.Value });
+                    rslt.message = e.Message;
                 }
+                rslt.replace = helper.Replacements;
+
+                rslt.formulas = helper.FormulaReplacements;
 
                 rslt.bednet = request.bednet;
             }

+ 80 - 0
JLHHJSvr/Excutor/GetComputeMattressExcutor.cs

@@ -0,0 +1,80 @@
+using System;
+using System.Collections.Generic;
+using System.Data.SqlClient;
+using System.Linq;
+using System.Text;
+using JLHHJSvr.BLL;
+using JLHHJSvr.Com;
+using JLHHJSvr.Com.Model;
+using JLHHJSvr.Helper;
+using JLHHJSvr.LJException;
+using JLHHJSvr.Tools;
+using LJLib.DAL.SQL;
+using LJLib.Net.SPI.Server;
+
+namespace JLHHJSvr.Excutor
+{
+    internal sealed class GetComputeMattressExcutor : ExcutorBase<GetComputeMattressRequest, GetComputeMattressResponse>
+    {
+        protected override void ExcuteInternal(GetComputeMattressRequest request, object state, GetComputeMattressResponse rslt)
+        {
+            var tokendata = BllHelper.GetToken(request.token);
+            if (tokendata == null)
+            {
+                rslt.ErrMsg = "会话已经中断,请重新登录";
+                return;
+            }
+            if (request.mattress == null)
+            {
+                rslt.ErrMsg = "缺少主表信息";
+                return;
+            }
+
+            using (var con = new SqlConnection(GlobalVar.ConnectionString))
+            using (var cmd = con.CreateCommand())
+            {
+                con.Open();
+
+                // 初始化属性
+                AutoInit.AutoInitS(cmd, request.mattress);
+
+                if (request.mattress.copy_id != null && request.mattress.copy_id > 0)
+                {
+                    request.mattress.mattressid = 0;
+                    request.mattress.mattresscode = string.Empty;
+
+                    foreach (var mx in request.mattressMx)
+                    {
+                        mx.mattressid = 0;
+                        mx.mattressmxid = 0;
+                    }
+                }
+
+                foreach (var mx in request.mattressMx)
+                {
+                    AutoInit.AutoInitS(cmd, mx);
+                }
+
+                using (cmd.Transaction = con.BeginTransaction())
+                {
+
+                    var helper = HelperBase.GetHelper<MattressHelper>(cmd, new HelperBase.Context() { tokendata = tokendata });
+
+                    try
+                    {
+                        helper.CalCulateFormula(request.mattress, request.mattressMx);
+                    }
+                    catch (Exception e)
+                    {
+                        rslt.message = e.Message;
+                    }
+                    rslt.replace = helper.Replacements;
+
+                    rslt.formulas = helper.FormulaReplacements;
+
+                    //rslt.mattress = request.mattress;
+                }
+            }
+        }
+    }
+}

+ 3 - 2
JLHHJSvr/Excutor/SaveMattressExcutor.cs

@@ -55,10 +55,11 @@ namespace JLHHJSvr.Excutor
                     AutoInit.AutoInitS(cmd, mx);
                 }
 
-                var helper = HelperBase.GetHelper<MattressHelper>(cmd,new HelperBase.Context() { tokendata = tokendata});
-
                 using (cmd.Transaction = con.BeginTransaction())
                 {
+
+                    var helper = HelperBase.GetHelper<MattressHelper>(cmd, new HelperBase.Context() { tokendata = tokendata });
+
                     try
                     {
                         helper.CalCulateFormula(request.mattress, request.mattressMx);

+ 1 - 1
JLHHJSvr/GlobalVar/GlobalVar.cs

@@ -164,7 +164,7 @@ namespace JLHHJSvr
                 excutorManager.AddMap("DeleteBedNet", typeof(DeleteBedNetRequest), new DeleteBedNetExcutor());// 删除床网报价
                 excutorManager.AddMap("AuditBedNet", typeof(AuditBedNetRequest), new AuditBedNetExcutor());// 审核床网报价
 
-                //excutorManager.AddMap("GetComputeMattress", typeof(GetComputeMattressRequest), new GetComputeMattressExcutor());// 计算床垫报价
+                excutorManager.AddMap("GetComputeMattress", typeof(GetComputeMattressRequest), new GetComputeMattressExcutor());// 计算床垫报价
                 excutorManager.AddMap("GetComputeBednet", typeof(GetComputeBednetRequest), new GetComputeBednetExcutor());// 计算床网报价
                 excutorManager.AddMap("CopyMattressAudited", typeof(CopyMattressAuditedRequest), new CopyMattressAuditedExcutor());// 复制审核床垫报价
                 excutorManager.AddMap("ReCalculateNoAudit", typeof(ReCalculateNoAuditRequest), new ReCalculateNoAuditExcutor());// 重算床垫报价

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 399 - 43
JLHHJSvr/Helper/BedNetHelper.cs


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 198 - 81
JLHHJSvr/Helper/MattressHelper.cs


+ 3 - 0
JLHHJSvr/JLHHJSvr.csproj

@@ -100,6 +100,7 @@
     <Compile Include="Com\GetBedNetVarList.cs" />
     <Compile Include="Com\GetBillList.cs" />
     <Compile Include="Com\GetCarList.cs" />
+    <Compile Include="Com\GetComputeMattress.cs" />
     <Compile Include="Com\GetComputeBednet.cs" />
     <Compile Include="Com\GetDept.cs" />
     <Compile Include="Com\GetDwLayout.cs" />
@@ -108,6 +109,7 @@
     <Compile Include="Com\GetPriceList.cs" />
     <Compile Include="Com\GetSysFuncPwr.cs" />
     <Compile Include="Com\GetFormulaCompute.cs" />
+    <Compile Include="Com\Model\replacement.cs" />
     <Compile Include="Com\Model\Recursion.cs" />
     <Compile Include="Com\Model\sys_func_pwr.cs" />
     <Compile Include="Com\Model\u_bednet.cs" />
@@ -249,6 +251,7 @@
     <Compile Include="Excutor\GetBedNetVarListExcutor.cs" />
     <Compile Include="Excutor\GetBillListExcutor.cs" />
     <Compile Include="Excutor\GetCarListExcutor.cs" />
+    <Compile Include="Excutor\GetComputeMattressExcutor.cs" />
     <Compile Include="Excutor\GetComputeBednetExcutor.cs" />
     <Compile Include="Excutor\GetDeptExcutor.cs" />
     <Compile Include="Excutor\GetDwLayoutExcutor.cs" />