WePackageAppService.cs 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. using System.Collections.Generic;
  2. using System.Data.Entity;
  3. using System.Linq;
  4. using System.Threading.Tasks;
  5. using Abp.Auditing;
  6. using Abp.Domain.Repositories;
  7. using Abp.Runtime.Caching;
  8. using WeEngine.CommonDto.WeInfo;
  9. using WePlatform.Configuration;
  10. using WePlatform.WeLib;
  11. using WePlatform.WeLib.Package;
  12. namespace WePlatform.DataCenter.Package
  13. {
  14. /// <summary>
  15. /// 方案包API
  16. /// </summary>
  17. [DisableAuditing]
  18. public class WePackageAppService:DataCenterAppServiceBase, IWePackageAppService
  19. {
  20. public WePackageAppService(IRepository<PackageXmlInfo> xmlRepository, IRepository<PackageInfo, string> packageRepository, PackageAppService packageApp,ICacheManager cacheManager, IRepository<SceneFlowInfo, string> flowRepository, IRepository<SceneInfo, string> sceneRepository)
  21. {
  22. XmlRepository = xmlRepository;
  23. PackageRepository = packageRepository;
  24. PackageApp = packageApp;
  25. FlowRepository = flowRepository;
  26. SceneRepository = sceneRepository;
  27. CacheManager = cacheManager;
  28. }
  29. protected IRepository<PackageXmlInfo> XmlRepository { get; }
  30. protected IRepository<PackageInfo,string> PackageRepository { get; }
  31. protected IRepository<SceneFlowInfo, string> FlowRepository { get; }
  32. protected IRepository<SceneInfo, string> SceneRepository { get; }
  33. protected PackageAppService PackageApp { get; }
  34. /// <summary>
  35. /// 获取全部方案包
  36. /// </summary>
  37. /// <returns></returns>
  38. public async Task<List<WePackageDto>> GetPackageInfos()
  39. {
  40. var list = await PackageRepository
  41. .GetAllIncluding(a => a.SceneCategoryInfo, a => a.EngineModelInfo,
  42. a => a.EngineModelInfo.EngineInfo).Where(a => a.PackageState == PackageStateDefinition.Solidified)
  43. .Select(a => new WePackageDto()
  44. {
  45. Id = a.Id,
  46. PackageName = a.PackageName,
  47. SceneCategory = a.SceneCategory,
  48. SceneCategoryName = a.SceneCategoryInfo.CategoryName,
  49. Variable = a.Variable,
  50. EngineModelNo = a.EngineModelNo,
  51. EngineModelName = a.EngineModelInfo.ModelName,
  52. EngineModelType = a.EngineModelInfo.ModelType,
  53. AssessRoleNames = a.AssessRoleNames,
  54. AssessAuto = a.AssessAuto
  55. }).ToListAsync();
  56. return list;
  57. }
  58. /// <summary>
  59. /// 查询方案包信息
  60. /// </summary>
  61. /// <param name="no">方案包编号</param>
  62. /// <returns></returns>
  63. public async Task<WePackageDto> GetPackageInfo(string no)
  64. {
  65. var result = await CacheManager.GetCache(IwbCacheNames.PackageCache).GetAsync($"P{no}", async () =>
  66. {
  67. var dto = await PackageRepository
  68. .GetAllIncluding(a => a.SceneCategoryInfo, a => a.EngineModelInfo,
  69. a => a.EngineModelInfo.EngineInfo).Where(a=>a.PackageState==PackageStateDefinition.Solidified)
  70. .Select(a => new WePackageDto()
  71. {
  72. Id = a.Id,
  73. PackageName = a.PackageName,
  74. SceneCategory = a.SceneCategory,
  75. SceneCategoryName = a.SceneCategoryInfo.CategoryName,
  76. Variable = a.Variable,
  77. EngineModelNo = a.EngineModelNo,
  78. EngineModelName = a.EngineModelInfo.ModelName,
  79. EngineModelType = a.EngineModelInfo.ModelType,
  80. AssessRoleNames = a.AssessRoleNames,
  81. AssessAuto = a.AssessAuto
  82. })
  83. .FirstOrDefaultAsync(a => a.Id == no);
  84. if (dto == null)
  85. {
  86. CheckErrors($"未查询到编号为【{no}】的方案包信息!");
  87. return null;
  88. }
  89. dto.AllRoles = await PackageApp.GetPackageRoleLists(no);
  90. return dto;
  91. });
  92. return result;
  93. }
  94. /// <summary>
  95. /// 查询方案包XML信息
  96. /// </summary>
  97. /// <param name="no">方案包编号</param>
  98. /// <returns></returns>
  99. public async Task<WePackageXmlDto> GetPackageXml(string no)
  100. {
  101. var result = await CacheManager.GetCache(IwbCacheNames.PackageCache).GetAsync($"PX{no}", async () =>
  102. {
  103. var xmlEntity = await XmlRepository.FirstOrDefaultAsync(a => a.PackageNo == no);
  104. if (xmlEntity == null)
  105. {
  106. CheckErrors($"未查询到编号为【{no}】的方案包详情,请确认方案包已固化!");
  107. return null;
  108. }
  109. var dto = new WePackageXmlDto()
  110. {
  111. PackageNo = xmlEntity.PackageNo,
  112. PackageXml = xmlEntity.PackageXml,
  113. FlowXml = xmlEntity.FlowXml,
  114. SceneXml = xmlEntity.SceneXml,
  115. BehaviorXml = xmlEntity.BehaviorXml,
  116. ComponentXml = xmlEntity.ComponentXml,
  117. EnvironResourceXml = xmlEntity.EnvironResourceXml,
  118. GuideXml = xmlEntity.GuideXml,
  119. AllRoles = xmlEntity.AllRoles
  120. };
  121. return dto;
  122. });
  123. return result;
  124. }
  125. /// <summary>
  126. /// 查询方案包详情
  127. /// </summary>
  128. /// <param name="no">方案包编号</param>
  129. /// <returns></returns>
  130. public async Task<WePackageDetailDto> GetPackageDetail(string no)
  131. {
  132. var detail = await PackageApp.GetSolidifiedPackageDetail(no);
  133. if (detail == null)
  134. {
  135. return null;
  136. }
  137. var dto= new WePackageDetailDto()
  138. {
  139. PackageNo = detail.PackageNo,
  140. AssessRoleNames = detail.AssessRoleNames,
  141. AllRoleNames = string.Join(",", detail.AllRoles.Select(a => a.ToString()).ToArray()),
  142. Detail = new WePackageDto()
  143. {
  144. Id = detail.Detail.Id,
  145. PackageName = detail.Detail.PackageName,
  146. SceneCategory = detail.Detail.SceneCategory,
  147. SceneCategoryName = detail.Detail.SceneCategoryName,
  148. EngineModelNo = detail.Detail.EngineModelNo,
  149. EngineModelType = detail.Detail.EngineModelType,
  150. EngineModelName = detail.Detail.EngineModelName,
  151. AllRoles = detail.AllRoles,
  152. AssessAuto = detail.Detail.AssessAuto,
  153. AssessRoleNames = detail.Detail.AssessRoleNames,
  154. Variable= detail.Detail.Variable
  155. },
  156. Scenes = detail.Scenes,
  157. Behaviors = detail.Behaviors,
  158. Guides = detail.Guides,
  159. EnvironResources = detail.EnvironResources,
  160. };
  161. return dto;
  162. }
  163. }
  164. }