SaveMattressExcutor.cs 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  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. int 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. cmd.CommandText = @"DELETE u_mattress_mx_mtrl WHERE mattressid = @mattressid";
  62. cmd.Parameters.Clear();
  63. cmd.Parameters.AddWithValue("@mattressid", request.mattress.mattressid);
  64. cmd.ExecuteNonQuery();
  65. }
  66. rslt.mattressid = currentMattressID;
  67. if (request.mattressMx != null && request.mattressMx.Count > 0)
  68. {
  69. foreach (var item in request.mattressMx)
  70. {
  71. item.mattressid = currentMattressID;
  72. if (item.mattressmxid == null || item.mattressmxid <= 0)
  73. {
  74. item.mattressmxid = BllHelper.GetID(cmd, "u_mattress_mx_mtrl");
  75. }
  76. DbSqlHelper.Insert(cmd, "u_mattress_mx_mtrl", null, item, fieldsMx);
  77. }
  78. }
  79. // 更新计价历史
  80. if (isNew)
  81. {
  82. var hisprice = new u_his_price
  83. {
  84. bednetid_mattressid = request.mattress.mattressid,
  85. typeid = 1,
  86. cmpdate = dtNow,
  87. cmpemp = tokendata.username,
  88. nottax_dept_cost = request.mattress.nottax_dept_cost,
  89. dept_cost = request.mattress.dept_cost,
  90. foreign_cost = request.mattress.foreign_cost
  91. };
  92. var fieldsHs = "bednetid_mattressid, typeid, cmpdate, cmpemp, nottax_dept_cost, dept_cost, foreign_cost";
  93. DbSqlHelper.Insert(cmd, "u_his_price", null, hisprice, fieldsHs);
  94. }
  95. else
  96. {
  97. cmd.CommandText = @"UPDATE u_his_price SET
  98. cmpdate = @cmpdate,
  99. cmpemp = @cmpemp,
  100. nottax_dept_cost = @nottax_dept_cost,
  101. dept_cost = @dept_cost,
  102. foreign_cost = @foreign_cost
  103. WHERE bednetid_mattressid = @bednetid_mattressid AND typeid = 1";
  104. cmd.Parameters.Clear();
  105. cmd.Parameters.AddWithValue("@bednetid_mattressid", request.mattress.mattressid);
  106. cmd.Parameters.AddWithValue("@cmpdate", dtNow);
  107. cmd.Parameters.AddWithValue("@cmpemp", tokendata.username);
  108. cmd.Parameters.AddWithValue("@nottax_dept_cost", request.mattress.nottax_dept_cost);
  109. cmd.Parameters.AddWithValue("@dept_cost", request.mattress.dept_cost);
  110. cmd.Parameters.AddWithValue("@foreign_cost", request.mattress.foreign_cost);
  111. cmd.ExecuteNonQuery();
  112. }
  113. // 复制配置清单和物料清单
  114. cmd.Transaction.Commit();
  115. }
  116. catch (Exception e)
  117. {
  118. cmd.Transaction.Rollback();
  119. rslt.ErrMsg = e.ToString();
  120. }
  121. }
  122. }
  123. }
  124. }
  125. }