Beispiel #1
0
        public void DealHtml(IList list, string html, bool crawlAll)
        {
            Parser   parserDtl = new Parser(new Lexer(html));
            NodeList aNodes    = parserDtl.ExtractAllNodesThatMatch(new AndFilter(new TagNameFilter("table"), new HasAttributeFilter("id", "ctl00_cph_context_GreetingArrangeList1_GridView1")));

            if (aNodes != null && aNodes.Count == 1 && aNodes[0] is TableTag)
            {
                TableTag table = (TableTag)aNodes[0];
                for (int i = 1; i < table.Rows.Length; i++)
                {
                    if (table.Rows[i].Columns.Length == 5)
                    {
                        string meetTime = string.Empty, prjName = string.Empty, meetName = string.Empty, place = string.Empty;
                        meetTime = table.Rows[i].Columns[1].ToPlainTextString().Trim();
                        prjName  = table.Rows[i].Columns[2].ToPlainTextString().Trim();
                        place    = table.Rows[i].Columns[3].ToPlainTextString().Trim();
                        meetName = table.Rows[i].Columns[4].ToPlainTextString().Trim();

                        MeetInfo info = ToolDb.GenMeetInfo("广东省", "深圳宝安区工程", string.Empty, string.Empty, prjName, place, meetName, meetTime,
                                                           string.Empty, "深圳市建设工程交易中心宝安分中心", SiteUrl, string.Empty, string.Empty, string.Empty, string.Empty);
                        list.Add(info);
                        if (!crawlAll && list.Count >= this.MaxCount)
                        {
                            return;
                        }
                    }
                }
            }
            parserDtl.Reset();
        }
Beispiel #2
0
        protected override IList ExecuteCrawl(bool crawlAll)
        {
            IList    list      = new List <MeetInfo>();
            DateTime startDate = DateTime.Today;
            DateTime endDate   = startDate.AddDays(30);
            long     startTime = ToolHtml.GetDateTimeLong(startDate);
            long     endTime   = ToolHtml.GetDateTimeLong(endDate);
            string   Url       = this.SiteUrl + this.MaxCount + "&startTime=" + startTime + "&endTime=" + endTime;
            string   infUrl    = "http://www.bajsjy.com/jyxx/hyxx/";
            string   html      = string.Empty;

            try
            {
                html = this.ToolWebSite.GetHtmlByUrl(Url);
            }
            catch { return(null); }
            int startIndex = html.IndexOf("{");
            int endIndex   = html.LastIndexOf("}");

            html = html.Substring(startIndex, (endIndex + 1) - startIndex);
            JavaScriptSerializer        serializer  = new JavaScriptSerializer();
            Dictionary <string, object> smsTypeJson = (Dictionary <string, object>)serializer.DeserializeObject(html);

            object[] objvalues = smsTypeJson["rows"] as object[];
            foreach (object objValue in objvalues)
            {
                Dictionary <string, object> dic = (Dictionary <string, object>)objValue;
                string meetTime = string.Empty, prjName = string.Empty, meetName = string.Empty, place = string.Empty, prjCode = string.Empty;

                prjCode  = Convert.ToString(dic["bdBH"]);
                meetTime = Convert.ToString(dic["huiYiStartTime2"]);
                prjName  = Convert.ToString(dic["bdName"]);
                place    = Convert.ToString(dic["huiYiDiDianName"]);
                meetName = Convert.ToString(dic["huiYiLeiXingName"]);
                MeetInfo info = ToolDb.GenMeetInfo("广东省", "深圳宝安区工程", string.Empty, string.Empty, prjName, place, meetName, meetTime, string.Empty, "深圳市建设工程交易中心宝安分中心", infUrl, prjCode, string.Empty, string.Empty, string.Empty);
                list.Add(info);
                if (!crawlAll && list.Count >= this.MaxCount)
                {
                    // 删除
                    string bDate = startDate.ToString("yyyy-MM-dd"), eDate = endDate.ToString("yyyy-MM-dd");
                    string sqlwhere   = " where City='深圳宝安区工程' and InfoUrl='" + infUrl + "' and BeginDate>='" + bDate + "' and BeginDate<='" + eDate + "'";
                    string delMeetSql = "delete from MeetInfo " + sqlwhere;
                    int    countMeet  = ToolDb.ExecuteSql(delMeetSql);
                    return(list);
                }
            }
            if (list != null && list.Count > 0)
            {
                // 删除
                string bDate = startDate.ToString("yyyy-MM-dd"), eDate = endDate.ToString("yyyy-MM-dd");
                string sqlwhere   = " where City='深圳宝安区工程' and InfoUrl='" + infUrl + "' and BeginDate>='" + bDate + "' and BeginDate<='" + eDate + "'";
                string delMeetSql = "delete from MeetInfo " + sqlwhere;
                int    countMeet  = ToolDb.ExecuteSql(delMeetSql);
            }
            return(list);
        }
        /// <summary>
        ///3、科室会同步
        /// </summary>
        public ReturnValueModel SyncMeetingInfo()
        {
            //两种方式:
            //1)费卡文库创建科室会,同步在小程序生成;缺点:一旦系统维护,不能及时同步
            //2)定期同步;缺点:非实时;每天凌晨科室会同步
            //
            //注:将采用定期同步:每天凌晨同步已完成的科室会到OneHCP数据库
            //同步内容:
            //科室会编号、科室会标题,活动状态,创建时间,召开时间,医院,科室,内容,参与人数

            ReturnValueModel rvm = new ReturnValueModel();
            var checkInPath      = $@"{_host}/OneHCPService/ActivitySync.ashx";
            var returnModel      = HttpUtils.PostResponse <ReturnValueSyncModel>(checkInPath, "", "application/x-www-form-urlencoded");

            if (returnModel.status == "1")
            {
                var sourceMeetings = JsonConvert.DeserializeObject <List <MeetingSyncModel> >(returnModel.result);

                var meetingList = new List <MeetInfo>();
                foreach (var item in sourceMeetings)
                {
                    var meet = new MeetInfo();
                    meet.Id               = Guid.NewGuid().ToString();
                    meet.SourceId         = item.ActivityID;                         //科室会ID
                    meet.MeetTitle        = item.ActivityName;                       //科室会标题
                    meet.CreateTime       = Convert.ToDateTime(item.CreatTime);      //创建时间
                    meet.MeetDate         = Convert.ToDateTime(item.HoldTime);       //召开时间
                    meet.SourceHospital   = item.Hospital;                           //医院
                    meet.SourceDepartment = item.KeShi;                              //科室
                    meet.MeetIntroduction = item.Context;                            //内容
                    meet.MeetingNumber    = item.PartInNum;                          //参与人数
                    meet.IsCompleted      = Core.Domain.Enums.EnumComplete.Approved; //已审核
                    meet.Source           = _appId;                                  //来源费卡文库
                    meetingList.Add(meet);
                }

                _rep.InsertList(meetingList);
                _rep.SaveChanges();
                rvm.Success = true;
                rvm.Msg     = "success";
                rvm.Result  = new
                {
                    done = meetingList.Count
                };
            }
            else
            {
                rvm.Success = false;
                rvm.Msg     = returnModel.message;
            }

            return(rvm);
        }
