You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1777 lines
106 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
  1. using Azure.Core;
  2. using Microsoft.AspNetCore.Authorization;
  3. using Microsoft.AspNetCore.Mvc;
  4. using Microsoft.EntityFrameworkCore;
  5. using Microsoft.Extensions.Configuration;
  6. using Microsoft.Extensions.Logging;
  7. using Newtonsoft.Json.Converters;
  8. using Newtonsoft.Json;
  9. using Org.BouncyCastle.Utilities;
  10. using Shentun.Peis.CustomerOrgs;
  11. using Shentun.Peis.DataMigrations;
  12. using Shentun.Peis.Enums;
  13. using Shentun.Peis.ItemTypes;
  14. using Shentun.Peis.Models;
  15. using Shentun.Peis.MyUser;
  16. using Shentun.Peis.PatientRegisters;
  17. using Shentun.Peis.PlugIns;
  18. using Shentun.Peis.RegisterCheckItems;
  19. using Shentun.Peis.TransToWebPeiss;
  20. using SqlSugar;
  21. using System;
  22. using System.Collections.Generic;
  23. using System.IO;
  24. using System.Linq;
  25. using System.Net.Http.Headers;
  26. using System.Net.Http;
  27. using System.Text;
  28. using System.Threading.Tasks;
  29. using Volo.Abp;
  30. using Volo.Abp.Application.Services;
  31. using Volo.Abp.Domain.Repositories;
  32. using Volo.Abp.Identity;
  33. using Volo.Abp.Uow;
  34. using Shentun.Peis.PrintReports;
  35. using System.Threading;
  36. using NPOI.HSSF.Record.Chart;
  37. using System.IdentityModel.Tokens.Jwt;
  38. using Shentun.Peis.PlugIns.Sms;
  39. using Shentun.Peis.ThirdBookingPushs;
  40. using Shentun.Peis.PlugIns.Extensions.PatientRegisters.Qztl;
  41. using System.Data;
  42. namespace Shentun.Peis.TransToWebPeis
  43. {
  44. [ApiExplorerSettings(GroupName = "Work")]
  45. [Authorize]
  46. public class TransToWebPeisAppService : ApplicationService
  47. {
  48. private readonly IRepository<DeviceType, Guid> _deviceTypeRepository;
  49. private readonly IRepository<ItemType, Guid> _itemTypeRepository;
  50. private readonly IRepository<Item, Guid> _itemRepository;
  51. private readonly IRepository<Asbitem, Guid> _asbitemRepository;
  52. private readonly IRepository<MedicalPackage, Guid> _medicalPackageRepository;
  53. private readonly IRepository<Diagnosis, Guid> _diagnosisRepository;
  54. private readonly IRepository<DiagnosisLevel> _diagnosisLevelRepository;
  55. private readonly ILogger<TransToWebPeisAppService> _logger;
  56. private readonly IRepository<ThirdInterface, Guid> _thirdInterfaceRepository;
  57. private readonly IRepository<CustomerOrg, Guid> _customerOrgRepository;
  58. private readonly IRepository<CustomerOrgRegister, Guid> _customerOrgRegisterRepository;
  59. private readonly IRepository<CustomerOrgGroup, Guid> _customerOrgGroupRepository;
  60. private readonly IRepository<CustomerOrgGroupDetail> _customerOrgGroupDetailRepository;
  61. private readonly IRepository<PatientRegister, Guid> _patientRegisterRepository;
  62. private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository;
  63. private readonly IRepository<PatientRegisterExter> _patientRegisterExterRepository;
  64. private readonly UnitOfWorkManager _unitOfWorkManager;
  65. private readonly PrintReportAppService _printReportAppService;
  66. private readonly IConfiguration _configuration;
  67. private readonly IRepository<Patient, Guid> _patientRepository;
  68. private readonly ThirdBookingPushAppService _thirdBookingPushAppService;
  69. private readonly SqlSugarClient Db = new SqlSugarClient(new ConnectionConfig()
  70. {
  71. ConnectionString = "server=135.191.65.102;uid=sa;pwd=123;database=mypeis0513;Encrypt=false;",
  72. DbType = SqlSugar.DbType.SqlServer,
  73. IsAutoCloseConnection = true
  74. });
  75. private readonly SqlSugarClient WebDb0520 = new SqlSugarClient(new ConnectionConfig()
  76. {
  77. ConnectionString = "Host=10.1.12.138;Port=5432;Database=WebPeis0520;User ID=postgres;Password=st123;",
  78. DbType = SqlSugar.DbType.PostgreSQL,
  79. IsAutoCloseConnection = true
  80. });
  81. public TransToWebPeisAppService(
  82. IRepository<ItemType, Guid> itemTypeRepository,
  83. ILogger<TransToWebPeisAppService> logger,
  84. IRepository<ThirdInterface, Guid> thirdInterfaceRepository,
  85. IRepository<Item, Guid> itemRepository,
  86. IRepository<Asbitem, Guid> asbitemRepository,
  87. IRepository<MedicalPackage, Guid> medicalPackageRepository,
  88. IRepository<Diagnosis, Guid> diagnosisRepository,
  89. IRepository<DiagnosisLevel> diagnosisLevelRepository,
  90. IRepository<CustomerOrg, Guid> customerOrgRepository,
  91. IRepository<CustomerOrgRegister, Guid> customerOrgRegisterRepository,
  92. IRepository<CustomerOrgGroup, Guid> customerOrgGroupRepository,
  93. IRepository<CustomerOrgGroupDetail> customerOrgGroupDetailRepository,
  94. IRepository<PatientRegister, Guid> patientRegisterRepository,
  95. IRepository<RegisterCheck, Guid> registerCheckRepository,
  96. IRepository<PatientRegisterExter> patientRegisterExterRepository,
  97. UnitOfWorkManager unitOfWorkManager,
  98. PrintReportAppService printReportAppService,
  99. IConfiguration configuration,
  100. IRepository<Patient, Guid> patientRepository,
  101. ThirdBookingPushAppService thirdBookingPushAppService)
  102. {
  103. _itemTypeRepository = itemTypeRepository;
  104. _logger = logger;
  105. _thirdInterfaceRepository = thirdInterfaceRepository;
  106. _itemRepository = itemRepository;
  107. _asbitemRepository = asbitemRepository;
  108. _medicalPackageRepository = medicalPackageRepository;
  109. _diagnosisRepository = diagnosisRepository;
  110. _diagnosisLevelRepository = diagnosisLevelRepository;
  111. _customerOrgRepository = customerOrgRepository;
  112. _customerOrgRegisterRepository = customerOrgRegisterRepository;
  113. _customerOrgGroupRepository = customerOrgGroupRepository;
  114. _customerOrgGroupDetailRepository = customerOrgGroupDetailRepository;
  115. _patientRegisterRepository = patientRegisterRepository;
  116. _registerCheckRepository = registerCheckRepository;
  117. _patientRegisterExterRepository = patientRegisterExterRepository;
  118. _unitOfWorkManager = unitOfWorkManager;
  119. _printReportAppService = printReportAppService;
  120. _configuration = configuration;
  121. _patientRepository = patientRepository;
  122. _thirdBookingPushAppService = thirdBookingPushAppService;
  123. }
  124. /// <summary>
  125. /// 上传体检报告 并同步业务数据
  126. /// </summary>
  127. /// <returns></returns>
  128. [HttpPost("api/app/TransToWebPeis/UploadPeisReport")]
  129. public async Task UploadPeisReportAsync(UploadPeisReportIuputDto input)
  130. {
  131. var isPatientRegister = await _patientRegisterRepository.FirstOrDefaultAsync(f => f.Id == input.PatientRegisterId);
  132. if (isPatientRegister == null)
  133. throw new UserFriendlyException("人员不存在");
  134. if (isPatientRegister.CompleteFlag != PatientRegisterCompleteFlag.SumCheck)
  135. throw new UserFriendlyException("人员未总检,无法上传");
  136. if (string.IsNullOrWhiteSpace(isPatientRegister.ThirdBookingId))
  137. {
  138. //同步数据
  139. await TransPatientRegisterByPatientRegisterIdAsync(new PatientRegisterIdInputDto { PatientRegisterId = input.PatientRegisterId });
  140. //上传报告
  141. var thirdInterfaces = await _thirdInterfaceRepository.GetListAsync(o => o.ThirdInterfaceType ==
  142. ThirdInterfaceTypeFlag.TranToWebPeis);
  143. foreach (var thirdInterface in thirdInterfaces)
  144. {
  145. var parmValue = thirdInterface.ParmValue;
  146. var configurationBuilder = new ConfigurationBuilder()
  147. .AddJsonStream(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(parmValue)));
  148. var interfaceConfig = configurationBuilder.Build();
  149. var url = interfaceConfig.GetSection("Interface").GetSection("Url").Value;
  150. var user = interfaceConfig.GetSection("Interface").GetSection("User").Value;
  151. var password = interfaceConfig.GetSection("Interface").GetSection("Password").Value;
  152. var result = await CallAppServiceAsync<UploadPeisReportIuputDto, object>(url, "", input);
  153. }
  154. //更新上传状态
  155. var patientRegisterEnt = await _patientRegisterRepository.GetAsync(input.PatientRegisterId);
  156. patientRegisterEnt.IsUpload = 'Y';
  157. await _patientRegisterRepository.UpdateAsync(patientRegisterEnt);
  158. //推送短信
  159. await PushSmsAsync(patientRegisterEnt);
  160. }
  161. else
  162. {
  163. //上传到人寿
  164. await _thirdBookingPushAppService.PushReportFileAsync(new PushReportFileInputDto
  165. {
  166. PatientRegisterId = input.PatientRegisterId,
  167. ReportBase64 = input.ReportBase64
  168. });
  169. isPatientRegister.IsUpload = 'Y';
  170. await _patientRegisterRepository.UpdateAsync(isPatientRegister);
  171. }
  172. }
  173. /// <summary>
  174. /// 根据人员登记ID上传人员体检信息 上传备单
  175. /// </summary>
  176. /// <param name="input"></param>
  177. /// <returns></returns>
  178. [HttpPost("api/app/TransToWebPeis/TransPatientRegisterByPatientRegisterId")]
  179. public async Task TransPatientRegisterByPatientRegisterIdAsync(PatientRegisterIdInputDto input)
  180. {
  181. var thirdInterfaces = await _thirdInterfaceRepository.GetListAsync(o => o.ThirdInterfaceType ==
  182. ThirdInterfaceTypeFlag.TranToWebPeis);
  183. foreach (var thirdInterface in thirdInterfaces)
  184. {
  185. var connectString = GetConnectionStrings(thirdInterface.ParmValue);
  186. SqlSugarClient WebDb = new SqlSugarClient(new ConnectionConfig()
  187. {
  188. ConnectionString = connectString,
  189. DbType = SqlSugar.DbType.PostgreSQL,
  190. IsAutoCloseConnection = true
  191. });
  192. var IsPatient = (await WebDb.Ado.GetDataTableAsync($"select patient_register_id from patient_register where patient_register_id='{input.PatientRegisterId}'")).Rows.Count;
  193. if (IsPatient > 0)
  194. {
  195. await DeletePatientRegisterWithDetailAsync(WebDb, input.PatientRegisterId);
  196. }
  197. await TransPatientRegisterWithDetailAsync(WebDb, input.PatientRegisterId);
  198. }
  199. }
  200. /// <summary>
  201. /// 撤销上传人员体检信息
  202. /// </summary>
  203. /// <param name="input"></param>
  204. /// <returns></returns>
  205. [HttpPost("api/app/TransToWebPeis/CancelTransPatientRegisterByPatientRegisterId")]
  206. public async Task CancelTransPatientRegisterByPatientRegisterIdAsync(PatientRegisterIdInputDto input)
  207. {
  208. var thirdInterfaces = await _thirdInterfaceRepository.GetListAsync(o => o.ThirdInterfaceType ==
  209. ThirdInterfaceTypeFlag.TranToWebPeis);
  210. foreach (var thirdInterface in thirdInterfaces)
  211. {
  212. var connectString = GetConnectionStrings(thirdInterface.ParmValue);
  213. SqlSugarClient WebDb = new SqlSugarClient(new ConnectionConfig()
  214. {
  215. ConnectionString = connectString,
  216. DbType = SqlSugar.DbType.PostgreSQL,
  217. IsAutoCloseConnection = true
  218. });
  219. await DeletePatientRegisterWithDetailAsync(WebDb, input.PatientRegisterId);
  220. }
  221. }
  222. /// <summary>
  223. /// 导入数据 任务计划用 上传报告
  224. /// </summary>
  225. /// <param name="input"></param>
  226. /// <returns></returns>
  227. /// <exception cref="Exception"></exception>
  228. [HttpPost("api/app/TransToWebPeis/SyncPatientRegisterReportByPatientRegisterId")]
  229. public async Task SyncPatientRegisterReportByPatientRegisterIdAsync(PatientRegisterIdInputDto input)
  230. {
  231. var thirdInterface = await _thirdInterfaceRepository.FirstOrDefaultAsync(f => f.ThirdInterfaceType == ThirdInterfaceTypeFlag.TranToWebPeis);
  232. if (thirdInterface.IsActive != 'Y')
  233. {
  234. throw new UserFriendlyException("该接口已禁用");
  235. }
  236. var parmValue = thirdInterface.ParmValue;
  237. var configurationBuilder = new ConfigurationBuilder()
  238. .AddJsonStream(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(parmValue)));
  239. var config = configurationBuilder.Build();
  240. var reportApiBaseAddress = config.GetSection("Interface").GetSection("ReportApiBaseAddress").Value;
  241. var reportApiUrl = config.GetSection("Interface").GetSection("ReportApiUrl").Value;
  242. string reportBase64 = "";
  243. #region 获取报告地址
  244. //var printReportData = await _printReportAppService.GetMedicalReportAsync(new PatientRegisterIdInputDto
  245. //{
  246. // PatientRegisterId = input.PatientRegisterId
  247. //});
  248. var printReportData = await _printReportAppService.GetMedicalReportConvertToReportAsync(new PatientRegisterIdInputDto
  249. {
  250. PatientRegisterId = input.PatientRegisterId
  251. });
  252. using (var httpClientHandler = new HttpClientHandler())
  253. {
  254. using (var httpClient = new HttpClient(httpClientHandler))
  255. {
  256. httpClient.BaseAddress = new Uri(reportApiBaseAddress);
  257. httpClient.DefaultRequestHeaders.Accept.Add(
  258. new MediaTypeWithQualityHeaderValue("application/json"));//设置accept标头,告诉JSON是可接受的响应类型
  259. var sendData = JsonConvert.SerializeObject(printReportData);
  260. using (HttpContent httpContent = new StringContent(sendData))
  261. {
  262. httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
  263. HttpResponseMessage response = null;
  264. response = await httpClient.PostAsync(reportApiUrl, httpContent);
  265. string result;
  266. if (!response.IsSuccessStatusCode)
  267. {
  268. result = response.Content.ReadAsStringAsync().Result;
  269. throw new Exception("http通信错误:" + response.StatusCode + ",结果:" + result);
  270. }
  271. result = await response.Content.ReadAsStringAsync();
  272. var resultDto = JsonConvert.DeserializeObject<WebApiClientOutDto>(result);
  273. if (resultDto != null)
  274. {
  275. if (resultDto.code != 1)
  276. {
  277. throw new Exception($"调用WebApi失败,返回-1,消息:" + result);
  278. }
  279. reportBase64 = resultDto.data;
  280. }
  281. }
  282. }
  283. }
  284. Thread.Sleep(1000);
  285. #endregion
  286. //获取到报告地址
  287. if (!string.IsNullOrWhiteSpace(reportBase64))
  288. {
  289. await UploadPeisReportAsync(new UploadPeisReportIuputDto
  290. {
  291. PatientRegisterId = input.PatientRegisterId,
  292. ReportBase64 = reportBase64
  293. });
  294. }
  295. }
  296. #region MyRegion
  297. /// <summary>
  298. /// 上传基础资料
  299. /// </summary>
  300. /// <returns></returns>
  301. [HttpPost("api/app/TransToWebPeis/TransBaseData")]
  302. public async Task TransBaseDataAsync()
  303. {
  304. var thirdInterfaces = await _thirdInterfaceRepository.GetListAsync(o => o.ThirdInterfaceType ==
  305. ThirdInterfaceTypeFlag.TranToWebPeis);
  306. foreach (var thirdInterface in thirdInterfaces)
  307. {
  308. var connectString = GetConnectionStrings(thirdInterface.ParmValue);
  309. SqlSugarClient WebDb = new SqlSugarClient(new ConnectionConfig()
  310. {
  311. ConnectionString = connectString,
  312. DbType = SqlSugar.DbType.PostgreSQL,
  313. IsAutoCloseConnection = true
  314. });
  315. try
  316. {
  317. await WebDb.Ado.BeginTranAsync();
  318. #region 清理基础数据
  319. //删除
  320. await WebDb.Ado.ExecuteCommandAsync("delete from medical_package_detail;");
  321. await WebDb.Ado.ExecuteCommandAsync("delete from medical_package;");
  322. await WebDb.Ado.ExecuteCommandAsync("delete from customer_org_group_detail;");
  323. await WebDb.Ado.ExecuteCommandAsync("delete from customer_org_group;");
  324. await WebDb.Ado.ExecuteCommandAsync("delete from customer_org_register;");
  325. await WebDb.Ado.ExecuteCommandAsync("delete from customer_org;");
  326. await WebDb.Ado.ExecuteCommandAsync("delete from diagnosis;");
  327. await WebDb.Ado.ExecuteCommandAsync("delete from diagnosis_level;");
  328. await WebDb.Ado.ExecuteCommandAsync("delete from asbitem_detail;");
  329. await WebDb.Ado.ExecuteCommandAsync("delete from asbitem;");
  330. await WebDb.Ado.ExecuteCommandAsync("delete from item;");
  331. await WebDb.Ado.ExecuteCommandAsync("delete from item_type;");
  332. #endregion
  333. await TransItemType(WebDb);
  334. await TransItem(WebDb);
  335. await TransAsbitem(WebDb);
  336. await TransMedicalPackage(WebDb);
  337. await TransDiagnosis(WebDb);
  338. await TransCustomerOrgAsync(WebDb);
  339. await TransCustomerOrgRegisterAsync(WebDb);
  340. await TransCustomerOrgGroupAsync(WebDb);
  341. await TransCustomerOrgGroupDetailAsync(WebDb);
  342. await WebDb.Ado.CommitTranAsync();
  343. }
  344. catch (Exception ex)
  345. {
  346. await WebDb.Ado.RollbackTranAsync();
  347. _logger.LogError($"上传基础数据异常:{ex.Message}");
  348. }
  349. }
  350. //var connectString = "Host=10.1.12.140;Port=5432;Database=WebPeis;User ID=postgres;Password=st123;";
  351. //SqlSugarClient WebDb = new SqlSugarClient(new ConnectionConfig()
  352. //{
  353. // ConnectionString = connectString,
  354. // DbType = SqlSugar.DbType.PostgreSQL,
  355. // IsAutoCloseConnection = true
  356. //});
  357. }
  358. /// <summary>
  359. /// 获取数据库连接地址
  360. /// </summary>
  361. /// <param name="parmValue"></param>
  362. /// <returns></returns>
  363. /// <exception cref="UserFriendlyException"></exception>
  364. private string GetConnectionStrings(string parmValue)
  365. {
  366. var configurationBuilder = new ConfigurationBuilder()
  367. .AddJsonStream(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(parmValue)));
  368. var interfaceConfig = configurationBuilder.Build();
  369. var interfaceConnctionStr = interfaceConfig.GetSection("Interface").GetSection("ConnectionStrings").Value;
  370. if (!interfaceConnctionStr.ToUpper().Contains("WEBPEIS"))
  371. throw new UserFriendlyException("请检查配置的数据库地址");
  372. return interfaceConnctionStr;
  373. }
  374. private async Task<TOut> CallAppServiceAsync<TInput, TOut>(string appBaseAddress, string url, TInput data)
  375. {
  376. string baseAddress = appBaseAddress;
  377. using (var httpClientHandler = new HttpClientHandler())
  378. {
  379. using (var httpClient = new HttpClient(httpClientHandler))
  380. {
  381. httpClient.BaseAddress = new Uri(baseAddress);
  382. httpClient.DefaultRequestHeaders.Accept.Add(
  383. new MediaTypeWithQualityHeaderValue("application/json"));//设置accept标头,告诉JSON是可接受的响应类型
  384. //httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _accesToken);
  385. string sendData = "";
  386. if (data != null)
  387. {
  388. IsoDateTimeConverter timeFormat = new IsoDateTimeConverter();
  389. timeFormat.DateTimeFormat = "yyyy-MM-dd HH:mm:ss";
  390. sendData = JsonConvert.SerializeObject(data, Newtonsoft.Json.Formatting.Indented, timeFormat);
  391. }
  392. using (HttpContent httpContent = new StringContent(sendData))
  393. {
  394. httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
  395. HttpResponseMessage response = await httpClient.PostAsync(url, httpContent);
  396. string result;
  397. if (!response.IsSuccessStatusCode)
  398. {
  399. result = response.Content.ReadAsStringAsync().Result;
  400. throw new Exception("http通信错误:" + response.StatusCode + ",结果:" + result);
  401. }
  402. result = await response.Content.ReadAsStringAsync();
  403. var resultDto = JsonConvert.DeserializeObject<WebApiOutDto<TOut>>(result);
  404. if (resultDto.Code == -1)
  405. {
  406. throw new Exception($"调用服务失败{resultDto.Message}");
  407. }
  408. return resultDto.Data;
  409. }
  410. }
  411. }
  412. }
  413. #endregion
  414. #region 基础数据
  415. /// <summary>
  416. /// 项目类别
  417. /// </summary>
  418. /// <param name="WebDb"></param>
  419. /// <returns></returns>
  420. private async Task TransItemType(SqlSugarClient WebDb)
  421. {
  422. var itemTypes = await _itemTypeRepository.GetListAsync();
  423. if (itemTypes.Count > 0)
  424. {
  425. foreach (var itemType in itemTypes)
  426. {
  427. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.item_type(item_type_id,item_type_name,simple_code,parent_id,path_code,check_type_flag,display_order,is_wrap, concurrency_stamp,creation_time,creator_id,last_modification_time,last_modifier_id) " +
  428. "VALUES (@item_type_id,@item_type_name,@simple_code,@parent_id::uuid,@path_code,@check_type_flag,@display_order,@is_wrap,@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);",
  429. new List<SugarParameter>() {
  430. new SugarParameter("@item_type_id",itemType.Id),
  431. new SugarParameter("@item_type_name",itemType.DisplayName),
  432. new SugarParameter("@simple_code",itemType.SimpleCode),
  433. new SugarParameter("@parent_id",itemType.ParentId),
  434. new SugarParameter("@path_code",itemType.PathCode),
  435. new SugarParameter("@check_type_flag",itemType.CheckTypeFlag),
  436. new SugarParameter("@display_order",itemType.DisplayOrder),
  437. new SugarParameter("@is_wrap",itemType.IsWrap),
  438. new SugarParameter("@concurrency_stamp",itemType.ConcurrencyStamp),
  439. new SugarParameter("@creation_time",itemType.CreationTime),
  440. new SugarParameter("@creator_id",itemType.CreatorId),
  441. new SugarParameter("@last_modification_time",itemType.LastModificationTime),
  442. new SugarParameter("@last_modifier_id",itemType.LastModifierId)
  443. });
  444. }
  445. _logger.LogInformation($"项目类别数据处理完毕,数量{itemTypes.Count}");
  446. }
  447. }
  448. /// <summary>
  449. /// 项目数据
  450. /// </summary>
  451. /// <param name="WebDb"></param>
  452. /// <returns></returns>
  453. private async Task TransItem(SqlSugarClient WebDb)
  454. {
  455. var items = await _itemRepository.GetListAsync();
  456. if (items.Count > 0)
  457. {
  458. foreach (var item in items)
  459. {
  460. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.item(item_id, item_name, english_short_name, item_type_id, price, unit_id, default_result, reference_range_type_flag, is_calculation_item, " +
  461. "is_active,simple_code, display_order,line_mode_flag, concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id, device_type_id) values " +
  462. "(@item_id,@item_name,@english_short_name,@item_type_id,@price,@unit_id::uuid,@default_result,@reference_range_type_flag,@is_calculation_item,@is_active,@simple_code,@display_order," +
  463. "@line_mode_flag,@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id,@device_type_id::uuid);",
  464. new List<SugarParameter>() {
  465. new SugarParameter("@item_id",item.Id),
  466. new SugarParameter("@item_name",item.DisplayName),
  467. new SugarParameter("@english_short_name",item.EnglishShortName),
  468. new SugarParameter("@item_type_id",item.ItemTypeId),
  469. new SugarParameter("@price",item.Price),
  470. new SugarParameter("@unit_id",item.UnitId),
  471. new SugarParameter("@default_result",item.DefaultResult),
  472. new SugarParameter("@reference_range_type_flag",item.ReferenceRangeTypeFlag),
  473. new SugarParameter("@is_calculation_item",item.IsCalculationItem),
  474. new SugarParameter("@is_active",item.IsActive),
  475. new SugarParameter("@simple_code",item.SimpleCode),
  476. new SugarParameter("@display_order",item.DisplayOrder),
  477. new SugarParameter("@line_mode_flag",item.LineModeFlag),
  478. new SugarParameter("@concurrency_stamp",item.ConcurrencyStamp),
  479. new SugarParameter("@device_type_id",item.DeviceTypeId),
  480. new SugarParameter("@creation_time",item.CreationTime),
  481. new SugarParameter("@creator_id",item.CreatorId),
  482. new SugarParameter("@last_modification_time",item.LastModificationTime),
  483. new SugarParameter("@last_modifier_id",item.LastModifierId)
  484. });
  485. }
  486. _logger.LogInformation($"项目数据处理完毕,数量{items.Count}");
  487. }
  488. }
  489. /// <summary>
  490. /// 组合项目、明细
  491. /// </summary>
  492. /// <param name="WebDb"></param>
  493. /// <returns></returns>
  494. private async Task TransAsbitem(SqlSugarClient WebDb)
  495. {
  496. var asbitemWithDetails = (await _asbitemRepository.GetQueryableAsync()).Include(x => x.AsbitemDetails).ToList();
  497. if (asbitemWithDetails.Count > 0)
  498. {
  499. foreach (var asbitem in asbitemWithDetails)
  500. {
  501. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.asbitem(asbitem_id, asbitem_name, short_name, for_sex_id, item_type_id," +
  502. "price, device_type_id, is_before_eat, clinical_meaning, default_result," +
  503. "is_picture_rotate, is_check, is_active, simple_code, display_order, concurrency_stamp," +
  504. "creation_time, creator_id, last_modification_time, last_modifier_id, is_web_appoint,warn,disease_screening_type_id,for_pregnant_flag,marital_status_id) values " +
  505. "(@asbitem_id,@asbitem_name,@short_name,@for_sex_id,@item_type_id,@price,@device_type_id::uuid,@is_before_eat,@clinical_meaning," +
  506. "@default_result,@is_picture_rotate,@is_check,@is_active,@simple_code,@display_order,@concurrency_stamp,@creation_time," +
  507. "@creator_id,@last_modification_time,@last_modifier_id,@is_web_appoint,@warn,@disease_screening_type_id::uuid,@for_pregnant_flag,@marital_status_id)",
  508. new List<SugarParameter>() {
  509. new SugarParameter("asbitem_id",asbitem.Id),
  510. new SugarParameter("asbitem_name",asbitem.DisplayName),
  511. new SugarParameter("short_name",asbitem.ShortName),
  512. new SugarParameter("for_sex_id",asbitem.ForSexId),
  513. new SugarParameter("item_type_id",asbitem.ItemTypeId),
  514. new SugarParameter("price",asbitem.Price),
  515. new SugarParameter("device_type_id",asbitem.DeviceTypeId),
  516. new SugarParameter("is_before_eat",asbitem.IsBeforeEat),
  517. new SugarParameter("clinical_meaning",asbitem.ClinicalMeaning),
  518. new SugarParameter("default_result",asbitem.DefaultResult),
  519. new SugarParameter("is_picture_rotate",asbitem.IsPictureRotate),
  520. new SugarParameter("is_check",asbitem.IsCheck),
  521. new SugarParameter("is_active",asbitem.IsActive),
  522. new SugarParameter("simple_code",asbitem.SimpleCode),
  523. new SugarParameter("display_order",asbitem.DisplayOrder),
  524. new SugarParameter("concurrency_stamp",asbitem.ConcurrencyStamp),
  525. new SugarParameter("creation_time",asbitem.CreationTime),
  526. new SugarParameter("creator_id",asbitem.CreatorId),
  527. new SugarParameter("last_modification_time",asbitem.LastModificationTime),
  528. new SugarParameter("last_modifier_id",asbitem.LastModifierId),
  529. new SugarParameter("is_web_appoint",asbitem.IsWebAppoint),
  530. new SugarParameter("warn",asbitem.Warn),
  531. new SugarParameter("disease_screening_type_id",asbitem.DiseaseScreeningTypeId),
  532. new SugarParameter("for_pregnant_flag",asbitem.ForPregnantFlag),
  533. new SugarParameter("marital_status_id",asbitem.MaritalStatusId)
  534. });
  535. //插入明细
  536. foreach (var asbitemDetail in asbitem.AsbitemDetails)
  537. {
  538. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.asbitem_detail(asbitem_id, item_id, concurrency_stamp) values " +
  539. "(@asbitem_id,@item_id,@concurrency_stamp)",
  540. new List<SugarParameter>() {
  541. new SugarParameter("asbitem_id",asbitemDetail.AsbitemId),
  542. new SugarParameter("item_id",asbitemDetail.ItemId),
  543. new SugarParameter("concurrency_stamp",asbitemDetail.ConcurrencyStamp)
  544. });
  545. }
  546. }
  547. _logger.LogInformation($"组合项目、明细项目数据处理完毕,数量{asbitemWithDetails.Count}");
  548. }
  549. }
  550. /// <summary>
  551. /// 套餐
  552. /// </summary>
  553. /// <param name="WebDb"></param>
  554. /// <returns></returns>
  555. private async Task TransMedicalPackage(SqlSugarClient WebDb)
  556. {
  557. var medicalPackageWithDetails = (await _medicalPackageRepository.GetQueryableAsync()).Include(x => x.MedicalPackageDetails).ToList();
  558. if (medicalPackageWithDetails.Count > 0)
  559. {
  560. foreach (var medicalPackage in medicalPackageWithDetails)
  561. {
  562. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.medical_package(medical_package_id, medical_package_name, price, for_sex_id, is_active, remark, display_order, simple_code," +
  563. "concurrency_stamp,creation_time, creator_id, last_modification_time, last_modifier_id, is_web_appoint, marital_status_id,is_basic_recommend,age_lower_limit,age_upper_limit) values " +
  564. "(@medical_package_id,@medical_package_name,@price,@for_sex_id,@is_active,@remark,@display_order,@simple_code, " +
  565. "@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id,@is_web_appoint,@marital_status_id,@is_basic_recommend,@age_lower_limit,@age_upper_limit)",
  566. new List<SugarParameter>() {
  567. new SugarParameter("medical_package_id",medicalPackage.Id),
  568. new SugarParameter("medical_package_name",medicalPackage.DisplayName),
  569. new SugarParameter("price",medicalPackage.Price),
  570. new SugarParameter("for_sex_id",medicalPackage.ForSexId),
  571. new SugarParameter("is_active",medicalPackage.IsActive),
  572. new SugarParameter("remark",medicalPackage.Remark),
  573. new SugarParameter("display_order",medicalPackage.DisplayOrder),
  574. new SugarParameter("simple_code",medicalPackage.SimpleCode),
  575. new SugarParameter("concurrency_stamp",medicalPackage.ConcurrencyStamp),
  576. new SugarParameter("creation_time",medicalPackage.CreationTime),
  577. new SugarParameter("creator_id",medicalPackage.CreatorId),
  578. new SugarParameter("last_modification_time",medicalPackage.LastModificationTime),
  579. new SugarParameter("last_modifier_id",medicalPackage.LastModifierId),
  580. new SugarParameter("is_web_appoint",medicalPackage.IsWebAppoint),
  581. new SugarParameter("marital_status_id",medicalPackage.MaritalStatusId),
  582. new SugarParameter("is_basic_recommend",medicalPackage.IsBasicRecommend),
  583. new SugarParameter("age_lower_limit",medicalPackage.AgeLowerLimit),
  584. new SugarParameter("age_upper_limit",medicalPackage.AgeUpperLimit)
  585. });
  586. //插入明细
  587. foreach (var medicalPackageDetail in medicalPackage.MedicalPackageDetails)
  588. {
  589. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.medical_package_detail(medical_package_id, asbitem_id,price,amount,concurrency_stamp) values " +
  590. "(@medical_package_id,@asbitem_id,@price,@amount,@concurrency_stamp)",
  591. new List<SugarParameter>() {
  592. new SugarParameter("medical_package_id",medicalPackageDetail.MedicalPackageId),
  593. new SugarParameter("asbitem_id",medicalPackageDetail.AsbitemId),
  594. new SugarParameter("price",medicalPackageDetail.Price),
  595. new SugarParameter("amount",medicalPackageDetail.Amount),
  596. new SugarParameter("concurrency_stamp",medicalPackageDetail.ConcurrencyStamp)
  597. });
  598. }
  599. }
  600. _logger.LogInformation($"套餐数据、套餐明细处理完毕,数量{medicalPackageWithDetails.Count}");
  601. }
  602. }
  603. /// <summary>
  604. /// 诊断
  605. /// </summary>
  606. /// <param name="WebDb"></param>
  607. /// <returns></returns>
  608. private async Task TransDiagnosis(SqlSugarClient WebDb)
  609. {
  610. //诊断级别
  611. var diagnosisLevels = await _diagnosisLevelRepository.GetListAsync();
  612. if (diagnosisLevels.Count > 0)
  613. {
  614. foreach (var diagnosisLevel in diagnosisLevels)
  615. {
  616. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.diagnosis_level(diagnosis_level_id, display_name, display_order, concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) " +
  617. "VALUES (@diagnosis_level_id,@display_name,@display_order,@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);",
  618. new List<SugarParameter>() {
  619. new SugarParameter("diagnosis_level_id",diagnosisLevel.Id),
  620. new SugarParameter("display_name",diagnosisLevel.DisplayName),
  621. new SugarParameter("display_order",diagnosisLevel.DisplayOrder),
  622. new SugarParameter("concurrency_stamp",diagnosisLevel.ConcurrencyStamp),
  623. new SugarParameter("creation_time",diagnosisLevel.CreationTime),
  624. new SugarParameter("creator_id",diagnosisLevel.CreatorId),
  625. new SugarParameter("last_modification_time",diagnosisLevel.LastModificationTime),
  626. new SugarParameter("last_modifier_id",diagnosisLevel.LastModifierId)
  627. });
  628. }
  629. _logger.LogInformation($"诊断级别数据处理完毕,数量{diagnosisLevels.Count}");
  630. }
  631. //诊断
  632. var diagnosiss = await _diagnosisRepository.GetListAsync();
  633. if (diagnosiss.Count > 0)
  634. {
  635. foreach (var diagnosis in diagnosiss)
  636. {
  637. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.diagnosis(diagnosis_id, diagnosis_name, item_type_id, suggestion_name, is_ill, for_sex_id, diagnosis_level_id, " +
  638. "simple_code,display_order,concurrency_stamp, creation_time, creator_id,last_modification_time,last_modifier_id) " +
  639. "VALUES (@diagnosis_id,@diagnosis_name,@item_type_id,@suggestion_name,@is_ill,@for_sex_id,@diagnosis_level_id," +
  640. "@simple_code,@display_order,@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);",
  641. new List<SugarParameter>() {
  642. new SugarParameter("diagnosis_id",diagnosis.Id),
  643. new SugarParameter("diagnosis_name",diagnosis.DisplayName),
  644. new SugarParameter("item_type_id",diagnosis.ItemTypeId),
  645. new SugarParameter("suggestion_name",diagnosis.SuggestionName),
  646. new SugarParameter("is_ill",diagnosis.IsIll),
  647. new SugarParameter("for_sex_id",diagnosis.ForSexId),
  648. new SugarParameter("diagnosis_level_id",diagnosis.DiagnosisLevelId),
  649. new SugarParameter("simple_code",diagnosis.SimpleCode),
  650. new SugarParameter("display_order",diagnosis.DisplayOrder),
  651. new SugarParameter("concurrency_stamp",diagnosis.ConcurrencyStamp),
  652. new SugarParameter("creation_time",diagnosis.CreationTime),
  653. new SugarParameter("creator_id",diagnosis.CreatorId),
  654. new SugarParameter("last_modification_time",diagnosis.LastModificationTime),
  655. new SugarParameter("last_modifier_id",diagnosis.LastModifierId)
  656. });
  657. }
  658. _logger.LogInformation($"诊断数据处理完毕,数量{diagnosiss.Count}");
  659. }
  660. }
  661. #endregion
  662. #region 单位相关
  663. /// <summary>
  664. /// 单位数据
  665. /// </summary>
  666. /// <param name="WebDb"></param>
  667. /// <returns></returns>
  668. private async Task TransCustomerOrgAsync(SqlSugarClient WebDb)
  669. {
  670. var customerOrgs = await _customerOrgRepository.GetListAsync();
  671. if (customerOrgs.Count > 0)
  672. {
  673. foreach (var customerOrg in customerOrgs)
  674. {
  675. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.customer_org(customer_org_id, customer_org_name, short_name, parent_id, path_code, simple_code, remark, is_active, display_order," +
  676. "concurrency_stamp, medical_center_id, creation_time, creator_id, last_modification_time, last_modifier_id, country_org_code) " +
  677. "VALUES (@customer_org_id,@customer_org_name,@short_name,@parent_id::uuid,@path_code,@simple_code,@remark,@is_active,@display_order," +
  678. "@concurrency_stamp,@medical_center_id,@creation_time,@creator_id,@last_modification_time,@last_modifier_id,@country_org_code);",
  679. new List<SugarParameter>() {
  680. new SugarParameter("customer_org_id",customerOrg.Id),
  681. new SugarParameter("customer_org_name",customerOrg.DisplayName),
  682. new SugarParameter("short_name",customerOrg.ShortName),
  683. new SugarParameter("parent_id",customerOrg.ParentId),
  684. new SugarParameter("path_code",customerOrg.PathCode),
  685. new SugarParameter("simple_code",customerOrg.SimpleCode),
  686. new SugarParameter("remark",customerOrg.Remark),
  687. new SugarParameter("is_active",customerOrg.IsActive),
  688. new SugarParameter("display_order",customerOrg.DisplayOrder),
  689. new SugarParameter("concurrency_stamp",customerOrg.ConcurrencyStamp),
  690. new SugarParameter("medical_center_id",customerOrg.MedicalCenterId),
  691. new SugarParameter("creation_time",customerOrg.CreationTime),
  692. new SugarParameter("creator_id",customerOrg.CreatorId),
  693. new SugarParameter("last_modification_time",customerOrg.LastModificationTime),
  694. new SugarParameter("last_modifier_id",customerOrg.LastModifierId),
  695. new SugarParameter("country_org_code",customerOrg.CountryOrgCode)
  696. });
  697. }
  698. _logger.LogInformation($"单位数据处理完毕,数量{customerOrgs.Count}");
  699. }
  700. }
  701. /// <summary>
  702. /// 单位体检次数
  703. /// </summary>
  704. /// <param name="WebDb"></param>
  705. /// <returns></returns>
  706. private async Task TransCustomerOrgRegisterAsync(SqlSugarClient WebDb)
  707. {
  708. var customerOrgRegisters = await _customerOrgRegisterRepository.GetListAsync();
  709. if (customerOrgRegisters.Count > 0)
  710. {
  711. foreach (var customerOrgRegister in customerOrgRegisters)
  712. {
  713. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.customer_org_register(customer_org_register_id, customer_org_id, medical_times, register_no, register_name, begin_time," +
  714. "end_time, is_complete, concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id,is_question) " +
  715. "VALUES (@customer_org_register_id,@customer_org_id,@medical_times,@register_no,@register_name,@begin_time," +
  716. "CAST(@end_time as timestamp),@is_complete,@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id,@is_question);",
  717. new List<SugarParameter>() {
  718. new SugarParameter("customer_org_register_id",customerOrgRegister.Id),
  719. new SugarParameter("customer_org_id",customerOrgRegister.CustomerOrgId),
  720. new SugarParameter("medical_times",customerOrgRegister.MedicalTimes),
  721. new SugarParameter("register_no",customerOrgRegister.RegisterNo),
  722. new SugarParameter("register_name",customerOrgRegister.RegisterName),
  723. new SugarParameter("begin_time",customerOrgRegister.BeginTime),
  724. new SugarParameter("end_time",customerOrgRegister.EndTime),
  725. new SugarParameter("is_complete",customerOrgRegister.IsComplete),
  726. new SugarParameter("concurrency_stamp",customerOrgRegister.ConcurrencyStamp),
  727. new SugarParameter("creation_time",customerOrgRegister.CreationTime),
  728. new SugarParameter("creator_id",customerOrgRegister.CreatorId),
  729. new SugarParameter("last_modification_time",customerOrgRegister.LastModificationTime),
  730. new SugarParameter("last_modifier_id",customerOrgRegister.LastModifierId),
  731. new SugarParameter("is_question",customerOrgRegister.IsQuestion)
  732. });
  733. }
  734. _logger.LogInformation($"单位体检次数数据处理完毕,数量{customerOrgRegisters.Count}");
  735. }
  736. }
  737. /// <summary>
  738. /// 单位分组
  739. /// </summary>
  740. /// <param name="WebDb"></param>
  741. /// <returns></returns>
  742. private async Task TransCustomerOrgGroupAsync(SqlSugarClient WebDb)
  743. {
  744. var customerOrgGroups = await _customerOrgGroupRepository.GetListAsync();
  745. if (customerOrgGroups.Count > 0)
  746. {
  747. foreach (var customerOrgGroup in customerOrgGroups)
  748. {
  749. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.customer_org_group(customer_org_group_id, customer_org_group_name, price, for_sex_id, marital_status_id, age_lower_limit, age_upper_limit," +
  750. "job_post, job_title, remark, display_order, customer_org_register_id, concurrency_stamp, creation_time, creator_id,last_modification_time, last_modifier_id,can_add_money) " +
  751. "VALUES (@customer_org_group_id,@customer_org_group_name,@price,@for_sex_id,@marital_status_id,@age_lower_limit,@age_upper_limit," +
  752. "@job_post,@job_title,@remark,@display_order,@customer_org_register_id,@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id,@can_add_money);",
  753. new List<SugarParameter>() {
  754. new SugarParameter("customer_org_group_id",customerOrgGroup.Id),
  755. new SugarParameter("customer_org_group_name",customerOrgGroup.DisplayName),
  756. new SugarParameter("price",customerOrgGroup.Price),
  757. new SugarParameter("for_sex_id",customerOrgGroup.ForSexId),
  758. new SugarParameter("marital_status_id",customerOrgGroup.MaritalStatusId),
  759. new SugarParameter("age_lower_limit",customerOrgGroup.AgeLowerLimit),
  760. new SugarParameter("age_upper_limit",customerOrgGroup.AgeUpperLimit),
  761. new SugarParameter("job_post",customerOrgGroup.JobPost),
  762. new SugarParameter("job_title",customerOrgGroup.JobTitle),
  763. new SugarParameter("remark",customerOrgGroup.Remark),
  764. new SugarParameter("display_order",customerOrgGroup.DisplayOrder),
  765. new SugarParameter("customer_org_register_id",customerOrgGroup.CustomerOrgRegisterId),
  766. new SugarParameter("concurrency_stamp",customerOrgGroup.ConcurrencyStamp),
  767. new SugarParameter("creation_time",customerOrgGroup.CreationTime),
  768. new SugarParameter("creator_id",customerOrgGroup.CreatorId),
  769. new SugarParameter("last_modification_time",customerOrgGroup.LastModificationTime),
  770. new SugarParameter("last_modifier_id",customerOrgGroup.LastModifierId),
  771. new SugarParameter("can_add_money",customerOrgGroup.CanAddMoney),
  772. });
  773. }
  774. _logger.LogInformation($"单位分组数据处理完毕,数量{customerOrgGroups.Count}");
  775. }
  776. }
  777. /// <summary>
  778. /// 单位分组明细
  779. /// </summary>
  780. /// <param name="WebDb"></param>
  781. /// <returns></returns>
  782. private async Task TransCustomerOrgGroupDetailAsync(SqlSugarClient WebDb)
  783. {
  784. var customerOrgGroupDetails = await _customerOrgGroupDetailRepository.GetListAsync();
  785. if (customerOrgGroupDetails.Count > 0)
  786. {
  787. foreach (var customerOrgGroupDetail in customerOrgGroupDetails)
  788. {
  789. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.customer_org_group_detail(customer_org_group_id, asbitem_id, price, amount, concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) " +
  790. "VALUES (@customer_org_group_id,@asbitem_id,@price,@amount,@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);",
  791. new List<SugarParameter>() {
  792. new SugarParameter("customer_org_group_id",customerOrgGroupDetail.CustomerOrgGroupId),
  793. new SugarParameter("asbitem_id",customerOrgGroupDetail.AsbitemId),
  794. new SugarParameter("price",customerOrgGroupDetail.Price),
  795. new SugarParameter("amount",customerOrgGroupDetail.Amount),
  796. new SugarParameter("concurrency_stamp",customerOrgGroupDetail.ConcurrencyStamp),
  797. new SugarParameter("creation_time",customerOrgGroupDetail.CreationTime),
  798. new SugarParameter("creator_id",customerOrgGroupDetail.CreatorId),
  799. new SugarParameter("last_modification_time",customerOrgGroupDetail.LastModificationTime),
  800. new SugarParameter("last_modifier_id",customerOrgGroupDetail.LastModifierId)
  801. });
  802. }
  803. _logger.LogInformation($"单位分组明细数据处理完毕,数量{customerOrgGroupDetails.Count}");
  804. }
  805. }
  806. #endregion
  807. #region 人员导入
  808. /// <summary>
  809. /// 人员导入
  810. /// </summary>
  811. /// <param name="WebDb"></param>
  812. /// <param name="PatientRegisterId"></param>
  813. /// <returns></returns>
  814. private async Task TransPatientRegisterWithDetailAsync(SqlSugarClient WebDb, Guid PatientRegisterId)
  815. {
  816. try
  817. {
  818. await WebDb.Ado.BeginTranAsync();
  819. //人员登记信息
  820. var patientRegisterEnt = (await _patientRegisterRepository.GetQueryableAsync())
  821. .Include(x => x.Patient)
  822. .Include(x => x.SumDiagnoses)
  823. .Include(x => x.SumSuggestionHeaders).ThenInclude(x => x.SumSuggestionContents)
  824. .Include(x => x.SumSummaryHeaders).ThenInclude(x => x.SumSummaryContents)
  825. .Where(m => m.Id == PatientRegisterId).FirstOrDefault();
  826. if (patientRegisterEnt != null)
  827. {
  828. //if (patientRegisterEnt.CompleteFlag != PatientRegisterCompleteFlag.SumCheck)
  829. // throw new UserFriendlyException("人员未总检,不能同步");
  830. var IsPatient = (await WebDb.Ado.GetDataTableAsync($"select patient_id from patient where patient_id='{patientRegisterEnt.PatientId}'")).Rows.Count;
  831. if (IsPatient == 0)
  832. {
  833. #region 插入档案
  834. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.patient(patient_id, patient_no, medical_center_id, patient_name, sex_id, marital_status_id," +
  835. " birth_date, nation_id, birth_place_id, id_no, postal_code, email, telephone, mobile_telephone, address, simple_code, concurrency_stamp, creation_time," +
  836. " creator_id, last_modification_time, last_modifier_id) VALUES (@patient_id,@patient_no,@medical_center_id,@patient_name,@sex_id,@marital_status_id," +
  837. "CAST(@birth_date as timestamp),@nation_id,@birth_place_id::uuid,@id_no,@postal_code,@email,@telephone,@mobile_telephone,@address,@simple_code,@concurrency_stamp,@creation_time," +
  838. "@creator_id,@last_modification_time,@last_modifier_id);",
  839. new List<SugarParameter>() {
  840. new SugarParameter("patient_id",patientRegisterEnt.Patient.Id),
  841. new SugarParameter("patient_no",patientRegisterEnt.Patient.PatientNo),
  842. new SugarParameter("medical_center_id",patientRegisterEnt.Patient.MedicalCenterId),
  843. new SugarParameter("patient_name",patientRegisterEnt.Patient.DisplayName),
  844. new SugarParameter("sex_id",patientRegisterEnt.Patient.SexId),
  845. new SugarParameter("marital_status_id",patientRegisterEnt.Patient.MaritalStatusId),
  846. new SugarParameter("birth_date",patientRegisterEnt.Patient.BirthDate),
  847. new SugarParameter("nation_id",patientRegisterEnt.Patient.NationId),
  848. new SugarParameter("birth_place_id",patientRegisterEnt.Patient.BirthPlaceId),
  849. new SugarParameter("id_no",patientRegisterEnt.Patient.IdNo),
  850. new SugarParameter("postal_code",patientRegisterEnt.Patient.PostalCode),
  851. new SugarParameter("email",patientRegisterEnt.Patient.Email),
  852. new SugarParameter("telephone",patientRegisterEnt.Patient.Telephone),
  853. new SugarParameter("mobile_telephone",patientRegisterEnt.Patient.MobileTelephone),
  854. new SugarParameter("address",patientRegisterEnt.Patient.Address),
  855. new SugarParameter("simple_code",patientRegisterEnt.Patient.SimpleCode),
  856. new SugarParameter("concurrency_stamp",patientRegisterEnt.Patient.ConcurrencyStamp),
  857. new SugarParameter("creation_time",patientRegisterEnt.Patient.CreationTime),
  858. new SugarParameter("creator_id",patientRegisterEnt.Patient.CreatorId),
  859. new SugarParameter("last_modification_time",patientRegisterEnt.Patient.LastModificationTime),
  860. new SugarParameter("last_modifier_id",patientRegisterEnt.Patient.LastModifierId)
  861. });
  862. #endregion
  863. }
  864. short newMedicalTimes = 1;
  865. var maxMedicalTimes = await WebDb.Ado.GetStringAsync($"select max(medical_times) from patient_register where patient_id='{patientRegisterEnt.PatientId}'");
  866. if (!string.IsNullOrWhiteSpace(maxMedicalTimes))
  867. {
  868. newMedicalTimes = (short)(Convert.ToInt16(maxMedicalTimes) + 1);
  869. }
  870. #region 插入人员登记信息
  871. string third_register_id = "";
  872. var patientRegisterExterEnt = await _patientRegisterExterRepository.FirstOrDefaultAsync(f => f.PatientRegisterId == PatientRegisterId);
  873. if (patientRegisterExterEnt != null && !string.IsNullOrWhiteSpace(patientRegisterExterEnt.Planuserid))
  874. third_register_id = patientRegisterExterEnt.Planuserid;
  875. 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," +
  876. "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," +
  877. " 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," +
  878. "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 " +
  879. "(@patient_register_id,@patient_register_no,@patient_id,@medical_times,@customer_org_id,@customer_org_group_id::uuid,@medical_package_id::uuid," +
  880. "@patient_name,@sex_id,CAST(@birth_date as timestamp),@age::smallint,@job_card_no,@medical_card_no,@marital_status_id,@medical_type_id::uuid,@personnel_type_id::uuid,@job_post,@job_title,@photo," +
  881. "@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," +
  882. "@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);",
  883. new List<SugarParameter>() {
  884. new SugarParameter("patient_register_id",patientRegisterEnt.Id),
  885. new SugarParameter("patient_register_no",patientRegisterEnt.PatientRegisterNo),
  886. new SugarParameter("patient_id",patientRegisterEnt.PatientId),
  887. new SugarParameter("medical_times",newMedicalTimes),
  888. new SugarParameter("customer_org_id",patientRegisterEnt.CustomerOrgId),
  889. new SugarParameter("customer_org_group_id",patientRegisterEnt.CustomerOrgGroupId),
  890. new SugarParameter("medical_package_id",patientRegisterEnt.MedicalPackageId),
  891. new SugarParameter("patient_name",patientRegisterEnt.PatientName),
  892. new SugarParameter("sex_id",patientRegisterEnt.SexId),
  893. new SugarParameter("birth_date",patientRegisterEnt.BirthDate),
  894. new SugarParameter("age",patientRegisterEnt.Age),
  895. new SugarParameter("job_card_no",patientRegisterEnt.JobCardNo),
  896. new SugarParameter("medical_card_no",patientRegisterEnt.MedicalCardNo),
  897. new SugarParameter("marital_status_id",patientRegisterEnt.MaritalStatusId),
  898. new SugarParameter("medical_type_id",patientRegisterEnt.MedicalTypeId),
  899. new SugarParameter("personnel_type_id",patientRegisterEnt.PersonnelTypeId),
  900. new SugarParameter("job_post",patientRegisterEnt.JobPost),
  901. new SugarParameter("job_title",patientRegisterEnt.JobTitle),
  902. new SugarParameter("photo",patientRegisterEnt.Photo),
  903. new SugarParameter("sex_hormone_term_id",patientRegisterEnt.SexHormoneTermId),
  904. new SugarParameter("interpose_measure",patientRegisterEnt.InterposeMeasure),
  905. new SugarParameter("medical_conclusion_id",patientRegisterEnt.MedicalConclusionId),
  906. new SugarParameter("complete_flag",patientRegisterEnt.CompleteFlag),
  907. new SugarParameter("is_medical_start",patientRegisterEnt.IsMedicalStart),
  908. new SugarParameter("medical_start_date",patientRegisterEnt.MedicalStartDate),
  909. new SugarParameter("summary_date",patientRegisterEnt.SummaryDate),
  910. new SugarParameter("is_audit",patientRegisterEnt.IsAudit),
  911. new SugarParameter("audit_date",patientRegisterEnt.AuditDate),
  912. new SugarParameter("is_vip",patientRegisterEnt.IsVip),
  913. new SugarParameter("third_info",patientRegisterEnt.ThirdInfo),
  914. new SugarParameter("remark",patientRegisterEnt.Remark),
  915. new SugarParameter("medical_center_id",patientRegisterEnt.MedicalCenterId),
  916. new SugarParameter("customer_org_register_id",patientRegisterEnt.CustomerOrgRegisterId),
  917. new SugarParameter("concurrency_stamp",patientRegisterEnt.ConcurrencyStamp),
  918. // new SugarParameter("creation_time",patientRegisterEnt.CreationTime),
  919. new SugarParameter("creation_time",patientRegisterEnt.CreationTime),
  920. new SugarParameter("creator_id",patientRegisterEnt.CreatorId),
  921. new SugarParameter("last_modification_time",patientRegisterEnt.LastModificationTime),
  922. new SugarParameter("last_modifier_id",patientRegisterEnt.LastModifierId),
  923. new SugarParameter("audit_doctor_id",patientRegisterEnt.AuditDoctorId),
  924. new SugarParameter("summary_doctor_id",patientRegisterEnt.SummaryDoctorId),
  925. new SugarParameter("his_patient_id",patientRegisterEnt.HisPatientId),
  926. new SugarParameter("third_register_id",third_register_id)
  927. });
  928. #endregion
  929. #region 插入registercheck、以及相关
  930. var registerCheckWithDetails = (await _registerCheckRepository.GetQueryableAsync())
  931. .Include(x => x.RegisterCheckAsbitems)
  932. .Include(x => x.RegisterCheckItems)
  933. .Include(x => x.RegisterCheckPictures)
  934. .Include(x => x.RegisterCheckSuggestions)
  935. .Include(x => x.RegisterCheckSummaries)
  936. .Where(m => m.PatientRegisterId == patientRegisterEnt.Id).ToList();
  937. foreach (var registerCheckWithDetail in registerCheckWithDetails)
  938. {
  939. #region register_check
  940. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.register_check(register_check_id, patient_register_id, check_request_no, third_info, complete_flag, critical_value, critical_value_flag, critical_value_process_content," +
  941. "critical_value_process_flag, critical_value_process_doctor, critical_value_process_date, critical_value_create_date, check_doctor_id, check_date, is_audit," +
  942. " auditor_user_id, audit_time, concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id, exec_organization_unit_id,is_pacs_check,pacs_check_date,pacs_upload_date) VALUES " +
  943. "(@register_check_id,@patient_register_id,@check_request_no,@third_info,@complete_flag,@critical_value,@critical_value_flag,@critical_value_process_content," +
  944. "@critical_value_process_flag,@critical_value_process_doctor,CAST(@critical_value_process_date as timestamp),CAST(@critical_value_create_date as timestamp),@check_doctor_id,CAST(@check_date as timestamp),@is_audit," +
  945. "@auditor_user_id::uuid,CAST(@audit_time as timestamp),@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id,@exec_organization_unit_id::uuid,@is_pacs_check,CAST(@pacs_check_date as timestamp),CAST(@pacs_upload_date as timestamp));",
  946. new List<SugarParameter>() {
  947. new SugarParameter("register_check_id",registerCheckWithDetail.Id),
  948. new SugarParameter("patient_register_id",registerCheckWithDetail.PatientRegisterId),
  949. new SugarParameter("check_request_no",registerCheckWithDetail.CheckRequestNo),
  950. new SugarParameter("third_info",registerCheckWithDetail.ThirdInfo),
  951. new SugarParameter("complete_flag",registerCheckWithDetail.CompleteFlag),
  952. new SugarParameter("critical_value",registerCheckWithDetail.CriticalRangeValue),
  953. new SugarParameter("critical_value_flag",registerCheckWithDetail.IsCriticalValue),
  954. new SugarParameter("critical_value_process_content",registerCheckWithDetail.CriticalValueContent),
  955. new SugarParameter("critical_value_process_flag",null),
  956. new SugarParameter("critical_value_process_doctor",""),
  957. new SugarParameter("critical_value_process_date",null),
  958. new SugarParameter("critical_value_create_date",null),
  959. new SugarParameter("check_doctor_id",registerCheckWithDetail.CheckDoctorId),
  960. new SugarParameter("check_date",registerCheckWithDetail.CheckDate),
  961. new SugarParameter("is_audit",registerCheckWithDetail.IsAudit),
  962. new SugarParameter("auditor_user_id",registerCheckWithDetail.AuditorUserId),
  963. new SugarParameter("audit_time",registerCheckWithDetail.AuditTime),
  964. new SugarParameter("concurrency_stamp",registerCheckWithDetail.ConcurrencyStamp),
  965. new SugarParameter("creation_time",registerCheckWithDetail.CreationTime),
  966. new SugarParameter("creator_id",registerCheckWithDetail.CreatorId),
  967. new SugarParameter("last_modification_time",registerCheckWithDetail.LastModificationTime),
  968. new SugarParameter("last_modifier_id",registerCheckWithDetail.LastModifierId),
  969. new SugarParameter("exec_organization_unit_id",registerCheckWithDetail.ExecOrganizationUnitId),
  970. new SugarParameter("is_pacs_check",registerCheckWithDetail.IsPacsCheck),
  971. new SugarParameter("pacs_check_date",registerCheckWithDetail.PacsCheckDate),
  972. new SugarParameter("pacs_upload_date",registerCheckWithDetail.PacsUploadDate)
  973. });
  974. #endregion
  975. #region register_check_asbitem
  976. foreach (var registerCheckAsbitem in registerCheckWithDetail.RegisterCheckAsbitems)
  977. {
  978. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.register_check_asbitem" +
  979. "(register_check_asbitem_id, register_check_id, asbitem_id, patient_register_id, standard_price, charge_price," +
  980. "pay_type_flag, is_charge, amount, concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) VALUES " +
  981. "(@register_check_asbitem_id,@register_check_id,@asbitem_id,@patient_register_id,@standard_price,@charge_price," +
  982. "@pay_type_flag,@is_charge,@amount,@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);",
  983. new List<SugarParameter>() {
  984. new SugarParameter("register_check_asbitem_id",registerCheckAsbitem.Id),
  985. new SugarParameter("register_check_id",registerCheckAsbitem.RegisterCheckId),
  986. new SugarParameter("asbitem_id",registerCheckAsbitem.AsbitemId),
  987. new SugarParameter("patient_register_id",registerCheckAsbitem.PatientRegisterId),
  988. new SugarParameter("standard_price",registerCheckAsbitem.StandardPrice),
  989. new SugarParameter("charge_price",registerCheckAsbitem.ChargePrice),
  990. new SugarParameter("pay_type_flag",registerCheckAsbitem.PayTypeFlag),
  991. new SugarParameter("is_charge",registerCheckAsbitem.IsCharge),
  992. new SugarParameter("amount",registerCheckAsbitem.Amount),
  993. new SugarParameter("concurrency_stamp",registerCheckAsbitem.ConcurrencyStamp),
  994. new SugarParameter("creation_time",registerCheckAsbitem.CreationTime),
  995. new SugarParameter("creator_id",registerCheckAsbitem.CreatorId),
  996. new SugarParameter("last_modification_time",registerCheckAsbitem.LastModificationTime),
  997. new SugarParameter("last_modifier_id",registerCheckAsbitem.LastModifierId),
  998. });
  999. }
  1000. #endregion
  1001. #region register_check_item
  1002. foreach (var registerCheckItem in registerCheckWithDetail.RegisterCheckItems)
  1003. {
  1004. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.register_check_item(register_check_id, item_id, result, unit, reference_range_value, critical_range_value, critical_value, result_status_id, check_doctor_name, " +
  1005. "check_date, concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) VALUES " +
  1006. "(@register_check_id,@item_id,@result,@unit,@reference_range_value,@critical_range_value,@critical_value,@result_status_id,@check_doctor_name," +
  1007. "CAST(@check_date as timestamp),@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);",
  1008. new List<SugarParameter>() {
  1009. new SugarParameter("register_check_id",registerCheckItem.RegisterCheckId),
  1010. new SugarParameter("item_id",registerCheckItem.ItemId),
  1011. new SugarParameter("result",registerCheckItem.Result),
  1012. new SugarParameter("unit",registerCheckItem.Unit),
  1013. new SugarParameter("reference_range_value",registerCheckItem.ReferenceRangeValue),
  1014. new SugarParameter("critical_range_value",registerCheckItem.CriticalRangeValue),
  1015. new SugarParameter("critical_value",registerCheckItem.CriticalValue),
  1016. new SugarParameter("result_status_id",registerCheckItem.ResultStatusId),
  1017. new SugarParameter("check_doctor_name",registerCheckItem.CheckDoctorName),
  1018. new SugarParameter("check_date",registerCheckItem.CheckDate),
  1019. new SugarParameter("concurrency_stamp",registerCheckItem.ConcurrencyStamp),
  1020. new SugarParameter("creation_time",registerCheckItem.CreationTime),
  1021. new SugarParameter("creator_id",registerCheckItem.CreatorId),
  1022. new SugarParameter("last_modification_time",registerCheckItem.LastModificationTime),
  1023. new SugarParameter("last_modifier_id",registerCheckItem.LastModifierId)
  1024. });
  1025. }
  1026. #endregion
  1027. #region register_check_picture
  1028. foreach (var registerCheckPicture in registerCheckWithDetail.RegisterCheckPictures)
  1029. {
  1030. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.register_check_picture" +
  1031. "(register_check_picture_id, register_check_id, picture_filename, is_print, display_order," +
  1032. "concurrency_stamp, creation_time,creator_id, last_modification_time, last_modifier_id, picture_file_type) VALUES " +
  1033. "(@register_check_picture_id,@register_check_id,@picture_filename,@is_print,@display_order," +
  1034. "@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id,@picture_file_type);",
  1035. new List<SugarParameter>() {
  1036. new SugarParameter("register_check_picture_id",registerCheckPicture.Id),
  1037. new SugarParameter("register_check_id",registerCheckPicture.RegisterCheckId),
  1038. new SugarParameter("picture_filename",registerCheckPicture.PictureFilename),
  1039. new SugarParameter("is_print",registerCheckPicture.IsPrint),
  1040. new SugarParameter("display_order",registerCheckPicture.DisplayOrder),
  1041. new SugarParameter("concurrency_stamp",registerCheckPicture.ConcurrencyStamp),
  1042. new SugarParameter("creation_time",registerCheckPicture.CreationTime),
  1043. new SugarParameter("creator_id",registerCheckPicture.CreatorId),
  1044. new SugarParameter("last_modification_time",registerCheckPicture.LastModificationTime),
  1045. new SugarParameter("last_modifier_id",registerCheckPicture.LastModifierId),
  1046. new SugarParameter("picture_file_type",registerCheckPicture.PictureFileType)
  1047. });
  1048. }
  1049. #endregion
  1050. #region register_check_suggestion
  1051. foreach (var registerCheckSuggestion in registerCheckWithDetail.RegisterCheckSuggestions)
  1052. {
  1053. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.register_check_suggestion" +
  1054. "(register_check_suggestion_id, register_check_id, suggestion, display_order," +
  1055. "concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) VALUES " +
  1056. "(@register_check_suggestion_id,@register_check_id,@suggestion,@display_order," +
  1057. "@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);",
  1058. new List<SugarParameter>() {
  1059. new SugarParameter("register_check_suggestion_id",registerCheckSuggestion.Id),
  1060. new SugarParameter("register_check_id",registerCheckSuggestion.RegisterCheckId),
  1061. new SugarParameter("suggestion",registerCheckSuggestion.Suggestion),
  1062. new SugarParameter("display_order",registerCheckSuggestion.DisplayOrder),
  1063. new SugarParameter("concurrency_stamp",registerCheckSuggestion.ConcurrencyStamp),
  1064. new SugarParameter("creation_time",registerCheckSuggestion.CreationTime),
  1065. new SugarParameter("creator_id",registerCheckSuggestion.CreatorId),
  1066. new SugarParameter("last_modification_time",registerCheckSuggestion.LastModificationTime),
  1067. new SugarParameter("last_modifier_id",registerCheckSuggestion.LastModifierId)
  1068. });
  1069. }
  1070. #endregion
  1071. #region register_check_summary
  1072. foreach (var registerCheckSummarie in registerCheckWithDetail.RegisterCheckSummaries)
  1073. {
  1074. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.register_check_summary" +
  1075. "(register_check_summary_id, register_check_id, summary, display_order, summary_flag," +
  1076. "concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) VALUES " +
  1077. "(@register_check_summary_id,@register_check_id,@summary,@display_order,@summary_flag," +
  1078. "@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);",
  1079. new List<SugarParameter>() {
  1080. new SugarParameter("register_check_summary_id",registerCheckSummarie.Id),
  1081. new SugarParameter("register_check_id",registerCheckSummarie.RegisterCheckId),
  1082. new SugarParameter("summary",registerCheckSummarie.Summary),
  1083. new SugarParameter("display_order",registerCheckSummarie.DisplayOrder),
  1084. new SugarParameter("summary_flag",registerCheckSummarie.SummaryFlag),
  1085. new SugarParameter("concurrency_stamp",registerCheckSummarie.ConcurrencyStamp),
  1086. new SugarParameter("creation_time",registerCheckSummarie.CreationTime),
  1087. new SugarParameter("creator_id",registerCheckSummarie.CreatorId),
  1088. new SugarParameter("last_modification_time",registerCheckSummarie.LastModificationTime),
  1089. new SugarParameter("last_modifier_id",registerCheckSummarie.LastModifierId),
  1090. });
  1091. }
  1092. #endregion
  1093. }
  1094. #endregion
  1095. #region 插入总检综述
  1096. foreach (var sumSummaryHeader in patientRegisterEnt.SumSummaryHeaders)
  1097. {
  1098. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.sum_summary_header" +
  1099. "(sum_summary_header_id, patient_register_id, summary_title, summary_flag, display_order," +
  1100. "concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) VALUES " +
  1101. "(@sum_summary_header_id,@patient_register_id,@summary_title,@summary_flag,@display_order," +
  1102. "@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);",
  1103. new List<SugarParameter>() {
  1104. new SugarParameter("sum_summary_header_id",sumSummaryHeader.Id),
  1105. new SugarParameter("patient_register_id",sumSummaryHeader.PatientRegisterId),
  1106. new SugarParameter("summary_title",sumSummaryHeader.SummaryTitle),
  1107. new SugarParameter("summary_flag",sumSummaryHeader.SummaryFlag),
  1108. new SugarParameter("display_order",sumSummaryHeader.DisplayOrder),
  1109. new SugarParameter("concurrency_stamp",sumSummaryHeader.ConcurrencyStamp),
  1110. new SugarParameter("creation_time",sumSummaryHeader.CreationTime),
  1111. new SugarParameter("creator_id",sumSummaryHeader.CreatorId),
  1112. new SugarParameter("last_modification_time",sumSummaryHeader.LastModificationTime),
  1113. new SugarParameter("last_modifier_id",sumSummaryHeader.LastModifierId)
  1114. });
  1115. foreach (var sumSummaryContent in sumSummaryHeader.SumSummaryContents)
  1116. {
  1117. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.sum_summary_content" +
  1118. "(sum_summary_content_id, sum_summary_header_id, summary_content, display_order, " +
  1119. "concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) VALUES " +
  1120. "(@sum_summary_content_id,@sum_summary_header_id,@summary_content,@display_order," +
  1121. "@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);",
  1122. new List<SugarParameter>() {
  1123. new SugarParameter("sum_summary_content_id",sumSummaryContent.Id),
  1124. new SugarParameter("sum_summary_header_id",sumSummaryContent.SumSummaryHeaderId),
  1125. new SugarParameter("summary_content",sumSummaryContent.SummaryContent),
  1126. new SugarParameter("display_order",sumSummaryContent.DisplayOrder),
  1127. new SugarParameter("concurrency_stamp",sumSummaryContent.ConcurrencyStamp),
  1128. new SugarParameter("creation_time",sumSummaryContent.CreationTime),
  1129. new SugarParameter("creator_id",sumSummaryContent.CreatorId),
  1130. new SugarParameter("last_modification_time",sumSummaryContent.LastModificationTime),
  1131. new SugarParameter("last_modifier_id",sumSummaryContent.LastModifierId)
  1132. });
  1133. }
  1134. }
  1135. #endregion
  1136. #region 插入总检建议
  1137. foreach (var sumSuggestionHeader in patientRegisterEnt.SumSuggestionHeaders)
  1138. {
  1139. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.sum_suggestion_header" +
  1140. "(sum_suggestion_header_id, patient_register_id, suggestion_title, suggestion_flag, display_order," +
  1141. "concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) VALUES " +
  1142. "(@sum_suggestion_header_id,@patient_register_id,@suggestion_title,@suggestion_flag,@display_order," +
  1143. "@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);",
  1144. new List<SugarParameter>() {
  1145. new SugarParameter("sum_suggestion_header_id",sumSuggestionHeader.Id),
  1146. new SugarParameter("patient_register_id",sumSuggestionHeader.PatientRegisterId),
  1147. new SugarParameter("suggestion_title",sumSuggestionHeader.SuggestionTitle),
  1148. new SugarParameter("suggestion_flag",sumSuggestionHeader.SuggestionFlag),
  1149. new SugarParameter("display_order",sumSuggestionHeader.DisplayOrder),
  1150. new SugarParameter("concurrency_stamp",sumSuggestionHeader.ConcurrencyStamp),
  1151. new SugarParameter("creation_time",sumSuggestionHeader.CreationTime),
  1152. new SugarParameter("creator_id",sumSuggestionHeader.CreatorId),
  1153. new SugarParameter("last_modification_time",sumSuggestionHeader.LastModificationTime),
  1154. new SugarParameter("last_modifier_id",sumSuggestionHeader.LastModifierId)
  1155. });
  1156. foreach (var sumSuggestionContent in sumSuggestionHeader.SumSuggestionContents)
  1157. {
  1158. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.sum_suggestion_content" +
  1159. "(sum_suggestion_content_id, sum_suggestion_header_id, suggestion_type, suggestion_content, display_order, " +
  1160. "concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) VALUES " +
  1161. "(@sum_suggestion_content_id,@sum_suggestion_header_id,@suggestion_type,@suggestion_content,@display_order, " +
  1162. "@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);",
  1163. new List<SugarParameter>() {
  1164. new SugarParameter("sum_suggestion_content_id",sumSuggestionContent.Id),
  1165. new SugarParameter("sum_suggestion_header_id",sumSuggestionContent.SumSuggestionHeaderId),
  1166. new SugarParameter("suggestion_type",sumSuggestionContent.SuggestionType),
  1167. new SugarParameter("suggestion_content",sumSuggestionContent.SuggestionContent),
  1168. new SugarParameter("display_order",sumSuggestionContent.DisplayOrder),
  1169. new SugarParameter("concurrency_stamp",sumSuggestionContent.ConcurrencyStamp),
  1170. new SugarParameter("creation_time",sumSuggestionContent.CreationTime),
  1171. new SugarParameter("creator_id",sumSuggestionContent.CreatorId),
  1172. new SugarParameter("last_modification_time",sumSuggestionContent.LastModificationTime),
  1173. new SugarParameter("last_modifier_id",sumSuggestionContent.LastModifierId)
  1174. });
  1175. }
  1176. }
  1177. #endregion
  1178. #region 插入总检诊断
  1179. foreach (var sumDiagnoses in patientRegisterEnt.SumDiagnoses)
  1180. {
  1181. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.sum_diagnosis" +
  1182. "(patient_register_id, diagnosis_id, sum_suggestion_header_id, display_order, concurrency_stamp) VALUES " +
  1183. "(@patient_register_id,@diagnosis_id,@sum_suggestion_header_id,@display_order,@concurrency_stamp);",
  1184. new List<SugarParameter>() {
  1185. new SugarParameter("patient_register_id",sumDiagnoses.PatientRegisterId),
  1186. new SugarParameter("diagnosis_id",sumDiagnoses.DiagnosisId),
  1187. new SugarParameter("sum_suggestion_header_id",sumDiagnoses.SumSuggestionHeaderId),
  1188. new SugarParameter("display_order",sumDiagnoses.DisplayOrder),
  1189. new SugarParameter("concurrency_stamp",sumDiagnoses.ConcurrencyStamp)
  1190. });
  1191. }
  1192. #endregion
  1193. if (patientRegisterEnt.CompleteFlag != PatientRegisterCompleteFlag.SumCheck)
  1194. patientRegisterEnt.IsUploadAppoint = 'Y';
  1195. await _patientRegisterRepository.UpdateAsync(patientRegisterEnt);
  1196. }
  1197. else
  1198. {
  1199. throw new UserFriendlyException("数据不存在");
  1200. }
  1201. await WebDb.Ado.CommitTranAsync();
  1202. }
  1203. catch (Exception ex)
  1204. {
  1205. await WebDb.Ado.RollbackTranAsync();
  1206. throw new UserFriendlyException(ex.ToString());
  1207. }
  1208. }
  1209. #endregion
  1210. #region 撤销、删除
  1211. /// <summary>
  1212. /// 人员导入
  1213. /// </summary>
  1214. /// <param name="WebDb"></param>
  1215. /// <param name="PatientRegisterId"></param>
  1216. /// <returns></returns>
  1217. private async Task DeletePatientRegisterWithDetailAsync(SqlSugarClient WebDb, Guid PatientRegisterId)
  1218. {
  1219. try
  1220. {
  1221. await WebDb.Ado.BeginTranAsync();
  1222. await WebDb.Ado.ExecuteCommandAsync($"delete from sum_diagnosis where patient_register_id='{PatientRegisterId}'");
  1223. 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}')");
  1224. await WebDb.Ado.ExecuteCommandAsync($"delete from sum_summary_header where patient_register_id='{PatientRegisterId}'");
  1225. 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}')");
  1226. await WebDb.Ado.ExecuteCommandAsync($"delete from sum_suggestion_header where patient_register_id='{PatientRegisterId}'");
  1227. 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}')");
  1228. 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}')");
  1229. 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}')");
  1230. 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}')");
  1231. 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}')");
  1232. await WebDb.Ado.ExecuteCommandAsync($"delete from register_check where patient_register_id='{PatientRegisterId}'");
  1233. await WebDb.Ado.ExecuteCommandAsync($"delete from patient where patient_id in (select patient_id from patient_register where patient_register_id='{PatientRegisterId}')");
  1234. await WebDb.Ado.ExecuteCommandAsync($"delete from patient_register where patient_register_id='{PatientRegisterId}'");
  1235. await WebDb.Ado.CommitTranAsync();
  1236. }
  1237. catch (Exception ex)
  1238. {
  1239. await WebDb.Ado.RollbackTranAsync();
  1240. throw new UserFriendlyException(ex.ToString());
  1241. }
  1242. }
  1243. #endregion
  1244. #region 临时导数据
  1245. int sumCount = 0;
  1246. int handCount = 0;
  1247. /// <summary>
  1248. /// 导入体检数据到web 全部导入 2024-06-06
  1249. /// </summary>
  1250. /// <returns></returns>
  1251. [RemoteService(false)]
  1252. public async Task ExportPatientRegisterWithDetailData()
  1253. {
  1254. var connectString = @"Host=10.1.12.138;Port=5432;Database=WebPeis0520;User ID=postgres;Password=st123;";
  1255. SqlSugarClient WebDb = new SqlSugarClient(new ConnectionConfig()
  1256. {
  1257. ConnectionString = connectString,
  1258. DbType = SqlSugar.DbType.PostgreSQL,
  1259. IsAutoCloseConnection = true
  1260. });
  1261. string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='patient_register_web' ");
  1262. var patientRegisterIds = (await _patientRegisterRepository.GetQueryableAsync())
  1263. .Where(m => string.Compare(m.Id.ToString(), string.IsNullOrEmpty(nextKeyValue) ? "" : nextKeyValue) > 0).OrderBy(o => o.Id).Select(s => s.Id).Take(1000).ToList();
  1264. if (patientRegisterIds.Any())
  1265. {
  1266. foreach (var patientRegisterId in patientRegisterIds)
  1267. {
  1268. sumCount++;
  1269. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1270. {
  1271. var IsPatient = (await WebDb.Ado.GetDataTableAsync($"select patient_register_id from patient_register where patient_register_id='{patientRegisterId}'")).Rows.Count;
  1272. if (IsPatient == 0)
  1273. {
  1274. await TransPatientRegisterWithDetailAsync(WebDb, patientRegisterId);
  1275. handCount++;
  1276. }
  1277. nextKeyValue = patientRegisterId.ToString();
  1278. }
  1279. await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{patientRegisterId}',addtime=getdate(),handlecount+=1 where tablename='patient_register_web' ");
  1280. }
  1281. }
  1282. _logger.LogInformation($"当前查询数据:{sumCount},新增数据:{handCount}");
  1283. if (patientRegisterIds.Any())
  1284. await ExportPatientRegisterWithDetailData();
  1285. }
  1286. /// <summary>
  1287. /// 反向导入 导入体检数据到web 全部导入 2024-06-07
  1288. /// </summary>
  1289. /// <returns></returns>
  1290. [RemoteService(false)]
  1291. public async Task ExportPatientRegisterWithDetailReverseData()
  1292. {
  1293. //var connectString = @"Host=10.1.12.138;Port=5432;Database=WebPeis0520;User ID=postgres;Password=st123;";
  1294. var connectString = @"Host=62.156.10.86;Port=5432;Database=WebPeis0520;User ID=postgres;Password=st123;";
  1295. SqlSugarClient WebDb = new SqlSugarClient(new ConnectionConfig()
  1296. {
  1297. ConnectionString = connectString,
  1298. DbType = SqlSugar.DbType.PostgreSQL,
  1299. IsAutoCloseConnection = true
  1300. });
  1301. string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='patient_register_web_reverse' ");
  1302. var patientRegisterIds = (await _patientRegisterRepository.GetQueryableAsync())
  1303. .Where(m => string.Compare(string.IsNullOrEmpty(nextKeyValue) ? "" : nextKeyValue, m.Id.ToString()) > 0).OrderByDescending(o => o.Id).Select(s => s.Id).Take(1000).ToList();
  1304. if (patientRegisterIds.Any())
  1305. {
  1306. foreach (var patientRegisterId in patientRegisterIds)
  1307. {
  1308. sumCount++;
  1309. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1310. {
  1311. var IsPatient = (await WebDb.Ado.GetDataTableAsync($"select patient_register_id from patient_register where patient_register_id='{patientRegisterId}'")).Rows.Count;
  1312. if (IsPatient == 0)
  1313. {
  1314. await TransPatientRegisterWithDetailAsync(WebDb, patientRegisterId);
  1315. handCount++;
  1316. }
  1317. nextKeyValue = patientRegisterId.ToString();
  1318. }
  1319. await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{patientRegisterId}',addtime=getdate(),handlecount+=1 where tablename='patient_register_web_reverse' ");
  1320. }
  1321. }
  1322. _logger.LogInformation($"当前降序查询数据:{sumCount},新增数据:{handCount}");
  1323. if (patientRegisterIds.Any())
  1324. await ExportPatientRegisterWithDetailReverseData();
  1325. }
  1326. #endregion
  1327. #region 临时导报告
  1328. /// <summary>
  1329. /// 临时导入2024年报告
  1330. /// </summary>
  1331. /// <returns></returns>
  1332. [RemoteService(false)]
  1333. public async Task TempExportReportAsync()
  1334. {
  1335. var patientRegisterIds = (await _patientRegisterRepository.GetQueryableAsync())
  1336. .Where(m => m.CompleteFlag == PatientRegisterCompleteFlag.SumCheck
  1337. && m.SummaryDate > Convert.ToDateTime("2024-01-01 00:00:00"))
  1338. .OrderBy(o => o.SummaryDate)
  1339. .Select(s => s.Id).ToList();
  1340. foreach (var item in patientRegisterIds)
  1341. {
  1342. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1343. {
  1344. 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;
  1345. if (isUploadReport == 1)
  1346. {
  1347. await SyncPatientRegisterReportByPatientRegisterIdAsync(new PatientRegisterIdInputDto
  1348. {
  1349. PatientRegisterId = item
  1350. });
  1351. }
  1352. await uow.CompleteAsync();
  1353. }
  1354. }
  1355. }
  1356. #endregion
  1357. /// <summary>
  1358. /// 测试短信
  1359. /// </summary>
  1360. /// <returns></returns>
  1361. [HttpPost("api/app/TransToWebPeis/TestSms")]
  1362. public async Task TestSmsAsync(Guid patientRegisterId)
  1363. {
  1364. //推送短信
  1365. var patientRegister = await _patientRegisterRepository.FirstOrDefaultAsync(f => f.Id == patientRegisterId);
  1366. await PushSmsAsync(patientRegister);
  1367. }
  1368. /// <summary>
  1369. /// 推送体检报告通知短信
  1370. /// </summary>
  1371. /// <param name="patientRegister"></param>
  1372. /// <returns></returns>
  1373. private async Task PushSmsAsync(PatientRegister patientRegister)
  1374. {
  1375. var smsThirdInterface = await _thirdInterfaceRepository.FirstOrDefaultAsync(o => o.ThirdInterfaceType ==
  1376. ThirdInterfaceTypeFlag.SmsPush);
  1377. if (smsThirdInterface != null && smsThirdInterface.IsActive == 'Y')
  1378. {
  1379. var parmValue = smsThirdInterface.ParmValue;
  1380. var configurationBuilder = new ConfigurationBuilder()
  1381. .AddJsonStream(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(parmValue)));
  1382. var interfaceConfig = configurationBuilder.Build();
  1383. var pushApiAddress = interfaceConfig.GetSection("Interface").GetSection("PushApiAddress").Value;
  1384. var isEnableSms = interfaceConfig.GetSection("Interface").GetSection("IsActive").Value;
  1385. var noticeTemplateId = interfaceConfig.GetSection("Interface").GetSection("NoticeTemplateId").Value;
  1386. if (!string.IsNullOrWhiteSpace(isEnableSms)
  1387. && !string.IsNullOrWhiteSpace(noticeTemplateId)
  1388. && isEnableSms == "Y")
  1389. {
  1390. SmsPlugIns smsPlugIns = new SmsPlugIns(smsThirdInterface.Id);
  1391. var smsAppId = Guid.Parse(interfaceConfig.GetSection("Interface").GetSection("SmsAppId").Value);
  1392. var smsTypeId = Guid.Parse(interfaceConfig.GetSection("Interface").GetSection("SmsTypeId").Value);
  1393. var patientEnt = await _patientRepository.FirstOrDefaultAsync(f => f.Id == patientRegister.PatientId);
  1394. if (patientEnt != null)
  1395. {
  1396. var inputDto = new CreateSmsTaskDto
  1397. {
  1398. SmsAppId = smsAppId,
  1399. SmsTypeId = smsTypeId,
  1400. Content = "",
  1401. CountryCode = "86",
  1402. MobileTelephone = patientEnt.MobileTelephone,
  1403. PersonId = patientRegister.PatientId.ToString(),
  1404. PersonName = patientRegister.PatientName,
  1405. SenderId = "admin",
  1406. SenderName = "体检",
  1407. StopTime = "",
  1408. TaskCorn = "",
  1409. TaskCycleType = '0',
  1410. TemplateId = noticeTemplateId,
  1411. ThirdId = patientRegister.Id.ToString()
  1412. };
  1413. await smsPlugIns.CallSmsAppServiceAsync<CreateSmsTaskDto, Task>(pushApiAddress, inputDto);
  1414. }
  1415. }
  1416. }
  1417. }
  1418. #region 临时处理青藏公司用户id关系
  1419. /// <summary>
  1420. ///
  1421. /// </summary>
  1422. /// <returns></returns>
  1423. [HttpPost("api/app/TransToWebPeis/SyncPatientRegisterQZTLUserId")]
  1424. public async Task SyncPatientRegisterQZTLUserIdAsync(SyncPatientRegisterQZTLUserIdInputDto input)
  1425. {
  1426. if (input.PatientRegisterNos.Any())
  1427. {
  1428. SqlSugarClient peisTemp = new SqlSugarClient(new ConnectionConfig()
  1429. {
  1430. ConnectionString = "Host=10.1.12.140;Port=5432;Database=ShentunPeis0508;User ID=postgres;Password=st123;",
  1431. DbType = SqlSugar.DbType.PostgreSQL,
  1432. IsAutoCloseConnection = true
  1433. });
  1434. //SqlSugarClient peisTempOld = new SqlSugarClient(new ConnectionConfig()
  1435. //{
  1436. // ConnectionString = "server=10.1.12.139;uid=sa;pwd=VMware6.0u2;database=mypeis;Encrypt=false;",
  1437. // DbType = SqlSugar.DbType.SqlServer,
  1438. // IsAutoCloseConnection = true
  1439. //});
  1440. List<QztlPatientRegisterFromInterfacePlan> oldList = new List<QztlPatientRegisterFromInterfacePlan>();
  1441. var qztlDataList = await peisTemp.Ado.GetDataTableAsync($"select data from public.qztl_import_data ");
  1442. //组合参数
  1443. foreach (DataRow item in qztlDataList.Rows)
  1444. {
  1445. if (!string.IsNullOrWhiteSpace(item["data"].ToString()))
  1446. {
  1447. var oldData = JsonConvert.DeserializeObject<QztlPatientRegisterFromInterface>(item["data"].ToString());
  1448. if (oldData != null && oldData.errorMsg == "OK")
  1449. {
  1450. oldList.AddRange(oldData.plans);
  1451. }
  1452. }
  1453. }
  1454. //#region sqlserver 数据
  1455. //var qztlDataOldList = await peisTempOld.Ado.GetDataTableAsync($"select data from qztl_import_data where create_date>'2023-01-01' ");
  1456. ////组合参数
  1457. //foreach (DataRow item in qztlDataOldList.Rows)
  1458. //{
  1459. // if (!string.IsNullOrWhiteSpace(item["data"].ToString()))
  1460. // {
  1461. // string oldstr = item["data"].ToString().Replace("\"[", "[").Replace("]\"", "]").Replace("\\","");
  1462. // var oldData = JsonConvert.DeserializeObject<QztlPatientRegisterFromInterface>(oldstr);
  1463. // if (oldData != null && oldData.errorMsg == "OK")
  1464. // {
  1465. // oldList.AddRange(oldData.plans.Where(m => m.year == 2024).ToList());
  1466. // }
  1467. // }
  1468. //}
  1469. //#endregion
  1470. foreach (var patientRegisterNo in input.PatientRegisterNos)
  1471. {
  1472. var patientRegisterList = await peisTemp.Ado.GetDataTableAsync($"select a.id,a.patient_name,b.id_no from public.patient_register as a " +
  1473. $"left join patient as b on a.patient_id=b.id where patient_register_no='{patientRegisterNo}' ");
  1474. if (patientRegisterList.Rows.Count > 0)
  1475. {
  1476. string patientName = patientRegisterList.Rows[0]["patient_name"].ToString();
  1477. string idNo = patientRegisterList.Rows[0]["id_no"].ToString();
  1478. Guid patientRegisterId = Guid.Parse(patientRegisterList.Rows[0]["id"].ToString());
  1479. var isDT = oldList.Where(f => f.personName.Trim() == patientName.Trim()
  1480. && f.cardId.Trim().ToUpper() == idNo.Trim().ToUpper()
  1481. && f.year == 2024).Select(s => s.id).Distinct().ToList();
  1482. //if (isDT.Count == 0)
  1483. //{
  1484. // var idNos = oldList.Where(f => f.personName.Trim() == patientName.Trim() && f.year == 2024).Select(s => s.cardId).Distinct().ToList();
  1485. // _logger.LogInformation($"未找到数据:条码号=>{patientRegisterNo},姓名=>{patientName},体检系统身份证=>{idNo},青藏公司导入身份证=>{string.Join(",", idNos)}");
  1486. // continue;
  1487. //}
  1488. //if (isDT.Count > 1)
  1489. //{
  1490. // _logger.LogInformation($"存在多条数据:条码号=>{patientRegisterNo},姓名=>{patientName},身份证=>{idNo}");
  1491. // continue;
  1492. //}
  1493. if (isDT.Count == 1)
  1494. {
  1495. await peisTemp.Ado.ExecuteCommandAsync("update patient_register_exter set planuserid=@planuserid where patient_register_id=@patient_register_id ;",
  1496. new List<SugarParameter>() {
  1497. new SugarParameter("planuserid",isDT.First().ToString()),
  1498. new SugarParameter("patient_register_id",patientRegisterId)
  1499. });
  1500. _logger.LogInformation($"青藏公司数据处理:条码号=>{patientRegisterNo},姓名=>{patientName},身份证=>{idNo},更新青藏铁路用户id=>{isDT.First()}");
  1501. }
  1502. // _logger.LogInformation($"青藏公司数据处理:条码号=>{patientRegisterNo},姓名=>{patientName},身份证=>{idNo},更新青藏铁路用户id=>{isDT.First()}");
  1503. }
  1504. }
  1505. }
  1506. }
  1507. #endregion
  1508. }
  1509. }