using System.Collections.Generic; using System.Data.Entity; using System.Linq; using System.Threading.Tasks; using Abp.Auditing; using Abp.Domain.Repositories; using Abp.Runtime.Caching; using WeEngine.CommonDto.WeInfo; using WePlatform.Configuration; using WePlatform.WeLib; using WePlatform.WeLib.Package; namespace WePlatform.DataCenter.Package { /// /// 方案包API /// [DisableAuditing] public class WePackageAppService:DataCenterAppServiceBase, IWePackageAppService { public WePackageAppService(IRepository xmlRepository, IRepository packageRepository, PackageAppService packageApp,ICacheManager cacheManager, IRepository flowRepository, IRepository sceneRepository) { XmlRepository = xmlRepository; PackageRepository = packageRepository; PackageApp = packageApp; FlowRepository = flowRepository; SceneRepository = sceneRepository; CacheManager = cacheManager; } protected IRepository XmlRepository { get; } protected IRepository PackageRepository { get; } protected IRepository FlowRepository { get; } protected IRepository SceneRepository { get; } protected PackageAppService PackageApp { get; } /// /// 获取全部方案包 /// /// public async Task> GetPackageInfos() { var list = await PackageRepository .GetAllIncluding(a => a.SceneCategoryInfo, a => a.EngineModelInfo, a => a.EngineModelInfo.EngineInfo).Where(a => a.PackageState == PackageStateDefinition.Solidified) .Select(a => new WePackageDto() { Id = a.Id, PackageName = a.PackageName, SceneCategory = a.SceneCategory, SceneCategoryName = a.SceneCategoryInfo.CategoryName, Variable = a.Variable, EngineModelNo = a.EngineModelNo, EngineModelName = a.EngineModelInfo.ModelName, EngineModelType = a.EngineModelInfo.ModelType, AssessRoleNames = a.AssessRoleNames, AssessAuto = a.AssessAuto }).ToListAsync(); return list; } /// /// 查询方案包信息 /// /// 方案包编号 /// public async Task GetPackageInfo(string no) { var result = await CacheManager.GetCache(IwbCacheNames.PackageCache).GetAsync($"P{no}", async () => { var dto = await PackageRepository .GetAllIncluding(a => a.SceneCategoryInfo, a => a.EngineModelInfo, a => a.EngineModelInfo.EngineInfo).Where(a=>a.PackageState==PackageStateDefinition.Solidified) .Select(a => new WePackageDto() { Id = a.Id, PackageName = a.PackageName, SceneCategory = a.SceneCategory, SceneCategoryName = a.SceneCategoryInfo.CategoryName, Variable = a.Variable, EngineModelNo = a.EngineModelNo, EngineModelName = a.EngineModelInfo.ModelName, EngineModelType = a.EngineModelInfo.ModelType, AssessRoleNames = a.AssessRoleNames, AssessAuto = a.AssessAuto }) .FirstOrDefaultAsync(a => a.Id == no); if (dto == null) { CheckErrors($"未查询到编号为【{no}】的方案包信息!"); return null; } dto.AllRoles = await PackageApp.GetPackageRoleLists(no); return dto; }); return result; } /// /// 查询方案包XML信息 /// /// 方案包编号 /// public async Task GetPackageXml(string no) { var result = await CacheManager.GetCache(IwbCacheNames.PackageCache).GetAsync($"PX{no}", async () => { var xmlEntity = await XmlRepository.FirstOrDefaultAsync(a => a.PackageNo == no); if (xmlEntity == null) { CheckErrors($"未查询到编号为【{no}】的方案包详情,请确认方案包已固化!"); return null; } var dto = new WePackageXmlDto() { PackageNo = xmlEntity.PackageNo, PackageXml = xmlEntity.PackageXml, FlowXml = xmlEntity.FlowXml, SceneXml = xmlEntity.SceneXml, BehaviorXml = xmlEntity.BehaviorXml, ComponentXml = xmlEntity.ComponentXml, EnvironResourceXml = xmlEntity.EnvironResourceXml, GuideXml = xmlEntity.GuideXml, AllRoles = xmlEntity.AllRoles }; return dto; }); return result; } /// /// 查询方案包详情 /// /// 方案包编号 /// public async Task GetPackageDetail(string no) { var detail = await PackageApp.GetSolidifiedPackageDetail(no); if (detail == null) { return null; } var dto= new WePackageDetailDto() { PackageNo = detail.PackageNo, AssessRoleNames = detail.AssessRoleNames, AllRoleNames = string.Join(",", detail.AllRoles.Select(a => a.ToString()).ToArray()), Detail = new WePackageDto() { Id = detail.Detail.Id, PackageName = detail.Detail.PackageName, SceneCategory = detail.Detail.SceneCategory, SceneCategoryName = detail.Detail.SceneCategoryName, EngineModelNo = detail.Detail.EngineModelNo, EngineModelType = detail.Detail.EngineModelType, EngineModelName = detail.Detail.EngineModelName, AllRoles = detail.AllRoles, AssessAuto = detail.Detail.AssessAuto, AssessRoleNames = detail.Detail.AssessRoleNames, Variable= detail.Detail.Variable }, Scenes = detail.Scenes, Behaviors = detail.Behaviors, Guides = detail.Guides, EnvironResources = detail.EnvironResources, }; return dto; } } }