修改一版

This commit is contained in:
he
2022-05-30 14:55:48 +08:00
parent c6acbb21dc
commit 42d3ce58cc
10 changed files with 421 additions and 33 deletions
@@ -9,11 +9,31 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
{
public class GetReadModuleDto
{
public Guid TrialId { get; set; }
public Guid? TrialId { get; set; }
/// <summary>
/// 页码
/// </summary>
public int PageIndex { get; set; } = 1;
/// <summary>
/// 每页大小
/// </summary>
public int PageSize { get; set; } = 10;
/// <summary>
/// 排序字段
/// </summary>
public string? SortField { get; set; }
/// <summary>
/// 排序字段
/// </summary>
public bool SortAsc { get; set; } = true;
}
public class GetReadModuleOutDto: ReadModule
{
public class GetReadModuleOutDto : ReadModule
{
public string SubjectCode { get; set; }
@@ -25,6 +45,37 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public Guid? SiteId { get; set; }
}
public class GetReadModuleResultDto
{
/// <summary>
/// 当前页索引
/// </summary>
public int PageIndex { get; set; }
/// <summary>
/// 每页的记录条数
/// </summary>
public int PageSize { get; set; }
/// <summary>
/// 数据总数
/// </summary>
public long TotalCount { get; set; } = 0;
/// <summary>
/// 最大长度
/// </summary>
public int MaxLength { get; set; }
/// <summary>
/// 数据
/// </summary>
public List<GetReadModuleDtoOut> CurrentPageData { get; set; }
}
public class GetReadModuleDtoOut
{
@@ -0,0 +1,58 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace IRaCIS.Core.Application.Service.Reading.Dto
{
public class ReadingPeriodSetAddOrEdit : ReadingPeriodSet
{
}
public class ReadingPeriodSetView : ReadingPeriodSet
{
}
public class ReadingPeriodSetQuery
{
/// <summary>
/// 截止访视
/// </summary>
public decimal? ExpirationVisit { get; set; }
/// <summary>
/// 项目ID
/// </summary>
public Guid? TrialId { get; set; }
/// <summary>
/// 阅片期名称
/// </summary>
public string? ReadingPeriodName { get; set; }
/// <summary>
/// 页码
/// </summary>
public int PageIndex { get; set; } = 1;
/// <summary>
/// 每页大小
/// </summary>
public int PageSize { get; set; } = 10;
/// <summary>
/// 排序字段
/// </summary>
public string? SortField { get; set; }
/// <summary>
/// 排序字段
/// </summary>
public bool SortAsc { get; set; } = true;
}
}
@@ -16,10 +16,14 @@ namespace IRaCIS.Application.Services
{
public IRepository<SubjectVisit> _subjectVisitRepository;
public ReadModuleService(IRepository<SubjectVisit> subjectVisitRepository
private readonly IRepository<Subject> _subjectRepository;
public ReadModuleService(IRepository<SubjectVisit> subjectVisitRepository,
IRepository<Subject> subjectRepository
)
{
_subjectVisitRepository = subjectVisitRepository;
this._subjectRepository = subjectRepository;
}
@@ -27,35 +31,52 @@ namespace IRaCIS.Application.Services
/// 获取读片模块
/// </summary>
[HttpPost]
public async Task<List<GetReadModuleDtoOut>> GetReadModule(GetReadModuleDto dto)
public async Task<GetReadModuleResultDto> GetReadModule(GetReadModuleDto dto)
{
var visits = await _subjectVisitRepository.Where(x => x.TrialId == dto.TrialId).Include(x=>x.Subject).Include(x => x.Site)
.Select(x=>new GetReadModuleOutDto ()
{
CreateTime=x.CreateTime,
Id=x.Id,
SubjectId=x.SubjectId,
SubjectVisitId=x.Id,
IsUrgent=x.IsUrgent,
ModuleName= x.InPlan?"计划内访视":"计划外访视",
ModuleType= x.InPlan? ModuleTypeEnum.InPlanSubjectVisit: ModuleTypeEnum.OutPlanSubjectVisit,
SubjectCode=x.Subject.Code,
SiteCode=x.Site.SiteCode,
SiteId=x.Site.Id,
VisitName=x.VisitName,
}).ToListAsync();
var data = visits.GroupBy(x => new { x.SiteId, x.SubjectId, x.SiteCode, x.SubjectCode }).Select(x => new GetReadModuleDtoOut()
var subjectquery = _subjectRepository.WhereIf(dto.TrialId!=null, x => x.TrialId == dto.TrialId).Include(x => x.SubjectVisitList).Include(x=>x.Site)
.Select(x => new GetReadModuleDtoOut
{
SiteCode = x.Site.SiteCode,
SiteId = x.SiteId,
SubjectCode = x.Code,
SubjectId = x.Id,
Data=x.SubjectVisitList.Select(y=>new GetReadModuleOutDto()
{
CreateTime = y.CreateTime,
Id = y.Id,
SubjectId = x.Id,
SubjectVisitId = y.Id,
IsUrgent = x.IsUrgent,
ModuleName = y.InPlan ? "计划内访视" : "计划外访视",
ModuleType = y.InPlan ? ModuleTypeEnum.InPlanSubjectVisit : ModuleTypeEnum.OutPlanSubjectVisit,
SubjectCode = y.Subject.Code,
SiteCode = x.Site.SiteCode,
SiteId = x.Site.Id,
VisitName = y.VisitName,
}).ToList()
});
var pageList = await subjectquery.ToPagedListAsync(dto.PageIndex, dto.PageSize, dto.SortField == null ? "SiteCode" : dto.SortField,
dto.SortAsc);
GetReadModuleResultDto resultDto = new GetReadModuleResultDto()
{
CurrentPageData = pageList.CurrentPageData.ToList(),
PageSize = pageList.PageSize,
MaxLength = pageList.CurrentPageData.ToList().Max(x => x.Data.Count),
PageIndex = pageList.PageIndex,
TotalCount = pageList.TotalCount,
SiteCode = x.Key.SiteCode,
SiteId = x.Key.SiteId,
SubjectCode = x.Key.SubjectCode,
SubjectId = x.Key.SubjectId,
Data = x.ToList().OrderBy(y => y.ModuleType).ToList(),
}).ToList();
};
return data;
return resultDto;
}
@@ -0,0 +1,75 @@
using IRaCIS.Application.Interfaces;
using IRaCIS.Core.Infra.EFCore;
using IRaCIS.Core.Domain.Share;
using IRaCIS.Core.Application.Filter;
using Microsoft.AspNetCore.Mvc;
using IRaCIS.Core.Application.Service.WorkLoad.DTO;
using Microsoft.AspNetCore.Authorization;
using IRaCIS.Core.Application.Auth;
using IRaCIS.Core.Application.Service.Reading.Dto;
using IRaCIS.Core.Domain.Share.Reading;
namespace IRaCIS.Application.Services
{
[ApiExplorerSettings(GroupName = "Reading")]
public class ReadingPeriodSetService : BaseService
{
public IRepository<SubjectVisit> _subjectVisitRepository;
private readonly IRepository<ReadingPeriodSet> _readingPeriodSetRepository;
public ReadingPeriodSetService(IRepository<SubjectVisit> subjectVisitRepository,
IRepository<ReadingPeriodSet> ReadingPeriodSetRepository
)
{
_subjectVisitRepository = subjectVisitRepository;
_readingPeriodSetRepository = ReadingPeriodSetRepository;
}
/// <summary>
/// 新增或者修改
/// </summary>
/// <param name="addOrEditReadingPeriodSet"></param>
/// <returns></returns>
[HttpPost]
public async Task<IResponseOutput> AddOrUpdateReadingPeriodSet(ReadingPeriodSetAddOrEdit addOrEditReadingPeriodSet)
{
var entity = await _repository.InsertOrUpdateAsync<ReadingPeriodSet, ReadingPeriodSetAddOrEdit>(addOrEditReadingPeriodSet, true);
return ResponseOutput.Ok(entity.Id.ToString());
}
/// <summary>
/// 分页获取
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
[HttpPost]
public async Task<PageOutput<ReadingPeriodSetView>> GetReadingPeriodSetList(ReadingPeriodSetQuery query)
{
var readquery =_readingPeriodSetRepository.AsQueryable()
.WhereIf(query.TrialId!=null,x=>x.TrialId==query.TrialId)
.WhereIf(query.ReadingPeriodName != null, x => x.ReadingPeriodName.Contains(query.ReadingPeriodName))
.ProjectTo<ReadingPeriodSetView>(_mapper.ConfigurationProvider);
var pageList= await readquery.ToPagedListAsync(query.PageIndex, query.PageSize, query.SortField == null ? "CreateTime" : query.SortField,
query.SortAsc);
return pageList;
}
/// <summary>
/// 删除
/// </summary>
/// <param name="readingPeriodSetId"></param>
/// <returns></returns>
[HttpDelete("{readingPeriodSetId:guid}")]
public async Task<IResponseOutput> DeleteReadingPeriodSet(Guid readingPeriodSetId)
{
var success = await _repository.BatchDeleteAsync<ReadingPeriodSet>(t => t.Id == readingPeriodSetId);
return ResponseOutput.Result(success);
}
}
}
@@ -0,0 +1,21 @@
using AutoMapper;
using IRaCIS.Application.Contracts;
using IRaCIS.Core.Application.Contracts;
using IRaCIS.Core.Application.Service.Reading.Dto;
using IRaCIS.Core.Application.ViewModel;
using IRaCIS.Core.Domain.Models;
namespace IRaCIS.Core.Application.Service
{
public class ReadingConfig : Profile
{
public ReadingConfig()
{
CreateMap<ReadingPeriodSet, ReadingPeriodSetAddOrEdit>().ReverseMap();
CreateMap<ReadingPeriodSet, ReadingPeriodSetView>();
}
}
}