/// <summary>
        /// WebService获取结果
        /// </summary>
        /// <param name="SID"></param>
        /// <returns></returns>
        public DataTable GetReport(string SID, List <string> msglist, string RequestCode)
        {
            DataTable dt = new DataTable();

            string[] objReport = new string[] { SID, RequestCode };
            //string[] strReport = WebServiceUtils.Execute(config.Address, "GetReportAuto", objReport).Split('|');

            string[] strReport = WebServiceUtils.ExecuteMethod("GetReportAuto", objReport).Split('|');
            if (strReport[0] == "0")
            {
                msglist.Add(string.Format("获取报告失败:{0}", strReport[1]));
            }
            else
            {
                DataSet ds = XMLHelper.CXmlToDataSet(strReport[1]);
                if (ds.Tables.Count > 0)
                {
                    dt = ds.Tables[0];
                }
                else
                {
                    msglist.Add("获取报告失败:没有报告数据");
                }
            }
            return(dt);
        }
        //测试
        private void btnTest_Click(object sender, EventArgs e)
        {
            string sitecode = "gz";                          //tbxSiteCode.Text.ToString();//分点代码
            string strUrl   = tbxWebAddress.Text.ToString(); //"http://ky.daanlab.com:8000/NIP/webservice/lisService"; //tbxWebAddress.Text.ToString();//调用webservice地址
            string username = tbxUserName.Text.ToString();   //登录用户名
            string password = tbxPassWrod.Text.ToString();   //登录用户密码


            WebServiceUtils.SetIsUpdate(strUrl);

            //设置调用webservice登录方法的参数
            string[] par = new string[] { sitecode, username, password, "医院LIS服务" };

            //返回登录验证信息:1|SID,0|errorMsg
            string[] loginMsg = WebServiceUtils.ExecuteMethod("Login", par).Split('|');

            if (loginMsg[0] == "0") //登录失败
            {
                ShowMessageHelper.ShowBoxMsg("连接失败!" + loginMsg[1].ToString());
                return;
            }
            else
            {
                ShowMessageHelper.ShowBoxMsg("连接成功!");
            }
        }
 /// <summary>
 /// WebService登录
 /// </summary>
 /// <returns></returns>
 public string[] UserLogin(DAConfig config)
 {
     //当系统配置为空时,返回错误信息
     if (config == null)
     {
         return("0|系统配置信息获取失败".Split('|'));
     }
     //登录
     string[] objLogin = new string[] { config.Sitecode, config.Username, config.Password, "医院LIS服务" };
     return(WebServiceUtils.ExecuteMethod("Login", objLogin).Split('|'));
 }
        private void button1_Click(object sender, EventArgs e)
        {
            #region >>>> zhouy 获取组合对应关系
            DataTable cacheGroupTestdetail = new DataTable();

            string[] testItemInfo = WebServiceUtils.ExecuteMethod("GetTestGroupDetail",
                                                                  new string[] { SystemConfig.UserInfo.SID }).Split('|');
            if (testItemInfo[0] == "0")
            {
                string[] par = new string[] { SystemConfig.Config.Sitecode, SystemConfig.Config.Username, SystemConfig.Config.Password, SystemConfig.UserInfo.UserName };
                //返回登录验证信息:1|SID,0|errorMsg
                string[] loginMsg = WebServiceUtils.ExecuteMethod("Login", par).Split('|');

                if (loginMsg[0] == "0") //登录失败
                {
                    ShowMessageHelper.ShowBoxMsg("登录达安服务器失败" + loginMsg[1].ToString());
                }
                else
                {
                    SystemConfig.UserInfo.SID = loginMsg[1];
                    testItemInfo = WebServiceUtils.ExecuteMethod("GetTestGroupDetail",
                                                                 new string[] { SystemConfig.UserInfo.SID }).Split('|');
                }
            }
            if (testItemInfo[0] == "1")
            {
                cacheGroupTestdetail = XMLHelper.CXmlToDataSet(testItemInfo[1]).Tables[0];
            }
            else
            {
                ShowMessageHelper.ShowBoxMsg("远程连接失败,不能设置!");
                return;
            }
            #endregion

            //弹出设置窗体
            FrmItemHospitalAndDaanSetting2 settingFrm = new FrmItemHospitalAndDaanSetting2(cacheGroupTestdetail);
            settingFrm.StartPosition = FormStartPosition.CenterParent;
            settingFrm.ShowDialog();
            BindData();
        }
