Bladeren bron

业务后台:1、更新主副规格逻辑;2、新增删除L1清单

chen_yjin 6 maanden geleden
bovenliggende
commit
fed793b0fa

+ 3 - 3
JLHHJSvr/Com/GetERPMtrlTypeList.cs

@@ -16,12 +16,12 @@ namespace JLHHJSvr.Com
         }
         public string token { get; set; }
         public int? parentid { get; set; }
-        public byte? RecurionType { get; set; }
+        public byte? RecurionType { get; set; } 
     }
 
     public sealed class GetERPMtrlTypeListResponse : LJResponse
     {
-        public List<u_mtrltype> DataList { get; set; }
-        public List<Recursion2> RecurionList { get; set; }
+        public List<u_mtrltype> list { get; set; }
+        public List<Recursion<u_mtrltype>> reList { get; set; }
     }
 }

+ 2 - 0
JLHHJSvr/Com/Model/Recursion.cs

@@ -7,6 +7,8 @@ namespace JLHHJSvr.Com.Model
 {
     public sealed class Recursion<T>
     {
+        public int value { get; set; }
+        public string text { get; set; }
         public T data { get; set; }
         public List<Recursion<T>> children { get; set; }
 

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

@@ -133,6 +133,10 @@ namespace JLHHJSvr.Com.Model
         public decimal? cubage { get; set; }
         public decimal? foreign_cost_bz { get; set; }
         public decimal? foreign_cost_dd { get; set; }
+        /// <summary>
+        /// 主规格id
+        /// </summary>
+        public int? parentid { get; set; }
 
         #region 其他
         public int? pricelistid { get; set; }

+ 4 - 0
JLHHJSvr/Com/SaveMattress.cs

@@ -25,6 +25,10 @@ namespace JLHHJSvr.Com
         /// 所有明细
         /// </summary>
         public List<u_mattress_mx_mtrl> mattressMx { get; set; }
+        /// <summary>
+        /// 副规格列表
+        /// </summary>
+        public List<u_mattress> subspecs { get; set; }
     }
 
     public sealed class SaveMattressResponse : LJResponse

+ 3 - 1
JLHHJSvr/DataStore/web_mattress.xml

@@ -79,7 +79,8 @@
 		cabinet_type,
 		area,
 		diameter,
-		cubage
+		cubage,
+		parentid
 
 		From u_mattress
 	</selectstr>
@@ -117,6 +118,7 @@
 	</orderstr>
 	<displayfields>
 		<field field="pid" compute="getrow()">序</field>
+		<field field="mattresscode">报价唯一码</field>
 		<field field="xd_flag" datatype="checkbox">下单</field>
 		<field field="js1_flag" datatype="checkbox">产品补充审核</field>
 		<field field="flag" datatype="checkbox">财务审核</field>

+ 26 - 0
JLHHJSvr/DataStore/web_mattress_subspecs.xml

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<select>
+	<selectstr>
+		SELECT
+		mattressid,
+		mattress_width,
+		mattress_length,
+		mattress_height,
+		parentid
+
+		From u_mattress
+	</selectstr>
+	<where>
+		<when notnull="@arg_mattressid">
+			u_mattress.parentid = @arg_mattressid
+		</when>
+	</where>
+	<orderstr>
+		mattressid DESC
+	</orderstr>
+	<displayfields>
+		<field field="mattress_width" datatype="integer">床垫宽/CM</field>
+		<field field="mattress_length" datatype="integer">床垫长/CM</field>
+		<field field="mattress_height" datatype="integer">床垫高/CM</field>
+	</displayfields>
+</select>

+ 98 - 0
JLHHJSvr/Excutor/DelMtrlPfExcutor.cs

@@ -0,0 +1,98 @@
+using System;
+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;
+using JLHHJSvr.Helper;
+using JLHHJSvr.LJException;
+using JLHHJSvr.LJFramework.Tools;
+using JLHHJSvr.Tools;
+using LJLib.DAL.SQL;
+using LJLib.Net.SPI.Server;
+using Newtonsoft.Json.Linq;
+
+namespace JLHHJSvr.Excutor
+{
+    internal sealed class DelMtrlPfExcutor : ExcutorBase<CreatMtrlPfRequest, CreatMtrlPfResponse>
+    {
+        Dictionary<string, object> replacements = new Dictionary<string, object>();
+
+        protected override void ExcuteInternal(CreatMtrlPfRequest request, object state, CreatMtrlPfResponse rslt)
+        {
+            var tokendata = BllHelper.GetToken(request.token);
+            if (tokendata == null)
+            {
+                rslt.ErrMsg = "会话已经中断,请重新登录";
+                return;
+            }
+            if (request.mattressid <= 0)
+            {
+                rslt.ErrMsg = "床垫id参数为空!";
+                return;
+            }
+
+            using (var con = new SqlConnection(GlobalVar.ConnectionString))
+            using (var cmd = con.CreateCommand())
+            {
+                con.Open();
+
+
+                var power91 = UserHelper.CheckFuncPower(cmd, tokendata.empid, 91);
+                if (!power91)
+                {
+                    throw new LJCommonException("你没有删除清单权限");
+                }
+
+                var mattress = new u_mattress();
+                if (DbSqlHelper.SelectOne(cmd, "u_mattress", "mattressid = @mattressid", new Dictionary<string, object>() { { "mattressid", request.mattressid } }, mattress, "erp_mtrlid, creatmtrlqd_flag") != 1)
+                {
+                    rslt.ErrMsg = "床垫报价单匹配失败";
+                    return;
+                }
+                if (mattress.erp_mtrlid <= 0)
+                {
+                    rslt.ErrMsg = "床垫清单还没匹配L1成品";
+                    return;
+                }
+                if (mattress.creatmtrlqd_flag == 0)
+                {
+                    rslt.ErrMsg = "床垫未生成erp清单,不能删除erp清单!";
+                    return;
+                }
+
+
+                using (var erp_con = new SqlConnection(BllHelper.GetERPConnectString(cmd)))
+                using (var erp_cmd = erp_con.CreateCommand())
+                {
+                    erp_con.Open();
+
+                    try
+                    {
+                        //删除原来的清单主表
+                        erp_cmd.CommandText = @"DELETE u_mtrl_pf WHERE mtrlid = @arg_mtrlid";
+                        erp_cmd.Parameters.Clear();
+                        erp_cmd.Parameters.AddWithValue("@arg_mtrlid", mattress.erp_mtrlid);
+                        erp_cmd.ExecuteNonQuery();
+
+                        //删除原来的清单明细表
+                        erp_cmd.CommandText = @"DELETE u_PrdPF WHERE mtrlid = @arg_mtrlid";
+                        erp_cmd.Parameters.Clear();
+                        erp_cmd.Parameters.AddWithValue("@arg_mtrlid", mattress.erp_mtrlid);
+                        erp_cmd.ExecuteNonQuery();
+
+                        erp_cmd.Transaction.Commit();
+                    }
+                    catch (Exception e)
+                    {
+                        erp_cmd.Transaction.Rollback();
+                        rslt.ErrMsg = e.ToString();
+                    }
+                }
+            }
+        }
+    }
+}

+ 14 - 75
JLHHJSvr/Excutor/GetERPMtrlTypeListExcutor.cs

@@ -7,11 +7,13 @@ using DirectService.Tools;
 using JLHHJSvr.BLL;
 using JLHHJSvr.Com;
 using JLHHJSvr.Com.Model;
+using JLHHJSvr.Helper;
 using JLHHJSvr.LJException;
 using JLHHJSvr.LJFramework.Tools;
 using JLHHJSvr.Tools;
 using LJLib.DAL.SQL;
 using LJLib.Net.SPI.Server;
+using Newtonsoft.Json.Linq;
 
 namespace JLHHJSvr.Excutor
 {
@@ -38,88 +40,25 @@ namespace JLHHJSvr.Excutor
 
                     var cusion = new menuRecursion();
 
-                    //var erpHelper = HelperBase.GetHelper<ERPHelper>(null);
+                    var erpHelper = HelperBase.GetHelper<ERPHelper>(null);
 
-                    //var list = erpHelper.GetERPList<u_mtrltype>("GetL1Mtrltype", null);
+                    var _params = new JObject();
+                    _params.Add("parentid", request.parentid);
+                    _params.Add("RecurionType", request.RecurionType);
 
-                    //var pk = new PkName()
-                    //{
-                    //    MainField = "mtrltypeid",
-                    //    MainName = "mtrltype",
-                    //    ParentField = "parentid"
-                    //};
+                    var list = erpHelper.GetERPList<u_mtrltype>("GetL1Mtrltype", null);
 
-                    //ListEx.GetRecursions(list, pk, out var resultList);
-
-                    //rslt.reList = resultList;
-
-
-                    string MainField = "mtrltypeid";
-                    string MainName = "mtrltype";
-                    string ParentField = "parentid";
-
-                    //查看有权限类别的物料
-                    //var mtrltypeids = UserHelper.ParsePowerStr(cmd, tokendata.empid, "mtrltypestr");
-
-                    var selectStr = @"
-                    SELECT
-                        u_mtrltype.mtrltypeid,
-                        u_mtrltype.mtrltype,
-                        u_mtrltype.handtype,
-                        u_mtrltype.sonflag,
-                        u_mtrltype.parentid,
-                        u_mtrltype.mtrlprp,
-                        u_mtrltype.typecode,
-                        u_mtrltype.typecodestr
-                    FROM u_mtrltype";
-                    var outputFields = "mtrltypeid,mtrltype,handtype,sonflag,parentid,mtrlprp,typecode,typecodestr";
-
-                    var whereList = new List<string>();
-                    if (request.parentid != null)
+                    var pk = new PkName()
                     {
-                        whereList.Add("u_mtrltype.parentid = " + request.parentid.ToString());
-                    }
-                    //if (!string.IsNullOrEmpty(mtrltypeids))
-                    //{
-                    //    whereList.Add($"u_mtrldef.mtrltypeid IN {mtrltypeids}");
-                    //}
+                        MainField = "mtrltypeid",
+                        MainName = "mtrltype",
+                        ParentField = "parentid"
+                    };
 
-                    List<u_mtrltype> DataList = new List<u_mtrltype>();
-                    DbSqlHelper.SelectJoin(erp_cmd, selectStr, ListEx.GetWhereStr(whereList), null, null, outputFields, 0, 0, DataList);
+                    ListEx.GetRecursions(list, pk, out var resultList);
 
+                    rslt.reList = resultList;
 
-                    if (request.RecurionType == 1)
-                    {
-                        // 转换成层级结构
-
-                        var allList = DataList;
-                        var List0 = allList.Where(t => t.parentid == 0).ToList();
-                        rslt.RecurionList = new List<Recursion2>();
-                        var RecurionList = new List<Recursion2>();
-
-                        foreach (var mx in List0)
-                        {
-                            var curion = new Recursion2() { text = mx.mtrltype, value = mx.mtrltypeid.Value };
-                            RecurionList.Add(curion);
-                        }
-
-                        var pk = new PkName()
-                        {
-                            MainField = MainField,
-                            MainName = MainName,
-                            ParentField = ParentField
-                        };
-                        var idList = new List<int>();
-                        idList.Add(0);
-                        cusion.GetRecursions(DataList, pk, RecurionList, idList);
-                        rslt.RecurionList = RecurionList;
-                    }
-                    else
-                    {
-                        // 完成列出数据
-                        rslt.DataList = new List<u_mtrltype>();
-                        rslt.DataList = DataList;
-                    }
                 }
             }
         }

