using IStation.Model;
|
using System;
|
using System.Collections.Generic;
|
using System.IO;
|
using System.Linq;
|
using System.Net;
|
using System.Runtime.InteropServices;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace IStation.BLL
|
{
|
public class AnaPrj
|
{
|
public class SavePrjRequest
|
{
|
public IStation.CalcModel.AnaPrj prj { get; set; }
|
public IStation.CalcModel.AnaSetting settting { get; set; }
|
public IStation.CalcModel.AnaRequestBase requestBase { get; set; }
|
public bool isSubmit { get; set; }
|
}
|
|
public static void SavePrj( CalcModel.AnaRequest ana_request , CalcModel.AnaSetting ana_settting,CalcModel.AnaPrj prj,bool isSubmit)
|
{
|
if (!ServiceParas.IsRemote)
|
{
|
IStation.Common.HistoryAnaPrjFileHelper.SavePrj( ana_settting, ana_request == null ? null : new CalcModel.AnaRequestBase(ana_request), prj); return;
|
}
|
|
if (string.IsNullOrEmpty(ServiceParas.ApiServiceUrl))
|
{
|
return;
|
}
|
if (string.IsNullOrEmpty(prj.ID))
|
{
|
var time = DateTime.Now;
|
prj.ID = $"{time.Year}{time.Month}{time.Day}{time.Hour}{time.Minute}{time.Second}";
|
}
|
|
string url = string.Format(@"{0}/AnaPrj/SavePrj", ServiceParas.ApiServiceUrl);
|
|
SavePrjRequest request = new SavePrjRequest();
|
request.prj = prj;
|
request.requestBase = new CalcModel.AnaRequestBase(ana_request);
|
request.settting = ana_settting;
|
request.isSubmit = isSubmit;
|
|
string parameterData = (new System.Web.Script.Serialization.JavaScriptSerializer()).Serialize(request);
|
//先根据用户请求的uri构造请求地址
|
//string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri);
|
//string ContentType = "application/json";
|
string Accept = "application/json";
|
//创建Web访问对象
|
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
|
//把用户传过来的数据转成“UTF-8”的字节流
|
byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(parameterData);
|
|
myRequest.Method = "POST";
|
//myRequest.Accept = "application/json";
|
//myRequest.ContentType = "application/json"; // //Content-Type: application/x-www-form-urlencoded
|
myRequest.AutomaticDecompression = DecompressionMethods.GZip;
|
myRequest.Accept = Accept;
|
//myRequest.ContentType = ContentType;
|
myRequest.ContentType = "application/json; charset=UTF-8";
|
myRequest.ContentLength = buf.Length;
|
myRequest.MaximumAutomaticRedirections = 1;
|
myRequest.AllowAutoRedirect = true;
|
|
//myRequest.Headers.Add("content-type", "application/json");
|
//myRequest.Headers.Add("accept-encoding", "gzip");
|
//myRequest.Headers.Add("accept-charset", "utf-8");
|
|
//发送请求
|
Stream stream = myRequest.GetRequestStream();
|
stream.Write(buf, 0, buf.Length);
|
stream.Close();
|
|
//通过Web访问对象获取响应内容
|
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
|
//通过响应内容流创建StreamReader对象,因为StreamReader更高级更快
|
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
|
//string returnXml = HttpUtility.UrlDecode(reader.ReadToEnd());//如果有编码问题就用这个方法
|
string returnData = reader.ReadToEnd();//利用StreamReader就可以从响应内容从头读到尾
|
|
reader.Close();
|
myResponse.Close();
|
|
}
|
|
|
public static CalcModel.AnaPrj GetPrj(DateTime day )
|
{
|
if (!ServiceParas.IsRemote)
|
{
|
return IStation.Common.HistoryAnaPrjFileHelper.GetPrj(day );
|
}
|
|
if (string.IsNullOrEmpty(ServiceParas.ApiServiceUrl))
|
{
|
return null;
|
}
|
|
string url = string.Format(@"{0}/AnaPrj/GetPrj?day={1}", ServiceParas.ApiServiceUrl, day.ToString("yyyy-MM-dd"));
|
|
|
//先根据用户请求的uri构造请求地址
|
//string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri);
|
//string ContentType = "application/json";
|
string Accept = "application/json";
|
//创建Web访问对象
|
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
|
//把用户传过来的数据转成“UTF-8”的字节流
|
//byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(parameterData);
|
|
myRequest.Method = "GET";
|
//myRequest.Accept = "application/json";
|
//myRequest.ContentType = "application/json"; // //Content-Type: application/x-www-form-urlencoded
|
myRequest.AutomaticDecompression = DecompressionMethods.GZip;
|
myRequest.Accept = Accept;
|
//myRequest.ContentType = ContentType;
|
myRequest.ContentType = "application/json; charset=UTF-8";
|
//myRequest.ContentLength = buf.Length;
|
myRequest.MaximumAutomaticRedirections = 1;
|
myRequest.AllowAutoRedirect = true;
|
|
//myRequest.Headers.Add("content-type", "application/json");
|
//myRequest.Headers.Add("accept-encoding", "gzip");
|
//myRequest.Headers.Add("accept-charset", "utf-8");
|
|
//发送请求
|
//Stream stream = myRequest.GetRequestStream();
|
//stream.Write(buf, 0, buf.Length);
|
//stream.Close();
|
|
//通过Web访问对象获取响应内容
|
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
|
//通过响应内容流创建StreamReader对象,因为StreamReader更高级更快
|
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
|
//string returnXml = HttpUtility.UrlDecode(reader.ReadToEnd());//如果有编码问题就用这个方法
|
string returnData = reader.ReadToEnd();//利用StreamReader就可以从响应内容从头读到尾
|
if(string.IsNullOrEmpty(returnData))
|
{
|
myResponse.Close();
|
return null;
|
}
|
var ret = (new System.Web.Script.Serialization.JavaScriptSerializer()).Deserialize<IStation.Dto.ApiResult<CalcModel.AnaPrj>>(returnData);
|
reader.Close();
|
myResponse.Close();
|
|
|
return ret.Data;
|
}
|
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="day"></param>
|
/// <returns></returns>
|
public static Dictionary<int, bool> GetExistStatus(int year, int month)
|
{
|
if (!ServiceParas.IsRemote)
|
{
|
return toFileDictionary(IStation.Common.HistoryAnaPrjFileHelper.GetExistStatus(year, month));
|
}
|
|
if (string.IsNullOrEmpty(ServiceParas.ApiServiceUrl))
|
{
|
return null;
|
}
|
string apiServiceUrl = System.Configuration.ConfigurationManager.AppSettings["ApiServiceUrl"];
|
if (string.IsNullOrEmpty(apiServiceUrl))
|
{
|
return null;
|
}
|
string url = string.Format(@"{0}/AnaPrj/GetExistStatus?year={1}&month={2}", apiServiceUrl, year, month);
|
|
|
//先根据用户请求的uri构造请求地址
|
//string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri);
|
//string ContentType = "application/json";
|
string Accept = "application/json";
|
//创建Web访问对象
|
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
|
//把用户传过来的数据转成“UTF-8”的字节流
|
//byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(parameterData);
|
|
myRequest.Method = "GET";
|
//myRequest.Accept = "application/json";
|
//myRequest.ContentType = "application/json"; // //Content-Type: application/x-www-form-urlencoded
|
myRequest.AutomaticDecompression = DecompressionMethods.GZip;
|
myRequest.Accept = Accept;
|
//myRequest.ContentType = ContentType;
|
myRequest.ContentType = "application/json; charset=UTF-8";
|
//myRequest.ContentLength = buf.Length;
|
myRequest.MaximumAutomaticRedirections = 1;
|
myRequest.AllowAutoRedirect = true;
|
|
//myRequest.Headers.Add("content-type", "application/json");
|
//myRequest.Headers.Add("accept-encoding", "gzip");
|
//myRequest.Headers.Add("accept-charset", "utf-8");
|
|
//发送请求
|
//Stream stream = myRequest.GetRequestStream();
|
//stream.Write(buf, 0, buf.Length);
|
//stream.Close();
|
|
//通过Web访问对象获取响应内容
|
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
|
//通过响应内容流创建StreamReader对象,因为StreamReader更高级更快
|
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
|
//string returnXml = HttpUtility.UrlDecode(reader.ReadToEnd());//如果有编码问题就用这个方法
|
string returnData = reader.ReadToEnd();//利用StreamReader就可以从响应内容从头读到尾
|
if (string.IsNullOrEmpty(returnData))
|
{
|
myResponse.Close();
|
return null;
|
}
|
var ret = (new System.Web.Script.Serialization.JavaScriptSerializer()).Deserialize<IStation.Dto.ApiResult<List<string>>>(returnData);
|
reader.Close();
|
myResponse.Close();
|
|
var list = ret.Data;
|
|
|
return toFileDictionary(list);
|
}
|
private static Dictionary<int, bool> toFileDictionary(List<string> list)
|
{
|
Dictionary<int, bool> dict = new Dictionary<int, bool>();
|
if (list != null && list.Count > 0)
|
{
|
foreach (var m in list)
|
{
|
var sss = m.Split(':');
|
dict[Convert.ToInt32(sss[0])] = Convert.ToBoolean(sss[1]);
|
}
|
}
|
return dict;
|
}
|
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="day"></param>
|
/// <returns></returns>
|
public static int GetLastTimeOpenPumpCount(DateTime day)
|
{
|
if (!ServiceParas.IsRemote)
|
{
|
return IStation.Common.HistoryAnaPrjFileHelper.GetLastTime_OpenPumpCount(day);
|
}
|
|
if (string.IsNullOrEmpty(ServiceParas.ApiServiceUrl))
|
{
|
return -1;
|
}
|
|
string url = string.Format(@"{0}/AnaPrj/GetLastTimeOpenPumpCount?day={1} ", ServiceParas.ApiServiceUrl, day.ToString("yyyy-MM-dd"));
|
|
|
//先根据用户请求的uri构造请求地址
|
//string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri);
|
//string ContentType = "application/json";
|
string Accept = "application/json";
|
//创建Web访问对象
|
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
|
//把用户传过来的数据转成“UTF-8”的字节流
|
//byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(parameterData);
|
|
myRequest.Method = "GET";
|
//myRequest.Accept = "application/json";
|
//myRequest.ContentType = "application/json"; // //Content-Type: application/x-www-form-urlencoded
|
myRequest.AutomaticDecompression = DecompressionMethods.GZip;
|
myRequest.Accept = Accept;
|
//myRequest.ContentType = ContentType;
|
myRequest.ContentType = "application/json; charset=UTF-8";
|
//myRequest.ContentLength = buf.Length;
|
myRequest.MaximumAutomaticRedirections = 1;
|
myRequest.AllowAutoRedirect = true;
|
|
//myRequest.Headers.Add("content-type", "application/json");
|
//myRequest.Headers.Add("accept-encoding", "gzip");
|
//myRequest.Headers.Add("accept-charset", "utf-8");
|
|
//发送请求
|
//Stream stream = myRequest.GetRequestStream();
|
//stream.Write(buf, 0, buf.Length);
|
//stream.Close();
|
|
//通过Web访问对象获取响应内容
|
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
|
//通过响应内容流创建StreamReader对象,因为StreamReader更高级更快
|
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
|
//string returnXml = HttpUtility.UrlDecode(reader.ReadToEnd());//如果有编码问题就用这个方法
|
string returnData = reader.ReadToEnd();//利用StreamReader就可以从响应内容从头读到尾
|
if (string.IsNullOrEmpty(returnData))
|
{
|
myResponse.Close();
|
return -1;
|
}
|
var ret = (new System.Web.Script.Serialization.JavaScriptSerializer()).Deserialize<IStation.Dto.ApiResult<int>>(returnData);
|
reader.Close();
|
myResponse.Close();
|
|
|
return ret.Data;
|
}
|
|
|
}
|
}
|