8 changed files with 427 additions and 4 deletions
-
6ThirdPlugIns/Shentun.Peis.PlugIns.Gem/ImportPacsResultPlugInsGem.cs
-
169ThirdPlugIns/Shentun.Peis.PlugIns.Gem/ImportPatientRegisterPlugInsGem.cs
-
17ThirdPlugIns/Shentun.Peis.PlugIns.Gem/QztlImportDataEntity.cs
-
140ThirdPlugIns/Shentun.Peis.PlugIns.Gem/QztlPatientRegisterFromInterface.cs
-
49ThirdPlugIns/Shentun.Peis.PlugIns.Gem/test/Shentun.Peis.PlugIns.Gem.Test/ImportPatientRegisterPlugInsGemTest.cs
-
12ThirdPlugIns/Shentun.Peis.PlugIns.Gem/test/Shentun.Peis.PlugIns.Gem.Test/appsettings.json
-
18src/Shentun.ColumnReferencePlugIns/CustomerOrgForPlugIns.cs
-
20src/Shentun.ColumnReferencePlugIns/ImportPatientRegisterPlugInsBase.cs
@ -0,0 +1,169 @@ |
|||
using Dapper; |
|||
using Newtonsoft.Json.Converters; |
|||
using Newtonsoft.Json; |
|||
using Npgsql; |
|||
using NPOI.SS.Formula.Functions; |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Data.Common; |
|||
using System.Linq; |
|||
using System.Net.Http.Headers; |
|||
using System.Text; |
|||
using System.Threading.Tasks; |
|||
using System.Text.RegularExpressions; |
|||
|
|||
namespace Shentun.Peis.PlugIns.Gem |
|||
{ |
|||
public class ImportPatientRegisterPlugInsGem : ImportPatientRegisterPlugInsBase |
|||
{ |
|||
private Guid _importCustomerOrgId; |
|||
private string _hospitalId; |
|||
private string _aesKEY; |
|||
private string _year; |
|||
public ImportPatientRegisterPlugInsGem(string parmValue) : base(parmValue) |
|||
{ |
|||
|
|||
} |
|||
|
|||
public override async Task ImportAsync() |
|||
{ |
|||
await InitAsync(); |
|||
|
|||
var qztlPatientRegisterFromInterface = await CallInterfaceServiceAsync(); |
|||
if (qztlPatientRegisterFromInterface == null || !qztlPatientRegisterFromInterface.plans.Any()) |
|||
{ |
|||
return; |
|||
} |
|||
|
|||
foreach(var patient in qztlPatientRegisterFromInterface.plans) |
|||
{ |
|||
|
|||
} |
|||
|
|||
|
|||
} |
|||
|
|||
public async Task InitAsync() |
|||
{ |
|||
var customerOrgIdStr = InterfaceConfig.GetSection("Interface").GetSection("单位编号").Value; |
|||
_hospitalId = InterfaceConfig.GetSection("Interface").GetSection("HospitalId").Value; |
|||
_aesKEY = InterfaceConfig.GetSection("Interface").GetSection("aesKEY").Value; |
|||
if (string.IsNullOrWhiteSpace(customerOrgIdStr)) |
|||
{ |
|||
return; |
|||
} |
|||
if (!Guid.TryParse(customerOrgIdStr, out _importCustomerOrgId)) |
|||
{ |
|||
throw new Exception("单位编号不正确"); |
|||
} |
|||
if (string.IsNullOrWhiteSpace(_hospitalId)) |
|||
{ |
|||
throw new Exception("HospitalId参数不能为空"); |
|||
} |
|||
if (string.IsNullOrWhiteSpace(_aesKEY)) |
|||
{ |
|||
throw new Exception("_aesKEY参数不能为空"); |
|||
} |
|||
using (DbConnection conn = new NpgsqlConnection(AppConnctionStr)) |
|||
{ |
|||
string sql; |
|||
sql = @"
|
|||
SELECT id as customer_org_id, |
|||
display_name as customer_org_name, |
|||
parent_id , |
|||
path_code |
|||
from |
|||
customer_org |
|||
where id = @CustomerOrgId |
|||
";
|
|||
var customerOrgForPlugInss = (await conn.QueryAsync<CustomerOrgForPlugIns>(sql, |
|||
new { CustomerOrgId = _importCustomerOrgId })).FirstOrDefault(); |
|||
|
|||
if (customerOrgForPlugInss == null) |
|||
{ |
|||
throw new Exception("单位编号不正确,找不到单位"); |
|||
} |
|||
|
|||
var year = customerOrgForPlugInss.CustomerOrgName.Substring( |
|||
customerOrgForPlugInss.CustomerOrgName.Length - 5 |
|||
, 4); |
|||
if (!int.TryParse(year, out var yearNumber)) |
|||
{ |
|||
throw new Exception("单位名称必须是以2000年这样的格式结尾"); |
|||
} |
|||
if (yearNumber < 2024 || yearNumber > 2050) |
|||
{ |
|||
throw new Exception("单位名称年限范围必须在2024-2050之间"); |
|||
} |
|||
|
|||
_year = year; |
|||
} |
|||
} |
|||
|
|||
|
|||
public async Task<QztlPatientRegisterFromInterface?> CallInterfaceServiceAsync() |
|||
{ |
|||
string baseAddress = InterfaceWebApiUrl; |
|||
string ary = "HospitalId=" + _hospitalId + (Char)38 + "year=" + _year + (Char)38 + "AesKey=" + _aesKEY; |
|||
baseAddress = baseAddress + ary; |
|||
using (var httpClientHandler = new HttpClientHandler()) |
|||
{ |
|||
using (var httpClient = new HttpClient(httpClientHandler)) |
|||
{ |
|||
httpClient.BaseAddress = new Uri(baseAddress); |
|||
|
|||
httpClient.DefaultRequestHeaders.Accept.Add( |
|||
new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded"));//设置accept标头,告诉JSON是可接受的响应类型
|
|||
//httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _accesToken);
|
|||
IsoDateTimeConverter timeFormat = new IsoDateTimeConverter(); |
|||
timeFormat.DateTimeFormat = "yyyy-MM-dd HH:mm:ss"; |
|||
//var sendData = JsonConvert.SerializeObject(data, Newtonsoft.Json.Formatting.Indented, timeFormat);
|
|||
using (HttpContent httpContent = new StringContent("")) |
|||
{ |
|||
httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded"); |
|||
HttpResponseMessage response = await httpClient.GetAsync(""); |
|||
string result; |
|||
if (!response.IsSuccessStatusCode) |
|||
{ |
|||
result = response.Content.ReadAsStringAsync().Result; |
|||
throw new Exception("http通信错误:" + response.StatusCode + ",结果:" + result); |
|||
} |
|||
result = await response.Content.ReadAsStringAsync(); |
|||
|
|||
result = result.Replace(":\"[{", ":[{").Replace("}]\"", "}]").Replace("\\", ""); |
|||
|
|||
QztlPatientRegisterFromInterface? resultDto = JsonConvert.DeserializeObject<QztlPatientRegisterFromInterface>(result); |
|||
if (resultDto != null) |
|||
{ |
|||
if (resultDto.status != 0) |
|||
{ |
|||
throw new Exception($"调用WebApi失败,返回错误,消息:" + resultDto.status + resultDto.errorMsg); |
|||
} |
|||
//插入数据库中备份
|
|||
using (DbConnection conn = new NpgsqlConnection(AppConnctionStr)) |
|||
{ |
|||
string sql; |
|||
var qztlImportDataEntity = new QztlImportDataEntity() |
|||
{ |
|||
Id = Guid.NewGuid(), |
|||
Data = result, |
|||
DataType = '0', |
|||
IsComplete = 'Y', |
|||
CreationTime = DateTime.Now, |
|||
}; |
|||
|
|||
sql = @"insert into qztl_import_data(id, data, data_type, is_complete,creation_time)
|
|||
values(@Id, @Data, @DataType, @IsComplete,@CreationTime)";
|
|||
conn.Execute(sql, qztlImportDataEntity); |
|||
|
|||
} |
|||
return (QztlPatientRegisterFromInterface)resultDto; |
|||
} |
|||
return null; |
|||
} |
|||
|
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,17 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using System.Text; |
|||
using System.Threading.Tasks; |
|||
|
|||
namespace Shentun.Peis.PlugIns.Gem |
|||
{ |
|||
public class QztlImportDataEntity |
|||
{ |
|||
public Guid Id { get; set; } |
|||
public string Data { get; set; } |
|||
public char DataType { get; set; } |
|||
public char IsComplete { get; set; } |
|||
public DateTime CreationTime { get; set; } |
|||
} |
|||
} |
|||
@ -0,0 +1,140 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using System.Text; |
|||
using System.Threading.Tasks; |
|||
|
|||
namespace Shentun.Peis.PlugIns.Gem |
|||
{ |
|||
public class QztlPatientRegisterFromInterface |
|||
{ |
|||
public int status { get; set; } |
|||
public string errorMsg { get; set; } |
|||
public int size { get; set; } |
|||
public List<string> delIds { get; set; } = new List<string>(); |
|||
public List<QztlPatientRegisterFromInterfacePlan> plans { get; set; } = new List<QztlPatientRegisterFromInterfacePlan>(); |
|||
} |
|||
public class QztlPatientRegisterFromInterfacePlan |
|||
{ |
|||
/// <summary>
|
|||
///
|
|||
/// </summary>
|
|||
public string gradeJsV { get; set; } |
|||
/// <summary>
|
|||
/// 体检年份 int
|
|||
/// </summary>
|
|||
public int year { get; set; } |
|||
/// <summary>
|
|||
/// 2024年全员体检
|
|||
/// </summary>
|
|||
public string planName { get; set; } |
|||
/// <summary>
|
|||
/// 体检批次
|
|||
/// </summary>
|
|||
public string tjpcV { get; set; } |
|||
/// <summary>
|
|||
/// 体检阶段 int
|
|||
/// </summary>
|
|||
public int tjJieduan { get; set; } |
|||
/// <summary>
|
|||
/// 年龄 int
|
|||
/// </summary>
|
|||
public int age { get; set; } |
|||
/// <summary>
|
|||
/// 身份证号
|
|||
/// </summary>
|
|||
public string cardId { get; set; } |
|||
/// <summary>
|
|||
/// 本次体检唯一ID号,long
|
|||
/// </summary>
|
|||
public long id { get; set; } |
|||
/// <summary>
|
|||
/// 职称
|
|||
/// </summary>
|
|||
public string gradeZwV { get; set; } |
|||
/// <summary>
|
|||
/// 高原体检,int
|
|||
/// </summary>
|
|||
public int ifGy { get; set; } |
|||
/// <summary>
|
|||
/// 健康体检
|
|||
/// </summary>
|
|||
public int ifJk { get; set; } |
|||
/// <summary>
|
|||
/// 普速体检
|
|||
/// </summary>
|
|||
public int ifCw { get; set; } |
|||
/// <summary>
|
|||
/// 从业
|
|||
/// </summary>
|
|||
public int ifCy { get; set; } |
|||
/// <summary>
|
|||
/// 复检
|
|||
/// </summary>
|
|||
public int ifFj { get; set; } |
|||
/// <summary>
|
|||
/// 高铁
|
|||
/// </summary>
|
|||
public int ifGt { get; set; } |
|||
/// <summary>
|
|||
/// 行车体检
|
|||
/// </summary>
|
|||
public int ifMain { get; set; } |
|||
/// <summary>
|
|||
/// 危害体检
|
|||
/// </summary>
|
|||
public int ifWh { get; set; } |
|||
/// <summary>
|
|||
/// 手机号
|
|||
/// </summary>
|
|||
public string mobile { get; set; } |
|||
/// <summary>
|
|||
/// 单位 int
|
|||
/// </summary>
|
|||
public long orgId { get; set; } |
|||
/// <summary>
|
|||
/// 单位名
|
|||
/// </summary>
|
|||
public string orgName { get; set; } |
|||
/// <summary>
|
|||
/// 姓名
|
|||
/// </summary>
|
|||
public string personName { get; set; } |
|||
/// <summary>
|
|||
/// 性别,int
|
|||
/// </summary>
|
|||
public int sex { get; set; } |
|||
/// <summary>
|
|||
///
|
|||
/// </summary>
|
|||
public int wedding { get; set; } |
|||
/// <summary>
|
|||
/// 干部
|
|||
/// </summary>
|
|||
public string workTypeV { get; set; } |
|||
/// <summary>
|
|||
/// 备注
|
|||
/// </summary>
|
|||
public string remark { get; set; } |
|||
/// <summary>
|
|||
/// 职务
|
|||
/// </summary>
|
|||
public string tjTab1 { get; set; } |
|||
/// <summary>
|
|||
/// 体检备注
|
|||
/// </summary>
|
|||
public string tjOpinion { get; set; } |
|||
/// <summary>
|
|||
/// 复检备注
|
|||
/// </summary>
|
|||
public string fjOpinion { get; set; } |
|||
/// <summary>
|
|||
/// int
|
|||
/// </summary>
|
|||
public int altitude { get; set; } |
|||
/// <summary>
|
|||
/// DateTime
|
|||
/// </summary>
|
|||
public DateTime beginTime { get; set; } |
|||
} |
|||
} |
|||
49
ThirdPlugIns/Shentun.Peis.PlugIns.Gem/test/Shentun.Peis.PlugIns.Gem.Test/ImportPatientRegisterPlugInsGemTest.cs
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,18 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using System.Text; |
|||
using System.Threading.Tasks; |
|||
|
|||
namespace Shentun.Peis.PlugIns |
|||
{ |
|||
public class CustomerOrgForPlugIns |
|||
{ |
|||
public Guid CustomerOrgId { get; set; } |
|||
public string CustomerOrgName { get; set; } |
|||
|
|||
public Guid ParentId { get; set; } |
|||
|
|||
public string PathCode { get; set; } |
|||
} |
|||
} |
|||
@ -0,0 +1,20 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using System.Text; |
|||
using System.Threading.Tasks; |
|||
|
|||
namespace Shentun.Peis.PlugIns |
|||
{ |
|||
public class ImportPatientRegisterPlugInsBase : ThirdPlugInsBase |
|||
{ |
|||
public ImportPatientRegisterPlugInsBase(string parmValue) : base(parmValue) |
|||
{ |
|||
} |
|||
|
|||
public virtual async Task ImportAsync() |
|||
{ |
|||
return ; |
|||
} |
|||
} |
|||
} |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue