using DevExpress.XtraEditors; using HL_FristAidPlatform_DTO; using HL_FristAidPlatform_Public; using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Net; using System.Security.Cryptography; using System.Text; using System.Windows.Forms; using System.Xml; using System.Xml.Serialization; namespace HL_FristAidPlatform_Apoplexy { public partial class Form_DataReporting : XtraForm { /// /// 当前页 /// private int curPage = 1; /// /// 每页大小 /// private int pageSize = 50; /// /// 所有记录条数 /// private int totalNumber = 0; private byte[] aesKey; private byte[] aesIv; /// /// 单位编码,请从授权文档中获取 /// private string uuCode = "27144"; private string acZLType = ""; /// /// 授权码,请从授权文档中获取 /// private string uuAuth = "wKZIUUPCnxtbmAiRQN8dYGsir0uBBUaLHFeyf3KgRT3K3fjIkMhiIEFqb0adkNAS"; /// /// 过期时间 /// private int timeout = 40000; private Encoding enc = Encoding.UTF8; private DateTime exp = DateTime.Now; private string token; public Form_DataReporting() { InitializeComponent(); } private void Form_DataReporting_Load(object sender, EventArgs e) { GetDate(Information.Hospital.GUID, "", "", "", "", "", pageSize, curPage); } private void simpleButton_Search_Click(object sender, EventArgs e) { switch (radioGroup1.SelectedIndex) { case 1: acZLType = "01"; break; case 2: acZLType = "02"; break; case 3: acZLType = "03"; break; case 4: acZLType = "04"; break; case 5: acZLType = "05"; break; } GetDate(Information.Hospital.GUID, acZLType, txt_name.Text, txt_acHzCode.Text, time_cytimeOne.TimeValue, time_cytimeTwo.TimeValue, pageSize, curPage); } public void GetDate(string hospitalGuid, string acZLType, string name, string acHzCode, string cytimeOne, string cytimeTwo, int pageSize, int pageIndex) { string Url = string.Format("api/service/ApoplexyPatientReport/GetApoplexyReportPatientList?hospitalGuid={0}&acZLType={1}&name={2}&acHzCode={3}&cytimeOne={4}&cytimeTwo={5}&pageSize={6}&pageIndex={7}", hospitalGuid, acZLType, name, acHzCode, cytimeOne, cytimeTwo, pageSize, curPage); DataTable dt = DBHelpClass.Get(Url); gridControl1.DataSource = dt; totalNumber = DBHelpClass.TotalNumber; userControlForPage.RefreshPager(pageSize, totalNumber, curPage);//更新分页控件显示。 } private void gridView1_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e) { if (e.Column.FieldName == "Gender") { string value = e.Value.ToString(); if (value == "1") { e.DisplayText = "男"; } if (value == "2") { e.DisplayText = "女"; } } if (e.Column.FieldName == "HospitalizationTime") { string value = e.Value.ToString(); if (!string.IsNullOrEmpty(value)) { e.DisplayText = Convert.ToDateTime(value).ToString("yyyy-MM-dd HH:mm"); } } if (e.Column.FieldName == "acZLType") { string value = e.Value.ToString(); string str = ""; if (!string.IsNullOrEmpty(value)) { if (value.Contains("01")) { if (!string.IsNullOrEmpty(str)) { str += ";静脉溶栓"; } else { str += "静脉溶栓"; } } if (value.Contains("02")) { if (!string.IsNullOrEmpty(str)) { str += ";血管内介入治疗"; } else { str += "血管内介入治疗"; } } if (value.Contains("03")) { if (!string.IsNullOrEmpty(str)) { str += ";脑出血"; } else { str += "脑出血"; } } if (value.Contains("04")) { if (!string.IsNullOrEmpty(str)) { str += ";颅内动脉瘤"; } else { str += "颅内动脉瘤"; } } if (value.Contains("05")) { if (!string.IsNullOrEmpty(str)) { str += ";CEA/CAS"; } else { str += "CEA/CAS"; } } } e.DisplayText = str; } } private void repositoryItemButtonEdit1_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e) { int selectRow = gridView1.GetSelectedRows()[0]; string patientGuid = PublicClass.ToString(gridView1.GetRowCellValue(selectRow, "GUID"), ""); string Url = string.Format("api/service/ApoplexyPatientReport/ReportSinglePatientXML?patientGuid={0}", patientGuid); ApoplexyReportDTO dto = new ApoplexyReportDTO(); dto.Archives = new Archives(); dto.ArchivesCases = new ArchivesCases(); dto.RYQK = new RYQK(); dto.HealthExam = new HealthExam(); dto.TOAST = new T_Service_Apoplexy_TOAST(); dto.RSZL = new T_Service_Apoplexy_RSZL(); dto.XGZL = new T_Service_Apoplexy_XGZL(); dto.NCXZYJC = new T_Service_Apoplexy_NCXZYJC(); dto.NCXSS = new T_Service_Apoplexy_NCXSS(); dto.ZYYW = new T_Service_Apoplexy_ZYYW(); dto.DMLSS = new T_Service_Apoplexy_DMLSS(); dto.CEACZ = new T_Service_Apoplexy_CEACZ(); dto.SHYW = new T_Service_Apoplexy_SHYW(); dto.CYPG = new CYPG(); dto.KFZL = new T_Service_Apoplexy_KFZL(); dto.JKJY = new T_Service_Apoplexy_JKJY(); dto.CYQK = new CYQK(); dto.NCXYWB = new T_Service_Apoplexy_NCXYWB(); dto.NCXAVM = new T_Service_Apoplexy_NCXAVM(); dto = DBHelpClass.GetDateModel(Url); if (dto != null) { dto.ArchivesCases.acTime = "2021-12-07 21:02"; ApoplexyReportDTOList apoplexyReportDTOList = new ApoplexyReportDTOList(); List addList = new List(); addList.Add(dto); apoplexyReportDTOList.ApoplexyReportList = dto; string xmldata = XmlSerialize(apoplexyReportDTOList); sendXml(xmldata); } } public static string XmlSerialize(T obj) { using (StringWriter sw = new StringWriterWithEncoding(Encoding.UTF8)) { //去掉要结点的 xmlns:xsi XmlSerializerNamespaces _namespaces = new XmlSerializerNamespaces( new XmlQualifiedName[] { new XmlQualifiedName(string.Empty, "") }); XmlSerializer serializer = new XmlSerializer(obj.GetType()); serializer.Serialize(sw, obj, _namespaces); sw.Close(); return sw.ToString(); } } public void sendXml(string data) { //2018院内筛查上报测试接口; string url = "https://api.chinasdc.cn/StrokeInterface/Interface2018BB/AddArchivesCases2018ZB03Test"; //string url = "https://api.chinasdc.cn/StrokeInterface/Interface2018BB/AddArchivesCases2018ZB03"; string response = UpData(url, data); if (string.IsNullOrEmpty(response)) { //调用接口失败 } else { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(response); XmlElement root = xmlDoc.DocumentElement; string Err = root.SelectSingleNode("Err").InnerText; string Msg = root.SelectSingleNode("Msg").InnerText; XtraMessageBox.Show(Msg); if (Err.Equals("0")) { //上传成功 } else { XtraMessageBox.Show(response); //上传失败,记录错误。 WriteErrorLog("卒中病例上传错误日志西", response); } } } /// /// 调用接口上传数据 /// /// 接口url /// 数据xml /// public string UpData(string url, string data) { string token_ = GetToken(); if (string.IsNullOrEmpty(token_)) { //没有获取到token return null; } Dictionary parameters = new Dictionary(); parameters.Add("uuCode", uuCode); parameters.Add("Token", token_); string data_ = AES(data); parameters.Add("Data", data_); parameters.Add("uNickName", "hm15892885934"); return doPost(url, parameters); } /// /// 获取Token /// /// private string GetToken() { if (string.IsNullOrEmpty(token) || DateTime.Now >= exp) { //token不存在 或者 过期 重新获取 Dictionary parameters = new Dictionary(); parameters.Add("uuCode", uuCode); parameters.Add("uuAuth", uuAuth); parameters.Add("type", "ZB"); string url = "https://api.chinasdc.cn/StrokeInterface/ApiAuth/GetToken"; string response = doPost(url, parameters); if (string.IsNullOrEmpty(response)) { //调用授权接收出错 return null; } else { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(response); XmlElement root = xmlDoc.DocumentElement; string Err = root.SelectSingleNode("Err").InnerText; string Msg = root.SelectSingleNode("Msg").InnerText; if (Err.Equals("0")) { XmlNode data = root.SelectSingleNode("Data"); token = data.SelectSingleNode("Token").InnerText; aesKey = enc.GetBytes(data.SelectSingleNode("AESKEY").InnerText); aesIv = enc.GetBytes(data.SelectSingleNode("AESIV").InnerText); //获取到token 返回 //记录过期时间 exp = DateTime.Now.AddHours(7.8); return token; } else { //调用授权接收出错 记录错误 return null; } } } else { return token; } } /// /// 调用http post接口 /// /// url地址 /// 参数 /// Response private string doPost(string url, IDictionary parameters) { HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.Timeout = timeout; //如果需要POST数据 if (!(parameters == null || parameters.Count == 0)) { StringBuilder buffer = new StringBuilder(); bool bl = true; foreach (string key in parameters.Keys) { if (bl) { buffer.AppendFormat("{0}={1}", key, parameters[key]); bl = false; } else { buffer.AppendFormat("&{0}={1}", key, parameters[key]); } } byte[] data = enc.GetBytes(buffer.ToString()); using (Stream stream = request.GetRequestStream()) { stream.Write(data, 0, data.Length); } } else { request.ContentLength = 0; } HttpWebResponse hwr = request.GetResponse() as HttpWebResponse; if (hwr.StatusCode == HttpStatusCode.OK) { Stream receiveStream = hwr.GetResponseStream(); StreamReader readStream = new StreamReader(receiveStream, enc); string str = readStream.ReadToEnd(); hwr.Close(); receiveStream.Close(); readStream.Close(); return str; } else { return null; } } /// /// AES加密 /// /// 需要加密的内容 /// 加密后的Base64字符串 private string AES(string data) { //分组加密算法 SymmetricAlgorithm des = Rijndael.Create(); byte[] inputByteArray = enc.GetBytes(data);//得到需要加密的字节数组 //设置密钥及密钥向量 des.Key = aesKey; des.IV = aesIv; byte[] cipherBytes = null; using (MemoryStream ms = new MemoryStream()) { using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write)) { cs.Write(inputByteArray, 0, inputByteArray.Length); cs.FlushFinalBlock(); cipherBytes = ms.ToArray();//得到加密后的字节数组 cs.Close(); ms.Close(); } } return Convert.ToBase64String(cipherBytes); } /// /// 记录错误日志 /// 精确到每分钟 /// /// 文件名前缀 /// 记录内容 public static void WriteErrorLog(string file_name_prefix = "", string text = "") { if (string.IsNullOrEmpty(file_name_prefix)) { file_name_prefix = "Debug"; } string path = AppDomain.CurrentDomain.BaseDirectory; path = Path.Combine(path, "logs\\"); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } string fileFullName = Path.Combine(path, string.Format("{0}{1}.txt", file_name_prefix, DateTime.Now.ToString("yyyyMMdd-HHmm"))); using (StreamWriter output = File.AppendText(fileFullName)) { output.WriteLine(text); output.Close(); } } private void gridControl1_MouseDoubleClick(object sender, MouseEventArgs e) { try { //gridView2.SelectRow(this.gridView2.FocusedRowHandle); ShowDetail(); } catch (Exception ex) { //XtraMessageBox.Show("请先勾选该患者后再双击打开!"); PublicClass.WriteErrorLog(this.Text, "查看患者详情:\r\n" + ex); } } private void ShowDetail() { if (gridView1.DataRowCount > 0) { // loading.ShowMessage(); int selectRow = gridView1.FocusedRowHandle; //long PatientID = PublicClass.ToInt64(gridView2.GetRowCellValue(selectRow, "编号").ToString(), 0); string GUID = gridView1.GetRowCellValue(selectRow, "GUID").ToString(); Form_PatientDetail detail = new Form_PatientDetail(GUID, "1");//, hospitalGuid detail.WindowState = FormWindowState.Maximized; detail.Owner = this; // loading.ShowMessage("请稍候", "正在加载..."); detail.Show(); // loading.HideMessage(); } } private void MyPagerEvents(int curPage, int pageSize) { this.curPage = curPage; this.pageSize = pageSize; GetDate(Information.Hospital.GUID, acZLType, txt_name.Text, txt_acHzCode.Text, time_cytimeOne.TimeValue, time_cytimeTwo.TimeValue, pageSize, curPage); } private void userControlForPage_myPagerEvents(int curPage, int pageSize) { userControlForPage.myPagerEvents += MyPagerEvents; } } }