Beispiel #4
0
        protected override IList ExecuteCrawl(bool crawlAll)
        {
            IList  list = new List <MeetInfo>();
            string html = string.Empty;

            try
            {
                html = this.ToolWebSite.GetHtmlByUrl(SiteUrl, Encoding.UTF8);
            }
            catch (Exception ex)
            {
                return(list);
            }
            Parser   parser   = new Parser(new Lexer(html));
            NodeList nodeList = parser.ExtractAllNodesThatMatch(new AndFilter(new TagNameFilter("table"), new HasAttributeFilter("bordercolor", "#222222")));

            if (nodeList != null && nodeList.Count > 0)
            {
                TableTag table = nodeList[0] as TableTag;
                for (int i = 0; i < table.RowCount; i++)
                {
                    string   meetTime = string.Empty, prjName = string.Empty, meetName = string.Empty, place = string.Empty, builUnit = string.Empty;
                    TableRow tr = table.Rows[i];
                    if (tr.GetAttribute("valign") == "top")
                    {
                        string meetstr = string.Empty;
                        string temp    = tr.Columns[1].ToPlainTextString().Replace("(Y)", "").Replace("(Y)", "").Replace("(一年)", "").Replace("(一年)", "");
                        string code    = temp.Replace("(", "(").Replace(")", ")").GetRegexBegEnd("(", ")");

                        if (!string.IsNullOrEmpty(code))
                        {
                            meetstr = temp.Replace("(" + code + ")", "").Replace("(" + code + ")", "");//.Replace("(", "").Replace("(", "").Replace(")", "").Replace(")", "");
                        }
                        else
                        {
                            meetstr = temp;
                        }
                        place = meetstr.Replace("(", "(").Replace(")", ")").GetRegexBegEnd("(", ")");
                        if (!string.IsNullOrEmpty(place))
                        {
                            meetstr = meetstr.Replace("(" + place + ")", "").Replace("(" + place + ")", "");
                        }
                        string[] str = meetstr.Split(' ');
                        prjName = str[0];
                        if (str.Length > 1)
                        {
                            builUnit = str[1];
                        }
                        if (string.IsNullOrEmpty(builUnit) && str.Length > 2)
                        {
                            builUnit = str[2];
                        }
                        if (builUnit.Contains("开标") || builUnit.Contains("评标"))
                        {
                            place    = builUnit;
                            builUnit = string.Empty;
                        }
                        meetName = "开标会";
                        System.Text.RegularExpressions.Regex regDate = new System.Text.RegularExpressions.Regex(@"\d{4}-\d{1,2}-\d{1,2} \d{1,2}:\d{1,2}");
                        meetTime = regDate.Match(meetstr).Value;
                        if (string.IsNullOrEmpty(meetTime))
                        {
                            meetTime = meetstr.GetDateRegex();
                        }

                        MeetInfo info = ToolDb.GenMeetInfo("广东省", "深圳政府采购", string.Empty, string.Empty, prjName, place, meetName, meetTime,
                                                           string.Empty, "深圳市政府采购大鹏新区分中心", SiteUrl, code, builUnit, string.Empty, string.Empty);
                        list.Add(info);

                        if (!crawlAll && list.Count >= this.MaxCount)
                        {
                            IList <MeetInfo> result = list as IList <MeetInfo>;
                            // 删除
                            string bDate      = result.OrderBy(x => x.BeginDate).ToList()[0].BeginDate.ToString().GetDateRegex("yyyy/MM/dd");
                            string eDate      = Convert.ToDateTime(result.OrderByDescending(x => x.BeginDate).ToList()[0].BeginDate).AddDays(1).ToString().GetDateRegex("yyyy/MM/dd");
                            string sqlwhere   = " where City='深圳政府采购' and InfoSource='深圳市政府采购大鹏新区分中心' and BeginDate>='" + bDate + "' and BeginDate<='" + eDate + "'";
                            string delMeetSql = "delete from MeetInfo " + sqlwhere;
                            int    countMeet  = ToolDb.ExecuteSql(delMeetSql);
                            return(list);
                        }
                    }
                }
            }
            if (list != null && list.Count > 0)
            {
                IList <MeetInfo> result = list as IList <MeetInfo>;
                // 删除
                string bDate = result.OrderBy(x => x.BeginDate).ToList()[0].BeginDate.ToString().GetDateRegex("yyyy/MM/dd"), eDate = Convert.ToDateTime(result.OrderByDescending(x => x.BeginDate).ToList()[0].BeginDate).AddDays(1).ToString().GetDateRegex("yyyy/MM/dd");
                string sqlwhere   = " where City='深圳政府采购' and InfoSource='深圳市政府采购大鹏新区分中心' and BeginDate>='" + bDate + "' and BeginDate<='" + eDate + "'";
                string delMeetSql = "delete from MeetInfo " + sqlwhere;
                int    countMeet  = ToolDb.ExecuteSql(delMeetSql);
            }
            return(list);
        }
