From 1563931242ae11ff0b53802fed03a48958f12a64 Mon Sep 17 00:00:00 2001
From: wxd <123@qq.com>
Date: Thu, 24 Oct 2024 17:46:25 +0800
Subject: [PATCH] 1
---
 .../ThirdBookingPushAppService.cs             | 280 +++++++++++-------
 1 file changed, 179 insertions(+), 101 deletions(-)
diff --git a/src/Shentun.Peis.Application/ThirdBookingPushs/ThirdBookingPushAppService.cs b/src/Shentun.Peis.Application/ThirdBookingPushs/ThirdBookingPushAppService.cs
index c1260e2..d7708a3 100644
--- a/src/Shentun.Peis.Application/ThirdBookingPushs/ThirdBookingPushAppService.cs
+++ b/src/Shentun.Peis.Application/ThirdBookingPushs/ThirdBookingPushAppService.cs
@@ -13,6 +13,7 @@ using System;
 using System.IO;
 using System.Net.Http;
 using System.Net.Http.Headers;
+using System.Net.Mime;
 using System.Security.Policy;
 using System.Threading.Channels;
 using System.Threading.Tasks;
@@ -24,7 +25,7 @@ namespace Shentun.Peis.ThirdBookingPushs
     /// 
     /// 推送体检信息到人寿
     /// 
