Jelajahi Sumber

业务后台:修改主副规格逻辑

chen_yjin 3 bulan lalu
induk
melakukan
95f5473a41

+ 3 - 0
JLHHJSvr/DataStore/web_bednet_define.xml

@@ -160,6 +160,9 @@
 		<when notnull="@arg_search">
 			u_bednet.bednetcode LIKE '%' + @arg_search + '%' OR u_bednet.bednetname LIKE '%' + @arg_search + '%'
 		</when>
+		<when notnull="@arg_bednettypeid">
+			u_bednet.bednettypeid = @arg_bednettypeid
+		</when>
 	</where>
 	<orderstr>
 		bednetid DESC

+ 13 - 2
JLHHJSvr/DataStore/web_mattress.xml

@@ -2,7 +2,7 @@
 <select>
 	<selectstr>
 		SELECT
-		mattressid,
+		u_mattress.mattressid,
 		mattressname,
 		deptid,
 		mattresstypeid,
@@ -80,9 +80,20 @@
 		area,
 		diameter,
 		cubage,
-		parentid
+		parentid,
+		vv_mattress.child_count
 
 		From u_mattress
+		LEFT JOIN (
+			SELECT
+				um.mattressid,
+				COUNT(um2.mattressid) AS child_count
+			FROM
+				u_mattress um
+			LEFT JOIN
+				u_mattress um2 ON um.mattressid = um2.parentid
+			GROUP BY um.mattressid
+		) AS vv_mattress on vv_mattress.mattressid = u_mattress.mattressid
 	</selectstr>
 	<where>
 		<when notnull="@arg_mattressid">

+ 43 - 8
JLHHJSvr/Excutor/CommonDynamicSelectExcutor.cs

@@ -323,7 +323,7 @@ namespace JLHHJSvr.Excutor
                             }
                             else if (attrname == "notempty")
                             {
-                                if (string.IsNullOrEmpty(attrval))
+                                if (valjtoken == null || string.IsNullOrEmpty(valjtoken.ToString()))
                                 {
                                     match = false;
                                     break;
@@ -348,7 +348,7 @@ namespace JLHHJSvr.Excutor
                                 }
                                 if (!queryParams.ContainsKey(attrnameVal))
                                 {
-                                    throw new NotImplementedException(attr.ToString());
+                                    throw new ArgumentException("queryparams." + attrnameVal);
                                 }
                                 attrnameVal = queryParams[attrnameVal].ToString();
                                 if (string.Equals(attrnameVal, attrval) != !ifnot)
@@ -538,7 +538,25 @@ namespace JLHHJSvr.Excutor
                     }
                     else
                     {
-                        cmd.Parameters.AddWithValue("@" + item.Key, item.Value.ToString());
+                        object pval = null;
+                        switch (item.Value.Type)
+                        {
+                            case JTokenType.Array:
+                                continue;
+                            case JTokenType.Integer:
+                                pval = Convert.ToInt64(item.Value);
+                                break;
+                            case JTokenType.Float:
+                                pval = Convert.ToDecimal(item.Value);
+                                break;
+                            case JTokenType.Boolean:
+                                pval = Convert.ToBoolean(item.Value);
+                                break;
+                            default:
+                                pval = item.Value.ToString();
+                                break;
+                        }
+                        cmd.Parameters.AddWithValue("@" + item.Key, pval);
                     }
                 }
             }
@@ -580,7 +598,7 @@ namespace JLHHJSvr.Excutor
                         }
                         else if (dbval is string)
                         {
-                            row.Add(p, (dbval as string).Trim());
+                            row.Add(p, (dbval as string).TrimEnd());
                         }
                         else if (dbval is DateTime)
                         {
@@ -588,7 +606,7 @@ namespace JLHHJSvr.Excutor
                         }
                         else
                         {
-                            row.Add(p, dbval.ToString());
+                            row.Add(p, JToken.FromObject(dbval));
                         }
                     }
                     rslt.datatable.Add(row);
