InterfaceHelper.cs 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272
  1. using JLHHJSvr.BLL;
  2. using JLHHJSvr.Com;
  3. using JLHHJSvr.Com.Model;
  4. using JLHHJSvr.LJException;
  5. using JLHHJSvr.Tools;
  6. using LJLib.DAL.SQL;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Data.SqlClient;
  10. using System.Linq;
  11. using System.Text;
  12. using System.Threading.Tasks;
  13. namespace JLHHJSvr.Helper
  14. {
  15. internal class InterfaceHelper : HelperBase
  16. {
  17. /// <summary>
  18. /// 数据库连接
  19. /// </summary>
  20. public SqlCommand erp_cmd { get; set; }
  21. /// <summary>
  22. /// 床垫接口-保存
  23. /// </summary>
  24. /// <param name="mattress"></param>
  25. /// <param name="mxlist"></param>
  26. /// <param name="qdlist"></param>
  27. /// <exception cref="LJCommonException"></exception>
  28. public void SaveMattressInterface(u_mattress mattress, List<u_mattress_interface> mxlist, List<u_mattress_interface_qd> qdlist)
  29. {
  30. if(mattress.mattressid <= 0)
  31. {
  32. throw new LJCommonException("错误的床垫id");
  33. }
  34. AutoSetMtrlName(mattress, mxlist);
  35. AutoInit.AutoInitS(cmd, mattress);
  36. if(string.IsNullOrEmpty(mattress.erp_mtrlcode))
  37. {
  38. throw new LJCommonException("请输入物料名称!");
  39. }
  40. if (mattress.erp_mtrltypeid == null || mattress.erp_mtrltypeid <= 0)
  41. {
  42. throw new LJCommonException("请选择物料类别!");
  43. }
  44. if (mattress.erp_configcodetype == null || mattress.erp_configcodetype <= 0)
  45. {
  46. throw new LJCommonException("请选择配置类型!");
  47. }
  48. DbSqlHelper.Update(cmd, mattress, "erp_mtrlid,erp_mtrltypeid,erp_mtrlcode,erp_mtrlname,erp_mtrlmode,erp_mtrltype,erp_mtrlunit,erp_mtrlengname,erp_configcodetype,old_mtrlname");
  49. // 保存接口数据
  50. var mattressHelper = GetHelper<MattressHelper>(cmd);
  51. mattressHelper.SaveMattressInterface(mattress.mattressid, mxlist, qdlist);
  52. }
  53. public void AutoSetMtrlName(u_mattress mattress,List<u_mattress_interface> mxlist)
  54. {
  55. string mtrltypename = string.Empty, mtrltypecode = string.Empty;
  56. string mattresstypename = string.Empty, mattresstypecode = string.Empty;
  57. string packtypename = string.Empty, packtypecode = string.Empty;
  58. var materialCodes = new Dictionary<string, string>
  59. {
  60. { "两边单层", "21" },
  61. { "两边直出", "23" },
  62. { "三边加顶", "32" },
  63. { "三边直出", "33" },
  64. { "假三边", "34" },
  65. { "拉假边", "3C" },
  66. { "假三边加顶", "42" },
  67. { "上下假三边", "44" },
  68. { "四边双顶", "45" },
  69. { "四边顶上顶", "46" },
  70. { "四边假分体", "47" }
  71. };
  72. var mattressTypeCodes = new Dictionary<string, string>
  73. {
  74. { "袋装网", "P" },
  75. { "拉丝网", "C" },
  76. { "圆网", "B" }
  77. };
  78. var packTypeCodes = new Dictionary<string, string>
  79. {
  80. { "平压", "A" },
  81. { "卷包", "B" }
  82. };
  83. foreach (var mx in mxlist)
  84. {
  85. if(mx.bj_pzname.IndexOf("床垫类别") > -1)
  86. {
  87. mtrltypename = mx.bj_namemx;
  88. break;
  89. }
  90. }
  91. foreach (var mx in mxlist)
  92. {
  93. if (mx.bj_pzname.IndexOf("床网") > -1)
  94. {
  95. mattresstypename = mx.bj_namemx;
  96. break;
  97. }
  98. }
  99. foreach (var mx in mxlist)
  100. {
  101. if (mx.bj_pzname.IndexOf("包装方式") > -1)
  102. {
  103. packtypename = mx.bj_namemx;
  104. break;
  105. }
  106. }
  107. mtrltypecode = materialCodes.ContainsKey(mtrltypename) ? materialCodes[mtrltypename] : "99";
  108. mattresstypecode = mattressTypeCodes.ContainsKey(mtrltypename) ? mattressTypeCodes[mtrltypename] : "Z";
  109. packtypecode = packTypeCodes.ContainsKey(mtrltypename) ? packTypeCodes[mtrltypename] : "J";
  110. // 获取mxlist最后一项
  111. if(mattress.mattressid > 0)
  112. {
  113. mattress.erp_mtrlname = new StringBuilder().Append(mtrltypecode).Append(mattresstypecode).Append(packtypecode).ToString();
  114. }
  115. }
  116. /// <summary>
  117. /// 导入清单
  118. /// </summary>
  119. /// <param name="mattressid"></param>
  120. /// <exception cref="LJCommonException"></exception>
  121. public void ImportMattressInterfaceList(int mattressid)
  122. {
  123. if(mattressid <= 0)
  124. {
  125. throw new LJCommonException("床垫id有误");
  126. }
  127. var mattressHelper = GetHelper<MattressHelper>(cmd);
  128. var mattress = mattressHelper.GetMattress(mattressid);
  129. var mattress_type = new u_mattress_type() { mattresstypeid = mattress.mattresstypeid };
  130. DbSqlHelper.SelectOne(cmd, mattress_type, "typename");
  131. var mxlist = mattressHelper.GetMattressMxMtrl(mattressid, new List<string>() { "u_mattress_formula.formulatype IN (0,1,2,3,99,104)" });
  132. var mxlist_103 = mattressHelper.GetMattressMxMtrl(mattressid, new List<string>() { "u_mattress_formula.formulatype = 103" });
  133. var intefaceList = new List<u_mattress_interface>();
  134. var name_arr = new string[5];
  135. // 高度
  136. name_arr[0] = $"{mattress.mattress_height}";
  137. intefaceList.Add(InserMattressInterfacePz("床垫", "高度", 2, name_arr));
  138. // 参考外观
  139. name_arr[0] = string.Empty;
  140. intefaceList.Add(InserMattressInterfacePz("床垫", "参考外观", 1, name_arr));
  141. // 尺寸
  142. mattress.erp_mtrlcode = $"{mattress.mattress_width}*{mattress.mattress_length}*{mattress.mattress_height}";
  143. name_arr[0] = mattress.erp_mtrlcode;
  144. intefaceList.Add(InserMattressInterfacePz("床垫", "尺寸", 2, name_arr));
  145. // 床垫类别
  146. name_arr[0] = mattress_type.typename;
  147. intefaceList.Add(InserMattressInterfacePz("床垫", "床垫类别", 2, name_arr));
  148. // 拆装类型
  149. name_arr[0] = string.Empty;
  150. if (mattress.if_m_chai == 1) name_arr[0] = AppendToString(name_arr[0], "面拆");
  151. if (mattress.if_z_chai == 1) name_arr[0] = AppendToString(name_arr[0], "中拆");
  152. if (mattress.if_d_chai == 1) name_arr[0] = AppendToString(name_arr[0], "底拆");
  153. intefaceList.Add(InserMattressInterfacePz("床垫", "拆装类型", 1, name_arr));
  154. // 床垫分类
  155. name_arr[0] = string.Empty;
  156. if(mattress.if_haimian_type == 1) name_arr[0] = AppendToString(name_arr[0], "海绵床垫");
  157. else name_arr[0] = AppendToString(name_arr[0], "弹簧床垫");
  158. if(mattress.if_zhedie_type == 1) name_arr[0] = AppendToString(name_arr[0], "折叠床垫");
  159. intefaceList.Add(InserMattressInterfacePz("床垫", "拆装类型", 1, name_arr));
  160. // 外观布套做法
  161. name_arr[0] = string.Empty;
  162. 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");
  163. intefaceList.Add(InserMattressInterfacePz("床垫", "外观布套做法", 1, name_arr));
  164. // 边带
  165. name_arr[0] = string.Empty;
  166. intefaceList.Add(InserMattressInterfacePz("床垫", "边带", 2, name_arr));
  167. // 裥面
  168. name_arr[0] = "面层裥棉";
  169. name_arr[1] = "面层裥棉图案";
  170. var jianmianList = mxlist.Where(t => t.formulatype == 0).ToList();
  171. foreach(var mx in jianmianList)
  172. {
  173. if(mx.mtrlid > 0 && new int[] { 0,40,50,60,70,80 }.Contains(mx.formulakind.Value) && "面裥绵".Equals(mx.chastr))
  174. {
  175. //布料 u_mattress_formula_formulakind=0
  176. if(mx.formulakind == 0)
  177. {
  178. name_arr[0] = SplitNameCount(mx.mtrlname,Convert.ToInt32(mx.qty.Value));
  179. }
  180. //喷胶棉 u_mattress_formula_formulakind=40
  181. if (mx.formulakind == 40)
  182. {
  183. name_arr[1] = SplitNameCount(mx.mtrlname, Convert.ToInt32(mx.qty.Value));
  184. }
  185. //裥面海绵 u_mattress_formula_formulakind=50
  186. if (mx.formulakind == 40)
  187. {
  188. name_arr[1] = SplitNameCount(mx.mtrlname, Convert.ToInt32(mx.qty.Value));
  189. }
  190. }
  191. }
  192. }
  193. public u_mattress_interface InserMattressInterfacePz(string itemname,string bj_pzname,byte inputtype, string[] names)
  194. {
  195. var mattress_interface = new u_mattress_interface()
  196. {
  197. itemname = itemname,
  198. bj_pzname = bj_pzname,
  199. bj_inputtype = inputtype,
  200. bj_namemx = SetInterfacePzName(names)
  201. };
  202. return mattress_interface;
  203. }
  204. private string SetInterfacePzName(string[] names)
  205. {
  206. var result = string.Empty;
  207. foreach(var name in names)
  208. {
  209. if (string.IsNullOrEmpty(name)) continue;
  210. result = AppendToString(result, name);
  211. }
  212. return result;
  213. }
  214. private string AppendToString(string currentString, string newPart)
  215. {
  216. if (string.IsNullOrEmpty(currentString))
  217. {
  218. return newPart;
  219. }
  220. else
  221. {
  222. return currentString + " + " + newPart;
  223. }
  224. }
  225. private string SplitNameCount(string name,int qty)
  226. {
  227. if (qty <= 1) return name;
  228. var result = name;
  229. result = AppendToString(result, SplitNameCount(name, --qty));
  230. return result;
  231. }
  232. }
  233. }