-    [Authorize]
+    //[Authorize]
     [ApiExplorerSettings(GroupName = "Work")]
     public class ThirdBookingPushAppService : ApplicationService
     {
@@ -235,125 +236,199 @@ namespace Shentun.Peis.ThirdBookingPushs
         [HttpPost("api/app/ThirdBookingPush/PushReportFile")]
         public async Task PushReportFileAsync(PushReportFileInputDto input)
         {
-            var thirdBookingInterface = await _thirdInterfaceRepository.FirstOrDefaultAsync(o => o.ThirdInterfaceType ==
-             ThirdInterfaceTypeFlag.ThirdBooking);
-            if (thirdBookingInterface != null && thirdBookingInterface.IsActive == 'Y')
+
+
+
+            var baseApiAddress = "https://uat-ewp.beijinglife.com.cn";
+            var fileUploadApiAddress = "service/file/fup";
+            //var reportApiAddress = interfaceConfig.GetSection("Interface").GetSection("ReportApiAddress").Value;
+            //var publicKey = interfaceConfig.GetSection("Interface").GetSection("YuanFuPublicKey").Value;
+            //var privateKey = interfaceConfig.GetSection("Interface").GetSection("MinZhongPrivateKey").Value;
+            var aesKey = "MZ20240417UP";
+            //var isActive = interfaceConfig.GetSection("Interface").GetSection("IsActive").Value;
+            //var medicalYear = interfaceConfig.GetSection("Interface").GetSection("MedicalYear").Value;
+            var iCode = "EXAMINATION_MZ";
+
+
+         
+
+
+
+
+            #region 上传文件
+            byte[] filebytes = Convert.FromBase64String(input.ReportBase64); //字节数组
+            byte[] fileDataEncrypt = AesHelper.AESEncrypt(filebytes, aesKey);
+            string fileSign = AesHelper.GetMD5Hash2(fileDataEncrypt);
+
+
+
+            var fileInputParm = new EncryDataRequstDto
             {
+                SIGN = fileSign,
+                ICODE = iCode
+            };
 
-                var parmValue = thirdBookingInterface.ParmValue;
-                var configurationBuilder = new ConfigurationBuilder()
-                     .AddJsonStream(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(parmValue)));
-                var interfaceConfig = configurationBuilder.Build();
-                var baseApiAddress = interfaceConfig.GetSection("Interface").GetSection("BaseApiAddress").Value;
-                var completeApiAddress = interfaceConfig.GetSection("Interface").GetSection("CompleteApiAddress").Value;
-                var publicKey = interfaceConfig.GetSection("Interface").GetSection("YuanFuPublicKey").Value;
-                var privateKey = interfaceConfig.GetSection("Interface").GetSection("MinZhongPrivateKey").Value;
-                var aesKey = interfaceConfig.GetSection("Interface").GetSection("AesKey").Value;
-                var isActive = interfaceConfig.GetSection("Interface").GetSection("IsActive").Value;
-                var medicalYear = interfaceConfig.GetSection("Interface").GetSection("MedicalYear").Value;
-                var iCode = interfaceConfig.GetSection("Interface").GetSection("ICODE").Value;
-                if (!string.IsNullOrWhiteSpace(isActive)
-                    && isActive == "Y")
+            var fileResultEncry = await CallBookingFileAppServiceAsync(baseApiAddress, fileUploadApiAddress, fileInputParm, fileDataEncrypt, "123.txt");
+
+            if (fileResultEncry.FLAG)
+            {
+                //验签
+                if (fileResultEncry.SIGN == AesHelper.GetMD5Hash(fileResultEncry.DATA))
                 {
+                    //解密
+                    string fileResultStr = AesHelper.AESDecrypt(fileResultEncry.DATA, aesKey);  //报文ID
 
-                    var patientRegisterEnt = await _patientRegisterRepository.GetAsync(input.PatientRegisterId);
 
-                    if (patientRegisterEnt != null
-                        && !string.IsNullOrWhiteSpace(patientRegisterEnt.ThirdBookingId)
-                         && patientRegisterEnt.CompleteFlag == PatientRegisterCompleteFlag.SumCheck)
-                    {
-                        var thirdBookingEnt = await _thirdBookingRepository.FirstOrDefaultAsync(f => f.Id == Guid.Parse(patientRegisterEnt.ThirdBookingId));
-                        if (thirdBookingEnt != null)
-                        {
-                            if (!string.IsNullOrWhiteSpace(thirdBookingEnt.ICode))
-                            {
-                                iCode = thirdBookingEnt.ICode;
-                            }
-                            if (thirdBookingEnt.MedicalStatus == '2')
-                            {
-                                var customerOrgGroupEnt = await _customerOrgGroupRepository.GetAsync(g => g.Id == Guid.Parse(thirdBookingEnt.CustomerOrgGroupId));
 
 
-                                #region 上传文件
-                                byte[] filebytes = Convert.FromBase64String(input.ReportBase64); //字节数组
-                                byte[] fileDataEncrypt = AesHelper.AESEncrypt(filebytes, aesKey);
-                                string fileSign = AesHelper.GetMD5Hash2(fileDataEncrypt);
+                }
 
-                                
 
-                                var fileInputParm = new EncryDataRequstDto
-                                {
-                                    SIGN = fileSign,
-                                    ICODE = thirdBookingEnt.ICode
-                                };
+            }
 
-                                var fileResultEncry = await CallBookingFileAppServiceAsync(baseApiAddress, completeApiAddress, fileInputParm, fileDataEncrypt, "006429_民众测试.pdf");
+            #endregion
 
-                                if (fileResultEncry.FLAG)
-                                {
-                                    //验签
-                                    if (fileResultEncry.SIGN == AesHelper.GetMD5Hash(fileResultEncry.DATA))
-                                    {
-                                        //解密
-                                        string fileResultStr = AesHelper.AESDecrypt(fileResultEncry.DATA, aesKey);  //报文ID
 
 
-                                        #region 上传报告
 
-                                        var pushMedicalReportInput = new PushMedicalReportInputDto
-                                        {
-                                            EXAMPACKAGECODE = thirdBookingEnt.CustomerOrgGroupId,
-                                            IDNO = thirdBookingEnt.IdNo,
-                                            IDTYPE = thirdBookingEnt.IdType,
-                                            NAME = patientRegisterEnt.PatientName,
-                                            SOURCE = "BjGJ",
-                                            YEAR = medicalYear,
-                                            BUSINESSID = patientRegisterEnt.Id.ToString(),
-                                            JSONBASE64 = "",
-                                            ORGCODE = "MINZ",
-                                            PDFBASE64 = "",
-                                            PDFFILEID = fileResultStr,
-                                            PUSHTIME = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
-                                        };
 
 
-                                        var pushMedicalReportInputEncrypt = GetEncryptData(JsonConvert.SerializeObject(pushMedicalReportInput), iCode, publicKey, privateKey);
 
-                                        var reportResultPara = await CallBookingAppServiceAsync(baseApiAddress, completeApiAddress, pushMedicalReportInputEncrypt, "application/json;charset=utf-8");
 
-                                        if (reportResultPara.FLAG)
-                                        {
-                                            var decryptDataPara = GetDecryptData(reportResultPara, publicKey, privateKey);
-                                            if (decryptDataPara.FLAG == true)
-                                            {
-                                                thirdBookingEnt.MedicalStatus = '3';
-                                                await _thirdBookingRepository.UpdateAsync(thirdBookingEnt);
-                                            }
-                                        }
 
-                                        #endregion
 
-                                    }
 
 
-                                }
+        }
 
-                                #endregion
 
+        ///// 
+        ///// 推送体检报告
+        ///// 
+        ///// 
+        //[HttpPost("api/app/ThirdBookingPush/PushReportFile")]
+        //public async Task PushReportFileAsync(PushReportFileInputDto input)
+        //{
+        //    var thirdBookingInterface = await _thirdInterfaceRepository.FirstOrDefaultAsync(o => o.ThirdInterfaceType ==
+        //     ThirdInterfaceTypeFlag.ThirdBooking);
+        //    if (thirdBookingInterface != null && thirdBookingInterface.IsActive == 'Y')
+        //    {
+
+        //        var parmValue = thirdBookingInterface.ParmValue;
+        //        var configurationBuilder = new ConfigurationBuilder()
+        //             .AddJsonStream(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(parmValue)));
+        //        var interfaceConfig = configurationBuilder.Build();
+        //        var baseApiAddress = interfaceConfig.GetSection("Interface").GetSection("BaseApiAddress").Value;
+        //        var fileUploadApiAddress = interfaceConfig.GetSection("Interface").GetSection("FileUploadApiAddress").Value;
+        //        var reportApiAddress = interfaceConfig.GetSection("Interface").GetSection("ReportApiAddress").Value;
+        //        var publicKey = interfaceConfig.GetSection("Interface").GetSection("YuanFuPublicKey").Value;
+        //        var privateKey = interfaceConfig.GetSection("Interface").GetSection("MinZhongPrivateKey").Value;
+        //        var aesKey = interfaceConfig.GetSection("Interface").GetSection("AesKey").Value;
+        //        var isActive = interfaceConfig.GetSection("Interface").GetSection("IsActive").Value;
+        //        var medicalYear = interfaceConfig.GetSection("Interface").GetSection("MedicalYear").Value;
+        //        var iCode = interfaceConfig.GetSection("Interface").GetSection("ICODE").Value;
+        //        if (!string.IsNullOrWhiteSpace(isActive)
+        //            && isActive == "Y")
+        //        {
 
+        //            var patientRegisterEnt = await _patientRegisterRepository.GetAsync(input.PatientRegisterId);
 
+        //            if (patientRegisterEnt != null
+        //                && !string.IsNullOrWhiteSpace(patientRegisterEnt.ThirdBookingId)
+        //                 && patientRegisterEnt.CompleteFlag == PatientRegisterCompleteFlag.SumCheck)
+        //            {
+        //                var thirdBookingEnt = await _thirdBookingRepository.FirstOrDefaultAsync(f => f.Id == Guid.Parse(patientRegisterEnt.ThirdBookingId));
+        //                if (thirdBookingEnt != null)
+        //                {
+        //                    if (!string.IsNullOrWhiteSpace(thirdBookingEnt.ICode))
+        //                    {
+        //                        iCode = thirdBookingEnt.ICode;
+        //                    }
+        //                    if (thirdBookingEnt.MedicalStatus == '2')
+        //                    {
+        //                        var customerOrgGroupEnt = await _customerOrgGroupRepository.GetAsync(g => g.Id == Guid.Parse(thirdBookingEnt.CustomerOrgGroupId));
 
 
+        //                        #region 上传文件
+        //                        byte[] filebytes = Convert.FromBase64String(input.ReportBase64); //字节数组
+        //                        byte[] fileDataEncrypt = AesHelper.AESEncrypt(filebytes, aesKey);
+        //                        string fileSign = AesHelper.GetMD5Hash2(fileDataEncrypt);
 
-                            }
-                        }
-                    }
 