+ 2 - 1
JLHHJSvr/Excutor/ReCalculateNoAuditExcutor.cs

@@ -65,10 +65,11 @@ namespace JLHHJSvr.Excutor
                         {
                             var mattress_temp = helper.GetMattress(mattress.mattressid);
                             var mxList = helper.GetMattressMxMtrl(mattress.mattressid);
+                            var subspecsList = helper.GetMattressSubspecs(mattress.mattressid);
 
                             helper.CalCulateFormula(mattress_temp, mxList);
 
-                            helper.SaveMattress(mattress_temp, mxList);
+                            helper.SaveMattress(mattress_temp, mxList, subspecsList);
                         }
                         cmd.Transaction.Commit();
                     }

+ 1 - 1
JLHHJSvr/Excutor/SaveMattressExcutor.cs

@@ -81,7 +81,7 @@ namespace JLHHJSvr.Excutor
 
                     try
                     {
-                        helper.SaveMattress(request.mattress, request.mattressMx);
+                        helper.SaveMattress(request.mattress, request.mattressMx, request.subspecs);
 
                         if(request.mattress.copy_id != null && request.mattress.copy_id > 0)
                         {

+ 2 - 0
JLHHJSvr/Excutor/SaveMattressInterfaceExcutor.cs

@@ -69,6 +69,8 @@ namespace JLHHJSvr.Excutor
                     try
                     {
                         interfaceHelper.SaveMattressInterface(request.mattress, request.interfaceList, request.qdList);
+
+                        cmd.Transaction.Commit();
                     }
                     catch (Exception e)
                     {

+ 1 - 0
JLHHJSvr/GlobalVar/GlobalVar.cs

@@ -207,6 +207,7 @@ namespace JLHHJSvr
                 excutorManager.AddMap("RefreshMattressInterface", typeof(RefreshMattressInterfaceRequest), new RefreshMattressInterfaceExcutor());// 刷新床垫配置清单
                 excutorManager.AddMap("RefreshMattressInterfaceQd", typeof(RefreshMattressInterfaceQdRequest), new RefreshMattressInterfaceQdExcutor());// 刷新床垫清单
                 excutorManager.AddMap("CreatMtrlPf", typeof(CreatMtrlPfRequest), new CreatMtrlPfExcutor());// 生成L1清单
+                excutorManager.AddMap("DelMtrlPf", typeof(CreatMtrlPfRequest), new DelMtrlPfExcutor());// 删除L1清单
 
                 excutorManager.AddMap("GetERPMtrldefList", typeof(GetERPMtrldefListRequest), new GetERPMtrldefListExcutor());// 获取ERP物料资料
                 excutorManager.AddMap("GetERPConfigureList", typeof(GetERPConfigureListRequest), new GetERPConfigureListExcutor());// 获取ERP配置资料

+ 3 - 3
JLHHJSvr/Helper/InterfaceHelper.cs

@@ -54,7 +54,7 @@ namespace JLHHJSvr.Helper
             DbSqlHelper.Update(cmd, mattress, "erp_mtrlid,erp_mtrltypeid,erp_mtrlcode,erp_mtrlname,erp_mtrlmode,erp_mtrltype,erp_mtrlunit,erp_mtrlengname,erp_configcodetype,old_mtrlname");
 
             // 保存接口数据
-            var mattressHelper = GetHelper<MattressHelper>(cmd);
+            var mattressHelper = GetHelper<MattressHelper>(cmd, new HelperBase.Context() { tokendata = context.tokendata });
             mattressHelper.SaveMattressInterface(mattress.mattressid, mxlist, qdlist);
         }
 
@@ -220,7 +220,7 @@ namespace JLHHJSvr.Helper
                 throw new LJCommonException("床垫id有误");
             }
 
-            var mattressHelper = GetHelper<MattressHelper>(cmd);
+            var mattressHelper = GetHelper<MattressHelper>(cmd, new HelperBase.Context() { tokendata = context.tokendata });
             var mattress = mattressHelper.GetMattress(mattressid);
 
             var mattress_type = new u_mattress_type() { mattresstypeid = mattress.mattresstypeid };
@@ -1088,7 +1088,7 @@ namespace JLHHJSvr.Helper
                 throw new LJCommonException("床垫id有误");
             }
 
