using Infrastructure.Attribute; using Microsoft.AspNetCore.Http; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using ARW.Model; using ARW.Repository; using ARW.Repository.Business.Project.ProjectGroups; using ARW.Service.Api.IBusinessService.Project.ProjectGroups; using ARW.Model.Dto.Api.Project.ProjectGroups; using ARW.Model.Models.Business.Project.ProjectGroups; using ARW.Model.Vo.Api.Project.ProjectGroups; namespace ARW.Service.Api.BusinessService.Project.ProjectGroups { /// /// 项目分组接口实现类 /// [AppService(ServiceType = typeof(IProjectGroupServiceApi), ServiceLifetime = LifeTime.Transient)] public class ProjectGroupServiceImplApi : BaseService, IProjectGroupServiceApi { private readonly ProjectGroupRepository _ProjectGroupRepository; public ProjectGroupServiceImplApi(ProjectGroupRepository ProjectGroupRepository) { this._ProjectGroupRepository = ProjectGroupRepository; } #region Api接口代码 /// /// 查询项目分组树形列表(Api) /// /// /// public List GetProjectGroupTreeListApi(ProjectGroupQueryApiDto parm) { //开始拼装查询条件d var predicate = Expressionable.Create(); predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.ProjectGroupName), it => it.ProjectGroupName == parm.ProjectGroupName); var query = _ProjectGroupRepository .Queryable() .LeftJoin((s, c) => s.ProjectGroupParentGuid == c.ProjectGroupGuid) .Where(predicate.ToExpression()) .Where(s => s.ProjectGroupCustomerGuid == parm.ToolCustomerGuid) .OrderBy(s => s.ProjectGroupSort, OrderByType.Asc) .Select((s, c) => new ProjectGroupApiVo { ProjectGroupId = s.ProjectGroupId, ProjectGroupGuid = s.ProjectGroupGuid, ProjectGroupParentGuid = s.ProjectGroupParentGuid, ProjectGroupAncestralGuid = s.ProjectGroupAncestralGuid, ProjectGroupCustomerGuid = s.ProjectGroupCustomerGuid, ProjectGroupName = s.ProjectGroupName, ProjectGroupSort = s.ProjectGroupSort, ParentName = c.ProjectGroupName, }); return query.ToTree(it => it.Children, it => it.ProjectGroupParentGuid, 0); } /// /// 查询项目分组树形列表(Api) /// /// /// public List GetProjectGroupListApi(ProjectGroupQueryApiDto parm) { //开始拼装查询条件d var predicate = Expressionable.Create(); predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.ProjectGroupName), it => it.ProjectGroupName == parm.ProjectGroupName); var query = _ProjectGroupRepository .Queryable() .LeftJoin((s, c) => s.ProjectGroupParentGuid == c.ProjectGroupGuid) .Where(predicate.ToExpression()) .Where(s => s.ProjectGroupCustomerGuid == parm.ToolCustomerGuid) .OrderBy(s => s.ProjectGroupSort, OrderByType.Asc) .Select((s, c) => new ProjectGroupApiVo { ProjectGroupId = s.ProjectGroupId, ProjectGroupGuid = s.ProjectGroupGuid, ProjectGroupParentGuid = s.ProjectGroupParentGuid, ProjectGroupAncestralGuid = s.ProjectGroupAncestralGuid, ProjectGroupCustomerGuid = s.ProjectGroupCustomerGuid, ProjectGroupName = s.ProjectGroupName, ProjectGroupSort = s.ProjectGroupSort, ParentName = c.ProjectGroupName, }); return query.ToList(); } /// /// 查询项目分组详情(Api) /// /// /// public Task GetProjectGroupDetails(ProjectGroupApiDto parm) { var query = _ProjectGroupRepository .Queryable() .Where(s => s.ProjectGroupGuid == parm.ProjectGroupGuid) .Select(s => new ProjectGroupApiDetailsVo { ProjectGroupId = s.ProjectGroupId, ProjectGroupGuid = s.ProjectGroupGuid, ProjectGroupParentGuid = s.ProjectGroupParentGuid, ProjectGroupAncestralGuid = s.ProjectGroupAncestralGuid, ProjectGroupCustomerGuid = s.ProjectGroupCustomerGuid, ProjectGroupName = s.ProjectGroupName, ProjectGroupSort = s.ProjectGroupSort, }).Take(1); return query.ToJsonAsync(); } #endregion } }