tangxu
2024-07-03 871ce0adc5e746833f2a08e3e5f872535eb90516
Merge branch 'master' of http://47.103.154.90:83/r/IStation/shys/ChEqCalc.V1.3
已修改14个文件
已添加4个文件
521 ■■■■■ 文件已修改
BLL/IStation.BLL.Connect/ReservoirWaterLevel.cs 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Library/Newtonsoft.Json.dll 补丁 | 查看 | 原始文档 | blame | 历史
Library/Newtonsoft.Json.xml 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Model/IStation.Model.Basic/waterLevel/WaterPredictRecord.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WaterPredict/IStation.ChEr.Application.WaterPredict/02-predict/ConnectHelper.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WaterPredict/IStation.ChEr.TopShelf.WaterPredict.Core/Properties/PublishProfiles/FolderProfile2.pubxml.user 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WaterPredict/IStation.ChEr.WebApi.Predict/任务/CalcWaterPredictJob.cs 156 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WaterPredict/IStation.ChEr.WebApi.Predict/任务/PredictCronJobHelper.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WaterPredict/IStation.ChEr.WebApi.Predict/任务/PredictHelper.cs 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebApi/Controllers/AnaPrjController.cs 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebApi/Controllers/ReservoirParasController - 复制.cs 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebApi/IStation.ChEr.WebApi.csproj.user 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebApi/Logs/Tests/20240612.txt 补丁 | 查看 | 原始文档 | blame | 历史
WebApi/Logs/Tests/20240613.txt 补丁 | 查看 | 原始文档 | blame | 历史
WebApi/Logs/Tests/20240617.txt 补丁 | 查看 | 原始文档 | blame | 历史
WebApi/Logs/info.log 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebApi/Properties/PublishProfiles/FolderProfile.pubxml.user 84 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebApi/众毅调度/ZyConnectHelper.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BLL/IStation.BLL.Connect/ReservoirWaterLevel.cs
@@ -4,28 +4,27 @@
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Text;
namespace IStation.BLL
{
    /// <summary>
    /// æ°´åº“水位
    /// æ°´åº“水位
    /// </summary>
    public class ReservoirWaterLevel
    {
        public static double GetRealValue()
        {
            if(!ServiceParas.IsRemote)
            if (!ServiceParas.IsRemote)
            {
                return -100;
            }
            if (string.IsNullOrEmpty(ServiceParas.ApiServiceUrl))
            {
                return -100;
            }
            string url = string.Format(@"{0}/ReservoirWaterLevel/GetRealValue", ServiceParas.ApiServiceUrl);
            //先根据用户请求的uri构造请求地址
            //string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri);
@@ -38,7 +37,7 @@
            myRequest.Method = "GET";
            //myRequest.Accept = "application/json";
            //myRequest.ContentType = "application/json";  // //Content-Type: application/x-www-form-urlencoded
            //myRequest.ContentType = "application/json";  // //Content-Type: application/x-www-form-urlencoded
            myRequest.AutomaticDecompression = DecompressionMethods.GZip;
            myRequest.Accept = Accept;
            //myRequest.ContentType = ContentType;
@@ -71,13 +70,12 @@
            reader.Close();
            myResponse.Close();
            return ret.Data;
        }
        /// <summary>
        /// èŽ·å– é¢„测值
        /// </summary>
        /// èŽ·å– é¢„测值
        /// </summary>
        /// <returns></returns>
        public static List<IStation.Model.WaterPredictRecord> GetPredictRecordByHourRange(DateTime start_time, DateTime end_time)
        {
@@ -86,11 +84,10 @@
            {
                return null;
            }
            string url = string.Format(@"{0}/ReservoirWaterLevel/GetPredictRecordByHourRange?start_time={1}&end_time={2}",
            string url = string.Format(@"{0}/ReservoirWaterLevel/GetPredictRecordByHourRange?start_time={1}&end_time={2}",
                apiServiceUrl,
                start_time.ToString("yyyy-MM-dd HH:mm:00"),
                end_time.ToString("yyyy-MM-dd HH:mm:00"));
            //先根据用户请求的uri构造请求地址
            //string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri);
@@ -103,7 +100,7 @@
            myRequest.Method = "GET";
            //myRequest.Accept = "application/json";
            //myRequest.ContentType = "application/json";  // //Content-Type: application/x-www-form-urlencoded
            //myRequest.ContentType = "application/json";  // //Content-Type: application/x-www-form-urlencoded
            myRequest.AutomaticDecompression = DecompressionMethods.GZip;
            myRequest.Accept = Accept;
            //myRequest.ContentType = ContentType;
@@ -136,13 +133,12 @@
            reader.Close();
            myResponse.Close();
            return ret.Data;
        }
        ///// <summary>
        ///// èŽ·å–ä»Šæ—¥é¢„æµ‹å€¼(24点时)
        ///// </summary>
        ///// èŽ·å–ä»Šæ—¥é¢„æµ‹å€¼(24点时)
        ///// </summary>
        ///// <returns></returns>
        //public static double GetTodayEndPredictiveValue()
        //{
@@ -152,7 +148,6 @@
        //        return -100;
        //    }
        //    string url = string.Format(@"{0}/ReservoirWaterLevel/GetTodayEndPredictiveValue", apiServiceUrl);
        //    //先根据用户请求的uri构造请求地址
        //    //string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri);
@@ -165,7 +160,7 @@
        //    myRequest.Method = "GET";
        //    //myRequest.Accept = "application/json";
        //    //myRequest.ContentType = "application/json";  // //Content-Type: application/x-www-form-urlencoded
        //    //myRequest.ContentType = "application/json";  // //Content-Type: application/x-www-form-urlencoded
        //    myRequest.AutomaticDecompression = DecompressionMethods.GZip;
        //    myRequest.Accept = Accept;
        //    //myRequest.ContentType = ContentType;
@@ -198,8 +193,7 @@
        //    reader.Close();
        //    myResponse.Close();
        //    return ret.Data;
        //}
    }
}
}
Library/Newtonsoft.Json.dll
Binary files differ
Library/Newtonsoft.Json.xml
@@ -865,6 +865,32 @@
            Converts a <see cref="T:System.DateTime"/> to and from Unix epoch time
            </summary>
        </member>
        <member name="P:Newtonsoft.Json.Converters.UnixDateTimeConverter.AllowPreEpoch">
            <summary>
            Gets or sets a value indicating whether the dates before Unix epoch
            should converted to and from JSON.
            </summary>
            <value>
            <c>true</c> to allow converting dates before Unix epoch to and from JSON;
            <c>false</c> to throw an exception when a date being converted to or from JSON
            occurred before Unix epoch. The default value is <c>false</c>.
            </value>
        </member>
        <member name="M:Newtonsoft.Json.Converters.UnixDateTimeConverter.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:Newtonsoft.Json.Converters.UnixDateTimeConverter"/> class.
            </summary>
        </member>
        <member name="M:Newtonsoft.Json.Converters.UnixDateTimeConverter.#ctor(System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:Newtonsoft.Json.Converters.UnixDateTimeConverter"/> class.
            </summary>
            <param name="allowPreEpoch">
            <c>true</c> to allow converting dates before Unix epoch to and from JSON;
            <c>false</c> to throw an exception when a date being converted to or from JSON
            occurred before Unix epoch. The default value is <c>false</c>.
            </param>
        </member>
        <member name="M:Newtonsoft.Json.Converters.UnixDateTimeConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)">
            <summary>
            Writes the JSON representation of the object.
