MY il y a 5 mois
Parent
commit
7f05a68be5

+ 2 - 7
JLHHJSvr/BLL/HelperBase.cs

@@ -2,6 +2,7 @@
 using System.Collections.Generic;
 using System.Data.SqlClient;
 using System.Linq;
+using System.Runtime.CompilerServices;
 using System.Text;
 using System.Threading.Tasks;
 
@@ -17,14 +18,8 @@ namespace JLHHJSvr.BLL
         /// 预留的上下文
         /// </summary>
         public Context context { get; set; }
-        public static T GetHelper<T>(SqlCommand cmd) where T : HelperBase, new()
-        {
-            var rslt = new T();
-            rslt.cmd = cmd;
-            return rslt;
-        }
 
-        public static T GetHelper<T>(SqlCommand cmd, Context context) where T : HelperBase, new()
+        public static T GetHelper<T>(SqlCommand cmd, Context context = null) where T : HelperBase, new()
         {
             var rslt = new T();
             rslt.cmd = cmd;

+ 272 - 0
JLHHJSvr/Helper/InterfaceHelper.cs

@@ -0,0 +1,272 @@
+using JLHHJSvr.BLL;
+using JLHHJSvr.Com;
+using JLHHJSvr.Com.Model;
+using JLHHJSvr.LJException;
+using JLHHJSvr.Tools;
+using LJLib.DAL.SQL;
+using System;
+using System.Collections.Generic;
+using System.Data.SqlClient;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace JLHHJSvr.Helper
+{
+    internal class InterfaceHelper : HelperBase
+    {
+        /// <summary>
+        /// 数据库连接
+        /// </summary>
+        public SqlCommand erp_cmd { get; set; }
+
+        /// <summary>
+        /// 床垫接口-保存
+        /// </summary>
+        /// <param name="mattress"></param>
+        /// <param name="mxlist"></param>
+        /// <param name="qdlist"></param>
+        /// <exception cref="LJCommonException"></exception>
+        public void SaveMattressInterface(u_mattress mattress, List<u_mattress_interface> mxlist, List<u_mattress_interface_qd> qdlist)
+        {
+            if(mattress.mattressid <= 0)
+            {
+                throw new LJCommonException("错误的床垫id");
+            }
+
+            AutoSetMtrlName(mattress, mxlist);
+
+            AutoInit.AutoInitS(cmd, mattress);
+
+            if(string.IsNullOrEmpty(mattress.erp_mtrlcode))
+            {
+                throw new LJCommonException("请输入物料名称!");
+            }
+
+            if (mattress.erp_mtrltypeid == null || mattress.erp_mtrltypeid <= 0)
+            {
+                throw new LJCommonException("请选择物料类别!");
+            }
+
+            if (mattress.erp_configcodetype == null || mattress.erp_configcodetype <= 0)
+            {
+                throw new LJCommonException("请选择配置类型!");
+            }
+
+            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);
+            mattressHelper.SaveMattressInterface(mattress.mattressid, mxlist, qdlist);
+        }
+
+        public void AutoSetMtrlName(u_mattress mattress,List<u_mattress_interface> mxlist)
+        {
+            string mtrltypename = string.Empty, mtrltypecode = string.Empty;
+            string mattresstypename = string.Empty, mattresstypecode = string.Empty;
+            string packtypename = string.Empty, packtypecode = string.Empty;
+            var materialCodes = new Dictionary<string, string>
+            {
+                { "两边单层", "21" },
+                { "两边直出", "23" },
+                { "三边加顶", "32" },
+                { "三边直出", "33" },
+                { "假三边", "34" },
+                { "拉假边", "3C" },
+                { "假三边加顶", "42" },
+                { "上下假三边", "44" },
+                { "四边双顶", "45" },
+                { "四边顶上顶", "46" },
+                { "四边假分体", "47" }
+            };
+
+            var mattressTypeCodes = new Dictionary<string, string>
+            {
+                { "袋装网", "P" },
+                { "拉丝网", "C" },
+                { "圆网", "B" }
+            };
+
+            var packTypeCodes = new Dictionary<string, string>
+            {
+                { "平压", "A" },
+                { "卷包", "B" }
+            };
+
+            foreach (var mx in mxlist)
+            {
+                if(mx.bj_pzname.IndexOf("床垫类别") > -1)
+                {
+                    mtrltypename = mx.bj_namemx;
+                    break;
+                }
+            }
+
+            foreach (var mx in mxlist)
+            {
+                if (mx.bj_pzname.IndexOf("床网") > -1)
+                {
+                    mattresstypename = mx.bj_namemx;
+                    break;
+                }
+            }
+
+            foreach (var mx in mxlist)
+            {
+                if (mx.bj_pzname.IndexOf("包装方式") > -1)
+                {
+                    packtypename = mx.bj_namemx;
+                    break;
+                }
+            }
+
+            mtrltypecode = materialCodes.ContainsKey(mtrltypename) ? materialCodes[mtrltypename] : "99";
+            mattresstypecode = mattressTypeCodes.ContainsKey(mtrltypename) ? mattressTypeCodes[mtrltypename] : "Z";
+            packtypecode = packTypeCodes.ContainsKey(mtrltypename) ? packTypeCodes[mtrltypename] : "J";
+
+            // 获取mxlist最后一项
+            if(mattress.mattressid > 0)
+            {
+                mattress.erp_mtrlname = new StringBuilder().Append(mtrltypecode).Append(mattresstypecode).Append(packtypecode).ToString();
+            }
+        }
+
+        /// <summary>
+        /// 导入清单
+        /// </summary>
+        /// <param name="mattressid"></param>
+        /// <exception cref="LJCommonException"></exception>
+        public void ImportMattressInterfaceList(int mattressid)
+        {
+            if(mattressid <= 0)
+            {
+                throw new LJCommonException("床垫id有误");
+            }
+
+            var mattressHelper = GetHelper<MattressHelper>(cmd);
+            var mattress = mattressHelper.GetMattress(mattressid);
+
+            var mattress_type = new u_mattress_type() { mattresstypeid = mattress.mattresstypeid };
+            DbSqlHelper.SelectOne(cmd, mattress_type, "typename"); 
+
+            var mxlist = mattressHelper.GetMattressMxMtrl(mattressid, new List<string>() { "u_mattress_formula.formulatype IN (0,1,2,3,99,104)" });
+
+            var mxlist_103 = mattressHelper.GetMattressMxMtrl(mattressid, new List<string>() { "u_mattress_formula.formulatype = 103" });
+
+            var intefaceList = new List<u_mattress_interface>();
+
+            var name_arr = new string[5];
+
+            // 高度
+            name_arr[0] = $"{mattress.mattress_height}";
+            intefaceList.Add(InserMattressInterfacePz("床垫", "高度", 2, name_arr));
+
+            // 参考外观
+            name_arr[0] = string.Empty;
+            intefaceList.Add(InserMattressInterfacePz("床垫", "参考外观", 1, name_arr));
+
+            // 尺寸
+            mattress.erp_mtrlcode = $"{mattress.mattress_width}*{mattress.mattress_length}*{mattress.mattress_height}";
+            name_arr[0] = mattress.erp_mtrlcode;
+            intefaceList.Add(InserMattressInterfacePz("床垫", "尺寸", 2, name_arr));
+
+            // 床垫类别
+            name_arr[0] = mattress_type.typename;
+            intefaceList.Add(InserMattressInterfacePz("床垫", "床垫类别", 2, name_arr));
+
+            // 拆装类型
+            name_arr[0] = string.Empty;
+            if (mattress.if_m_chai == 1) name_arr[0] = AppendToString(name_arr[0], "面拆");
+            if (mattress.if_z_chai == 1) name_arr[0] = AppendToString(name_arr[0], "中拆");
+            if (mattress.if_d_chai == 1) name_arr[0] = AppendToString(name_arr[0], "底拆");
+            intefaceList.Add(InserMattressInterfacePz("床垫", "拆装类型", 1, name_arr));
+
+            // 床垫分类
+            name_arr[0] = string.Empty;
+            if(mattress.if_haimian_type == 1) name_arr[0] = AppendToString(name_arr[0], "海绵床垫");
+            else name_arr[0] = AppendToString(name_arr[0], "弹簧床垫");
+            if(mattress.if_zhedie_type == 1) name_arr[0] = AppendToString(name_arr[0], "折叠床垫");
+            intefaceList.Add(InserMattressInterfacePz("床垫", "拆装类型", 1, name_arr));
+
+            // 外观布套做法
+            name_arr[0] = string.Empty;
+            if(mattress.if_m_wbutao_way == 1) name_arr[0] = AppendToString(name_arr[0], $"面层向大侧覆盖{mattress.s_m_cover_qty}CM、大侧向底层覆盖{mattress.z_m_cover_qty}CM、底层向大侧覆盖{mattress.x_m_cover_qty}CM");
+            intefaceList.Add(InserMattressInterfacePz("床垫", "外观布套做法", 1, name_arr));
+
+            // 边带
+            name_arr[0] = string.Empty;
+            intefaceList.Add(InserMattressInterfacePz("床垫", "边带", 2, name_arr));
+
+            // 裥面
+            name_arr[0] = "面层裥棉";
+            name_arr[1] = "面层裥棉图案";
+            var jianmianList = mxlist.Where(t => t.formulatype == 0).ToList();
+            foreach(var mx in jianmianList)
+            {
+                if(mx.mtrlid > 0 && new int[] { 0,40,50,60,70,80 }.Contains(mx.formulakind.Value) && "面裥绵".Equals(mx.chastr))
+                {
+                    //布料 u_mattress_formula_formulakind=0
+                    if(mx.formulakind == 0)
+                    {
+                        name_arr[0] = SplitNameCount(mx.mtrlname,Convert.ToInt32(mx.qty.Value));
+                    }
+                    //喷胶棉 u_mattress_formula_formulakind=40
+                    if (mx.formulakind == 40)
+                    {
+                        name_arr[1] = SplitNameCount(mx.mtrlname, Convert.ToInt32(mx.qty.Value));
+                    }
+                    //裥面海绵 u_mattress_formula_formulakind=50
+                    if (mx.formulakind == 40)
+                    {
+                        name_arr[1] = SplitNameCount(mx.mtrlname, Convert.ToInt32(mx.qty.Value));
+                    }
+                }
+            }
+        }
+
+        public u_mattress_interface InserMattressInterfacePz(string itemname,string bj_pzname,byte inputtype, string[] names)
+        {
+            var mattress_interface = new u_mattress_interface()
+            {
+                itemname = itemname,
+                bj_pzname = bj_pzname,
+                bj_inputtype = inputtype,
+                bj_namemx = SetInterfacePzName(names)
+            };
+
+            return mattress_interface;
+        }
+
+        private string SetInterfacePzName(string[] names)
+        {
+            var result = string.Empty;
+
+            foreach(var name in names)
+            {
+                if (string.IsNullOrEmpty(name)) continue;
+                result = AppendToString(result, name);
+            }
+
+            return result;
+        }
+        private string AppendToString(string currentString, string newPart)
+        {
+            if (string.IsNullOrEmpty(currentString))
+            {
+                return newPart;
+            }
+            else
+            {
+                return currentString + " + " + newPart;
+            }
+        }
+
+        private string SplitNameCount(string name,int qty)
+        {
+            if (qty <= 1) return name;
+            var result = name;
+            result = AppendToString(result, SplitNameCount(name, --qty));
+            return result;
+        }
+    }
+}

