From db227144dedfb5fb5b1e94e8c8b14eab9eb7462f Mon Sep 17 00:00:00 2001 From: username@email.com <yzy2002yzy@163.com> Date: 星期四, 01 十二月 2022 13:32:50 +0800 Subject: [PATCH] 中国政采网的四川数据 发送验证码 --- zhengcaioa/CommonToolsCore/AutoMapperConfigs.cs | 3 zhengcaioa/DTO/DailyManagementDTO .cs | 1 zhengcaioa/Crawler/sichuan/CcgpSichuanoperation.cs | 1757 +++++++++++++++++++++++++++++++++++++++++++++++++++ zhengcaioa/CommonToolsCore/SMSHelper.cs | 15 zhengcaioa/Services/DailyManagementService.cs | 59 + zhengcaioa/zhengcaioa/Controllers/AdmManagement/DailyManagementController.cs | 122 +++ zhengcaioa/DTO/AdmPhoneMessageDTO.cs | 16 zhengcaioa/IServices/IDailyManagementService.cs | 5 zhengcaioa/Crawler/Program.cs | 21 zhengcaioa/Model/AdmPhoneMessage.cs | 15 zhengcaioa/Model/zhengcaioaContext.cs | 17 11 files changed, 2,031 insertions(+), 0 deletions(-) diff --git a/zhengcaioa/CommonToolsCore/AutoMapperConfigs.cs b/zhengcaioa/CommonToolsCore/AutoMapperConfigs.cs index d317161..8d54d28 100644 --- a/zhengcaioa/CommonToolsCore/AutoMapperConfigs.cs +++ b/zhengcaioa/CommonToolsCore/AutoMapperConfigs.cs @@ -328,6 +328,9 @@ CreateMap<TChallengeRequestInfo, TChallengeRequestInfoDTO>(); CreateMap<TChallengeRequestInfoDTO, TChallengeRequestInfo>(); + CreateMap<AdmPhoneMessage, AdmPhoneMessageDTO>(); + CreateMap<AdmPhoneMessageDTO, AdmPhoneMessage>(); + } } } diff --git a/zhengcaioa/CommonToolsCore/SMSHelper.cs b/zhengcaioa/CommonToolsCore/SMSHelper.cs index 1d482ba..a3dfe62 100644 --- a/zhengcaioa/CommonToolsCore/SMSHelper.cs +++ b/zhengcaioa/CommonToolsCore/SMSHelper.cs @@ -100,5 +100,20 @@ string ssss = HttpClientRequest.HttpClientPostGB2312(url, "POST", data); return ssss; } + + + /// <summary> + /// 鍙戦�侀獙璇佺爜 + /// </summary> + /// <param name="phone"></param> + /// <param name="date"></param> + /// <returns></returns> + public static string PushWToUserMESYanZhengMa(string phone, string conment) + { + string url = "https://mb345.com/ws/BatchSend2.aspx"; + string data = "CorpID=XP010534&Pwd=123321&Mobile=" + phone + "&Content=鎮ㄥソ锛屾偍鐨勯獙璇佺爜鏄細" + conment + "銆愭斂閲囧挩璇㈢綉銆�&SendTime="; + string ssss = HttpClientRequest.HttpClientPostGB2312(url, "POST", data); + return ssss; + } } } diff --git a/zhengcaioa/Crawler/Program.cs b/zhengcaioa/Crawler/Program.cs index b72b4fe..de2fee8 100644 --- a/zhengcaioa/Crawler/Program.cs +++ b/zhengcaioa/Crawler/Program.cs @@ -147,6 +147,10 @@ Thread thread1 = new Thread(new ThreadStart(obj.Method2)); thread1.Start(); + + Thread thread2 = new Thread(new ThreadStart(obj.Method3)); + thread2.Start(); + Console.WriteLine("Hello World!"); } @@ -186,6 +190,23 @@ } + void Method3() + { + while (true) + { + ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; + var dbContextOptionBuilder = new DbContextOptionsBuilder<WebCrawlerContext>(); + var cccontext = new WebCrawlerContext(dbContextOptionBuilder.UseSqlServer(connection).Options); + + //var dbContextOptionBuilder1 = new DbContextOptionsBuilder<zhengcaioaContext>(); + //var cccontext1 = new zhengcaioaContext(dbContextOptionBuilder1.UseSqlServer(connection1).Options); + + //鑾峰彇涓浗鏀块噰缃戠殑鍥涘窛鏀块噰鏁版嵁 + CcgpSichuanoperation.operations(cccontext); + Thread.CurrentThread.Join(1000 * 60 * 60 * 2);//闃绘璁惧畾鏃堕棿 + } + } + diff --git a/zhengcaioa/Crawler/sichuan/CcgpSichuanoperation.cs b/zhengcaioa/Crawler/sichuan/CcgpSichuanoperation.cs new file mode 100644 index 0000000..de5b64d --- /dev/null +++ b/zhengcaioa/Crawler/sichuan/CcgpSichuanoperation.cs @@ -0,0 +1,1757 @@ +锘縰sing AngleSharp.Html.Parser; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Net.Http; +using System.Net.Http.Headers; +using System.Text; +using System.Threading; +using zhengcaioa.Models; +namespace Crawler.sichuan +{ + + public class CcgpSichuanoperation + { + + public static void operations(WebCrawlerContext _ccontext) + { + try + { + //鑾峰彇鏇存柊鏃堕棿 + string operationStartTime = ""; + string operationEndTime = ""; + Updatetime updatetime = _ccontext.Updatetimes.Where(x => x.Sheng == "涓浗鏀块噰缃戝洓宸濈渷").FirstOrDefault(); + if (updatetime != null) + { + operationStartTime = updatetime.Updatetime1.ToString("yyyy-MM-dd"); + operationEndTime = updatetime.Updatetime1.AddDays(1).ToString("yyyy-MM-dd"); + //updatetime.Updatetime1 = DateTime.Now.AddDays(-1); + //_ccontext.SaveChanges(); + } + else + { + operationStartTime = "2021-12-01"; //DateTime.Now.AddYears(-1).ToString("yyyy-MM-dd"); + operationEndTime = "2022-12-01";//DateTime.Now.ToString("yyyy-MM-dd"); + } + var currPage = 1; + string sichuanpageurll = ""; + + #region 鎰忓悜鍏紑 + currPage = 1; + sichuanpageurll = "http://search.ccgp.gov.cn/bxsearch?searchtype=1&page_index=1&bidSort=0&buyerName=&projectId=&pinMu=0&bidType=9&dbselect=bidx&kw=%E6%84%8F%E5%90%91&start_time=&end_time=&timeType=6&displayZone=%E5%9B%9B%E5%B7%9D&zoneId=51&pppStatus=&agentName="; + logg.WriteLog("涓浗鏀块噰缃戝洓宸濈渷鎰忓悜鍏紑 寮�濮嬭幏鍙�", "涓浗鏀块噰缃戝洓宸濈渷"); + yixianggonggao(_ccontext, sichuanpageurll, operationStartTime, operationEndTime, currPage); + logg.WriteLog("涓浗鏀块噰缃戝洓宸濈渷鎰忓悜鍏紑 寮�濮嬭幏鍙栫粨鏉�", "涓浗鏀块噰缃戝洓宸濈渷"); + #endregion + + + + #region 鍏紑鎷涙爣 + currPage = 1; + sichuanpageurll = "http://search.ccgp.gov.cn/bxsearch?searchtype=1&page_index=1&bidSort=0&buyerName=&projectId=&pinMu=0&bidType=1&dbselect=bidx&kw=&start_time=&end_time=&timeType=6&displayZone=%E5%9B%9B%E5%B7%9D&zoneId=51&pppStatus=&agentName="; + logg.WriteLog("涓浗鏀块噰缃戝洓宸濈渷閲囪喘鍏憡 鍏紑鎷涙爣 寮�濮嬭幏鍙�", "涓浗鏀块噰缃戝洓宸濈渷"); + caigougonggao(_ccontext, sichuanpageurll, operationStartTime, operationEndTime, currPage, "1", "鍏紑鎷涙爣"); + logg.WriteLog("涓浗鏀块噰缃戝洓宸濈渷閲囪喘鍏憡 鍏紑鎷涙爣 寮�濮嬭幏鍙栫粨鏉�", "涓浗鏀块噰缃戝洓宸濈渷"); + #endregion + + #region 璇环 + currPage = 1; + sichuanpageurll = "http://search.ccgp.gov.cn/bxsearch?searchtype=1&page_index=1&bidSort=0&buyerName=&projectId=&pinMu=0&bidType=2&dbselect=bidx&kw=&start_time=&end_time=&timeType=6&displayZone=%E5%9B%9B%E5%B7%9D&zoneId=51&pppStatus=&agentName="; + logg.WriteLog("涓浗鏀块噰缃戝洓宸濈渷閲囪喘鍏憡 璇环 寮�濮嬭幏鍙�", "涓浗鏀块噰缃戝洓宸濈渷"); + caigougonggao(_ccontext, sichuanpageurll, operationStartTime, operationEndTime, currPage, "4", "璇环"); + logg.WriteLog("涓浗鏀块噰缃戝洓宸濈渷閲囪喘鍏憡 璇环 寮�濮嬭幏鍙栫粨鏉�", "涓浗鏀块噰缃戝洓宸濈渷"); + #endregion + #region 绔炰簤鎬ц皥鍒� + currPage = 1; + sichuanpageurll = "http://search.ccgp.gov.cn/bxsearch?searchtype=1&page_index=1&bidSort=0&buyerName=&projectId=&pinMu=0&bidType=3&dbselect=bidx&kw=&start_time=&end_time=&timeType=6&displayZone=%E5%9B%9B%E5%B7%9D&zoneId=51&pppStatus=&agentName="; + logg.WriteLog("涓浗鏀块噰缃戝洓宸濈渷閲囪喘鍏憡 绔炰簤鎬ц皥鍒� 寮�濮嬭幏鍙�", "涓浗鏀块噰缃戝洓宸濈渷"); + caigougonggao(_ccontext, sichuanpageurll, operationStartTime, operationEndTime, currPage, "5", "绔炰簤鎬ц皥鍒�"); + logg.WriteLog("涓浗鏀块噰缃戝洓宸濈渷閲囪喘鍏憡 绔炰簤鎬ц皥鍒� 寮�濮嬭幏鍙栫粨鏉�", "涓浗鏀块噰缃戝洓宸濈渷"); + #endregion + #region 鍗曚竴鏉ユ簮 + currPage = 1; + sichuanpageurll = "http://search.ccgp.gov.cn/bxsearch?searchtype=1&page_index=1&bidSort=0&buyerName=&projectId=&pinMu=0&bidType=4&dbselect=bidx&kw=&start_time=&end_time=&timeType=6&displayZone=%E5%9B%9B%E5%B7%9D&zoneId=51&pppStatus=&agentName="; + logg.WriteLog("涓浗鏀块噰缃戝洓宸濈渷閲囪喘鍏憡 鍗曚竴鏉ユ簮 寮�濮嬭幏鍙�", "涓浗鏀块噰缃戝洓宸濈渷"); + caigougonggao(_ccontext, sichuanpageurll, operationStartTime, operationEndTime, currPage, "7", "鍗曚竴鏉ユ簮"); + logg.WriteLog("涓浗鏀块噰缃戝洓宸濈渷閲囪喘鍏憡 鍗曚竴鏉ユ簮 寮�濮嬭幏鍙栫粨鏉�", "涓浗鏀块噰缃戝洓宸濈渷"); + #endregion + #region 閭�璇锋嫑鏍� + currPage = 1; + sichuanpageurll = "http://search.ccgp.gov.cn/bxsearch?searchtype=1&page_index=1&bidSort=0&buyerName=&projectId=&pinMu=0&bidType=6&dbselect=bidx&kw=&start_time=&end_time=&timeType=6&displayZone=%E5%9B%9B%E5%B7%9D&zoneId=51&pppStatus=&agentName="; + logg.WriteLog("涓浗鏀块噰缃戝洓宸濈渷閲囪喘鍏憡 閭�璇锋嫑鏍� 寮�濮嬭幏鍙�", "涓浗鏀块噰缃戝洓宸濈渷"); + caigougonggao(_ccontext, sichuanpageurll, operationStartTime, operationEndTime, currPage, "2", "閭�璇锋嫑鏍�"); + logg.WriteLog("涓浗鏀块噰缃戝洓宸濈渷閲囪喘鍏憡 閭�璇锋嫑鏍� 寮�濮嬭幏鍙栫粨鏉�", "涓浗鏀块噰缃戝洓宸濈渷"); + #endregion + #region 绔炰簤鎬х鍟� + currPage = 1; + sichuanpageurll = "http://search.ccgp.gov.cn/bxsearch?searchtype=1&page_index=1&bidSort=0&buyerName=&projectId=&pinMu=0&bidType=10&dbselect=bidx&kw=&start_time=&end_time=&timeType=6&displayZone=%E5%9B%9B%E5%B7%9D&zoneId=51&pppStatus=&agentName="; + logg.WriteLog("涓浗鏀块噰缃戝洓宸濈渷閲囪喘鍏憡 绔炰簤鎬х鍟� 寮�濮嬭幏鍙�", "涓浗鏀块噰缃戝洓宸濈渷"); + caigougonggao(_ccontext, sichuanpageurll, operationStartTime, operationEndTime, currPage, "3", "绔炰簤鎬х鍟�"); + logg.WriteLog("涓浗鏀块噰缃戝洓宸濈渷閲囪喘鍏憡 绔炰簤鎬х鍟� 寮�濮嬭幏鍙栫粨鏉�", "涓浗鏀块噰缃戝洓宸濈渷"); + #endregion + + + + #region 涓爣鍏憡 + currPage = 1; + sichuanpageurll = "http://search.ccgp.gov.cn/bxsearch?searchtype=1&page_index=1&bidSort=0&buyerName=&projectId=&pinMu=0&bidType=7&dbselect=bidx&kw=&start_time=&end_time=&timeType=6&displayZone=%E5%9B%9B%E5%B7%9D&zoneId=51&pppStatus=&agentName="; + logg.WriteLog("涓浗鏀块噰缃戝洓宸濈渷涓爣鍏憡 寮�濮嬭幏鍙�", "涓浗鏀块噰缃戝洓宸濈渷"); + zhongbiaogonggao(_ccontext, sichuanpageurll, operationStartTime, operationEndTime, currPage); + logg.WriteLog("涓浗鏀块噰缃戝洓宸濈渷涓爣鍏憡 寮�濮嬭幏鍙栫粨鏉�", "涓浗鏀块噰缃戝洓宸濈渷"); + #endregion + + + #region 鎴愪氦鍏憡 + currPage = 1; + sichuanpageurll = "http://search.ccgp.gov.cn/bxsearch?searchtype=1&page_index=1&bidSort=0&buyerName=&projectId=&pinMu=0&bidType=11&dbselect=bidx&kw=&start_time=&end_time=&timeType=6&displayZone=%E5%9B%9B%E5%B7%9D&zoneId=51&pppStatus=&agentName="; + logg.WriteLog("涓浗鏀块噰缃戝洓宸濈渷鎴愪氦鍏憡 寮�濮嬭幏鍙�", "涓浗鏀块噰缃戝洓宸濈渷"); + zhongbiaogonggao(_ccontext, sichuanpageurll, operationStartTime, operationEndTime, currPage); + logg.WriteLog("涓浗鏀块噰缃戝洓宸濈渷鎴愪氦鍏憡 寮�濮嬭幏鍙栫粨鏉�", "涓浗鏀块噰缃戝洓宸濈渷"); + #endregion + + + #region 鏇存鍏憡 + currPage = 1; + sichuanpageurll = "http://search.ccgp.gov.cn/bxsearch?searchtype=1&page_index=1&bidSort=0&buyerName=&projectId=&pinMu=0&bidType=8&dbselect=bidx&kw=&start_time=&end_time=&timeType=6&displayZone=%E5%9B%9B%E5%B7%9D&zoneId=51&pppStatus=&agentName="; + logg.WriteLog("涓浗鏀块噰缃戝洓宸濈渷鏇存鍏憡 寮�濮嬭幏鍙�", "涓浗鏀块噰缃戝洓宸濈渷"); + gengzhenggonggao(_ccontext, sichuanpageurll, operationStartTime, operationEndTime, currPage); + logg.WriteLog("涓浗鏀块噰缃戝洓宸濈渷鏇存鍏憡 寮�濮嬭幏鍙栫粨鏉�", "涓浗鏀块噰缃戝洓宸濈渷"); + #endregion + + + #region 搴熸爣鍏憡 + currPage = 1; + sichuanpageurll = "http://search.ccgp.gov.cn/bxsearch?searchtype=1&page_index=1&bidSort=0&buyerName=&projectId=&pinMu=0&bidType=12&dbselect=bidx&kw=&start_time=&end_time=&timeType=6&displayZone=%E5%9B%9B%E5%B7%9D&zoneId=51&pppStatus=&agentName="; + logg.WriteLog("涓浗鏀块噰缃戝洓宸濈渷搴熸爣鍏憡 寮�濮嬭幏鍙�", "涓浗鏀块噰缃戝洓宸濈渷"); + feibiaogonggao(_ccontext, sichuanpageurll, operationStartTime, operationEndTime , currPage); + logg.WriteLog("涓浗鏀块噰缃戝洓宸濈渷搴熸爣鍏憡 寮�濮嬭幏鍙栫粨鏉�", "涓浗鏀块噰缃戝洓宸濈渷"); + #endregion + + + + //淇濆瓨鏈�鍚庢洿鏂版椂闂� + if (updatetime != null) + { + updatetime.Updatetime1 = DateTime.Now.AddDays(-1); + _ccontext.SaveChanges(); + } + else + { + updatetime = new Updatetime(); + updatetime.Id = Guid.NewGuid().ToString(); + updatetime.Sheng = "涓浗鏀块噰缃戝洓宸濈渷"; + updatetime.Updatetime1 = DateTime.Now.AddDays(-1); + _ccontext.Updatetimes.Add(updatetime); + _ccontext.SaveChanges(); + } + } + catch (Exception ex) + { + logg.WriteLog(ex.Message, "涓浗鏀块噰缃戝洓宸濈渷"); + + logg.WriteLog(ex.StackTrace, "涓浗鏀块噰缃戝洓宸濈渷"); + + logg.WriteLog(ex.ToString(), "涓浗鏀块噰缃戝洓宸濈渷"); + } + finally + { + + } + } + + + + + //閲囪喘鍏憡 + public static void caigougonggao(WebCrawlerContext _ccontext, string sichuanpageurll, string startTime, string endTime , int page, string cgfs, string cgfsName) + { + + sichuanpageurll = sichuanpageurll.Replace("start_time=", "start_time=" + startTime.Replace("-", "%3A")); + sichuanpageurll = sichuanpageurll.Replace("end_time=", "end_time=" + endTime.Replace("-", "%3A")); + var parser = new HtmlParser(); + var list11 = new List<AngleSharp.Dom.IElement>(); + while (true) + { + Thread.CurrentThread.Join(1000 * 4);//闃绘璁惧畾鏃堕棿 + logg.WriteLog(page.ToString(), "涓浗鏀块噰缃戝洓宸濈渷"); + string sichuanpageurl2 = sichuanpageurll.Replace("page_index=1", "page_index=" + page); + using (HttpClient client = new HttpClient()) + { + //List<sichuanjieshoudtl> data = new List<sichuanjieshoudtl>(); + HttpResponseMessage response = client.GetAsync(sichuanpageurl2).Result; + var res = response.Content.ReadAsStringAsync().Result; + var document = parser.ParseDocument(res); + var sssdfsdfsd = document.All.Where(m => m.ClassName == "vT-srch-result-list").FirstOrDefault(); + var contentList = sssdfsdfsd.QuerySelector("ul"); + if (contentList != null) + { + var lists = contentList.QuerySelectorAll("li"); + if (lists == null || lists.Length == 0) + { + break; + } + if (page != 1) + { + var list22 = lists.ToList(); + var breakable = true; + if (list11.Count == list22.Count) + { + foreach (var list11111 in list11) + { + var listcount = list22.Count(x=>x.InnerHtml == list11111.InnerHtml); + + if (listcount <= 0) + { + breakable = false; + break; + } + } + if (breakable) + { + break; + } + } + list11 = list22; + } + else + { + list11 = lists.ToList(); + } + + + + foreach (var sichuanjieshoudtl1 in lists) + { + Thread.CurrentThread.Join(1000 * 4);//闃绘璁惧畾鏃堕棿 + try + { + sichuanjieshoudtl aaaaaaaa = new sichuanjieshoudtl(); + aaaaaaaa.pageurl = sichuanjieshoudtl1.QuerySelector("a").GetAttribute("href"); + + logg.WriteLog(aaaaaaaa.pageurl, "涓浗鏀块噰缃戝洓宸濈渷"); + aaaaaaaa.title = sichuanjieshoudtl1.QuerySelector("a").TextContent.Replace("\n", "").Trim() ; + aaaaaaaa.shorttitle = aaaaaaaa.title; + + + + string[] sssssss = sichuanjieshoudtl1.QuerySelector("span").TextContent.Replace("|","").Split("\n"); + string Purchaser = null; + string Agency = null; + var NoticeTime = sssssss[0].Trim(); + foreach(var ssss in sssssss) + { + if (ssss.IndexOf("閲囪喘浜�")>=0) + { + Purchaser = ssss.Replace("閲囪喘浜�", "").Replace("锛�", "").Replace("/", "").Trim(); + } + if (ssss.IndexOf("浠g悊鏈烘瀯") >= 0) + { + Agency = ssss.Replace("浠g悊鏈烘瀯", "").Replace("锛�", "").Replace("/", "").Trim(); + } + } + using (HttpClient clientdtl = new HttpClient()) + { + ZhengfuProject zhengfuProject = _ccontext.ZhengfuProjects.Where(x => x.Pageurl == aaaaaaaa.pageurl).FirstOrDefault(); + if (zhengfuProject == null) + { + HttpResponseMessage responsedtl = clientdtl.GetAsync(aaaaaaaa.pageurl).Result; + var resdtl = responsedtl.Content.ReadAsStringAsync().Result; + var documentdtl = parser.ParseDocument(resdtl); + + var dtl = documentdtl.All.Where(m => m.ClassName == "vF_detail_content_container").FirstOrDefault(); + + var content = dtl.OuterHtml; + + var fujian = documentdtl.All.Where(m => m.ClassName == "main").FirstOrDefault(); + + var fujians = documentdtl.All.Where(m => m.ClassName == "bizDownload").ToList() ; + if(fujians!=null&& fujians.Count > 0) + { + var fujianhtml = "<div class=\"bid_attachtab\"><table width=\"700\" border=\"0\" cellspacing=\"1\" bgcolor=\"#efefef\" style=\"text-align: left; width: 100%; margin: 0px auto;\"><tbody>"; + foreach (var fujianya in fujians) + { + var ssss = fujianya.Id; + var sssss = fujianya.InnerHtml; + fujianhtml += "<tr><td class=\"bid_attachtab_content\">闄勪欢涓嬭浇锛�<a class=\"bizDownload\" target=\"_blank\" href =\"http://download.ccgp.gov.cn/oss/download?uuid=" + ssss + "\" id=\"0E1723104D34335C527765FF6CD28A\" title=\"鐐瑰嚮涓嬭浇\">"+ sssss + "</a><br></td></tr>"; + } + fujianhtml += "</tbody></table></div>"; + + content += fujianhtml; + } + + + + string OpenTenderCode = null; + decimal? Budget = null; + DateTime? OpenTenderTime = null; + + var td = dtl.QuerySelectorAll("p"); + + if (td != null && td.Length>0) + { + + + for (int i = 0; i < td.Length; i++) + { + if (td[i].TextContent.IndexOf("椤圭洰缂栧彿锛�") >= 0 && td[i].TextContent.IndexOf("銆�") < 0) + { + if (string.IsNullOrEmpty(OpenTenderCode)) + { + OpenTenderCode = td[i].TextContent.Replace("椤圭洰缂栧彿锛�", "").Replace("1锛�", "").Replace("/", "").Trim(); + } + + + + } + if (td[i].TextContent.IndexOf("棰勭畻閲戦锛�") >= 0) + { + + if(td[i].TextContent.IndexOf("涓囧厓") >= 0) + { + var yusuan = td[i].TextContent.Replace("棰勭畻閲戦锛�", "").Replace("3锛�", "").Replace("锛�", "").Replace("锛�", "").Replace("涓囧厓", "").Replace("浜烘皯甯�", "").Trim(); + decimal a = 0; + if (decimal.TryParse(yusuan, out a)) + { + Budget = a * 10000; + } + + + } + else + { + var yusuan = td[i].TextContent.Replace("棰勭畻閲戦锛�", "").Replace("3锛�", "").Replace("锛�", "").Replace("锛�", "").Replace("鍏�", "").Replace("浜烘皯甯�", "").Trim(); + decimal a = 0; + if (decimal.TryParse(yusuan, out a)) + { + Budget = a; + } + } + } + + + if (td[i].TextContent.IndexOf("寮�鏍囨椂闂达細") >= 0) + { + + + DateTime a; + var sss = td[i].TextContent.Replace("寮�鏍囨椂闂达細", "").Replace("鍖椾含鏃堕棿锛�", "").Replace("骞�", "-").Replace("鏈�", "-").Replace("鏃�", " ").Replace("鐐�", ":").Replace("鏃�", ":").Replace("鍒嗭紙", "").Replace("鍒�", ":").Replace("绉�", "").Replace("锛�", "").Trim(); + if (DateTime.TryParse(sss, out a)) + { + OpenTenderTime = a; + } + + + } + if (td[i].TextContent.IndexOf("1.鏃堕棿锛�") >= 0) + { + if (!OpenTenderTime.HasValue) + { + DateTime a; + var sss = td[i].TextContent.Replace("1.鏃堕棿锛�", "").Replace("鍖椾含鏃堕棿锛�", "").Replace("骞�", "-").Replace("鏈�", "-").Replace("鏃�", " ").Replace("鐐�", ":").Replace("鏃�", ":").Replace("鍒嗭紙", "").Replace("鍒�", ":").Replace("绉�", "").Replace("锛�", "").Trim(); + if (DateTime.TryParse(sss, out a)) + { + OpenTenderTime = a; + } + } + + + + + } + + if (td[i].TextContent.StartsWith("鏃堕棿锛�")) + { + if (!OpenTenderTime.HasValue) + { + DateTime a; + var sss = td[i].TextContent.Replace("鏃堕棿锛�", "").Replace("鍖椾含鏃堕棿锛�", "").Replace("骞�", "-").Replace("鏈�", "-").Replace("鏃�", " ").Replace("鐐�", ":").Replace("鏃�", ":").Replace("鍒嗭紙", "").Replace("鍒�", ":").Replace("绉�", "").Replace("锛�", "").Trim(); + if (DateTime.TryParse(sss, out a)) + { + OpenTenderTime = a; + } + } + + + + + } + + } + } + + var zhengfuProject1 = _ccontext.ZhengfuProjects.Where(x => x.RecStatus == "A" && x.Title == aaaaaaaa.title && x.Gglx == "02" && x.OpenTenderCode == OpenTenderCode).FirstOrDefault(); + if (zhengfuProject1 != null) + continue; + + + + + zhengfuProject = new ZhengfuProject(); + zhengfuProject.Id = Guid.NewGuid().ToString(); + zhengfuProject.Gglx = "02"; + string gglxName = "閲囪喘鍏憡"; + zhengfuProject.NoticeTime = DateTime.Parse(NoticeTime); + zhengfuProject.OpenTenderTime = OpenTenderTime; + zhengfuProject.RegionCode = null; + //regionName = regionName; + zhengfuProject.Sheng = "510000"; + string ShengName = "鍥涘窛鐪�"; + zhengfuProject.City = null ; + //CityName = CityName; + + + zhengfuProject.Cgfs = cgfs; + + + zhengfuProject.OpenTenderCode = OpenTenderCode; + zhengfuProject.Budget = Budget; + + + zhengfuProject.Title = aaaaaaaa.title; + zhengfuProject.Shorttitle = aaaaaaaa.shorttitle; + zhengfuProject.Pageurl = aaaaaaaa.pageurl; + zhengfuProject.Purchaser = Purchaser; + + + + + zhengfuProject.Agency = Agency; + zhengfuProject.AgencyCode = null; + zhengfuProject.Content = content; + zhengfuProject.RecStatus = "A"; + zhengfuProject.Creater = "1"; + zhengfuProject.Createtime = DateTime.Now; + zhengfuProject.Modifier = "1"; + zhengfuProject.Modifytime = zhengfuProject.Createtime; + _ccontext.ZhengfuProjects.Add(zhengfuProject); + + + string url = $"{Program.api_domain}/webcrawler/_doc/" + zhengfuProject.Id; + string result = string.Empty; + Uri postUrl = new Uri(url); + eswebcrawler eswebcrawler1 = new eswebcrawler(); + eswebcrawler1.Id = zhengfuProject.Id; + eswebcrawler1.noticeTime = zhengfuProject.NoticeTime.ToString("yyyy-MM-dd HH:mm:ss"); + eswebcrawler1.openTenderTime = zhengfuProject.OpenTenderTime.HasValue ? zhengfuProject.OpenTenderTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : null; + eswebcrawler1.sheng = zhengfuProject.Sheng; + eswebcrawler1.shengName = ShengName; + eswebcrawler1.city = zhengfuProject.City; + eswebcrawler1.cityName = null; + eswebcrawler1.regionCode = zhengfuProject.RegionCode; + eswebcrawler1.regionName = null; + eswebcrawler1.cgfs = zhengfuProject.Cgfs; + eswebcrawler1.cgfsName = cgfsName; + eswebcrawler1.gglx = zhengfuProject.Gglx; + eswebcrawler1.gglxName = gglxName; + eswebcrawler1.openTenderCode = zhengfuProject.OpenTenderCode; + eswebcrawler1.title = zhengfuProject.Title; + eswebcrawler1.shorttitle = zhengfuProject.Shorttitle; + eswebcrawler1.pageurl = zhengfuProject.Pageurl; + eswebcrawler1.pingmu = zhengfuProject.Pingmu; + eswebcrawler1.pingmuName = ""; + eswebcrawler1.purchaser = zhengfuProject.Purchaser; + eswebcrawler1.budget = zhengfuProject.Budget.HasValue ? zhengfuProject.Budget.Value.ToString() : ""; + eswebcrawler1.agency = zhengfuProject.Agency; + eswebcrawler1.agencyCode = zhengfuProject.AgencyCode; + eswebcrawler1.modifyTime = zhengfuProject.Modifytime.ToString("yyyy-MM-dd HH:mm:ss"); + + string requestJson = JsonConvert.SerializeObject(eswebcrawler1); + + using (HttpContent httpContent = new StringContent(requestJson)) + { + httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); + using (HttpClient httpClient = new HttpClient()) + { + httpClient.Timeout = TimeSpan.FromSeconds(60); + HttpResponseMessage responseMessage = httpClient.PutAsync(postUrl, httpContent).Result; + result = responseMessage.Content.ReadAsStringAsync().Result; + } + + } + + Newtonsoft.Json.Linq.JObject jobject = (Newtonsoft.Json.Linq.JObject)JsonConvert.DeserializeObject(result); + + if (jobject["error"] == null && jobject["_shards"]["successful"].ToString() == "1") + { + + } + else + { + throw new Exception("淇濆瓨鏁版嵁搴撳嚭閿欙紒"); + } + + + _ccontext.SaveChanges(); + + Thread.CurrentThread.Join(1000 * 4);//闃绘璁惧畾鏃堕棿 + } + } + } + catch (Exception ex) + { + logg.WriteLog(ex.Message, "涓浗鏀块噰缃戝洓宸濈渷"); + + logg.WriteLog(ex.StackTrace, "涓浗鏀块噰缃戝洓宸濈渷"); + + logg.WriteLog(ex.ToString(), "涓浗鏀块噰缃戝洓宸濈渷"); + } + + + } + } + } + page += 1; + + } + + + + + + + + } + + + //鎰忓悜鍏紑 + public static void yixianggonggao(WebCrawlerContext _ccontext, string sichuanpageurll, string startTime,string endTime, int page) + { + + sichuanpageurll = sichuanpageurll.Replace("start_time=", "start_time=" + startTime.Replace("-", "%3A")); + sichuanpageurll = sichuanpageurll.Replace("end_time=", "end_time=" + endTime.Replace("-", "%3A")); + var parser = new HtmlParser(); + var list11 = new List<AngleSharp.Dom.IElement>(); + while (true) + { + Thread.CurrentThread.Join(1000 * 4);//闃绘璁惧畾鏃堕棿 + logg.WriteLog(page.ToString(), "涓浗鏀块噰缃戝洓宸濈渷"); + string sichuanpageurl2 = sichuanpageurll.Replace("page_index=1", "page_index=" + page); + using (HttpClient client = new HttpClient()) + { + //List<sichuanjieshoudtl> data = new List<sichuanjieshoudtl>(); + HttpResponseMessage response = client.GetAsync(sichuanpageurl2).Result; + var res = response.Content.ReadAsStringAsync().Result; + var document = parser.ParseDocument(res); + var sssdfsdfsd = document.All.Where(m => m.ClassName == "vT-srch-result-list").FirstOrDefault(); + var contentList = sssdfsdfsd.QuerySelector("ul"); + if (contentList != null) + { + var lists = contentList.QuerySelectorAll("li"); + if (lists == null || lists.Length == 0) + { + break; + } + if (page != 1) + { + var list22 = lists.ToList(); + var breakable = true; + if (list11.Count == list22.Count) + { + foreach (var list11111 in list11) + { + var listcount = list22.Count(x => x.InnerHtml == list11111.InnerHtml); + + if (listcount <= 0) + { + breakable = false; + break; + } + } + if (breakable) + { + break; + } + } + list11 = list22; + } + else + { + list11 = lists.ToList(); + } + foreach (var sichuanjieshoudtl1 in lists) + { + Thread.CurrentThread.Join(1000 * 4);//闃绘璁惧畾鏃堕棿 + try + { + sichuanjieshoudtl aaaaaaaa = new sichuanjieshoudtl(); + aaaaaaaa.pageurl = sichuanjieshoudtl1.QuerySelector("a").GetAttribute("href"); + + logg.WriteLog(aaaaaaaa.pageurl, "涓浗鏀块噰缃戝洓宸濈渷"); + aaaaaaaa.title = sichuanjieshoudtl1.QuerySelector("a").TextContent.Replace("\n", "").Trim(); + aaaaaaaa.shorttitle = aaaaaaaa.title; + + + + string[] sssssss = sichuanjieshoudtl1.QuerySelector("span").TextContent.Replace("|", "").Split("\n"); + string Purchaser = null; + string Agency = null; + var NoticeTime = sssssss[0].Trim(); + foreach (var ssss in sssssss) + { + if (ssss.IndexOf("閲囪喘浜�") >= 0) + { + Purchaser = ssss.Replace("閲囪喘浜�", "").Replace("锛�", "").Replace("/", "").Trim(); + } + if (ssss.IndexOf("浠g悊鏈烘瀯") >= 0) + { + Agency = ssss.Replace("浠g悊鏈烘瀯", "").Replace("锛�", "").Replace("/", "").Trim(); + } + } + using (HttpClient clientdtl = new HttpClient()) + { + ZhengfuProject zhengfuProject = _ccontext.ZhengfuProjects.Where(x => x.Pageurl == aaaaaaaa.pageurl).FirstOrDefault(); + if (zhengfuProject == null) + { + HttpResponseMessage responsedtl = clientdtl.GetAsync(aaaaaaaa.pageurl).Result; + var resdtl = responsedtl.Content.ReadAsStringAsync().Result; + var documentdtl = parser.ParseDocument(resdtl); + + var dtl = documentdtl.All.Where(m => m.ClassName == "vF_detail_content_container").FirstOrDefault(); + + var content = dtl.OuterHtml; + + var fujian = documentdtl.All.Where(m => m.ClassName == "main").FirstOrDefault(); + + var fujians = documentdtl.All.Where(m => m.ClassName == "bizDownload").ToList(); + if (fujians != null && fujians.Count > 0) + { + var fujianhtml = "<div class=\"bid_attachtab\"><table width=\"700\" border=\"0\" cellspacing=\"1\" bgcolor=\"#efefef\" style=\"text-align: left; width: 100%; margin: 0px auto;\"><tbody>"; + foreach (var fujianya in fujians) + { + var ssss = fujianya.Id; + var sssss = fujianya.InnerHtml; + fujianhtml += "<tr><td class=\"bid_attachtab_content\">闄勪欢涓嬭浇锛�<a class=\"bizDownload\" target=\"_blank\" href =\"http://download.ccgp.gov.cn/oss/download?uuid=" + ssss + "\" id=\"0E1723104D34335C527765FF6CD28A\" title=\"鐐瑰嚮涓嬭浇\">" + sssss + "</a><br></td></tr>"; + } + fujianhtml += "</tbody></table></div>"; + + content += fujianhtml; + } + + + + string OpenTenderCode = null; + decimal? Budget = null; + DateTime? OpenTenderTime = null; + + var td = dtl.QuerySelectorAll("p"); + + if (td != null && td.Length > 0) + { + + + for (int i = 0; i < td.Length; i++) + { + if (td[i].TextContent.IndexOf("椤圭洰缂栧彿锛�") >= 0) + { + + OpenTenderCode = td[i].TextContent.Replace("椤圭洰缂栧彿锛�", "").Replace("/","").Trim(); + + } + if (td[i].TextContent.IndexOf("棰勭畻閲戦锛�") >= 0) + { + var yusuan = td[i].TextContent.Replace("棰勭畻閲戦锛�", "").Replace("锛�", "").Replace("锛�", "").Replace("涓囧厓", "").Replace("浜烘皯甯�", "").Trim(); + decimal a = 0; + if (decimal.TryParse(yusuan, out a)) + { + Budget = a * 10000; + } + + + } + + if (td[i].TextContent.IndexOf("寮�鏍囨椂闂达細") >= 0) + { + + + DateTime a; + var sss = td[i].TextContent.Replace("寮�鏍囨椂闂达細", "").Replace("锛堝寳浜椂闂达級", "").Replace("骞�", "-").Replace("鏈�", "-").Replace("鏃�", " ").Replace("鐐�", ":").Replace("鍒�", "").Trim(); + if (DateTime.TryParse(sss, out a)) + { + OpenTenderTime = a; + } + + + } + } + } + + var zhengfuProject1 = _ccontext.ZhengfuProjects.Where(x => x.RecStatus == "A" && x.Title == aaaaaaaa.title && x.Gglx == "01" && x.OpenTenderCode == OpenTenderCode).FirstOrDefault(); + if (zhengfuProject1 != null) + continue; + + + + + zhengfuProject = new ZhengfuProject(); + zhengfuProject.Id = Guid.NewGuid().ToString(); + zhengfuProject.Gglx = "01"; + string gglxName = "鎰忓悜鍏紑"; + zhengfuProject.NoticeTime = DateTime.Parse(NoticeTime); + zhengfuProject.OpenTenderTime = OpenTenderTime; + zhengfuProject.RegionCode = null; + //regionName = regionName; + zhengfuProject.Sheng = "510000"; + string ShengName = "鍥涘窛鐪�"; + zhengfuProject.City = null; + //CityName = CityName; + + + zhengfuProject.Cgfs = null; + + + zhengfuProject.OpenTenderCode = OpenTenderCode; + zhengfuProject.Budget = Budget; + + + zhengfuProject.Title = aaaaaaaa.title; + zhengfuProject.Shorttitle = aaaaaaaa.shorttitle; + zhengfuProject.Pageurl = aaaaaaaa.pageurl; + zhengfuProject.Purchaser = Purchaser; + + + + + zhengfuProject.Agency = Agency; + zhengfuProject.AgencyCode = null; + zhengfuProject.Content = content; + zhengfuProject.RecStatus = "A"; + zhengfuProject.Creater = "1"; + zhengfuProject.Createtime = DateTime.Now; + zhengfuProject.Modifier = "1"; + zhengfuProject.Modifytime = zhengfuProject.Createtime; + _ccontext.ZhengfuProjects.Add(zhengfuProject); + + + string url = $"{Program.api_domain}/webcrawler/_doc/" + zhengfuProject.Id; + string result = string.Empty; + Uri postUrl = new Uri(url); + eswebcrawler eswebcrawler1 = new eswebcrawler(); + eswebcrawler1.Id = zhengfuProject.Id; + eswebcrawler1.noticeTime = zhengfuProject.NoticeTime.ToString("yyyy-MM-dd HH:mm:ss"); + eswebcrawler1.openTenderTime = zhengfuProject.OpenTenderTime.HasValue ? zhengfuProject.OpenTenderTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : null; + eswebcrawler1.sheng = zhengfuProject.Sheng; + eswebcrawler1.shengName = ShengName; + eswebcrawler1.city = zhengfuProject.City; + eswebcrawler1.cityName = null; + eswebcrawler1.regionCode = zhengfuProject.RegionCode; + eswebcrawler1.regionName = null; + eswebcrawler1.cgfs = zhengfuProject.Cgfs; + eswebcrawler1.cgfsName = null; + eswebcrawler1.gglx = zhengfuProject.Gglx; + eswebcrawler1.gglxName = gglxName; + eswebcrawler1.openTenderCode = zhengfuProject.OpenTenderCode; + eswebcrawler1.title = zhengfuProject.Title; + eswebcrawler1.shorttitle = zhengfuProject.Shorttitle; + eswebcrawler1.pageurl = zhengfuProject.Pageurl; + eswebcrawler1.pingmu = zhengfuProject.Pingmu; + eswebcrawler1.pingmuName = ""; + eswebcrawler1.purchaser = zhengfuProject.Purchaser; + eswebcrawler1.budget = zhengfuProject.Budget.HasValue ? zhengfuProject.Budget.Value.ToString() : ""; + eswebcrawler1.agency = zhengfuProject.Agency; + eswebcrawler1.agencyCode = zhengfuProject.AgencyCode; + eswebcrawler1.modifyTime = zhengfuProject.Modifytime.ToString("yyyy-MM-dd HH:mm:ss"); + + string requestJson = JsonConvert.SerializeObject(eswebcrawler1); + + using (HttpContent httpContent = new StringContent(requestJson)) + { + httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); + using (HttpClient httpClient = new HttpClient()) + { + httpClient.Timeout = TimeSpan.FromSeconds(60); + HttpResponseMessage responseMessage = httpClient.PutAsync(postUrl, httpContent).Result; + result = responseMessage.Content.ReadAsStringAsync().Result; + } + + } + + Newtonsoft.Json.Linq.JObject jobject = (Newtonsoft.Json.Linq.JObject)JsonConvert.DeserializeObject(result); + + if (jobject["error"] == null && jobject["_shards"]["successful"].ToString() == "1") + { + + } + else + { + throw new Exception("淇濆瓨鏁版嵁搴撳嚭閿欙紒"); + } + + + _ccontext.SaveChanges(); + + Thread.CurrentThread.Join(1000 * 4);//闃绘璁惧畾鏃堕棿 + } + } + } + catch (Exception ex) + { + logg.WriteLog(ex.Message, "涓浗鏀块噰缃戝洓宸濈渷"); + + logg.WriteLog(ex.StackTrace, "涓浗鏀块噰缃戝洓宸濈渷"); + + logg.WriteLog(ex.ToString(), "涓浗鏀块噰缃戝洓宸濈渷"); + } + + + } + } + } + page += 1; + + } + + + + + + + + } + + + //缁撴灉鍏憡 + public static void zhongbiaogonggao(WebCrawlerContext _ccontext, string sichuanpageurll, string startTime, string endTime , int page) + { + + sichuanpageurll = sichuanpageurll.Replace("start_time=", "start_time=" + startTime.Replace("-", "%3A")); + sichuanpageurll = sichuanpageurll.Replace("end_time=", "end_time=" + endTime.Replace("-", "%3A")); + var parser = new HtmlParser(); + var list11 = new List<AngleSharp.Dom.IElement>(); + while (true) + { + Thread.CurrentThread.Join(1000 * 4);//闃绘璁惧畾鏃堕棿 + logg.WriteLog(page.ToString(), "涓浗鏀块噰缃戝洓宸濈渷"); + string sichuanpageurl2 = sichuanpageurll.Replace("page_index=1", "page_index=" + page); + using (HttpClient client = new HttpClient()) + { + //List<sichuanjieshoudtl> data = new List<sichuanjieshoudtl>(); + HttpResponseMessage response = client.GetAsync(sichuanpageurl2).Result; + var res = response.Content.ReadAsStringAsync().Result; + var document = parser.ParseDocument(res); + var sssdfsdfsd = document.All.Where(m => m.ClassName == "vT-srch-result-list").FirstOrDefault(); + var contentList = sssdfsdfsd.QuerySelector("ul"); + if (contentList != null) + { + var lists = contentList.QuerySelectorAll("li"); + if (lists == null || lists.Length == 0) + { + break; + } + if (page != 1) + { + var list22 = lists.ToList(); + var breakable = true; + if (list11.Count == list22.Count) + { + foreach (var list11111 in list11) + { + var listcount = list22.Count(x => x.InnerHtml == list11111.InnerHtml); + + if (listcount <= 0) + { + breakable = false; + break; + } + } + if (breakable) + { + break; + } + } + list11 = list22; + } + else + { + list11 = lists.ToList(); + } + + foreach (var sichuanjieshoudtl1 in lists) + { + Thread.CurrentThread.Join(1000 * 4);//闃绘璁惧畾鏃堕棿 + try + { + sichuanjieshoudtl aaaaaaaa = new sichuanjieshoudtl(); + aaaaaaaa.pageurl = sichuanjieshoudtl1.QuerySelector("a").GetAttribute("href"); + + logg.WriteLog(aaaaaaaa.pageurl, "涓浗鏀块噰缃戝洓宸濈渷"); + aaaaaaaa.title = sichuanjieshoudtl1.QuerySelector("a").TextContent.Replace("\n", "").Trim(); + aaaaaaaa.shorttitle = aaaaaaaa.title; + + + + string[] sssssss = sichuanjieshoudtl1.QuerySelector("span").TextContent.Replace("|", "").Split("\n"); + string Purchaser = null; + string Agency = null; + var NoticeTime = sssssss[0].Trim(); + foreach (var ssss in sssssss) + { + if (ssss.IndexOf("閲囪喘浜�") >= 0) + { + Purchaser = ssss.Replace("閲囪喘浜�", "").Replace("锛�", "").Replace("/", "").Trim(); + } + if (ssss.IndexOf("浠g悊鏈烘瀯") >= 0) + { + Agency = ssss.Replace("浠g悊鏈烘瀯", "").Replace("锛�", "").Replace("/", "").Trim(); + } + } + using (HttpClient clientdtl = new HttpClient()) + { + ZhengfuProject zhengfuProject = _ccontext.ZhengfuProjects.Where(x => x.Pageurl == aaaaaaaa.pageurl).FirstOrDefault(); + if (zhengfuProject == null) + { + HttpResponseMessage responsedtl = clientdtl.GetAsync(aaaaaaaa.pageurl).Result; + var resdtl = responsedtl.Content.ReadAsStringAsync().Result; + var documentdtl = parser.ParseDocument(resdtl); + + var dtl = documentdtl.All.Where(m => m.ClassName == "vF_detail_content_container").FirstOrDefault(); + + var content = dtl.OuterHtml; + + var fujian = documentdtl.All.Where(m => m.ClassName == "main").FirstOrDefault(); + + var fujians = documentdtl.All.Where(m => m.ClassName == "bizDownload").ToList(); + if (fujians != null && fujians.Count > 0) + { + var fujianhtml = "<div class=\"bid_attachtab\"><table width=\"700\" border=\"0\" cellspacing=\"1\" bgcolor=\"#efefef\" style=\"text-align: left; width: 100%; margin: 0px auto;\"><tbody>"; + foreach (var fujianya in fujians) + { + var ssss = fujianya.Id; + var sssss = fujianya.InnerHtml; + fujianhtml += "<tr><td class=\"bid_attachtab_content\">闄勪欢涓嬭浇锛�<a class=\"bizDownload\" target=\"_blank\" href =\"http://download.ccgp.gov.cn/oss/download?uuid=" + ssss + "\" id=\"0E1723104D34335C527765FF6CD28A\" title=\"鐐瑰嚮涓嬭浇\">" + sssss + "</a><br></td></tr>"; + } + fujianhtml += "</tbody></table></div>"; + + content += fujianhtml; + } + + + + string OpenTenderCode = null; + decimal? Budget = null; + DateTime? OpenTenderTime = null; + + var td = dtl.QuerySelectorAll("p"); + + if (td != null && td.Length > 0) + { + + + for (int i = 0; i < td.Length; i++) + { + if (td[i].TextContent.IndexOf("椤圭洰缂栧彿锛�") >= 0) + { + + OpenTenderCode = td[i].TextContent.Replace("椤圭洰缂栧彿锛�", "").Replace("涓�銆�", "").Trim(); + + if (OpenTenderCode.IndexOf("锛堟嫑鏍囨枃浠剁紪鍙�")>=0) + { + OpenTenderCode.Substring(0, OpenTenderCode.IndexOf("锛堟嫑鏍囨枃浠剁紪鍙�")+1).Replace("锛�", ""); + } + + } + if (td[i].TextContent.IndexOf("棰勭畻閲戦锛�") >= 0) + { + var yusuan = td[i].TextContent.Replace("棰勭畻閲戦锛�", "").Replace("锛�", "").Replace("锛�", "").Replace("涓囧厓", "").Replace("浜烘皯甯�", "").Trim(); + decimal a = 0; + if (decimal.TryParse(yusuan, out a)) + { + Budget = a * 10000; + } + + + } + + if (td[i].TextContent.IndexOf("寮�鏍囨椂闂达細") >= 0) + { + + + DateTime a; + var sss = td[i].TextContent.Replace("寮�鏍囨椂闂达細", "").Replace("锛堝寳浜椂闂达級", "").Replace("骞�", "-").Replace("鏈�", "-").Replace("鏃�", " ").Replace("鐐�", ":").Replace("鍒�", "").Trim(); + if (DateTime.TryParse(sss, out a)) + { + OpenTenderTime = a; + } + + + } + } + } + + + td = dtl.QuerySelectorAll("h4"); + + if (td != null && td.Length > 0) + { + + + for (int i = 0; i < td.Length; i++) + { + if (td[i].TextContent.IndexOf("椤圭洰缂栧彿锛�") >= 0) + { + + OpenTenderCode = td[i].TextContent.Replace("椤圭洰缂栧彿锛�", "").Replace("涓�銆�", "").Trim(); + + if (OpenTenderCode.IndexOf("锛堟嫑鏍囨枃浠剁紪鍙�") >= 0) + { + OpenTenderCode.Substring(0, OpenTenderCode.IndexOf("锛堟嫑鏍囨枃浠剁紪鍙�") + 1).Replace("锛�", ""); + } + + } + if (td[i].TextContent.IndexOf("棰勭畻閲戦锛�") >= 0) + { + var yusuan = td[i].TextContent.Replace("棰勭畻閲戦锛�", "").Replace("锛�", "").Replace("锛�", "").Replace("涓囧厓", "").Replace("浜烘皯甯�", "").Trim(); + decimal a = 0; + if (decimal.TryParse(yusuan, out a)) + { + Budget = a * 10000; + } + + + } + + if (td[i].TextContent.IndexOf("寮�鏍囨椂闂达細") >= 0) + { + + + DateTime a; + var sss = td[i].TextContent.Replace("寮�鏍囨椂闂达細", "").Replace("锛堝寳浜椂闂达級", "").Replace("骞�", "-").Replace("鏈�", "-").Replace("鏃�", " ").Replace("鐐�", ":").Replace("鍒�", "").Trim(); + if (DateTime.TryParse(sss, out a)) + { + OpenTenderTime = a; + } + + + } + } + } + + var zhengfuProject1 = _ccontext.ZhengfuProjects.Where(x => x.RecStatus == "A" && x.Title == aaaaaaaa.title && x.Gglx == "03" && x.OpenTenderCode == OpenTenderCode).FirstOrDefault(); + if (zhengfuProject1 != null) + continue; + + + + + zhengfuProject = new ZhengfuProject(); + zhengfuProject.Id = Guid.NewGuid().ToString(); + zhengfuProject.Gglx = "03"; + string gglxName = "缁撴灉鍏憡"; + zhengfuProject.NoticeTime = DateTime.Parse(NoticeTime); + zhengfuProject.OpenTenderTime = OpenTenderTime; + zhengfuProject.RegionCode = null; + //regionName = regionName; + zhengfuProject.Sheng = "510000"; + string ShengName = "鍥涘窛鐪�"; + zhengfuProject.City = null; + //CityName = CityName; + + + zhengfuProject.Cgfs = null; + + + zhengfuProject.OpenTenderCode = OpenTenderCode; + zhengfuProject.Budget = Budget; + + + zhengfuProject.Title = aaaaaaaa.title; + zhengfuProject.Shorttitle = aaaaaaaa.shorttitle; + zhengfuProject.Pageurl = aaaaaaaa.pageurl; + zhengfuProject.Purchaser = Purchaser; + + + + + zhengfuProject.Agency = Agency; + zhengfuProject.AgencyCode = null; + zhengfuProject.Content = content; + zhengfuProject.RecStatus = "A"; + zhengfuProject.Creater = "1"; + zhengfuProject.Createtime = DateTime.Now; + zhengfuProject.Modifier = "1"; + zhengfuProject.Modifytime = zhengfuProject.Createtime; + _ccontext.ZhengfuProjects.Add(zhengfuProject); + + + string url = $"{Program.api_domain}/webcrawler/_doc/" + zhengfuProject.Id; + string result = string.Empty; + Uri postUrl = new Uri(url); + eswebcrawler eswebcrawler1 = new eswebcrawler(); + eswebcrawler1.Id = zhengfuProject.Id; + eswebcrawler1.noticeTime = zhengfuProject.NoticeTime.ToString("yyyy-MM-dd HH:mm:ss"); + eswebcrawler1.openTenderTime = zhengfuProject.OpenTenderTime.HasValue ? zhengfuProject.OpenTenderTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : null; + eswebcrawler1.sheng = zhengfuProject.Sheng; + eswebcrawler1.shengName = ShengName; + eswebcrawler1.city = zhengfuProject.City; + eswebcrawler1.cityName = null; + eswebcrawler1.regionCode = zhengfuProject.RegionCode; + eswebcrawler1.regionName = null; + eswebcrawler1.cgfs = zhengfuProject.Cgfs; + eswebcrawler1.cgfsName = null; + eswebcrawler1.gglx = zhengfuProject.Gglx; + eswebcrawler1.gglxName = gglxName; + eswebcrawler1.openTenderCode = zhengfuProject.OpenTenderCode; + eswebcrawler1.title = zhengfuProject.Title; + eswebcrawler1.shorttitle = zhengfuProject.Shorttitle; + eswebcrawler1.pageurl = zhengfuProject.Pageurl; + eswebcrawler1.pingmu = zhengfuProject.Pingmu; + eswebcrawler1.pingmuName = ""; + eswebcrawler1.purchaser = zhengfuProject.Purchaser; + eswebcrawler1.budget = zhengfuProject.Budget.HasValue ? zhengfuProject.Budget.Value.ToString() : ""; + eswebcrawler1.agency = zhengfuProject.Agency; + eswebcrawler1.agencyCode = zhengfuProject.AgencyCode; + eswebcrawler1.modifyTime = zhengfuProject.Modifytime.ToString("yyyy-MM-dd HH:mm:ss"); + + string requestJson = JsonConvert.SerializeObject(eswebcrawler1); + + using (HttpContent httpContent = new StringContent(requestJson)) + { + httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); + using (HttpClient httpClient = new HttpClient()) + { + httpClient.Timeout = TimeSpan.FromSeconds(60); + HttpResponseMessage responseMessage = httpClient.PutAsync(postUrl, httpContent).Result; + result = responseMessage.Content.ReadAsStringAsync().Result; + } + + } + + Newtonsoft.Json.Linq.JObject jobject = (Newtonsoft.Json.Linq.JObject)JsonConvert.DeserializeObject(result); + + if (jobject["error"] == null && jobject["_shards"]["successful"].ToString() == "1") + { + + } + else + { + throw new Exception("淇濆瓨鏁版嵁搴撳嚭閿欙紒"); + } + + + _ccontext.SaveChanges(); + + Thread.CurrentThread.Join(1000 * 4);//闃绘璁惧畾鏃堕棿 + } + } + } + catch (Exception ex) + { + logg.WriteLog(ex.Message, "涓浗鏀块噰缃戝洓宸濈渷"); + + logg.WriteLog(ex.StackTrace, "涓浗鏀块噰缃戝洓宸濈渷"); + + logg.WriteLog(ex.ToString(), "涓浗鏀块噰缃戝洓宸濈渷"); + } + + + } + } + } + page += 1; + + } + + + + + + + + } + + //鏇存鍏憡 + public static void gengzhenggonggao(WebCrawlerContext _ccontext, string sichuanpageurll, string startTime, string endTime , int page) + { + + sichuanpageurll = sichuanpageurll.Replace("start_time=", "start_time=" + startTime.Replace("-", "%3A")); + sichuanpageurll = sichuanpageurll.Replace("end_time=", "end_time=" + endTime.Replace("-", "%3A")); + var parser = new HtmlParser(); + var list11 = new List<AngleSharp.Dom.IElement>(); + while (true) + { + Thread.CurrentThread.Join(1000 * 4);//闃绘璁惧畾鏃堕棿 + logg.WriteLog(page.ToString(), "涓浗鏀块噰缃戝洓宸濈渷"); + string sichuanpageurl2 = sichuanpageurll.Replace("page_index=1", "page_index=" + page); + using (HttpClient client = new HttpClient()) + { + //List<sichuanjieshoudtl> data = new List<sichuanjieshoudtl>(); + HttpResponseMessage response = client.GetAsync(sichuanpageurl2).Result; + var res = response.Content.ReadAsStringAsync().Result; + var document = parser.ParseDocument(res); + var sssdfsdfsd = document.All.Where(m => m.ClassName == "vT-srch-result-list").FirstOrDefault(); + var contentList = sssdfsdfsd.QuerySelector("ul"); + if (contentList != null) + { + var lists = contentList.QuerySelectorAll("li"); + if (lists == null || lists.Length == 0) + { + break; + } + if (page != 1) + { + var list22 = lists.ToList(); + var breakable = true; + if (list11.Count == list22.Count) + { + foreach (var list11111 in list11) + { + var listcount = list22.Count(x => x.InnerHtml == list11111.InnerHtml); + + if (listcount <= 0) + { + breakable = false; + break; + } + } + if (breakable) + { + break; + } + } + list11 = list22; + } + else + { + list11 = lists.ToList(); + } + + foreach (var sichuanjieshoudtl1 in lists) + { + Thread.CurrentThread.Join(1000 * 4);//闃绘璁惧畾鏃堕棿 + try + { + sichuanjieshoudtl aaaaaaaa = new sichuanjieshoudtl(); + aaaaaaaa.pageurl = sichuanjieshoudtl1.QuerySelector("a").GetAttribute("href"); + + logg.WriteLog(aaaaaaaa.pageurl, "涓浗鏀块噰缃戝洓宸濈渷"); + aaaaaaaa.title = sichuanjieshoudtl1.QuerySelector("a").TextContent.Replace("\n", "").Trim(); + aaaaaaaa.shorttitle = aaaaaaaa.title; + + + + string[] sssssss = sichuanjieshoudtl1.QuerySelector("span").TextContent.Replace("|", "").Split("\n"); + string Purchaser = null; + string Agency = null; + var NoticeTime = sssssss[0].Trim(); + foreach (var ssss in sssssss) + { + if (ssss.IndexOf("閲囪喘浜�") >= 0) + { + Purchaser = ssss.Replace("閲囪喘浜�", "").Replace("锛�", "").Replace("/", "").Trim(); + } + if (ssss.IndexOf("浠g悊鏈烘瀯") >= 0) + { + Agency = ssss.Replace("浠g悊鏈烘瀯", "").Replace("锛�", "").Replace("/", "").Trim(); + } + } + using (HttpClient clientdtl = new HttpClient()) + { + ZhengfuProject zhengfuProject = _ccontext.ZhengfuProjects.Where(x => x.Pageurl == aaaaaaaa.pageurl).FirstOrDefault(); + if (zhengfuProject == null) + { + HttpResponseMessage responsedtl = clientdtl.GetAsync(aaaaaaaa.pageurl).Result; + var resdtl = responsedtl.Content.ReadAsStringAsync().Result; + var documentdtl = parser.ParseDocument(resdtl); + + var dtl = documentdtl.All.Where(m => m.ClassName == "vF_detail_content_container").FirstOrDefault(); + + var content = dtl.OuterHtml; + + var fujian = documentdtl.All.Where(m => m.ClassName == "main").FirstOrDefault(); + + var fujians = documentdtl.All.Where(m => m.ClassName == "bizDownload").ToList(); + if (fujians != null && fujians.Count > 0) + { + var fujianhtml = "<div class=\"bid_attachtab\"><table width=\"700\" border=\"0\" cellspacing=\"1\" bgcolor=\"#efefef\" style=\"text-align: left; width: 100%; margin: 0px auto;\"><tbody>"; + foreach (var fujianya in fujians) + { + var ssss = fujianya.Id; + var sssss = fujianya.InnerHtml; + fujianhtml += "<tr><td class=\"bid_attachtab_content\">闄勪欢涓嬭浇锛�<a class=\"bizDownload\" target=\"_blank\" href =\"http://download.ccgp.gov.cn/oss/download?uuid=" + ssss + "\" id=\"0E1723104D34335C527765FF6CD28A\" title=\"鐐瑰嚮涓嬭浇\">" + sssss + "</a><br></td></tr>"; + } + fujianhtml += "</tbody></table></div>"; + + content += fujianhtml; + } + + + + string OpenTenderCode = null; + decimal? Budget = null; + DateTime? OpenTenderTime = null; + + var td = dtl.QuerySelectorAll("p"); + + if (td != null && td.Length > 0) + { + + + for (int i = 0; i < td.Length; i++) + { + if (td[i].TextContent.IndexOf("鍘熷叕鍛婄殑閲囪喘椤圭洰缂栧彿锛�") >= 0) + { + + OpenTenderCode = td[i].TextContent.Replace("鍘熷叕鍛婄殑閲囪喘椤圭洰缂栧彿锛�", "").Trim(); + + } + if (td[i].TextContent.IndexOf("棰勭畻閲戦锛�") >= 0) + { + var yusuan = td[i].TextContent.Replace("棰勭畻閲戦锛�", "").Replace("锛�", "").Replace("锛�", "").Replace("涓囧厓", "").Replace("浜烘皯甯�", "").Trim(); + decimal a = 0; + if (decimal.TryParse(yusuan, out a)) + { + Budget = a * 10000; + } + + + } + + if (td[i].TextContent.IndexOf("寮�鏍囨椂闂达細") >= 0) + { + + + DateTime a; + var sss = td[i].TextContent.Replace("寮�鏍囨椂闂达細", "").Replace("锛堝寳浜椂闂达級", "").Replace("骞�", "-").Replace("鏈�", "-").Replace("鏃�", " ").Replace("鐐�", ":").Replace("鍒�", "").Trim(); + if (DateTime.TryParse(sss, out a)) + { + OpenTenderTime = a; + } + + + } + } + } + + var zhengfuProject1 = _ccontext.ZhengfuProjects.Where(x => x.RecStatus == "A" && x.Title == aaaaaaaa.title && x.Gglx == "04" && x.OpenTenderCode == OpenTenderCode).FirstOrDefault(); + if (zhengfuProject1 != null) + continue; + + + + + zhengfuProject = new ZhengfuProject(); + zhengfuProject.Id = Guid.NewGuid().ToString(); + zhengfuProject.Gglx = "04"; + string gglxName = "鏇存鍏憡"; + zhengfuProject.NoticeTime = DateTime.Parse(NoticeTime); + zhengfuProject.OpenTenderTime = OpenTenderTime; + zhengfuProject.RegionCode = null; + //regionName = regionName; + zhengfuProject.Sheng = "510000"; + string ShengName = "鍥涘窛鐪�"; + zhengfuProject.City = null; + //CityName = CityName; + + + zhengfuProject.Cgfs = null; + + + zhengfuProject.OpenTenderCode = OpenTenderCode; + zhengfuProject.Budget = Budget; + + + zhengfuProject.Title = aaaaaaaa.title; + zhengfuProject.Shorttitle = aaaaaaaa.shorttitle; + zhengfuProject.Pageurl = aaaaaaaa.pageurl; + zhengfuProject.Purchaser = Purchaser; + + + + + zhengfuProject.Agency = Agency; + zhengfuProject.AgencyCode = null; + zhengfuProject.Content = content; + zhengfuProject.RecStatus = "A"; + zhengfuProject.Creater = "1"; + zhengfuProject.Createtime = DateTime.Now; + zhengfuProject.Modifier = "1"; + zhengfuProject.Modifytime = zhengfuProject.Createtime; + _ccontext.ZhengfuProjects.Add(zhengfuProject); + + + string url = $"{Program.api_domain}/webcrawler/_doc/" + zhengfuProject.Id; + string result = string.Empty; + Uri postUrl = new Uri(url); + eswebcrawler eswebcrawler1 = new eswebcrawler(); + eswebcrawler1.Id = zhengfuProject.Id; + eswebcrawler1.noticeTime = zhengfuProject.NoticeTime.ToString("yyyy-MM-dd HH:mm:ss"); + eswebcrawler1.openTenderTime = zhengfuProject.OpenTenderTime.HasValue ? zhengfuProject.OpenTenderTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : null; + eswebcrawler1.sheng = zhengfuProject.Sheng; + eswebcrawler1.shengName = ShengName; + eswebcrawler1.city = zhengfuProject.City; + eswebcrawler1.cityName = null; + eswebcrawler1.regionCode = zhengfuProject.RegionCode; + eswebcrawler1.regionName = null; + eswebcrawler1.cgfs = zhengfuProject.Cgfs; + eswebcrawler1.cgfsName = null; + eswebcrawler1.gglx = zhengfuProject.Gglx; + eswebcrawler1.gglxName = gglxName; + eswebcrawler1.openTenderCode = zhengfuProject.OpenTenderCode; + eswebcrawler1.title = zhengfuProject.Title; + eswebcrawler1.shorttitle = zhengfuProject.Shorttitle; + eswebcrawler1.pageurl = zhengfuProject.Pageurl; + eswebcrawler1.pingmu = zhengfuProject.Pingmu; + eswebcrawler1.pingmuName = ""; + eswebcrawler1.purchaser = zhengfuProject.Purchaser; + eswebcrawler1.budget = zhengfuProject.Budget.HasValue ? zhengfuProject.Budget.Value.ToString() : ""; + eswebcrawler1.agency = zhengfuProject.Agency; + eswebcrawler1.agencyCode = zhengfuProject.AgencyCode; + eswebcrawler1.modifyTime = zhengfuProject.Modifytime.ToString("yyyy-MM-dd HH:mm:ss"); + + string requestJson = JsonConvert.SerializeObject(eswebcrawler1); + + using (HttpContent httpContent = new StringContent(requestJson)) + { + httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); + using (HttpClient httpClient = new HttpClient()) + { + httpClient.Timeout = TimeSpan.FromSeconds(60); + HttpResponseMessage responseMessage = httpClient.PutAsync(postUrl, httpContent).Result; + result = responseMessage.Content.ReadAsStringAsync().Result; + } + + } + + Newtonsoft.Json.Linq.JObject jobject = (Newtonsoft.Json.Linq.JObject)JsonConvert.DeserializeObject(result); + + if (jobject["error"] == null && jobject["_shards"]["successful"].ToString() == "1") + { + + } + else + { + throw new Exception("淇濆瓨鏁版嵁搴撳嚭閿欙紒"); + } + + + _ccontext.SaveChanges(); + + Thread.CurrentThread.Join(1000 * 4);//闃绘璁惧畾鏃堕棿 + } + } + } + catch (Exception ex) + { + logg.WriteLog(ex.Message, "涓浗鏀块噰缃戝洓宸濈渷"); + + logg.WriteLog(ex.StackTrace, "涓浗鏀块噰缃戝洓宸濈渷"); + + logg.WriteLog(ex.ToString(), "涓浗鏀块噰缃戝洓宸濈渷"); + } + + + } + } + } + page += 1; + + } + + + + + + + + } + + + //搴熸爣鍏憡 + public static void feibiaogonggao(WebCrawlerContext _ccontext, string sichuanpageurll, string startTime, string endTime , int page) + { + + sichuanpageurll = sichuanpageurll.Replace("start_time=", "start_time=" + startTime.Replace("-", "%3A")); + sichuanpageurll = sichuanpageurll.Replace("end_time=", "end_time=" + endTime.Replace("-", "%3A")); + var parser = new HtmlParser(); + var list11 = new List<AngleSharp.Dom.IElement>(); + while (true) + { + Thread.CurrentThread.Join(1000 * 4);//闃绘璁惧畾鏃堕棿 + logg.WriteLog(page.ToString(), "涓浗鏀块噰缃戝洓宸濈渷"); + string sichuanpageurl2 = sichuanpageurll.Replace("page_index=1", "page_index=" + page); + using (HttpClient client = new HttpClient()) + { + //List<sichuanjieshoudtl> data = new List<sichuanjieshoudtl>(); + HttpResponseMessage response = client.GetAsync(sichuanpageurl2).Result; + var res = response.Content.ReadAsStringAsync().Result; + var document = parser.ParseDocument(res); + var sssdfsdfsd = document.All.Where(m => m.ClassName == "vT-srch-result-list").FirstOrDefault(); + var contentList = sssdfsdfsd.QuerySelector("ul"); + if (contentList != null) + { + var lists = contentList.QuerySelectorAll("li"); + if (lists == null || lists.Length == 0) + { + break; + } + if (page != 1) + { + var list22 = lists.ToList(); + var breakable = true; + if (list11.Count == list22.Count) + { + foreach (var list11111 in list11) + { + var listcount = list22.Count(x => x.InnerHtml == list11111.InnerHtml); + + if (listcount <= 0) + { + breakable = false; + break; + } + } + if (breakable) + { + break; + } + } + list11 = list22; + } + else + { + list11 = lists.ToList(); + } + + foreach (var sichuanjieshoudtl1 in lists) + { + Thread.CurrentThread.Join(1000 * 4);//闃绘璁惧畾鏃堕棿 + try + { + sichuanjieshoudtl aaaaaaaa = new sichuanjieshoudtl(); + aaaaaaaa.pageurl = sichuanjieshoudtl1.QuerySelector("a").GetAttribute("href"); + + logg.WriteLog(aaaaaaaa.pageurl, "涓浗鏀块噰缃戝洓宸濈渷"); + aaaaaaaa.title = sichuanjieshoudtl1.QuerySelector("a").TextContent.Replace("\n", "").Trim(); + aaaaaaaa.shorttitle = aaaaaaaa.title; + + + + string[] sssssss = sichuanjieshoudtl1.QuerySelector("span").TextContent.Replace("|", "").Split("\n"); + string Purchaser = null; + string Agency = null; + var NoticeTime = sssssss[0].Trim(); + foreach (var ssss in sssssss) + { + if (ssss.IndexOf("閲囪喘浜�") >= 0) + { + Purchaser = ssss.Replace("閲囪喘浜�", "").Replace("锛�", "").Replace("/", "").Trim(); + } + if (ssss.IndexOf("浠g悊鏈烘瀯") >= 0) + { + Agency = ssss.Replace("浠g悊鏈烘瀯", "").Replace("锛�", "").Replace("/", "").Trim(); + } + } + using (HttpClient clientdtl = new HttpClient()) + { + ZhengfuProject zhengfuProject = _ccontext.ZhengfuProjects.Where(x => x.Pageurl == aaaaaaaa.pageurl).FirstOrDefault(); + if (zhengfuProject == null) + { + HttpResponseMessage responsedtl = clientdtl.GetAsync(aaaaaaaa.pageurl).Result; + var resdtl = responsedtl.Content.ReadAsStringAsync().Result; + var documentdtl = parser.ParseDocument(resdtl); + + var dtl = documentdtl.All.Where(m => m.ClassName == "vF_detail_content_container").FirstOrDefault(); + + var content = dtl.OuterHtml; + + var fujian = documentdtl.All.Where(m => m.ClassName == "main").FirstOrDefault(); + + var fujians = documentdtl.All.Where(m => m.ClassName == "bizDownload").ToList(); + if (fujians != null && fujians.Count > 0) + { + var fujianhtml = "<div class=\"bid_attachtab\"><table width=\"700\" border=\"0\" cellspacing=\"1\" bgcolor=\"#efefef\" style=\"text-align: left; width: 100%; margin: 0px auto;\"><tbody>"; + foreach (var fujianya in fujians) + { + var ssss = fujianya.Id; + var sssss = fujianya.InnerHtml; + fujianhtml += "<tr><td class=\"bid_attachtab_content\">闄勪欢涓嬭浇锛�<a class=\"bizDownload\" target=\"_blank\" href =\"http://download.ccgp.gov.cn/oss/download?uuid=" + ssss + "\" id=\"0E1723104D34335C527765FF6CD28A\" title=\"鐐瑰嚮涓嬭浇\">" + sssss + "</a><br></td></tr>"; + } + fujianhtml += "</tbody></table></div>"; + + content += fujianhtml; + } + + + + string OpenTenderCode = null; + decimal? Budget = null; + DateTime? OpenTenderTime = null; + + var td = dtl.QuerySelectorAll("p"); + + if (td != null && td.Length > 0) + { + + + for (int i = 0; i < td.Length; i++) + { + if (td[i].TextContent.IndexOf("閲囪喘椤圭洰缂栧彿锛�") >= 0) + { + + OpenTenderCode = td[i].TextContent.Replace("閲囪喘椤圭洰缂栧彿锛�", "").Trim(); + + } + if (td[i].TextContent.IndexOf("棰勭畻閲戦锛�") >= 0) + { + var yusuan = td[i].TextContent.Replace("棰勭畻閲戦锛�", "").Replace("锛�", "").Replace("锛�", "").Replace("涓囧厓", "").Replace("浜烘皯甯�", "").Trim(); + decimal a = 0; + if (decimal.TryParse(yusuan, out a)) + { + Budget = a * 10000; + } + + + } + + if (td[i].TextContent.IndexOf("寮�鏍囨椂闂达細") >= 0) + { + + + DateTime a; + var sss = td[i].TextContent.Replace("寮�鏍囨椂闂达細", "").Replace("锛堝寳浜椂闂达級", "").Replace("骞�", "-").Replace("鏈�", "-").Replace("鏃�", " ").Replace("鐐�", ":").Replace("鍒�", "").Trim(); + if (DateTime.TryParse(sss, out a)) + { + OpenTenderTime = a; + } + + + } + } + } + + var zhengfuProject1 = _ccontext.ZhengfuProjects.Where(x => x.RecStatus == "A" && x.Title == aaaaaaaa.title && x.Gglx == "11" && x.OpenTenderCode == OpenTenderCode).FirstOrDefault(); + if (zhengfuProject1 != null) + continue; + + + + + zhengfuProject = new ZhengfuProject(); + zhengfuProject.Id = Guid.NewGuid().ToString(); + zhengfuProject.Gglx = "11"; + string gglxName = "搴熸爣鍏憡"; + zhengfuProject.NoticeTime = DateTime.Parse(NoticeTime); + zhengfuProject.OpenTenderTime = OpenTenderTime; + zhengfuProject.RegionCode = null; + //regionName = regionName; + zhengfuProject.Sheng = "510000"; + string ShengName = "鍥涘窛鐪�"; + zhengfuProject.City = null; + //CityName = CityName; + + + zhengfuProject.Cgfs = null; + + + zhengfuProject.OpenTenderCode = OpenTenderCode; + zhengfuProject.Budget = Budget; + + + zhengfuProject.Title = aaaaaaaa.title; + zhengfuProject.Shorttitle = aaaaaaaa.shorttitle; + zhengfuProject.Pageurl = aaaaaaaa.pageurl; + zhengfuProject.Purchaser = Purchaser; + + + + + zhengfuProject.Agency = Agency; + zhengfuProject.AgencyCode = null; + zhengfuProject.Content = content; + zhengfuProject.RecStatus = "A"; + zhengfuProject.Creater = "1"; + zhengfuProject.Createtime = DateTime.Now; + zhengfuProject.Modifier = "1"; + zhengfuProject.Modifytime = zhengfuProject.Createtime; + _ccontext.ZhengfuProjects.Add(zhengfuProject); + + + string url = $"{Program.api_domain}/webcrawler/_doc/" + zhengfuProject.Id; + string result = string.Empty; + Uri postUrl = new Uri(url); + eswebcrawler eswebcrawler1 = new eswebcrawler(); + eswebcrawler1.Id = zhengfuProject.Id; + eswebcrawler1.noticeTime = zhengfuProject.NoticeTime.ToString("yyyy-MM-dd HH:mm:ss"); + eswebcrawler1.openTenderTime = zhengfuProject.OpenTenderTime.HasValue ? zhengfuProject.OpenTenderTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : null; + eswebcrawler1.sheng = zhengfuProject.Sheng; + eswebcrawler1.shengName = ShengName; + eswebcrawler1.city = zhengfuProject.City; + eswebcrawler1.cityName = null; + eswebcrawler1.regionCode = zhengfuProject.RegionCode; + eswebcrawler1.regionName = null; + eswebcrawler1.cgfs = zhengfuProject.Cgfs; + eswebcrawler1.cgfsName = null; + eswebcrawler1.gglx = zhengfuProject.Gglx; + eswebcrawler1.gglxName = gglxName; + eswebcrawler1.openTenderCode = zhengfuProject.OpenTenderCode; + eswebcrawler1.title = zhengfuProject.Title; + eswebcrawler1.shorttitle = zhengfuProject.Shorttitle; + eswebcrawler1.pageurl = zhengfuProject.Pageurl; + eswebcrawler1.pingmu = zhengfuProject.Pingmu; + eswebcrawler1.pingmuName = ""; + eswebcrawler1.purchaser = zhengfuProject.Purchaser; + eswebcrawler1.budget = zhengfuProject.Budget.HasValue ? zhengfuProject.Budget.Value.ToString() : ""; + eswebcrawler1.agency = zhengfuProject.Agency; + eswebcrawler1.agencyCode = zhengfuProject.AgencyCode; + eswebcrawler1.modifyTime = zhengfuProject.Modifytime.ToString("yyyy-MM-dd HH:mm:ss"); + + string requestJson = JsonConvert.SerializeObject(eswebcrawler1); + + using (HttpContent httpContent = new StringContent(requestJson)) + { + httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); + using (HttpClient httpClient = new HttpClient()) + { + httpClient.Timeout = TimeSpan.FromSeconds(60); + HttpResponseMessage responseMessage = httpClient.PutAsync(postUrl, httpContent).Result; + result = responseMessage.Content.ReadAsStringAsync().Result; + } + + } + + Newtonsoft.Json.Linq.JObject jobject = (Newtonsoft.Json.Linq.JObject)JsonConvert.DeserializeObject(result); + + if (jobject["error"] == null && jobject["_shards"]["successful"].ToString() == "1") + { + + } + else + { + throw new Exception("淇濆瓨鏁版嵁搴撳嚭閿欙紒"); + } + + + _ccontext.SaveChanges(); + + Thread.CurrentThread.Join(1000 * 4);//闃绘璁惧畾鏃堕棿 + } + } + } + catch (Exception ex) + { + logg.WriteLog(ex.Message, "涓浗鏀块噰缃戝洓宸濈渷"); + + logg.WriteLog(ex.StackTrace, "涓浗鏀块噰缃戝洓宸濈渷"); + + logg.WriteLog(ex.ToString(), "涓浗鏀块噰缃戝洓宸濈渷"); + } + + + } + } + } + page += 1; + + } + + + + + + + + } + + } +} diff --git a/zhengcaioa/DTO/AdmPhoneMessageDTO.cs b/zhengcaioa/DTO/AdmPhoneMessageDTO.cs new file mode 100644 index 0000000..29b801e --- /dev/null +++ b/zhengcaioa/DTO/AdmPhoneMessageDTO.cs @@ -0,0 +1,16 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Text; + +namespace DTO +{ + public class AdmPhoneMessageDTO + { + public string Id { get; set; } + public string Phone { get; set; } + + public string Message { get; set; } + + public DateTime Createtime { get; set; } + } +} diff --git a/zhengcaioa/DTO/DailyManagementDTO .cs b/zhengcaioa/DTO/DailyManagementDTO .cs index d4c7e00..5f1736a 100644 --- a/zhengcaioa/DTO/DailyManagementDTO .cs +++ b/zhengcaioa/DTO/DailyManagementDTO .cs @@ -26,6 +26,7 @@ public DateTime Createtime { get; set; } public string Modifier { get; set; } public DateTime Modifytime { get; set; } + public string Message { get; set; } } public partial class AdmHoldPhoneDTOSearch:SearchEntity diff --git a/zhengcaioa/IServices/IDailyManagementService.cs b/zhengcaioa/IServices/IDailyManagementService.cs index 86476a8..91edc7f 100644 --- a/zhengcaioa/IServices/IDailyManagementService.cs +++ b/zhengcaioa/IServices/IDailyManagementService.cs @@ -24,5 +24,10 @@ List<AdmMemoBookDTO> GetRemindsalary(string userid, DateTime datemin, DateTime datemax,string KaoHe); + ResultEntity SavePhoneMessage(AdmPhoneMessageDTO admPhoneMessageDTO); + + + AdmPhoneMessageDTO GetPhoneMessageZuijin(string phone); + } } diff --git a/zhengcaioa/Model/AdmPhoneMessage.cs b/zhengcaioa/Model/AdmPhoneMessage.cs new file mode 100644 index 0000000..a599f95 --- /dev/null +++ b/zhengcaioa/Model/AdmPhoneMessage.cs @@ -0,0 +1,15 @@ +锘縰sing System; +using System.Collections.Generic; + +#nullable disable + +namespace zhengcaioa.Models +{ + public partial class AdmPhoneMessage + { + public string Id { get; set; } + public string Phone { get; set; } + public string Message { get; set; } + public DateTime Createtime { get; set; } + } +} diff --git a/zhengcaioa/Model/zhengcaioaContext.cs b/zhengcaioa/Model/zhengcaioaContext.cs index 3ab97ed..3cce961 100644 --- a/zhengcaioa/Model/zhengcaioaContext.cs +++ b/zhengcaioa/Model/zhengcaioaContext.cs @@ -49,6 +49,7 @@ public virtual DbSet<AdmDocBase> AdmDocBases { get; set; } public virtual DbSet<AdmDocDoc> AdmDocDocs { get; set; } public virtual DbSet<AdmEvaluate> AdmEvaluates { get; set; } + public virtual DbSet<AdmPhoneMessage> AdmPhoneMessages { get; set; } public virtual DbSet<AdmGoodsClassify> AdmGoodsClassifies { get; set; } public virtual DbSet<AdmGoodsManage> AdmGoodsManages { get; set; } public virtual DbSet<AdmPieceCheck> AdmPieceChecks { get; set; } @@ -1778,6 +1779,22 @@ .HasComment("浜哄憳id"); }); + modelBuilder.Entity<AdmPhoneMessage>(entity => + { + entity.ToTable("ADM_PhoneMessage"); + + entity.Property(e => e.Id).HasMaxLength(50); + + entity.Property(e => e.Createtime) + .HasColumnType("datetime") + .HasColumnName("createtime") + .HasDefaultValueSql("(getdate())"); + + entity.Property(e => e.Phone).HasMaxLength(50); + entity.Property(e => e.Message).HasColumnName("message").HasMaxLength(100); + + }); + modelBuilder.Entity<AdmGoodsClassify>(entity => { entity.ToTable("adm_goods_classify"); diff --git a/zhengcaioa/Services/DailyManagementService.cs b/zhengcaioa/Services/DailyManagementService.cs index cbcea06..e32da81 100644 --- a/zhengcaioa/Services/DailyManagementService.cs +++ b/zhengcaioa/Services/DailyManagementService.cs @@ -502,5 +502,64 @@ } #endregion + + + + /// <summary> + /// 淇濆瓨楠岃瘉鐮� + /// </summary> + /// <param name="holdPhone"></param> + /// <returns></returns> + public ResultEntity SavePhoneMessage(AdmPhoneMessageDTO admPhoneMessageDTO) + { + ResultEntity resultEntity = new ResultEntity(); + try + { + AdmPhoneMessage hold = _mapper.Map<AdmPhoneMessage>(admPhoneMessageDTO); + if (string.IsNullOrEmpty(hold.Id)) + { + hold.Id = Guid.NewGuid().ToString(); + admPhoneMessageDTO.Id = hold.Id; + + _context.AdmPhoneMessages.Add(hold); + } + else + { + var entity = _context.AdmPhoneMessages.Find(hold.Id); + + entity.Phone = hold.Phone; + entity.Message = hold.Message; + entity.Createtime = hold.Createtime; + } + _context.SaveChanges(); + resultEntity.ReturnID = hold.Id; + resultEntity.Result = true; + } + catch (Exception ex) + { + resultEntity.Result = false; + resultEntity.Message = "淇濆瓨澶辫触锛岃鑱旂郴绠$悊鍛�"; + ex.Message.ToString(); + } + return resultEntity; + } + + + /// <summary> + /// 鑾峰彇鏈�杩戠殑楠岃瘉鐮� + /// </summary> + /// <param name="id"></param> + /// <returns></returns> + public AdmPhoneMessageDTO GetPhoneMessageZuijin(string phone) + { + AdmPhoneMessage entity = _context.AdmPhoneMessages.Where(e => e.Phone == phone ).OrderByDescending(x=>x.Createtime).FirstOrDefault(); + if (entity == null) + { + entity = new AdmPhoneMessage(); + } + AdmPhoneMessageDTO admPhoneMessageDTO = _mapper.Map<AdmPhoneMessageDTO>(entity); + return admPhoneMessageDTO; + } + } } diff --git a/zhengcaioa/zhengcaioa/Controllers/AdmManagement/DailyManagementController.cs b/zhengcaioa/zhengcaioa/Controllers/AdmManagement/DailyManagementController.cs index ba2f0b0..8cd8eb6 100644 --- a/zhengcaioa/zhengcaioa/Controllers/AdmManagement/DailyManagementController.cs +++ b/zhengcaioa/zhengcaioa/Controllers/AdmManagement/DailyManagementController.cs @@ -10,6 +10,7 @@ using DTO; using Microsoft.AspNetCore.Http; using zhengcaioa.IService; +using CommonToolsCore; namespace zhengcaioa.Controllers.AdmManagement { @@ -738,5 +739,126 @@ } #endregion + + + + + //鍙戦�侀獙璇佺爜 + + + public IActionResult PushYanZhengMa(String Phone) + { + ReturnMsg<AdmPhoneMessageDTO> returnMsg = new ReturnMsg<AdmPhoneMessageDTO>(); + returnMsg.code = 2; + try + { + Random rd = new Random(); + int end = 999999; + + int begin = 100000; + + int xxxx = rd.Next(begin, end); + + string sss = SMSHelper.PushWToUserMESYanZhengMa(Phone, xxxx.ToString()); + if (int.Parse(sss) <= 0) + { + returnMsg.code = 2; + returnMsg.error = "鐭俊鍙戦�佸け璐�"; + returnMsg.returnObj = null; + return new JsonResult(returnMsg); + } + + AdmPhoneMessageDTO admPhoneMessageDTO = new AdmPhoneMessageDTO(); + admPhoneMessageDTO.Phone = Phone; + admPhoneMessageDTO.Createtime = DateTime.Now; + admPhoneMessageDTO.Message = xxxx.ToString(); + ResultEntity rs = _DailyManageService.SavePhoneMessage(admPhoneMessageDTO); + if (!rs.Result) + { + returnMsg.code = 2; + returnMsg.error = "鐭俊鍙戦�佸け璐�"; + returnMsg.returnObj = null; + return new JsonResult(returnMsg); + } + + returnMsg.code = 1; + returnMsg.count = 0; + returnMsg.returnObj = admPhoneMessageDTO; + } + catch (Exception ex) + { + returnMsg.code = 2; + returnMsg.error = "娌℃湁鑾峰彇鍒皌oken"; + returnMsg.count = 0; + + } + return new JsonResult(returnMsg); + + } + + + //淇濆瓨閫氳瘽璁板綍 + + [HttpPost] + public IActionResult SaveHoldPhone([FromBody]AdmHoldPhoneDTO admHoldPhone) + { + ReturnMsg<AdmHoldPhoneDTO> returnMsg = new ReturnMsg<AdmHoldPhoneDTO>(); + returnMsg.code = 2; + try + { + + //鍒ゆ柇楠岃瘉鐮佹槸鍚︽纭� + var phoneMessageDTO = _DailyManageService.GetPhoneMessageZuijin(admHoldPhone.Phone); + //double minu = (DateTime.Now - phoneMessageDTO.Createtime).TotalMinutes; + if (phoneMessageDTO==null|| string.IsNullOrEmpty(phoneMessageDTO.Message)) + { + returnMsg.code = 2; + returnMsg.error = "楠岃瘉鐮侀敊璇�"; + returnMsg.returnObj = null; + return new JsonResult(returnMsg); + } + else if (phoneMessageDTO.Message != admHoldPhone.Message) + { + returnMsg.code = 2; + returnMsg.error = "楠岃瘉鐮侀敊璇�"; + returnMsg.returnObj = null; + return new JsonResult(returnMsg); + }else if ((DateTime.Now - phoneMessageDTO.Createtime).TotalMinutes>5 ) + { + returnMsg.code = 2; + returnMsg.error = "楠岃瘉鐮佽秴杩�5鍒嗛挓锛岄獙璇佺爜澶辨晥"; + returnMsg.returnObj = null; + return new JsonResult(returnMsg); + } + + + + admHoldPhone.RecStatus = "A"; + admHoldPhone.InTime = DateTime.Now; + admHoldPhone.LineType = "1"; + admHoldPhone.Intention = "3"; + admHoldPhone.Creater = "e4c93811-b9b1-4998-89f5-c416ebab0c07"; + admHoldPhone.Createtime = DateTime.Now; + admHoldPhone.Modifier = "e4c93811-b9b1-4998-89f5-c416ebab0c07"; + admHoldPhone.Modifytime = DateTime.Now; + admHoldPhone.UserId = "e4c93811-b9b1-4998-89f5-c416ebab0c07"; + admHoldPhone.Handling = null; + + admHoldPhone.Id = null; + ResultEntity resultEntity = _DailyManageService.SaveHoldPhone(admHoldPhone); + returnMsg.code = 1; + returnMsg.count = 0; + returnMsg.returnObj = admHoldPhone; + } + catch (Exception ex) + { + returnMsg.code = 2; + returnMsg.error = "娌℃湁鑾峰彇鍒皌oken"; + returnMsg.count = 0; + + } + return new JsonResult(returnMsg); + + } } } -- Gitblit v1.9.1