@@ -2554,7 +2580,7 @@
            <summary>
            Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a <see cref="T:Newtonsoft.Json.JsonReaderException"/>.
            A null value means there is no maximum. 
            The default value is <c>128</c>.
            The default value is <c>64</c>.
            </summary>
        </member>
        <member name="P:Newtonsoft.Json.JsonReader.TokenType">
@@ -3014,7 +3040,7 @@
            <summary>
            Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a <see cref="T:Newtonsoft.Json.JsonReaderException"/>.
            A null value means there is no maximum.
            The default value is <c>128</c>.
            The default value is <c>64</c>.
            </summary>
        </member>
        <member name="P:Newtonsoft.Json.JsonSerializer.CheckAdditionalContent">
@@ -3330,7 +3356,7 @@
            <summary>
            Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a <see cref="T:Newtonsoft.Json.JsonReaderException"/>.
            A null value means there is no maximum.
            The default value is <c>128</c>.
            The default value is <c>64</c>.
            </summary>
        </member>
        <member name="P:Newtonsoft.Json.JsonSerializerSettings.Formatting">
@@ -3395,6 +3421,12 @@
        <member name="M:Newtonsoft.Json.JsonSerializerSettings.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> class.
            </summary>
        </member>
        <member name="M:Newtonsoft.Json.JsonSerializerSettings.#ctor(Newtonsoft.Json.JsonSerializerSettings)">
            <summary>
            Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> class
            using values copied from the passed in <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>.
            </summary>
        </member>
        <member name="T:Newtonsoft.Json.JsonTextReader">
@@ -7031,6 +7063,25 @@
            <param name="reader">The reader.</param>
            <returns>An instance of <see cref="T:Newtonsoft.Json.Linq.JRaw"/> with the content of the reader's current token.</returns>
        </member>
        <member name="T:Newtonsoft.Json.Linq.JsonCloneSettings">
            <summary>
            Specifies the settings used when cloning JSON.
            </summary>
        </member>
        <member name="M:Newtonsoft.Json.Linq.JsonCloneSettings.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JsonCloneSettings"/> class.
            </summary>
        </member>
        <member name="P:Newtonsoft.Json.Linq.JsonCloneSettings.CopyAnnotations">
            <summary>
            Gets or sets a flag that indicates whether to copy annotations when cloning a <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
            The default value is <c>true</c>.
            </summary>
            <value>
            A flag that indicates whether to copy annotations when cloning a <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
            </value>
        </member>
        <member name="T:Newtonsoft.Json.Linq.JsonLoadSettings">
            <summary>
            Specifies the settings used when loading JSON.
@@ -8071,6 +8122,13 @@
            </summary>
            <returns>A new instance of the <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</returns>
        </member>
        <member name="M:Newtonsoft.Json.Linq.JToken.DeepClone(Newtonsoft.Json.Linq.JsonCloneSettings)">
            <summary>
            Creates a new instance of the <see cref="T:Newtonsoft.Json.Linq.JToken"/>. All child tokens are recursively cloned.
            </summary>
            <param name="settings">A <see cref="T:Newtonsoft.Json.Linq.JsonCloneSettings"/> object to configure cloning settings.</param>
            <returns>A new instance of the <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</returns>
        </member>
        <member name="M:Newtonsoft.Json.Linq.JToken.AddAnnotation(System.Object)">
            <summary>
            Adds an object to the annotation list of this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
Model/IStation.Model.Basic/waterLevel/WaterPredictRecord.cs
@@ -25,18 +25,20 @@
        {
            this.ID = rhs.ID;
            this.DayHour = rhs.DayHour;
            this.LastPredictValue = rhs.LastPredictValue;
            this.LastPredictTime = rhs.LastPredictTime;
            this.LastPredictValue = rhs.LastPredictValue;
            this.LastPredictTime = rhs.LastPredictTime;
            this.PredictValueList = rhs.PredictValueList;
            this.PredictTime = rhs.PredictTime;
            this.States = rhs.States;
            this.Description = rhs.Description;
        }
        //转换为int类型的时间
        public static int ConvertIntDay(DateTime datetime)
        {
            return int.Parse(string.Format("{0:00}{1:00}{2:00}", datetime.Month, datetime.Day, datetime.Hour));
        }
        /// <summary>
        /// id
        /// </summary>
@@ -46,8 +48,6 @@
        /// å°æ—¶: ä¾‹å¦‚2024-05-14 01:00 è¡¨ç¤ºä¸º 051401
        /// </summary>
        public int DayHour { get; set; }
        /// <summary>
        /// æœ€æ–°é¢„测流量(滚动值)
@@ -68,7 +68,6 @@
        /// é¢„测流量值时间:PredictValueList对应时间
        /// </summary>
        public DateTime PredictTime { get; set; }
        /// <summary>
        /// çŠ¶æ€ç (0为错误,1为正确)