-            var mattressHelper = GetHelper<MattressHelper>(cmd);
+            var mattressHelper = GetHelper<MattressHelper>(cmd, new HelperBase.Context() { tokendata = context.tokendata });
             var mattress = mattressHelper.GetMattress(mattressid);
 
             var mattress_type = new u_mattress_type() { mattresstypeid = mattress.mattresstypeid };

File diff suppressed because it is too large
+ 212 - 71
JLHHJSvr/Helper/MattressHelper.cs


+ 2 - 0
JLHHJSvr/Tools/ListEx.cs

@@ -73,6 +73,8 @@ namespace DirectService.Tools
                 {
                     data = parent
                 };
+                recursion.value = Convert.ToInt32(parent.GetType().GetProperty(pkName.MainField).GetValue(parent));
+                recursion.text = Convert.ToString(parent.GetType().GetProperty(pkName.MainName).GetValue(parent));
 
                 nodeDict[value] = recursion;
             }

+ 69 - 10
JLHHJSvr/Tools/ObjectHelper.cs

@@ -1,25 +1,84 @@
-using System;
-using System.Collections.Generic;
+using System;
+using System.Collections;
+using System.Diagnostics;
 using System.Linq;
 using System.Reflection;
-using System.Text;
 
 namespace DirectService.Tools
 {
     public class ObjectHelper
     {
-        //深度复制
+        /// <summary>
+        /// 深度复制
+        /// </summary>
         public static T DeepCopy<T>(T obj)
         {
-            //如果是字符串或值类型则直接返回
-            if (obj is string || obj.GetType().IsValueType) return obj;
+            return Copy(obj, true);
+        }
+        /// <summary>
+        /// 浅复制
+        /// </summary>
+        public static T ShallowCopy<T>(T obj)
+        {
+            return Copy(obj);
+        }
 
+        private static T Copy<T>(T obj, bool deep = false)
+        {
+            //如果是字符串或值类型则直接返回
+            if (obj == null || obj.GetType().IsValueType || obj is string)
+            {
+                return obj;
+            }
             object retval = Activator.CreateInstance(obj.GetType());
-            FieldInfo[] fields = obj.GetType().GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static);
-            foreach (FieldInfo field in fields)
+
+            if (obj is IDictionary)
+            {
+                var oriDic = obj as IDictionary;
+                var newDic = retval as IDictionary;
+                var enumerator = oriDic.GetEnumerator();
+                while (enumerator.MoveNext())
+                {
+                    newDic.Add(enumerator.Key, enumerator.Value);
+                }
+            }
+            else if (obj is IList)
+            {
+                var oriList = obj as IList;
+                var newList = retval as IList;
+                foreach (var item in oriList)
+                {
+                    newList.Add(item);
+                }
+            }
+            else
             {
-                try { field.SetValue(retval, DeepCopy(field.GetValue(obj))); }
-                catch { }
+                var fields = obj.GetType().GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static).ToList();
+                var type = obj.GetType();
+                while ((type = type.BaseType) != typeof(object))
+                {
+                    fields.AddRange(type.GetFields(BindingFlags.NonPublic | BindingFlags.Instance));
+                }
+                foreach (FieldInfo field in fields)
+                {
+                    if (field.IsLiteral)
+                    {
+                        continue;
+                    }
+                    try
+                    {
+                        var value = field.GetValue(obj);
+                        if (deep)
+                        {
+                            value = Copy(value, true);
+                        }
+                        field.SetValue(retval, value);
+                    }
+                    catch (Exception ex)
+                    {
+                        Trace.Write(string.Format("{0}\r\n属性:{1}\r\n异常:{2}", obj.GetType().FullName, field.Name, ex));
+                    }
+                }
             }
             return (T)retval;
         }