username@email.com
3 天以前 d4431c7e89865a506af8662244004d0baa7ed609
投诉处理,爬
2个文件已修改
4个文件已添加
704 ■■■■■ 已修改文件
zhengcaioa/Crawler/Program.cs 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhengcaioa/Crawler/sichuan/sichuantousujieshou.cs 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhengcaioa/Crawler/sichuan/sichuantousuoperation.cs 427 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhengcaioa/Model/WebCrawler/ProcurementComplaint.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhengcaioa/Model/WebCrawler/ProcurementComplaintItem.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhengcaioa/Model/WebCrawler/WebCrawlerContext.cs 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);//阻止设定时间
        //    }
        //}
zhengcaioa/Crawler/sichuan/sichuantousujieshou.cs
New file
@@ -0,0 +1,65 @@
using 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; }
    }
}
zhengcaioa/Crawler/sichuan/sichuantousuoperation.cs
New file
@@ -0,0 +1,427 @@
using 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时间的DateTime对象
                    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=&region=&siteId=94c965cc-c55d-4f92-8469-d5875c68bd04&channel=0df9d47e-c210-4176-bce9-ead9845bf311&currPage=" + currPage + "&pageSize=" + pageSize + "&noticeType=&regionCode=&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时间的DateTime对象
                            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
            {
            }
        }
    }
}
zhengcaioa/Model/WebCrawler/ProcurementComplaint.cs
New file
@@ -0,0 +1,26 @@
using 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; }
    }
}
zhengcaioa/Model/WebCrawler/ProcurementComplaintItem.cs
New file
@@ -0,0 +1,20 @@
using 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; }
    }
}
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);
        }