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; using Shentun.Peis.PatientRegisters; using Shentun.Peis.PersonnelTypes; using Shentun.Peis.MedicalTypes; using Shentun.Peis.CustomerOrgs; using Shentun.Peis.CustomerOrgGroups; using Shentun.Peis.CustomerReports; using Shentun.Peis.CustomerOrgGroupDetails; using Shentun.Peis.CustomerOrgRegisters; using Shentun.Peis.Enums; using Shentun.Peis.Patients; using Shentun.Peis.PlugIns.PatientRegisters; using Shentun.Peis.PlugIns.ImportPacsResults; namespace Shentun.Peis.PlugIns.Extensions.PatientRegisters.Qztl { public class ImportPatientRegisterPlugInsQztl : ImportPatientRegisterPlugInsBase { private string _hospitalId; private string _aesKEY; private string _year; private CustomerOrgDto _customerOrgDto; private CustomerOrgRegisterDto _customerOrgRegisterDto; private List _personnelTypes; private List _customerOrgGroupDtos; private string _answerWebApiUrl; public ImportPatientRegisterPlugInsQztl(Guid thirdInterfaceId) : base(thirdInterfaceId) { } public ImportPatientRegisterPlugInsQztl(string parmValue) : base(parmValue) { } public override async Task ImportPatientRegisterByCustomerOrgRegisterIdAsync(Guid customerOrgRegisterId) { CustomerOrgRegisterId = customerOrgRegisterId; if(CustomerOrgRegisterId == Guid.Empty) { throw new Exception("customerOrgRegisterId参数不能为空"); } await LoginAsync(); await InitAsync(); var errorList = new List(); var qztlPatientRegisterFromInterface = await CallInterfaceServiceAsync(); var returnDto = new ImportPatientRegisterByCustomerOrgRegisterIdDto(); if (qztlPatientRegisterFromInterface == null) { return returnDto; } //删除人员 if (qztlPatientRegisterFromInterface.delIds != null) { foreach (var deleteUserId in qztlPatientRegisterFromInterface.delIds) { var error = deleteUserId; try { var patientRegister = await GetPatientRegisterByPlanUserId(deleteUserId); if (patientRegister == null) { continue; } if (patientRegister.CompleteFlag != PatientRegisterCompleteFlag.PreRegistration && patientRegister.CompleteFlag != PatientRegisterCompleteFlag.Registration) { //已检人员不允许删除 returnDto.DeleteErrorNum++; returnDto.DeleteErrorMessages.Add($"姓名:{patientRegister.PatientName},身份证号:{patientRegister.IdNo},已检不能删除"); continue; } var patientRegisterInputDto = new PatientRegisterIdInputDto() { PatientRegisterId = patientRegister.PatientRegisterId }; await CallAppServiceAsync( "api/app/PatientRegister/DeleteById", patientRegisterInputDto); //发送答复通知 var succesIds = new List(); var deleteIds = new List(); deleteIds.Add(deleteUserId); await AnswerOk(succesIds, deleteIds); returnDto.DeleteSuccessNum++; } catch (Exception ex) { returnDto.DeleteErrorNum++; returnDto.DeleteErrorMessages.Add(error + ex.Message); continue; } } } if (qztlPatientRegisterFromInterface.plans == null) { return returnDto; } //设置导入人员信息 foreach (var patient in qztlPatientRegisterFromInterface.plans) { var error = $"姓名:{patient.personName},身份证:{patient.cardId}"; try { //婚姻状况 var maritalStatusId = ConvertMaritalStatus(patient.wedding); //人员类别 var personnelType = ConvertPersonnelType(patient.tjJieduan); //性别 var sexId = ConvertSex(patient.sex); //体检类别 var medicalTypeName = patient.tjpcV; MedicalTypeDto medicalTypeDto = null; if (!string.IsNullOrWhiteSpace(medicalTypeName)) { medicalTypeDto = await CallAppServiceAsync( "api/app/MedicalType/GetByDisplayName", new DisplayNameInputDto() { DisplayName = medicalTypeName }); if (medicalTypeDto == null) { var createMedicalTypeDto = new CreateMedicalTypeDto() { DisplayName = medicalTypeName, }; medicalTypeDto = await CallAppServiceAsync( "api/app/medical-type", new CreateMedicalTypeDto() { DisplayName = medicalTypeName }); } } //职称 var jobTitle = ConvertJobTitle(patient.gradeZwV); //职务 var jobPost = ConvertJobPost(patient.tjTab1); string workTypeV = patient.workTypeV; if (string.IsNullOrWhiteSpace(workTypeV)) { workTypeV = ""; } else { workTypeV = "," + workTypeV; } jobPost = jobPost + workTypeV; if (!string.IsNullOrWhiteSpace(jobPost) && jobPost.Length >= 10) { jobPost = jobPost.Substring(0, 10);//只能存储10个汉字 } //查找子单位是否存在,如存在获取子单位id,如果不存在这创建子单位 var orgName = patient.orgName; var pos = orgName.IndexOf("_"); orgName = orgName.Substring(0, pos); if (string.IsNullOrWhiteSpace(patient.mobile)) { //青海省第五人民医院要强行设置为 11111111111 } var customerOrgDtos = await CallAppServiceAsync>( "api/app/CustomerOrg/GetChildCustomerOrgsById", new CustomerOrgIdInputDto() { CustomerOrgId = _customerOrgDto.Id }); CustomerOrgDto customerOrgDto = null; if (customerOrgDtos != null && customerOrgDtos.Any()) { customerOrgDto = customerOrgDtos.Where(o => o.DisplayName == orgName).FirstOrDefault(); } if (customerOrgDto == null) { customerOrgDto = await CallAppServiceAsync( "api/app/customerorg/create", new CreateCustomerOrgDto() { MedicalCenterId = _customerOrgDto.MedicalCenterId, ParentId = _customerOrgDto.Id, DisplayName = orgName, ShortName = orgName, IsActive = 'Y', IsLock = 'Y' }); } CustomerOrgGroupDto customerOrgGroupDto; if (patient.ifFj == 1) { //复检 //加载单位分组信息 _customerOrgGroupDtos = await CallAppServiceAsync>( "api/app/CustomerOrgGroup/GetListByCustomerOrgRegisterId" , new CustomerOrgRegisterIdInputDto() { CustomerOrgRegisterId = CustomerOrgRegisterId}); customerOrgGroupDto = _customerOrgGroupDtos.Where(o => o.DisplayName == "复检").FirstOrDefault(); if (customerOrgGroupDto == null) { throw new Exception("没有复检这个分组"); } } else { List groupNames = new List(); if (patient.ifGy == 1) { groupNames.Add("高原"); } else if (patient.ifJk == 1) { groupNames.Add("健康"); } else { throw new Exception("分组名称必须是高原或健康体检二选一"); } if (patient.ifGt == 1) { groupNames.Add("高铁"); } if (patient.ifWh == 1) { groupNames.Add("职害"); } if (patient.ifCw == 1) { groupNames.Add("普速"); } if (patient.ifMain == 1) { groupNames.Add("行车"); } if (patient.ifCy == 1) { groupNames.Add("从业"); } customerOrgGroupDto = await GetCustomerOrgGroup(groupNames, sexId, maritalStatusId); } //没有planuserid的自动设置planuserid var patientRegisters = await GetPatientRegisterByCustomerOrgRegisterIdWithIdNo(_customerOrgRegisterDto.Id, patient.cardId); var succesIds = new List(); var deleteIds = new List(); succesIds.Add(patient.id.ToString()); bool IsNoPlanUserIdComplete = false; foreach (var patintRegister in patientRegisters) { //没有planUserId的更新planUserId if (string.IsNullOrWhiteSpace(patintRegister.Planuserid) && patintRegister.PatientName == patient.personName) { await UpdatePatientRegisterPlanUserId(patintRegister.PatientRegisterId, patient.id.ToString()); await AnswerOk(succesIds, deleteIds); returnDto.ImportSuccessNum++; IsNoPlanUserIdComplete = true; continue; } //已经登记了该PlanUserId的不再登记 if (!string.IsNullOrWhiteSpace(patintRegister.Planuserid) && patintRegister.Planuserid == patient.id.ToString()) { await AnswerOk(succesIds, deleteIds); IsNoPlanUserIdComplete = true; returnDto.ImportSuccessNum++; } } if (IsNoPlanUserIdComplete) { continue; } //获取病人ID var patientRegister = new CreatePatientRegisterDto() { MedicalCenterId = _customerOrgDto.MedicalCenterId, //PatientRegisterId = null, //PatientId = null, IsMaxMedicalTimes = 'Y', CompleteFlag = '0', CustomerOrgId = customerOrgDto.Id, CustomerOrgRegisterId = _customerOrgRegisterDto.Id, CustomerOrgGroupId = customerOrgGroupDto.Id, PatientName = patient.personName, SexId = sexId, Age = patient.age, MaritalStatusId = maritalStatusId, MobileTelephone = patient.mobile, Planuserid = patient.id.ToString(), IdNo = patient.cardId, //PersonnelTypeId = personnelType.Id, JobTitle = jobTitle, Remark = patient.remark, JobPost = jobPost, Remark2 = patient.tjOpinion, Remark3 = patient.fjOpinion, QztlIsFj = patient.ifFj == 1 ? 'Y' : 'N', QztlIsGt = patient.ifGt == 1 ? 'Y' : 'N', QztlIsWh = patient.ifWh == 1 ? 'Y' : 'N', QztlIsCw = patient.ifCw == 1 ? 'Y' : 'N', QztlIsMain = patient.ifMain == 1 ? 'Y' : 'N', QztlIsCy = patient.ifCy == 1 ? 'Y' : 'N', IsQztlImport = 'Y' }; if (!string.IsNullOrWhiteSpace(patient.cardId)) { var patientInfo = await CallAppServiceAsync( "api/app/patient/GetByIdNo", new IdNoInputDto() { IdNo = patient.cardId }); if (patientInfo != null) { patientRegister.PatientId = patientInfo.Id; } } if (medicalTypeDto != null) { patientRegister.MedicalTypeId = medicalTypeDto.Id; } if (personnelType != null) { patientRegister.PersonnelTypeId = personnelType.Id; } if (patient.ifGy == 1) { patientRegister.QztlType = '0'; } else if (patient.ifJk == 1) { } { patientRegister.QztlType = '1'; } patientRegister.RegisterCheckAsbitems = new List(); //获取分组信息 var customerOrgGroupDetailOrAsbitemDtos = await CallAppServiceAsync>( "api/app/customerorggroupdetail/getcustomerorggroupdetailinasbitem?CustomerOrgGroupId=" + customerOrgGroupDto.Id.ToString() , Guid.Empty, "get"); if (!customerOrgGroupDetailOrAsbitemDtos.Any() && customerOrgGroupDto.DisplayName!= "复检") { throw new Exception($"分组{customerOrgGroupDto.DisplayName}未包含项目"); } foreach (var asbitem in customerOrgGroupDetailOrAsbitemDtos) { patientRegister.RegisterCheckAsbitems.Add(new CreatePatientRegisterRegisterCheckAsbitem() { AsbitemId = asbitem.AsbitemId, StandardPrice = asbitem.Price, ChargePrice = asbitem.CustomerOrgGroupDetailPrice, PayTypeFlag = '1', IsCharge = 'N', Amount = asbitem.CustomerOrgGroupDetailAmount }); } await CallAppServiceAsync( "api/PatientRegister/CreatePatientRegister", patientRegister); await AnswerOk(succesIds, deleteIds); returnDto.ImportSuccessNum++; } catch (Exception ex) { returnDto.ImportErrorNum++; returnDto.ImportErrorMessages.Add(error + ",错误信息:" + ex.Message); continue; //throw new Exception(error + ex.Message); //if (ex.Message.Contains("人员信息姓名和性别和原来的信息都不一致") || // ex.Message.Contains("身份证号解析出的性别与填入的性别不一致")) //{ // continue; //} //else //{ // throw ex; //} } } return returnDto; } public async Task InitAsync() { if (CustomerOrgRegisterId == Guid.Empty) { throw new Exception("customerOrgRegisterId参数不能为空"); } var customerOrgIdStr = InterfaceConfig.GetSection("Interface").GetSection("CustomerOrgId").Value; _hospitalId = InterfaceConfig.GetSection("Interface").GetSection("HospitalId").Value; _aesKEY = InterfaceConfig.GetSection("Interface").GetSection("aesKEY").Value; _answerWebApiUrl = InterfaceConfig.GetSection("Interface").GetSection("AnswerWebApiUrl").Value; if (string.IsNullOrWhiteSpace(customerOrgIdStr)) { return; } if (string.IsNullOrWhiteSpace(_hospitalId)) { throw new Exception("HospitalId参数不能为空"); } if (string.IsNullOrWhiteSpace(_aesKEY)) { throw new Exception("_aesKEY参数不能为空"); } Guid customerOrgId; using (DbConnection conn = new NpgsqlConnection(AppConnctionStr)) { string sql; sql = @" SELECT customer_org.id as customer_org_id, customer_org.display_name as customer_org_name, customer_org.parent_id as parent_id, customer_org.path_code as path_code from customer_org ,customer_org_register where customer_org.id = customer_org_register.customer_org_id and customer_org_register.id = @CustomerOrgRegisterId "; var customerOrgForPlugInss = (await conn.QueryAsync(sql, new { CustomerOrgRegisterId = CustomerOrgRegisterId })).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; customerOrgId = customerOrgForPlugInss.CustomerOrgId; } //加载单位信息 _customerOrgDto = await CallAppServiceAsync( "api/app/CustomerOrg/GetById", new CustomerOrgIdInputDto() { CustomerOrgId = customerOrgId, }); //加载单位登记信息 _customerOrgRegisterDto = await CallAppServiceAsync( "api/app/CustomerOrgRegister/GetById", new CustomerOrgRegisterIdInputDto() { CustomerOrgRegisterId = CustomerOrgRegisterId, }); //加载人员类别列表 _personnelTypes = await CallAppServiceAsync>("api/app/PersonnelType/GetAll", ""); } public async Task> GetPatientRegisterByCustomerOrgRegisterIdWithIdNo(Guid customerOrgRegisterId, string idNo) { using (DbConnection conn = new NpgsqlConnection(AppConnctionStr)) { string sql; sql = @" SELECT * from patient_register,patient_register_exter,patient where patient_register.id = patient_register_exter.patient_register_id and patient_register.patient_id = patient.id and customer_org_register_id =@CustomerOrgRegisterId and patient.id_no =@IdNo "; var patientRegisters = (await conn.QueryAsync(sql, new { CustomerOrgRegisterId = customerOrgRegisterId, IdNo = idNo })).ToList(); return patientRegisters; } } public async Task GetPatientRegisterByPlanUserId(string planUserId) { if (string.IsNullOrWhiteSpace(planUserId)) { throw new Exception("planUserId不能为空"); } using (DbConnection conn = new NpgsqlConnection(AppConnctionStr)) { string sql; sql = @" SELECT * from patient_register,patient_register_exter where patient_register.id = patient_register_exter.patient_register_id and patient_register_exter.planuserid =@PlanUserId "; var patientRegisters = (await conn.QueryAsync(sql, new { PlanUserId = planUserId })).FirstOrDefault(); return patientRegisters; } } public async Task UpdatePatientRegisterPlanUserId(Guid patientRegisterId, string planUserid) { using (DbConnection conn = new NpgsqlConnection(AppConnctionStr)) { string sql; sql = @" update patient_register_exter set planuserid =@Planuserid where patient_register_id=@PatientRegisterId "; conn.Execute(sql, new { PatientRegisterId = patientRegisterId, Planuserid = planUserid }); return; } } public async Task 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("\\", ""); if (result.IndexOf("status") < 0) { throw new Exception($"调用WebApi中无status,返回值:" + result); } QztlPatientRegisterFromInterface? resultDto = JsonConvert.DeserializeObject(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 resultDto; } return null; } } } } public char ConvertMaritalStatus(int maritalStatus) { switch (maritalStatus) { case 1: return '0'; case 2: return '1'; case 3: return '4'; default: return '9'; } } public char ConvertSex(int sex) { switch (sex) { case 1: return 'M'; case 2: return 'F'; default: return 'U'; } } public string ConvertJobPost(string jobPost) { if (string.IsNullOrWhiteSpace(jobPost)) { return ""; } switch (jobPost) { case "0": return "普通成员"; case "1": return "班子成员"; default: return ""; } } public string ConvertJobTitle(string jobTitle) { if (string.IsNullOrWhiteSpace(jobTitle)) { return "无"; } switch (jobTitle) { case "0": return "无"; case "1": return "科员"; case "2": return "副科"; case "3": return "正科"; case "4": return "副处"; case "5": return "正处"; case "6": return "副局"; case "7": return "正局"; default: return "无"; } } public PersonnelTypeDto ConvertPersonnelType(int personnelType) { string personnelTypeName; switch (personnelType) { case 1: personnelTypeName = "岗前"; break; case 2: personnelTypeName = "岗中"; break; case 3: personnelTypeName = "岗后"; break; default: personnelTypeName = ""; break; } if (string.IsNullOrWhiteSpace(personnelTypeName)) { return null; } var personnelTypeDto = _personnelTypes.Where(o => o.DisplayName == personnelTypeName).FirstOrDefault(); return personnelTypeDto; } public async Task GetCustomerOrgGroup(List goupNames, char sexId, char maritalStatusId) { string sexName = ""; if (sexId == 'M') { sexName = "男"; } else if (sexId == 'F') { sexName = "女"; } string groupName = ""; for (var i = 0; i < goupNames.Count; i++) { if (i == 0) { groupName = goupNames[i]; } else { groupName += goupNames[i]; } } string maritalStatusName; if (maritalStatusId == '0') { maritalStatusName = "未婚"; } else { maritalStatusName = "已婚"; } if (sexName == "女") { groupName += maritalStatusName + sexName; } else { groupName += sexName; } _customerOrgGroupDtos = await CallAppServiceAsync>( "api/app/CustomerOrgGroup/GetListByCustomerOrgRegisterId" , new CustomerOrgRegisterIdInputDto() { CustomerOrgRegisterId = CustomerOrgRegisterId}); var customerOrgGroup = _customerOrgGroupDtos.Where(o => o.DisplayName == groupName).FirstOrDefault(); if (customerOrgGroup != null) { return customerOrgGroup; } //-------------自动创建分组 //检测有没有单个分组 string existGroupName = ""; var createCustomerOrgGroupWithDetailDto = new CreateCustomerOrgGroupWithDetailDto() { IsMaxMedicalTimes = 'Y', CustomerOrgId = _customerOrgDto.Id, DisplayName = groupName, ForSexId = sexId, AgeLowerLimit = 0, AgeUpperLimit = 200, MaritalStatusId = 'A' }; for (var i = 0; i < goupNames.Count; i++) { if (i == 0) { if (sexName == "女") { existGroupName = goupNames[i] + maritalStatusName + sexName; } else { existGroupName = goupNames[i] + maritalStatusName + sexName; } } else { existGroupName = goupNames[i]; } _customerOrgGroupDtos = await CallAppServiceAsync>( "api/app/CustomerOrgGroup/GetListByCustomerOrgRegisterId" , new CustomerOrgRegisterIdInputDto() { CustomerOrgRegisterId = CustomerOrgRegisterId}); customerOrgGroup = _customerOrgGroupDtos.Where(o => o.DisplayName == existGroupName).FirstOrDefault(); if (customerOrgGroup == null) { throw new Exception($"分组名{existGroupName}不存在"); } var customerOrgGroupDetailOrAsbitemDtos = await CallAppServiceAsync>( "api/app/customerorggroupdetail/getcustomerorggroupdetailinasbitem?CustomerOrgGroupId=" + customerOrgGroup.Id.ToString() , Guid.Empty, "get"); foreach (var customerOrgGroupDetailOrAsbitemDto in customerOrgGroupDetailOrAsbitemDtos) { if (!createCustomerOrgGroupWithDetailDto.Details. Where(o => o.AsbitemId == customerOrgGroupDetailOrAsbitemDto.AsbitemId).ToList().Any()) { createCustomerOrgGroupWithDetailDto.Details.Add(new CreateCustomerOrgGroupDetail_Detail() { AsbitemId = customerOrgGroupDetailOrAsbitemDto.AsbitemId, Amount = customerOrgGroupDetailOrAsbitemDto.CustomerOrgGroupDetailAmount, Price = customerOrgGroupDetailOrAsbitemDto.Price, }); } } } customerOrgGroup = await CallAppServiceAsync( "api/app/CustomerOrgGroup/CreateCustomerOrgGroupWithDetail", createCustomerOrgGroupWithDetailDto); return customerOrgGroup; } public async Task AnswerOk(List successIds, List deleteIds) { if (successIds == null || deleteIds == null) { return; } if (successIds.Count == 0 && deleteIds.Count == 0) { return; } string successIdStr = ""; for (var i = 0; i < successIds.Count; i++) { if (i == 0) { successIdStr = successIds[i]; } else { successIdStr += "," + successIds[i]; } } string deleteIdStr = ""; for (var i = 0; i < deleteIds.Count; i++) { if (i == 0) { deleteIdStr = deleteIds[i]; } else { deleteIdStr += "," + deleteIds[i]; } } string baseAddress = _answerWebApiUrl;// "http://62.156.10.237:8005/health/values/SetPlanOK?"; string ary = "HospitalId=" + _hospitalId + (char)38 + "ids=" + successIdStr + (char)38 + "delids=" + deleteIdStr + (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("\\", ""); if (result.IndexOf("更新ok") >= 0 || result.IndexOf("更新OK") >= 0 || result.IndexOf("更新Ok") >= 0) { return; } dynamic? resultDto = JsonConvert.DeserializeObject(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; } return; } } } } } }