tangxu
2025-02-07 03a0d99de9c5fed6bea8bc83b49ce27786bda38c
BLL/IStation.BLL.Connect/AnaPrj.cs
@@ -19,12 +19,32 @@
            public IStation.CalcModel.AnaRequestBase requestBase { get; set; }
            public bool isSubmit { get; set; }
        }
        public class ZyPrjRequest
        {
            public string StartTime { get; set; }
            public string EndTime { get; set; }
            //public int? StartOpenCount { get; set; } = -1;//已作废
            public string StartReservoirLevel { get; set; }//开始水库水位(可空):单位m
            public List<int> StartOpenPumpIndexArray { get; set; }//开始机泵开机状态(新)
            public string TotalFlowIn { get; set; }//取水总量 (单位 吨)
            public string TotalFlowOut { get; set; }//供水总量 (单位 吨) 不输入就用预测值
            public string MaxReservoirLevel { get; set; }//最高水库水位限制(可空):单位m
            public string MaxReservoirLevelTime { get; set; }//最高水库水位限制时间(可空) 时间格式
            public string IsSubmit { get; set; }//计算完,是否推送
            public string IsTemporary { get; set; }//是否是临时算一下(新)
        }
        public static void SavePrj(CalcModel.AnaRequest ana_request, CalcModel.AnaSetting ana_settting, CalcModel.AnaPrj prj, bool isSubmit)
        {
            if (!ServiceParas.IsRemote)
            if (!IStation.BLL.ServiceParas.IsRemote)
            {
                IStation.Common.HistoryAnaPrjFileHelper.SavePrj(ana_settting, ana_request == null ? null : new CalcModel.AnaRequestBase(ana_request), prj); return;
                IStation.Common.HistoryAnaPrjFileHelper.SavePrj(ana_settting,
                    true,
                    ana_request == null ? null : new CalcModel.AnaRequestBase(ana_request), prj);
                return;
            }
            if (string.IsNullOrEmpty(ServiceParas.ApiServiceUrl))
@@ -86,12 +106,12 @@
            myResponse.Close();
        }
        public static CalcModel.AnaPrj GetPrj(DateTime day)
        public static CalcModel.AnaPrj GetDefaultPrjByStartDay(DateTime day)
        {
            if (!ServiceParas.IsRemote)
            {
                IStation.CalcModel.AnaRequestBase requestBase;
                return IStation.Common.HistoryAnaPrjFileHelper.GetByDay(day, out requestBase);
                return IStation.Common.HistoryAnaPrjFileHelper.GetByStartDay(day, out requestBase);
            }
            if (string.IsNullOrEmpty(ServiceParas.ApiServiceUrl))
@@ -99,7 +119,7 @@
                return null;
            }
            string url = string.Format(@"{0}/AnaPrj/GetPrj?day={1}", ServiceParas.ApiServiceUrl, day.ToString("yyyy-MM-dd"));
            string url = string.Format(@"{0}/AnaPrj/GetDefaultPrjByStartDay?day={1}", ServiceParas.ApiServiceUrl, day.ToString("yyyy-MM-dd"));
            //先根据用户请求的uri构造请求地址
            //string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri);
@@ -142,6 +162,146 @@
                return null;
            }
            var ret = (new System.Web.Script.Serialization.JavaScriptSerializer()).Deserialize<IStation.Dto.ApiResult<CalcModel.AnaPrj>>(returnData);
            reader.Close();
            myResponse.Close();
            return ret.Data;
        }
        public static CalcModel.AnaPrj CalcPrj(CalcModel.AnaRequest ana_request,bool isUsePredictRecord, bool isTemp )
        {
            if (string.IsNullOrEmpty(ServiceParas.ApiServiceUrl))
            {
                return null;
            }
            string url = string.Format(@"{0}/AnaPrj/Calc", ServiceParas.ApiServiceUrl);
            ZyPrjRequest request = new ZyPrjRequest();
            request.StartTime = ana_request.StartTime.ToString("yyyy-MM-dd HH:mm:ss");
            request.EndTime = ana_request.EndTime.ToString("yyyy-MM-dd HH:mm:ss");
            request.IsTemporary  = isTemp.ToString();
            request.IsSubmit = "false";
            if(ana_request.MaxReservoirLevel != null)
            request.MaxReservoirLevel = ana_request.MaxReservoirLevel.ToString();
            request.MaxReservoirLevelTime = ana_request.MaxReservoirLevelTime;
            request.StartReservoirLevel = ana_request.StartReservoirLevel.ToString();
            request.StartOpenPumpIndexArray = ana_request.StartOpenPumpIndexArray;
            if(ana_request.TotalFlowIn != null)
            request.TotalFlowIn = ana_request.TotalFlowIn.ToString();
            if (!isUsePredictRecord)
                request.TotalFlowOut = (ana_request.PerHourFlowOut.Sum() - ana_request.PerHourFlowOut.Last()).ToString();
            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就可以从响应内容从头读到尾
            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="time"></param>
        /// <returns></returns>
        public static CalcModel.ZyStartInfo GetAnaStartPara(DateTime time )
        {
            if (!ServiceParas.IsRemote)
            {
                return  null;
            }
            if (string.IsNullOrEmpty(ServiceParas.ApiServiceUrl))
            {
                return null;
            }
            string url = string.Format(@"{0}/AnaPrj/GetAnaStartPara?AnaStartTime={1}", ServiceParas.ApiServiceUrl, time.ToString("yyyy-MM-dd HH:mm:ss"));
            //先根据用户请求的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.ZyStartInfo>>(returnData);
            reader.Close();
            myResponse.Close();
@@ -239,19 +399,19 @@
        /// </summary>
        /// <param name="day"></param>
        /// <returns></returns>
        public static int GetLastTimeOpenPumpCount(DateTime day)
        public static List<int> GetLastTimeOpenPumpStatus作废(DateTime day)
        {
            if (!ServiceParas.IsRemote)
            {
                return IStation.Common.HistoryAnaPrjFileHelper.GetLastTime_OpenPumpCount(day);
            }
            //if (!ServiceParas.IsRemote)
            //{
            //    return IStation.Common.HistoryAnaPrjFileHelper.GetLastTime_OpenPumpStatus(day);
            //}
            if (string.IsNullOrEmpty(ServiceParas.ApiServiceUrl))
            {
                return -1;
                return null;
            }
            string url = string.Format(@"{0}/AnaPrj/GetLastTimeOpenPumpCount?day={1} ", ServiceParas.ApiServiceUrl, day.ToString("yyyy-MM-dd"));
            string url = string.Format(@"{0}/AnaPrj/GetLastTimeOpenPumpStatus?day={1} ", ServiceParas.ApiServiceUrl, day.ToString("yyyy-MM-dd"));
            //先根据用户请求的uri构造请求地址
            //string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri);
@@ -291,13 +451,21 @@
            if (string.IsNullOrEmpty(returnData))
            {
                myResponse.Close();
                return -1;
                return null;
            }
            var ret = (new System.Web.Script.Serialization.JavaScriptSerializer()).Deserialize<IStation.Dto.ApiResult<int>>(returnData);
            var ret = (new System.Web.Script.Serialization.JavaScriptSerializer()).Deserialize<IStation.Dto.ApiResult<string >>(returnData);
            reader.Close();
            myResponse.Close();
            return ret.Data;
            var res_str = ret.Data;
            if (string.IsNullOrEmpty(res_str))
            {
                return null ;
            }
            List<int> list = new List<int>();
            foreach (var s in list) { list.Add(Convert.ToInt32(s)); }
            return list;
        }
    }
}