67 lines
2.2 KiB
C#
67 lines
2.2 KiB
C#
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 ReadModuleService : BaseService
|
|
{
|
|
|
|
public IRepository<SubjectVisit> _subjectVisitRepository;
|
|
public ReadModuleService(IRepository<SubjectVisit> subjectVisitRepository
|
|
)
|
|
{
|
|
_subjectVisitRepository = subjectVisitRepository;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 添加或更新项目医生项目价格
|
|
/// </summary>
|
|
[HttpPost]
|
|
public async Task<List<GetReadModuleDtoOut>> 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,
|
|
}).ToListAsync();
|
|
|
|
var data = visits.GroupBy(x => new { x.SiteId, x.SubjectId, x.SiteCode, x.SubjectCode }).Select(x => new GetReadModuleDtoOut()
|
|
{
|
|
|
|
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;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
}
|