Parcourir la source

业务后台:床垫报价查询接口

chen_yjin il y a 6 mois
Parent
commit
2e305f0794

+ 47 - 0
JLHHJSvr/DBA/DAL_SQLite/Utils/SqlStrHelper.cs

@@ -291,6 +291,53 @@ DROP TABLE #tmp_sorttable";
             return outCmdStr;
         }
 
+        public static string BuildSelectStrL1(ParseResult sqlInfo, string preOutFieldStr, string orgWhereStr,
+    string preOrderStr, int pageindex, int pagesize)
+        {
+
+            var fromStr = sqlInfo.fromStr;
+
+            var outCmdStr = string.Format("{0} {1}", string.Join(",", sqlInfo.selectFieldsDic.Values), fromStr);
+            var whereStr = sqlInfo.whereStr;
+            if (!string.IsNullOrEmpty(orgWhereStr))
+            {
+                if (!string.IsNullOrEmpty(whereStr))
+                {
+                    var rawWhereitem = whereStr.Substring(whereStr.IndexOf("WHERE", StringComparison.OrdinalIgnoreCase) + 6);
+                    whereStr = "WHERE (" + rawWhereitem + ") AND ";
+                }
+                else
+                {
+                    whereStr = "WHERE ";
+                }
+                whereStr += orgWhereStr;
+            }
+            outCmdStr += whereStr;
+            outCmdStr += " " + sqlInfo.groupStr;
+            outCmdStr += " " + sqlInfo.orderStr;
+            if (!string.IsNullOrEmpty(preOrderStr))
+            {
+                outCmdStr += " ORDER BY " + preOrderStr;
+            }
+            if (pageindex > 0 && pagesize > 0)
+            {
+                outCmdStr = sqlInfo.selectStr + " TOP " + (pageindex * pagesize).ToString() + " " + outCmdStr;
+                outCmdStr = "SELECT RowNumber = IDENTITY(INT,1, 1)," + preOutFieldStr + " INTO #tmp_sorttable FROM (" +
+                            outCmdStr + @") a
+SELECT TOP " + pagesize.ToString() + " " + preOutFieldStr + @" FROM #tmp_sorttable WHERE RowNumber > " +
+                            (pagesize * (pageindex - 1)).ToString() + @" ORDER BY RowNumber
+DROP TABLE #tmp_sorttable";
+            }
+            else if (pageindex <= 0 && pagesize > 0)
+            {
+                outCmdStr = sqlInfo.selectStr + " TOP " + pagesize + " " + outCmdStr;
+            }
+            else
+            {
+                outCmdStr = sqlInfo.selectStr + " " + outCmdStr;
+            }
+            return outCmdStr;
+        }
         public static string RemoveComment(string source)
         {
             var sb = new StringBuilder();

+ 15 - 0
JLHHJSvr/DataStore/_Mapper_if_moneyrate.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<data>
+	<json>
+		[
+			{
+				"value": "0",
+				"label": "人民币"
+			},
+			{
+				"value": "1",
+				"label": "美元"
+			}
+		]
+	</json>
+</data>

+ 16 - 0
JLHHJSvr/DataStore/_Mapper_mattresstypeid.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<select>
+	<selectstr>
+		select
+		mattresstypeid,
+		typename,
+		typecode
+		from
+		u_mattress_type
+	</selectstr>
+	<where>
+	</where>
+	<displayfields>
+		<field field="typename">Typename</field>
+	</displayfields>
+</select>

+ 19 - 0
JLHHJSvr/DataStore/_Mapper_mtrl_price.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<select>
+	<selectstr>
+		select
+			mtrlid,
+			name
+		from u_mtrl_price
+		union all
+			select top 1
+			0 as mtrlid,
+			' ' as name
+			from u_user_jlhprice
+	</selectstr>
+	<where>
+	</where>
+	<displayfields>
+		<field field="name">Name</field>
+	</displayfields>
+</select>

+ 130 - 0
JLHHJSvr/DataStore/web_mattress.xml

@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<select>
+	<selectstr>
+		SELECT
+		mattressid,
+		mattressname,
+		deptid,
+		mattresstypeid,
+		mattresscode,
+		mattress_width,
+		mattress_length,
+		mattress_height,
+		packtype,
+		packqty,
+		woodpallettype,
+		total_hr_cost,
+		total_material_cost ,
+		fees_dscrp,
+		total_fees_cost,
+		taxrate,
+		commissionrate,
+		commission,
+		fob,
+		profitrate,
+		extras_cost,
+		dept_profitrate,
+		moneyrate,
+		mattressrelcode,
+		flag,
+		auditingrep,
+		auditingdate,
+		createtime,
+		createby,
+		total_cost,
+		nottax_factory_cost,
+		nottax_dept_cost,
+		taxes,
+		dept_cost,
+		foreign_cost,
+		foreign_cost_bz,
+		nottax_factory_cost  / ( dept_profitrate + dept_profitrate_rangli / 100  ) as dijia_cost,
+		xd_flag,
+		xd_auditingrep,
+		xd_auditingdate,
+		qr_flag,
+		qr_auditingrep,
+		qr_auditingdate,
+		js1_flag ,
+		erp_mtrlcode,
+		erp_cb_updatetime,
+		if_bcp_type,
+		other_rate,
+		if_moneyrate
+
+		From u_mattress
+	</selectstr>
+	<where>
+		<when notnull="@arg_mattressid">
+			u_mattress.mattressid = @arg_mattressid
+		</when>
+		<when notnull="@arg_deptid">
+			u_mattress.deptid = @arg_deptid
+		</when>
+		<when notnull="@@arg_arry_outrepstr@@">
+			u_mattress.createby in (@@arg_arry_outrepstr@@) or  @arg_empid = 0
+		</when>
+		<when notnull="@arg_qr_flag">
+			u_mattress.qr_flag = @arg_qr_flag
+		</when>
+		<when notnull="@arg_flag">
+			u_mattress.flag = @arg_flag
+		</when>
+		<when notnull="@arg_xd_flag">
+			u_mattress.xd_flag = @arg_xd_flag
+		</when>
+		<when notnull="@arg_cp_flag">
+			u_mattress.js1_flag = @arg_cp_flag
+		</when>
+		<when>
+			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 + '%'
+		</when>
+	</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">部门</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" datatype="number"  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>
+	</displayfields>
+</select>

+ 100 - 0
JLHHJSvr/DataStore/web_mattress_mx.xml

@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<select>
+	<selectstr>
+		SELECT
+			u_mattress_mx_mtrl.mattressmxid,
+			u_mattress_mx_mtrl.mattressid,
+			u_mattress_formula.formulakind as formulakind ,
+			u_mattress_mx_mtrl.formula as  formula,
+			u_mattress_mx_mtrl.formulaid,
+			u_mattress_mx_mtrl.mtrlid,
+			u_mattress_mx_mtrl.price,
+			u_mattress_mx_mtrl.gram_weight,
+			u_mattress_mx_mtrl.cloth_width,
+			u_mattress_mx_mtrl.if_inputqty,
+			u_mattress_mx_mtrl.qty ,
+			u_mattress_mx_mtrl.costamt,
+			u_mattress_mx_mtrl.if_areaprice,
+			u_mattress_formula.formulatype,
+			case when u_mattress_mx_mtrl.chastr <> '' then  u_mattress_mx_mtrl.chastr  else u_mattress_formula.sortcode end  as  sortcode,
+			u_mattress_formula.if_mtrl,
+			u_mattress_mx_mtrl.if_success,
+			u_mattress_mx_mtrl.replace_formula,
+			u_mattress_mx_mtrl.priceunit,
+			u_mattress_mx_mtrl.shrinkage,
+			CASE when u_mattress_formula.if_mtrl > 1 THEN '+' ELSE '' END as addmx,
+			CASE when u_mattress_formula.if_mtrl > 1 THEN '-' ELSE '' END as delmx,
+			u_mtrl_price.name,
+			u_mattress_mx_mtrl.thickness,
+			u_mattress_mx_mtrl.chastr,
+			u_mattress_mx_mtrl.xu,
+			u_mattress_mx_mtrl.useqty as useqty,
+			u_mattress_mx_mtrl.useformula,
+			u_mattress_mx_mtrl.replace_useformula ,
+			u_mattress_mx_mtrl.gydscrp
+		From u_mattress_mx_mtrl
+		Left join u_mattress_formula On u_mattress_formula.formulaid = u_mattress_mx_mtrl.formulaid left outer join u_mtrl_price on
+		u_mattress_mx_mtrl.mtrlid = u_mtrl_price.mtrlid
+	</selectstr>
+	<where>
+		<when notnull="@arg_mattressid">
+			u_mattress_mx_mtrl.mattressid = @arg_mattressid
+		</when>
+		<when notnull="@@arg_formulatype@@">
+			u_mattress_formula.formulatype in (@@arg_formulatype@@)
+		</when>
+	</where>
+	<displayfields>
+		<field field="pid" compute="getrow()">序</field>
+		<field field="if_success" datatype="checkbox">
+			计算
+			成功?
+		</field>
+		<field field="addmx">+</field>
+		<field field="delmx">-</field>
+		<field field="chastr" datatype="checkbox">位置</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>
+		<field field="mtrlid" mapper="u_mattress_mx_mtrl.mtrl_price" ddd="ddd_mtrl_price">物料</field>
+		<field field="qty" datatype="number">数量/长度</field>
+		<field field="price" datatype="number">
+			物料
+			单价
+		</field>
+		<field field="priceunit">单位</field>
+		<field field="shrinkage" datatype="number">收缩率</field>
+		<field field="gram_weight" datatype="number">克重</field>
+		<field field="cloth_width" datatype="number">幅宽</field>
+		<field field="if_inputqty" datatype="checkbox">
+			固定
+			厚度?
+		</field>
+		<field field="if_areaprice" datatype="checkbox">
+			按面积
+			单价?
+		</field>
+		<field field="costamt" datatype="number">
+			成本
+			金额
+		</field>
+		<field field="formula">
+			金额文本
+			公式
+		</field>
+		<field field="replace_formula">
+			金额数字
+			公式
+		</field>
+		<field field="useqty" datatype="number">清单用量</field>
+		<field field="useformula">
+			用量文本
+			公式
+		</field>
+		<field field="replace_useformula">
+			用量数字
+			公式
+		</field>
+		<field field="gydscrp">工艺填写说明</field>
+	</displayfields>
+</select>

+ 3 - 4
JLHHJSvr/Excutor/CommonDynamicSelectExcutor.cs

@@ -410,7 +410,7 @@ namespace JLHHJSvr.Excutor
             {
                 throw new NotImplementedException("未支持DISTINCT");
             }
-            /*if (uncomputefields.Count > 0)
+            if (uncomputefields.Count > 0)
             {
                 // 多次循环,防因嵌套解析失败
                 var checkcnt = uncomputefields.Count;
@@ -479,7 +479,7 @@ namespace JLHHJSvr.Excutor
                 {
                     throw new LJCommonException($"解析计算列失败:[{string.Join(",", uncomputefields.Keys)}]");
                 }
-            }*/
+            }
             if (!string.IsNullOrEmpty(request.orderstr?.Trim()))
             {
                 var orderArr = request.orderstr.Split(',');
@@ -511,8 +511,7 @@ namespace JLHHJSvr.Excutor
                 }
                 orderstr = string.Join(",", orderlist);
             }
-            var outputFields = string.Join(",", parseResult.selectFieldsDic.Keys);
-            var mergesql = SqlStrHelper.BuildSelectStr(selectstr, ref outputFields, wherestr, orderstr, request.pageindex, request.pagesize);
+            var mergesql = SqlStrHelper.BuildSelectStrL1(parseResult, string.Join(",", parseResult.selectFieldsDic.Keys), wherestr, orderstr, request.pageindex, request.pagesize);
             cmd.CommandText = mergesql;
             cmd.CommandType = CommandType.Text;
             cmd.Parameters.Clear();