Beispiel #5
0
        protected override IList ExecuteCrawl(bool crawlAll)
        {
            IList    list      = new List <MeetInfo>();
            DateTime startDate = DateTime.Today;
            DateTime endDate   = startDate.AddDays(30);
            long     startTime = ToolHtml.GetDateTimeLong(startDate);
            long     endTime   = ToolHtml.GetDateTimeLong(endDate);
            string   infoUrl   = this.SiteUrl + this.MaxCount + "&startTime=" + startTime + "&endTime" + endTime;


            string html = string.Empty;

            try
            {
                html = this.ToolWebSite.GetHtmlByUrl(infoUrl, Encoding.UTF8);
            }
            catch
            {
            }
            int startIndex = html.IndexOf("{");
            int endIndex   = html.LastIndexOf("}");

            html = html.Substring(startIndex, (endIndex + 1) - startIndex);
            int len = html.Length;
            JavaScriptSerializer serializer = new JavaScriptSerializer();

            Dictionary <string, object> smsTypeJson = null;

            smsTypeJson = (Dictionary <string, object>)serializer.DeserializeObject(html);
            foreach (KeyValuePair <string, object> obj in smsTypeJson)
            {
                if (obj.Key == "total")
                {
                    continue;
                }
                object[] array = (object[])obj.Value;
                foreach (object arrValue in array)
                {
                    string meetTime = string.Empty, prjName = string.Empty, meetName = string.Empty,
                                place = string.Empty, builUnit = string.Empty, prjCode = string.Empty;
                    Dictionary <string, object> dic = (Dictionary <string, object>)arrValue;
                    prjName  = Convert.ToString(dic["bdName"]).GetReplace("<br/>");
                    meetTime = Convert.ToString(dic["huiYiStartTime2"]);
                    meetName = Convert.ToString(dic["huiYiLeiXingName"]);
                    place    = Convert.ToString(dic["huiYiDiDianName"]);
                    prjCode  = Convert.ToString(dic["bdBH"]);
                    MeetInfo info = ToolDb.GenMeetInfo("广东省", "深圳龙岗区工程", string.Empty, string.Empty, prjName, place, meetName, meetTime, string.Empty, "深圳市建设工程交易中心龙岗分中心", SiteUrl, prjCode, builUnit, string.Empty, string.Empty);
                    list.Add(info);
                    if (!crawlAll && list.Count >= this.MaxCount)
                    {
                        // 删除
                        string bDate = startDate.ToString("yyyy-MM-dd"), eDate = endDate.ToString("yyyy-MM-dd");
                        string sqlwhere   = " where City='深圳龙岗区工程' and InfoUrl='" + SiteUrl + "' and BeginDate>='" + bDate + "' and BeginDate<='" + eDate + "'";
                        string delMeetSql = "delete from MeetInfo " + sqlwhere;
                        int    countMeet  = ToolDb.ExecuteSql(delMeetSql);
                        return(list);
                    }
                }
            }
            if (list != null && list.Count > 0)
            {
                // 删除
                string bDate = startDate.ToString("yyyy-MM-dd"), eDate = endDate.ToString("yyyy-MM-dd");
                string sqlwhere   = " where City='深圳龙岗区工程' and InfoUrl='" + SiteUrl + "' and BeginDate>='" + bDate + "' and BeginDate<='" + eDate + "'";
                string delMeetSql = "delete from MeetInfo " + sqlwhere;
                int    countMeet  = ToolDb.ExecuteSql(delMeetSql);
            }
            return(list);
        }
        public IHttpActionResult GetMeetDetail(MeetInfo meetInfo)
        {
            var ret = _wxMeetService.GetMeetDetail(meetInfo, WorkUser);

            return(Ok(ret));
        }