Exemplo n.º 5
0
        private void LoginWebservice()
        {
            string strSideCode = config.Sitecode;             //分点代码
            string url         = config.Address;              //调用webservice地址
            string username    = tbxUserName.Text.ToString(); //登录用户名
            string password    = tbxPwd.Text.ToString();      //登录用户密码

            //设置调用webservice登录方法的参数
            string[] par = new string[] { strSideCode, username, password };
            //获取webservice更新
            WebServiceUtils.SetIsUpdate(config.Address);
            //登录验证
            object loginResult = WebServiceUtils.ExecuteMethod("GetUerInfo", par);

            //返回登录验证信息:1|SID,0|errorMsg
            string[] loginMsg = loginResult.ToString().Split('|');

            if (loginMsg[0] == "0") //登录失败
            {
                ShowMessageHelper.ShowBoxMsg(loginMsg[1].ToString());
                return;
            }
            //读取返回的信息
            XmlDocument dc = new XmlDocument();

            dc.LoadXml(loginMsg[1].ToString());
            XmlNode       nodeUserId   = dc.SelectSingleNode(@"UserInfo/UserId");
            XmlNode       nodeUserName = dc.SelectSingleNode(@"UserInfo/UserName");
            XmlNode       nodeSID      = dc.SelectSingleNode(@"UserInfo/SID");
            LoginUserInfo userInfo     = new LoginUserInfo();

            if (nodeUserId != null)
            {
                userInfo.UserId = nodeUserId.InnerText;
            }
            if (nodeUserName != null)
            {
                userInfo.UserName = nodeUserName.InnerText;
            }
            //if (nodeSID != null)
            //{
            //    userInfo.SID = nodeSID.InnerText;
            //}
            //登录webservice获取SID保存
            string[] loginMsg1 = common.UserLogin(config);
            //登录成功 设置SID
            if (loginMsg1[0] == "1")
            {
                userInfo.SID = loginMsg1[1].ToString();
            }
            else
            {
                ShowMessageHelper.ShowBoxMsg("WebService登录失败,错误信息:" + loginMsg[1].ToString() + "\n请检查系统参数配置!");
            }
            userInfo.UserCode = tbxUserName.Text.ToString();
            userInfo.UserType = 0;
            //保存用户信息到SystemConfig类
            SystemConfig.UserInfo = userInfo;
            //登录成功
            bLogin            = true;
            this.DialogResult = DialogResult.OK;
        }