@@ -710,19 +728,36 @@ namespace JLHHJSvr.Excutor
                         if (string.IsNullOrEmpty(mapper))
                         {
                             mapper = RemoveAS(dbField);
+                            if (mapper.StartsWith("'") || !Regex.IsMatch(mapper, "[a-zA-Z]"))
+                            {
+                                throw new LJCommonException($"列{col["field"]}对于常量字段,无法自动匹配Mapper,请直接指定具体Mapper");
+                            }
                         }
                         var mappername = mapper;
                         if (mappername.Contains("."))
                         {
                             mappername = mappername.Substring(mappername.IndexOf(".") + 1);
                         }
-                        if (!File.Exists(rootPath + _mapperAppend + mappername + ".xml"))
+                        var mapperMatched = false;
+                        mapperMatched = File.Exists(rootPath + _mapperAppend + mappername + ".xml");
+                        if (!mapperMatched)
                         {
                             mappername = mapper.Replace(".", "_");
-                            if (!File.Exists(rootPath + _mapperAppend + mappername + ".xml"))
+                            mapperMatched = File.Exists(rootPath + _mapperAppend + mappername + ".xml");
+                        }
+                        if (!mapperMatched && col.ContainsKey("table"))
+                        {
+                            mappername = mapper;
+                            if (mappername.Contains("."))
                             {
-                                throw new LJCommonException("未匹配到mapper对应的xml:" + mapper);
+                                mappername = mappername.Substring(mappername.IndexOf(".") + 1);
                             }
+                            mappername = col["table"] + "_" + mappername;
+                            mapperMatched = File.Exists(rootPath + _mapperAppend + mappername + ".xml");
+                        }
+                        if (!mapperMatched)
+                        {
+                            throw new LJCommonException($"列{col["field"]}未匹配到mapper对应的xml:{mapper}");
                         }
                         var mapperreq = new CommonDynamicSelectRequest
                         {

+ 1 - 1
JLHHJSvr/Excutor/LoginExcutor.cs

@@ -67,7 +67,7 @@ namespace JLHHJSvr.Excutor
                 userid = stUser.empid,
                 username = stUser.username,
                 usermode = stUser.usermode
-        };
+            };
             BllHelper.SetToken(token,tokenData);
         }
     }

+ 102 - 20
JLHHJSvr/Excutor/SaveMattressAuditingExcutor.cs

