CNCEC_SUBQHSE_WUHUAN/SGGL/BLL/MDM/MDMDataService.cs

261 lines
17 KiB
C#
Raw Normal View History

2025-03-27 22:24:48 +08:00
using Aspose.Words.Lists;
using Aspose.Words.Tables;
using Model;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using NPOI.POIFS.Crypt.Dsig;
using NPOI.SS.Formula.Functions;
using Org.BouncyCastle.Ocsp;
using RestSharp;
using SgManager.AI;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Runtime.Remoting.Contexts;
using System.Security.Policy;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Web.UI.WebControls;
namespace BLL
{
public static class MDMDataService
{
//private static readonly string MdmApiUrl = "http://mdm.cwcec.com:8020/";
private static readonly string MdmApiUrl = SysConstSetService.WuHuanMDMPath;
/// <summary>
/// 获取token
/// </summary>
/// 五环MDM系统token有效期48小时
/// <returns></returns>
public static Model.TokenItem GetToken()
{
Model.TokenItem tokenItem = new Model.TokenItem();
tokenItem.Token = BLL.SysConstSetService.WuHuanMDMToken;
tokenItem.ExpiryTime = BLL.SysConstSetService.WuHuanMDMTokenExTime;
if (string.IsNullOrEmpty(tokenItem.Token) || string.IsNullOrEmpty(tokenItem.ExpiryTime))
{
tokenItem = GetWuHuanMDMToken();
}
else if (DateTime.Now > DateTime.Parse(tokenItem.ExpiryTime))
{
tokenItem = GetWuHuanMDMToken();
}
return tokenItem;
}
/// <summary>
/// 获取五环MDM系统Token
/// </summary>
/// 他们的token有效期48小时
/// <returns></returns>
public static Model.TokenItem GetWuHuanMDMToken()
{
string getUrl = MdmApiUrl + "/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(-12).ToString("yyyy-MM-dd HH:mm:ss");
SysConstSetService.SetWuHuanMDMToken(tokenItem.Token);
SysConstSetService.SetWuHuanMDMTokenExpirationTime(tokenItem.ExpiryTime);
}
}
}
catch (Exception eee)
{
ErrLogInfo.WriteLog("获取五环MDM系统Token出错1" + eee.StackTrace + eee.Message);
}
return tokenItem;
}
/// <summary>
/// 项目档案查询接口
/// </summary>
public static void GetMDMProjectMasterData()
{
string url = $"{MdmApiUrl}/api/standard/dis/query_all";
var tempData = new
{
actRet = 1,
pageNumber = 1,
sortName = "id",
searchDestCode = "",
sortOrder = "desc",
pageSize = 10000,
searchDisStatus = "",
menuName = "项目档案",
status = 1,
searchCond = new List<object>()
};
//var token = GetToken();
//Hashtable newToken = new Hashtable { { "Authorization", token.Token } };
//string contenttype = "application/json;charset=utf-8";
//string result = Http(url, "POST", contenttype, newToken, JsonConvert.SerializeObject(tempData));
string mess = string.Empty;
string total = string.Empty;
string code = string.Empty;
string data = string.Empty;
string rows = string.Empty;
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\":\"\",\
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();
MdmResponseData mdmResponseData = MdmResponseData.FromJson(returndata);
if (mdmResponseData.code == 1)
{
if (mdmResponseData.rows.Any())
{
List<Model.MDM_Project> list = new List<MDM_Project>();
DeleteAllMDM_Project();
foreach (var item in mdmResponseData.rows)
{
MDM_Project newItem = new MDM_Project();
newItem.Id = item.id;
newItem.Code = item.code;
newItem.StNum = item.stNum;
newItem.Name = item.name;
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);
}
AddBulkMDM_Project(list);
}
}
}
}
public static void AddBulkMDM_Project(List<Model.MDM_Project> newtables)
{
Model.SGGLDB db = Funs.DB;
db.MDM_Project.InsertAllOnSubmit(newtables);
db.SubmitChanges();
}
public static void DeleteAllMDM_Project()
{
Model.SGGLDB db = Funs.DB;
if (db.MDM_Project.FirstOrDefault() != null)
{
db.MDM_Project.DeleteAllOnSubmit(db.MDM_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();
}
}
}
}
}