SaveMattressBcpExcutor.cs 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  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 SaveMattressBcpExcutor : ExcutorBase<SaveMattressBcpRequest, SaveMattressBcpResponse>
  16. {
  17. protected override void ExcuteInternal(SaveMattressBcpRequest request, object state, SaveMattressBcpResponse 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. if(request.mattress.mxlist == null || !request.mattress.mxlist.Any())
  31. {
  32. rslt.ErrMsg = "缺少半成品明细";
  33. return;
  34. }
  35. using (var con = new SqlConnection(GlobalVar.ConnectionString))
  36. using (var cmd = con.CreateCommand())
  37. {
  38. con.Open();
  39. // 初始化属性
  40. AutoInit.AutoInitS(cmd, request.mattress);
  41. using (cmd.Transaction = con.BeginTransaction())
  42. {
  43. try
  44. {
  45. var dtNow = DateTime.Now;
  46. var fields = @"billdate,semi_finished_type,semi_finished_code,semi_finished_name,dscrp,production_size,hemming_process,
  47. hemmed_size,shrinkage_rate,elongation_rate,opemp,opdate,auditemp,auditdate";
  48. var fieldsMx = "billid,printid,mtrlid,formulaid,chastr,thickness,qty,erp_mtrlid,usenum,usedenom";
  49. if (request.mattress.billid <= 0)
  50. {
  51. //新建
  52. fields += ",billid,billcode";
  53. request.mattress.opdate = dtNow;
  54. request.mattress.opemp = tokendata.username;
  55. request.mattress.billid = BllHelper.GetID(cmd, "u_semi_finished_product");
  56. switch(request.mattress.semi_finished_type)
  57. {
  58. case 901:
  59. request.mattress.billcode = "JM";
  60. break;
  61. case 902:
  62. request.mattress.billcode = "JD";
  63. break;
  64. case 903:
  65. request.mattress.billcode = "BC";
  66. break;
  67. case 904:
  68. request.mattress.billcode = "XC";
  69. break;
  70. case 905:
  71. request.mattress.billcode = "VC";
  72. break;
  73. }
  74. // 编号-年月日+流水
  75. request.mattress.billcode = $"{request.mattress.billcode}-{dtNow.ToString("yyyyMMdd")}{(request.mattress.billid.Value % 10000).ToString("D4")}";
  76. DbSqlHelper.Insert(cmd, "u_semi_finished_product", null, request.mattress, fields);
  77. }
  78. else
  79. {
  80. //修改
  81. cmd.CommandText = @"DELETE FROM u_semi_finished_product_mx WHERE billid = @billid";
  82. cmd.Parameters.Clear();
  83. cmd.Parameters.AddWithValue("@billid", request.mattress.billid);
  84. cmd.ExecuteNonQuery();
  85. DbSqlHelper.Update(cmd, "u_semi_finished_product", null, request.mattress, "billid", fields);
  86. }
  87. var cnt = 0;
  88. foreach (var mx in request.mattress.mxlist)
  89. {
  90. AutoInit.AutoInitS(cmd, mx);
  91. mx.billid = request.mattress.billid;
  92. mx.printid = ++cnt;
  93. DbSqlHelper.Insert(cmd, "u_semi_finished_product_mx", null, mx, fieldsMx);
  94. }
  95. var hisprice = new u_his_price
  96. {
  97. bednetid_mattressid = request.mattress.billid,
  98. typeid = 2,
  99. cmpdate = dtNow,
  100. cmpemp = tokendata.username,
  101. nottax_dept_cost = 0,
  102. dept_cost = 0,
  103. foreign_cost = 0
  104. };
  105. var fieldsHs = "bednetid_mattressid, typeid, cmpdate, cmpemp, nottax_dept_cost, dept_cost, foreign_cost";
  106. DbSqlHelper.Insert(cmd, "u_his_price", null, hisprice, fieldsHs);
  107. cmd.Transaction.Commit();
  108. rslt.mattress = new u_semi_finished_product() { billid = request.mattress.billid, billcode = request.mattress.billcode };
  109. }
  110. catch (Exception e)
  111. {
  112. cmd.Transaction.Rollback();
  113. rslt.ErrMsg = e.ToString();
  114. }
  115. }
  116. }
  117. }
  118. }
  119. }