-                }
-            }
 
+        //                        var fileInputParm = new EncryDataRequstDto
+        //                        {
+        //                            SIGN = fileSign,
+        //                            ICODE = thirdBookingEnt.ICode
+        //                        };
+
+        //                        var fileResultEncry = await CallBookingFileAppServiceAsync(baseApiAddress, fileUploadApiAddress, fileInputParm, fileDataEncrypt, "006429_民众测试.pdf");
+
+        //                        if (fileResultEncry.FLAG)
+        //                        {
+        //                            //验签
+        //                            if (fileResultEncry.SIGN == AesHelper.GetMD5Hash(fileResultEncry.DATA))
+        //                            {
+        //                                //解密
+        //                                string fileResultStr = AesHelper.AESDecrypt(fileResultEncry.DATA, aesKey);  //报文ID
+
+
+        //                                #region 上传报告
+
+        //                                var pushMedicalReportInput = new PushMedicalReportInputDto
+        //                                {
+        //                                    EXAMPACKAGECODE = thirdBookingEnt.CustomerOrgGroupId,
+        //                                    IDNO = thirdBookingEnt.IdNo,
+        //                                    IDTYPE = thirdBookingEnt.IdType,
+        //                                    NAME = patientRegisterEnt.PatientName,
+        //                                    SOURCE = "BjGJ",
+        //                                    YEAR = medicalYear,
+        //                                    BUSINESSID = patientRegisterEnt.Id.ToString(),
+        //                                    JSONBASE64 = "",
+        //                                    ORGCODE = "MINZ",
+        //                                    PDFBASE64 = "",
+        //                                    PDFFILEID = fileResultStr,
+        //                                    PUSHTIME = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
+        //                                };
 
