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.

159 lines
7.2 KiB

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