@@ -36,6 +36,32 @@ namespace JLHHJSvr.Excutor
                 {
                     try
                     {
+                        // 只处理主规格
+                        Dictionary<int, u_mattress> mattressDic = new Dictionary<int, u_mattress>();
+
+                        foreach (int itemid in request.mattressids)
+                        {
+                            var mattressInfo = new u_mattress() { mattressid = itemid };
+                            if (DbSqlHelper.SelectOne(cmd, mattressInfo, "flag, xd_flag, mattresscode, parentid") != 1)
+                            {
+                                rslt.ErrMsg = "查找报价单据失败:" + itemid;
+                                return;
+                            }
+                            if (mattressInfo.parentid > 0)
+                            {
+                                mattressInfo = new u_mattress() { mattressid = mattressInfo.parentid.Value };
+                                if (DbSqlHelper.SelectOne(cmd, mattressInfo, "flag, xd_flag, parentid") != 1)
+                                {
+                                    rslt.ErrMsg = "查找报价单据失败:" + itemid;
+                                    return;
+                                }
+                            }
+
+                            if (!mattressDic.ContainsKey(mattressInfo.mattressid))
+                            {
+                                mattressDic.Add(mattressInfo.mattressid, mattressInfo);
+                            }
+                        }
 
                         if (request.xd_flag != null)
                         {
@@ -56,25 +82,20 @@ namespace JLHHJSvr.Excutor
 
                             var updateField = "xd_flag, xd_auditingrep, xd_auditingdate";
 
-                            foreach (int itemid in request.mattressids)
+                            foreach (var item in mattressDic)
                             {
-                                var mattressInfo = new u_mattress() { mattressid = itemid };
-                                if (DbSqlHelper.SelectOne(cmd, mattressInfo, "flag, xd_flag") != 1)
-                                {
-                                    rslt.ErrMsg = "查找报价单据失败:" + itemid;
-                                    return;
-                                }
+                                var mattressInfo = item.Value;
 
                                 if (request.xd_flag == 1)
                                 {
                                     if (mattressInfo.flag == 1)
                                     {
-                                        rslt.ErrMsg = "床垫已审核,不能业务下单!(" + itemid + ")";
+                                        rslt.ErrMsg = "床垫已审核,不能业务下单!(" + mattressInfo.mattresscode + ")";
                                         return;
                                     }
                                     if (mattressInfo.xd_flag == 1)
                                     {
-                                        rslt.ErrMsg = "床垫已完成业务下单(" + itemid + ")";
+                                        rslt.ErrMsg = "床垫已完成业务下单(" + mattressInfo.mattresscode + ")";
                                         return;
                                     }
 
@@ -88,17 +109,18 @@ namespace JLHHJSvr.Excutor
                                         throw new LJCommonException("因网络或其它原因,【业务下单/取消】操作失败!");
                                     }
 
+                                    UpdateChildState(cmd, mattressInfo, "xd_flag", 1);
                                 }
                                 else
                                 {
                                     if (mattressInfo.js1_flag == 1)
                                     {
-                                        rslt.ErrMsg = "已产品补充审核,不能取消下单!(" + itemid + ")";
+                                        rslt.ErrMsg = "已产品补充审核,不能取消下单!(" + mattressInfo.mattresscode + ")";
                                         return;
                                     }
                                     if (mattressInfo.xd_flag == 0)
                                     {
-                                        rslt.ErrMsg = "未进行业务下单,不能取消下单!(" + itemid + ")";
+                                        rslt.ErrMsg = "未进行业务下单,不能取消下单!(" + mattressInfo.mattresscode + ")";
                                         return;
                                     }
 
@@ -110,6 +132,8 @@ namespace JLHHJSvr.Excutor
                                     {
                                         throw new LJCommonException("因网络或其它原因,【业务下单/取消】操作失败!");
                                     }
+
+                                    UpdateChildState(cmd, mattressInfo, "xd_flag", 0);
                                 }
                             }
 
@@ -132,20 +156,15 @@ namespace JLHHJSvr.Excutor
 
                             var updateField = "flag, auditingrep, auditingdate";
 
-                            foreach (int itemid in request.mattressids)
+                            foreach (var item in mattressDic)
                             {
-                                var mattressInfo = new u_mattress() { mattressid = itemid };
-                                if (DbSqlHelper.SelectOne(cmd, mattressInfo, "flag") != 1)
-                                {
-                                    rslt.ErrMsg = "查找报价单据失败:" + itemid;
-                                    return;
-                                }
+                                var mattressInfo = item.Value;
 
                                 if (request.flag == 1)
                                 {
                                     if (mattressInfo.flag == 1)
                                     {
-                                        rslt.ErrMsg = "床报价已完成审核(" + itemid + ")";
+                                        rslt.ErrMsg = "床报价已完成审核(" + mattressInfo.mattresscode + ")";
                                         return;
                                     }
 
@@ -158,12 +177,13 @@ namespace JLHHJSvr.Excutor
                                         throw new LJCommonException("因网络或其它原因,【审核消】操作失败!");
                                     }
 
+                                    UpdateChildState(cmd, mattressInfo, "flag", 1);
                                 }
                                 else
                                 {
                                     if (mattressInfo.flag == 0)
                                     {
-                                        rslt.ErrMsg = "床报价已完成撤销审核!(" + itemid + ")";
+                                        rslt.ErrMsg = "床报价已完成撤销审核!(" + mattressInfo.mattresscode + ")";
                                         return;
                                     }
 
@@ -175,6 +195,8 @@ namespace JLHHJSvr.Excutor
                                     {
                                         throw new LJCommonException("因网络或其它原因,【撤销审核】操作失败!");
                                     }
+
+                                    UpdateChildState(cmd, mattressInfo, "flag", 0);
                                 }
                             }
 
@@ -193,5 +215,65 @@ namespace JLHHJSvr.Excutor
                 }
             }
         }
