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;
}
}
}