CopyMtrlDefExcutor.cs 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. using System;
  2. using System.Data.SqlClient;
  3. using System.Linq;
  4. using DirectService.Tools;
  5. using JLHHJSvr.BLL;
  6. using JLHHJSvr.Com;
  7. using JLHHJSvr.LJException;
  8. using LJLib.DAL.SQL;
  9. using LJLib.Net.SPI.Server;
  10. namespace JLHHJSvr.Excutor
  11. {
  12. internal sealed class CopyMtrlDefExcutor : ExcutorBase<CopyMtrlDefRequest, CopyMtrlDefResponse>
  13. {
  14. protected override void ExcuteInternal(CopyMtrlDefRequest request, object state, CopyMtrlDefResponse rslt)
  15. {
  16. var tokendata = BllHelper.GetToken(request.token);
  17. if (tokendata == null)
  18. {
  19. rslt.ErrMsg = "会话已经中断,请重新登录";
  20. return;
  21. }
  22. if(request.pricelistid_from == null || request.pricelistid_from <= 0)
  23. {
  24. rslt.ErrMsg = "源头价格表id有误,请检查";
  25. return;
  26. }
  27. if (request.pricelistid_to == null || request.pricelistid_to <= 0)
  28. {
  29. rslt.ErrMsg = "目标价格表id有误,请检查";
  30. return;
  31. }
  32. using (var con = new SqlConnection(GlobalVar.ConnectionString))
  33. using (var cmd = con.CreateCommand())
  34. {
  35. con.Open();
  36. using (cmd.Transaction = con.BeginTransaction())
  37. {
  38. try
  39. {
  40. cmd.CommandText = @"INSERT INTO u_mtrl_price_pricelist (
  41. mtrlid
  42. ,pricelistid
  43. ,price
  44. ,pricetype
  45. ,price_formula
  46. )
  47. SELECT u_mtrl_price.mtrlid
  48. ,@pricelistid
  49. ,0
  50. ,0
  51. ,''
  52. FROM u_mtrl_price
  53. WHERE mtrlid NOT IN (SELECT mtrlid
  54. FROM u_mtrl_price_pricelist
  55. WHERE pricelistid = @pricelistid)";
  56. cmd.Parameters.Clear();
  57. cmd.Parameters.AddWithValue("@pricelistid", request.pricelistid_to);
  58. cmd.Parameters.AddWithValue("@rate", request.rate);
  59. cmd.ExecuteNonQuery();
  60. if(request.mtrlids != null && request.mtrlids.Count > 0)
  61. {
  62. cmd.CommandText = $@"UPDATE u_mtrl_price_pricelist
  63. SET u_mtrl_price_pricelist.price = ISNULL(u_temp.price, 0) * @rate
  64. ,u_mtrl_price_pricelist.pricetype = u_temp.pricetype
  65. ,u_mtrl_price_pricelist.price_formula = u_temp.price_formula
  66. FROM u_mtrl_price_pricelist
  67. INNER JOIN (
  68. SELECT mtrlid
  69. ,price
  70. ,pricetype
  71. ,price_formula
  72. FROM u_mtrl_price_pricelist
  73. WHERE pricelistid = @pricelistid_from
  74. ) u_temp ON u_temp.mtrlid = u_mtrl_price_pricelist.mtrlid
  75. WHERE u_mtrl_price_pricelist.pricelistid = @pricelistid_to AND u_mtrl_price_pricelist.mtrlid IN {ListEx.getString(request.mtrlids)}";
  76. } else
  77. {
  78. cmd.CommandText = @"UPDATE u_mtrl_price_pricelist
  79. SET u_mtrl_price_pricelist.price = ISNULL(u_temp.price, 0) * @rate
  80. ,u_mtrl_price_pricelist.pricetype = u_temp.pricetype
  81. ,u_mtrl_price_pricelist.price_formula = u_temp.price_formula
  82. FROM u_mtrl_price_pricelist
  83. INNER JOIN (
  84. SELECT mtrlid
  85. ,price
  86. ,pricetype
  87. ,price_formula
  88. FROM u_mtrl_price_pricelist
  89. WHERE pricelistid = @pricelistid_from
  90. ) u_temp ON u_temp.mtrlid = u_mtrl_price_pricelist.mtrlid
  91. WHERE u_mtrl_price_pricelist.pricelistid = @pricelistid_to";
  92. }
  93. cmd.Parameters.Clear();
  94. cmd.Parameters.AddWithValue("@pricelistid_from", request.pricelistid_from);
  95. cmd.Parameters.AddWithValue("@pricelistid_to", request.pricelistid_to);
  96. cmd.Parameters.AddWithValue("@rate", request.rate);
  97. cmd.ExecuteNonQuery();
  98. cmd.Transaction.Commit();
  99. }
  100. catch (Exception e)
  101. {
  102. cmd.Transaction.Rollback();
  103. rslt.ErrMsg = e.ToString();
  104. }
  105. }
  106. }
  107. }
  108. }
  109. }