ProcessOverviewRepository.cs 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. using AutoMapper;
  2. using OASystem.Domain;
  3. using OASystem.Domain.Entities.Groups;
  4. using OASystem.Domain.ViewModels.JuHeExchangeRate;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. namespace OASystem.Infrastructure.Repositories.Groups
  11. {
  12. /// <summary>
  13. /// 团组流程总览表仓储
  14. /// </summary>
  15. public class ProcessOverviewRepository : BaseRepository<Grp_ProcessOverview, Grp_ProcessOverview>
  16. {
  17. private readonly IMapper _mapper;
  18. private readonly DelegationInfoRepository _groupRep;
  19. public ProcessOverviewRepository(SqlSugarClient sqlSugar, IMapper mapper, DelegationInfoRepository groupRep) : base(sqlSugar)
  20. {
  21. _mapper = mapper;
  22. _groupRep = groupRep;
  23. }
  24. /// <summary>
  25. /// 团组流程初始化
  26. /// </summary>
  27. /// <param name="request">创建流程请求参数</param>
  28. /// <returns>创建的流程信息</returns>
  29. public async Task<Result> ProcessInitAsync(int groupId,int currUserId)
  30. {
  31. //团组验证
  32. var groupInfo = await _sqlSugar.Queryable<Grp_DelegationInfo>().FirstAsync(g => g.Id == groupId);
  33. if (groupInfo == null)
  34. {
  35. return new Result { Code = 400, Msg = "团组不存在" };
  36. }
  37. // 检查是否已存在流程
  38. var existingProcesses = await _sqlSugar.Queryable<Grp_ProcessOverview>().Where(p => p.GroupId == groupId).ToListAsync();
  39. if (existingProcesses.Any())
  40. {
  41. return new Result { Code = 400, Msg = "该团组的流程已存在" };
  42. }
  43. //处理签证国家
  44. var visaCountries = _groupRep.GroupSplitCountry(groupInfo.VisitCountry);
  45. // 定义默认的流程节点
  46. var processs = Grp_ProcessOverview.ProcessInit(groupId,currUserId,visaCountries);
  47. _sqlSugar.BeginTran();
  48. foreach (var item in processs)
  49. {
  50. var processId = await _sqlSugar.Insertable(item).ExecuteReturnIdentityAsync();
  51. if (processId < 1 )
  52. {
  53. _sqlSugar.RollbackTran();
  54. return new Result { Code = 400, Msg = "团组流程进度总览表添加失败!" };
  55. }
  56. var nodes = item.Nodes.Select((nodeDto, index) => new Grp_ProcessNode
  57. {
  58. ProcessId = processId,
  59. NodeName = nodeDto.NodeName,
  60. NodeOrder = nodeDto.NodeOrder,
  61. OverallStatus = ProcessStatus.UnStarted,
  62. //Country = nodeDto.Country,
  63. IsCurrent = nodeDto.IsCurrent,
  64. }).ToList();
  65. var nodeIds = await _sqlSugar.Insertable(nodes).ExecuteCommandAsync();
  66. if (nodeIds < 1)
  67. {
  68. _sqlSugar.RollbackTran();
  69. return new Result { Code = 400, Msg = "团组流程进度流程表添加失败!" };
  70. }
  71. }
  72. return new Result { Code = 200, Msg = "添加成功!" }; ;
  73. }
  74. }
  75. }