SequenceService.cs 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. using DapperORMCore.Context.DataContext;
  2. using DapperORMCore.Context.Extend;
  3. using DapperORMCore.Model.BaseModel;
  4. using DapperORMCore.Model.CoreModel;
  5. using DapperORMCore.Repository.IRepositorys;
  6. using DapperORMCore.String.Consts;
  7. using DapperORMCore.String.Enums;
  8. using Microsoft.Extensions.Configuration;
  9. using NXWMS.Code;
  10. using NXWMS.DataAccess.Entity;
  11. using NXWMS.IService.NXWMS;
  12. using NXWMS.Model.AppModels.Condition;
  13. using NXWMS.Model.AppModels.Result;
  14. using NXWMS.Model.AppModels.Result.SysSettings;
  15. using NXWMS.Model.Common;
  16. using System;
  17. using System.Collections.Generic;
  18. using System.IO;
  19. using System.Linq;
  20. using System.Text;
  21. using System.Threading.Tasks;
  22. using WestDistance.DapperORM.Repository.Repositorys;
  23. namespace NXWMS.Service.NXWMS
  24. {
  25. /// <summary>
  26. /// 主键接口
  27. /// </summary>
  28. [AutoInject(typeof(ISequenceService), InjectType.Scope)]
  29. public class SequenceService : ServiceBase, ISequenceService
  30. {
  31. /// <summary>
  32. /// 系统操作仓储中转
  33. /// </summary>
  34. private IDataRepositoryContext _dataContext;
  35. /// <summary>
  36. /// 配置
  37. /// </summary>
  38. private IConfiguration _configuration;
  39. /// <summary>
  40. /// SQL节点仓储
  41. /// </summary>
  42. private ISQLNodeRepository _iSQLNodeRepository;
  43. public SequenceService(IDataRepositoryContext dataRepositoryContext, IConfiguration configuration, ISQLNodeRepository iSQLNodeRepository)
  44. {
  45. this._dataContext = dataRepositoryContext;
  46. this._configuration = configuration;
  47. this._iSQLNodeRepository = iSQLNodeRepository;
  48. }
  49. /// <summary>
  50. /// 获取单一主键当前配置
  51. /// </summary>
  52. /// <param name="info"></param>
  53. /// <returns></returns>
  54. public OperateResultInfo<SequenceResult> Get(SequenceCondition info)
  55. {
  56. var whereList = GetFieldKeyList(info);
  57. var result = new DataRepository<SequenceResult>(_dataContext).Query("SYS_SEQUENCE", whereList).FirstOrDefault();
  58. if (result != null)
  59. {
  60. return SuccessStatus(result);
  61. }
  62. return FailStatus<SequenceResult>();
  63. }
  64. /// <summary>
  65. ///
  66. /// </summary>
  67. /// <param name="info"></param>
  68. /// <returns></returns>
  69. public OperateResultInfo<string> GetNext(SequenceCondition info)
  70. {
  71. return null;
  72. }
  73. /// <summary>
  74. /// 获取主键配置列表
  75. /// </summary>
  76. /// <param name="info"></param>
  77. /// <returns></returns>
  78. public OperateResultInfo<List<SequenceResult>> GetList(SequenceSearchCondition info)
  79. {
  80. var sqlAndBuilder = new StringBuilder();
  81. var sqlOrBuilder = new StringBuilder();
  82. var sql = @"SELECT
  83. CreateName = (SELECT USER_NAME FROM SYS_USER A WHERE A.USER_ID=CREATE_BY),
  84. UpdateName = (SELECT USER_NAME FROM SYS_USER B WHERE B.USER_ID=UPDATE_BY),
  85. * FROM SYS_SEQUENCE WHERE 1=1 AND DEL_FLAG = 0 ";
  86. if (info.IsUsed != null)
  87. {
  88. sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("USED_FLAG", info.IsUsed, DBOperationString._Equal));
  89. }
  90. if (info.SQId != null)
  91. {
  92. if (info.SQId > 0)
  93. {
  94. sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("SQ_ID", info.SQId, DBOperationString._Equal));
  95. }
  96. }
  97. if (!string.IsNullOrWhiteSpace(info.SQCode))
  98. {
  99. sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("SQ_CODE", info.SQCode, DBOperationString._ContainIn));
  100. }
  101. if (info.SQType != null)
  102. {
  103. sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("SQ_TYPE", info.SQType, DBOperationString._Equal));
  104. }
  105. if (!string.IsNullOrWhiteSpace(info.SQIds))
  106. {
  107. sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("SQ_ID", info.SQIds, DBOperationString._In));
  108. }
  109. var result = new DataRepository<SequenceResult>(_dataContext).Query(sql);
  110. return SuccessStatus(result.ToList());
  111. }
  112. #region Private
  113. /// <summary>
  114. /// 条件统一下,用统一筛选
  115. /// </summary>
  116. /// <param name="userCondition"></param>
  117. /// <returns></returns>
  118. private List<FieldKeyInfo> GetFieldKeyList(SequenceCondition info)
  119. {
  120. var whereList = new List<FieldKeyInfo>();
  121. whereList = info.NewId != null ? whereList.AddFieldKeyInfo(nameof(SYS_SEQUENCE.NEWID), info.NewId, EnumCSharpPropertyType.STRING, DBOperationString._Equal) : whereList;
  122. whereList = !string.IsNullOrWhiteSpace(info.SQCode) ? whereList.AddFieldKeyInfo(nameof(SYS_SEQUENCE.SQ_CODE), info.SQCode, EnumCSharpPropertyType.STRING, DBOperationString._In) : whereList;
  123. whereList = info.SQId != null ? whereList.AddFieldKeyInfo(nameof(SYS_SEQUENCE.SQ_ID), info.SQId, EnumCSharpPropertyType.STRING, DBOperationString._Equal) : whereList;
  124. return whereList;
  125. }
  126. #endregion
  127. }
  128. }