예제 #1
0
        //导入
        protected void btnImport_Click(object sender, EventArgs e)
        {
            if (DropDictLab.SelectedValue == null)
            {
                MessageBoxShow("请先选择分点!"); return;
            }
            if (DropCustomer.SelectedIndex == 0)
            {
                MessageBoxShow("请先选择单位!"); return;
            }
            if (dpProvince.SelectedValue == "-1" || dpCity.SelectedValue == "-1")
            {
                MessageBoxShow("请选择省、市"); return;
            }
            string fileType = fileExcel.PostedFile.ContentType;

            if (fileType != "application/octet-stream" && fileType != "application/vnd.ms-excel" && fileType != "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" && fileType != "application/kset")
            {
                MessageBoxShow("请上传指定格式的Excel文件"); return;
            }
            if (ck1.Checked)
            {
                if (string.IsNullOrEmpty(txtAddress.Text.Trim()) || string.IsNullOrEmpty(txtRecName.Text.Trim()) || string.IsNullOrEmpty(txtTelphone.Text.Trim()))
                {
                    MessageBoxShow("邮寄地址、收件人、联系电话不能为空"); return;
                }
            }
            string fileName = fileExcel.ShortFileName;

            fileName = fileName.Replace(":", "_").Replace(" ", "_").Replace("\\", "_").Replace("/", "_");
            fileName = String.Format("{0}_{1}", DateTime.Now.Ticks, fileName);

            string savePath = Server.MapPath("~/upload/ExcelFiles/" + fileName);

            if (fileExcel.HasFile)
            {
                if (!Directory.Exists(Server.MapPath("~/upload/ExcelFiles")))
                {
                    Directory.CreateDirectory(Server.MapPath("~/upload/ExcelFiles"));
                }
                try { fileExcel.SaveAs(savePath); }
                catch (Exception ex) { MessageBoxShow("上传错误:" + ex.Message); return; }
            }
            DataTable dt;

            try
            {
                dt = RenderDataTableFromExcel(savePath);
                if (dt == null || dt.Rows.Count == 0)
                {
                    MessageBoxShow("上传的文件数据不能为空!"); return;
                }
                //验证上传的excel是否符合模板标准,否则不让上传订单并删除上传的文件
                string str = CheckDate(dt, fileName);
                if (!string.IsNullOrEmpty(str))
                {
                    MessageBoxShow(str);
                    File.Delete(savePath);//删除文件
                    return;
                }
            }
            catch (Exception ex) { MessageBoxShow("请上传指定格式的Excel文件!\r\n提示信息:" + ex.Message); return; }

            List <Dicttestitem>      TestItemList  = loginservice.GetLoginDicttestitemList();  //项目字典表
            List <Dictproductdetail> ProductDetail = loginservice.GetLoginDictproductdetail(); //套餐组合字典

            //查询分点+公用套餐
            List <Dicttestitem> productlistTemp = new DicttestitemService().GetProduct(TypeParse.StrToDouble(DropCustomer.SelectedValue, 0));

            string _productname = string.Empty;

            #region 读取excel数据并上传订单
            try
            {
                for (int i = (dt.Rows.Count - 1); i >= 0; i--)
                {
                    bool    b      = false;//添加是否成功
                    string  errstr = "";
                    DataRow dr     = dt.Rows[i];

                    string productTestCode = dr["套餐代码"].ToString().Replace('_', ' ').Trim();
                    string sex             = dr["性别"].ToString().Replace('_', ' ').Trim() == "女" ? "F" : (dr["性别"].ToString().Replace('_', ' ').Trim() == "男" ? "M" : "U");

                    List <Dicttestitem> productList   = productlistTemp.Where <Dicttestitem>(c => c.Testcode == productTestCode && (c.Forsex == sex || c.Forsex == "B")).ToList <Dicttestitem>();
                    List <Dicttestitem> grouptestList = new List <Dicttestitem>();
                    Dicttestitem        productinfo   = null;
                    if (productList.Count == 0)
                    {
                        errstr = String.Format("套餐代码[{0}]无匹配项,请查看性别是否匹配或者是否有该套餐。", productTestCode);
                        SetTableValue(false, errstr, dr);
                        continue;
                    }
                    else if (productList.Count > 1)
                    {
                        errstr = String.Format("存在多个套餐代码为[{0}]的套餐", productTestCode);
                        SetTableValue(false, errstr, dr);
                        continue;
                    }
                    else
                    {
                        productinfo = productList.First <Dicttestitem>();

                        List <OrderRegister> _gridtestList = null;
                        string msg = registerservice.AddProduct(ref _gridtestList, sex, productinfo.Dicttestitemid, false, Userinfo, ref _productname, null);
                        if (msg != string.Empty)
                        {
                            //错误
                            SetTableValue(false, msg, dr);
                            continue;
                        }

                        string barcode = dr["条码号"].ToString().Replace('_', ' ').Trim();

                        if (barcode != string.Empty && barcode.Length != 12)
                        {
                            errstr = string.Format("条码号[{0}]必须为12位数字,可以为空!", barcode);
                            SetTableValue(false, errstr, dr);
                            continue;
                        }

                        if (barcode != string.Empty && barcode.Substring(barcode.Length - 2) != "00")
                        {
                            errstr = string.Format("条码号[{0}]必须以00结尾!", barcode);
                            SetTableValue(false, errstr, dr);
                            continue;
                        }
                        if (barcodeservice.CheckBarCode(barcode))//条码号存在
                        {
                            errstr = string.Format("此条码号[{0}]已在本系统内生成,请更改条码号!", barcode);
                            SetTableValue(false, errstr, dr);
                            continue;
                        }

                        //套餐下组合项目
                        IEnumerable <Dictproductdetail> IEgroup = ProductDetail.Where <Dictproductdetail>(c => c.Productid == productinfo.Dicttestitemid);

                        bool iscontinue = true;
                        foreach (Dictproductdetail item in IEgroup)
                        {
                            IEnumerable <Dicttestitem> IEgruptest = TestItemList.Where <Dicttestitem>(c => c.Dicttestitemid == item.Testgroupid);
                            if (IEgruptest.Count() <= 0)
                            {
                                errstr = string.Format("没有找到套餐[{0}]下ID为[{1}]的组合!", _productname, item.Testgroupid);
                                SetTableValue(false, errstr, dr);
                                continue;
                            }

                            Dicttestitem groupinfo = IEgruptest.First <Dicttestitem>();

                            //校验性别是否符合
                            string str = registerservice.checkSex(groupinfo.Dicttestitemid, sex);
                            if (str != string.Empty)
                            {
                                SetTableValue(false, str, dr);
                                iscontinue = false;
                                break;
                            }

                            groupinfo.Productid   = productinfo.Dicttestitemid;
                            groupinfo.Productname = productinfo.Testname; ///套餐名
                            groupinfo.IsActive    = "1";                  //是否停止测试
                            groupinfo.Isadd       = "0";                  ///是否追加
                            groupinfo.Billed      = "0";
                            groupinfo.Sendbilled  = "0";
                            groupinfo.Adduserid   = null;//追加人ID


                            if (barcode == string.Empty)
                            {
                                IEnumerable <Dicttestitem> IEtempbarcodeList = grouptestList.Where <Dicttestitem>(c => c.Tubegroup == groupinfo.Tubegroup);
                                if (IEtempbarcodeList.Count() > 0)
                                {
                                    groupinfo.Barcode = IEtempbarcodeList.First <Dicttestitem>().Barcode;
                                }
                                else
                                {
                                    groupinfo.Barcode = registerservice.GetBarCode();
                                }
                            }
                            else
                            {
                                groupinfo.Barcode = barcode;
                            }


                            //获取外包客户
                            Dictproductdetail detail = ProductDetail.Where <Dictproductdetail>(c => c.Productid == productinfo.Dicttestitemid && c.Testgroupid == groupinfo.Dicttestitemid).First <Dictproductdetail>();
                            groupinfo.Sendoutcustomerid = detail.Sendoutcustomerid;

                            grouptestList.Add(groupinfo);
                        }

                        if (!iscontinue)
                        {
                            continue;
                        }
                    }

                    #region >>>> zhouy 不存在此会员添加会员
                    string     realname = dr["姓名"].ToString().Trim();
                    Dictmember member   = new Dictmember()
                    {
                        Realname = realname
                    };

                    string idnumber = dr["身份证"].ToString().Trim();

                    member.Idnumber = idnumber;
                    //检查会员
                    errstr = registerservice.checkmember(null, ref member);
                    if (errstr != string.Empty)
                    {
                        SetTableValue(false, errstr, dr);
                        continue;
                    }

                    //List<Dictmember> memberList = memberservice.GetDictmemberList(member);
                    //if (memberList.Count == 1)//存在此会员记录且只有一条
                    //{
                    //    member = memberList[0];
                    //    member.isAdd = false;//标识是否添加
                    //}
                    //else
                    //{
                    //    member.Dictmemberid = loginservice.getSeqID("SEQ_DICTMEMBER");
                    //    member.Islock = "F";//是否锁定
                    //    member.isAdd = true;
                    //}
                    member.Nickname = member.Realname;
                    member.Sex      = sex;
                    DateTime datebirthday;
                    bool     dateb = DateTime.TryParse(dr["出生日期"].ToString(), out datebirthday);
                    if (dateb)
                    {
                        member.Birthday = datebirthday;
                    }
                    member.Addres = dr["住址"].ToString().Trim();
                    member.Phone  = dr["电话"].ToString().Trim();

                    if (!string.IsNullOrWhiteSpace(dr["手机"].ToString().Trim()))
                    {
                        double a;
                        bool   mobileb = double.TryParse(dr["手机"].ToString().Trim(), out a);
                        if (!mobileb)
                        {
                            SetTableValue(false, "手机号码填写不正确,不要有特殊字符,[-]也不能包含", dr);
                            continue;
                        }
                    }
                    member.Mobile = dr["手机"].ToString().Trim();
                    member.Email  = dr["邮箱"].ToString().Trim();
                    #endregion


                    double year = 0, month = 0, day = 0;
                    double hours  = 0;//小时
                    double age    = 0;
                    string agestr = dr["年龄"].ToString().Replace('_', ' ').Trim();
                    bool   ageb   = double.TryParse(agestr, out age);

                    if (member.Birthday == null)
                    {
                        if (agestr != string.Empty && ageb)
                        {
                            year            = age;
                            day             = age * 365;
                            member.Birthday = datebirthday = DateTime.Now.AddDays((0 - day));
                        }
                        else
                        {
                            SetTableValue(false, "生日和年龄必须填写一项或者两项均填写错误", dr);
                            continue;
                        }
                    }
                    TimeSpan ts = DateTime.Now - Convert.ToDateTime(member.Birthday);//时间差
                    year  = Math.Truncate((double)(ts.Days / 365));
                    month = (ts.Days % 365) / 30;
                    day   = (ts.Days % 365) % 30;
                    hours = ts.TotalHours;


                    Orders _orders = new Orders();
                    _orders.Ordernum       = new ProRegisterService().GetOrderNum();;                //体检流水号
                    _orders.Remarks        = dr["备注"].ToString().Trim();                             //备注
                    _orders.Dictmemberid   = member.Dictmemberid;                                    //会员ID
                    _orders.Dictcustomerid = Convert.ToDouble(DropCustomer.SelectedValue);           //所属客户ID 界面选择
                    _orders.Realname       = member.Realname;
                    _orders.Sex            = member.Sex;                                             //性别 对应INITBASIC表
                    _orders.Caculatedage   = hours;                                                  //计算后的年龄(小时为单位)
                    _orders.Age            = string.Format("{0}岁{1}月{2}日{3}时", year, month, day, 0); //年龄字符串拼接 岁月日时
                    _orders.Enterby        = Userinfo.userName;                                      //录入人
                    _orders.Ordertestlst   = _productname + ",";                                     //项目清单(冗余字段)
                    _orders.Dictlabid      = Convert.ToDouble(DropDictLab.SelectedValue);            //实验室分点
                    _orders.Ordersource    = "1";                                                    //单位上传 全是单位来源
                    _orders.Ismarried      = dr["婚否"].ToString() == "未婚" ? "0" : (dr["婚否"].ToString() == "已婚" ? "1" : "2");
                    _orders.Section        = dr["部门"].ToString().Trim();
                    _orders.Status         = ((int)ParamStatus.OrdersStatus.BarCodePrint).ToString();
                    DateTime samplingdate;
                    bool     s = DateTime.TryParse(dr["采样日期"].ToString(), out samplingdate);
                    if (s)
                    {
                        TimeSpan timespan = DateTime.Now - samplingdate;
                        if (Math.Abs(timespan.Days) > 30)
                        {
                            SetTableValue(false, "采样时间与当前时间相差不能超过一个月", dr);
                            continue;
                        }
                        _orders.SamplingDate = samplingdate;
                    }

                    _orders.Province = dpProvince.SelectedValue == "-1" ? "" : dpProvince.SelectedText;
                    _orders.City     = dpCity.SelectedValue == "-1" ? "" : dpCity.SelectedText;
                    _orders.County   = dpCounty.SelectedValue == "-1" ? "" : dpCounty.SelectedText;

                    if (ck1.Checked)
                    {
                        _orders.PostAddress   = Regex.Replace(txtAddress.Text, @"\s", "");
                        _orders.ContactNumber = Regex.Replace(txtTelphone.Text, @"\s", "");
                        _orders.Recipient     = Regex.Replace(txtRecName.Text, @"\s", "");
                    }
                    else
                    {
                        _orders.PostAddress   = dr["住址"].ToString().Trim();
                        _orders.Recipient     = realname;
                        _orders.ContactNumber = dr["手机"].ToString().Trim();
                    }
                    //add 20160421 增加营业区、场次号
                    _orders.Area        = dr["营业区"].ToString().Replace('_', ' ').Trim();
                    _orders.BatchNumber = dr["场次号"].ToString().Replace('_', ' ').Trim();

                    //add 20160530 增加客户经理字段
                    if (dt.Columns.Contains("客户经理"))
                    {
                        _orders.AccountManager = dr["客户经理"].ToString().Replace('_', ' ').Trim();
                    }
                    //add 20160612 增加本批标本总数字段
                    if (dt.Columns.Contains("本批标本总数"))
                    {
                        _orders.SpecimenCount = dr["本批标本总数"].ToString().Replace('_', ' ').Trim();
                    }
                    b = registerservice.insertUpdateOrders("单位批量上传", "", true, productList, grouptestList, member, _orders, "", ref errstr);

                    SetTableValue(b, errstr, dr);
                }
                GridUpload.DataSource = dt;
                GridUpload.DataBind();
            }
            catch (Exception ee)
            {
                string str = string.Format("导入失败,异常信息:{0}【Excel格式请严格参照导入模版说明】\n\n导入过程中如有疑问,请将异常信息截图后发与系统管理员。", ee.Message);
                MessageBoxShow(str);
            }
            #endregion
        }