WaterPredict/IStation.ChEr.Application.WaterPredict/02-predict/ConnectHelper.cs
@@ -126,7 +126,7 @@
        public static List<SSAData> GetByPumpOpenState(DateTime starttime, DateTime endtime)
        {
            // string apiServiceUrl = System.Configuration.ConfigurationManager.AppSettings["ApiServiceUrl"];
            string apiServiceUrl = "http://192.168.21.14:86/";
            string apiServiceUrl = "http://192.168.21.14:86";
            string url = string.Format(@"{0}/PumpRun/GetPumpOpenState?startday={1}&endday={2}", apiServiceUrl, starttime, endtime);
            string Accept = "application/json";
WaterPredict/IStation.ChEr.TopShelf.WaterPredict.Core/Properties/PublishProfiles/FolderProfile2.pubxml.user
@@ -4,7 +4,7 @@
-->
<Project>
  <PropertyGroup>
    <History>True|2024-05-30T13:59:08.2455401Z;True|2024-05-30T21:58:19.3234045+08:00;True|2024-05-30T21:57:30.3444112+08:00;True|2024-05-30T21:46:41.5809632+08:00;True|2024-05-30T21:44:31.2092288+08:00;True|2024-05-30T21:39:40.9872627+08:00;True|2024-06-01T17:23:23.5735421+08:00;True|2024-06-01T17:21:46.2076474+08:00;True|2024-06-01T17:20:10.3017359+08:00;True|2024-06-01T17:18:16.6449135+08:00;True|2024-06-01T17:18:02.6749261+08:00;True|2024-06-01T17:16:51.6629440+08:00;True|2024-06-01T17:11:32.9349239+08:00;True|2024-06-01T17:11:23.0294296+08:00;True|2024-05-30T17:10:44.0968822+08:00;True|2024-05-30T17:10:32.6735967+08:00;</History>
    <History>True|2024-06-17T11:48:00.3386053Z;True|2024-06-13T15:33:29.4047649+08:00;True|2024-06-13T13:16:01.0932180+08:00;True|2024-06-13T13:09:10.3610474+08:00;True|2024-06-13T13:03:48.1740561+08:00;True|2024-06-13T13:02:43.5996009+08:00;True|2024-06-13T12:21:59.1079195+08:00;True|2024-06-13T12:19:41.9720787+08:00;True|2024-06-13T12:19:26.1098813+08:00;True|2024-06-13T12:17:02.3593639+08:00;True|2024-06-13T12:16:46.0329584+08:00;True|2024-06-13T12:11:46.5166191+08:00;True|2024-06-13T12:11:27.1757041+08:00;True|2024-06-13T12:04:20.5143859+08:00;True|2024-06-13T12:03:56.0685533+08:00;True|2024-05-30T21:59:08.2455401+08:00;True|2024-05-30T21:58:19.3234045+08:00;True|2024-05-30T21:57:30.3444112+08:00;True|2024-05-30T21:46:41.5809632+08:00;True|2024-05-30T21:44:31.2092288+08:00;True|2024-05-30T21:39:40.9872627+08:00;True|2024-06-01T17:23:23.5735421+08:00;True|2024-06-01T17:21:46.2076474+08:00;True|2024-06-01T17:20:10.3017359+08:00;True|2024-06-01T17:18:16.6449135+08:00;True|2024-06-01T17:18:02.6749261+08:00;True|2024-06-01T17:16:51.6629440+08:00;True|2024-06-01T17:11:32.9349239+08:00;True|2024-06-01T17:11:23.0294296+08:00;True|2024-05-30T17:10:44.0968822+08:00;True|2024-05-30T17:10:32.6735967+08:00;</History>
    <LastFailureDetails />
  </PropertyGroup>
</Project>
WaterPredict/IStation.ChEr.WebApi.Predict/ÈÎÎñ/CalcWaterPredictJob.cs
@@ -33,17 +33,17 @@
        /// <returns></returns>
        public Task Execute(IJobExecutionContext context)
        {
            LogHelper.Info(DateTime.Now.ToString());
            if (DateTime.Now.Hour == 0 && DateTime.Now.Minute == 5)
            if (DateTime.Now.Hour == 0 && DateTime.Now.Minute == 15)
            {
                insert2daysPredictData();
            }
            var TodayRealdataList = ConnectHelper.GetByPumpOneDayWaterData(DateTime.Today, DateTime.Today.AddDays(1), "1h").Where(x => x.DateTime.Hour <= DateTime.Now.Hour).ToList();
            //获取当前日期前今天的所有值
            int dayHour = WaterPredictRecord.ConvertIntDay(DateTime.Now);
            int lastHour = WaterPredictRecord.ConvertIntDay(DateTime.Now.AddHours(-1));
            var TwoDaysList = _bll.GetEnd2Days(300);
            LogHelper.Info("2");
            var select = TwoDaysList.Where(x => x.DayHour == dayHour).FirstOrDefault();
            var lastDifferenceValue = TwoDaysList.Where(x => x.DayHour == lastHour).FirstOrDefault();
            if (TodayRealdataList != null)
            {
                LogHelper.Info("已找到当前时间前所有数据");
@@ -57,16 +57,36 @@
                            var secondLastElementTotal = TodayRealdataList[TodayRealdataList.Count - 2].Total;
                            select.RealTotalValue = TodayRealdataList.Last().Total;
                            select.RealDifferenceValue = lastElementTotal - secondLastElementTotal;
                            if (select.RealDifferenceValue == 0 || select.RealDifferenceValue < 0)
                            if (select.RealDifferenceValue == 0 || select.RealDifferenceValue < 0 || select.RealDifferenceValue > 100000)
                            {
                                if (PredictHelper.IsOpenState())
                                {
                                    select.Description = "真实数据出现异常";
                                    select.Description += ",时间:" + DateTime.Now.ToString("HH:mm") + "众毅提供真实数据出现异常";
                                    var ErrorBakData = ConnectHelper.GetByPumpOneDayWaterData(DateTime.Today, DateTime.Today.AddDays(1), "300s").Where(x => x.DateTime.Hour <= DateTime.Now.Hour).ToList();  //获取当前日期前今天的所有值
                                    select.BakData = JsonHelper.Object2Json(ErrorBakData);
                                    select.States = 0;
                                    if (lastDifferenceValue.RealDifferenceValue > 0)
                                    {
                                        select.RealDifferenceValue = lastDifferenceValue.RealDifferenceValue;
                                    }
                                    else
                                    {
                                        select.RealDifferenceValue = 60000;
                                    }
                                    _bll.Update(select);
                                    return null;
                                }
                                else
                                {
                                    if (lastDifferenceValue.RealDifferenceValue > 0)
                                    {
                                        select.RealDifferenceValue = lastDifferenceValue.RealDifferenceValue;
                                    }
                                    else
                                    {
                                        select.RealDifferenceValue = 60000;
                                    }
                                    select.States = 0;
                                    _bll.Update(select);
                                }
                            }
                            else
@@ -79,14 +99,35 @@
                        {
                            select.RealTotalValue = TodayRealdataList.Last().Total;
                            select.RealDifferenceValue = TodayRealdataList.Last().Total - _bll.GetEnd2Days(240).Where(x => x.DayHour == WaterPredictRecord.ConvertIntDay(DateTime.Now.AddHours(-1))).Last().RealTotalValue;
                            if (select.RealDifferenceValue == 0 || select.RealDifferenceValue < 0)
                            if (select.RealDifferenceValue == 0 || select.RealDifferenceValue < 0 || select.RealDifferenceValue > 100000)
                            {
                                if (PredictHelper.IsOpenState())
                                {
                                    select.Description = "真实数据出现异常";
                                    select.Description += ",时间:" + DateTime.Now.ToString("HH:mm") + "众毅提供真实数据出现异常";
                                    var ErrorBakData = ConnectHelper.GetByPumpOneDayWaterData(DateTime.Today, DateTime.Today.AddDays(1), "300s").Where(x => x.DateTime.Hour <= DateTime.Now.Hour).ToList();  //获取当前日期前今天的所有值
                                    select.BakData = JsonHelper.Object2Json(ErrorBakData);
                                    select.States = 0;
                                    if (lastDifferenceValue.RealDifferenceValue > 0)
                                    {
                                        select.RealDifferenceValue = lastDifferenceValue.RealDifferenceValue;
                                    }
                                    else
                                    {
                                        select.RealDifferenceValue = 60000;
                                    }
                                    _bll.Update(select);
                                }
                                else
                                {
                                    if (lastDifferenceValue.RealDifferenceValue > 0)
                                    {
                                        select.RealDifferenceValue = lastDifferenceValue.RealDifferenceValue;
                                    }
                                    else
                                    {
                                        select.RealDifferenceValue = 60000;
                                    }
                                    select.States = 1;
                                    _bll.Update(select);
                                }
                            }
@@ -99,32 +140,35 @@
                    }
                    catch (Exception e)
                    {
                        select.RealTotalValue = 0;
                        select.RealTotalValue = TodayRealdataList.Last().Total;
                        select.States = 0;
                        select.Description = "为真实数据赋值错误!" + "原因:" + e;
                        select.RealDifferenceValue = lastDifferenceValue.RealDifferenceValue; ;
                        select.Description += ",时间:" + DateTime.Now.ToString("HH:mm") + "遇到未知错误!" + "原因:" + e;
                        var ErrorBakData = ConnectHelper.GetByPumpOneDayWaterData(DateTime.Today, DateTime.Today.AddDays(1), "300s").Where(x => x.DateTime.Hour <= DateTime.Now.Hour).ToList();  //获取当前日期前今天的所有值
                        select.BakData = JsonHelper.Object2Json(ErrorBakData);
                        _bll.Update(select);
                        // LogHelper.Info("未能从众毅取到真实数据,时间:" + DateTime.Now.ToString());
                        LogHelper.Info("遇到未知错误!" + "原因:" + e);
                    }
                }
                else
                {
                    select.RealTotalValue = 0;
                    select.States = 0;
                    select.RealDifferenceValue = 60000;
                    select.Description = "取到的数据与当前时间不匹配,或找不到与当前时间匹配的预测值";
                    var ErrorBakData = ConnectHelper.GetByPumpOneDayWaterData(DateTime.Today, DateTime.Today.AddDays(1), "300s").Where(x => x.DateTime.Hour <= DateTime.Now.Hour).ToList();  //获取当前日期前今天的所有值
                    select.BakData = JsonHelper.Object2Json(ErrorBakData);
                    _bll.Update(select);
                    /*  select.RealTotalValue = 0;
                      select.States = 0;
                      select.RealDifferenceValue = 60000;
                      select.Description += ",时间:" + DateTime.Now.ToString("HH:mm") + "取到的数据与当前时间不匹配,或找不到与当前时间匹配的预测值";
                      var ErrorBakData = ConnectHelper.GetByPumpOneDayWaterData(DateTime.Today, DateTime.Today.AddDays(1), "300s").Where(x => x.DateTime.Hour <= DateTime.Now.Hour).ToList();  //获取当前日期前今天的所有值
                      select.BakData = JsonHelper.Object2Json(ErrorBakData);
                      _bll.Update(select);*/
                    LogHelper.Info("找不到对应当前时间对应数据 æ—¶é—´:" + DateTime.Now);
                    return null;
                }
            }
            else
            {
                select.RealTotalValue = 0;
                select.States = 0;
                select.Description = "未能从众毅取到真实数据";
                select.RealDifferenceValue = 60000;
                select.Description += ",时间:" + DateTime.Now.ToString("HH:mm") + "未能从众毅取到真实数据";
                select.RealDifferenceValue = lastDifferenceValue.RealDifferenceValue; ;
                var ErrorBakData = ConnectHelper.GetByPumpOneDayWaterData(DateTime.Today, DateTime.Today.AddDays(1), "300s").Where(x => x.DateTime.Hour <= DateTime.Now.Hour).ToList();  //获取当前日期前今天的所有值
                select.BakData = JsonHelper.Object2Json(ErrorBakData);
                _bll.Update(select);
@@ -145,22 +189,29 @@
            var starthour = int.Parse(string.Format("{0:00}{1:00}{2:00}", DateTime.Now.Month, DateTime.Now.Day, 0));
            var endhour = int.Parse(string.Format("{0:00}{1:00}{2:00}", DateTime.Now.Month, DateTime.Now.Day, 23));
            var currentdata = TwoDaysList.Where(x => x.DayHour >= starthour && x.DayHour <= endhour).OrderBy(x => x.DayHour).ToList();
            for (int i = 0; i < currentdata.Count; i++)
            if (currentdata.Count == 24)
            {
                currentdata[i].LastPredictValue = Math.Round(predictdata[i].Total, 0);
                if (currentdata[i].LastPredictValue > 90000 || currentdata[i].LastPredictValue < 20000)
                for (int i = 0; i < currentdata.Count; i++)
                {
                    currentdata[i].Description = "预测数据偏差过大";
                    var ErrorBakData = ConnectHelper.GetByPumpOneDayWaterData(DateTime.Today, DateTime.Today.AddDays(1), "300s").Where(x => x.DateTime.Hour <= DateTime.Now.Hour).ToList();  //获取当前日期前今天的所有值
                    currentdata[i].BakData = JsonHelper.Object2Json(ErrorBakData);
                    currentdata[i].States = 0;
                    currentdata[i].LastPredictValue = Math.Round(predictdata[i].Total, 0);
                    if (currentdata[i].LastPredictValue > 90000 || currentdata[i].LastPredictValue < 20000)
                    {
                        currentdata[i].Description += ",时间:" + DateTime.Now.ToString("HH:mm") + "预测数据偏差过大";
                        var ErrorBakData = ConnectHelper.GetByPumpOneDayWaterData(DateTime.Today, DateTime.Today.AddDays(1), "300s").Where(x => x.DateTime.Hour <= DateTime.Now.Hour).ToList();  //获取当前日期前今天的所有值
                        currentdata[i].BakData = JsonHelper.Object2Json(ErrorBakData);
                        currentdata[i].States = 0;
                    }
                    else
                    {
                        currentdata[i].States = 1;
                    }
                    currentdata[i].LastPredictTime = DateTime.Now;
                    currentdata[i].PredictValueList = currentdata[i].LastPredictValue.ToString() + "," + currentdata[i].PredictValueList;
                }
                else
                {
                    currentdata[i].States = 1;
                }
                currentdata[i].LastPredictTime = DateTime.Now;
                currentdata[i].PredictValueList = currentdata[i].LastPredictValue.ToString() + "," + currentdata[i].PredictValueList;
            }
            else
            {
                LogHelper.Info("今天一天的数据小于24条 ---不全");
            }
            _bll.BatSet(currentdata);
            LogHelper.Info("已经替换真实数据");
@@ -189,23 +240,40 @@
            var predictdata = _SSAPredictHelper.Predict(tupleList, 3600, 10, 2880, (float)0.99, 48);
            var list = alllist.Where(x => x.DayHour >= lastdaystarthour + 100 && x.DayHour <= lastdayendhour + 100).OrderBy(x => x.DayHour).ToList();
            //找到今天所有的预测数据,并替换
            for (int i = 0; i < predictdata.Count; i++)
            if (list.Count == 0 || list.Count < 24)
            {
                if (i < 24)
                {
                    list[i].LastPredictTime = DateTime.Now;
                    list[i].LastPredictValue = Math.Round(predictdata[i].Total, 0);
                    list[i].PredictValueList = list[i].LastPredictValue.ToString() + "," + list[i].PredictValueList;
                    list[i].States = 1;
                }
                else
                LogHelper.Info("替换当日完整预测数据时找不到对应时间--");
                for (int i = 24; i < predictdata.Count; i++)
                {
                    int dayHour = int.Parse(string.Format("{0:00}{1:00}{2:00}", predictdata[i].DateTime.Month, predictdata[i].DateTime.Day, predictdata[i].DateTime.Hour));
                    list.Add(new WaterPredictRecord { DayHour = dayHour, PredictTime = DateTime.Now, LastPredictValue = Math.Round(predictdata[i].Total, 0), States = 1 });
                }
                _bll.BatSet(list);
                LogHelper.Info("时间:" + DateTime.Now + "---预测今明两天数据");
                return;
            }
            _bll.BatSet(list);
            LogHelper.Info("时间:" + DateTime.Now + "---预测今明两天数据");
            if (list.Count == 24)
            {
                for (int i = 0; i < predictdata.Count; i++)
                {
                    if (i < 24)
                    {
                        list[i].LastPredictTime = DateTime.Now;
                        list[i].LastPredictValue = Math.Round(predictdata[i].Total, 0);
                        list[i].PredictValueList = list[i].LastPredictValue.ToString() + "," + list[i].PredictValueList;
                        list[i].States = 1;
                    }
                    else
                    {
                        int dayHour = int.Parse(string.Format("{0:00}{1:00}{2:00}", predictdata[i].DateTime.Month, predictdata[i].DateTime.Day, predictdata[i].DateTime.Hour));
                        list.Add(new WaterPredictRecord { DayHour = dayHour, PredictTime = DateTime.Now, LastPredictValue = Math.Round(predictdata[i].Total, 0), States = 1 });
                    }
                }
                _bll.BatSet(list);
                LogHelper.Info("时间:" + DateTime.Now + "---预测今明两天数据");
            }
            /*  _bll.BatSet(list);
              LogHelper.Info("时间:" + DateTime.Now + "---预测今明两天数据");*/
        }
    }
}
WaterPredict/IStation.ChEr.WebApi.Predict/ÈÎÎñ/PredictCronJobHelper.cs
@@ -36,7 +36,7 @@
        //   4.创建Trigger
        var trigger = TriggerBuilder.Create()
        .WithIdentity(_triggerName, _jobGroup)
        .WithCronSchedule("0 05 0/1 * * ? ")//"0 32 0/1 * * ? "
        .WithCronSchedule("0 15 0/1 * * ? ")//"0 32 0/1 * * ? "
        .Build();
        /*        //4.创建Trigger
WaterPredict/IStation.ChEr.WebApi.Predict/ÈÎÎñ/PredictHelper.cs
@@ -1,9 +1,4 @@
using IStation.Application;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace IStation.ChEr.WebApi
{
@@ -11,13 +6,17 @@
    {
        public static bool IsOpenState()
        {
            var result = ConnectHelper.GetByPumpOpenState(DateTime.Now, DateTime.Now.AddHours(-1));
            var result = ConnectHelper.GetByPumpOpenState(DateTime.Now, DateTime.Now.AddDays(1));
            foreach (var item in result)
            {
                if (item.Total != 0)
                if (item.DateTime.Hour == DateTime.Now.Hour)
                {
                    LogHelper.Info("开机时间与累计流量不对应");
                    return true;
                    if (item.Total != 0)
                    {
                        LogHelper.Info("开机时间与累计流量不对应");
                        return true;
                    }
                    return false;
                }
            }
            return false;
WebApi/Controllers/AnaPrjController.cs
@@ -12,7 +12,7 @@
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Web.Http;
using System.Web.Http;
namespace IStation.WebApi.Controllers
{
@@ -23,15 +23,15 @@
    public class AnaPrjController : ApiController
    {
        /// <summary>
        ///
        ///
        /// </summary>
        /// <param name="day"></param>
        /// <returns></returns>
        [Route("Debug")]
        [HttpGet]
        public IStation.Dto.ApiResult Debug(string info)
        {
            IStation.LogHelper.Info("debug:"+ info);
        {
            IStation.LogHelper.Info("debug:" + info);
            //IStation.CalcModel.AnaPrj entity = new IStation.CalcModel.AnaPrj();
            //entity.ID = "123";
@@ -45,14 +45,13 @@
            //var dal = new IStation.DAL.AnaProject();
            //dal.Insert(entity, ana_request);
            var dal = new IStation.DAL.AnaProject();
            var aa = dal.GetLastRecord();
            return new IStation.Dto.ApiResult<string >("ok");
            return new IStation.Dto.ApiResult<string>("ok");
        }
        /// <summary>
        ///
        ///
        /// </summary>
        /// <param name="day"></param>
        /// <returns></returns>
@@ -70,7 +69,7 @@
                return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "day æ ¼å¼ä¸æ­£ç¡®" };
            }
            IStation.CalcModel.AnaRequestBase requestBase = null;
            var prj = Common.HistoryAnaPrjFileHelper.GetByStartDay(d,out requestBase);
            var prj = Common.HistoryAnaPrjFileHelper.GetByStartDay(d, out requestBase);
            return new IStation.Dto.ApiResult<IStation.CalcModel.AnaPrj>(prj);
        }
@@ -127,6 +126,7 @@
            anaRequest.WaterLevels长江 = ZyPrjController.GetTide3Day(Model.eTideSouce.Book, start_timme);
            #region å–水总量
            if (!string.IsNullOrEmpty(request.TotalFlowIn))
            {
                double TotalFlowIn = 0;
@@ -145,9 +145,11 @@
                anaRequest.TotalFlowIn = TotalFlowIn;
            }
            #endregion
            #region  æ°´ä½è¦æ±‚
            #endregion å–水总量
            #region æ°´ä½è¦æ±‚
            if (!string.IsNullOrEmpty(request.MaxReservoirLevelTime))
            {
                anaRequest.MaxReservoirLevelTime = request.MaxReservoirLevelTime;
@@ -175,12 +177,15 @@
                    return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "请输入取水总量或水位要求" };
                }
            }
            #endregion
            #endregion æ°´ä½è¦æ±‚
            #region ä¾›æ°´é‡
            if (string.IsNullOrEmpty(request.TotalFlowOut))
            {//用预测值
                #region ç”¨é¢„测值
                anaRequest.PerHourFlowOut = new List<double>();
                IStation.DAL.WaterPredictRecord dal = new DAL.WaterPredictRecord();
                var water_records = dal.GetByHourRangle(start_timme, end_timme);
@@ -212,9 +217,10 @@
                            Data = error_info11
                        };
                    }
                    anaRequest.PerHourFlowOut.Add(r.LastPredictValue );//计算中用吨
                    anaRequest.PerHourFlowOut.Add(r.LastPredictValue);//计算中用吨
                }
                #endregion
                #endregion ç”¨é¢„测值
            }
            else
            {
@@ -240,7 +246,8 @@
                }
                anaRequest.PerHourFlowOut = list;
            }
            #endregion
            #endregion ä¾›æ°´é‡
            //开始时的开机状态
            if (request.StartOpenPumpIndexArray == null)
@@ -250,7 +257,6 @@
            }
            anaRequest.IsKnownStartOpenPump = true;
            anaRequest.StartOpenPumpIndexArray = request.StartOpenPumpIndexArray;
            //陈行水库水位
            if (string.IsNullOrEmpty(request.StartReservoirLevel))
@@ -276,7 +282,6 @@
            //    isTemp = Convert.ToBoolean(request.IsTemporary);
            //}
            var calcHelper = new IStation.CalcPrjHelper();
            AnaPrj defaultPrj = null;
            string error_info = calcHelper.Calc(anaRequest, out defaultPrj);
@@ -299,9 +304,6 @@
            //{
            //    var ret = Common.HistoryAnaPrjFileHelper.SavePrj(IStation.AnaGlobalParas.Setting, anaRequest, defaultPrj);
            //}
            #region æŽ¨é€
@@ -336,8 +338,6 @@
                {
                    return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "day æ ¼å¼ä¸æ­£ç¡®" };
                }
                IStation.CalcModel.AnaRequestBase requestBase;
                var prj = Common.HistoryAnaPrjFileHelper.GetByEndTime大于(last_end_time, out requestBase);
@@ -347,14 +347,13 @@
                    return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = string.Format("未找到{0}结束的分析项目", AnaStartTime) };
                }
                DateTime calcTime =  DateTime.Now;//new DateTime(2024, 6, 11, 17, 10, 10);//
                DateTime calcTime = DateTime.Now;//new DateTime(2024, 6, 11, 17, 10, 10);//
                IStation.CalcModel.ZyStartInfo zyStartInfo = new IStation.CalcModel.ZyStartInfo();
                if (prj.EndTimeOpenPumpStatus != null && prj.EndTimeOpenPumpStatus.Count > 0)
                {
                    zyStartInfo.OpenPumpStatus = string.Join("," , prj.EndTimeOpenPumpStatus);
                    zyStartInfo.OpenPumpStatus = string.Join(",", prj.EndTimeOpenPumpStatus);
                }
                var near_pt = prj.NearPointTime(calcTime);
                if (near_pt == null)
@@ -375,7 +374,6 @@
                var lz = prj.BlockTimes.Last().PointTimes.Last().WaterLevelH;
                double start_yuce = lz + now_level - new_yuce;
                IStation.LogHelper.Info(string.Format("GetAnaStartPara  {0},{1},{2},{3} ", lz, now_level, new_yuce, start_yuce));
                zyStartInfo.ReservoirWaterLevel = start_yuce;
@@ -389,7 +387,7 @@
        }
        /// <summary>
        ///
        ///
        /// </summary>
        /// <param name="day"></param>
        /// <returns></returns>
@@ -400,15 +398,14 @@
            var list = HistoryAnaPrjFileHelper.GetExistStatus(year, month);
            if (list == null)
            {
                list = new List<string >();
                list = new List<string>();
            }
            return new IStation.Dto.ApiResult<List<string>>(list);
        }
        ///// <summary>
        /////
        /////
        ///// </summary>
        ///// <param name="day"></param>
        ///// <returns></returns>
@@ -428,7 +425,7 @@
        //}
        ///// <summary>
        /////
        /////
        ///// </summary>
        ///// <param name="day"></param>
        ///// <returns></returns>
@@ -439,19 +436,20 @@
        //    var  status = HistoryAnaPrjFileHelper.GetLastTime_OpenPumpStatus(day);
        //    if(status == null)
        //        return new IStation.Dto.ApiResult<string >("");
        //    else
        //    else
        //    return new IStation.Dto.ApiResult<string >(string.Join(",",status));
        //}
        public class SavePrjRequest
        {
        {
            public IStation.CalcModel.AnaSetting settting { get; set; }
            public IStation.CalcModel.AnaRequestBase requestBase { get; set; }
            public IStation.CalcModel.AnaPrj prj { get; set; }
            public bool isSubmit { get; set; }
        }
        /// <summary>
        ///
        ///
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
@@ -459,7 +457,7 @@
        [HttpPost]
        public async Task<IStation.Dto.ApiResult> SavePrj([FromBody] SavePrjRequest request)
        {
            if (request == null  )
            if (request == null)
            {
                return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "day null" };
            }
@@ -474,15 +472,14 @@
            //var dal = new IStation.DAL.AnaProject();
            //dal.Insert(request.prj, request.requestBase);
            if (request.isSubmit)
            {
                string error = await ZyProjectHelper.SubmitPrj(request.prj);//, (id) => { IStation.LogHelper.Info("SavePrj success id=" + id); }, (info) => { IStation.LogHelper.Info("SavePrj failse info:" + info); });//.Result;
                if(!string.IsNullOrEmpty(error))
                if (!string.IsNullOrEmpty(error))
                {
                    IStation.LogHelper.Info("Submit prj finish (fail) day:" + request.requestBase.StartTime + ",error:" + error);
                    return new IStation.Dto.ApiResult<string>(error) {  Code = ApiResultCode.Error};
                    return new IStation.Dto.ApiResult<string>(error) { Code = ApiResultCode.Error };
                }
                else
                {
@@ -490,14 +487,7 @@
                }
            }
            return new IStation.Dto.ApiResult<bool>(ret) { Code = ApiResultCode.Success };
        }
    }
}
}
WebApi/Controllers/ReservoirParasController - ¸´ÖÆ.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
using IStation.Common;
using IStation.Dto;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Text;
using System.Web;
using System.Web.Http;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
namespace IStation.WebApi.Controllers
{
    /// <summary>
    /// æ°´åº“参数
    /// </summary>
    [RoutePrefix("ReservoirParas")]
    public class ReservoirParasController : ApiController
    {
        /// <summary>
        /// èŽ·å–
        /// </summary>
        /// <returns></returns>
        [Route("GetList")]
        [HttpGet]
        public IStation.Dto.ApiResult GetList()
        {
            var list = AnaGlobalParas.ReservoirParasList;
            return new IStation.Dto.ApiResult<List<Model.ReservoirParas>>(list);
        }
        /// <summary>
        /// ä¿å­˜
        /// </summary>
        /// <returns></returns>
        [Route("SaveList")]
        [HttpPost]
        public IStation.Dto.ApiResult GetList([FromBody] List<Model.ReservoirParas> list)
        {
            IStation.Common.ReservoirParasHelper.SaveList(list);
            return new IStation.Dto.ApiResult<bool>(true);
        }
    }
}
WebApi/IStation.ChEr.WebApi.csproj.user
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <LastActiveSolutionConfig>Release|Any CPU</LastActiveSolutionConfig>
    <LastActiveSolutionConfig>Debug|Any CPU</LastActiveSolutionConfig>
    <UseIISExpress>true</UseIISExpress>
    <Use64BitIISExpress>true</Use64BitIISExpress>
    <IISExpressSSLPort>44318</IISExpressSSLPort>
WebApi/Logs/Tests/20240612.txt
WebApi/Logs/Tests/20240613.txt
WebApi/Logs/Tests/20240617.txt
WebApi/Logs/info.log
@@ -219,3 +219,13 @@
2024-05-31 12:17:33,193|通过取数据库2|
2024-05-31 12:17:34,647|下一步|
2024-05-31 12:17:35,828|下一步2|
2024-06-12 10:50:54,829|初始化成功|
2024-06-12 10:51:17,438|初始化成功|
2024-06-12 10:52:36,760|初始化成功|
2024-06-12 18:32:40,269|初始化成功|
2024-06-13 14:28:50,970|初始化成功|
2024-06-13 14:34:05,403|初始化成功|
2024-06-13 14:41:10,117|初始化成功|
2024-06-13 14:45:06,282|初始化成功|
2024-06-13 14:48:47,992|初始化成功|
2024-06-17 19:57:13,068|初始化成功|
WebApi/Properties/PublishProfiles/FolderProfile.pubxml.user
@@ -5,7 +5,7 @@
<Project>
  <PropertyGroup>
    <_PublishTargetUrl>D:\WorkData\IStation\ChEqCalc.V1.3\WebApi\bin\app.publish\</_PublishTargetUrl>
    <History>True|2024-05-29T14:55:40.8917081Z;True|2024-05-29T22:53:51.8888824+08:00;True|2024-05-29T21:24:14.2935182+08:00;True|2024-05-29T21:15:26.4176230+08:00;True|2024-05-29T20:21:23.2652363+08:00;True|2024-05-20T22:19:25.6819845+08:00;True|2024-05-20T22:17:16.3228686+08:00;True|2024-05-20T22:09:43.8419388+08:00;True|2024-05-20T20:47:30.7123496+08:00;False|2024-05-20T20:46:44.8172532+08:00;True|2024-05-17T09:19:12.0003732+08:00;True|2024-05-13T16:34:26.1798389+08:00;True|2024-05-13T15:25:51.2634210+08:00;True|2024-05-13T15:06:06.6614778+08:00;True|2024-05-13T14:05:16.2224051+08:00;True|2024-04-12T11:21:29.5845897+08:00;True|2024-04-12T11:05:57.4077528+08:00;True|2024-04-12T09:48:11.6556767+08:00;True|2024-04-07T14:56:11.5899311+08:00;True|2024-03-13T13:43:30.5799100+08:00;True|2024-03-13T13:36:27.8330849+08:00;True|2024-03-13T13:28:52.4054628+08:00;True|2024-03-13T13:09:48.3039075+08:00;True|2024-03-13T13:06:59.6509464+08:00;True|2024-03-13T12:56:44.3509382+08:00;True|2024-03-13T12:43:04.0436634+08:00;False|2024-03-13T12:42:49.1037427+08:00;False|2024-03-13T12:42:25.1444775+08:00;True|2024-03-13T12:34:29.4082591+08:00;True|2024-03-13T12:32:39.1414007+08:00;True|2024-03-13T12:27:13.0387359+08:00;True|2024-03-13T12:24:15.2859267+08:00;</History>
    <History>True|2024-06-17T12:21:42.5898298Z;True|2024-06-13T10:29:57.3049924+08:00;True|2024-05-29T22:55:40.8917081+08:00;True|2024-05-29T22:53:51.8888824+08:00;True|2024-05-29T21:24:14.2935182+08:00;True|2024-05-29T21:15:26.4176230+08:00;True|2024-05-29T20:21:23.2652363+08:00;True|2024-05-20T22:19:25.6819845+08:00;True|2024-05-20T22:17:16.3228686+08:00;True|2024-05-20T22:09:43.8419388+08:00;True|2024-05-20T20:47:30.7123496+08:00;False|2024-05-20T20:46:44.8172532+08:00;True|2024-05-17T09:19:12.0003732+08:00;True|2024-05-13T16:34:26.1798389+08:00;True|2024-05-13T15:25:51.2634210+08:00;True|2024-05-13T15:06:06.6614778+08:00;True|2024-05-13T14:05:16.2224051+08:00;True|2024-04-12T11:21:29.5845897+08:00;True|2024-04-12T11:05:57.4077528+08:00;True|2024-04-12T09:48:11.6556767+08:00;True|2024-04-07T14:56:11.5899311+08:00;True|2024-03-13T13:43:30.5799100+08:00;True|2024-03-13T13:36:27.8330849+08:00;True|2024-03-13T13:28:52.4054628+08:00;True|2024-03-13T13:09:48.3039075+08:00;True|2024-03-13T13:06:59.6509464+08:00;True|2024-03-13T12:56:44.3509382+08:00;True|2024-03-13T12:43:04.0436634+08:00;False|2024-03-13T12:42:49.1037427+08:00;False|2024-03-13T12:42:25.1444775+08:00;True|2024-03-13T12:34:29.4082591+08:00;True|2024-03-13T12:32:39.1414007+08:00;True|2024-03-13T12:27:13.0387359+08:00;True|2024-03-13T12:24:15.2859267+08:00;</History>
    <LastFailureDetails />
  </PropertyGroup>
  <ItemGroup>
@@ -100,16 +100,16 @@
      <publishTime>04/17/2020 04:38:56</publishTime>
    </File>
    <File Include="bin/IStation.AutoMapper.dll">
      <publishTime>05/13/2024 16:29:27</publishTime>
      <publishTime>06/13/2024 15:04:42</publishTime>
    </File>
    <File Include="bin/IStation.AutoMapper.pdb">
      <publishTime>05/13/2024 16:29:27</publishTime>
      <publishTime>06/13/2024 15:04:42</publishTime>
    </File>
    <File Include="bin/IStation.Calc.Core.dll">
      <publishTime>05/29/2024 21:15:24</publishTime>
      <publishTime>06/17/2024 20:21:40</publishTime>
    </File>
    <File Include="bin/IStation.Calc.Core.pdb">
      <publishTime>05/29/2024 21:15:24</publishTime>
      <publishTime>06/17/2024 20:21:40</publishTime>
    </File>
    <File Include="bin/IStation.Calc.ErQu.dll">
      <publishTime>03/13/2024 12:32:32</publishTime>
@@ -118,61 +118,61 @@
      <publishTime>03/13/2024 12:32:32</publishTime>
    </File>
    <File Include="bin/IStation.Calc.Model.dll">
      <publishTime>05/29/2024 20:24:52</publishTime>
      <publishTime>06/17/2024 20:21:40</publishTime>
    </File>
    <File Include="bin/IStation.Calc.Model.pdb">
      <publishTime>05/29/2024 20:24:52</publishTime>
      <publishTime>06/17/2024 20:21:40</publishTime>
    </File>
    <File Include="bin/IStation.Core.dll">
      <publishTime>05/13/2024 16:29:27</publishTime>
      <publishTime>06/13/2024 15:04:42</publishTime>
    </File>
    <File Include="bin/IStation.Core.pdb">
      <publishTime>05/13/2024 16:29:27</publishTime>
      <publishTime>06/13/2024 15:04:42</publishTime>
    </File>
    <File Include="bin/IStation.DAL.Paras.dll">
      <publishTime>05/29/2024 21:15:24</publishTime>
      <publishTime>06/17/2024 20:21:40</publishTime>
    </File>
    <File Include="bin/IStation.DAL.Paras.pdb">
      <publishTime>05/29/2024 21:15:24</publishTime>
      <publishTime>06/17/2024 20:21:40</publishTime>
    </File>
    <File Include="bin/IStation.DAL.Project.dll">
      <publishTime>05/29/2024 20:24:52</publishTime>
      <publishTime>06/17/2024 20:21:40</publishTime>
    </File>
    <File Include="bin/IStation.DAL.Project.dll.config">
      <publishTime>04/29/2024 13:50:24</publishTime>
    </File>
    <File Include="bin/IStation.DAL.Project.pdb">
      <publishTime>05/29/2024 20:24:52</publishTime>
      <publishTime>06/17/2024 20:21:40</publishTime>
    </File>
    <File Include="bin/IStation.Entity.Basic.dll">
      <publishTime>05/13/2024 16:34:21</publishTime>
      <publishTime>06/17/2024 19:56:55</publishTime>
    </File>
    <File Include="bin/IStation.Entity.Basic.pdb">
      <publishTime>05/13/2024 16:34:21</publishTime>
      <publishTime>06/17/2024 19:56:55</publishTime>
    </File>
    <File Include="bin/IStation.Entity.Core.dll">
      <publishTime>05/13/2024 16:29:27</publishTime>
      <publishTime>06/13/2024 15:04:42</publishTime>
    </File>
    <File Include="bin/IStation.Entity.Core.pdb">
      <publishTime>05/13/2024 16:29:27</publishTime>
      <publishTime>06/13/2024 15:04:42</publishTime>
    </File>
    <File Include="bin/IStation.Log.dll">
      <publishTime>05/20/2024 20:47:07</publishTime>
      <publishTime>06/17/2024 19:56:55</publishTime>
    </File>
    <File Include="bin/IStation.Log.pdb">
      <publishTime>05/20/2024 20:47:07</publishTime>
      <publishTime>06/17/2024 19:56:55</publishTime>
    </File>
    <File Include="bin/IStation.MemoryCache.dll">
      <publishTime>05/13/2024 16:29:27</publishTime>
      <publishTime>06/13/2024 15:04:42</publishTime>
    </File>
    <File Include="bin/IStation.MemoryCache.pdb">
      <publishTime>05/13/2024 16:29:27</publishTime>
      <publishTime>06/13/2024 15:04:42</publishTime>
    </File>
    <File Include="bin/IStation.Model.Basic.dll">
      <publishTime>05/29/2024 20:21:19</publishTime>
      <publishTime>06/17/2024 20:21:39</publishTime>
    </File>
    <File Include="bin/IStation.Model.Basic.pdb">
      <publishTime>05/29/2024 20:21:19</publishTime>
      <publishTime>06/17/2024 20:21:39</publishTime>
    </File>
    <File Include="bin/IStation.Model.Config.dll">
      <publishTime>03/13/2024 12:32:32</publishTime>
@@ -181,58 +181,58 @@
      <publishTime>03/13/2024 12:32:32</publishTime>
    </File>
    <File Include="bin/IStation.Model.Core.dll">
      <publishTime>05/20/2024 20:46:40</publishTime>
      <publishTime>06/13/2024 15:04:43</publishTime>
    </File>
    <File Include="bin/IStation.Model.Core.pdb">
      <publishTime>05/20/2024 20:46:40</publishTime>
      <publishTime>06/13/2024 15:04:43</publishTime>
    </File>
    <File Include="bin/IStation.Model.Curve.dll">
      <publishTime>05/20/2024 22:17:13</publishTime>
      <publishTime>06/17/2024 19:56:55</publishTime>
    </File>
    <File Include="bin/IStation.Model.Curve.pdb">
      <publishTime>05/20/2024 22:17:13</publishTime>
      <publishTime>06/17/2024 19:56:55</publishTime>
    </File>
    <File Include="bin/IStation.Model.Monitor.dll">
      <publishTime>05/20/2024 20:46:40</publishTime>
      <publishTime>06/13/2024 15:04:42</publishTime>
    </File>
    <File Include="bin/IStation.Model.Monitor.pdb">
      <publishTime>05/20/2024 20:46:40</publishTime>
      <publishTime>06/13/2024 15:04:42</publishTime>
    </File>
    <File Include="bin/IStation.Newtonsoft.dll">
      <publishTime>05/20/2024 15:40:36</publishTime>
      <publishTime>06/13/2024 14:05:48</publishTime>
    </File>
    <File Include="bin/IStation.Newtonsoft.pdb">
      <publishTime>05/20/2024 15:40:36</publishTime>
      <publishTime>06/13/2024 14:05:48</publishTime>
    </File>
    <File Include="bin/IStation.Settings.dll">
      <publishTime>05/20/2024 20:46:40</publishTime>
      <publishTime>06/13/2024 15:04:43</publishTime>
    </File>
    <File Include="bin/IStation.Settings.pdb">
      <publishTime>05/20/2024 20:46:40</publishTime>
      <publishTime>06/13/2024 15:04:43</publishTime>
    </File>
    <File Include="bin/IStation.SnowflakeId.dll">
      <publishTime>05/13/2024 16:29:27</publishTime>
      <publishTime>06/13/2024 15:04:42</publishTime>
    </File>
    <File Include="bin/IStation.SnowflakeId.pdb">
      <publishTime>05/13/2024 16:29:27</publishTime>
      <publishTime>06/13/2024 15:04:42</publishTime>
    </File>
    <File Include="bin/IStation.Unit.dll">
      <publishTime>05/13/2024 16:29:28</publishTime>
      <publishTime>06/13/2024 15:04:42</publishTime>
    </File>
    <File Include="bin/IStation.Unit.pdb">
      <publishTime>05/13/2024 16:29:28</publishTime>
      <publishTime>06/13/2024 15:04:42</publishTime>
    </File>
    <File Include="bin/IStation.Untity.dll">
      <publishTime>05/24/2024 13:41:44</publishTime>
      <publishTime>06/17/2024 20:21:39</publishTime>
    </File>
    <File Include="bin/IStation.Untity.pdb">
      <publishTime>05/24/2024 13:41:44</publishTime>
      <publishTime>06/17/2024 20:21:39</publishTime>
    </File>
    <File Include="bin/IStation.WebApi.dll">
      <publishTime>05/31/2024 01:34:14</publishTime>
      <publishTime>06/17/2024 20:21:41</publishTime>
    </File>
    <File Include="bin/IStation.WebApi.pdb">
      <publishTime>05/31/2024 01:34:14</publishTime>
      <publishTime>06/17/2024 20:21:41</publishTime>
    </File>
    <File Include="bin/log4net.dll">
      <publishTime>03/25/2024 09:57:26</publishTime>
@@ -682,7 +682,7 @@
      <publishTime>03/25/2024 09:57:27</publishTime>
    </File>
    <File Include="Web.config">
      <publishTime>05/29/2024 21:15:25</publishTime>
      <publishTime>06/13/2024 14:50:47</publishTime>
    </File>
  </ItemGroup>
</Project>
WebApi/ÖÚÒãµ÷¶È/ZyConnectHelper.cs
@@ -1,12 +1,11 @@

using IStation.Untity;
using IStation.Untity;
using IStation.ZyDto;
using IStation.ZyModel;
using IStation.ZyModel;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
@@ -70,7 +69,7 @@
        }
        /// <summary>
        ///
        ///
        /// </summary>
        /// <param name="result"></param>
        /// <returns></returns>