ProcessService.Get.cs 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. using System.Collections.Generic;
  2. using System.Threading.Tasks;
  3. using Datory;
  4. using GxPress.Common.Tools;
  5. using GxPress.Entity.WorkProcessDto;
  6. using ProcessNodeDto = GxPress.Entity.WorkProcessDto.ProcessNodeDto;
  7. namespace GxPress.Service.Implement
  8. {
  9. public partial class ProcessService
  10. {
  11. public async Task<List<ProcessNodeDto>> GetAllAsync(int processId)
  12. {
  13. var process=new List<ProcessNodeDto>();
  14. var processNodes = await _processNodeRepository.GetAllAsync(processId);
  15. if (processNodes != null)
  16. {
  17. foreach (var node in processNodes)
  18. {
  19. var processNode = new ProcessNodeDto
  20. {
  21. Id = node.Id,
  22. Name = node.Name,
  23. Type = node.Type,
  24. ParentId = node.ParentId,
  25. ReadOnlyFields = StringUtils.StringCollectionToIntList(node.ReadOnlyFields),
  26. HiddenFields = StringUtils.StringCollectionToIntList(node.HiddenFields),
  27. AllowMeeting = node.AllowMeeting,
  28. ApprovalType = node.ApprovalType,
  29. DefaultApprovalUserId = node.DefaultApprovalUserId,
  30. DefaultApprovalUserName = await _userRepository.GetNameAsync(node.DefaultApprovalUserId),
  31. CaseLevel = node.CaseLevel
  32. };
  33. process.Add(processNode);
  34. }
  35. return process;
  36. }
  37. return new List<ProcessNodeDto>();
  38. }
  39. public async Task<ProcessDto> GetAsync(int processId)
  40. {
  41. var process = await _processRepository.GetAsync(processId);
  42. var result = _mapper.Map<ProcessDto>(process);
  43. //2.���淢������
  44. result.RequestLimits = new List<RequestLimit>();
  45. var requestLimits = await _processRequestLimitRepository.GetListAsync(processId);
  46. foreach (var limit in requestLimits)
  47. {
  48. result.RequestLimits.Add(new RequestLimit
  49. {
  50. DepartmentId = limit.DepartmentId,
  51. DepartmentName = await _departmentRepository.GetNameAsync(limit.DepartmentId),
  52. RoleId = limit.RoleId,
  53. RoleName = await _roleRepository.GetNameAsync(limit.RoleId),
  54. UserId = limit.UserId,
  55. UserName = await _userRepository.GetNameAsync(limit.UserId)
  56. });
  57. }
  58. //3.�����������
  59. var formFields = await _processFieldRepository.GetListAsync(processId);
  60. if (formFields != null)
  61. {
  62. result.FormFields = new List<FormField>();
  63. foreach (var field in formFields)
  64. {
  65. result.FormFields.Add(new FormField
  66. {
  67. Id = field.Id,
  68. Label = field.Label,
  69. Placeholder = field.Placeholder,
  70. Required = field.Required,
  71. Sort = field.Sort,
  72. Type = field.Type,
  73. Unit = field.Unit,
  74. Options = StringUtils.StringCollectionToStringList(field.Options)
  75. });
  76. }
  77. }
  78. //4.����ڵ㶨��
  79. result.ProcessNodes = await GetNodesAsync(processId, 0);
  80. return result;
  81. }
  82. public async Task<List<ProcessNodeDto>> GetNodesAsync(int processId, int parentId)
  83. {
  84. var nodes = new List<ProcessNodeDto>();
  85. var processNodes = await _processNodeRepository.GetListAsync(processId, parentId);
  86. //4.����ڵ㶨��
  87. if (processNodes != null)
  88. {
  89. foreach (var node in processNodes)
  90. {
  91. var processNode = new ProcessNodeDto
  92. {
  93. Id = node.Id,
  94. Name = node.Name,
  95. Type = node.Type,
  96. ParentId = node.ParentId,
  97. ReadOnlyFields = StringUtils.StringCollectionToIntList(node.ReadOnlyFields),
  98. HiddenFields = StringUtils.StringCollectionToIntList(node.HiddenFields),
  99. AllowMeeting = node.AllowMeeting,
  100. ApprovalType = node.ApprovalType,
  101. DefaultApprovalUserId = node.DefaultApprovalUserId,
  102. DefaultApprovalUserName = await _userRepository.GetNameAsync(node.DefaultApprovalUserId),
  103. CaseLevel = node.CaseLevel
  104. };
  105. var carbonCopies = await _ruleCarbonCopyRepository.GetListAsync(node.Id);
  106. if (carbonCopies != null)
  107. {
  108. processNode.CarbonCopies = new List<CarbonCopy>();
  109. foreach (var cc in carbonCopies)
  110. {
  111. processNode.CarbonCopies.Add(new CarbonCopy
  112. {
  113. DepartmentId = cc.DepartmentId,
  114. DepartmentName = await _departmentRepository.GetNameAsync(cc.DepartmentId),
  115. RoleId = cc.RoleId,
  116. RoleName = await _roleRepository.GetNameAsync(cc.RoleId),
  117. UserId = cc.UserId,
  118. UserName = await _userRepository.GetNameAsync(cc.UserId)
  119. });
  120. }
  121. }
  122. var approverChecks = await _ruleApproverCheckRepository.GetListAsync(node.Id);
  123. if (approverChecks != null)
  124. {
  125. processNode.ApproverChecks = new List<ApproverCheck>();
  126. foreach (var ac in approverChecks)
  127. {
  128. processNode.ApproverChecks.Add(new ApproverCheck
  129. {
  130. DepartmentId = ac.DepartmentId,
  131. DepartmentName = await _departmentRepository.GetNameAsync(ac.DepartmentId),
  132. RoleId = ac.RoleId,
  133. RoleName = await _roleRepository.GetNameAsync(ac.RoleId),
  134. UserId = ac.UserId,
  135. UserName = await _userRepository.GetNameAsync(ac.UserId)
  136. });
  137. }
  138. }
  139. var conditions = await _ruleConditionRepository.GetListAsync(node.Id);
  140. if (conditions != null)
  141. {
  142. processNode.Conditions = new List<Condition>();
  143. foreach (var condition in conditions)
  144. {
  145. processNode.Conditions.Add(new Condition
  146. {
  147. FieldId = condition.FieldId,
  148. Operator = condition.Operator,
  149. StringValue = condition.StringValue,
  150. StringValues = StringUtils.StringCollectionToStringList(condition.StringValues),
  151. IntValue = condition.IntValue,
  152. Sort = condition.Sort
  153. });
  154. }
  155. }
  156. //foreach (var condition in node.ConditionNodes)
  157. //{
  158. // await _conditionRuleRepository.InsertAsync(new ConditionRule
  159. // {
  160. // NodeId = nodeId,
  161. // MinValue = condition.MinValue,
  162. // EqualValue = condition.EqualValue,
  163. // MaxValue = condition.MaxValue,
  164. // Sort = condition.Sort
  165. // });
  166. //}
  167. processNode.Children = await GetNodesAsync(processId, node.Id);
  168. nodes.Add(processNode);
  169. }
  170. }
  171. return nodes;
  172. }
  173. }
  174. }