+
+        public void UpdateChildState(SqlCommand cmd, u_mattress mattress, string fieldStr, int value)
+        {
+            var updateStr = "";
+            var rep = "";
+            DateTime? date = null;
+            if (fieldStr == "xd_flag")
+            {
+                if (mattress.auditingdate.HasValue)
+                {
+                    updateStr = @"
+                        xd_auditingrep = @rep,
+                        xd_auditingdate = @date
+                    ";
+                    rep = mattress.xd_auditingrep;
+                    date = mattress.xd_auditingdate;
+                }
+                else
+                {
+                    updateStr = @"
+                        xd_auditingrep = @rep,
+                        xd_auditingdate = null
+                    ";
+                    rep = mattress.xd_auditingrep;
+                }
+            } else
+            {
+                if (mattress.auditingdate.HasValue)
+                {
+                    updateStr = @"
+                        auditingrep = @rep,
+                        auditingdate = @date
+                    ";
+                    rep = mattress.auditingrep;
+                    date = mattress.auditingdate;
+                }
+                else
+                {
+                    updateStr = @"
+                        auditingrep = @rep,
+                        auditingdate = null
+                    ";
+                    rep = mattress.auditingrep;
+                }
+            }
+            cmd.CommandText = @"UPDATE u_mattress
+                                SET " + fieldStr + @" = @value, 
+                                    " + updateStr + @"
+                                FROM u_mattress
+                                WHERE u_mattress.parentid = @mattressid";
+            cmd.Parameters.Clear();
+            cmd.Parameters.AddWithValue("@mattressid", mattress.mattressid);
+            cmd.Parameters.AddWithValue("@value", value);
+            cmd.Parameters.AddWithValue("@rep", rep);
+            if (date.HasValue)
+            {
+                cmd.Parameters.AddWithValue("@date", date);
+            }
+            cmd.ExecuteNonQuery();
+        }
     }
 }

+ 136 - 23
JLHHJSvr/Excutor/SaveMattressExcutor.cs

@@ -3,6 +3,7 @@ using System.Collections.Generic;
 using System.Data.SqlClient;
 using System.Linq;
 using System.Text;
+using DirectService.Tools;
 using JLHHJSvr.BLL;
 using JLHHJSvr.Com;
 using JLHHJSvr.Com.Model;
@@ -60,46 +61,158 @@ namespace JLHHJSvr.Excutor
 
                     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;
-                    }
+                    //try
+                    //{
+                    //    helper.CalCulateFormula(request.mattress, request.mattressMx);
+                    //}
+                    //catch (Exception e)
+                    //{
+                    //    rslt.message = e.Message;
+                    //}
+
+                    //var mxmessageList = request.mattressMx.Where(item => !string.IsNullOrEmpty(item.message)).ToList();
+                    //if (mxmessageList.Any())
+                    //{
+                    //    rslt.mxmessage = new List<string>();
+                    //    foreach (var mx in mxmessageList)
+                    //    {
+                    //        rslt.mxmessage.Add(mx.message);
+                    //    }
+                    //}
+
+                    //try
+                    //{
+                    //    helper.SaveMattress(request.mattress, request.mattressMx);
 
-                    var mxmessageList = request.mattressMx.Where(item => !string.IsNullOrEmpty(item.message)).ToList();
-                    if (mxmessageList.Any())
+                    //    if(request.mattress.copy_id != null && request.mattress.copy_id > 0)
+                    //    {
+                    //        helper.CopyMattressInterface(request.mattress.copy_id.Value, request.mattress.mattressid);
+                    //    }
+                        
+                    //    cmd.Transaction.Commit();
+
+                    //    rslt.mattressid = request.mattress.mattressid;
+                    //    rslt.mattresscode = request.mattress.mattresscode;
+                    //}
+                    //catch (Exception e)
+                    //{
+                    //    cmd.Transaction.Rollback();
+                    //    rslt.ErrMsg = e.Message;
+                    //}
+
+                    try
                     {
                         rslt.mxmessage = new List<string>();
-                        foreach (var mx in mxmessageList)
+
+                        rslt.mxmessage = toSaveMattress(cmd, request.mattress, request.mattressMx, tokendata);
+
+                        rslt.mattressid = request.mattress.mattressid;
+                        rslt.mattresscode = request.mattress.mattresscode;
+
+                        var subspecsList = helper.GetMattressSubspecs(request.mattress.mattressid);
+
+                        if (subspecsList.Count > 0)
                         {
-                            rslt.mxmessage.Add(mx.message);
-                        }
-                    }
+                            foreach(var submx in subspecsList)
+                            {
+                                // 删除副规格明细
+                                cmd.CommandText = @"DELETE u_mattress_mx_mtrl WHERE mattressid = @mattressid";
+                                cmd.Parameters.Clear();
+                                cmd.Parameters.AddWithValue("@mattressid", submx.mattressid);
+                                cmd.ExecuteNonQuery();
 
-                    try
-                    {
-                        helper.SaveMattress(request.mattress, request.mattressMx, request.subspecs);
+                                // 删除副规格
+                                cmd.CommandText = @"DELETE u_mattress WHERE mattressid = @mattressid";
+                                cmd.Parameters.Clear();
+                                cmd.Parameters.AddWithValue("@mattressid", submx.mattressid);
+                                cmd.ExecuteNonQuery();
+                            }
+                        }
 
