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))