SaveMattressExcutor.cs 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data.SqlClient;
  4. using System.Linq;
  5. using System.Text;
  6. using JLHHJSvr.BLL;
  7. using JLHHJSvr.Com;
  8. using JLHHJSvr.Com.Model;
  9. using JLHHJSvr.LJException;
  10. using JLHHJSvr.Tools;
  11. using LJLib.DAL.SQL;
  12. using LJLib.Net.SPI.Server;
  13. namespace JLHHJSvr.Excutor
  14. {
  15. internal sealed class SaveMattressExcutor : ExcutorBase<SaveMattressRequest, SaveMattressResponse>
  16. {
  17. protected override void ExcuteInternal(SaveMattressRequest request, object state, SaveMattressResponse rslt)
  18. {
  19. var tokendata = BllHelper.GetToken(request.token);
  20. if (tokendata == null)
  21. {
  22. rslt.ErrMsg = "会话已经中断,请重新登录";
  23. return;
  24. }
  25. if (request.mattress == null)
  26. {
  27. rslt.ErrMsg = "缺少主表信息";
  28. return;
  29. }
  30. using (var con = new SqlConnection(GlobalVar.ConnectionString))
  31. using (var cmd = con.CreateCommand())
  32. {
  33. con.Open();
  34. // 初始化属性
  35. //AutoInit.AutoInitS(cmd, request.mattress);
  36. using (cmd.Transaction = con.BeginTransaction())
  37. {
  38. try
  39. {
  40. var dtNow = DateTime.Now;
  41. var fields = "mattressname, deptid, mattresscode, mattresstypeid, mattress_width, mattress_length, mattress_height, packtype, packqty, woodpallettype, total_hr_cost, total_material_cost, fees_dscrp, total_fees_cost, total_cost, taxrate, taxes, commissionrate, commission, fob, profitrate, dept_profitrate, moneyrate, nottax_factory_cost, nottax_dept_cost, foreign_cost, diameter, area, cabinet_type, hrcost, biandaicost, createtime, createby, mattressrelcode, other_rate, flag, dept_profitrate_rangli, profitrate_point, if_moneyrate, discount, if_m_chai, if_z_chai, if_d_chai, if_n_butao, if_w_butao, if_m_wbutao_way, s_cover_qty, z_cover_qty, x_cover_qty, biandai_qty, s_m_cover_qty, z_m_cover_qty, x_m_cover_qty, chaizhuang_point, haimian_point, if_zhedie_type, qr_auditingrep, qr_auditingdate, if_bcp_type, zhizao_amt, foreign_cost_bz, cubage";
  42. var fieldsMx = "mattressmxid,mattressid,formulaid,formula,replace_formula,if_success,priceunit,shrinkage,mtrlid,price,gram_weight,cloth_width,if_inputqty,qty ,costamt,if_areaprice,thickness,chastr,xu,useqty,useformula,replace_useformula,gydscrp";
  43. var currentMattressID = request.mattress.mattressid;
  44. var isNew = false;
  45. if (request.mattress.mattressid == null || request.mattress.mattressid <= 0)
  46. {
  47. isNew = true;
  48. //新建
  49. request.mattress.createtime = dtNow;
  50. request.mattress.mattressid = BllHelper.GetID(cmd, "u_mattress");
  51. currentMattressID = request.mattress.mattressid;
  52. fields = "mattressid," + fields;
  53. DbSqlHelper.Insert(cmd, "u_mattress", null, request.mattress, fields);
  54. }
  55. else
  56. {
  57. //修改
  58. request.mattress.createtime = dtNow;
  59. DbSqlHelper.Update(cmd, "u_mattress", null, request.mattress, "mattressid", fields);
  60. // 删除所有明细
  61. //var oriMx = new u_mattress_mx_mtrl
  62. //{
  63. // mattressid = request.mattress.mattressid
  64. //};
  65. //DbSqlHelper.Delete(cmd, oriMx);
  66. cmd.CommandText = @"DELETE u_mattress_mx_mtrl WHERE mattressid = @mattressid";
  67. cmd.Parameters.Clear();
  68. cmd.Parameters.AddWithValue("@mattressid", request.mattress.mattressid);
  69. cmd.ExecuteNonQuery();
  70. }
  71. if (request.mattressMx != null && request.mattressMx.Count > 0)
  72. {
  73. var mx = new List<u_mattress_mx_mtrl>();
  74. foreach (var item in request.mattressMx)
  75. {
  76. item.mattressid = currentMattressID;
  77. if (item.mattressmxid == null || item.mattressmxid <= 0)
  78. {
  79. item.mattressmxid = BllHelper.GetID(cmd, "u_mattress_mx_mtrl");
  80. }
  81. mx.Add(item);
  82. }
  83. DbSqlHelper.Insert(cmd, "u_mattress_mx_mtrl", null, mx, fieldsMx);
  84. }
  85. // 更新计价历史
  86. if (isNew)
  87. {
  88. var hisprice = new u_his_price
  89. {
  90. bednetid_mattressid = request.mattress.mattressid,
  91. typeid = 1,
  92. cmpdate = dtNow,
  93. cmpemp = tokendata.username,
  94. nottax_dept_cost = request.mattress.nottax_dept_cost,
  95. dept_cost = request.mattress.dept_cost,
  96. foreign_cost = request.mattress.foreign_cost
  97. };
  98. var fieldsHs = "bednetid_mattressid, typeid, cmpdate, cmpemp, nottax_dept_cost, dept_cost, foreign_cost";
  99. DbSqlHelper.Insert(cmd, "u_his_price", null, hisprice, fieldsHs);
  100. }
  101. else
  102. {
  103. cmd.CommandText = @"UPDATE u_his_price SET
  104. cmpdate = @cmpdate,
  105. cmpemp = @cmpemp,
  106. nottax_dept_cost = @nottax_dept_cost,
  107. dept_cost = @dept_cost,
  108. foreign_cost = @foreign_cost
  109. WHERE bednetid_mattressid = @bednetid_mattressid AND typeid = 1";
  110. cmd.Parameters.Clear();
  111. cmd.Parameters.AddWithValue("@bednetid_mattressid", request.mattress.mattressid);
  112. cmd.Parameters.AddWithValue("@cmpdate", dtNow);
  113. cmd.Parameters.AddWithValue("@cmpemp", tokendata.username);
  114. cmd.Parameters.AddWithValue("@nottax_dept_cost", request.mattress.nottax_dept_cost);
  115. cmd.Parameters.AddWithValue("@dept_cost", request.mattress.dept_cost);
  116. cmd.Parameters.AddWithValue("@foreign_cost", request.mattress.foreign_cost);
  117. cmd.ExecuteNonQuery();
  118. }
  119. // 复制配置清单和物料清单
  120. cmd.Transaction.Commit();
  121. }
  122. catch (Exception e)
  123. {
  124. cmd.Transaction.Rollback();
  125. rslt.ErrMsg = e.ToString();
  126. }
  127. }
  128. }
  129. }
  130. }
  131. }