CoverMattressInterfaceExcutor.cs 8.5 KB

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