Beispiel #7
0
        protected override IList ExecuteCrawl(bool crawlAll)
        {
            IList  list    = new ArrayList();
            int    pageInt = 1;
            string html    = string.Empty;

            try
            {
                html = this.ToolWebSite.GetHtmlByUrl(SiteUrl, Encoding.UTF8);
            }
            catch (Exception ex)
            {
                return(list);
            }
            Parser parser              = new Parser(new Lexer(html));
            string viewState           = this.ToolWebSite.GetAspNetViewState(html);
            string eventValidation     = this.ToolWebSite.GetAspNetEventValidation(html);
            NameValueCollection nvcBeg = this.ToolWebSite.GetNameValueCollection(
                new string[] { "__EVENTTARGET",
                               "__EVENTARGUMENT",
                               "__LASTFOCUS",
                               "__VIEWSTATE",
                               "__VIEWSTATEENCRYPTED",
                               "__EVENTVALIDATION",
                               "ctl00$Content$ddlGCLB",
                               "ctl00$Content$txtStartHysj",
                               "ctl00$Content$txtEndHysj",
                               "ctl00$hdnPageCount" },
                new string[] { "", "", "", viewState, "", eventValidation, "-1", DateTime.Now.ToString("yyyy-MM-dd"), DateTime.Now.AddDays(30).ToString("yyyy-MM-dd"), "1" });

            html = this.ToolWebSite.GetHtmlByUrl(SiteUrl, nvcBeg, Encoding.UTF8);
            //抓取30天之内的会议信息

            parser = new Parser(new Lexer(html));
            NodeList aNodes = parser.ExtractAllNodesThatMatch(new AndFilter(new TagNameFilter("table"), new HasAttributeFilter("id", "ctl00_Content_GridView1")));

            try
            {
                TableTag table = aNodes[0] as TableTag;
                string   temp  = table.Rows[table.RowCount - 1].ToPlainTextString();
                temp    = temp.GetRegexBegEnd(",共", "页");
                pageInt = int.Parse(temp);
            }
            catch { }
            for (int p = 1; p <= pageInt; p++)
            {
                if (p > 1)
                {
                    viewState       = this.ToolWebSite.GetAspNetViewState(html);
                    eventValidation = this.ToolWebSite.GetAspNetEventValidation(html);
                    NameValueCollection nvc = this.ToolWebSite.GetNameValueCollection(
                        new string[] { "__EVENTTARGET",
                                       "__EVENTARGUMENT",
                                       "__LASTFOCUS",
                                       "__VIEWSTATE",
                                       "__VIEWSTATEENCRYPTED",
                                       "__EVENTVALIDATION",
                                       "ctl00$Content$ddlGCLB",
                                       "ctl00$Content$txtStartHysj",
                                       "ctl00$Content$txtEndHysj",
                                       "ctl00$hdnPageCount" },
                        new string[] { "ctl00$Content$GridView1",
                                       "Page$" + p.ToString(),
                                       "",
                                       viewState,
                                       "",
                                       eventValidation,
                                       "-1",
                                       DateTime.Now.ToString("yyyy-MM-dd"),
                                       DateTime.Now.AddDays(30).ToString("yyyy-MM-dd"),
                                       p.ToString() }
                        );
                    try
                    {
                        html = this.ToolWebSite.GetHtmlByUrl(this.SiteUrl, nvc, Encoding.UTF8);
                    }
                    catch { continue; }
                }
                parser = new Parser(new Lexer(html));
                NodeList tableNode = parser.ExtractAllNodesThatMatch(new AndFilter(new TagNameFilter("table"), new HasAttributeFilter("id", "ctl00_Content_GridView1")));
                if (tableNode != null && tableNode.Count > 0)
                {
                    TableTag table    = (TableTag)tableNode[0];
                    int      rowCount = pageInt > 1 ? table.RowCount - 1 : table.RowCount;
                    for (int i = 1; i < rowCount; i++)
                    {
                        string meetTime = string.Empty, prjName = string.Empty, meetName = string.Empty, place = string.Empty;
                        meetTime = table.Rows[i].Columns[1].ToPlainTextString().Trim();
                        prjName  = table.Rows[i].Columns[2].ToPlainTextString().Trim();
                        place    = table.Rows[i].Columns[3].ToPlainTextString().Trim();
                        meetName = table.Rows[i].Columns[4].ToPlainTextString().Trim();
                        MeetInfo info = ToolDb.GenMeetInfo("广东省", "深圳市工程", string.Empty, string.Empty, prjName, place, meetName, meetTime,
                                                           string.Empty, "深圳市建设工程交易中心", SiteUrl, string.Empty, string.Empty, string.Empty, string.Empty);
                        list.Add(info);
                        if (!crawlAll && list.Count >= this.MaxCount)
                        {
                            // 删除
                            string bDate = DateTime.Today.ToString("yyyy-MM-dd"), eDate = DateTime.Today.AddDays(31).ToString("yyyy-MM-dd");
                            string sqlwhere   = " where City='深圳市工程' and BeginDate>='" + bDate + "' and BeginDate<='" + eDate + "' and InfoUrl='" + this.SiteUrl + "'";
                            string delMeetSql = "delete from MeetInfo " + sqlwhere;
                            int    countMeet  = ToolDb.ExecuteSql(delMeetSql);
                            return(list);
                        }
                    }
                }
            }
            if (list != null && list.Count > 0)
            {
                string bDate = DateTime.Today.ToString("yyyy-MM-dd"), eDate = DateTime.Today.AddDays(31).ToString("yyyy-MM-dd");
                string sqlwhere   = " where City='深圳市工程' and BeginDate>='" + bDate + "' and BeginDate<='" + eDate + "' and InfoUrl='" + this.SiteUrl + "'";
                string delMeetSql = "delete from MeetInfo " + sqlwhere;
                int    countMeet  = ToolDb.ExecuteSql(delMeetSql);
            }
            return(list);
        }
