Browse Source

批量修改医生分多批执行

master
wxd 11 months ago
parent
commit
547e019c4a
  1. 95
      src/Shentun.Peis.Application/RegisterChecks/RegisterCheckAppService.cs

95
src/Shentun.Peis.Application/RegisterChecks/RegisterCheckAppService.cs

@ -25,6 +25,7 @@ using Volo.Abp.Domain.Repositories;
using Volo.Abp.Guids;
using Volo.Abp.Identity;
using Volo.Abp.ObjectMapping;
using Volo.Abp.Uow;
using Volo.Abp.Users;
using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
@ -58,6 +59,8 @@ namespace Shentun.Peis.RegisterChecks
private readonly IRepository<LisRequest, Guid> _lisRequestRepository;
private readonly FollowUpAppService _followUpAppService;
private readonly IRepository<DoctorSignIn, Guid> _doctorSignInRepository;
private readonly IRepository<GuideType, char> _guideTypeRepository;
private readonly UnitOfWorkManager _unitOfWorkManager;
public RegisterCheckAppService(IRepository<RegisterCheck, Guid> registerCheckRepository,
IRepository<RegisterCheckItem> registerCheckItemRepository,
@ -78,7 +81,9 @@ namespace Shentun.Peis.RegisterChecks
IRepository<ItemType> itemTypeRepository,
IRepository<LisRequest, Guid> lisRequestRepository,
FollowUpAppService followUpAppService,
IRepository<DoctorSignIn, Guid> doctorSignInRepository)
IRepository<DoctorSignIn, Guid> doctorSignInRepository,
IRepository<GuideType, char> guideTypeRepository,
UnitOfWorkManager unitOfWorkManager)
{
_registerCheckRepository = registerCheckRepository;
_userRepository = userRepository;
@ -100,6 +105,8 @@ namespace Shentun.Peis.RegisterChecks
_lisRequestRepository = lisRequestRepository;
_followUpAppService = followUpAppService;
_doctorSignInRepository = doctorSignInRepository;
_guideTypeRepository = guideTypeRepository;
_unitOfWorkManager = unitOfWorkManager;
}
/// <summary>
@ -580,7 +587,10 @@ namespace Shentun.Peis.RegisterChecks
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 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'
orderby guideType.DisplayOrder, asbitem.DisplayOrder
select new SimpleAsbitemDto
{
AsbitemId = registerCheckAsbitem.AsbitemId,
@ -656,28 +666,85 @@ namespace Shentun.Peis.RegisterChecks
if (!input.CheckDoctorDetail.Any())
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 = 100;
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);
// }
// }
// }
//}
}

Loading…
Cancel
Save