SaveMattressSubSpecsExcutor.cs 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data.SqlClient;
  4. using System.Diagnostics;
  5. using System.Linq;
  6. using System.Text;
  7. using DirectService.Tools;
  8. using JLHHJSvr.BLL;
  9. using JLHHJSvr.Com;
  10. using JLHHJSvr.Com.Model;
  11. using JLHHJSvr.Helper;
  12. using JLHHJSvr.LJException;
  13. using JLHHJSvr.Tools;
  14. using LJLib.DAL.SQL;
  15. using LJLib.Net.SPI.Server;
  16. using LJLib.SQLEX;
  17. using NPOI.SS.Formula.Functions;
  18. namespace JLHHJSvr.Excutor
  19. {
  20. internal sealed class SaveMattressSubSpecsExcutor : ExcutorBase<SaveMattressSubSpecsRequest, SaveMattressSubSpecsResponse>
  21. {
  22. protected override void ExcuteInternal(SaveMattressSubSpecsRequest request, object state, SaveMattressSubSpecsResponse rslt)
  23. {
  24. var tokendata = BllHelper.GetToken(request.token);
  25. if (tokendata == null)
  26. {
  27. rslt.ErrMsg = "会话已经中断,请重新登录";
  28. return;
  29. }
  30. if (request.mattress == null)
  31. {
  32. rslt.ErrMsg = "缺少主表信息";
  33. return;
  34. }
  35. using (var con = GlobalVar.ConnectionString.NewSqlConnection())
  36. using (var cmd = con.CreateCommand())
  37. {
  38. con.Open();
  39. var mattressHelper = HelperBase.GetHelper<MattressHelper>(cmd, new HelperBase.Context() { tokendata = tokendata });
  40. var _mattress = mattressHelper.GetMattress(request.mattress.mattressid);
  41. _mattress.mxList = mattressHelper.GetMattressMxMtrl(request.mattress.mattressid);
  42. _mattress.extraList = mattressHelper.GetMattressMxExtra(request.mattress.mattressid,1);
  43. _mattress.extraCostList = mattressHelper.GetMattressMxExtra(request.mattress.mattressid, 2);
  44. _mattress.subspecsList = request.subspecsList;
  45. var existing = mattressHelper.GetMattressSubspecs(request.mattress.mattressid, "mattressid,mattresscode,flag,js1_flag") ?? new List<u_mattress>();
  46. var oldIdSet = new HashSet<int>(existing.Where(t => t.flag == 0 && t.js1_flag == 0).Select(x => x.mattressid));
  47. var toUpdate = request.subspecsList.Where(x => oldIdSet.Contains(x.mattressid)).ToList();
  48. var toInsert = request.subspecsList.Where(x => x.mattressid == 0).ToList();
  49. var subspecsList = new List<u_mattress>();
  50. foreach (var child in toInsert)
  51. {
  52. subspecsList.Add(child);
  53. }
  54. foreach (var child in toUpdate)
  55. {
  56. subspecsList.Add(child);
  57. }
  58. using (cmd.Transaction = con.BeginTransaction())
  59. {
  60. try
  61. {
  62. mattressHelper.SaveSubSpecs(_mattress, subspecsList, false);
  63. rslt.mattressid = _mattress.mattressid;
  64. rslt.mattresscode = _mattress.mattresscode;
  65. cmd.Transaction.Commit();
  66. }
  67. catch (Exception e)
  68. {
  69. rslt.ErrMsg = e.Message;
  70. Trace.Write(e);
  71. cmd.Transaction?.Rollback();
  72. }
  73. }
  74. }
  75. }
  76. }
  77. }