Beispiel #8
0
        protected override IList ExecuteCrawl(bool crawlAll)
        {
            IList  list            = new List <MeetInfo>();
            string html            = string.Empty;
            int    pageInt         = 1;
            string viewState       = string.Empty;
            string eventValidation = string.Empty;

            try
            {
                html = this.ToolWebSite.GetHtmlByUrl(SiteUrl, Encoding.Default);
            }
            catch
            {
                return(list);
            }
            Parser   parser   = new Parser(new Lexer(html));
            NodeList nodeList = parser.ExtractAllNodesThatMatch(new AndFilter(new TagNameFilter("table"), new HasAttributeFilter("class", "cnewslist")));

            if (nodeList != null && nodeList.Count > 0)
            {
                TableTag table = nodeList[0] as TableTag;
                for (int i = 0; i < table.RowCount; i++)
                {
                    TableRow tr   = table.Rows[i];
                    string   temp = tr.Columns[1].ToNodePlainString();
                    if (!temp.Contains("开标时间"))
                    {
                        continue;
                    }

                    string meetTime = string.Empty, prjName = string.Empty, meetName = string.Empty, place = string.Empty, builUnit = string.Empty;

                    prjName  = tr.Columns[0].ToNodePlainString();
                    meetName = "开标会";
                    meetTime = tr.Columns[2].ToPlainTextString();
                    place    = tr.Columns[3].ToNodePlainString();

                    MeetInfo info = ToolDb.GenMeetInfo("广东省", "珠海市区", string.Empty, string.Empty, prjName, place, meetName, meetTime,
                                                       string.Empty, "珠海市公共资源交易中心", SiteUrl, "", builUnit, string.Empty, string.Empty);
                    list.Add(info);

                    if (!crawlAll && list.Count >= this.MaxCount)
                    {
                        IList <MeetInfo> result = list as IList <MeetInfo>;
                        // 删除
                        string bDate      = result.OrderBy(x => x.BeginDate).ToList()[0].BeginDate.ToString().GetDateRegex("yyyy/MM/dd");
                        string eDate      = Convert.ToDateTime(result.OrderByDescending(x => x.BeginDate).ToList()[0].BeginDate).AddDays(1).ToString().GetDateRegex("yyyy/MM/dd");
                        string sqlwhere   = " where City='珠海市区' and InfoSource='珠海市公共资源交易中心' and InfoUrl='" + SiteUrl + "' and BeginDate>='" + bDate + "' and BeginDate<'" + eDate + "'";
                        string delMeetSql = "delete from MeetInfo " + sqlwhere;
                        int    countMeet  = ToolDb.ExecuteSql(delMeetSql);
                        return(list);
                    }
                }
            }
            if (list != null && list.Count > 0)
            {
                IList <MeetInfo> result = list as IList <MeetInfo>;
                // 删除
                string bDate = result.OrderBy(x => x.BeginDate).ToList()[0].BeginDate.ToString().GetDateRegex("yyyy/MM/dd"), eDate = Convert.ToDateTime(result.OrderByDescending(x => x.BeginDate).ToList()[0].BeginDate).AddDays(1).ToString().GetDateRegex("yyyy/MM/dd");
                string sqlwhere   = " where City='珠海市区' and InfoSource='珠海市公共资源交易中心' and InfoUrl='" + SiteUrl + "' and BeginDate>='" + bDate + "' and BeginDate<'" + eDate + "'";
                string delMeetSql = "delete from MeetInfo " + sqlwhere;
                int    countMeet  = ToolDb.ExecuteSql(delMeetSql);
            }
            return(list);
        }