-                        if(request.mattress.copy_id != null && request.mattress.copy_id > 0)
+                        if (request.subspecs != null && request.subspecs.Count > 0)
                         {
-                            helper.CopyMattressInterface(request.mattress.copy_id.Value, request.mattress.mattressid);
+                            // 副规格
+                            foreach (var submx in request.subspecs)
+                            {
+                                var _mattress = ObjectHelper.DeepCopy(request.mattress);
+                                _mattress.parentid = request.mattress.mattressid;
+                                _mattress.mattressid = 0;
+                                _mattress.mattresscode = "";
+                                _mattress.mattress_width = submx.mattress_width;
+                                _mattress.mattress_length = submx.mattress_length;
+                                _mattress.mattress_height = submx.mattress_height;
+
+                                var _mattressMx = new List<u_mattress_mx_mtrl>();
+                                if (request.mattressMx != null && request.mattressMx.Any())
+                                {
+                                    foreach (var item in request.mattressMx)
+                                    {
+                                        item.mattressid = _mattress.mattressid;
+                                        item.mattressmxid = 0;
+                                        item.message = "";
+
+                                        _mattressMx.Add(item);
+                                    }
+                                }
+
+                                toSaveMattress(cmd, _mattress, _mattressMx, tokendata);
+                            }
                         }
-                        
-                        cmd.Transaction.Commit();
 
-                        rslt.mattressid = request.mattress.mattressid;
-                        rslt.mattresscode = request.mattress.mattresscode;
+                        cmd.Transaction.Commit();
                     }
                     catch (Exception e)
                     {
                         cmd.Transaction.Rollback();
                         rslt.ErrMsg = e.Message;
                     }
+
+
+
                 }
             }
         }
+
+        public List<string> toSaveMattress(SqlCommand cmd, u_mattress mattress, List<u_mattress_mx_mtrl> mattressMx, TokenData tokendata)
+        {
+            var helper = HelperBase.GetHelper<MattressHelper>(cmd, new HelperBase.Context() { tokendata = tokendata });
+
+            List<string> message = new List<string>();
+
+            try
+            {
+                helper.CalCulateFormula(mattress, mattressMx);
+            }
+            catch (Exception e)
+            {
+                throw new LJCommonException(e.Message);
+            }
+
+            var mxmessageList = mattressMx.Where(item => !string.IsNullOrEmpty(item.message)).ToList();
+            if (mxmessageList.Any())
+            {
+                foreach (var mx in mxmessageList)
+                {
+                    message.Add(mx.message);
+                }
+            }
+
+            try
+            {
+                helper.SaveMattress(mattress, mattressMx);
+
+                if (mattress.copy_id != null && mattress.copy_id > 0)
+                {
+                    helper.CopyMattressInterface(mattress.copy_id.Value, mattress.mattressid);
+                }
+
+            }
+            catch (Exception e)
+            {
+                throw new LJCommonException(e.Message);
+            }
+
+            return message;
+        }
     }
 }

File diff ditekan karena terlalu besar
+ 17 - 31
JLHHJSvr/Helper/MattressHelper.cs