예제 #2
0
        private bool AutoUploadFile(DataTable dt, DataRow headerDr)
        {
            double?Orderfileheaderid = Convert.ToDouble(headerDr["Orderfileheaderid"]);
            double?enterby           = Convert.ToDouble(headerDr["enterby"]);
            double?dictcustormer     = Convert.ToDouble(headerDr["dictcustormer"]);
            double?dictlabid         = Convert.ToDouble(headerDr["dictlabid"]);
            string province          = headerDr["province"].ToString();
            string city          = headerDr["city"].ToString();
            string county        = headerDr["county"].ToString();
            bool   isunifiedpost = false;

            if (headerDr["isunifiedpost"].ToString() == "1")
            {
                isunifiedpost = true;
            }
            string postaddress   = headerDr["postaddress"].ToString();
            string recipient     = headerDr["recipient"].ToString();
            string contactnumber = headerDr["contactnumber"].ToString();

            DictuserService userService = new DictuserService();
            string          username    = userService.GetDictuserInfoAuto(enterby).Username;
            Orderfiledetail filedetail  = new Orderfiledetail();
            Orderfileheader fileheader  = new Orderfileheader()
            {
                Orderfileheaderid = Orderfileheaderid, Status = 1
            };

            //bool isCacheData = true;
            //string conTestCode = ConfigurationManager.AppSettings["NoCacheTestCode"];
            //List<Dicttestitem> TestItemList = loginservice.GetLoginDicttestitemListNoCache();//项目字典表
            List <Dictproductdetail> ProductDetail   = loginservice.GetLoginDictproductdetailNoCache();                               //套餐组合字典
            List <Dicttestitem>      productlistTemp = new DicttestitemService().GetProduct(TypeParse.StrToDouble(dictcustormer, 0)); //查询分点+公用套餐
            string _productname = string.Empty;

            for (int i = (dt.Rows.Count - 1); i >= 0; i--)
            {
                bool    b      = false;//添加是否成功
                string  errstr = "";
                DataRow dr     = dt.Rows[i];

                string productTestCode = dr["套餐代码"].ToString().Replace('_', ' ').Trim();
                string detailbarcode   = string.Empty;
                try
                {
                    detailbarcode = dr["条码号"].ToString().Replace('_', ' ').Trim();
                    if (detailbarcode != string.Empty)
                    {
                        Convert.ToDouble(detailbarcode);
                    }
                }
                catch (Exception) { }
                string mobile   = dr["手机"].ToString().Trim();
                string idnumber = dr["身份证"].ToString().Trim();
                string realname = dr["姓名"].ToString().Trim();
                if (string.IsNullOrEmpty(realname) || string.IsNullOrEmpty(productTestCode))
                {
                    filedetail.Reason            = "姓名、套餐代码不可以为空!";
                    filedetail.Status            = 0;
                    filedetail.Barcode           = detailbarcode;
                    filedetail.Orderfileheaderid = Orderfileheaderid;
                    filedetail.Createdate        = DateTime.Now;
                    filedetail.Realname          = realname;
                    filedetail.Mobile            = mobile;
                    filedetail.Idnumber          = idnumber;
                    detailservice.InsertOrderfiledetail(filedetail);
                    continue;
                }

                #region 条码号检查
                if (detailbarcode != string.Empty && detailbarcode.Length != 12)//条码号非12位
                {
                    filedetail.Reason            = string.Format("条码号[{0}]必须为12位数字,可以为空!", detailbarcode);
                    filedetail.Status            = 0;
                    filedetail.Barcode           = detailbarcode;
                    filedetail.Orderfileheaderid = Orderfileheaderid;
                    filedetail.Createdate        = DateTime.Now;
                    filedetail.Realname          = realname;
                    filedetail.Mobile            = mobile;
                    filedetail.Idnumber          = idnumber;
                    detailservice.InsertOrderfiledetail(filedetail);
                    continue;
                }
                if (detailbarcode != string.Empty && detailbarcode.Substring(detailbarcode.Length - 2) != "00")//条码号不以00结尾
                {
                    filedetail.Reason            = string.Format("此条码号[{0}]不是以00结尾,请更改条码号!", detailbarcode);
                    filedetail.Status            = 0;
                    filedetail.Barcode           = detailbarcode;
                    filedetail.Orderfileheaderid = Orderfileheaderid;
                    filedetail.Createdate        = DateTime.Now;
                    filedetail.Realname          = realname;
                    filedetail.Mobile            = mobile;
                    filedetail.Idnumber          = idnumber;
                    detailservice.InsertOrderfiledetail(filedetail);
                    continue;
                }
                if (barcodeservice.CheckBarCode(detailbarcode))//条码号存在
                {
                    filedetail.Reason            = string.Format("此条码号[{0}]已在本系统内生成,请更改条码号!", detailbarcode);
                    filedetail.Status            = 0;
                    filedetail.Barcode           = detailbarcode;
                    filedetail.Orderfileheaderid = Orderfileheaderid;
                    filedetail.Createdate        = DateTime.Now;
                    filedetail.Realname          = realname;
                    filedetail.Mobile            = mobile;
                    filedetail.Idnumber          = idnumber;
                    detailservice.InsertOrderfiledetail(filedetail);
                    continue;
                }
                #endregion

                string sex = "U";
                if (dr["性别"] != DBNull.Value && !string.IsNullOrEmpty(dr["性别"].ToString()))
                {
                    //if (dr["性别"].ToString() == "女")
                    //    sex = "F";
                    //else if (dr["性别"].ToString() == "男")
                    //    sex = "M";
                    sex = dr["性别"].ToString().Replace('_', ' ').Trim() == "女" ? "F" : (dr["性别"].ToString().Replace('_', ' ').Trim() == "男" ? "M" : "U");
                }

                List <Dicttestitem> productList   = productlistTemp.Where <Dicttestitem>(c => c.Testcode == productTestCode && (c.Forsex.ToUpper() == sex.ToUpper() || c.Forsex.ToUpper() == "B")).ToList <Dicttestitem>();
                List <Dicttestitem> grouptestList = new List <Dicttestitem>();
                Dicttestitem        productinfo   = null;
                if (productList.Count == 0)
                {
                    filedetail.Reason            = String.Format("套餐代码[{0}]无匹配项,请查看性别是否匹配或者是否有该套餐。", productTestCode);
                    filedetail.Status            = 0;
                    filedetail.Barcode           = detailbarcode;
                    filedetail.Orderfileheaderid = Orderfileheaderid;
                    filedetail.Createdate        = DateTime.Now;
                    filedetail.Realname          = realname;
                    filedetail.Mobile            = mobile;
                    filedetail.Idnumber          = idnumber;
                    detailservice.InsertOrderfiledetail(filedetail);
                    continue;
                }
                else if (productList.Count > 1)
                {
                    filedetail.Reason            = String.Format("存在多个套餐代码为[{0}]的套餐", productTestCode);
                    filedetail.Status            = 0;
                    filedetail.Barcode           = detailbarcode;
                    filedetail.Orderfileheaderid = Orderfileheaderid;
                    filedetail.Createdate        = DateTime.Now;
                    filedetail.Realname          = realname;
                    filedetail.Mobile            = mobile;
                    filedetail.Idnumber          = idnumber;
                    detailservice.InsertOrderfiledetail(filedetail);
                    continue;
                }
                else
                {
                    productinfo = productList[0];
                    if (productinfo.Testtype == "2")//公用套餐
                    {
                        _productname = productinfo.Testname.ToString().Replace("(公用套餐)", "");
                    }
                    else
                    {
                        _productname = productinfo.Testname;
                    }

                    //检验套餐中项目组合信息(性别是否相符;是否重复添加项目组合;项目是否维护分管原则、科室和标本类型)
                    string msg = registerservice.AddProductAuto(sex, productinfo, detailbarcode);
                    if (msg != string.Empty)
                    {
                        filedetail.Reason            = msg;
                        filedetail.Status            = 0;
                        filedetail.Barcode           = detailbarcode;
                        filedetail.Orderfileheaderid = Orderfileheaderid;
                        filedetail.Createdate        = DateTime.Now;
                        filedetail.Realname          = realname;
                        filedetail.Mobile            = mobile;
                        filedetail.Idnumber          = idnumber;
                        detailservice.InsertOrderfiledetail(filedetail);
                        continue;
                    }

                    //套餐下组合项目
                    IEnumerable <Dictproductdetail> IEgroup = ProductDetail.Where <Dictproductdetail>(c => c.Productid == productinfo.Dicttestitemid);

                    bool   iscontinue = true;
                    string msgdetail  = string.Empty;
                    foreach (Dictproductdetail item in IEgroup)
                    {
                        Dicttestitem groupinfo = registerservice.SelectDicttestitemByDicttestitemid(item.Testgroupid);
                        if (groupinfo == null)
                        {
                            msgdetail += string.Format("没有找到套餐[{0}]下ID为[{1}]的{2}[{3}]!", _productname, item.Testgroupid, groupinfo.Testtype == "0" ? "单项" : "组合", groupinfo.Testname) + ";";
                            iscontinue = false;
                            continue;
                        }
                        groupinfo.Productid   = productinfo.Dicttestitemid;
                        groupinfo.Productname = productinfo.Testname; ///套餐名
                        groupinfo.IsActive    = "1";                  //是否停止测试
                        groupinfo.Isadd       = "0";                  ///是否追加
                        groupinfo.Billed      = "0";
                        groupinfo.Sendbilled  = "0";
                        groupinfo.Adduserid   = null;//追加人ID

                        if (detailbarcode == string.Empty)
                        {
                            IEnumerable <Dicttestitem> IEtempbarcodeList = grouptestList.Where <Dicttestitem>(c => c.Tubegroup == groupinfo.Tubegroup);
                            if (IEtempbarcodeList.Count() > 0)
                            {
                                groupinfo.Barcode = IEtempbarcodeList.First <Dicttestitem>().Barcode;
                            }
                            else
                            {
                                groupinfo.Barcode = registerservice.GetBarCode();
                            }
                        }
                        else
                        {
                            groupinfo.Barcode = detailbarcode;
                        }
                        //获取外包客户
                        Dictproductdetail detail = ProductDetail.Where <Dictproductdetail>(c => c.Productid == productinfo.Dicttestitemid && c.Testgroupid == groupinfo.Dicttestitemid).First <Dictproductdetail>();
                        groupinfo.Sendoutcustomerid = detail.Sendoutcustomerid;
                        grouptestList.Add(groupinfo);
                    }
                    if (!iscontinue)
                    {
                        if (!string.IsNullOrEmpty(msgdetail))
                        {
                            filedetail.Reason            = msgdetail;
                            filedetail.Status            = 0;
                            filedetail.Barcode           = detailbarcode;
                            filedetail.Orderfileheaderid = Orderfileheaderid;
                            filedetail.Createdate        = DateTime.Now;
                            filedetail.Realname          = realname;
                            filedetail.Mobile            = mobile;
                            filedetail.Idnumber          = idnumber;
                            detailservice.InsertOrderfiledetail(filedetail);
                        }
                        continue;
                    }
                }

                #region >>>>  不存在此会员添加会员

                Dictmember member = new Dictmember()
                {
                    Realname = realname, Idnumber = idnumber
                };
                //检查会员
                errstr = registerservice.checkmember(null, ref member);
                if (errstr != string.Empty)
                {
                    filedetail.Reason            = errstr;
                    filedetail.Status            = 0;
                    filedetail.Barcode           = detailbarcode;
                    filedetail.Orderfileheaderid = Orderfileheaderid;
                    filedetail.Createdate        = DateTime.Now;
                    filedetail.Realname          = realname;
                    filedetail.Mobile            = mobile;
                    filedetail.Idnumber          = idnumber;
                    detailservice.InsertOrderfiledetail(filedetail);
                    continue;
                }
                member.Nickname = member.Realname;
                member.Sex      = sex;
                DateTime datebirthday;
                bool     dateb = DateTime.TryParse(dr["出生日期"].ToString(), out datebirthday);
                if (dateb)
                {
                    member.Birthday = datebirthday;
                }
                member.Addres = dr["住址"].ToString().Trim();
                member.Phone  = dr["电话"].ToString().Trim();

                if (!string.IsNullOrWhiteSpace(dr["手机"].ToString().Trim()))
                {
                    double a;
                    bool   mobileb = double.TryParse(dr["手机"].ToString().Trim(), out a);
                    if (!mobileb)
                    {
                        filedetail.Reason            = "手机号码填写不正确,不要有特殊字符,[-]也不能包含";
                        filedetail.Barcode           = detailbarcode;
                        filedetail.Status            = 0;
                        filedetail.Orderfileheaderid = Orderfileheaderid;
                        filedetail.Createdate        = DateTime.Now;
                        filedetail.Realname          = realname;
                        filedetail.Mobile            = mobile;
                        filedetail.Idnumber          = idnumber;
                        detailservice.InsertOrderfiledetail(filedetail);
                        continue;
                    }
                }
                member.Mobile = dr["手机"].ToString().Trim();
                member.Email  = dr["邮箱"].ToString().Trim();
                #endregion

                #region >>>>  insert Orders

                double year = 0, month = 0, day = 0;
                double hours    = 0;//小时
                double age      = 0;
                string agestr   = dr["年龄"].ToString().Replace('_', ' ').Trim();
                string ageFiled = string.Empty;
                bool   ageb     = double.TryParse(agestr, out age);
                if (member.Birthday == null)
                {
                    if (agestr != string.Empty && ageb)
                    {
                        year            = age;
                        day             = age * 365;
                        member.Birthday = datebirthday = DateTime.Now.AddDays((0 - day));
                    }
                    else
                    {
                        filedetail.Reason            = "生日和年龄必须填写一项或者两项均填写错误";
                        filedetail.Barcode           = detailbarcode;
                        filedetail.Status            = 0;
                        filedetail.Orderfileheaderid = Orderfileheaderid;
                        filedetail.Createdate        = DateTime.Now;
                        filedetail.Realname          = realname;
                        filedetail.Mobile            = mobile;
                        filedetail.Idnumber          = idnumber;
                        detailservice.InsertOrderfiledetail(filedetail);
                        continue;
                    }
                }
                TimeSpan ts = DateTime.Now - Convert.ToDateTime(member.Birthday);//时间差
                year     = Math.Truncate((double)(ts.Days / 365));
                month    = (ts.Days % 365) / 30;
                day      = (ts.Days % 365) % 30;
                hours    = ts.TotalHours;
                ageFiled = string.Format("{0}岁{1}月{2}日{3}时", year, month, day, 0);; //年龄字符串拼接 岁月日时

                Orders _orders = new Orders();
                _orders.Ordernum       = new ProRegisterService().GetOrderNum();; //体检流水号
                _orders.Remarks        = dr["备注"].ToString().Trim();              //备注
                _orders.Dictmemberid   = member.Dictmemberid;                     //会员ID
                _orders.Dictcustomerid = dictcustormer;                           //所属客户ID 界面选择
                _orders.Realname       = member.Realname;
                _orders.Sex            = member.Sex;                              //性别 对应INITBASIC表
                _orders.Caculatedage   = hours;                                   //计算后的年龄(小时为单位)
                _orders.Age            = ageFiled;
                _orders.Enterby        = username;                                //录入人
                _orders.Ordertestlst   = _productname + ",";                      //项目清单(冗余字段)
                _orders.Dictlabid      = dictlabid;                               //实验室分点
                _orders.Ordersource    = "1";                                     //单位上传 全是单位来源
                _orders.Ismarried      = dr["婚否"].ToString() == "未婚" ? "0" : (dr["婚否"].ToString() == "已婚" ? "1" : "2");
                _orders.Section        = dr["部门"].ToString().Trim();
                _orders.Status         = ((int)ParamStatus.OrdersStatus.BarCodePrint).ToString();
                DateTime samplingdate;
                bool     s = DateTime.TryParse(dr["采样日期"].ToString(), out samplingdate);
                if (s)
                {
                    TimeSpan timespan = DateTime.Now - samplingdate;
                    if (Math.Abs(timespan.Days) > 30)
                    {
                        filedetail.Reason            = "采样时间与当前时间相差不能超过一个月";
                        filedetail.Barcode           = detailbarcode;
                        filedetail.Status            = 0;
                        filedetail.Orderfileheaderid = Orderfileheaderid;
                        filedetail.Createdate        = DateTime.Now;
                        filedetail.Realname          = realname;
                        filedetail.Mobile            = mobile;
                        filedetail.Idnumber          = idnumber;
                        detailservice.InsertOrderfiledetail(filedetail);
                        continue;
                    }
                    _orders.SamplingDate = samplingdate;
                }

                _orders.Province = province;
                _orders.City     = city;
                _orders.County   = county;
                if (isunifiedpost)
                {
                    _orders.PostAddress   = postaddress;
                    _orders.Recipient     = recipient;
                    _orders.ContactNumber = contactnumber;
                }
                else
                {
                    _orders.PostAddress   = dr["住址"].ToString().Trim();
                    _orders.Recipient     = realname;
                    _orders.ContactNumber = dr["手机"].ToString().Trim();
                }

                _orders.Area        = dr["营业区"].ToString().Replace('_', ' ').Trim();
                _orders.BatchNumber = dr["场次号"].ToString().Replace('_', ' ').Trim();
                //add 20160530 增加客户经理字段
                if (dt.Columns.Contains("客户经理"))
                {
                    _orders.AccountManager = dr["客户经理"].ToString().Replace('_', ' ').Trim();
                }
                //add 20160612 增加本批标本总数字段
                if (dt.Columns.Contains("本批标本总数"))
                {
                    _orders.SpecimenCount = dr["本批标本总数"].ToString().Replace('_', ' ').Trim();
                }
                #endregion

                System.Collections.Hashtable htScan = new System.Collections.Hashtable();
                htScan.Add("isScan", true);
                htScan.Add("EnterByID", enterby);
                htScan.Add("EnterBy", username);
                b = registerservice.insertUpdateOrdersAuto("单位批量上传", "", true, productList, grouptestList, member, _orders, "", ref errstr, htScan);
                if (b)
                {
                    filedetail.Barcode           = detailbarcode;
                    filedetail.Reason            = "";
                    filedetail.Status            = 1;
                    filedetail.Orderfileheaderid = Orderfileheaderid;
                    filedetail.Createdate        = DateTime.Now;
                    filedetail.Realname          = realname;
                    filedetail.Mobile            = mobile;
                    filedetail.Idnumber          = idnumber;
                    detailservice.InsertOrderfiledetail(filedetail);
                }
                else
                {
                    filedetail.Barcode           = detailbarcode;
                    filedetail.Reason            = errstr + " 【Excel格式参照导入模版说明】";
                    filedetail.Status            = 0;
                    filedetail.Orderfileheaderid = Orderfileheaderid;
                    filedetail.Createdate        = DateTime.Now;
                    filedetail.Realname          = realname;
                    filedetail.Mobile            = mobile;
                    filedetail.Idnumber          = idnumber;
                    detailservice.InsertOrderfiledetail(filedetail);
                }
            }
            return(headerservice.UpdateOrderfileheader(fileheader));
        }