Beispiel #9
0
        protected override IList ExecuteCrawl(bool crawlAll)
        {
            IList  list            = new List <MeetInfo>();
            string html            = string.Empty;
            string viewState       = string.Empty;
            string eventValidation = string.Empty;
            int    pageInt         = 1;

            try
            {
                html = this.ToolWebSite.GetHtmlByUrl(SiteUrl, Encoding.UTF8);
                // 删除
                string bDate = DateTime.Today.AddDays(1).ToString("yyyy-MM-dd"), eDate = DateTime.Today.AddDays(-1).ToString("yyyy-MM-dd");
                string sqlwhere     = " where City='东莞市区' and BeginDate<'" + bDate + "' and BeginDate>'" + eDate + "'";
                string delAttachSql = "delete from BaseAttach where  SourceID in(select Id from MeetInfo " + sqlwhere + ")";
                string delMeetSql   = "delete from MeetInfo " + sqlwhere;
                int    countlAttach = ToolDb.ExecuteSql(delAttachSql);
                int    countMeet    = ToolDb.ExecuteSql(delMeetSql);
            }
            catch (Exception ex)
            {
                return(list);
            }
            Parser   parser   = new Parser(new Lexer(html));
            NodeList pageList = parser.ExtractAllNodesThatMatch(new AndFilter(new TagNameFilter("span"), new HasAttributeFilter("id", "ctl00_cph_context_GridViewPaingTwo1_lblGridViewPagingDesc")));

            if (pageList != null && pageList.Count > 0)
            {
                try
                {
                    string temp = pageList[0].ToPlainTextString().GetRegexBegEnd("共", "页");
                    pageInt = int.Parse(temp);
                }
                catch { }
            }
            for (int i = 1; i <= pageInt; i++)
            {
                if (i > 1)
                {
                    try
                    {
                        viewState       = this.ToolWebSite.GetAspNetViewState(html);
                        eventValidation = this.ToolWebSite.GetAspNetEventValidation(html);
                        NameValueCollection nvc = this.ToolWebSite.GetNameValueCollection(
                            new string[] {
                            "__VIEWSTATE", "__EVENTVALIDATION", "ctl00$cph_context$drp_selSeach",
                            "ctl00$cph_context$txt_strWhere", "ctl00$cph_context$drp_Rq", "ctl00$cph_context$GridViewPaingTwo1$txtGridViewPagingForwardTo", "ctl00$cph_context$GridViewPaingTwo1$btnForwardToPage"
                        },
                            new string[] {
                            viewState, eventValidation, "1", "", "1", i.ToString(), "Go"
                        }
                            );
                        html = this.ToolWebSite.GetHtmlByUrl(SiteUrl, nvc, Encoding.UTF8);
                    }
                    catch { continue; }
                }
                parser = new Parser(new Lexer(html));
                NodeList nodeList = parser.ExtractAllNodesThatMatch(new AndFilter(new TagNameFilter("table"), new HasAttributeFilter("id", "ctl00_cph_context_GridView1")));
                if (nodeList != null && nodeList.Count > 0)
                {
                    TableTag table = nodeList[0] as TableTag;
                    for (int j = 1; j < table.RowCount; j++)
                    {
                        string   meetTime = string.Empty, prjName = string.Empty, meetName = string.Empty, place = string.Empty, prjcode = string.Empty;
                        TableRow tr = table.Rows[j];
                        prjcode  = tr.Columns[1].ToNodePlainString();
                        meetName = tr.Columns[3].ToNodePlainString();
                        prjName  = tr.Columns[2].ToNodePlainString();
                        meetTime = tr.Columns[5].ToNodePlainString().Insert(10, " ");
                        place    = tr.Columns[4].ToNodePlainString();

                        MeetInfo info = ToolDb.GenMeetInfo("广东省", "东莞市区", string.Empty, string.Empty, prjName, place, meetName, meetTime,
                                                           string.Empty, MsgTypeCosnt.DongGuanMsgType, SiteUrl, prjcode, string.Empty, string.Empty, string.Empty);
                        list.Add(info);
                        if (!crawlAll && list.Count >= this.MaxCount)
                        {
                            //ToolDb.ExecuteAttenProject(MsgTypeCosnt.DongGuanMsgType);
                            return(list);
                        }
                    }
                }
            }
            //if (list != null && list.Count > 0)
            //{
            //    ToolDb.ExecuteAttenProject(MsgTypeCosnt.DongGuanMsgType);
            //}
            return(list);
        }
        /// <summary>
        /// 新增会议信息
        /// </summary>
        /// <param name="meetInfo"></param>
        /// <returns></returns>
        public ReturnValueModel AddMeetInfo(MeetInfoSubscribeDto dto, string body)
        {
            ReturnValueModel rvm = new ReturnValueModel();
            var meetInfoView     = RongJsonUtil.JsonStringToObj <MeetInfoViewDtoModel>(body);

            string loginSecretkey = ConfigurationManager.AppSettings["ThirdPartyKey"];
            string signature      = RongHttpClient.GetHash(loginSecretkey + dto.Nonce + dto.SignTimestamp);

            if (signature.ToUpper() != dto.Signature.ToUpper())
            {
                var massage = string.Format("Error:input={0}==>service={1},{2}", dto.Signature, signature, RongJsonUtil.ObjToJsonString(dto));
                LoggerHelper.Error(massage);
                rvm.Success = false;
                rvm.Msg     = massage;
                return(rvm);
            }
            string MeetType = string.Empty;

            if (meetInfoView?.Meet == null)
            {
                rvm.Msg     = "The parameter 'Meet' is required.";
                rvm.Success = false;
                return(rvm);
            }

            if (meetInfoView?.Schedules == null || meetInfoView.Schedules.Count() == 0)
            {
                rvm.Msg     = "The parameter 'Schedules' is required, and cannot be empty.";
                rvm.Success = false;
                return(rvm);
            }

            MeetInfo meet = null;

            if (!string.IsNullOrEmpty(meetInfoView.Meet.Id))
            {
                meet = _rep.FirstOrDefault <MeetInfo>(s => s.Id == meetInfoView.Meet.Id && s.IsDeleted != 1);
            }

            //if (meet != null && meet.MeetStartTime.HasValue && meet.MeetStartTime <= DateTime.Now)
            //{
            //    rvm.Msg = "This meeting is started, cannot change it now.";
            //    rvm.Success = false;
            //    return rvm;
            //}

            // var approvalEnabled = false; //是否启用审核

            using (var tran = _rep.Database.BeginTransaction())
            {
                try
                {
                    if (meet == null)
                    {
                        meetInfoView.Meet.Id          = Guid.NewGuid().ToString();
                        meetInfoView.Meet.CreateTime  = DateTime.Now;
                        meetInfoView.Meet.CreateUser  = "******";
                        meetInfoView.Meet.IsCompleted = EnumComplete.Approved;
                        meetInfoView.Meet.Remark      = "第三方调用";
                    }

                    meet = meetInfoView.Meet;

                    _rep.Insert(meet);
                    _rep.SaveChanges();
                    //线下会议需要生成签到二维码
                    if ((meet.MeetType == 2 || meet.MeetType == 3) && string.IsNullOrEmpty(meet.MeetCodeUrl))
                    {
                        meet.MeetCodeUrl = GetQRImgUrl(meet.Id);
                    }
                    //全国会议
                    if (meet.MeetType == 4 && string.IsNullOrEmpty(meet.MeetCodeUrl))
                    {
                        meet.MeetCodeUrl = GetQRImgUrl(meet.Id, 5);
                    }

                    //直播会议
                    if (meet.MeetType == 5 && string.IsNullOrEmpty(meet.MeetCodeUrl))
                    {
                        meet.MeetCodeUrl = GetQRImgUrl(meet.Id, 6);
                    }
                    //添加参会医生名单
                    if (meetInfoView.DoctorList != null)
                    {
                        foreach (var item in meetInfoView.DoctorList)
                        {
                            DoctorMeeting doctorMeeting = new DoctorMeeting
                            {
                                Id         = Guid.NewGuid().ToString(),
                                DoctorID   = item,
                                MeetingID  = meet.Id,
                                CreateUser = "******",
                                CreateTime = DateTime.Now
                            };
                            _rep.Insert(doctorMeeting);
                        }
                        _rep.SaveChanges();
                    }
                    else
                    {
                        //全部人员都可访问
                        DoctorMeeting doctorMeeting = new DoctorMeeting
                        {
                            Id         = Guid.NewGuid().ToString(),
                            DoctorID   = "00000000-0000-0000-0000-000000000000",
                            MeetingID  = meet.Id,
                            CreateUser = "******",
                            CreateTime = DateTime.Now
                        };
                        _rep.Insert(doctorMeeting);
                        _rep.SaveChanges();
                    }

                    //添加标签分组信息
                    if (meetInfoView.TagGroupList != null)
                    {
                        foreach (var item in meetInfoView.TagGroupList)
                        {
                            DoctorMeeting doctorMeeting = new DoctorMeeting
                            {
                                Id         = Guid.NewGuid().ToString(),
                                TagGroupID = item,
                                MeetingID  = meet.Id,
                                CreateUser = "******",
                                CreateTime = DateTime.Now
                            };
                            _rep.Insert(doctorMeeting);
                        }
                        _rep.SaveChanges();
                    }

                    //添加封面图片
                    if (meetInfoView.CoverPictures != null)
                    {
                        foreach (var item in meetInfoView.CoverPictures)
                        {
                            if (string.IsNullOrEmpty(item?.MeetPicType) || string.IsNullOrEmpty(item?.MeetPicUrl))
                            {
                                continue; //过滤空数据
                            }

                            item.Id     = Guid.NewGuid().ToString();
                            item.MeetId = meet.Id;
                            switch (item.MeetPicType)
                            {
                            case "L":
                                meet.MeetCoverBig = item.Id;
                                break;

                            case "S":
                                meet.MeetCoverSmall = item.Id;
                                break;
                            }
                            item.CreateTime = DateTime.Now;
                            item.CreateUser = "******";
                            _rep.Insert(item);
                            _rep.SaveChanges();
                        }
                    }

                    _rep.Update(meet);
                    _rep.SaveChanges();

                    //添加会议资料
                    if (meetInfoView.Files != null)
                    {
                        foreach (var item in meetInfoView.Files)
                        {
                            item.Id         = Guid.NewGuid().ToString();
                            item.MeetId     = meet.Id;
                            item.CreateTime = DateTime.Now;
                            item.CreateUser = "******";
                            _rep.Insert(item);
                            _rep.SaveChanges();
                        }
                    }

                    //添加讲者
                    if (meetInfoView.Speakers != null)
                    {
                        foreach (var item in meetInfoView.Speakers)
                        {
                            item.Id         = Guid.NewGuid().ToString();
                            item.MeetId     = meet.Id;
                            item.CreateTime = DateTime.Now;
                            item.CreateUser = "******";
                            _rep.Insert(item);
                            _rep.SaveChanges();
                        }
                    }

                    //添加会议日程
                    if (meetInfoView.Schedules != null)
                    {
                        DateTime?startTime = null;
                        DateTime?endTime   = null;
                        foreach (var item in meetInfoView.Schedules)
                        {
                            var scheduledate = item.ScheduleDate;
                            scheduledate = Convert.ToDateTime(scheduledate).ToString("yyyy-MM-dd");

                            MeetSchedule Schedule;
                            foreach (var val in item.ScheduleViews)
                            {
                                if (meetInfoView.Speakers == null || meetInfoView.Speakers.Count() == 0)
                                {
                                    val.Speaker.Id         = Guid.NewGuid().ToString();
                                    val.Speaker.MeetId     = meet.Id;
                                    val.Speaker.CreateTime = DateTime.Now;
                                    val.Speaker.CreateUser = "******";
                                    _rep.Insert(val.Speaker);
                                    _rep.SaveChanges();
                                }
                                else
                                {
                                    val.Speaker.Id = meetInfoView.Speakers.First(s => s.SpeakerName == val.Speaker.SpeakerName)?.Id;
                                }

                                Schedule                 = new MeetSchedule();
                                Schedule.Id              = Guid.NewGuid().ToString();
                                Schedule.MeetId          = meet.Id;
                                Schedule.MeetSpeakerId   = val.Speaker.Id;
                                Schedule.ScheduleStart   = DateTime.Parse(scheduledate + " " + val.Schedule.ScheduleStart);
                                Schedule.ScheduleEnd     = DateTime.Parse(scheduledate + " " + val.Schedule.ScheduleEnd);
                                Schedule.ScheduleContent = val.Schedule.ScheduleContent;


                                Schedule.Sort    = val.Schedule.Sort;
                                Schedule.AMPM    = val.Schedule.AMPM;
                                Schedule.Topic   = val.Schedule.Topic;
                                Schedule.Speaker = val.Schedule.Speaker;

                                Schedule.CreateTime = DateTime.Now;
                                Schedule.CreateUser = "******";
                                Schedule.Remark     = scheduledate;

                                if (!startTime.HasValue || Schedule.ScheduleStart < startTime)
                                {
                                    startTime = Schedule.ScheduleStart;
                                }
                                if (!endTime.HasValue || Schedule.ScheduleEnd > endTime)
                                {
                                    endTime = Schedule.ScheduleEnd;
                                }

                                _rep.Insert(Schedule);
                            }
                        }
                        if (startTime.HasValue)
                        {
                            meet.MeetStartTime = startTime;
                        }
                        if (endTime.HasValue)
                        {
                            meet.MeetEndTime = endTime;
                        }
                        _rep.Update(meet);
                        _rep.SaveChanges();
                    }

                    //添加会议和产品和科室关系表
                    if (meetInfoView.ProductAndDeps != null &&
                        meetInfoView.ProductAndDeps.BuNameList != null &&
                        meetInfoView.ProductAndDeps.Products != null &&
                        meetInfoView.ProductAndDeps.Departments != null)
                    {
                        MeetAndProAndDepRelation meetAndProAndDep;
                        foreach (var buName in meetInfoView.ProductAndDeps.BuNameList)
                        {
                            foreach (var pro in meetInfoView.ProductAndDeps.Products)
                            {
                                foreach (var dep in meetInfoView.ProductAndDeps.Departments)
                                {
                                    meetAndProAndDep              = new MeetAndProAndDepRelation();
                                    meetAndProAndDep.Id           = Guid.NewGuid().ToString();
                                    meetAndProAndDep.MeetId       = meet.Id;
                                    meetAndProAndDep.ProductId    = pro.ProId;
                                    meetAndProAndDep.DepartmentId = dep.DeptId;
                                    meetAndProAndDep.BuName       = buName;
                                    meetAndProAndDep.CreateTime   = DateTime.Now;
                                    meetAndProAndDep.CreateUser   = "******";
                                    _rep.Insert(meetAndProAndDep);
                                }
                            }
                        }
                        _rep.SaveChanges();
                    }

                    //会议标识
                    if (meetInfoView.Tags != null)
                    {
                        MeetTag meetTag;
                        foreach (var item in meetInfoView.Tags)
                        {
                            meetTag            = new MeetTag();
                            meetTag.Id         = Guid.NewGuid().ToString();
                            meetTag.MeetId     = meet.Id;
                            meetTag.TagId      = item.Id;
                            meetTag.CreateTime = DateTime.Now;
                            meetTag.CreateUser = "******";
                            meetTag.Remark     = "第三方调用";
                            _rep.Insert(meetTag);
                        }
                        _rep.SaveChanges();
                    }
                    tran.Commit();
                    rvm.Msg     = "success";
                    rvm.Success = true;
                    rvm.Result  = new
                    {
                        meet = meet ?? meetInfoView.Meet
                    };
                }
                catch (Exception ex)
                {
                    tran.Rollback();
                    rvm.Msg     = ex.Message;
                    rvm.Success = false;
                }
            }
            return(rvm);
        }
Beispiel #11
0
        public IHttpActionResult DeleteMeetInfo(MeetInfo meetInfo)
        {
            var ret = _meetService.DeleteMeetInfo(meetInfo, WorkUser);

            return(Ok(ret));
        }
Beispiel #12
0
        public IHttpActionResult ExportMeetQAResultReport(MeetInfo meetInfo)
        {
            var ret = _meetService.ExportMeetQAResultReport(meetInfo);

            return(Ok(ret));
        }
Beispiel #13
0
        public IHttpActionResult ExportMeetSituation(MeetInfo meetInfo)
        {
            var ret = _meetService.ExportMeetSituation(meetInfo);

            return(Ok(ret));
        }