CoverMattressInterfaceExcutor.cs 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Data.SqlClient;
  5. using System.Linq;
  6. using System.Text;
  7. using JLHHJSvr.BLL;
  8. using JLHHJSvr.Com;
  9. using JLHHJSvr.Com.Model;
  10. using JLHHJSvr.Helper;
  11. using JLHHJSvr.LJException;
  12. using JLHHJSvr.Tools;
  13. using LJLib.DAL.SQL;
  14. using LJLib.Net.SPI.Server;
  15. using NPOI.POIFS.Properties;
  16. using NPOI.SS.Formula.Functions;
  17. namespace JLHHJSvr.Excutor
  18. {
  19. internal sealed class CoverMattressInterfaceExcutor : ExcutorBase<CoverMattressInterfaceRequest, CoverMattressInterfaceResponse>
  20. {
  21. protected override void ExcuteInternal(CoverMattressInterfaceRequest request, object state, CoverMattressInterfaceResponse rslt)
  22. {
  23. var tokendata = BllHelper.GetToken(request.token);
  24. if (tokendata == null)
  25. {
  26. rslt.ErrMsg = "会话已经中断,请重新登录";
  27. return;
  28. }
  29. if (request.list == null)
  30. {
  31. rslt.ErrMsg = "提交缺少列表参数,请检查!";
  32. return;
  33. }
  34. if (!request.list.Any())
  35. {
  36. rslt.ErrMsg = "至少提交一条需要覆盖的记录";
  37. return;
  38. }
  39. using (var con = new SqlConnection(GlobalVar.ConnectionString))
  40. using (var cmd = con.CreateCommand())
  41. {
  42. con.Open();
  43. var helper = HelperBase.GetHelper<MattressHelper>(cmd, new HelperBase.Context() { tokendata = tokendata });
  44. var interfaceHelper = HelperBase.GetHelper<InterfaceHelper>(cmd, new HelperBase.Context() { tokendata = tokendata });
  45. var mainDict = new Dictionary<int, List<u_mattress_interface>> ();
  46. bool isUpdateMain = false;
  47. foreach(var mattress in request.list)
  48. {
  49. DbSqlHelper.SelectOne(cmd, mattress, "mattress_width,mattress_length,mattress_height,mattressname,erp_mtrlmode,erp_mtrlname,erp_mtrltypeid,erp_configcodetype,erp_mtrlunit,parentid");
  50. if (!mainDict.ContainsKey(mattress.parentid.Value))
  51. {
  52. // 获取主规格床垫的配置
  53. mainDict.Add(mattress.parentid.Value, interfaceHelper.GetMattressInterfaceList(mattress.parentid.Value, 0));
  54. }
  55. }
  56. using (cmd.Transaction = con.BeginTransaction())
  57. {
  58. try
  59. {
  60. foreach (var mattress in request.list)
  61. {
  62. isUpdateMain = false;
  63. if (string.IsNullOrEmpty(mattress.erp_mtrlmode))
  64. {
  65. mattress.erp_mtrlmode = mattress.mattress_width + "*" + mattress.mattress_length + "*" + mattress.mattress_height;
  66. isUpdateMain = true;
  67. }
  68. if (string.IsNullOrEmpty(mattress.erp_mtrlname))
  69. {
  70. mattress.erp_mtrlname = mattress.mattressname;
  71. isUpdateMain = true;
  72. }
  73. if (mattress.erp_configcodetype <= 0)
  74. {
  75. cmd.CommandText = @"SELECT TOP 1 u_configure_type.contfigtypeid
  76. ,u_configure_type.contfigtypename
  77. ,u_configure_type.contfigtype
  78. ,u_configure_type.usechflag
  79. ,u_configure_type.flag
  80. ,u_configure_type.auditemp
  81. ,u_configure_type.auditdate
  82. FROM u_configure_type";
  83. cmd.Parameters.Clear();
  84. cmd.Parameters.AddWithValue("@empid", tokendata.empid);
  85. cmd.Parameters.AddWithValue("@dwname", "dw_mattress_interface_yw_edit");
  86. cmd.Parameters.AddWithValue("@itemname", "erp_configcodetype");
  87. using (var readerItem = cmd.ExecuteReader())
  88. {
  89. if (readerItem.Read())
  90. {
  91. mattress.erp_configcodetype = Convert.ToInt32(readerItem["contfigtypeid"]);
  92. }
  93. }
  94. isUpdateMain = true;
  95. }
  96. if (mattress.erp_mtrltypeid <= 0)
  97. {
  98. cmd.CommandText = @"SELECT itemvalue FROM sys_user_filestring WHERE dwname = @dwname AND itemname = @itemname AND empid = @empid";
  99. cmd.Parameters.Clear();
  100. cmd.Parameters.AddWithValue("@empid", tokendata.empid);
  101. cmd.Parameters.AddWithValue("@dwname", "dw_mattress_interface_yw_edit");
  102. cmd.Parameters.AddWithValue("@itemname", "mtrltypeid");
  103. using (var readerItem = cmd.ExecuteReader())
  104. {
  105. if (readerItem.Read())
  106. {
  107. mattress.erp_mtrltypeid = Convert.ToInt32(readerItem["itemvalue"]);
  108. }
  109. }
  110. isUpdateMain = true;
  111. }
  112. if (mattress.erp_mtrlunit == "")
  113. {
  114. mattress.erp_mtrlunit = "张";
  115. isUpdateMain = true;
  116. }
  117. if(isUpdateMain)
  118. {
  119. DbSqlHelper.Update(cmd, mattress, "erp_mtrlmode,erp_mtrlname,erp_mtrltypeid,erp_configcodetype,erp_mtrlunit");
  120. }
  121. var copy_list = new List<u_mattress_interface>();
  122. if (mainDict.TryGetValue(mattress.parentid.Value, out var parentlist))
  123. {
  124. bool isExist = DbSqlHelper.SelectCount(cmd, "u_mattress_interface", "mattressid = @mattressid", new Dictionary<string, object>() { { "@mattressid", mattress.mattressid } }) > 0;
  125. // 获取副规格床垫的配置
  126. copy_list = interfaceHelper.GetMattressInterfaceList(mattress.mattressid, mattress.erp_configcodetype);
  127. var copyDict = parentlist.Where(mx2 => mx2.erp_pzid > 0)
  128. .ToDictionary(mx2 => mx2.erp_pzid, mx2 => mx2);
  129. foreach (var mx in copy_list)
  130. {
  131. if (mx.bj_inputtype == null) mx.bj_inputtype = 0;
  132. if (mx.erp_pzid > 0 && copyDict.TryGetValue(mx.erp_pzid, out var mx2) && (mx.bj_inputtype == 1 || mx.bj_inputtype == 0))
  133. {
  134. mx.bj_namemx = mx2.bj_namemx;
  135. mx.bj_inputtype = mx2.bj_inputtype;
  136. }
  137. if(isExist)
  138. {
  139. DbSqlHelper.Update(cmd, mx, "bj_inputtype,bj_namemx");
  140. } else
  141. {
  142. 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");
  143. }
  144. }
  145. }
  146. }
  147. cmd.Transaction.Commit();
  148. }
  149. catch (Exception e)
  150. {
  151. cmd.Transaction.Rollback();
  152. rslt.ErrMsg = e.Message;
  153. }
  154. }
  155. }
  156. }
  157. }
  158. }