From d4431c7e89865a506af8662244004d0baa7ed609 Mon Sep 17 00:00:00 2001 From: username@email.com <yzy2002yzy@163.com> Date: 星期三, 11 六月 2025 12:24:15 +0800 Subject: [PATCH] 投诉处理,爬 --- zhengcaioa/Model/WebCrawler/WebCrawlerContext.cs | 74 ++++++ zhengcaioa/Crawler/sichuan/sichuantousuoperation.cs | 427 +++++++++++++++++++++++++++++++++++ zhengcaioa/Model/WebCrawler/ProcurementComplaintItem.cs | 20 + zhengcaioa/Crawler/sichuan/sichuantousujieshou.cs | 65 +++++ zhengcaioa/Crawler/Program.cs | 92 ++++--- zhengcaioa/Model/WebCrawler/ProcurementComplaint.cs | 26 ++ 6 files changed, 668 insertions(+), 36 deletions(-) diff --git a/zhengcaioa/Crawler/Program.cs b/zhengcaioa/Crawler/Program.cs index 8a34395..e7394ab 100644 --- a/zhengcaioa/Crawler/Program.cs +++ b/zhengcaioa/Crawler/Program.cs @@ -20,10 +20,12 @@ //public static string connection = @"server=.;database=WebCrawler;uid=sa;pwd=123456;"; //public static string connection1 = @"server=.;database=zhengcaioa;uid=sa;pwd=123456;"; + //public static string connection2 = @"server=.;database=FZCZTB;uid=sa;pwd=123456;"; //public static string api_domain = "http://192.168.0.9:9200"; public static string connection = @"server=172.26.97.184;database=WebCrawler;uid=sa;pwd=Za20222812;"; public static string connection1 = @"server=172.26.97.184;database=zhengcaioa;uid=sa;pwd=Za20222812;"; + public static string connection2 = @"server=172.26.97.184;database=FZCZTB;uid=sa;pwd=Za20222812;"; public static string api_domain = "http://172.26.97.184:9200"; static void Main(string[] args) { @@ -140,7 +142,7 @@ Program obj = new Program(); //鏂规硶涓�锛氳皟鐢ㄧ嚎绋嬫墽琛屾柟娉曪紝鍦ㄦ柟娉曚腑瀹炵幇姝诲惊鐜紝姣忎釜寰幆Sleep璁惧畾鏃堕棿 - Thread thread = new Thread(new ThreadStart(obj.Method1)); + Thread thread = new Thread(new ThreadStart(obj.Method)); thread.Start(); @@ -154,58 +156,76 @@ Console.WriteLine("Hello World!"); } - void Method1() + void Method() { while (true) { - ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; + //ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; var dbContextOptionBuilder = new DbContextOptionsBuilder<WebCrawlerContext>(); - var cccontext = new WebCrawlerContext(dbContextOptionBuilder.UseSqlServer(connection).Options); + var cccontext = new WebCrawlerContext(dbContextOptionBuilder.UseSqlServer(connection2).Options); - var dbContextOptionBuilder1 = new DbContextOptionsBuilder<zhengcaioaContext>(); - var cccontext1 = new zhengcaioaContext(dbContextOptionBuilder1.UseSqlServer(connection1).Options); + //var dbContextOptionBuilder1 = new DbContextOptionsBuilder<zhengcaioaContext>(); + //var cccontext1 = new zhengcaioaContext(dbContextOptionBuilder1.UseSqlServer(connection1).Options); - //鑾峰彇鍥涘窛鐨勬斂閲囨暟鎹� - sichuanoperation.operations(cccontext, cccontext1); + //鑾峰彇鍥涘窛鐨勬姇璇夊鐞嗘暟鎹� + sichuantousuoperation.operations(cccontext); //Console.WriteLine("杩欎釜鏆傚仠"); Thread.CurrentThread.Join(1000 * 60 * 60 * 2);//闃绘璁惧畾鏃堕棿 } } - void Method2() - { - while (true) - { - ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; - var dbContextOptionBuilder = new DbContextOptionsBuilder<WebCrawlerContext>(); - var cccontext = new WebCrawlerContext(dbContextOptionBuilder.UseSqlServer(connection).Options); + //void Method1() + //{ + // 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); + // var dbContextOptionBuilder1 = new DbContextOptionsBuilder<zhengcaioaContext>(); + // var cccontext1 = new zhengcaioaContext(dbContextOptionBuilder1.UseSqlServer(connection1).Options); - //鑾峰彇鍥涘窛鐨勬斂閲囨暟鎹� - OldSichuanoperation.operations(cccontext, cccontext1); - Thread.CurrentThread.Join(1000 * 60 * 60 * 2);//闃绘璁惧畾鏃堕棿 - } - } + // //鑾峰彇鍥涘窛鐨勬斂閲囨暟鎹� + // sichuanoperation.operations(cccontext, cccontext1); + // //Console.WriteLine("杩欎釜鏆傚仠"); + // Thread.CurrentThread.Join(1000 * 60 * 60 * 2);//闃绘璁惧畾鏃堕棿 + // } + //} + + //void Method2() + //{ + // 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); + + // //鑾峰彇鍥涘窛鐨勬斂閲囨暟鎹� + // OldSichuanoperation.operations(cccontext, cccontext1); + // Thread.CurrentThread.Join(1000 * 60 * 60 * 2);//闃绘璁惧畾鏃堕棿 + // } + //} - void Method3() - { - while (true) - { - ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; - var dbContextOptionBuilder = new DbContextOptionsBuilder<WebCrawlerContext>(); - var cccontext = new WebCrawlerContext(dbContextOptionBuilder.UseSqlServer(connection).Options); + //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); + // //var dbContextOptionBuilder1 = new DbContextOptionsBuilder<zhengcaioaContext>(); + // //var cccontext1 = new zhengcaioaContext(dbContextOptionBuilder1.UseSqlServer(connection1).Options); - //鑾峰彇涓浗鏀块噰缃戠殑鍥涘窛鏀块噰鏁版嵁 - CcgpSichuanoperation.operations(cccontext); - Thread.CurrentThread.Join(1000 * 60 * 10);//闃绘璁惧畾鏃堕棿 - } - } + // //鑾峰彇涓浗鏀块噰缃戠殑鍥涘窛鏀块噰鏁版嵁 + // CcgpSichuanoperation.operations(cccontext); + // Thread.CurrentThread.Join(1000 * 60 * 10);//闃绘璁惧畾鏃堕棿 + // } + //} diff --git a/zhengcaioa/Crawler/sichuan/sichuantousujieshou.cs b/zhengcaioa/Crawler/sichuan/sichuantousujieshou.cs new file mode 100644 index 0000000..f81459f --- /dev/null +++ b/zhengcaioa/Crawler/sichuan/sichuantousujieshou.cs @@ -0,0 +1,65 @@ +锘縰sing DTO.WebCrawler; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Crawler +{ + public class sichuantousujieshou + { + public string msg { get; set; } + public int total { get; set; } + public string code { get; set; } + + public Data data; + } + + public class Data + { + public List<sichuantousujieshoudtl> rows; + public int total { get; set; } + } + + + public class sichuantousujieshoumingxi + { + public string msg { get; set; } + public int total { get; set; } + public string code { get; set; } + + public sichuantousujieshoudtl data; + } + + public class sichuantousujieshoudtl + { + public string id { get; set; } + public DateTime noticeTime { get; set; } + + public string regionCode { get; set; } + + public string regionName { get; set; } + + public string complainant { get; set; } + + public string openTenderCode { get; set; } + + public string author { get; set; } + + + public string purchaseManner { get; set; } + + public string title { get; set; } + public string shorttitle { get; set; } + public string pageurl { get; set; } + + public string content { get; set; } + + public string description { get; set; } + + public string purchaser { get; set; } + public string budget { get; set; } + public string agency { get; set; } + public string agencyCode { get; set; } + public DateTime? openTenderTime { get; set; } + } +} diff --git a/zhengcaioa/Crawler/sichuan/sichuantousuoperation.cs b/zhengcaioa/Crawler/sichuan/sichuantousuoperation.cs new file mode 100644 index 0000000..5ca6cd1 --- /dev/null +++ b/zhengcaioa/Crawler/sichuan/sichuantousuoperation.cs @@ -0,0 +1,427 @@ +锘縰sing AngleSharp.Html.Parser; +using DTO; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +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 sichuantousuoperation + { + public static string sichuanpageurll = "https://zfcg.scsczt.cn"; + 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.AddMonths(1).ToString("yyyy-MM-dd"); + } + else + { + operationStartTime = DateTime.Now.AddMonths(-1).ToString("yyyy-MM-dd"); + operationEndTime = DateTime.Now.ToString("yyyy-MM-dd"); + } + + //缈婚〉淇℃伅 + int currPage = 1; + int pageSize = 10; + //寮�濮嬭闂� 閲囪喘鍏憡 + logg.WriteLog("鍥涘窛鐪佹姇璇夊鐞� 寮�濮嬭幏鍙�", "鍥涘窛鎶曡瘔"); + var parser = new HtmlParser(); + while (true) + { + Thread.CurrentThread.Join(1000 * 5);//闃绘璁惧畾鏃堕棿 + logg.WriteLog(operationStartTime + operationEndTime + currPage.ToString(), "鍥涘窛鎶曡瘔"); + DateTime dateTime = DateTime.Now; // 鑾峰彇褰撳墠UTC鏃堕棿鐨凞ateTime瀵硅薄 + long timestamp = (long)(dateTime - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds; + string address = "https://www.ccgp-sichuan.gov.cn/gpcms/rest/web/v2/info/selectInfoForIndex?title=®ion=&siteId=94c965cc-c55d-4f92-8469-d5875c68bd04&channel=0df9d47e-c210-4176-bce9-ead9845bf311&currPage=" + currPage + "&pageSize=" + pageSize + "¬iceType=®ionCode=&cityOrArea=&purchaseManner=&openTenderCode=&purchaser=&agency=&purchaseNature=&operationStartTime=" + operationStartTime + "+00:00:00&operationEndTime=" + operationEndTime + "+00:00:00&_t="+ timestamp;//1748999478170 + sichuantousujieshou sichuan = null; + using (HttpClient client = new HttpClient()) + { + client.Timeout = TimeSpan.FromSeconds(60); + HttpResponseMessage response = client.GetAsync(address).Result; + var res = response.Content.ReadAsStringAsync().Result; + + sichuan = JsonConvert.DeserializeObject<sichuantousujieshou>(res); + } + if(sichuan.data.rows!=null && sichuan.data.rows.Count > 0) + { + foreach (var sichuanjieshoudtl in sichuan.data.rows) + { + var Id = Guid.Parse(sichuanjieshoudtl.id); + var procurementComplaint = _ccontext.ProcurementComplaints.Find(Id); + if (procurementComplaint != null) + { + continue; + } + + + dateTime = DateTime.Now; // 鑾峰彇褰撳墠UTC鏃堕棿鐨凞ateTime瀵硅薄 + timestamp = (long)(dateTime - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds; + var askurl = "https://www.ccgp-sichuan.gov.cn/gpcms/rest/web/v2/info/getInfoById?id=" + sichuanjieshoudtl.id +"& _t=" + timestamp; + procurementComplaint = new ProcurementComplaint(); + procurementComplaint.Id = Id; + procurementComplaint.ProjectCode = sichuanjieshoudtl.openTenderCode ?? ""; + if (procurementComplaint.ProjectCode.Length > 50) + { + procurementComplaint.ProjectCode = procurementComplaint.ProjectCode.Substring(0, 50); + } + procurementComplaint.ProjectName = ""; + procurementComplaint.DecisionDate = sichuanjieshoudtl.noticeTime; + procurementComplaint.Purchaser = ""; + procurementComplaint.ProcurementAgency = ""; + procurementComplaint.Complainant = sichuanjieshoudtl.complainant ?? ""; + if (procurementComplaint.Complainant.Length > 100) + { + procurementComplaint.Complainant = procurementComplaint.Complainant.Substring(0, 100); + } + procurementComplaint.ProcurementSupervisionDepartment = sichuanjieshoudtl.author ?? ""; + if (procurementComplaint.ProcurementSupervisionDepartment.Length > 100) + { + procurementComplaint.ProcurementSupervisionDepartment = procurementComplaint.ProcurementSupervisionDepartment.Substring(0, 100); + } + procurementComplaint.CreateTime = DateTime.Now; + procurementComplaint.UpdateTime = procurementComplaint.CreateTime; + procurementComplaint.Url = "https://www.ccgp-sichuan.gov.cn/maincms-web/article?type=article&id=" + sichuanjieshoudtl.id; + + Thread.CurrentThread.Join(1000 * 5);//闃绘璁惧畾鏃堕棿 + logg.WriteLog(askurl, "鍥涘窛鎶曡瘔"); + sichuantousujieshoumingxi sichuanjieshou = null; + using (HttpClient client = new HttpClient()) + { + client.Timeout = TimeSpan.FromSeconds(60); + HttpResponseMessage response = client.GetAsync(askurl).Result; + var res = response.Content.ReadAsStringAsync().Result; + + sichuanjieshou = JsonConvert.DeserializeObject<sichuantousujieshoumingxi>(res); + } + + if(sichuanjieshou!=null && sichuanjieshou.code == "200" && !string.IsNullOrEmpty(sichuanjieshou.data.content)) + { + var document = parser.ParseDocument(sichuanjieshou.data.content); + // var contentList = document.QuerySelectorAll("span").Where(x=>x.TextContent !="" && !x.InnerHtml.Contains("<span")).ToList(); + + var contentList = document.QuerySelectorAll("p").Where(x => x.TextContent != "").ToList(); + + var ItemDescriptions = new List<string>(); + var HandlingResults = new List<string>(); + var HandlingStatuses = new List<int>(); + + foreach (var content in contentList) + { + var ssss = content.TextContent.Replace(" ",""); + + if(ssss.IndexOf("涓�銆侀」鐩紪鍙凤細")>=0|| ssss.IndexOf("涓�銆侀」鐩紪鍙�:") >= 0) + { + if (string.IsNullOrEmpty(procurementComplaint.ProjectCode)) + { + procurementComplaint.ProjectCode = ssss.Replace("涓�銆侀」鐩紪鍙凤細","").Replace("涓�銆侀」鐩紪鍙�:", "").Trim(); + if (procurementComplaint.ProjectCode.Length > 50) + { + procurementComplaint.ProjectCode = procurementComplaint.ProjectCode.Substring(0, 50); + } + } + } + + if (ssss.IndexOf("浜屻�侀」鐩悕绉帮細") >= 0 || ssss.IndexOf("浜屻�侀」鐩悕绉�:") >= 0) + { + if (string.IsNullOrEmpty(procurementComplaint.ProjectName)) + { + procurementComplaint.ProjectName = ssss.Replace("浜屻�侀」鐩悕绉帮細", "").Replace("浜屻�侀」鐩悕绉�:", "").Trim(); + if (procurementComplaint.ProjectName.Length > 200) + { + procurementComplaint.ProjectName = procurementComplaint.ProjectName.Substring(0, 200); + } + } + } + + + if ((ssss.IndexOf("鎶曡瘔浜猴細") >= 0 || ssss.IndexOf("鎶曡瘔浜�:") >= 0) && ssss.IndexOf("琚姇璇変汉锛�") < 0 && ssss.IndexOf("琚姇璇変汉锛�") < 0) + { + if (string.IsNullOrEmpty(procurementComplaint.Complainant)) + { + procurementComplaint.Complainant = ssss.Replace("鎶曡瘔浜猴細", "").Replace("鎶曡瘔浜�:", "").Trim(); + if (procurementComplaint.Complainant.Length > 100) + { + procurementComplaint.Complainant = procurementComplaint.Complainant.Substring(0, 100); + } + } + } + + if ((ssss.IndexOf("鎶曡瘔浜�1锛�") >= 0 || ssss.IndexOf("鎶曡瘔浜�1:") >= 0) && ssss.IndexOf("琚姇璇変汉1锛�") < 0 && ssss.IndexOf("琚姇璇変汉1锛�") < 0) + { + if (string.IsNullOrEmpty(procurementComplaint.Complainant)) + { + procurementComplaint.Complainant = ssss.Replace("鎶曡瘔浜�1锛�", "").Replace("鎶曡瘔浜�1:", "").Trim(); + if (procurementComplaint.Complainant.Length > 100) + { + procurementComplaint.Complainant = procurementComplaint.Complainant.Substring(0, 100); + } + } + } + + if (ssss.IndexOf("琚姇璇変汉锛�") >= 0 || ssss.IndexOf("琚姇璇変汉锛�") >= 0) + { + if (string.IsNullOrEmpty(procurementComplaint.ProcurementAgency)) + { + procurementComplaint.ProcurementAgency = ssss.Replace("琚姇璇変汉锛�", "").Replace("琚姇璇変汉:", "").Trim(); + if (procurementComplaint.ProcurementAgency.Length > 100) + { + procurementComplaint.ProcurementAgency = procurementComplaint.ProcurementAgency.Substring(0, 100); + } + } + + if (string.IsNullOrEmpty(procurementComplaint.Purchaser)) + { + procurementComplaint.Purchaser = ssss.Replace("琚姇璇変汉锛�", "").Replace("琚姇璇変汉:", "").Trim(); + if (procurementComplaint.Purchaser.Length > 100) + { + procurementComplaint.Purchaser = procurementComplaint.Purchaser.Substring(0, 100); + } + } + } + + + + if (ssss.IndexOf("琚姇璇変汉1锛�") >= 0 || ssss.IndexOf("琚姇璇変汉1锛�") >= 0) + { + if (string.IsNullOrEmpty(procurementComplaint.Purchaser)) + { + procurementComplaint.Purchaser = ssss.Replace("琚姇璇変汉1锛�", "").Replace("琚姇璇変汉1:", "").Trim(); + if (procurementComplaint.Purchaser.Length > 100) + { + procurementComplaint.Purchaser = procurementComplaint.Purchaser.Substring(0, 100); + } + } + } + + + + if (ssss.IndexOf("琚姇璇変汉2锛�") >= 0 || ssss.IndexOf("琚姇璇変汉2锛�") >= 0) + { + if (string.IsNullOrEmpty(procurementComplaint.ProcurementAgency)) + { + procurementComplaint.ProcurementAgency = ssss.Replace("琚姇璇変汉2锛�", "").Replace("琚姇璇変汉2:", "").Trim(); + if (procurementComplaint.ProcurementAgency.Length > 100) + { + procurementComplaint.ProcurementAgency = procurementComplaint.ProcurementAgency.Substring(0, 100); + } + } + } + + + + if (ssss.IndexOf("鎶曡瘔浜嬮」锛�") >= 0) + { + var aaaa = ssss.Replace("鎶曡瘔浜嬮」锛�", "").Trim(); + if (ItemDescriptions.Count <= 0) + { + if (aaaa.Length > 1000) + { + aaaa = aaaa.Substring(0, 1000); + } + ItemDescriptions.Add(aaaa); + } + else + { + if (aaaa.Length > 1000) + { + aaaa = aaaa.Substring(0, 1000); + } + HandlingResults.Add(aaaa); + if (aaaa.IndexOf("椹冲洖鎶曡瘔")>=0) + { + HandlingStatuses.Add(2); + } + else if (aaaa.IndexOf("鎶曡瘔鎴愮珛") >= 0) + { + HandlingStatuses.Add(1); + + } + else if (aaaa.IndexOf("閮ㄥ垎鎴愮珛") >= 0) + { + HandlingStatuses.Add(3); + } + else + { + HandlingStatuses.Add(0); + } + + } + } + + + + for (int i = 1; i <= 10; i++) + { + if (ssss.IndexOf("鎶曡瘔浜嬮」" + i + "锛�") >= 0) + { + var aaaa = ssss.Replace("鎶曡瘔浜嬮」" + i + "锛�", "").Trim(); + if (ItemDescriptions.Count < i) + { + if (aaaa.Length > 1000) + { + aaaa = aaaa.Substring(0, 1000); + } + ItemDescriptions.Add(aaaa); + } + else + { + if (aaaa.Length > 1000) + { + aaaa = aaaa.Substring(0, 1000); + } + HandlingResults.Add(aaaa); + if (aaaa.IndexOf("椹冲洖鎶曡瘔") >= 0) + { + HandlingStatuses.Add(2); + } + else if (aaaa.IndexOf("鎶曡瘔鎴愮珛") >= 0) + { + HandlingStatuses.Add(1); + + } + else if (aaaa.IndexOf("閮ㄥ垎鎴愮珛") >= 0) + { + HandlingStatuses.Add(3); + } + else + { + HandlingStatuses.Add(0); + } + } + } + } + + + } + + if (ItemDescriptions.Count == 0) + { + var bbbb = ""; + for (int i=0;i< contentList.Count; i++) + { + var sssssss = contentList[i].TextContent; + if (i==0|| sssssss != contentList[i - 1].TextContent) + { + bbbb += sssssss; + } + } + + // var bbbb = sichuanjieshou.data.description; + if (bbbb.Length > 1000) + { + bbbb = bbbb.Substring(0, 1000); + } + ItemDescriptions.Add(bbbb); + } + if (HandlingResults.Count == 0) + { + HandlingResults.Add(""); + HandlingStatuses.Add(0); + } + + + _ccontext.ProcurementComplaints.Add(procurementComplaint); + + + + if (ItemDescriptions.Count > 0) + { + for (int i = 0; i < ItemDescriptions.Count; i++) + { + var procurementComplaintItems = new ProcurementComplaintItem(); + procurementComplaintItems.Id = Guid.NewGuid(); + procurementComplaintItems.ComplaintId = procurementComplaint.Id; + procurementComplaintItems.ItemDescription = ItemDescriptions[i]; + if (HandlingResults.Count == ItemDescriptions.Count) + { + procurementComplaintItems.HandlingResult = HandlingResults[i]; + procurementComplaintItems.HandlingStatus = HandlingStatuses[i]; + } + else + { + procurementComplaintItems.HandlingResult = HandlingResults[0]; + procurementComplaintItems.HandlingStatus = HandlingStatuses[0]; + } + + procurementComplaintItems.Sort = (i + 1); + _ccontext.ProcurementComplaintItems.Add(procurementComplaintItems); + } + } + _ccontext.SaveChanges(); + } + + + + + + } + } + + + if (currPage * pageSize >= sichuan.data.total) + { + break; + } + else + { + currPage += 1; + } + //Thread.CurrentThread.Join(1000 * 10);//闃绘璁惧畾鏃堕棿 + + } + + + logg.WriteLog("鍥涘窛鐪佹姇璇夊鐞� 鑾峰彇瀹屾垚", "鍥涘窛鎶曡瘔"); + //淇濆瓨鏈�鍚庢洿鏂版椂闂� + if (updatetime != null) + { + if (updatetime.Updatetime1.AddMonths(1).Date >= DateTime.Now.Date) + { + updatetime.Updatetime1 = DateTime.Now.AddDays(-1); + } + else + { + updatetime.Updatetime1 = updatetime.Updatetime1.AddMonths(1).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 + { + + } + } + } +} diff --git a/zhengcaioa/Model/WebCrawler/ProcurementComplaint.cs b/zhengcaioa/Model/WebCrawler/ProcurementComplaint.cs new file mode 100644 index 0000000..9ed0ec6 --- /dev/null +++ b/zhengcaioa/Model/WebCrawler/ProcurementComplaint.cs @@ -0,0 +1,26 @@ +锘縰sing System; +using System.Collections.Generic; + +#nullable disable + +namespace zhengcaioa.Models +{ + public partial class ProcurementComplaint + { + public Guid Id { get; set; } + public string ProjectCode { get; set; } + public string ProjectName { get; set; } + public DateTime DecisionDate { get; set; } + public string Purchaser { get; set; } + public string ProcurementAgency { get; set; } + public string Complainant { get; set; } + public string ProcurementSupervisionDepartment { get; set; } + public string Url { get; set; } + public DateTime? CreateTime { get; set; } + public DateTime? UpdateTime { get; set; } + public long? CreateUserId { get; set; } + public string CreateUserName { get; set; } + public long? UpdateUserId { get; set; } + public string UpdateUserName { get; set; } + } +} diff --git a/zhengcaioa/Model/WebCrawler/ProcurementComplaintItem.cs b/zhengcaioa/Model/WebCrawler/ProcurementComplaintItem.cs new file mode 100644 index 0000000..1a2ec16 --- /dev/null +++ b/zhengcaioa/Model/WebCrawler/ProcurementComplaintItem.cs @@ -0,0 +1,20 @@ +锘縰sing System; +using System.Collections.Generic; + +#nullable disable + +namespace zhengcaioa.Models +{ + public partial class ProcurementComplaintItem + { + public Guid Id { get; set; } + public Guid ComplaintId { get; set; } + public string ItemDescription { get; set; } + //1鎴愮珛 2椹冲洖 3 閮ㄥ垎鎴愮珛 0 鍏朵粬 + public int HandlingStatus { get; set; } + public string HandlingResult { get; set; } + + public int? Sort { get; set; } + + } +} diff --git a/zhengcaioa/Model/WebCrawler/WebCrawlerContext.cs b/zhengcaioa/Model/WebCrawler/WebCrawlerContext.cs index 51e75c2..77cde71 100644 --- a/zhengcaioa/Model/WebCrawler/WebCrawlerContext.cs +++ b/zhengcaioa/Model/WebCrawler/WebCrawlerContext.cs @@ -21,6 +21,8 @@ public virtual DbSet<TProjectDictionary> TProjectDictionaries { get; set; } public virtual DbSet<Updatetime> Updatetimes { get; set; } public virtual DbSet<ZhengfuProject> ZhengfuProjects { get; set; } + public virtual DbSet<ProcurementComplaint> ProcurementComplaints { get; set; } + public virtual DbSet<ProcurementComplaintItem> ProcurementComplaintItems { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { @@ -187,6 +189,78 @@ .HasComment("鍏憡鏍囬"); }); + modelBuilder.Entity<ProcurementComplaint>(entity => + { + entity.ToTable("FB_ProcurementComplaints"); + + entity.Property(e => e.Id); + + entity.Property(e => e.ProjectCode).HasMaxLength(50); + + entity.Property(e => e.ProjectName) + .HasMaxLength(200); + + entity.Property(e => e.DecisionDate) + .HasColumnType("datetime"); + + entity.Property(e => e.Purchaser) + .HasMaxLength(100); + + entity.Property(e => e.ProcurementAgency) + .HasMaxLength(100); + + entity.Property(e => e.Complainant) + .HasMaxLength(100); + + entity.Property(e => e.ProcurementSupervisionDepartment) + .HasMaxLength(100); + + entity.Property(e => e.Url) + .HasMaxLength(255); + + entity.Property(e => e.CreateTime) + .HasColumnType("datetime"); + + entity.Property(e => e.UpdateTime) + .HasColumnType("datetime"); + + entity.Property(e => e.CreateUserId) + .HasColumnType("bigint"); + + entity.Property(e => e.UpdateUserId) + .HasColumnType("bigint"); + + entity.Property(e => e.CreateUserName) + .HasMaxLength(64); + + entity.Property(e => e.UpdateUserName) + .HasMaxLength(64); + }); + + modelBuilder.Entity<ProcurementComplaintItem>(entity => + { + entity.ToTable("FB_ProcurementComplaintItems"); + + entity.Property(e => e.Id); + + entity.Property(e => e.ComplaintId); + + entity.Property(e => e.ItemDescription) + .HasMaxLength(1000); + + entity.Property(e => e.HandlingStatus) + .HasColumnType("int"); + + entity.Property(e => e.HandlingResult) + .HasMaxLength(1000); + + entity.Property(e => e.Sort) + .HasColumnType("int") + .HasColumnName("sort"); + + + }); + OnModelCreatingPartial(modelBuilder); } -- Gitblit v1.9.1