FlowService.Inbox.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using System.Threading.Tasks;
  2. using GxPress.Entity.WorkFlowDto;
  3. using System.Linq;
  4. using Datory;
  5. using System.Collections.Generic;
  6. namespace GxPress.Service.Implement
  7. {
  8. public partial class FlowService
  9. {
  10. public async Task<bool> AddInboxAsyc(FlowDto flow)
  11. {
  12. var user = await _userRepository.GetAsync(flow.UserId);
  13. var process = await _processRepository.GetAsync(flow.ProcessId);
  14. //获取收件人
  15. //获取抄送人
  16. var flowDtos = await _flowTodoRepository.GetListByFlowIdAsync(flow.Id);
  17. var addressUserIds = flowDtos.Where(n => n.Type == nameof(GxPress.EnumConst.TodoTypeConst.ApproverCheck)).Select(n => n.UserId).ToList();
  18. var ccUserIds = flowDtos.Where(n => n.Type == nameof(GxPress.EnumConst.TodoTypeConst.CarbonCopy)).Select(n => n.UserId).ToList();
  19. //收件人
  20. var addressUsers = await _userRepository.GetAllAsync(Q.WhereIn(nameof(Entity.User.Id), addressUserIds));
  21. //抄送人
  22. var ccUsers = await _userRepository.GetAllAsync(Q.WhereIn(nameof(Entity.User.Id), ccUserIds));
  23. //中间件
  24. var middles = new List<Entity.Middle.Middle>();
  25. var middle = new Entity.Middle.Middle
  26. {
  27. MiddleId = flow.Id,
  28. FolderType = GxPress.EnumConst.AllTypeConst.Inbox.GetHashCode(),
  29. IsTop = false,
  30. AttributeValue = 1,
  31. ParentId = 0,
  32. UserId = flow.UserId,
  33. MiddleSonId = 0,
  34. IsAdmin = false,
  35. NoticeAddresseeType = 0,
  36. IsRead = false
  37. };
  38. middles.Add(middle);
  39. var users = addressUsers.ToList();
  40. users.AddRange(ccUsers);
  41. foreach (var item in users.Distinct())
  42. {
  43. middle = new Entity.Middle.Middle
  44. {
  45. MiddleId = flow.Id,
  46. FolderType = GxPress.EnumConst.AllTypeConst.Inbox.GetHashCode(),
  47. IsTop = false,
  48. AttributeValue = 1,
  49. ParentId = 0,
  50. UserId = flow.UserId,
  51. MiddleSonId = 0,
  52. IsAdmin = false,
  53. NoticeAddresseeType = 0,
  54. IsRead = false
  55. };
  56. middles.Add(middle);
  57. }
  58. await middleRepository.InsertAsync(middles);
  59. return true;
  60. }
  61. }
  62. }