@ -25,6 +25,7 @@ using Volo.Abp.Domain.Repositories;
using Volo.Abp.Guids ;
using Volo.Abp.Guids ;
using Volo.Abp.Identity ;
using Volo.Abp.Identity ;
using Volo.Abp.ObjectMapping ;
using Volo.Abp.ObjectMapping ;
using Volo.Abp.Uow ;
using Volo.Abp.Users ;
using Volo.Abp.Users ;
using static Microsoft . EntityFrameworkCore . DbLoggerCategory ;
using static Microsoft . EntityFrameworkCore . DbLoggerCategory ;
@ -58,6 +59,8 @@ namespace Shentun.Peis.RegisterChecks
private readonly IRepository < LisRequest , Guid > _lisRequestRepository ;
private readonly IRepository < LisRequest , Guid > _lisRequestRepository ;
private readonly FollowUpAppService _followUpAppService ;
private readonly FollowUpAppService _followUpAppService ;
private readonly IRepository < DoctorSignIn , Guid > _doctorSignInRepository ;
private readonly IRepository < DoctorSignIn , Guid > _doctorSignInRepository ;
private readonly IRepository < GuideType , char > _guideTypeRepository ;
private readonly UnitOfWorkManager _unitOfWorkManager ;
public RegisterCheckAppService ( IRepository < RegisterCheck , Guid > registerCheckRepository ,
public RegisterCheckAppService ( IRepository < RegisterCheck , Guid > registerCheckRepository ,
IRepository < RegisterCheckItem > registerCheckItemRepository ,
IRepository < RegisterCheckItem > registerCheckItemRepository ,
@ -78,7 +81,9 @@ namespace Shentun.Peis.RegisterChecks
IRepository < ItemType > itemTypeRepository ,
IRepository < ItemType > itemTypeRepository ,
IRepository < LisRequest , Guid > lisRequestRepository ,
IRepository < LisRequest , Guid > lisRequestRepository ,
FollowUpAppService followUpAppService ,
FollowUpAppService followUpAppService ,
IRepository < DoctorSignIn , Guid > doctorSignInRepository )
IRepository < DoctorSignIn , Guid > doctorSignInRepository ,
IRepository < GuideType , char > guideTypeRepository ,
UnitOfWorkManager unitOfWorkManager )
{
{
_registerCheckRepository = registerCheckRepository ;
_registerCheckRepository = registerCheckRepository ;
_userRepository = userRepository ;
_userRepository = userRepository ;
@ -100,6 +105,8 @@ namespace Shentun.Peis.RegisterChecks
_lisRequestRepository = lisRequestRepository ;
_lisRequestRepository = lisRequestRepository ;
_followUpAppService = followUpAppService ;
_followUpAppService = followUpAppService ;
_doctorSignInRepository = doctorSignInRepository ;
_doctorSignInRepository = doctorSignInRepository ;
_guideTypeRepository = guideTypeRepository ;
_unitOfWorkManager = unitOfWorkManager ;
}
}
/// <summary>
/// <summary>
@ -580,7 +587,10 @@ namespace Shentun.Peis.RegisterChecks
join registerCheck in await _registerCheckRepository . GetQueryableAsync ( ) on patientRegister . Id equals registerCheck . PatientRegisterId
join registerCheck in await _registerCheckRepository . GetQueryableAsync ( ) on patientRegister . Id equals registerCheck . PatientRegisterId
join registerCheckAsbitem in await _registerCheckAsbitemRepository . GetQueryableAsync ( ) on registerCheck . Id equals registerCheckAsbitem . RegisterCheckId
join registerCheckAsbitem in await _registerCheckAsbitemRepository . GetQueryableAsync ( ) on registerCheck . Id equals registerCheckAsbitem . RegisterCheckId
join asbitem in await _asbitemRepository . GetQueryableAsync ( ) on registerCheckAsbitem . AsbitemId equals asbitem . Id
join asbitem in await _asbitemRepository . GetQueryableAsync ( ) on registerCheckAsbitem . AsbitemId equals asbitem . Id
join itemType in await _itemTypeRepository . GetQueryableAsync ( ) on asbitem . ItemTypeId equals itemType . Id
join guideType in await _guideTypeRepository . GetQueryableAsync ( ) on itemType . GuidTypeId equals guideType . Id
where input . PatientRegisterIds . Contains ( patientRegister . Id ) & & asbitem . IsCheck = = 'Y'
where input . PatientRegisterIds . Contains ( patientRegister . Id ) & & asbitem . IsCheck = = 'Y'
orderby guideType . DisplayOrder , asbitem . DisplayOrder
select new SimpleAsbitemDto
select new SimpleAsbitemDto
{
{
AsbitemId = registerCheckAsbitem . AsbitemId ,
AsbitemId = registerCheckAsbitem . AsbitemId ,
@ -656,28 +666,85 @@ namespace Shentun.Peis.RegisterChecks
if ( ! input . CheckDoctorDetail . Any ( ) )
if ( ! input . CheckDoctorDetail . Any ( ) )
throw new UserFriendlyException ( "需要修改的信息不能为空" ) ;
throw new UserFriendlyException ( "需要修改的信息不能为空" ) ;
var registerCheckAsbitemList = ( from patientRegister in await _patientRegisterRepository . GetQueryableAsync ( )
join registerCheck in await _registerCheckRepository . GetQueryableAsync ( ) on patientRegister . Id equals registerCheck . PatientRegisterId
join registerCheckAsbitem in await _registerCheckAsbitemRepository . GetQueryableAsync ( ) on registerCheck . Id equals registerCheckAsbitem . RegisterCheckId
where input . PatientRegisterIds . Contains ( patientRegister . Id )
select registerCheckAsbitem ) . ToList ( ) ;
//每次处理100条
int handNum = 1 0 0 ;
if ( registerCheckAsbitemList . Any ( ) )
//处理多少次
int handCount = Convert . ToInt32 ( Math . Ceiling ( Convert . ToDecimal ( input . PatientRegisterIds . Count ) / Convert . ToDecimal ( handNum ) ) ) ;
for ( int i = 0 ; i < handCount ; i + + )
{
{
foreach ( var registerCheckAsbitem in registerCheckAsbitemList )
using ( var uow = _unitOfWorkManager . Begin ( requiresNew : true , isTransactional : true ) )
{
{
var checkDoctorEnt = input . CheckDoctorDetail . FirstOrDefault ( f = > f . AsbitemId = = registerCheckAsbitem . AsbitemId ) ;
if ( checkDoctorEnt ! = null )
var tempPatientRegisterIds = input . PatientRegisterIds . Skip ( i * handNum ) . Take ( handNum ) . ToList ( ) ;
var registerCheckAsbitemList = ( from patientRegister in await _patientRegisterRepository . GetQueryableAsync ( )
join registerCheck in await _registerCheckRepository . GetQueryableAsync ( ) on patientRegister . Id equals registerCheck . PatientRegisterId
join registerCheckAsbitem in await _registerCheckAsbitemRepository . GetQueryableAsync ( ) on registerCheck . Id equals registerCheckAsbitem . RegisterCheckId
where tempPatientRegisterIds . Contains ( patientRegister . Id )
select registerCheckAsbitem ) . ToList ( ) ;
if ( registerCheckAsbitemList . Any ( ) )
{
{
var registerCheckEnt = await _registerCheckRepository . FirstOrDefaultAsync ( f = > f . Id = = registerCheckAsbitem . RegisterCheckId ) ;
if ( registerCheckEnt ! = null )
foreach ( var registerCheckAsbitem in registerCheckAsbitemList )
{
{
registerCheckEnt . CheckDoctorId = checkDoctorEnt . CheckDoctorId ;
await _registerCheckRepository . UpdateAsync ( registerCheckEnt ) ;
var checkDoctorEnt = input . CheckDoctorDetail . FirstOrDefault ( f = > f . AsbitemId = = registerCheckAsbitem . AsbitemId ) ;
if ( checkDoctorEnt ! = null )
{
var registerCheckEnt = await _registerCheckRepository . FirstOrDefaultAsync ( f = > f . Id = = registerCheckAsbitem . RegisterCheckId ) ;
if ( registerCheckEnt ! = null )
{
registerCheckEnt . CheckDoctorId = checkDoctorEnt . CheckDoctorId ;
await _registerCheckRepository . UpdateAsync ( registerCheckEnt ) ;
}
}
}
}
}
}
await uow . CompleteAsync ( ) ;
}
}
}
}
//using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
//{
// var isUploadReport = WebDb0520.Ado.GetDataTable($"select patient_register_id,report_file from patient_register where patient_register_id='{item}' and report_file is null ").Rows.Count;
// if (isUploadReport == 1)
// {
// await SyncPatientRegisterReportByPatientRegisterIdAsync(new PatientRegisterIdInputDto
// {
// PatientRegisterId = item
// });
// }
// await uow.CompleteAsync();
//}
//var registerCheckAsbitemList = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync()
// join registerCheck in await _registerCheckRepository.GetQueryableAsync() on patientRegister.Id equals registerCheck.PatientRegisterId
// join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId
// where input.PatientRegisterIds.Contains(patientRegister.Id)
// select registerCheckAsbitem).ToList();
//if (registerCheckAsbitemList.Any())
//{
// foreach (var registerCheckAsbitem in registerCheckAsbitemList)
// {
// var checkDoctorEnt = input.CheckDoctorDetail.FirstOrDefault(f => f.AsbitemId == registerCheckAsbitem.AsbitemId);
// if (checkDoctorEnt != null)
// {
// var registerCheckEnt = await _registerCheckRepository.FirstOrDefaultAsync(f => f.Id == registerCheckAsbitem.RegisterCheckId);
// if (registerCheckEnt != null)
// {
// registerCheckEnt.CheckDoctorId = checkDoctorEnt.CheckDoctorId;
// await _registerCheckRepository.UpdateAsync(registerCheckEnt);
// }
// }
// }
//}
}
}