CopyMtrlDefExcutor.cs 5.7 KB

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