| 
						 | 
						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<PersonnelTypeDto> _personnelTypes;        private List<CustomerOrgGroupDto> _customerOrgGroupDtos;               private string _answerWebApiUrl;
        public ImportPatientRegisterPlugInsQztl(Guid thirdInterfaceId) : base(thirdInterfaceId)        {
        }        public ImportPatientRegisterPlugInsQztl(string parmValue) : base(parmValue)        {
        }
        public override async Task<List<string>> ImportPatientRegisterByCustomerOrgRegisterIdAsync(Guid customerOrgRegisterId)        {            CustomerOrgRegisterId = customerOrgRegisterId;            if(CustomerOrgRegisterId == Guid.Empty)            {                throw new Exception("customerOrgRegisterId参数不能为空");            }            await LoginAsync();            await InitAsync();            var errorList = new List<string>();            var qztlPatientRegisterFromInterface = await CallInterfaceServiceAsync();            if (qztlPatientRegisterFromInterface == null)            {                return errorList;            }            //删除人员
            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)                        {                            //已检人员不允许删除
                            errorList.Add($"姓名:{patientRegister.PatientName},身份证号:{patientRegister.IdNo},已检不能删除");                            continue;                        }                        var patientRegisterInputDto = new PatientRegisterIdInputDto()                        {                            PatientRegisterId = patientRegister.PatientRegisterId                        };                        await CallAppServiceAsync<PatientRegisterIdInputDto, object>(                                    "api/app/PatientRegister/DeleteById", patientRegisterInputDto);                        //发送答复通知
                        var succesIds = new List<string>();                        var deleteIds = new List<string>();                        deleteIds.Add(deleteUserId);                        await AnswerOk(succesIds, deleteIds);                    }                    catch (Exception ex)                    {                        errorList.Add(error + ex.Message);                        continue;                    }
                }            }
            if (qztlPatientRegisterFromInterface.plans == null)            {                return errorList;            }            //设置导入人员信息
            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<DisplayNameInputDto, MedicalTypeDto>(                       "api/app/MedicalType/GetByDisplayName", new DisplayNameInputDto() { DisplayName = medicalTypeName });                        if (medicalTypeDto == null)                        {                            var createMedicalTypeDto = new CreateMedicalTypeDto()                            {                                DisplayName = medicalTypeName,                            };                            medicalTypeDto = await CallAppServiceAsync<CreateMedicalTypeDto, MedicalTypeDto>(                            "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<CustomerOrgIdInputDto, List<CustomerOrgDto>>(                       "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<CreateCustomerOrgDto, CustomerOrgDto>(                      "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<CustomerOrgRegisterIdInputDto, List<CustomerOrgGroupDto>>(                            "api/app/CustomerOrgGroup/GetListByCustomerOrgRegisterId"                            , new CustomerOrgRegisterIdInputDto() { CustomerOrgRegisterId = CustomerOrgRegisterId});                        customerOrgGroupDto = _customerOrgGroupDtos.Where(o => o.DisplayName == "复检").FirstOrDefault();                        if (customerOrgGroupDto == null)                        {                            throw new Exception("没有复检这个分组");                        }                    }                    else                    {                        List<string> groupNames = new List<string>();                        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<string>();                    var deleteIds = new List<string>();                    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);                            IsNoPlanUserIdComplete = true;                        }                        //已经登记了该PlanUserId的不再登记
                        if (!string.IsNullOrWhiteSpace(patintRegister.Planuserid) && patintRegister.Planuserid == patient.id.ToString())                        {                            await AnswerOk(succesIds, deleteIds);                            IsNoPlanUserIdComplete = true;                        }                    }                    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<IdNoInputDto, PatientDto>(                                   "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<CreatePatientRegisterRegisterCheckAsbitem>();                    //获取分组信息
                    var customerOrgGroupDetailOrAsbitemDtos = await CallAppServiceAsync<Guid, List<CustomerOrgGroupDetailOrAsbitemDto>>(                            "api/app/customerorggroupdetail/getcustomerorggroupdetailinasbitem?CustomerOrgGroupId=" + customerOrgGroupDto.Id.ToString()                            , Guid.Empty, "get");                    if (!customerOrgGroupDetailOrAsbitemDtos.Any())                    {                        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<CreatePatientRegisterDto, object>(                      "api/PatientRegister/CreatePatientRegister",                      patientRegister);
                    //var succesIds = new List<string>();
                    //var deleteIds = new List<string>();
                    //succesIds.Add(patientRegister.Planuserid);
                    await AnswerOk(succesIds, deleteIds);                }
                catch (Exception ex)                {                    errorList.Add(error + ",错误信息:"+ex.Message);                    continue;                    //throw new Exception(error + ex.Message);
                    //if (ex.Message.Contains("人员信息姓名和性别和原来的信息都不一致") ||
                    //    ex.Message.Contains("身份证号解析出的性别与填入的性别不一致"))
                    //{
                    //    continue;
                    //}
                    //else
                    //{
                    //    throw ex;
                    //}
                }            }
            return errorList;
        }
        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<CustomerOrgForPlugIns>(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<CustomerOrgIdInputDto, CustomerOrgDto>(                "api/app/CustomerOrg/GetById", new CustomerOrgIdInputDto()                {                    CustomerOrgId = customerOrgId,                });            //加载单位登记信息
            _customerOrgRegisterDto = await CallAppServiceAsync<CustomerOrgRegisterIdInputDto, CustomerOrgRegisterDto>(                "api/app/CustomerOrgRegister/GetById", new CustomerOrgRegisterIdInputDto()                {                    CustomerOrgRegisterId = CustomerOrgRegisterId,                });            //加载人员类别列表
            _personnelTypes = await CallAppServiceAsync<string, List<PersonnelTypeDto>>("api/app/PersonnelType/GetAll", "");        }
        public async Task<List<PatientRegisterQztl>> 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<PatientRegisterQztl>(sql,                    new { CustomerOrgRegisterId = customerOrgRegisterId, IdNo = idNo })).ToList();                return patientRegisters;            }        }        public async Task<PatientRegisterQztl> 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<PatientRegisterQztl>(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<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("\\", "");                        if (result.IndexOf("status") < 0)                        {                            throw new Exception($"调用WebApi中无status,返回值:" + result);                        }                        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 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<CustomerOrgGroupDto> GetCustomerOrgGroup(List<string> 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<CustomerOrgRegisterIdInputDto, List<CustomerOrgGroupDto>>(               "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<CustomerOrgRegisterIdInputDto, List<CustomerOrgGroupDto>>(                         "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<Guid, List<CustomerOrgGroupDetailOrAsbitemDto>>(                           "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<CreateCustomerOrgGroupWithDetailDto, CustomerOrgGroupDto>(               "api/app/CustomerOrgGroup/CreateCustomerOrgGroupWithDetail", createCustomerOrgGroupWithDetailDto);            return customerOrgGroup;        }
        public async Task AnswerOk(List<string> successIds, List<string> 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;                    }
                }            }        }    }}
  |