using Model; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; namespace BLL { public static class PMPDataService { //private static readonly string PmpApiUrl = "http://mdm.cwcec.com:8020/"; private static readonly string PmpApiUrl = SysConstSetService.WuHuanPMPPath; /// /// 获取token /// /// 五环PMP系统token有效期48小时 /// public static Model.TokenItem GetToken() { Model.TokenItem tokenItem = new Model.TokenItem(); tokenItem.Token = BLL.SysConstSetService.WuHuanPMPToken; tokenItem.ExpiryTime = BLL.SysConstSetService.WuHuanPMPTokenExTime; if (string.IsNullOrEmpty(tokenItem.Token) || string.IsNullOrEmpty(tokenItem.ExpiryTime)) { tokenItem = GetWuHuanPMPToken(); } else if (DateTime.Now > DateTime.Parse(tokenItem.ExpiryTime)) { tokenItem = GetWuHuanPMPToken(); } return tokenItem; } /// /// 获取五环PMP系统Token /// /// 他们的token有效期48小时 /// public static Model.TokenItem GetWuHuanPMPToken() { string getUrl = PmpApiUrl + "/api/standard/dis/token?appId=v7lm6i30&appSecret=0qnbsy28e1hldzbm7rnyjs4n93s4eu62"; TokenItem tokenItem = new TokenItem(); try { var strJosn = Http(getUrl); if (!string.IsNullOrEmpty(strJosn)) { JObject obj = JObject.Parse(strJosn); if (obj["data"] != null) { string tokenStr = obj["data"].ToString(); tokenItem.Token = tokenStr; tokenItem.ExpiryTime = DateTime.Now.AddHours(40).ToString("yyyy-MM-dd HH:mm:ss"); SysConstSetService.SetWuHuanPMPToken(tokenItem.Token); SysConstSetService.SetWuHuanPMPTokenExpirationTime(tokenItem.ExpiryTime); } } } catch (Exception eee) { ErrLogInfo.WriteLog("获取五环PMP系统Token出错1:" + eee.StackTrace + eee.Message); } return tokenItem; } /// /// 项目档案查询接口 /// public static void GetPMPProjectMasterData() { string url = $"{PmpApiUrl}/api/standard/dis/query_all"; var token = GetToken(); Hashtable newToken = new Hashtable { { "Authorization", token.Token } }; string mess = string.Empty; string total = string.Empty; string code = string.Empty; string data = string.Empty; string rows = string.Empty; List list = new List(); int pageSize = 1000;//一次性最多返回1000条数据 for (int pageNum = 1; pageNum < 10; pageNum++) { var tempData = new { actRet = 1, pageNumber = pageNum, pageSize = pageSize, sortName = "id", searchDestCode = "", sortOrder = "desc", searchDisStatus = "", menuName = "项目档案", status = 1, searchCond = new List() }; string pushContent = JsonConvert.SerializeObject(tempData); //var returndata = BLL.APIGetHttpService.OutsideHttp(url, "POST", null, newToken, pushContent); //var returndata = "{\"msg\":\"操作成功\",\"total\":4403,\"code\":1,\"data\":{\"userColumnPermissions\":\"\"},\"rows\":[{\"code\":\"100539\",\"projShortName\":\"新疆年产40亿方煤制天然气项目\",\"projectNameEn\":\"\",\"cityCode\":\"654000\",\"stProjectStepVals\":\"3006\",\"remarkA\":\"\",\"remarkC\":\"\",\"remarkB\":\"\",\"cityName\":\"伊犁哈萨克自治州\",\"countryCode\":\"CHN\",\"id\":6178,\"projStepZxnoVals\":\"10\",\"countyName\":\"伊宁县\",\"address\":\"伊宁县工业园区\",\"provinceCode\":\"650000\",\"projStepZxnoCode\":\"10\",\"stProjectTypeVals\":\"30\",\"stNum\":\"25093\",\"disType\":\"\",\"projStepZxnoName\":\"项目投标\",\"countyCode\":\"654021\",\"stProjectPropertyVals\":\"10\",\"name\":\"新疆年产40亿方煤制天然气项目\",\"provinceName\":\"新疆维吾尔自治区\",\"countryName\":\"中国\"},{\"code\":\"100538\",\"projShortName\":\"印尼泗水PET项目\",\"projectNameEn\":\"\",\"cityCode\":\"\",\"stProjectStepVals\":\"2001\",\"remarkA\":\"\",\"remarkC\":\"\",\"remarkB\":\"\",\"cityName\":\"\",\"countryCode\":\"IDN\",\"id\":6176,\"projStepZxnoVals\":\"20\",\"countyName\":\"\",\"address\":\"印度尼西亚泗水市\",\"provinceCode\":\"\",\"projStepZxnoCode\":\"20\",\"stProjectTypeVals\":\"20\",\"stNum\":\"25092\",\"disType\":\"\",\"projStepZxnoName\":\"项目实施\",\"countyCode\":\"\",\"stProjectPropertyVals\":\"10\",\"name\":\"印尼泗水PET项目\",\"provinceName\":\"\",\"countryName\":\"印度尼西亚\"},{\"code\":\"100537\",\"projShortName\":\"鹤壁煤化工锅炉扩能节能改造项目\",\"projectNameEn\":\"\",\"cityCode\":\"410600\",\"stProjectStepVals\":\"2004\",\"remarkA\":\"\",\"remarkC\":\"\",\"remarkB\":\"\",\"cityName\":\"鹤壁市\",\"countryCode\":\"CHN\",\"id\":6174,\"projStepZxnoVals\":\"20\",\"countyName\":\"鹤山区\",\"address\":\"宝山园区\",\"provinceCode\":\"410000\",\"projStepZxnoCode\":\"20\",\"stProjectTypeVals\":\"20\",\"stNum\":\"25091\",\"disType\":\"\",\"projStepZxnoName\":\"项目实施\",\"countyCode\":\"410602\",\"stProjectPropertyVals\":\"10\",\"name\":\"河南能源化工集团鹤壁煤化工有限公司锅炉扩能节能绿色化改造项目\",\"provinceName\":\"河南省\",\"countryName\":\"中国\"},{\"code\":\"100536\",\"projShortName\":\"新疆兵团十三师淖毛湖绿电制氢项目\",\"projectNameEn\":\"\",\"cityCode\":\"654200\",\"stProjectStepVals\":\"2003\",\"remarkA\":\"\",\"remarkC\":\"1904503358757068802\",\"remarkB\":\"\",\"cityName\":\"塔城地区\",\"countryCode\":\"CHN\",\"id\":6172,\"projStepZxnoVals\":\"20\",\"countyName\":\"和布克赛尔蒙古自治县\",\"address\":\"和丰大道园服路园区服务中心715室\",\"provinceCode\":\"650000\",\"projStepZxnoCode\":\"20\",\"stProjectTypeVals\":\"20\",\"stNum\":\"25087\",\"disType\":\"\",\"projStepZxnoName\":\"项目实施\",\"countyCode\":\"654226\",\"stProjectPropertyVals\":\"10\",\"name\":\"新疆兵团十三师淖毛湖先进绿电制氢示范项目\",\"provinceName\":\"新疆维吾尔自治区\",\"countryName\":\"中国\"},{\"code\":\"100535\",\"projShortName\":\"福建邵化生产装置改造项目\",\"projectNameEn\":\"\",\"cityCode\":\"350700\",\"stProjectStepVals\":\"4001\",\"remarkA\":\"\",\"remarkC\":\"1904503358572519426\",\"remarkB\":\"\",\"cityName\":\"南平市\",\"countryCode\":\"CHN\",\"id\":6170,\"projStepZxnoVals\":\"10\",\"countyName\":\"邵武市\",\"address\":\"金塘工业区\",\"provinceCode\":\"350000\",\"projStepZxnoCode\":\"10\",\"stProjectTypeVals\":\"40\",\"stNum\":\"24217\",\"disType\":\"\",\"projStepZxnoName\":\"项目投标\",\"countyCode\":\"350781\",\"stProjectPropertyVals\":\"10\",\"name\":\"福建邵化化工有限公司生产装置技术升级搬迁改造项目\",\"provinceName\":\"福建省\",\"countryName\":\"中国\"},{\"code\":\"100534\",\"projShortName\":\"土库曼斯坦化学康采恩化肥项目\",\"projectNameEn\":\"Turkmenhimiya Maryazot Fertilizer Project\",\"cityCode\":\"\",\"stProjectStepVals\":\"2001\",\"remarkA\":\"\",\"remarkC\":\"1904503358383775746\",\"remarkB\":\"\",\"cityName\":\"\",\"countryCode\":\"TKM\",\"id\":6168,\"projStepZxnoVals\":\"20\",\"countyName\":\"\",\"address\":\"Mary City\",\"provinceCode\":\"\",\"projStepZxnoCode\":\"20\",\"stProjectTypeVals\":\"20\",\"stNum\":\"24513\",\"disType\":\"\",\"projStepZxnoName\":\"项目实施\",\"countyCode\":\"\",\"stProjectPropertyVals\":\"10\",\"name\":\"土库曼斯坦化学康采恩化肥项目\",\"provinceName\":\"\",\"countryName\":\"土库曼斯坦\"},{\"code\":\"100533\",\"projShortName\":\"宁夏煤业有限责任公司煤制油分公司浓盐水结晶分盐及资源化利用改造项目\",\"projectNameEn\":\"\",\"cityCode\":\"640100\",\"stProjectStepVals\":\"3005\",\"remarkA\":\"\",\"remarkC\":\"1904201377140236290\",\"remarkB\":\"\",\"cityName\":\"银川市\",\"countryCode\":\"CHN\",\"id\":6166,\"projStepZxnoVals\":\"20\",\"countyName\":\"贺兰县\",\"address\":\"宁夏回族自治区银川市宁东镇\",\"provinceCode\":\"640000\",\"projStepZxnoCode\":\"20\",\"stProjectTypeVals\":\"30\",\"stNum\":\"25090\",\"disType\":\"\",\"projStepZxnoName\":\"项目实施\",\"countyCode\":\"640122\",\"stProjectPropertyVals\":\"20\",\"name\":\"宁夏煤业有限责任公司煤制油分公司浓盐水结晶分盐及资源化利用改造项目\",\"provinceName\":\"宁夏回族自治区\",\"countryName\":\"中国\"},{\"code\":\"100532\",\"projShortName\":\"肯尼亚KAISHAN绿氨项目\",\"projectNameEn\":\"Kenya KAISHAN Ammonia&Urea Project\",\"cityCode\":\"\",\"stProjectStepVals\":\"2001\",\"remarkA\":\"\",\"remarkC\":\"1904201376867606529\",\"remarkB\":\"\",\"cityName\":\"\",\"countryCode\":\"KEN\",\"id\":6164,\"projStepZxnoVals\":\"20\",\"countyName\":\"\",\"address\":\"肯尼亚\",\"provinceCode\":\"\",\"projStepZxnoCode\":\"20\",\"stProjectTypeVals\":\"20\",\"stNum\":\"25083\",\"disType\":\"\",\"projStepZxnoName\":\"项目实施\",\"countyCode\":\"\",\"stProjectPropertyVals\":\"10\",\"name\":\"肯尼亚KAISHAN绿氨项目\",\"provinceName\":\"\",\"countryName\":\"肯尼亚\"},{\"code\":\"100531\",\"projShortName\":\"玉门市老市区管理委员会创业孵化基地建设项目(北区道路建设工程)\",\"projectNameEn\":\"\",\"cityCode\":\"620900\",\"stProjectStepVals\":\"3006\",\"remarkA\":\"\",\"remarkC\":\"1904201376603365377\",\"remarkB\":\"\",\"cityName\":\"酒泉市\",\"countryCode\":\"CHN\",\"id\":6162,\"projStepZxnoVals\":\"20\",\"countyName\":\"玉门市\",\"address\":\"老化工园区\",\"provinceCode\":\"620000\",\"projStepZxnoCode\":\"20\",\"stProjectTypeVals\":\"30\",\"stNum\":\"25089\",\"disType\":\"\",\"projStepZxnoName\":\"项目实施\",\"countyCode\":\"620981\",\"stProjectPropertyVals\":\"10\",\"name\":\"玉门市老市区管理委员会玉门经济开发区老市区化工工业园创业孵化基地建设项目(北区道路建设工程)工程设计\",\"provinceName\":\"甘肃省\",\"countryName\":\"中国\"}]}"; var returndata = "{\"msg\":\"操作成功\",\"total\":4405,\"code\":1,\"data\":{\"userColumnPermissions\":\"\"},\"rows\":[{\"code\":\"100541\",\"projShortName\":\"内蒙古卓正聚甲醛项目\",\"projectNameEn\":\"\",\"cityCode\":\"150600\",\"stProjectStepVals\":\"3006\",\"realEndDate\":\"\",\"remarkA\":\"\",\"remarkC\":\"\",\"remarkB\":\"\",\"cityName\":\"鄂尔多斯市\",\"countryCode\":\"CHN\",\"id\":6182,\"projStepZxnoVals\":\"20\",\"countyName\":\"乌审旗\",\"realStartDate\":\"2025-03-27T00:00:00\",\"address\":\"纳林河工业园\",\"provinceCode\":\"150000\",\"projStepZxnoCode\":\"20\",\"stProjectTypeVals\":\"30\",\"stNum\":\"24070\",\"disType\":\"\",\"projStepZxnoName\":\"项目实施\",\"countyCode\":\"150626\",\"stProjectPropertyVals\":\"10\",\"name\":\"内蒙古卓正煤化工有限公司甲醇醋酸延链优化深加工与综合利用生产高端化学品及新材料聚甲醛项目\",\"provinceName\":\"内蒙古自治区\",\"countryName\":\"中国\"},{\"code\":\"100540\",\"projShortName\":\"越南富美4万吨/年双氧水项目\",\"projectNameEn\":\"\",\"cityCode\":\"\",\"stProjectStepVals\":\"9909\",\"realEndDate\":\"\",\"remarkA\":\"\",\"remarkC\":\"\",\"remarkB\":\"\",\"cityName\":\"\",\"countryCode\":\"VNM\",\"id\":6180,\"projStepZxnoVals\":\"20\",\"countyName\":\"\",\"realStartDate\":\"2025-03-27T00:00:00\",\"address\":\"头顿\",\"provinceCode\":\"\",\"projStepZxnoCode\":\"20\",\"stProjectTypeVals\":\"99\",\"stNum\":\"25095\",\"disType\":\"\",\"projStepZxnoName\":\"项目实施\",\"countyCode\":\"\",\"stProjectPropertyVals\":\"10\",\"name\":\"越南富美4万吨/年双氧水项目\",\"provinceName\":\"\",\"countryName\":\"越南\"},{\"code\":\"100539\",\"projShortName\":\"新疆年产40亿方煤制天然气项目\",\"projectNameEn\":\"\",\"cityCode\":\"654000\",\"stProjectStepVals\":\"3006\",\"realEndDate\":\"\",\"remarkA\":\"\",\"remarkC\":\"\",\"remarkB\":\"\",\"cityName\":\"伊犁哈萨克自治州\",\"countryCode\":\"CHN\",\"id\":6178,\"projStepZxnoVals\":\"10\",\"countyName\":\"伊宁县\",\"realStartDate\":\"2025-03-27T00:00:00\",\"address\":\"伊宁县工业园区\",\"provinceCode\":\"650000\",\"projStepZxnoCode\":\"10\",\"stProjectTypeVals\":\"30\",\"stNum\":\"25093\",\"disType\":\"\",\"projStepZxnoName\":\"项目投标\",\"countyCode\":\"654021\",\"stProjectPropertyVals\":\"10\",\"name\":\"新疆年产40亿方煤制天然气项目\",\"provinceName\":\"新疆维吾尔自治区\",\"countryName\":\"中国\"},{\"code\":\"100538\",\"projShortName\":\"印尼泗水PET项目\",\"projectNameEn\":\"\",\"cityCode\":\"\",\"stProjectStepVals\":\"2001\",\"realEndDate\":\"\",\"remarkA\":\"\",\"remarkC\":\"\",\"remarkB\":\"\",\"cityName\":\"\",\"countryCode\":\"IDN\",\"id\":6176,\"projStepZxnoVals\":\"20\",\"countyName\":\"\",\"realStartDate\":\"2025-03-27T00:00:00\",\"address\":\"印度尼西亚泗水市\",\"provinceCode\":\"\",\"projStepZxnoCode\":\"20\",\"stProjectTypeVals\":\"20\",\"stNum\":\"25092\",\"disType\":\"\",\"projStepZxnoName\":\"项目实施\",\"countyCode\":\"\",\"stProjectPropertyVals\":\"10\",\"name\":\"印尼泗水PET项目\",\"provinceName\":\"\",\"countryName\":\"印度尼西亚\"}]}"; if (!string.IsNullOrEmpty(returndata)) { JObject obj = JObject.Parse(returndata); mess = obj["msg"].ToString(); total = obj["total"].ToString(); code = obj["code"].ToString(); data = obj["data"].ToString(); rows = obj["rows"].ToString(); PMPResponseData pmpResponseData = PMPResponseData.FromJson(returndata); if (pmpResponseData.code == 1 && pmpResponseData.rows.Any()) { foreach (var item in pmpResponseData.rows) { PMP_Project newItem = new PMP_Project(); newItem.Id = item.id; newItem.Code = item.code; newItem.StNum = item.stNum; newItem.Name = item.name; newItem.RealStartDate = item.realStartDate; newItem.RealEndDate = item.realEndDate; newItem.DisType = item.disType; newItem.ProjShortName = item.projShortName; newItem.ProjStepZxnoCode = item.projStepZxnoCode; newItem.ProjStepZxnoName = item.projStepZxnoName; newItem.StProjectTypeVals = item.stProjectTypeVals; newItem.StProjectStepVals = item.stProjectStepVals; newItem.ProjStepZxnoVals = item.projStepZxnoVals; newItem.StProjectPropertyVals = item.stProjectPropertyVals; newItem.RemarkA = item.remarkA; newItem.RemarkB = item.remarkB; newItem.RemarkC = item.remarkC; newItem.Address = item.address; newItem.CityCode = item.cityCode; newItem.CityName = item.cityName; newItem.CountryCode = item.countryCode; newItem.CountryName = item.countryName; newItem.CountyCode = item.countyCode; newItem.CountyName = item.countyName; newItem.ProjectNameEn = item.projectNameEn; newItem.ProvinceCode = item.provinceCode; newItem.ProvinceName = item.provinceName; newItem.CreateTime = DateTime.Now; list.Add(newItem); } if (pmpResponseData.rows.Count < 1000) {//当本次请求数据小于1000时,说明后续已经没有数据了,不用再请求接口;跳出循环 break; } } else { break; } } else { break; } } if (list.Any()) { DeleteAllPMP_Project(); AddBulkPMP_Project(list); } } public static void AddBulkPMP_Project(List newtables) { Model.SGGLDB db = Funs.DB; db.PMP_Project.InsertAllOnSubmit(newtables); db.SubmitChanges(); } public static void DeleteAllPMP_Project() { Model.SGGLDB db = Funs.DB; if (db.PMP_Project.FirstOrDefault() != null) { db.PMP_Project.DeleteAllOnSubmit(db.PMP_Project); db.SubmitChanges(); } } public static string Http(string url, string method = "GET", string contenttype = "application/json;charset=utf-8", Hashtable header = null, string data = null) { ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = string.IsNullOrEmpty(method) ? "GET" : method; request.ContentType = string.IsNullOrEmpty(contenttype) ? "application/json;charset=utf-8" : contenttype; if (header != null) { foreach (var i in header.Keys) { request.Headers.Add(i.ToString(), header[i].ToString()); } } else if (method == "POST") { var token = GetToken(); request.Headers.Add("Authorization", token.Token); } request.Timeout = 20000; /// 设置5秒超时 if (!string.IsNullOrEmpty(data)) { Stream RequestStream = request.GetRequestStream(); byte[] bytes = Encoding.UTF8.GetBytes(data); RequestStream.Write(bytes, 0, bytes.Length); RequestStream.Close(); } HttpWebResponse response = null; Stream ResponseStream = null; StreamReader StreamReader = null; try { response = (HttpWebResponse)request.GetResponse(); ResponseStream = response.GetResponseStream(); StreamReader = new StreamReader(ResponseStream, Encoding.GetEncoding("utf-8")); string re = StreamReader.ReadToEnd(); StreamReader.Close(); ResponseStream.Close(); return re; } catch (WebException ex) { response = (HttpWebResponse)ex.Response; ResponseStream = response.GetResponseStream(); StreamReader = new StreamReader(ResponseStream, Encoding.GetEncoding("utf-8")); string re = StreamReader.ReadToEnd(); return re; } finally { if (StreamReader != null) { StreamReader.Close(); } if (ResponseStream != null) { ResponseStream.Close(); } if (response != null) { response.Close(); } } } } }