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 { /// /// 数据库连接 /// public SqlCommand erp_cmd { get; set; } /// /// 床垫接口-保存 /// /// /// /// /// public void SaveMattressInterface(u_mattress mattress, List mxlist, List 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(cmd); mattressHelper.SaveMattressInterface(mattress.mattressid, mxlist, qdlist); } public void AutoSetMtrlName(u_mattress mattress,List 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 { { "两边单层", "21" }, { "两边直出", "23" }, { "三边加顶", "32" }, { "三边直出", "33" }, { "假三边", "34" }, { "拉假边", "3C" }, { "假三边加顶", "42" }, { "上下假三边", "44" }, { "四边双顶", "45" }, { "四边顶上顶", "46" }, { "四边假分体", "47" } }; var mattressTypeCodes = new Dictionary { { "袋装网", "P" }, { "拉丝网", "C" }, { "圆网", "B" } }; var packTypeCodes = new Dictionary { { "平压", "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(); } } /// /// 导入清单 /// /// /// public void ImportMattressInterfaceList(int mattressid) { if(mattressid <= 0) { throw new LJCommonException("床垫id有误"); } var mattressHelper = GetHelper(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() { "u_mattress_formula.formulatype IN (0,1,2,3,99,104)" }); var mxlist_103 = mattressHelper.GetMattressMxMtrl(mattressid, new List() { "u_mattress_formula.formulatype = 103" }); var intefaceList = new List(); 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; } } }