CNCEC_SUBQHSE_WUHUAN/SGGL/BLL/PMP/PMPDataService.cs

350 lines
34 KiB
C#
Raw Normal View History

2025-03-28 14:22:04 +08:00
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;
/// <summary>
/// 获取token
/// </summary>
/// 五环PMP系统token有效期48小时
/// <returns></returns>
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;
}
/// <summary>
/// 获取五环PMP系统Token
/// </summary>
/// 他们的token有效期48小时
/// <returns></returns>
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;
}
/// <summary>
/// 项目档案查询接口
/// </summary>
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<Model.PMP_Project> list = new List<PMP_Project>();
int pageSize = 1000;//一次性最多返回1000条数据
2025-03-31 12:27:13 +08:00
List<PMPSearchCondData> searchCond = new List<PMPSearchCondData>();
2025-03-28 14:22:04 +08:00
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,
2025-03-31 12:27:13 +08:00
//searchCond = new List<object>(),
searchCond = searchCond
2025-03-28 14:22:04 +08:00
};
string pushContent = JsonConvert.SerializeObject(tempData);
2025-03-31 12:27:13 +08:00
var returndata = BLL.APIGetHttpService.OutsideHttp(url, "POST", null, newToken, pushContent);
//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\":\"印度尼西亚\"}]}";
2025-03-28 14:22:04 +08:00
if (!string.IsNullOrEmpty(returndata))
{
2025-03-31 12:27:13 +08:00
//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();
2025-03-28 14:22:04 +08:00
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();
2025-03-31 12:27:13 +08:00
AddPMP_Project(list);
}
}
/// <summary>
/// 项目OBS查询接口
/// </summary>
/// <param name="proId">项目Id</param>
public static List<Model.PMPOBS> GetPMPProjectOBSMasterData(string proId)
{
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<Model.PMPOBS> list = new List<PMPOBS>();
int pageSize = 1000;//一次性最多返回1000条数据
List<PMPSearchCondData> searchCond = new List<PMPSearchCondData>();
searchCond.Add(new PMPSearchCondData { name = "id", value = proId, fieldType = "SelectList" });
for (int pageNum = 1; pageNum < 10; pageNum++)
{
var tempData = new
{
actRet = 1,
pageNumber = pageNum,
pageSize = pageSize,
sortName = "id",
searchDestCode = "",
sortOrder = "desc",
searchDisStatus = "",
menuName = "OBS",
status = 1,
searchCond = searchCond
};
string pushContent = JsonConvert.SerializeObject(tempData);
//var returndata = BLL.APIGetHttpService.OutsideHttp(url, "POST", null, newToken, pushContent);
var returndata = "{\"msg\":\"操作成功\",\"total\":63,\"code\":1,\"data\":{\"userColumnPermissions\":\"\"},\"rows\":[{\"disType\":\"\",\"obsId\":\"1874004938250653696\",\"code\":\"1874004938250653696\",\"staffCode\":\"\",\"proCode\":\"CP\",\"level\":2,\"staffName\":\"\",\"name\":\"化工工艺专业负责人\",\"id\":944618,\"projectId\":\"1857091204378914817\",\"obsPid\":\"1874004933423009792\"},{\"disType\":\"\",\"obsId\":\"1874004948325371904\",\"code\":\"1874004948325371904\",\"staffCode\":\"\",\"proCode\":\"\",\"level\":2,\"staffName\":\"\",\"name\":\"项目技术主管\",\"id\":944616,\"projectId\":\"1857091204378914817\",\"obsPid\":\"1874004944894431232\"},{\"disType\":\"\",\"obsId\":\"1874004946647650304\",\"code\":\"1874004946647650304\",\"staffCode\":\"890\",\"proCode\":\"\",\"level\":3,\"staffName\":\"金吉\",\"name\":\"1717470730419048448\",\"id\":944614,\"projectId\":\"1857091204378914817\",\"obsPid\":\"1874004946622484480\"},{\"disType\":\"\",\"obsId\":\"1874004935037816832\",\"code\":\"1874004935037816832\",\"staffCode\":\"\",\"proCode\":\"IN\",\"level\":2,\"staffName\":\"\",\"name\":\"仪表专业负责人\",\"id\":944612,\"projectId\":\"1857091204378914817\",\"obsPid\":\"1874004933423009792\"},{\"disType\":\"\",\"obsId\":\"1874004944919597056\",\"code\":\"1874004944919597056\",\"staffCode\":\"\",\"proCode\":\"\",\"level\":2,\"staffName\":\"\",\"name\":\"项目主管\",\"id\":944610,\"projectId\":\"1857091204378914817\",\"obsPid\":\"1874004944894431232\"},{\"disType\":\"\",\"obsId\":\"1726143893013139456\",\"code\":\"1726143893013139456\",\"staffCode\":\"\",\"proCode\":\"\",\"level\":2,\"staffName\":\"\",\"name\":\"项目经理\",\"id\":924461,\"projectId\":\"1725799419921571842\",\"obsPid\":\"1726139280880963584\"},{\"disType\":\"\",\"obsId\":\"1790293713575088128\",\"code\":\"1790293713575088128\",\"staffCode\":\"\",\"proCode\":\"CP\",\"level\":2,\"staffName\":\"\",\"name\":\"化工工艺专业负责人\",\"id\":914461,\"projectId\":\"1764929892790579202\",\"obsPid\":\"1790293698567868416\"},{\"disType\":\"\",\"obsId\":\"1726152536429301760\",\"code\":\"1726152536429301760\",\"staffCode\":\"786\",\"proCode\":\"HV\",\"level\":3,\"staffName\":\"罗晓波\",\"name\":\"1717470703806189568\",\"id\":904461,\"projectId\":\"1725804867986931714\",\"obsPid\":\"1726152536387358720\"},{\"disType\":\"\",\"obsId\":\"1726158429212512256\",\"code\":\"1726158429212512256\",\"staffCode\":\"\",\"proCode\":\"\",\"level\":2,\"staffName\":\"\",\"name\":\"项目技术主管\",\"id\":894461,\"projectId\":\"1725799683017678849\",\"obsPid\":\"1726154187265413120\"},{\"disType\":\"\",\"obsId\":\"1726145953582419968\",\"code\":\"1726145953582419968\",\"staffCode\":\"\",\"proCode\":\"TC\",\"level\":2,\"staffName\":\"\",\"name\":\"电信专业负责人\",\"id\":884461,\"projectId\":\"1725799443120267266\",\"obsPid\":\"1726142507911352320\"},{\"disType\":\"\",\"obsId\":\"1807817821707702272\",\"code\":\"1807817821707702272\",\"staffCode\":\"1548\",\"proCode\":\"PP\",\"level\":3,\"staffName\":\"罗骏\",\"name\":\"1717470895821426688\",\"id\":874461,\"projectId\":\"1764864241774374914\",\"obsPid\":\"1807817374255157248\"},{\"disType\":\"\",\"obsId\":\"1726132867945336832\",\"code\":\"1726132867945336832\",\"staffCode\":\"175\",\"proCode\":\"PP\",\"level\":3,\"staffName\":\"章安杰\",\"name\":\"1717470554467995648\",\"id\":864461,\"projectId\":\"1725799080250056706\",\"obsPid\":\"1726132867723038720\"},{\"disType\":\"\",\"obsId\":\"1726128845142233088\",\"code\":\"1726128845142233088\",\"staffCode\":\"\",\"proCode\":\"CP\",\"level\":1,\"staffName\":\"\",\"name\":\"设计岗位\",\"id\":854461,\"projectId\":\"1725799069407780865\",\"obsPid\":\"0\"},{\"disType\":\"\",\"obsId\":\"1809004454788337664\",\"code\":\"1809004454788337664\",\"staffCode\":\"2126\",\"proCode\":\"EQ\",\"level\":3,\"staffName\":\"向派\",\"name\":\"1717471125925138432\",\"id\":844619,\"projectId\":\"1764929736976379906\",\"obsPid\":\"1809004377281794048\"},{\"disType\":\"\",\"obsId\":\"1808814135417376768\",\"code\":\"1808814135417376768\",\"
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();
PMPOBSResponseData pmpOBSResponseData = PMPOBSResponseData.FromJson(returndata);
if (pmpOBSResponseData.code == 1 && pmpOBSResponseData.rows.Any())
{
list.AddRange(pmpOBSResponseData.rows);
//获取岗位专业人员
var sss = list.Where(x => x.level == 3 && !string.IsNullOrWhiteSpace(x.staffName));
if (pmpOBSResponseData.rows.Count < 1000)
{//当本次请求数据小于1000时说明后续已经没有数据了不用再请求接口跳出循环
break;
}
}
else
{
break;
}
}
else
{
break;
}
2025-03-28 14:22:04 +08:00
}
2025-03-31 12:27:13 +08:00
return list;
2025-03-28 14:22:04 +08:00
}
2025-03-31 12:27:13 +08:00
public static void AddPMP_Project(List<Model.PMP_Project> newtables)
2025-03-28 14:22:04 +08:00
{
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();
}
}
}
}
}