-        }
+
+        //                                var pushMedicalReportInputEncrypt = GetEncryptData(JsonConvert.SerializeObject(pushMedicalReportInput), iCode, publicKey, privateKey);
+
+        //                                var reportResultPara = await CallBookingAppServiceAsync(baseApiAddress, reportApiAddress, pushMedicalReportInputEncrypt, "application/json;charset=utf-8");
+
+        //                                if (reportResultPara.FLAG)
+        //                                {
+        //                                    var decryptDataPara = GetDecryptData(reportResultPara, publicKey, privateKey);
+        //                                    if (decryptDataPara.FLAG == true)
+        //                                    {
+        //                                        thirdBookingEnt.MedicalStatus = '3';
+        //                                        await _thirdBookingRepository.UpdateAsync(thirdBookingEnt);
+        //                                    }
+        //                                }
+
+        //                                #endregion
+
+        //                            }
+
+
+        //                        }
+
+        //                        #endregion
+
+
+
+
+
+
+        //                    }
+        //                }
+        //            }
+
+        //        }
+        //    }
+
+
+        //}
 
 
 
@@ -446,19 +521,20 @@ namespace Shentun.Peis.ThirdBookingPushs
                     using (MultipartFormDataContent multipartContent = new MultipartFormDataContent())
                     {
                         // 添加文本字段
-                        var icode = new StringContent(data.ICODE);
-                        icode.Headers.ContentDisposition= new System.Net.Http.Headers.ContentDispositionHeaderValue("form-data")
-                        {
-                            Name = "ICODE"
-                        };
-                        var sign = new StringContent(data.SIGN);
-                        icode.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("form-data")
-                        {
-                            Name = "SIGN"
-                        };
-                  
-                        //multipartContent.Add(new StringContent(data.ICODE), "ICODE");
-                        //multipartContent.Add(new StringContent(data.SIGN), "SIGN");
+                        //var icode = new StringContent(data.ICODE);
+                        //icode.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("form-data")
+                        //{
+                        //    Name = "ICODE"
+                        //};
+                        //var sign = new StringContent(data.SIGN);
+                        //icode.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("form-data")
+                        //{
+                        //    Name = "SIGN"
+                        //};
+
+
+                        multipartContent.Add(new StringContent(data.ICODE), "ICODE");
+                        multipartContent.Add(new StringContent(data.SIGN), "SIGN");
                         // 添加文件
                         ByteArrayContent fileContent = new ByteArrayContent(fileBytes);
                         fileContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/octet-stream");
@@ -466,6 +542,8 @@ namespace Shentun.Peis.ThirdBookingPushs
 
                         multipartContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("multipart/form-data");
 
+                        // multipartContent.Add(fileBytes, "DATA", fileName);
+
                         HttpResponseMessage response = null;
 
                         response = await httpClient.PostAsync(url, multipartContent);