GrpScheduleRepository.cs 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. using OASystem.Domain.Dtos.Groups;
  2. using OASystem.Domain.Entities.Groups;
  3. using OASystem.Domain.ViewModels.Groups;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. namespace OASystem.Infrastructure.Repositories.Groups
  10. {
  11. public class GrpScheduleRepository : BaseRepository<Grp_ScheduleInfo, Grp_ScheduleInfo>
  12. {
  13. public GrpScheduleRepository(SqlSugarClient sqlSugar) : base(sqlSugar)
  14. {
  15. }
  16. public string SetSql_GrpScheduleDto(Grp_ScheduleDto _dto)
  17. {
  18. string sqlWhere = string.Empty;
  19. if (_dto.SysUserId > 0)
  20. {
  21. sqlWhere += string.Format(@" And s.Id in ( Select Id From Grp_SchedulePerson With(Nolock) Where SysUserId = '{0}' ) ", _dto.SysUserId);
  22. }
  23. if (_dto.ScheduleId > 0)
  24. {
  25. sqlWhere += string.Format(@" And s.Id = '{0}' ", _dto.ScheduleId);
  26. }
  27. if (!string.IsNullOrEmpty(sqlWhere.Trim()))
  28. {
  29. Regex r = new Regex("And");
  30. sqlWhere = r.Replace(sqlWhere, "Where", 1);
  31. }
  32. string sql = string.Format(@" Select s.Id,s.DiId,di.TeamName as DeleName,s.PrimaryStep,s.ExpectBeginDt,s.ExpectEndDt,s.Leader,s.Exception,u.CnName as LeaderName
  33. From Grp_Schedule as s With(Nolock) Inner Join Grp_DelegationInfo as di With(Nolock) On s.DiId=di.Id
  34. Inner Join Sys_Users as u With(Nolock) On s.Leader=u.Id
  35. {0} ", sqlWhere);
  36. return sql;
  37. }
  38. /// <summary>
  39. /// 获取团组流程数据单个对象
  40. /// </summary>
  41. /// <typeparam name="T"></typeparam>
  42. /// <param name="_dto"></param>
  43. /// <returns></returns>
  44. public async Task<Grp_ScheduleCombinView> GetView_GrpSchedule(Grp_ScheduleDto _dto)
  45. {
  46. Grp_ScheduleCombinView _view = new Grp_ScheduleCombinView();
  47. #region 主流程
  48. string sql = this.SetSql_GrpScheduleDto(_dto);
  49. Grp_ScheduleView primary = await _sqlSugar.SqlQueryable<Grp_ScheduleView>(sql).FirstAsync();
  50. #endregion
  51. _view.Primary = primary;
  52. #region 主流程节点
  53. List<Grp_ScheduleRootView> rootList = new List<Grp_ScheduleRootView>()
  54. {
  55. new Grp_ScheduleRootView() { Root = (int)GrpSchedulePrimaryStepEnum.Wait },
  56. new Grp_ScheduleRootView() { Root = (int)GrpSchedulePrimaryStepEnum.Confirm},
  57. new Grp_ScheduleRootView() { Root = (int)GrpSchedulePrimaryStepEnum.Budget},
  58. new Grp_ScheduleRootView() { Root = (int)GrpSchedulePrimaryStepEnum.Feedback},
  59. new Grp_ScheduleRootView() { Root = (int)GrpSchedulePrimaryStepEnum.Puote},
  60. new Grp_ScheduleRootView() { Root = (int)GrpSchedulePrimaryStepEnum.Visa},
  61. new Grp_ScheduleRootView() { Root = (int)GrpSchedulePrimaryStepEnum.Business},
  62. new Grp_ScheduleRootView() { Root = (int)GrpSchedulePrimaryStepEnum.CostAudit},
  63. new Grp_ScheduleRootView() { Root = (int)GrpSchedulePrimaryStepEnum.Pay},
  64. new Grp_ScheduleRootView() { Root = (int)GrpSchedulePrimaryStepEnum.Training},
  65. new Grp_ScheduleRootView() { Root = (int)GrpSchedulePrimaryStepEnum.DropOff},
  66. new Grp_ScheduleRootView() { Root = (int)GrpSchedulePrimaryStepEnum.PickUp},
  67. new Grp_ScheduleRootView() { Root = (int)GrpSchedulePrimaryStepEnum.Collect},
  68. new Grp_ScheduleRootView() { Root = (int)GrpSchedulePrimaryStepEnum.Finish}
  69. };
  70. #endregion
  71. #region 子节点
  72. //子节点
  73. List<Grp_ScheduleDetailInfo> detailEntityList = _sqlSugar.Queryable<Grp_ScheduleDetailInfo>().Where(s => s.IsDel != 1 && s.ScheduleId == _dto.ScheduleId).ToList();
  74. List<Grp_ScheduleDetailView> childList = new List<Grp_ScheduleDetailView>();
  75. //区分2级节点 3级节点
  76. List<Grp_ScheduleDetailInfo> LV2List = detailEntityList.Where(s => s.SLevel == 2).ToList();
  77. List<Grp_ScheduleDetailInfo> LV3List = detailEntityList.Where(s => s.SLevel == 3).ToList();
  78. foreach (var item in LV2List)
  79. {
  80. Grp_ScheduleDetailView temp = new Grp_ScheduleDetailView();
  81. temp.Duty = item.Duty;
  82. temp.Exception = item.Exception;
  83. temp.ExpectBeginDt = item.ExpectBeginDt;
  84. temp.ExpectEndDt = item.ExpectEndDt;
  85. temp.DetailId = item.Id;
  86. temp.JobContent = item.JobContent;
  87. temp.Level = item.SLevel;
  88. temp.RealEndDt = item.RealEndDt;
  89. temp.Remark = item.Remark;
  90. temp.Root = item.ParentStep;
  91. temp.Step = item.Step;
  92. List<Grp_ScheduleDetailInfo> tempLv3List = LV3List.Where(s => s.ParentStep == item.Step).ToList();
  93. List<Grp_ScheduleDetailView> tempChildList = new List<Grp_ScheduleDetailView>();
  94. if (tempLv3List.Count > 0)
  95. {
  96. foreach (var item2 in tempLv3List)
  97. {
  98. Grp_ScheduleDetailView temp2 = new Grp_ScheduleDetailView();
  99. temp2.Duty = item2.Duty;
  100. temp2.Exception = item2.Exception;
  101. temp2.ExpectBeginDt = item2.ExpectBeginDt;
  102. temp2.ExpectEndDt = item2.ExpectEndDt;
  103. temp2.DetailId = item2.Id;
  104. temp2.JobContent = item2.JobContent;
  105. temp2.Level = item2.SLevel;
  106. temp2.RealEndDt = item2.RealEndDt;
  107. temp2.Remark = item2.Remark;
  108. temp2.Root = item2.ParentStep;
  109. temp2.Step = item2.Step;
  110. tempChildList.Add(temp2);
  111. }
  112. }
  113. temp.ChildList = new List<Grp_ScheduleDetailView>(tempChildList);
  114. childList.Add(temp);
  115. }
  116. #endregion
  117. foreach (var item in rootList)
  118. {
  119. item.ChildList = new List<Grp_ScheduleDetailView>(childList.Where(s => s.Root == item.Root).ToList());
  120. }
  121. _view.RootList = new List<Grp_ScheduleRootView>(rootList);
  122. #region 流程人员
  123. List<Grp_SchedulePersonInfo> personEntityList = _sqlSugar.Queryable<Grp_SchedulePersonInfo>().Where(s => s.IsDel != 1 && s.ScheduleId == _dto.ScheduleId).ToList();
  124. List<Grp_SchedulePersonView> personList = new List<Grp_SchedulePersonView>();
  125. foreach (var item in personEntityList)
  126. {
  127. Grp_SchedulePersonView temp = new Grp_SchedulePersonView();
  128. temp.JobStr = item.JobStr;
  129. temp.PersonId = item.Id;
  130. temp.PersonRemark = item.Remark;
  131. temp.SysUserId = item.SysUserId;
  132. temp.SysUserName = item.SysUserName;
  133. personList.Add(temp);
  134. }
  135. #endregion
  136. _view.PersonList = new List<Grp_SchedulePersonView>(personList);
  137. return _view;
  138. }
  139. /// <summary>
  140. /// 获取团组流程(列表分页)
  141. /// </summary>
  142. /// <param name="_dto"></param>
  143. /// <returns></returns>
  144. public async Task<List<Grp_ScheduleView>> GetViewList_GrpSchedule(Grp_ScheduleDto _dto)
  145. {
  146. List<Grp_ScheduleView> _viewList = new List<Grp_ScheduleView>();
  147. string sqlInner = this.SetSql_GrpScheduleDto(_dto);
  148. string sql = string.Format(@" Select * From ( Select ROW_NUMBER() Over(order By Id desc) as RowNumber,* From ( {2} ) ) as tb Where tb.RowNumber Between {0} And {1} ", (((_dto.PageIndex > 0) ? (_dto.PageIndex - 1) : 0) * _dto.PageSize) + 1, (((_dto.PageIndex > 0) ? (_dto.PageIndex - 1) : 0) + 1) * _dto.PageSize, sqlInner);
  149. _viewList = await _sqlSugar.SqlQueryable<Grp_ScheduleView>(sql).ToListAsync();
  150. return _viewList;
  151. }
  152. public void bulkInsert<T>(List<T> list) where T : class, new()
  153. {
  154. _sqlSugar.Insertable(list).UseParameter().ExecuteCommand();
  155. }
  156. public async Task<List<Grp_SchedulePersonInfo>> GetEntityList_SchedulePersonBySql(string sql)
  157. {
  158. List<Grp_SchedulePersonInfo> _list = new List<Grp_SchedulePersonInfo>();
  159. _list = await _sqlSugar.SqlQueryable<Grp_SchedulePersonInfo>(sql).ToListAsync();
  160. return _list;
  161. }
  162. }
  163. }