Exemplo n.º 6
0
        /// <summary>
        /// 用戶登錄
        /// </summary>
        private void DoLogin()
        {
            try
            {
                string strCode = tbxUserName.Text.ToString();
                string strPwd  = desEncrypt.getMd5Hash(tbxPwd.Text.ToString());
                //获取用户信息
                DADictuser user = new DADictuser();
                user.Usercode = strCode;
                string strUsercode = user.Usercode;
                user = new DADictuserBLL().GetDADictuserInfoByUserCode(user);
                //获取系统参数
                decimal cid = DefaultConfig.DACONFIGID;
                //转换不成功
                if (!decimal.TryParse(ConfigurationManager.AppSettings["DaConfigID"], out cid))
                {
                    ShowMessageHelper.ShowBoxMsg("请先维护好配置ID!");
                    return;
                }
                config = configBll.SelectyDAConfigInfo(cid);
                if (config == null)
                {
                    ShowMessageHelper.ShowBoxMsg("没有ID为[" + cid + "]的配置记录");
                    return;
                }
                //再次校验用户名
                if (user == null || user.Usercode != strUsercode)
                {
                    ShowMessageHelper.ShowBoxMsg("帐号或密码错误,请重新输入!");
                    return;
                }
                //存在对应用户校验密码跟用户状态
                if (user != null && user.Password == strPwd)
                {
                    //账户已被停用
                    if (user.Isactive.ToString() == "0")
                    {
                        ShowMessageHelper.ShowBoxMsg("该账户已被停用!");
                        return;
                    }
                    else//账户未已被停用
                    {
                        //保存用户信息
                        LoginUserInfo userInfo = new LoginUserInfo();
                        userInfo.UserCode = tbxUserName.Text.ToString();
                        userInfo.UserId   = user.Dictuserid.ToString();
                        userInfo.UserName = user.Username;
                        userInfo.UserType = 1;
                        //登录webservice获取SID保存
                        if (config != null)
                        {
                            string strSideCode = config.Sitecode; //分点代码
                            string strUrl      = config.Address;  //调用webservice地址
                            string username    = config.Username; //登录用户名
                            string password    = config.Password; //登录用户密码

                            //设置调用webservice登录方法的参数
                            string[] par = new string[] { strSideCode, username, password, user.Username };
                            //获取webservice更新
                            WebServiceUtils.SetIsUpdate(config.Address);
                            //登录验证
                            object loginResult = WebServiceUtils.ExecuteMethod("Login", par);

                            //返回登录验证信息:1|SID,0|errorMsg
                            string[] loginMsg = loginResult.ToString().Split('|');
                            //登录成功 设置SID
                            if (loginMsg[0] == "1")
                            {
                                userInfo.SID = loginMsg[1].ToString();
                                ////设置调用webservice获取中心库数据(客户表、项目表、基础字典表)方法的参数
                                //DateTime itemdt = new DATablelastdateBLL().SelectyDATablelastdateInfoByTableName("da_dicttestitem");
                                //DateTime librarydt = new DATablelastdateBLL().SelectyDATablelastdateInfoByTableName("da_dictlibrary");
                                //DateTime customerdt = new DATablelastdateBLL().SelectyDATablelastdateInfoByTableName("da_dictcustomer");
                                //object[] parameters = new object[] { userInfo.SID, itemdt, librarydt, customerdt };
                                //string strXML = WebServiceUtils.Execute(strUrl, "GetCenterTableDate", parameters);
                                //string  reg  =   common.GetCenterTableDate(strXML);
                                //ShowMessageHelper.ShowBoxMsg(reg);
                            }
                            else
                            {
                                ShowMessageHelper.ShowBoxMsg("WebService登录失败,错误信息:" + loginMsg[1].ToString() + "\n请检查系统参数配置!");
                            }
                        }
                        //保存用户信息到SystemConfig类
                        SystemConfig.UserInfo = userInfo;
                        //登录成功
                        bLogin            = true;
                        this.DialogResult = DialogResult.OK;
                    }
                }
                else
                {
                    ShowMessageHelper.ShowBoxMsg("帐号或密码错误,请重新输入!");
                    return;
                }
            }
            catch (Exception ex)
            {
                ShowMessageHelper.ShowBoxMsg("登录的过程中发生了错误,错误信息:" + ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
 /// <summary>
 /// WebService获取结果
 /// </summary>
 /// <param name="SID"></param>
 /// <returns></returns>
 private string[] GetResult(string SID, string RequestCode)
 {
     string[] objQueryResult = new string[] { SID, RequestCode };
     return(WebServiceUtils.ExecuteMethod("QueryResult", objQueryResult).Split('|'));
 }
Exemplo n.º 8
0
        /// <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);
            }
        }
Exemplo n.º 9
0
        /// <summary>
        /// 系统日志处理
        /// </summary>
        private void LogHandle()
        {
            try
            {
                Hashtable lastht = new Hashtable();
                lastht.Add("Tablename", DefaultConfig.ERRORLOG);
                DATablelastdate        lastdate    = new DATablelastdate();
                List <DATablelastdate> lstlastdate = lastdatebll.SelectyDATablelastdateInfo(lastht);
                if (lstlastdate.Count > 0)
                {
                    lastdate = lstlastdate[0];
                }
                //从da_tablelastdate表获取最后上传系统日志时间
                DateTime lastSendTime = new DateTime();//lastdatebll.SelectyDATablelastdateInfoByTableName("ErrorLog");
                if (lastdate != null)
                {
                    lastSendTime = Convert.ToDateTime(lastdate.Lastdate);
                }
                //获取未上传的系统日志,转换为XML文件
                Hashtable ht = new Hashtable();
                ht.Add("Createdate", lastSendTime.ToString());
                List <DAErrorlog> listlog = errorlogbll.SelectDAErrorlogbyDate(ht);
                if (listlog.Count > 0)
                {
                    DataTable dt = new DataTable();
                    dt.TableName = "data_row";
                    dt.Columns.Add("CUSTOMERCODE");
                    dt.Columns.Add("SITECODE");
                    dt.Columns.Add("ERRORLOGID");
                    dt.Columns.Add("USERCODE");
                    dt.Columns.Add("USERNAME");
                    dt.Columns.Add("CREATEDATE");
                    dt.Columns.Add("OPCONTENT");
                    dt.Columns.Add("USERTYPE");
                    dt.Columns.Add("IPADDRESS");
                    dt.Columns.Add("MACHINENAME");

                    foreach (DAErrorlog errorlog in listlog)
                    {
                        DataRow dr = dt.NewRow();
                        dr["CUSTOMERCODE"] = config.Username;
                        dr["SITECODE"]     = config.Sitecode;
                        dr["ERRORLOGID"]   = errorlog.Errorlogid;
                        dr["USERCODE"]     = errorlog.Usercode;
                        dr["USERNAME"]     = errorlog.Username;
                        dr["CREATEDATE"]   = errorlog.Createdate;
                        dr["OPCONTENT"]    = errorlog.Opcontent;
                        dr["USERTYPE"]     = errorlog.Usertype;
                        dr["IPADDRESS"]    = errorlog.Ipaddress;
                        dr["MACHINENAME"]  = errorlog.Machinename;
                        dt.Rows.Add(dr);
                    }
                    string strxml = XMLHelper.CDataToXml(dt);
                    //登录获取的SID
                    //  string[] strlogin = comonbll.UserLogin(config);
                    // if (strlogin[0] == "0") { SetTB("登录失败:" + strlogin[1]); return; }
                    // string SID = strlogin[1];
                    string[] obj = new string[] { SID, config.Username, StringToXML(strxml) };

                    //调用webwervices方法上传系统日志
                    string strQueryResult = WebServiceUtils.ExecuteMethod("SendErrLog", obj);
                    if (strQueryResult.Split('|')[0] == "1")
                    {
                        //更新da_tablelastdate表最后上传系统日志时间
                        if (lastSendTime != DateTime.MinValue)
                        {
                            lastdate.Lastdate = DateTime.Now;
                            lastdatebll.UpdateDATablelastdateInfo(lastdate);
                        }
                        else
                        {
                            DATablelastdate datablelastdate = new DATablelastdate();
                            datablelastdate.Createdate = DateTime.Now;
                            datablelastdate.Lastdate   = DateTime.Now;
                            datablelastdate.Tablename  = DefaultConfig.ERRORLOG;
                            datablelastdate.Remark     = "创建日志表操作信息";
                            lastdatebll.InsertDATablelastdateInfo(datablelastdate);
                        }
                        // SetTB("系统日志传送成功!");
                    }
                    else
                    {
                        // SetTB("系统日志传送失败! " + strQueryResult.Split('|')[1]);
                    }
                }
            }
            catch
            {
                SetTB("系统日志传送出现异常!");
            }
        }
Exemplo n.º 10
0
 /// <summary>
 /// 获取反审核的条码号
 /// </summary>
 /// <param name="LastDate"></param>
 /// <returns></returns>
 private string[] GetExceptionBarcodes(DateTime LastDate)
 {
     string[] objExceptionBarcode = new string[] { SID, LastDate.ToString("G") };
     return(WebServiceUtils.ExecuteMethod("GetExceptionBarcodes", objExceptionBarcode).Split('|'));
 }
        //开始同步
        private void DoSynchro()
        {
            try
            {
                if (SystemConfig.Config != null && SystemConfig.UserInfo != null)
                {
                    string strSideCode = SystemConfig.Config.Sitecode;
                    string strUrl      = SystemConfig.Config.Address;  //调用webservice地址
                    string username    = SystemConfig.Config.Username; //登录用户名
                    string password    = SystemConfig.Config.Password; //登录用户密码
                    string sid         = SystemConfig.UserInfo.SID;
                    //如果SID为空,调用Login方法重新获取SID
                    if (sid == null || sid == string.Empty)
                    {
                        //设置调用webservice登录方法的参数
                        string[] par = new string[] { strSideCode, username, password, SystemConfig.UserInfo.UserName };
                        //返回登录验证信息:1|SID,0|errorMsg
                        string[] loginMsg = WebServiceUtils.ExecuteMethod("Login", par).Split('|');

                        if (loginMsg[0] == "0") //登录失败
                        {
                            //ShowMessageHelper.ShowBoxMsg("同步失败,请检查系统配置!" + loginMsg[1].ToString());
                        }
                        sid = loginMsg[1].ToString();
                        //保存新的SID
                        LoginUserInfo loginuserInfo = new LoginUserInfo();
                        loginuserInfo         = SystemConfig.UserInfo;
                        loginuserInfo.SID     = sid;
                        SystemConfig.UserInfo = loginuserInfo;
                    }
                    //设置SID为调用webservice获取项目方法的参数
                    //返回信息
                    string[] testItemInfo = WebServiceUtils.ExecuteMethod("GetDictTestItem", new string[] { sid }).Split('|');
                    if (testItemInfo.Length == 1)
                    {
                        //ShowMessageHelper.ShowBoxMsg("同步失败,请检查系统配置!" + testItemInfo[1].ToString());
                    }
                    DataSet ds = XMLHelper.CXmlToDataSet(testItemInfo[1].ToString());

                    if (ds == null || ds.Tables.Count <= 0)
                    {
                        //return;
                    }
                    DataTable dtdatarow = ds.Tables["DATA_ROW"];
                    Hashtable ht        = new Hashtable();
                    ht["DATA_ROW"] = dtdatarow;
                    bool result = dicttestitemBll.InsertDADicttestitem(ht);
                    if (result)
                    {
                        isSync = true;
                        //ShowMessageHelper.ShowBoxMsg("数据同步成功!");
                    }
                    else
                    {
                        //ShowMessageHelper.ShowBoxMsg("数据同步失败!");
                    }
                }
                else
                {
                    //ShowMessageHelper.ShowBoxMsg("同步失败,请检查服务端系统参数配置!");
                }
            }
            catch
            {
                //ShowMessageHelper.ShowBoxMsg("同步的过程中发生了异常!");
            }
        }
Exemplo n.º 12
0
        /// <summary>
        /// 发送订单信息
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSend_Click(object sender, EventArgs e)
        {
            try
            {
                #region >>>> zhouy 数据检查
                //当前GridView是否存在数据
                if (dgvReport.Rows.Count == 0)
                {
                    ShowMessageHelper.ShowBoxMsg("没有选择要发送的订单!");
                    return;
                }
                //选择要发送的订单条数
                List <DAOutspecimen> SelectList = (bgSource.DataSource as BindingCollection <DAOutspecimen>).ToList <DAOutspecimen>().FindAll(c => c.IsSelect);
                if (SelectList.Count == 0)
                {
                    ShowMessageHelper.ShowBoxMsg("没有选择要发送的订单!");
                    return;
                }
                if (SystemConfig.Config == null)
                {
                    ShowMessageHelper.ShowBoxMsg("获取系统配置失败,请重新登陆!");
                    return;
                }
                #endregion

                string strM         = ""; //成功条码号
                string errorMessage = ""; //错误信息
                int    num          = 0;  //记录符合发送状态的条码条数
                string bacode       = "";


                //登录失败需要倒回上次一循环,不使用foreach
                for (int m = 0; m < SelectList.Count; m++)
                {
                    DAOutspecimen _outs = SelectList[m];

                    //记录发送失败或不能发送的条码信息
                    if (_outs.Status != "0" && _outs.Status != "2")
                    {
                        bacode += _outs.Requestcode + ","; continue;
                    }

                    #region >>>> zhouy 发送订单
                    num++;
                    Hashtable ht = new Hashtable();
                    ht.Add("Requestcode", _outs.Requestcode);
                    DataTable dt = new DAOutSpecimenBLL().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 (SystemConfig.Config.Model == "1")
                    {
                        dtTest = new DAOutSpecimentestBLL().SelectSendGruopCodeByRequestCode(_outs.Requestcode); //组合
                    }
                    else
                    {
                        dtTest = new DAResultBLL().SelectSendTestCodeByRequestCode(_outs.Requestcode); //明细
                    }

                    foreach (DataRow dr in dtTest.Rows)
                    {
                        //没有达安代码,则对照表没有对应
                        if (dr["datestcode"] == null || dr["datestcode"].ToString() == "")
                        {
                            errorMessage += string.Format("达安条码[{0}]中的医院项目[{1}({2})]未对应好数据,请到项目对照表中对应好\n"
                                                          , _outs.Requestcode, 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(','); //医院项目名称
                    if (daancode.TrimEnd(',') == "")                      //判断达安项目是否为空,也就是是否有对照
                    {
                        ShowMessageHelper.ShowBoxMsg("医院项目代码:" + cuscode.TrimEnd(',') + "没有和达安项目对照!");
                        return;
                    }
                    dt.Rows[0]["NaturalItem"] = daancode.TrimEnd(',');//达安代码

                    #endregion

                    // string str = StringToXML("<NewDataSet><data_row><Outspecimenid>31</Outspecimenid><RequestCode>440590096900</RequestCode><HospSampleid>1307261704</HospSampleid><HospSamplenumber>1307262509</HospSamplenumber><PatientNumber>01158055</PatientNumber><BedNumber /><SamplingDate>2013-07-26T16:33:07+08:00</SamplingDate><PatientName>王钊</PatientName><Sex>M</Sex><Age>7岁</Age><PatientTel /><SectionOffice>儿童保健科</SectionOffice><Doctor>程双喜</Doctor><DoctorTel /><Diagnostication /><Lmp /><Lmpdate /><BabyCount /><UnineVolumn /><Bodystyle /><Weight /><Height /><Bultrasonic /><Pregnant /><Programid>5</Programid><NaturalItem /><NaturalItemDesc>类胰岛素样生长因子测定</NaturalItemDesc><HospItemCode>09589</HospItemCode><Remark /><operateby>100191</operateby><userName>44170340</userName></data_row></NewDataSet>");
                    string[] obj = new string[2] {
                        SystemConfig.UserInfo.SID, StringToXML(DataToXml.ConvertDataTableToXML(dt))
                    };                                                                              // StringToXML(DataToXml.ConvertDataTableToXML(dt))

                    string strQueryResult = WebServiceUtils.ExecuteMethod("SendRequestInfo", obj);  //调用webService
                    //ShowMessageHelper.ShowBoxMsg("接口调试:" + strQueryResult);
                    #region >>>> zhouy  处理发送结果
                    if (strQueryResult.Contains("MSG0006")) //登陆超时
                    {
                        #region >>>> zhouy 登录超时,重新的登录
                        string strSideCode = SystemConfig.Config.Sitecode;
                        string strUrl      = SystemConfig.Config.Address;                                                       //调用webservice地址
                        string username    = SystemConfig.Config.Username == string.Empty ? "无" : SystemConfig.Config.Username; //登录用户名
                        string password    = SystemConfig.Config.Password;                                                      //登录用户密码
                        //设置调用webservice登录方法的参数
                        string[] par = new string[] { strSideCode, username, password, SystemConfig.UserInfo.UserName };
                        //返回登录验证信息:1|SID,0|errorMsg
                        string[] loginMsg = WebServiceUtils.ExecuteMethod("Login", par).Split('|');
                        if (loginMsg[0] == "0") //登录失败
                        {
                            ShowMessageHelper.ShowBoxMsg("登陆失败!" + loginMsg[1].ToString());
                            return;
                        }
                        else if (loginMsg[0] == "1")
                        {
                            SystemConfig.UserInfo.SID = loginMsg[1].ToString();
                            m--;//返回继续发送,不弹出消息 zhouy
                            // ShowMessageHelper.ShowBoxMsg("发送条码[" + _outs.Requestcode + "]超时,请重新发送该条订单!");
                        }
                        #endregion
                    }
                    else if (strQueryResult.Contains("无法连接"))
                    {
                        ShowMessageHelper.ShowBoxMsg("操作连接超时!" + strQueryResult.ToString());
                        return;
                    }
                    //else if (strQueryResult.Contains("未上传任何达安代码!"))
                    //{
                    //    ShowMessageHelper.ShowBoxMsg("项目匹配有误:" + _outs.Requestcode +"条码"+ strQueryResult.ToString());
                    //    return;
                    //}
                    else
                    {
                        #region >>>> zhouy  发送成功记录成功日志,发送失败记录错误日志
                        string[] _messg = strQueryResult.TrimEnd(',').Split('|');
                        //0 为正常发送了
                        if (_messg[3] == "0")
                        {
                            DAOperationlog daoperationlog = new DAOperationlog();
                            daoperationlog.Dictuserid       = SystemConfig.UserInfo.UserId == "" ? 0 : Convert.ToDecimal(SystemConfig.UserInfo.UserId);
                            daoperationlog.Usercode         = SystemConfig.UserInfo.UserCode;
                            daoperationlog.Username         = SystemConfig.UserInfo.UserName;
                            daoperationlog.Usertype         = SystemConfig.UserInfo.UserType.ToString();
                            daoperationlog.Optype           = "订单已发送";
                            daoperationlog.Createdate       = DateTime.Now;
                            daoperationlog.Opcontent        = "发送订单,订单号:" + _messg[0];
                            daoperationlog.Requestcode      = _messg[0]; //达安条码
                            daoperationlog.Hospsampleid     = _messg[1]; //医院条码
                            daoperationlog.Hospsamplenumber = _messg[2]; //医院样本号
                            if (new DAOperationlogBLL().SaveDAOperationlog(daoperationlog) == true)
                            {
                                Hashtable htstatus = new Hashtable();
                                htstatus.Add("Outspecimenid", _outs.Outspecimenid.ToString());
                                htstatus.Add("status", "2");//已发送 修改状态
                                new DAOutSpecimenBLL().UpdateStatus(htstatus);
                            }
                            strM += _messg[0] + ",";  //记录成功的达安条码号
                        }
                        else
                        {
                            errorMessage += string.Format("达安条码[{0}]:{1}\n", _messg[0], _messg[3]);
                            //记录失败的异常信息到日志表中
                            DAErrorlog error = new DAErrorlog();
                            error.Dictuserid     = Convert.ToDecimal(SystemConfig.UserInfo.UserId);
                            error.Createdate     = DateTime.Now;
                            error.LastUpdateDate = DateTime.Now;
                            error.Opcontent      = "订单发送异常信息: " + _messg[0];
                            error.Usercode       = SystemConfig.UserInfo.UserCode;
                            error.Usertype       = SystemConfig.UserInfo.UserType.ToString();
                            error.Username       = SystemConfig.UserInfo.UserName;
                            error.Ipaddress      = common.GetHostIP();   //获取本机IP地址
                            error.Machinename    = common.GetHostName(); //获取本机机器名
                            new DAErrorLogBLL().SaveErrorLog(error);
                        }
                        #endregion
                    }
                    #endregion

                    #endregion
                }
                if (num == 0)  //记录符合发送状态的条码条数
                {
                    ShowMessageHelper.ShowBoxMsg(string.Format("达安条码[{0}]状态为报告已出或部分结果的条码不能发送!", bacode.TrimEnd(',')));
                    return;
                }
                if (bacode.ToString() != "")  //记录不能发送的条码号
                {
                    ShowMessageHelper.ShowBoxMsg(string.Format("达安条码[{0}]状态为报告已出或部分结果的条码不能发送!", bacode.TrimEnd(',')));
                }
                if (errorMessage != "")  //错误信息反馈
                {
                    ShowMessageHelper.ShowBoxMsg(errorMessage);
                }
                if (strM != "")
                {
                    ShowMessageHelper.ShowBoxMsg(string.Format("达安条码[{0}] 发送成功!", strM.TrimEnd(',')));
                    HeaderCheckBox.Checked = false;
                    DataBind();
                }
            }
            catch (Exception ex)
            {
                ShowMessageHelper.ShowBoxMsg(ex.Message);
            }
        }