You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

144 lines
6.3 KiB

3 years ago
  1. using EasyBL.WebApi.Message;
  2. using Entity.Sugar;
  3. using Entity.ViewModels;
  4. using SqlSugar;
  5. using SqlSugar.Base;
  6. using System;
  7. namespace EasyBL.WEBAPP.SYS
  8. {
  9. public class ArgumentClassMaintain_QryService : ServiceBase
  10. {
  11. #region 參數類別管理(分頁查詢)
  12. /// <summary>
  13. /// 參數類別管理(分頁查詢)
  14. /// </summary>
  15. /// <param name="i_crm"></param>
  16. /// <returns></returns>
  17. public ResponseMessage QueryPage(RequestMessage i_crm)
  18. {
  19. ResponseMessage rm = null;
  20. string sMsg = null;
  21. var db = SugarBase.GetIntance();
  22. try
  23. {
  24. do
  25. {
  26. var pml = new PageModel
  27. {
  28. PageIndex = _fetchInt(i_crm, @"pageIndex"),
  29. PageSize = _fetchInt(i_crm, @"pageSize")
  30. };
  31. var iPageCount = 0;
  32. var sSortField = _fetchString(i_crm, @"sortField");
  33. var sSortOrder = _fetchString(i_crm, @"sortOrder");
  34. var sArgumentClassID = _fetchString(i_crm, @"ArgumentClassID");
  35. var sArgumentClassName = _fetchString(i_crm, @"ArgumentClassName");
  36. var sEffective = _fetchString(i_crm, @"Effective");
  37. var bExcel = _fetchBool(i_crm, @"Excel");
  38. pml.DataList = db.Queryable<OTB_SYS_ArgumentClass>()
  39. .Where(x => x.OrgID == i_crm.ORIGID && x.DelStatus != "Y" && x.ArgumentClassID.Contains(sArgumentClassID) && x.ArgumentClassName.Contains(sArgumentClassName) && sEffective.Contains(x.Effective))
  40. .Select(x => new View_SYS_ArgumentClass
  41. {
  42. ArgumentClassID = SqlFunc.GetSelfAndAutoFill(x.ArgumentClassID),
  43. OrderCount = SqlFunc.Subqueryable<OTB_SYS_ArgumentClass>().Where(p => p.DelStatus != "Y" && p.OrgID == x.OrgID).Count()
  44. })
  45. .OrderBy(sSortField, sSortOrder)
  46. .ToPageList(pml.PageIndex, bExcel ? 100000 : pml.PageSize, ref iPageCount);
  47. pml.Total = iPageCount;
  48. rm = new SuccessResponseMessage(null, i_crm);
  49. if (bExcel)
  50. {
  51. }
  52. else
  53. {
  54. rm.DATA.Add(BLWording.REL, pml);
  55. }
  56. } while (false);
  57. }
  58. catch (Exception ex)
  59. {
  60. sMsg = Util.GetLastExceptionMsg(ex);
  61. LogAndSendEmail(sMsg + "Params:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, "EasyBL.WEBAPP.SYS.ArgumentClassMaintain_QryService", "", "QueryPage(參數類別管理(分頁查詢))", "", "", "");
  62. }
  63. finally
  64. {
  65. if (null != sMsg)
  66. {
  67. rm = new ErrorResponseMessage(sMsg, i_crm);
  68. }
  69. }
  70. return rm;
  71. }
  72. #endregion 參數類別管理(分頁查詢)
  73. #region 參數類別管理(更新排序)
  74. /// <summary>
  75. /// 參數類別管理(更新排序)
  76. /// </summary>
  77. /// <param name="i_crm">todo: describe i_crm parameter on UpdImportCustomers</param>
  78. /// <returns></returns>
  79. public ResponseMessage UpdateOrderByValue(RequestMessage i_crm)
  80. {
  81. ResponseMessage rm = null;
  82. string sMsg = null;
  83. try
  84. {
  85. rm = SugarBase.ExecTran(db =>
  86. {
  87. do
  88. {
  89. var sId = _fetchString(i_crm, @"Id");
  90. var iOldOrderByValue = _fetchInt(i_crm, @"OldOrderByValue");
  91. var iNewOrderByValue = _fetchInt(i_crm, @"NewOrderByValue");
  92. var oOrderEntity = db.Queryable<OTB_SYS_ArgumentClass>().Single(x => x.OrgID == i_crm.ORIGID && x.ArgumentClassID == sId);
  93. if (iNewOrderByValue > iOldOrderByValue)
  94. {
  95. var iRelUp = db.Updateable<OTB_SYS_ArgumentClass>()
  96. .UpdateColumns(x => new OTB_SYS_ArgumentClass { OrderByValue = x.OrderByValue - 1 })
  97. .Where(x => x.OrgID == oOrderEntity.OrgID && x.OrderByValue <= iNewOrderByValue && x.OrderByValue > iOldOrderByValue)
  98. .ExecuteCommand();
  99. }
  100. else
  101. {
  102. var iRelDown = db.Updateable<OTB_SYS_ArgumentClass>()
  103. .UpdateColumns(x => new OTB_SYS_ArgumentClass { OrderByValue = x.OrderByValue + 1 })
  104. .Where(x => x.OrgID == oOrderEntity.OrgID && x.OrderByValue >= iNewOrderByValue && x.OrderByValue < iOldOrderByValue)
  105. .ExecuteCommand();
  106. }
  107. var iRelSelf = db.Updateable(new OTB_SYS_ArgumentClass { OrderByValue = iNewOrderByValue })
  108. .UpdateColumns(x => x.OrderByValue)
  109. .Where(x => x.OrgID == i_crm.ORIGID && x.ArgumentClassID == sId).ExecuteCommand();
  110. rm = new SuccessResponseMessage(null, i_crm);
  111. rm.DATA.Add(BLWording.REL, iRelSelf);
  112. } while (false);
  113. return rm;
  114. });
  115. }
  116. catch (Exception ex)
  117. {
  118. sMsg = Util.GetLastExceptionMsg(ex);
  119. LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(ArgumentClassMaintain_QryService), @"參數類別管理", @"UpdateOrderByValue(參數類別管理(更新排序))", @"", @"", @"");
  120. }
  121. finally
  122. {
  123. if (null != sMsg)
  124. {
  125. rm = new ErrorResponseMessage(sMsg, i_crm);
  126. }
  127. }
  128. return rm;
  129. }
  130. #endregion 參數類別管理(更新排序)
  131. }
  132. }