From 83f21553a06deb688e0ac672ace697764db2faa8 Mon Sep 17 00:00:00 2001 From: wxd <123@qq.com> Date: Fri, 24 May 2024 01:28:49 +0800 Subject: [PATCH] 000 --- .../UploadPeisReportIuputDto.cs | 19 +++ .../MyUser/MyUserAppService.cs | 6 +- .../TransToWebPeisAppService.cs | 153 ++++++++++++++---- .../CustomerOrgReportManager.cs | 2 +- 4 files changed, 144 insertions(+), 36 deletions(-) create mode 100644 src/Shentun.Peis.Application.Contracts/TransToWebPeiss/UploadPeisReportIuputDto.cs diff --git a/src/Shentun.Peis.Application.Contracts/TransToWebPeiss/UploadPeisReportIuputDto.cs b/src/Shentun.Peis.Application.Contracts/TransToWebPeiss/UploadPeisReportIuputDto.cs new file mode 100644 index 00000000..0fb78879 --- /dev/null +++ b/src/Shentun.Peis.Application.Contracts/TransToWebPeiss/UploadPeisReportIuputDto.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Shentun.Peis.TransToWebPeiss +{ + public class UploadPeisReportIuputDto + { + /// + /// 人员登记ID + /// + public Guid PatientRegisterId { get; set; } + + /// + /// 报告base64地址 + /// + public string ReportBase64 { get; set; } + } +} diff --git a/src/Shentun.Peis.Application/MyUser/MyUserAppService.cs b/src/Shentun.Peis.Application/MyUser/MyUserAppService.cs index ff9da5bc..4fd86e16 100644 --- a/src/Shentun.Peis.Application/MyUser/MyUserAppService.cs +++ b/src/Shentun.Peis.Application/MyUser/MyUserAppService.cs @@ -445,8 +445,7 @@ namespace Shentun.Peis.MyUser } else { - Random rd = new Random(); - fileName = DateTime.Now.ToString("yyMMdd") + rd.Next(100000, 999999); + fileName = Guid.NewGuid().ToString(); } string imgurl = $"UserPhoto/{DateTime.Now.Year}/{DateTime.Now.Month}/{DateTime.Now.Day}/{fileName}"; @@ -474,8 +473,7 @@ namespace Shentun.Peis.MyUser } else { - Random rd = new Random(); - fileName = DateTime.Now.ToString("yyMMdd") + rd.Next(100000, 999999); + fileName = Guid.NewGuid().ToString(); } string imgurl = $"UserSign/{DateTime.Now.Year}/{DateTime.Now.Month}/{DateTime.Now.Day}/{fileName}"; diff --git a/src/Shentun.Peis.Application/TransToWebPeis/TransToWebPeisAppService.cs b/src/Shentun.Peis.Application/TransToWebPeis/TransToWebPeisAppService.cs index f3fc4251..5812f843 100644 --- a/src/Shentun.Peis.Application/TransToWebPeis/TransToWebPeisAppService.cs +++ b/src/Shentun.Peis.Application/TransToWebPeis/TransToWebPeisAppService.cs @@ -1,4 +1,5 @@ -using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; @@ -12,6 +13,7 @@ using Shentun.Peis.MyUser; using Shentun.Peis.PatientRegisters; using Shentun.Peis.PlugIns; using Shentun.Peis.RegisterCheckItems; +using Shentun.Peis.TransToWebPeiss; using SqlSugar; using System; using System.Collections.Generic; @@ -27,6 +29,8 @@ using Volo.Abp.Uow; namespace Shentun.Peis.TransToWebPeis { + [ApiExplorerSettings(GroupName = "Work")] + [Authorize] public class TransToWebPeisAppService : ApplicationService { private readonly IRepository _deviceTypeRepository; @@ -44,6 +48,8 @@ namespace Shentun.Peis.TransToWebPeis private readonly IRepository _customerOrgGroupDetailRepository; private readonly IRepository _patientRegisterRepository; private readonly IRepository _registerCheckRepository; + private readonly IRepository _patientRegisterExterRepository; + public TransToWebPeisAppService( IRepository itemTypeRepository, ILogger logger, @@ -58,7 +64,8 @@ namespace Shentun.Peis.TransToWebPeis IRepository customerOrgGroupRepository, IRepository customerOrgGroupDetailRepository, IRepository patientRegisterRepository, - IRepository registerCheckRepository) + IRepository registerCheckRepository, + IRepository patientRegisterExterRepository) { _itemTypeRepository = itemTypeRepository; _logger = logger; @@ -74,6 +81,7 @@ namespace Shentun.Peis.TransToWebPeis _customerOrgGroupDetailRepository = customerOrgGroupDetailRepository; _patientRegisterRepository = patientRegisterRepository; _registerCheckRepository = registerCheckRepository; + _patientRegisterExterRepository = patientRegisterExterRepository; } /// /// 上传基础资料 @@ -146,27 +154,22 @@ namespace Shentun.Peis.TransToWebPeis } - ///// - ///// 上传单位信息 - ///// - ///// - //[HttpPost("api/app/TransToWebPeis/TransCustomerOrg")] - //public async Task TransCustomerOrgWithDetailAsync() - //{ - // //customer_org,customer_org_register - //} - ///// - ///// 上传人员体检信息 - ///// - ///// - //[HttpPost("api/app/TransToWebPeis/TransPatientRegister")] - //public async Task TransPatientRegisterAsync() - //{ - // //patient,patient_register,register_check,register_check_asbitem - // //register_check_item,register_check_picture,register_check_summary,register_check_suggestion - // //sum_summary_header,sum_summary_content,sum_suggestion_header,sum_suggestion_content,sum_diagnosis, - - //} + + + /// + /// 上传体检报告 + /// + /// + [HttpPost("api/app/TransToWebPeis/UploadPeisReport")] + public async Task UploadPeisReportAsync(UploadPeisReportIuputDto input) + { + //同步数据 + await TransPatientRegisterByPatientRegisterIdAsync(new PatientRegisterIdInputDto { PatientRegisterId = input.PatientRegisterId }); + //上传报告 + + } + + /// /// 根据人员登记ID上传人员体检信息 /// @@ -190,13 +193,15 @@ namespace Shentun.Peis.TransToWebPeis }); + var IsPatient = (await WebDb.Ado.GetDataTableAsync($"select patient_register_id from patient_register where patient_register_id='{input.PatientRegisterId}'")).Rows.Count; + if (IsPatient > 0) + { + await DeletePatientRegisterWithDetailAsync(WebDb, input.PatientRegisterId); + } + await TransPatientRegisterWithDetailAsync(WebDb, input.PatientRegisterId); } - - - - } /// /// 撤销上传人员体检信息 @@ -206,7 +211,22 @@ namespace Shentun.Peis.TransToWebPeis [HttpPost("api/app/TransToWebPeis/CancelTransPatientRegisterByPatientRegisterId")] public async Task CancelTransPatientRegisterByPatientRegisterIdAsync(PatientRegisterIdInputDto input) { + var thirdInterfaces = await _thirdInterfaceRepository.GetListAsync(o => o.ThirdInterfaceType == + ThirdInterfaceTypeFlag.TranToWebPeis); + foreach (var thirdInterface in thirdInterfaces) + { + var connectString = GetConnectionStrings(thirdInterface.ParmValue); + SqlSugarClient WebDb = new SqlSugarClient(new ConnectionConfig() + { + ConnectionString = connectString, + DbType = SqlSugar.DbType.PostgreSQL, + IsAutoCloseConnection = true + }); + + await DeletePatientRegisterWithDetailAsync(WebDb, input.PatientRegisterId); + + } } /// @@ -674,6 +694,14 @@ namespace Shentun.Peis.TransToWebPeis .Where(m => m.Id == PatientRegisterId).FirstOrDefault(); if (patientRegisterEnt != null) { + if (patientRegisterEnt.CompleteFlag != PatientRegisterCompleteFlag.SumCheck) + throw new UserFriendlyException("人员未总检,不能同步"); + + + + + + var IsPatient = (await WebDb.Ado.GetDataTableAsync($"select patient_id from patient where patient_id='{patientRegisterEnt.PatientId}'")).Rows.Count; if (IsPatient == 0) { @@ -713,16 +741,21 @@ namespace Shentun.Peis.TransToWebPeis #region 插入人员登记信息 + string third_register_id = ""; + var patientRegisterExterEnt = await _patientRegisterExterRepository.FirstOrDefaultAsync(f => f.PatientRegisterId == PatientRegisterId); + if (patientRegisterExterEnt != null && !string.IsNullOrWhiteSpace(patientRegisterExterEnt.Planuserid)) + third_register_id = patientRegisterExterEnt.Planuserid; + await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.patient_register(patient_register_id, patient_register_no, patient_id, medical_times, customer_org_id, customer_org_group_id, medical_package_id," + "patient_name,sex_id, birth_date, age, job_card_no, medical_card_no, marital_status_id, medical_type_id, personnel_type_id, job_post, job_title, photo," + " sex_hormone_term_id, interpose_measure, medical_conclusion_id, complete_flag, is_medical_start, medical_start_date, summary_date, is_audit, audit_date, is_vip, third_info,remark,medical_center_id," + - "customer_org_register_id, concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id, audit_doctor_id,summary_doctor_id, his_patient_id) VALUES " + + "customer_org_register_id, concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id, audit_doctor_id,summary_doctor_id, his_patient_id,third_register_id) VALUES " + "(@patient_register_id,@patient_register_no,@patient_id,@medical_times,@customer_org_id,@customer_org_group_id::uuid,@medical_package_id::uuid," + "@patient_name,@sex_id,CAST(@birth_date as timestamp),@age,@job_card_no,@medical_card_no,@marital_status_id,@medical_type_id::uuid,@personnel_type_id::uuid,@job_post,@job_title,@photo," + "@sex_hormone_term_id::uuid,@interpose_measure,@medical_conclusion_id::uuid,@complete_flag,@is_medical_start,@medical_start_date,CAST(@summary_date as timestamp),@is_audit,CAST(@audit_date as timestamp),@is_vip,@third_info,@remark,@medical_center_id," + - "@customer_org_register_id,@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id,@audit_doctor_id::uuid,@summary_doctor_id::uuid,@his_patient_id);", + "@customer_org_register_id,@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id,@audit_doctor_id::uuid,@summary_doctor_id::uuid,@his_patient_id,@third_register_id);", new List() { - new SugarParameter("patient_register_id",patientRegisterEnt.Id), + new SugarParameter("patient_register_id",patientRegisterEnt.Id), new SugarParameter("patient_register_no",patientRegisterEnt.PatientRegisterNo), new SugarParameter("patient_id",patientRegisterEnt.PatientId), new SugarParameter("medical_times",patientRegisterEnt.MedicalTimes), @@ -762,7 +795,8 @@ namespace Shentun.Peis.TransToWebPeis new SugarParameter("last_modifier_id",patientRegisterEnt.LastModifierId), new SugarParameter("audit_doctor_id",patientRegisterEnt.AuditDoctorId), new SugarParameter("summary_doctor_id",patientRegisterEnt.SummaryDoctorId), - new SugarParameter("his_patient_id",patientRegisterEnt.HisPatientId) + new SugarParameter("his_patient_id",patientRegisterEnt.HisPatientId), + new SugarParameter("third_register_id",third_register_id) }); #endregion @@ -1053,6 +1087,63 @@ namespace Shentun.Peis.TransToWebPeis } #endregion } + else + { + throw new UserFriendlyException("数据不存在"); + } + await WebDb.Ado.CommitTranAsync(); + } + catch (Exception ex) + { + await WebDb.Ado.RollbackTranAsync(); + throw new UserFriendlyException(ex.ToString()); + } + } + + #endregion + + + #region 撤销、删除 + + /// + /// 人员导入 + /// + /// + /// + /// + private async Task DeletePatientRegisterWithDetailAsync(SqlSugarClient WebDb, Guid PatientRegisterId) + { + try + { + await WebDb.Ado.BeginTranAsync(); + + await WebDb.Ado.ExecuteCommandAsync($"delete from sum_diagnosis where patient_register_id='{PatientRegisterId}'"); + + await WebDb.Ado.ExecuteCommandAsync($"delete from sum_summary_content where sum_summary_header_id in (select sum_summary_header_id from sum_summary_header where patient_register_id='{PatientRegisterId}')"); + + await WebDb.Ado.ExecuteCommandAsync($"delete from sum_summary_header where patient_register_id='{PatientRegisterId}'"); + + + await WebDb.Ado.ExecuteCommandAsync($"delete from sum_suggestion_content where sum_suggestion_header_id in (select sum_suggestion_header_id from sum_suggestion_header where patient_register_id='{PatientRegisterId}')"); + + await WebDb.Ado.ExecuteCommandAsync($"delete from sum_suggestion_header where patient_register_id='{PatientRegisterId}'"); + + + await WebDb.Ado.ExecuteCommandAsync($"delete from register_check_asbitem where register_check_id in (select register_check_id from register_check where patient_register_id='{PatientRegisterId}')"); + + await WebDb.Ado.ExecuteCommandAsync($"delete from register_check_item where register_check_id in (select register_check_id from register_check where patient_register_id='{PatientRegisterId}')"); + + await WebDb.Ado.ExecuteCommandAsync($"delete from register_check_picture where register_check_id in (select register_check_id from register_check where patient_register_id='{PatientRegisterId}')"); + + await WebDb.Ado.ExecuteCommandAsync($"delete from register_check_suggestion where register_check_id in (select register_check_id from register_check where patient_register_id='{PatientRegisterId}')"); + + await WebDb.Ado.ExecuteCommandAsync($"delete from register_check_summary where register_check_id in (select register_check_id from register_check where patient_register_id='{PatientRegisterId}')"); + + await WebDb.Ado.ExecuteCommandAsync($"delete from register_check where patient_register_id='{PatientRegisterId}'"); + + await WebDb.Ado.ExecuteCommandAsync($"delete from patient_register where patient_register_id='{PatientRegisterId}'"); + + await WebDb.Ado.CommitTranAsync(); } catch (Exception ex) diff --git a/src/Shentun.Peis.Domain/ReportTemplates/CustomerOrgReportManager.cs b/src/Shentun.Peis.Domain/ReportTemplates/CustomerOrgReportManager.cs index 887277e2..67b49c30 100644 --- a/src/Shentun.Peis.Domain/ReportTemplates/CustomerOrgReportManager.cs +++ b/src/Shentun.Peis.Domain/ReportTemplates/CustomerOrgReportManager.cs @@ -355,7 +355,7 @@ namespace Shentun.Peis.ReportTemplates #endregion - string documentName = $"{documentData.MedicalTitle}单位体检报告{DateTime.Now.ToString("yyyy_MM_dd_HH_mm")}.docx"; + string documentName = $"{documentData.MedicalTitle}单位体检报告_{Guid.NewGuid().ToString()}.docx"; string savaUrl = DirectoryName + $@"\CustomerOrgTemplate\docs\{DateTime.Now.Year}\{DateTime.Now.Month}\{DateTime.Now.Day}"; if (!Directory.Exists(savaUrl))