/// <summary> /// 开始计时 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { if (b) { return; } //设置timer不可用 timer.Stop();// //传输数据 try { #region DataTable dt = new SqlService().GetGetPEEntity(); Stopwatch sw = new Stopwatch(); PhysicalExaminationServiceSoapClient client = new PhysicalExaminationServiceSoapClient(); sw.Start(); if (dt.Rows.Count > 0) { for (int i = 0; i < dt.Rows.Count; i++) { //如果身份证号和电话号码其中一个不为空就传输 if (dt.Rows[i]["patientphone"].ToString() != "" || dt.Rows[i]["idnum"].ToString() != "") { PEEntity model = new PEEntity(); #region if (dt.Rows[i]["age"].ToString() != null) { string userage = dt.Rows[i]["age"].ToString(); if (userage.Equals("成人")) { model.Age = 999; } else if (userage.Equals("婴儿")) { model.Age = 998; } else if (userage.IndexOf("岁") > 0) { model.Age = Convert.ToInt32(userage.Substring(0, userage.ToLower().IndexOf("岁") + "岁".Length - 1)); } else if (userage.IndexOf("月") > 0) { model.Age = 998; } else if (userage.IndexOf("日") > 0) { model.Age = 998; } else if (userage.IndexOf("时") > 0) { model.Age = 998; } else { model.Age = Convert.ToInt32(userage.Split('岁')[0]); } } ordernum = dt.Rows[i]["barcode"].ToString(); model.IsSend = 1; model.BarCode = dt.Rows[i]["barcode"].ToString(); //"BARCODE" + DateTime.Now.AddDays(i).ToString("yyyyMMddhhssss"); // //条码 model.LDoctor = dt.Rows[i]["LDoctor"].ToString(); //送检医生 model.LOrganization = dt.Rows[i]["LOrganization"].ToString(); //送检单位 model.ProductName = dt.Rows[i]["ProductName"].ToString(); //套餐名称 model.LResult = dt.Rows[i]["LResult"].ToString() + "|"; //送检结果 model.Ltime = DateTime.Now.AddMonths(i).ToString("yyyy-MM-dd HH:mm:ss"); //送检时间 model.OrderNo = dt.Rows[i]["barcode"].ToString(); //"PSC" + DateTime.Now.ToString("yyyyMMddhhssss"); // //订单编号 model.Remark = dt.Rows[i]["remark"].ToString(); //备注 model.STime = DateTime.Now.AddDays(-1).AddHours(i).ToString("yyyy-MM-dd HH:mm:ss"); //model.Reports = BuildeReport("340000200000", "20651"); model.Reports = BuildeReport(dt.Rows[i]["barcode"].ToString(), dt.Rows[i]["customerid"].ToString()); //检验报告列表 string invoker = "高新达安"; //调用者标识 string user = ""; //if (dt.Rows[i]["patientphone"].ToString() != "" ) //{ // user = "******" + dt.Rows[i]["patientname"].ToString() + "&" + dt.Rows[i]["patientphone"].ToString(); //体检人+手机号 会验证7位数以上 //} //else //{ // user = "******" + dt.Rows[i]["patientname"].ToString() + "&" + dt.Rows[i]["idnum"].ToString(); //体检人+身份证号 会验证7位数以上 //} user = "******" + dt.Rows[i]["patientname"].ToString() + "&" + dt.Rows[i]["patientphone"].ToString() + "&" + dt.Rows[i]["idnum"].ToString() + "&"; string authentic = "Invoker=" + invoker + "|BarCode=" + model.BarCode + "|User="******"<RSAKeyValue><Modulus>psgX2qvebnjvgHdksSMGacyWj0Ws5oe1X91txkmUtVsFsKhg3HDQVzvq7M+QFKFq8RhHGwVX+949PEnGM4nY7MmynGojV/7kEhI5Rd4vPrUmYS4yUK0f/WPdkgzALb94iYFo0u2CBV+hJKYFY0T7LYg6YJmW1aiVFeTvcGU4YIM=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>"; //加密调用者invoker的公钥 string publicinvokerkey = "<RSAKeyValue><Modulus>v6t9eE/+4A4NdVQQUTMxCrSCKHq3bWTwkU3DECuEh3Ddp1iNbECmcYnVOQBwJVwh8ZGDIp7yxUQ2yHbPv0yf2davMuuPNCwx5laXRc7vNbp9F6A6/ijaxMFLxypigYzzcY8vrTblHfTK4q5uxj+Vy2huyarwPpNM/xSNoLK05Ls=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>"; RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); byte[] cipherbytes; rsa.FromXmlString(publicauthentickey); cipherbytes = rsa.Encrypt(Encoding.UTF8.GetBytes(authentic), false); //使用UTF-8编码 authentic = Convert.ToBase64String(cipherbytes); cipherbytes = null; rsa.FromXmlString(publicinvokerkey); cipherbytes = rsa.Encrypt(Encoding.UTF8.GetBytes(invoker), false); invoker = Convert.ToBase64String(cipherbytes); InvokeResult result = client.EditPhysicalExamination(invoker, user, model, authentic); //数据传输 string str = (i + 1) + " 传输信息:" + result.MCode + " " + result.Succeed; //" " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + // 修改Lis上传标志Sqflag 1未上传 2 已上传 if (result.MCode == "" && result.Succeed == true) //如果上传成功标识改为1 { Hashtable htorder = new Hashtable(); htorder.Add("sqflag", 2); htorder.Add("barcode", dt.Rows[i]["barcode"].ToString()); bool falg = new SqlService().EditSqflag(htorder); if (falg) { str += " " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " " + " 条码号:" + dt.Rows[i]["barcode"].ToString() + " 上传成功!"; } else { str += " " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " " + " 条码号:" + dt.Rows[i]["barcode"].ToString() + " 上传失败!"; } } else { str += " " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " " + " 条码号:" + dt.Rows[i]["barcode"].ToString() + " 上传失败!"; Hashtable htorder = new Hashtable(); htorder.Add("sqflag", 3); htorder.Add("barcode", dt.Rows[i]["barcode"].ToString()); new SqlService().EditSqflag(htorder); } SetTB(str); #endregion } else { // 如果身份证号和电话号码都为空就直接改状态 Hashtable htorder = new Hashtable(); htorder.Add("sqflag", 2); htorder.Add("barcode", dt.Rows[i]["barcode"].ToString()); bool falg = new SqlService().EditSqflag(htorder); string message = ""; if (falg) { message = "电话和身份证为空," + " 条码号:" + dt.Rows[i]["barcode"].ToString() + "传输取消!"; } else { message = "电话和身份证为空," + " 条码号:" + dt.Rows[i]["barcode"].ToString() + "修改出错!"; } SetTB(message); } } sw.Stop(); string str1 = "\n总运行时间:" + sw.Elapsed + "\n测量实例得出的总运行时间(毫秒为单位):" + sw.ElapsedMilliseconds + "\n总运行时间(计时器刻度标识):" + sw.ElapsedTicks + "\n"; SetTB(str1); //设置timer可用 timer.Start(); } else { string str2 = " " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ": 没有传输的数据!\n"; SetTB(str2); } #endregion } catch (Exception ex) { string strmessage = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " 条码号:" + ordernum + " " + ex.Message; SetTB(strmessage); CreateErrorLog(strmessage); if (strmessage.IndexOf("未能找到文件") <= 0) { Hashtable htorder = new Hashtable(); htorder.Add("sqflag", 3); htorder.Add("barcode", ordernum); new SqlService().EditSqflag(htorder); } //MessageBox.Show(ex.Message, "Lis数据传输"); } finally { timer.Start(); } }
///// <summary> ///// 构建体检报告数据 ///// </summary> ///// <returns></returns> private static PEReportEntity[] BuildeReport(string ordernum, string customerid) { //根据订单找到检测报告 List <PEReportEntity> list = new List <PEReportEntity>(); //OrdersService orderservie = new OrdersService(); Hashtable ht = new Hashtable(); ht.Add("strKey", ordernum); DataTable dt = new SqlService().GetPEReportEntity(ht); if (dt.Rows.Count > 0) { for (int i = 0; i < dt.Rows.Count; i++) { #region PEReportEntity pereport = new PEReportEntity(); pereport.ATime = DateTime.Now.AddHours(-i).ToString("yyyy-MM-dd HH:mm:ss"); //审核时间 pereport.Auditor = dt.Rows[i]["Auditor"].ToString(); //审核人 pereport.Inspector = dt.Rows[i]["Inspector"].ToString(); // "检验人"; pereport.ITime = DateTime.Now.AddMinutes(i).ToString("yyyy-MM-dd HH:mm:ss"); //检验时间 pereport.LRoom = ""; // "送检医生"; pereport.STime = DateTime.Now.AddDays(-1).AddHours(i).ToString("yyyy-MM-dd HH:mm:ss"); pereport.Remark = dt.Rows[i]["Remark"].ToString(); // "体检报告上的备注信息"; // pereport.SpecialInfo = dt.Rows[i]["SpecialInfo"].ToString(); // "特殊信息"; //" pereport.Sstate = dt.Rows[i]["Sstate"].ToString() == "" ? "正常" : dt.Rows[i]["Sstate"].ToString(); //"正常":dt.Rows[i]["Sstate"].ToString();// "样本状态:正常"; // pereport.Stype = dt.Rows[i]["Stype"].ToString(); // "样本类型"; // pereport.Opinion = dt.Rows[i]["Opinion"].ToString(); //体检报告建议 pereport.Proposal = dt.Rows[i]["Proposal"].ToString(); //诊断建议 Hashtable htitem = new Hashtable(); DataTable dtItems = null; //根据ordernum 查找检测项目 if (dt.Rows[i]["reportoption"].ToString() == "0") { htitem.Add("strKey", dt.Rows[i]["specimenreportid"].ToString()); dtItems = new SqlService().GetGetPEItemEntityOne(htitem); } else if (dt.Rows[i]["reportoption"].ToString() == "1") { htitem.Add("strKey", ordernum); dtItems = new SqlService().GetPEItemEntityTwo(htitem); } else if (dt.Rows[i]["reportoption"].ToString() == "2") { htitem.Add("strKey", dt.Rows[i]["specimenreportid"].ToString()); dtItems = new SqlService().GetPEItemEntityThree(htitem); } PEItemEntity[] peItems = new PEItemEntity[dtItems.Rows.Count]; if (dtItems.Rows.Count > 0) { for (int j = 0; j < dtItems.Rows.Count; j++) { PEItemEntity e = new PEItemEntity(); //检验项目验证异常 e.ICode = dtItems.Rows[j]["ICode"].ToString(); // 检验项目名称 "中性粒细胞百分比(Neu%)";"1201029";// e.Manner = dtItems.Rows[j]["Manner"].ToString(); //"检验方法";// e.RefValue = dtItems.Rows[j]["RefValue"].ToString(); //参考值1\n参考值2\n参考值3 e.Remark = dtItems.Rows[j]["Remark"].ToString(); //检测项目备注 if (dtItems.Rows[j]["Remind"].ToString() != "") { e.Remind = dtItems.Rows[j]["Remind"].ToString(); //提示;"H";// } else { e.Remind = "N"; } e.Unit = dtItems.Rows[j]["Unit"].ToString(); //单位 e.Value = dtItems.Rows[j]["Value"].ToString(); //体检结果值 peItems[j] = e; } } pereport.Items = peItems; //检测项目 //传送体检报告单 string hostName = ConfigurationManager.AppSettings["hostName"].ToString(); string passWord = ConfigurationManager.AppSettings["passWord"].ToString(); string userName = ConfigurationManager.AppSettings["userName"].ToString(); CmdNetUse(hostName, passWord, userName); if (dt.Rows[i]["reportoption"].ToString() == "1") //病理报告 { hostName += "\\pdfdownload\\lispdf\\" + customerid + "\\" + dt.Rows[i]["specimenreportid"].ToString() + ".PDF"; //pereport.Files = new FileEntity[2]; FileEntity[] fileEntity = new FileEntity[2]; FileEntity f = new FileEntity(); f.Content = ConvertStreamToByteBuffer(@hostName); f.Extension = "pdf"; f.Remark = "这是第一张PDF文件"; f.Type = "1"; fileEntity[0] = f; Hashtable htsh = new Hashtable(); htsh.Add("strKey", ordernum); DataTable dtable = new SqlService().GetFilename(htsh); for (int k = 0; k < dtable.Rows.Count; k++) { hostName = dtable.Rows[k]["filename"].ToString(); } FileEntity fi = new FileEntity(); fi.Content = ConvertStreamToByteBuffer(@hostName); fi.Extension = "jpg"; fi.Remark = "这是第一张jpg文件"; fi.Type = "2"; fileEntity[1] = fi; } else //常规 微生物报告 { hostName += "\\pdfdownload\\lispdf\\" + customerid + "\\" + dt.Rows[i]["specimenreportid"].ToString() + ".PDF"; //hostName = "E:\\pdfdownload\\lispdf\\202083\\203490186.pdf"; pereport.Files = new FileEntity[] { new FileEntity() { Content = ConvertStreamToByteBuffer(@hostName), Extension = "pdf", Remark = "这是第一张PDF文件", Type = "1" } }; } list.Add(pereport); #endregion } } return(list.ToArray()); }