예제 #3
0
        /// <summary>
        /// 接收数据
        /// </summary>
        /// <param name="SID"></param>
        /// <param name="XML"></param>
        /// <returns></returns>
        public static string ReceiveXMLData(string SID, string xmlStr)
        {
            xmlStr = xmlStr.TrimStart('');
//            if (xmlStr == string.Empty)
//            {
//                xmlStr = @"
//                        &lt;data&gt;&lt;datarow&gt;
//                        &lt;uniquecode &gt;TY0008&lt;/uniquecode &gt;
//                        &lt;dictcustomerid&gt;1396&lt;/dictcustomerid&gt;
//                        &lt;barcode&gt;380003772900&lt;/barcode&gt;
//                        &lt;realname&gt;马昌武3&lt;/realname&gt;
//                        &lt;sex&gt;男&lt;/sex&gt;
//                        &lt;birthday&gt;&lt;/birthday&gt;
//                        &lt;age&gt;41&lt;/age&gt;
//                        &lt;ismarried&gt;未知&lt;/ismarried&gt;
//                        &lt;mobile&gt;13096786113&lt;/mobile&gt;
//                        &lt;idnumber&gt;&lt;/idnumber&gt;
//                        &lt;address&gt;地址&lt;/address&gt;
//                        &lt;section&gt;遵义&lt;/section&gt;
//                        &lt;remark&gt;备注&lt;/remark&gt;
//                        &lt;phone&gt;&lt;/phone&gt;
//                        &lt;email&gt;&lt;/email&gt;
//                        &lt;samplingdate&gt;2014-12-18&lt;/samplingdate&gt;
//                        &lt;province&gt;广东&lt;/province&gt;
//                        &lt;city&gt;广州市&lt;/city&gt;
//                        &lt;county&gt;天河区&lt;/county&gt;
//                        &lt;dictlabid&gt;3&lt;/dictlabid&gt;
//                        &lt;/datarow&gt;&lt;/data&gt;
//                        ";
//            }
            string str        = "<?xml version='1.0' encoding='utf-8'?>" + StringToXML(xmlStr);
            string strMessage = string.Empty;
            //缓存取登录用户
            Cache     cache = new Cache();
            CacheInfo info  = cache.GetCacheData(SID);
            DataTable dt    = new DataTable();

            try
            {
                dt = GetDataTable(str);
            }
            catch (Exception ex)
            {
                return(String.Format("{0} {1}", ErrorCode.Rec_1002, ex.Message));
            }
            if (dt == null || dt.Rows.Count == 0 || dt.Columns.Count != 20)
            {
                return(ErrorCode.Rec_1003);
            }

            List <Dicttestitem>      TestItemList  = loginservice.GetLoginDicttestitemList();  //项目字典表
            List <Dictproductdetail> ProductDetail = loginservice.GetLoginDictproductdetail(); //套餐组合字典
            string _productname = string.Empty;

            foreach (DataRow dr in dt.Rows)
            {
                #region 必填项
                //套餐代码
                string productTestCode = dr["uniquecode"].ToString().Replace('_', ' ').Trim();
                //客户代码
                string dictcustomercode = dr["dictcustomerid"].ToString().Trim();
                //条码号
                string barcode = dr["barcode"].ToString().Trim();
                //姓名
                string realname = dr["realname"].ToString().Trim();
                //性别
                string sex = dr["sex"].ToString().Replace('_', ' ').Trim() == "女" ? "F" : (dr["sex"].ToString().Replace('_', ' ').Trim() == "男" ? "M" : "U");
                //婚否
                string ismarried = dr["ismarried"].ToString().Trim();
                //手机
                string mobile = dr["mobile"].ToString().Trim();
                //住址
                string address = dr["address"].ToString().Trim();
                //省
                string province = dr["province"].ToString().Trim();
                //市
                string city = dr["city"].ToString().Trim();
                //分点实验室
                string dictlabid = dr["dictlabid"].ToString().Trim();

                if (string.IsNullOrEmpty(productTestCode) || string.IsNullOrEmpty(dictcustomercode) || string.IsNullOrEmpty(dictlabid) ||
                    string.IsNullOrEmpty(realname) || string.IsNullOrEmpty(sex) || string.IsNullOrEmpty(ismarried) ||
                    string.IsNullOrEmpty(mobile) || string.IsNullOrEmpty(address) || string.IsNullOrEmpty(province) || string.IsNullOrEmpty(city))
                {
                    strMessage = ErrorCode.Rec_1005;
                    break;
                }
                #endregion

                #region 二者不可都为空
                //出生日期
                string birthday = dr["birthday"].ToString().Trim();
                //年龄
                string age = dr["age"].ToString().Trim();
                if (string.IsNullOrEmpty(birthday) && string.IsNullOrEmpty(age))
                {
                    strMessage = ErrorCode.Rec_1006;
                    break;
                }
                #endregion

                #region 可空字段
                //身份证
                string idnumber = dr["idnumber"].ToString().Trim();
                //部门
                string section = dr["section"].ToString().Trim();
                //备注
                string remark = dr["remark"].ToString().Trim();
                //电话
                string phone = dr["phone"].ToString().Trim();
                //邮箱
                string email = dr["email"].ToString().Trim();
                //采样日期
                string samplingdate = dr["samplingdate"].ToString().Trim();
                //区
                string county = dr["county"].ToString().Trim();
                #endregion

                DateTime datebirthday;
                bool     datebirthdayb = DateTime.TryParse(birthday, out datebirthday);
                DateTime datesamplingdate;
                bool     datesamplingdateb = DateTime.TryParse(samplingdate, out datesamplingdate);
                if ((birthday != string.Empty && !datebirthdayb) || (samplingdate != string.Empty && !datesamplingdateb))
                {
                    strMessage = ErrorCode.Rec_1013;
                    break;
                }
                //检查单位是否在体检系统中有维护
                string dictcustomerid = string.Empty;
                try
                {
                    using (DataTable d = customerservice.CheckHasCustomer(dictcustomercode))
                    {
                        if (d == null || d.Rows.Count == 0 || d.Rows.Count > 1)
                        {
                            strMessage = ErrorCode.Up_0011;
                            break;
                        }
                        else
                        {
                            dictcustomerid = d.Rows[0][0].ToString();
                        }
                    }
                }
                catch (Exception ee)
                {
                    strMessage = ErrorCode.Up_0015 + " " + ee.Message;
                    break;
                }

                #region 添加套餐
                //查询分点+公用套餐
                List <Dicttestitem> productlistTemp = new DicttestitemService().GetProduct(TypeParse.StrToDouble(dictcustomerid, 0));
                List <Dicttestitem> productList     = productlistTemp.Where <Dicttestitem>(c => c.Testcode == productTestCode && (c.Forsex == sex || c.Forsex == "B")).ToList <Dicttestitem>();
                List <Dicttestitem> grouptestList   = new List <Dicttestitem>();
                Dicttestitem        productinfo     = null;
                if (productList.Count == 0)
                {
                    strMessage = ErrorCode.Rec_1008;
                    break;
                }
                else if (productList.Count > 1)
                {
                    strMessage = ErrorCode.Rec_1009;
                    break;
                }
                else
                {
                    productinfo = productList.First <Dicttestitem>();
                    List <OrderRegister> _gridtestList = null;
                    #region 添加套餐
                    string msg = registerservice.AddProduct(ref _gridtestList, sex, productinfo.Dicttestitemid, false, null, ref _productname, null);
                    if (msg != string.Empty)
                    {
                        strMessage = ErrorCode.Rec_1017;
                        break;
                    }
                    #endregion
                    if (barcode != string.Empty && barcode.Length != 12)//条码号必须为12位数字
                    {
                        strMessage = ErrorCode.Rec_1010;
                        break;
                    }
                    if (barcode != string.Empty && barcode.Substring(barcode.Length - 2) != "00")//条码号必须以00结尾
                    {
                        strMessage = ErrorCode.Rec_1011;
                        break;
                    }
                    if (barcodeservice.CheckBarCode(barcode))//条码号已在系统中存在
                    {
                        strMessage = ErrorCode.Rec_1012;
                        break;
                    }

                    //套餐下组合项目
                    IEnumerable <Dictproductdetail> IEgroup = ProductDetail.Where <Dictproductdetail>(c => c.Productid == productinfo.Dicttestitemid);
                    bool iscontinue = true;
                    int  count      = IEgroup.Count <Dictproductdetail>();
                    int  k          = 0;
                    foreach (Dictproductdetail item in IEgroup)
                    {
                        IEnumerable <Dicttestitem> IEgruptest = TestItemList.Where <Dicttestitem>(c => c.Dicttestitemid == item.Testgroupid);
                        if (IEgruptest.Count() <= 0)
                        {
                            //没有找到套餐下组合
                            k++;
                            continue;
                        }
                        Dicttestitem groupinfo = IEgruptest.First <Dicttestitem>();
                        //校验性别是否符合
                        string res = registerservice.checkSex(groupinfo.Dicttestitemid, sex);
                        if (res != string.Empty)
                        {
                            //性别项目不合
                            strMessage = ErrorCode.Rec_1015;
                            iscontinue = false;
                            break;
                        }

                        groupinfo.Productid   = productinfo.Dicttestitemid;
                        groupinfo.Productname = productinfo.Testname; ///套餐名
                        groupinfo.IsActive    = "1";                  //是否停止测试
                        groupinfo.Isadd       = "0";                  ///是否追加
                        groupinfo.Billed      = "0";
                        groupinfo.Sendbilled  = "0";
                        groupinfo.Adduserid   = null;//追加人ID

                        if (barcode == string.Empty)
                        {
                            IEnumerable <Dicttestitem> IEtempbarcodeList = grouptestList.Where <Dicttestitem>(c => c.Tubegroup == groupinfo.Tubegroup);
                            if (IEtempbarcodeList.Count() > 0)
                            {
                                groupinfo.Barcode = IEtempbarcodeList.First <Dicttestitem>().Barcode;
                            }
                            else
                            {
                                groupinfo.Barcode = registerservice.GetBarCode();
                            }
                        }
                        else
                        {
                            groupinfo.Barcode = barcode;
                        }

                        //获取外包客户
                        Dictproductdetail detail = ProductDetail.Where <Dictproductdetail>(c => c.Productid == productinfo.Dicttestitemid && c.Testgroupid == groupinfo.Dicttestitemid).First <Dictproductdetail>();
                        groupinfo.Sendoutcustomerid = detail.Sendoutcustomerid;

                        grouptestList.Add(groupinfo);
                    }
                    if (!iscontinue)
                    {
                        continue;
                    }
                    else
                    {
                        if (k >= count)
                        {
                            strMessage = ErrorCode.Rec_1016;
                            break;
                        }
                    }
                }
                #endregion

                #region 添加会员
                Dictmember member = new Dictmember()
                {
                    Realname = realname, Idnumber = idnumber, Nickname = realname, Sex = sex, Addres = address,
                    Phone    = phone, Mobile = mobile, Email = email
                };
                if (datebirthdayb)
                {
                    member.Birthday = datebirthday;
                }
                registerservice.checkmember(null, ref member);
                #endregion

                #region 添加订单
                double year = 0, month = 0, day = 0;
                double hours  = 0;
                double aged   = 0;
                string agestr = age;
                bool   ageb   = double.TryParse(agestr, out aged);

                if (member.Birthday == null)
                {
                    if (agestr != string.Empty && ageb)
                    {
                        year            = aged;
                        day             = aged * 365;
                        member.Birthday = datebirthday = DateTime.Now.AddDays((0 - day));
                    }
                    else
                    {
                        strMessage = ErrorCode.Rec_1006;
                        break;
                    }
                }
                TimeSpan ts = DateTime.Now - Convert.ToDateTime(member.Birthday);//时间差
                year  = Math.Truncate((double)(ts.Days / 365));
                month = (ts.Days % 365) / 30;
                day   = (ts.Days % 365) % 30;
                hours = ts.TotalHours;

                Orders _orders = new Orders()
                {
                    Ordernum     = new ProRegisterService().GetOrderNum(),
                    Dictmemberid = member.Dictmemberid, Dictcustomerid = Convert.ToDouble(dictcustomerid),
                    Realname     = realname, Sex = sex, Caculatedage = hours, Remarks = remark,
                    Age          = string.Format("{0}岁{1}月{2}日{3}时", year, month, day, 0), Enterby = "admin",
                    Ordertestlst = _productname + ",", Dictlabid = Convert.ToDouble(dictlabid), Ordersource = "1",
                    Ismarried    = ismarried == "未婚" ? "0" : (ismarried == "已婚" ? "1" : "2"), Section = section,
                    Status       = ((int)daan.service.common.ParamStatus.OrdersStatus.BarCodePrint).ToString(),
                    Province     = province, City = city, County = county
                };
                if (datesamplingdateb)
                {
                    _orders.SamplingDate = datesamplingdate;
                }
                string errstr = string.Empty;
                bool   b      = registerservice.insertUpdateOrders("易感基因对接订单", "", true, productList, grouptestList, member, _orders, "", ref errstr);
                if (!b)
                {
                    strMessage = String.Format("{0} {1}", ErrorCode.Rec_1018, errstr);
                }
                #endregion
            }
            return(strMessage);
        }