| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 | using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using Newtonsoft.Json.Linq;using PTMedicalInsurance.Variables;using PTMedicalInsurance.Helper;using PTMedicalInsurance.FormSetter;using System.Net;using System.IO;namespace PTMedicalInsurance.Forms{    public partial class frmEcSettlCertUpload : Form    {        private DataTable dtEcSettlCertList;        private InvokeHelper invoker = new InvokeHelper();        public frmEcSettlCertUpload()        {            InitializeComponent();        }        private void frmEcSettlCertUpload_Load(object sender, EventArgs e)        {            GridViewSetter gvs = new GridViewSetter();            gvs.setDgvEcSettlCertList(dgvEcSettlCertList);            dpST.Text = DateTime.Now.ToString("yyyy-MM-01");            dpED.Value = DateTime.Now.AddDays(1 - DateTime.Now.Day).AddMonths(1).AddDays(-1);        }        private void btnClose_3_Click(object sender, EventArgs e)        {            this.Close();        }        private void btnQuery_Click(object sender, EventArgs e)        {            JObject joIn = new JObject();            joIn.Add("BeginDate", dpST.Value.ToString("yyyy-MM-dd HH:mm:ss"));            joIn.Add("EndDate", dpED.Value.ToString("yyyy-MM-dd HH:mm:ss"));            joIn.Add("HospDr", Global.inf.hospitalDr);            joIn.Add("PatName", tbName.Text);            joIn.Add("InvNo", tbInvNO.Text);            joIn.Add("InterfaceID", Global.inf.interfaceDr);            JObject joHisRtn = invoker.invokeHISService(JsonHelper.setIrisInpar("05110040", joIn).ToString(), "查询某时间段内或某患者电子结算凭证清单");  //测试服为05110038            string errMsg;            if (JsonHelper.parseIrisRtnValue(joHisRtn, out errMsg) != 0)            {                MessageBox.Show("查询某时间段内或某患者电子结算凭证清单失败!" + errMsg);                return;            }            JArray jaData = JArray.Parse(JsonHelper.getDestValue(joHisRtn, "data"));            JObject joRtn = invoker.invokeInsuService(JsonHelper.setIrisInpar("09010128", jaData).ToString(), "根据传入的电子凭证记录匹配上传记录表");            if (JsonHelper.parseIrisRtnValue(joRtn, out errMsg) != 0)            {                MessageBox.Show("根据传入的电子凭证记录匹配上传记录表!" + errMsg);                return;            }            dtEcSettlCertList = (DataTable)joRtn["data"].ToObject(typeof(DataTable));            dgvEcSettlCertList.DataSource = dtEcSettlCertList;        }        private int ConvertPDFurlToBase64(string invNo, string pdfUrl,out string base64PDF,out string errMsg)        {            errMsg = ""; base64PDF = "";            string SavePath = Global.curEvt.path + @"\PDF\"+ invNo+".pdf";            try            {                //创建PDF文件夹                if (!Directory.Exists(Global.curEvt.path + @"\PDF\"))                {                    Directory.CreateDirectory(Global.curEvt.path + @"\PDF\");                }                using (WebClient client = new WebClient())                {                    byte[] fileData = client.DownloadData(pdfUrl); // 下载文件数据到字节数组中                    File.WriteAllBytes(SavePath, fileData); // 将字节数组写入文件系统                    //Console.WriteLine("文件已保存到: " + SavePath);                                   }                base64PDF = ConvertPdfToBase64(SavePath);                //Console.WriteLine(base64String);                if (base64PDF == "")                    return -1;                else                    return 0;            }            catch(Exception ex)            {                errMsg = ex.ToString();                return -1;            }            }        private string ConvertPdfToBase64(string filePath)        {            try            {                // 读取PDF文件为字节数组                byte[] pdfBytes = File.ReadAllBytes(filePath);                // 将字节数组转换为Base64字符串                string base64String = Convert.ToBase64String(pdfBytes);                return base64String;            }            catch (Exception ex)            {                Console.WriteLine("Error: " + ex.Message);                return null;            }        }        private void btnBatchUpload_Click(object sender, EventArgs e)        {            string errMsg;            string base64PDF;            int i = dgvEcSettlCertList.CurrentRow.Index;            string InvNo = dtEcSettlCertList.Rows[i]["InvNo"].ToString();            string InsuTradeNo = dtEcSettlCertList.Rows[i]["InsuTradeNo"].ToString();            string InvoiceFileUrl = dtEcSettlCertList.Rows[i]["InvoiceFileUrl"].ToString(); //发票PDF地址            if (ConvertPDFurlToBase64(InvNo, InvoiceFileUrl, out base64PDF, out errMsg) != 0)                        {                MessageBox.Show("将发票PDF文件转换为base64格式失败!" + errMsg);                return;            }            /*            JObject joIn = new JObject();            joIn.Add("InvNo", dtEcSettlCertList.Rows[i]["InvNo"].ToString());            joIn.Add("PrintPaymentInvDr", dtEcSettlCertList.Rows[i]["PrintPaymentInvDr"].ToString());            joIn.Add("HospDr", dtEcSettlCertList.Rows[i]["HospDr"].ToString());            //获取HIS 原始入参            //JoIn包含 患者数电号            JObject joRtn = invoker.invokeHISService(JsonHelper.setIrisInpar("05110041", joIn).ToString(), "获取该数电号对应的数电入参"); //测试服05110039            if (JsonHelper.parseIrisRtnValue(joRtn, out errMsg) != 0)            {                errMsg = ("获取该数电号对应的数电入参失败:" + errMsg);                MessageBox.Show(errMsg);                return;            }             string NeedConvertData = JsonHelper.getDestValue(joRtn, "data");            */            JObject joInput = new JObject();            joInput.Add("TRADE_NO", InsuTradeNo); //医保交易流水号            joInput.Add("CURE_TYPE", "0"); //医疗类别 0:门诊类(包含普通门急诊)1:住院类            joInput.Add("ELECT_INVOICE", base64PDF); //将电子发票(PDF格式)的流进行BASE64转码后,所得到的字符串            //上传给中心            JObject joRtn = invoker.invokeCenterService_InvNO("0301", JsonHelper.setCenterInpar_SX("0301", joInput.ToString()));            if (joRtn["ret_code"].ToString() != "0")                        {                                MessageBox.Show(joRtn["ret_msg"].ToString());                return;            }            else            {                string DATA = joRtn["out_data"].ToString();                string SETTLEMENT_CODE = joRtn["out_data"]["SETTLEMENT_CODE"].ToString(); //结算票据代码 1:门诊费用结算清单2:住院费用清单3:住院费用结算单4:特殊病定额管理费用结算明细表                string SETTLEMENT_NAME = joRtn["out_data"]["SETTLEMENT_NAME"].ToString(); //结算票据代码所对应的名称                string SETTLEMENT_DATA = joRtn["out_data"]["SETTLEMENT_DATA"].ToString(); //结算票据信息 将结算票据信息(PDF格式)的流进行BASE64转码后,所得到的字符串            }        }    }}
 |