+ 211 - 4
JLHHJSvr/Helper/MattressHelper.cs

@@ -1109,10 +1109,10 @@ namespace JLHHJSvr.Helper
             DbSqlHelper.SelectOne(cmd, mattress, fields);
             return mattress;
         }
-        public List<u_mattress_mx_mtrl> GetMattressMxMtrl(int mattressid)
+        public List<u_mattress_mx_mtrl> GetMattressMxMtrl(int mattressid,List<string> extraWhere = null)
         {
             var mxList = new List<u_mattress_mx_mtrl>();
-            var outputFields = @"mattressmxid,mattressid,formulaid,formula,mtrlid,price,gram_weight,cloth_width,if_inputqty,qty,costamt,if_15strip,if_success,shrinkage,replace_formula,priceunit,if_areaprice,thickness,chastr,dv_dscrp,xu,useqty,useformula,replace_useformula,gydscrp,cw_erpmtrlcode,erp_mtrlid";
+            var outputFields = @"mattressmxid,mattressid,formulaid,formula,mtrlid,price,gram_weight,cloth_width,if_inputqty,qty,costamt,if_15strip,if_success,shrinkage,replace_formula,priceunit,if_areaprice,thickness,chastr,dv_dscrp,xu,useqty,useformula,replace_useformula,gydscrp,cw_erpmtrlcode,erp_mtrlid,formulakind,formulatype,mtrlname";
             var selectStr = @"SELECT u_mattress_mx_mtrl.mattressmxid
 	                                ,u_mattress_mx_mtrl.mattressid
 	                                ,u_mattress_mx_mtrl.formulaid
@@ -1140,8 +1140,22 @@ namespace JLHHJSvr.Helper
 	                                ,u_mattress_mx_mtrl.gydscrp
 	                                ,u_mattress_mx_mtrl.cw_erpmtrlcode
 	                                ,u_mattress_mx_mtrl.erp_mtrlid
-                                FROM u_mattress_mx_mtrl";
-            DbSqlHelper.SelectJoin(cmd, selectStr, "u_mattress_mx_mtrl.mattressid = @mattressid", new Dictionary<string, object>() { { "@mattressid", mattressid } }, "mattressmxid", outputFields, 0, 0, mxList);
+                                    ,u_mattress_formula.formulakind
+                                    ,u_mattress_formula.formulatype
+                                    ,u_mtrl_price.name AS mtrlname
+                                FROM u_mattress_mx_mtrl
+                                LEFT OUTER 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";
+
+            var whereList = new List<string>();
+            whereList.Add("u_mattress_mx_mtrl.mattressid = @mattressid");
+
+            if(extraWhere != null && extraWhere.Any())
+            {
+                whereList = whereList.Concat(extraWhere).ToList();
+            }
+
+            DbSqlHelper.SelectJoin(cmd, selectStr, ListEx.GetWhereStr(whereList), new Dictionary<string, object>() { { "@mattressid", mattressid } }, "mattressmxid", outputFields, 0, 0, mxList);
 
             return mxList;
         }
