/// 检查对照项目 private void btnCheckTest_Click(object sender, EventArgs e) { string str = ""; List <DATestmap> map = new DATestmapBLL().GetDATestmapCheckList(); if (map.Count == 0) { ShowMessageHelper.ShowBoxMsg("没找到异常的对照项目,请到同步【达安项目】窗口 点击[同步]之后再来确认查看"); return; } foreach (DATestmap item in map) { str += string.Format("医院项目 [{0}] 编码[{1}] 需要重新对应对照\n", item.Customertestname, item.Customertestcode); } ShowMessageHelper.ShowBoxMsg(str); }
/// <summary> /// 上传订单处理 /// </summary> private void SendOrdersHandle() { try { DAOutSpecimenBLL bll = new DAOutSpecimenBLL(); //获取需要获取结果的条码号 List <DAOutspecimen> BarCodeList = bll.SelectRequestCodeBySendOrders(); if (BarCodeList.Count == 0) { SetTB("没有订单需要上传"); return; } //获取对照表 List <DATestmap> datestmap = new DATestmapBLL().GetDATestmapList(null); for (int i = 0; i < BarCodeList.Count; i++) { DAOutspecimen outspec = BarCodeList[i]; string barcode = outspec.Requestcode; try { Hashtable ht = new Hashtable(); ht.Add("Requestcode", barcode); DataTable dt = outspecimenbll.GetOutspecimenTable(ht); //基本信息 dt.TableName = "data_row"; /* 发送模式:1 组合发送, 0 单项发送(默认) * 组合发送: 发送订单表OutSpecimen的数据 * (DATESTCODES AS NaturalItem,CUSTOMERTESTNAMES AS NaturalItemDesc,CUSTOMERTESTCODES AS HospItemCode) * * 单项发送: 发送结果表da_result中的明细数据,获取Customertestcode,customertestname, * 并根据Customertestcode获取对照表的datestcode */ #region >>>> zhouy 发送项目拼装 string cuscode = "", cusname = "", daancode = ""; DataTable dtTest; if (config.Model == "1") { dtTest = new DAOutSpecimentestBLL().SelectSendGruopCodeByRequestCode(outspec.Requestcode); //组合 } else { dtTest = new DAResultBLL().SelectSendTestCodeByRequestCode(outspec.Requestcode); //明细 } foreach (DataRow dr in dtTest.Rows) { //没有达安代码,则对照表没有对应 if (dr["datestcode"] == null || dr["datestcode"].ToString() == "") { //没对项目跳出进行下一个条码 throw new Exception(string.Format("中的医院项目[{0}({1})]未对应好数据,请到项目对照表中对应好" , dr["customertestname"], dr["Customertestcode"])); } cuscode += dr["Customertestcode"] + ","; cusname += dr["customertestname"] + ","; daancode += dr["datestcode"] + ","; } dt.Rows[0]["HospItemCode"] = cuscode.TrimEnd(','); //医院项目代码 dt.Rows[0]["NaturalItemDesc"] = cusname.TrimEnd(','); //医院项目名称 dt.Rows[0]["NaturalItem"] = daancode.TrimEnd(','); //达安代码 #endregion string[] obj = new string[2] { SID, StringToXML(DataToXml.ConvertDataTableToXML(dt)) }; string strQueryResult = WebServiceUtils.ExecuteMethod("SendRequestInfo", obj); //调用webService if (strQueryResult.Contains("无法连接")) { throw new Exception("操作连接超时!" + strQueryResult); } else if (strQueryResult.Contains("MSG0006")) { string[] strlogin = commonbll.UserLogin(config); if (strlogin[0] == "0") { SetTB("登录失败:" + strlogin[1]); continue; } else { SID = strlogin[1]; i--; } } else { #region >>>> zhouy 发送成功记录成功日志,发送失败记录错误日志 string msg = strQueryResult; //strQueryResult.TrimEnd(',').Split('|'); 2019.1.29该接口康源系统返回的格式和其他接口不同做特殊处理 //0 为正常发送了 if (msg.Contains("|0")) { DAOperationlog daoperationlog = new DAOperationlog(); daoperationlog.Dictuserid = user.Dictuserid; daoperationlog.Usercode = user.Usercode; daoperationlog.Username = user.Username; daoperationlog.Usertype = "1";//系统自动上传 写成医院客户 daoperationlog.Optype = "订单已发送"; daoperationlog.Createdate = DateTime.Now; daoperationlog.Opcontent = "发送订单,订单号:" + outspec.Requestcode; daoperationlog.Requestcode = outspec.Requestcode; //达安条码 daoperationlog.Hospsampleid = outspec.Hospsampleid; //医院条码 daoperationlog.Hospsamplenumber = outspec.Hospsamplenumber; //医院样本号 if (new DAOperationlogBLL().SaveDAOperationlog(daoperationlog) == true) { Hashtable htstatus = new Hashtable(); htstatus.Add("Outspecimenid", outspec.Outspecimenid.ToString()); htstatus.Add("status", "2");//已发送 修改状态 new DAOutSpecimenBLL().UpdateStatus(htstatus); } //记录成功的达安条码号 SetTB(string.Format("达安条码[{0}]:发送成功", outspec.Requestcode)); } else { SetTB(string.Format("达安条码[{0}]:{1}", outspec.Requestcode, msg)); //记录失败的异常信息到日志表中 DAErrorlog error = new DAErrorlog(); error.Dictuserid = user.Dictuserid; error.Createdate = DateTime.Now; error.LastUpdateDate = DateTime.Now; error.Opcontent = "订单发送异常信息: " + msg; error.Usercode = user.Usercode; error.Usertype = "1"; error.Username = user.Username; error.Ipaddress = commonbll.GetHostIP(); //获取本机IP地址 error.Machinename = commonbll.GetHostName(); //获取本机机器名 new DAErrorLogBLL().SaveErrorLog(error); } #endregion } } catch (Exception e) { SetTB(string.Format("达安条码[{0}]:{1}", barcode, e.Message)); } } } catch (Exception e) { SetTB("发送订单出现异常:" + e.Message); } }