@@ -1327,6 +1341,199 @@ namespace JLHHJSvr.Helper
             }
         }
 
+        public void SaveMattressInterface(int mattressid, List<u_mattress_interface> mxlist,List<u_mattress_interface_qd> qdlist)
+        {
+            cmd.CommandText = @"DELETE u_mattress_interface WHERE mattressid = @mattressid";
+            cmd.Parameters.Clear();
+            cmd.Parameters.AddWithValue("@mattressid", mattressid);
+            cmd.ExecuteNonQuery();
+
+            cmd.CommandText = @"DELETE u_mattress_interface_qd WHERE mattressid = @mattressid";
+            cmd.Parameters.Clear();
+            cmd.Parameters.AddWithValue("@mattressid", mattressid);
+            cmd.ExecuteNonQuery();
+
+            foreach (var mx in mxlist) {
+                mx.mattressid = mattressid;
+                DbSqlHelper.Insert(cmd, mx, "mattressid,printid,itemname,bj_pzname,bj_namemx,actual_size,sb_craft,actual_size_sb,erp_pzid,bj_inputtype,ss_rate,ls_rate"); 
+            }
+
+            foreach (var mx in qdlist)
+            {
+                mx.mattressid = mattressid;
+                DbSqlHelper.Insert(cmd, mx, "mattressid,printid,itemname,bj_pzname,bj_pzname_mx,bj_pzname_mx_mx,mtrlid,erp_mtrlid,wrkgrpid,useqty,dscrp,actual_useqty,qd_actual_size,qd_pfgroupqty,ss_rate,ls_rate,sh_rate");
+            }
+        }
+
+        #region 床垫接口相关方法
+        /// <summary>
+        /// 业务审核
+        /// </summary>
+        /// <param name="mattressid"></param>
+        /// <exception cref="LJCommonException"></exception>
+        public void MattressYWAudit(int mattressid)
+        {
+            var mattress = new u_mattress() { mattressid = mattressid };
+            DbSqlHelper.SelectOne(cmd, mattress, "yw_flag");
+
+            if(mattress.yw_flag == 1)
+            {
+                throw new LJCommonException("床垫已业务审核,不能业务审核!");
+            }
+
+            mattress.yw_flag = 1;
+            mattress.yw_auditingdate = context.opdate;
+            mattress.yw_auditingrep = context.tokendata.username;
+
+            DbSqlHelper.Update(cmd, mattress, "yw_flag,yw_auditingdate,yw_auditingrep");
+        }
+
+        /// <summary>
+        /// 业务撤审
+        /// </summary>
+        /// <param name="mattressid"></param>
+        /// <exception cref="LJCommonException"></exception>
+        public void MattressYWCancelAudit(int mattressid)
+        {
+            var mattress = new u_mattress() { mattressid = mattressid };
+            DbSqlHelper.SelectOne(cmd, mattress, "yw_flag,js1_flag");
+
+            if (mattress.js1_flag == 1)
+            {
+                throw new LJCommonException("床垫已技术1审核,不能业务撤审!");
+            }
+
+            if (mattress.yw_flag == 0)
+            {
+                throw new LJCommonException("床垫未业务审核,不能业务撤审!");
+            }
+
+            mattress.yw_flag = 0;
+            mattress.yw_auditingdate = null;
+            mattress.yw_auditingrep = string.Empty;
+
+            DbSqlHelper.Update(cmd, mattress, "yw_flag,yw_auditingdate,yw_auditingrep");
+        }
+
+        /// <summary>
+        /// 产品补充审核
+        /// </summary>
+        /// <param name="mattressid"></param>
+        /// <exception cref="LJCommonException"></exception>
+        public void MattressJSAudit(int mattressid)
+        {
+            var mattress = new u_mattress() { mattressid = mattressid };
+            DbSqlHelper.SelectOne(cmd, mattress, "yw_flag,js1_flag");
+
+            if (mattress.js1_flag == 1)
+            {
+                throw new LJCommonException("床垫已技术1审核,不能技术1审核!");
+            }
+
+            if (mattress.yw_flag == 0)
+            {
+                throw new LJCommonException("床垫未业务审核,不能技术1审核!");
+            }
+
+            mattress.js1_flag = 1;
+            mattress.js1_auditingdate = context.opdate;
+            mattress.js1_auditingrep = context.tokendata.username;
+
+            DbSqlHelper.Update(cmd, mattress, "js1_flag,js1_auditingdate,js1_auditingrep");
+        }
+
+        /// <summary>
+        /// 产品补充撤审
+        /// </summary>
+        /// <param name="mattressid"></param>
+        /// <exception cref="LJCommonException"></exception>
+        public void MattressJSCancelAudit(int mattressid)
+        {
+            var mattress = new u_mattress() { mattressid = mattressid };
+            DbSqlHelper.SelectOne(cmd, mattress, "yw_flag,js1_flag,creatmtrl_flag");
+
+            if (mattress.creatmtrl_flag == 1)
+            {
+                throw new LJCommonException("床垫已生成产品,不能技术1撤审!");
+            }
+
+            if (mattress.js1_flag == 0)
+            {
+                throw new LJCommonException("床垫未技术1撤审,不能技术1撤审!");
+            }
+
+            mattress.js1_flag = 0;
+            mattress.js1_auditingdate = null;
+            mattress.js1_auditingrep = string.Empty;
+
+            DbSqlHelper.Update(cmd, mattress, "js1_flag,js1_auditingdate,js1_auditingrep");
+        }
+        /// <summary>
+        /// 清单补充审核
+        /// </summary>
+        /// <param name="mattressid"></param>
+        /// <exception cref="LJCommonException"></exception>
+        public void MattressJS2Audit(int mattressid)
+        {
+            var mattress = new u_mattress() { mattressid = mattressid };
+            DbSqlHelper.SelectOne(cmd, mattress, "js2_flag");
+
+            if (mattress.js2_flag == 1)
+            {
+                throw new LJCommonException("床垫已技术2审核,不能技术2审核!");
+            }
+
+            mattress.js2_flag = 1;
+            mattress.js2_auditingdate = context.opdate;
+            mattress.js2_auditingrep = context.tokendata.username;
+
+            DbSqlHelper.Update(cmd, mattress, "js2_flag,js2_auditingdate,js2_auditingrep");
+        }
+
+        /// <summary>
+        /// 清单补充撤审
+        /// </summary>
+        /// <param name="mattressid"></param>
+        /// <exception cref="LJCommonException"></exception>
+        public void MattressJS2CancelAudit(int mattressid)
+        {
+            var mattress = new u_mattress() { mattressid = mattressid };
+            DbSqlHelper.SelectOne(cmd, mattress, "js2_flag");
+
+            if (mattress.js2_flag == 0)
+            {
+                throw new LJCommonException("床垫未技术2审核,不能技术2撤审!");
+            }
+
+            mattress.js2_flag = 0;
+            mattress.js2_auditingdate = null;
+            mattress.js2_auditingrep = string.Empty;
+
+            DbSqlHelper.Update(cmd, mattress, "js2_flag,js2_auditingdate,js2_auditingrep");
+        }
+
+        /// <summary>
+        /// 配对ERP成品
+        /// </summary>
+        /// <param name="mattress"></param>
+        /// <param name="mxlist"></param>
+        /// <exception cref="LJCommonException"></exception>
+        public void MatchERPMtrldef(u_mattress mattress,List<u_mattress_mx_mtrl> mxlist)
+        {
+            if(mattress.mattressid <= 0)
+            {
+                throw new LJCommonException("床垫id有误,请检查!");
+            }
+
+            DbSqlHelper.Update(cmd, mattress, "erp_mtrlid,erp_mtrlcode");
+
+            foreach(var mx in mxlist)
+            {
+                DbSqlHelper.Update(cmd, mx, "erp_mtrlid");
+            }
+        }
+        #endregion
+
         #region 公式计算通用方法
         private void AddKeyValue(string key, object value, bool isReplace = true)
         {

+ 1 - 0
JLHHJSvr/JLHHJSvr.csproj

@@ -301,6 +301,7 @@
     <Compile Include="Excutor\SetSysUserFileStringExcutor.cs" />
     <Compile Include="Excutor\SetOptionExcutor.cs" />
     <Compile Include="Helper\BedNetHelper.cs" />
+    <Compile Include="Helper\InterfaceHelper.cs" />
     <Compile Include="Helper\MattressHelper.cs" />
     <Compile Include="ImgHelper\ImgHelper.cs" />
     <Compile Include="LJFrameWork\LJException\LJException.cs" />