tangxu
2022-10-08 c4c7b110178d02ad732eddf9a67c4a6ebb150da5
文件遗漏
已添加7个文件
351 ■■■■■ 文件已修改
Application/IStation.Application.OpenApi/shys/plan/dto/input/HourSumRecord.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Application/IStation.Application.OpenApi/shys/plan/dto/input/MonitorRecord.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Application/IStation.Application.OpenApi/shys/plan/dto/input/MonthSumRecord.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Application/IStation.Application.OpenApi/shys/plan/dto/output/MonthCalcuResult.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Application/IStation.Application.OpenApi/shys/plan/helper/IPlanAnaCalculator.cs 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Application/IStation.Application.OpenApi/shys/plan/helper/PlanAnaCalculatorFactory.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Application/IStation.Application.OpenApi/shys/plan/shys/shys长兴泵站.cs 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Application/IStation.Application.OpenApi/shys/plan/dto/input/HourSumRecord.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace IStation.Dto
{
    /// <summary>
    /// æ—¶æ±‡æ€»è®°å½•
    /// </summary>
    public class HourSumRecord
    {
        /// <summary>
        /// 0-23
        /// </summary>
        public int Hour { get; set; }
        /// <summary>
        /// è®°å½•
        /// </summary>
        public List<MonitorRecord4SG> Records { get; set; }
    }
}
Application/IStation.Application.OpenApi/shys/plan/dto/input/MonitorRecord.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace IStation.Dto
{
    /// <summary>
    /// ç›‘测值
    /// </summary>
    public class MonitorRecord4SG
    {
        /// <summary>
        /// ç›‘测id
        /// </summary>
        public string  MonitorTag { get; set; }
        /// <summary>
        /// è®°å½•值
        /// </summary>
        public double RecordValue { get; set; }
    }
}
Application/IStation.Application.OpenApi/shys/plan/dto/input/MonthSumRecord.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace IStation.Dto
{
    /// <summary>
    /// æœˆæ±‡æ€»è®°å½•
    /// </summary>
    public class MonthSumRecord
    {
        /// <summary>
        /// æœˆä»½ 1-12
        /// </summary>
        public int Month { get; set; }
        /// <summary>
        /// è®°å½•列表
        /// </summary>
        public List<HourSumRecord> HourRecords { get; set; }
    }
}
Application/IStation.Application.OpenApi/shys/plan/dto/output/MonthCalcuResult.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace IStation.Dto
{
    /// <summary>
    /// æœˆè®¡ç®—结果
    /// </summary>
    public class MonthCalcuResult
    {
        /// <summary>
        /// æœˆä»½ 1-12
        /// </summary>
        public int Month { get; set; }
        /// <summary>
        /// ä¾›æ°´é‡ m³
        /// </summary>
        public double Qt { get; set; }
        /// <summary>
        /// è€—电量 kw
        /// </summary>
        public double Dt { get; set; }
        /// <summary>
        /// åƒå¨èƒ½è€—
        /// </summary>
        public double WP { get; set; }
    }
}
Application/IStation.Application.OpenApi/shys/plan/helper/IPlanAnaCalculator.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,84 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using IStation.Application;
using IStation.Dto;
namespace IStation.Calculation
{
    /// <summary>
    /// è®¡åˆ’分析计算器接口
    /// </summary>
    public class  PlanAnaCalculator
    {
        /// <summary>
        ///
        /// </summary>
        protected IStation.Calculation.DispatchAna.IOptAnaCalc _dispatchAnaCalc = null;
        /// <summary>
        ///
        /// </summary>
        public virtual List<Dto.MonthCalcuResult> Calc (
            Model.Station station,int factoryId,
            List<Dto.MonthSumRecord> sumRecordList,
            out string error_info)
        {
            if(_dispatchAnaCalc == null)
            {
                error_info = "未构建DispatchAna.IOptAnaCalc";
                return null;
            }
            int year = DateTime.Now.Year;
            List<Dto.MonthCalcuResult> monthRecordList = new List<Dto.MonthCalcuResult>();
            foreach (var monthRecord in sumRecordList)
            {
                //
                List<IStation.Calculation.DispatchAna.Model.HourRequest> HourRequests =
                    BuildHourRequest(monthRecord.HourRecords,out error_info);
                if(HourRequests == null || HourRequests.Count() == 0)
                {
                    error_info = "青草沙 æž„建DHourRequests å¤±è´¥,原因:" + error_info;
                    return null;
                }
                var dayNumber = DateTime.DaysInMonth(year, monthRecord.Month);
                var daySum = this._dispatchAnaCalc.CalcSumData(HourRequests, out error_info);
                if (daySum == null || daySum.Qt<=0)
                {
                    error_info = "青草沙,调度分析失败,原因:" + error_info;
                    return null;
                }
                Dto.MonthCalcuResult monthSum = new Dto.MonthCalcuResult();
                monthSum.Month = monthRecord.Month;
                monthSum.Qt = daySum.Qt * dayNumber;
                monthSum.Dt = daySum.Dt * dayNumber;
                monthSum.WP = daySum.WP;
                monthRecordList.Add(monthSum);
            }
            error_info = null;
            return monthRecordList;
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="HourSumRecords"></param>
        /// <param name="error_info"></param>
        /// <returns></returns>
        protected virtual List<IStation.Calculation.DispatchAna.Model.HourRequest> BuildHourRequest(
            List<IStation.Dto.HourSumRecord> HourSumRecords,
            out string error_info)
        {
            error_info = "未实例化";
            return null;
        }
    }
}
Application/IStation.Application.OpenApi/shys/plan/helper/PlanAnaCalculatorFactory.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,33 @@
using IStation.Dto;
namespace IStation.Calculation
{
    internal class PlanAnaCalculatorFactory
    {
        /// <summary>
        /// åˆ›å»ºè®¡ç®—器
        /// </summary>
        public static  PlanAnaCalculator CreateCalculator(long corpId, string objectType, long objectId)
        {
             PlanAnaCalculator calculator = null;
            if (objectType == ObjectType.Station)
            {
                switch (objectId)
                {
                    case 2:
                        calculator = new IStation.Calculation.shys长兴泵站();
                        break;
                    default: break;
                }
            }
            return calculator;
        }
    }
}
Application/IStation.Application.OpenApi/shys/plan/shys/shys³¤Ð˱ÃÕ¾.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,124 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace IStation.Calculation
{
    internal class shys长兴泵站: PlanAnaCalculator
    {
        public shys长兴泵站( )
        {
            this._dispatchAnaCalc = new IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_长兴岛();
        }
        protected override List<IStation.Calculation.DispatchAna.Model.HourRequest> BuildHourRequest(
            List<IStation.Dto.HourSumRecord> HourSumRecords,
            out string error_info)
        {
            List<IStation.Calculation.DispatchAna.Model.HourRequest> HourRequests = new List<DispatchAna.Model.HourRequest>();
            for (int i = 0; i <= 23; i++)
            {
                var hourSumRecord = new IStation.Calculation.DispatchAna.Model.HourRequest();
                hourSumRecord.Hour = i;
                hourSumRecord.Request = new DispatchAna.Model.RequestParasComplex();
                var Records = HourSumRecords[i].Records;
                var water_level = Records.Find(x => x.MonitorTag == monitor泵站前池液位.Item1);
                if(water_level  == null)
                {
                    water_level = Records.Find(x => x.MonitorTag == monitor青草沙水库液位.Item1);
                    if (water_level == null)
                    {
                        error_info = "青草沙水库液位测点未找到";
                        return HourRequests;
                    }
                }
                var pipe1_flow = Records.Find(x => x.MonitorTag == monitor水管道1流量.Item1);
                if (pipe1_flow == null)
                {
                    error_info = "青草沙水管道1流量测点未找到";
                    return HourRequests;
                }
                var pipe1_press = Records.Find(x => x.MonitorTag == monitor水管道1压力.Item1);
                if (pipe1_press == null)
                {
                    error_info = "青草沙水管道1压力测点未找到";
                    return HourRequests;
                }
                var pipe2_flow = Records.Find(x => x.MonitorTag == monitor水管道2流量.Item1);
                if (pipe2_flow == null)
                {
                    error_info = "青草沙水管道2流量测点未找到";
                    return HourRequests;
                }
                var pipe2_press = Records.Find(x => x.MonitorTag == monitor水管道2压力.Item1);
                if (pipe2_press == null)
                {
                    error_info = "青草沙水管道2压力测点未找到";
                    return HourRequests;
                }
                hourSumRecord.Request.CorpID = 4;
                hourSumRecord.Request.StationID = 2;
                hourSumRecord.Request.SchemeNumber = 1;
                hourSumRecord.Request.PressValueType = DispatchAna.Model.RequestParasComplex.ePressValueType.压力;
                hourSumRecord.Request.WaterLevelPara = new List<DispatchAna.Model.WaterLevelPara>()
                        {
                            new DispatchAna.Model.WaterLevelPara(){ Name="æ°´æ± ", Value = water_level.RecordValue}
                        };
                hourSumRecord.Request.OutletPipePara = new List<DispatchAna.Model.OutletPipePara>();
                hourSumRecord.Request.OutletPipePara.Add(new DispatchAna.Model.OutletPipePara()
                {
                    Name = "一号管路",
                    TargetFlow = pipe1_flow.RecordValue,
                    TargetPress = pipe1_press.RecordValue,
                });
                hourSumRecord.Request.OutletPipePara.Add(new DispatchAna.Model.OutletPipePara()
                {
                    Name = "二号管路",
                    TargetFlow = pipe2_flow.RecordValue,
                    TargetPress = pipe2_press.RecordValue,
                });
                hourSumRecord.Request.ValvePara = new List<DispatchAna.Model.ValvePara>();
                hourSumRecord.Request.ValvePara.Add(new DispatchAna.Model.ValvePara() { Name = "中间阀门", OpenStatus = 0 });
                //if (factoryData.result != null && factoryData.result.Count > 0)
                //{
                //    foreach (var resultItem in factoryData.result)
                //    {
                //        var resultRecord = new Calculation.PlanAna.MonitorRecord();
                //        resultRecord.MonitorId = PlanAnaConstant.MonitorDict[resultItem.tagname];
                //        resultRecord.RecordValue = resultItem.values.Find(t => t.datetime.Trim() == PlanAnaConstant.HourDict[i]).value;
                //        hourSumRecord.Records.Add(resultRecord);
                //    }
                HourRequests.Add(hourSumRecord);
            }
            error_info = null;
            return HourRequests;
        }
        /// <summary>
        /// æµ‹ç‚¹å­—å…¸
        /// </summary>
        private Tuple<string, long> monitor青草沙水库液位 = new Tuple<string, long>("_0402010403030103001", 69);
        private Tuple<string, long> monitor泵站前池液位 = new Tuple<string, long>("_0402010404030103001", 70);
        private Tuple<string, long> monitor水管道1流量 = new Tuple<string, long>("_0402010403030002001", 73);
        private Tuple<string, long> monitor水管道1压力 = new Tuple<string, long>("_0402010403030002005", 72);
        private Tuple<string, long> monitor水管道2流量 = new Tuple<string, long>("_0402010403030002002", 77);
        private Tuple<string, long> monitor水管道2压力 = new Tuple<string, long>("_0402010403030002006", 76);
        //{"_0402010403030103001",69},//青草沙水库液位
        //    {"_0402010404030103001",70},//青草沙水库吸水井液位-长兴泵站前池液位
        //    {"_0402010403030002001",73},//长兴泵站输水泵出水管道1流量
        //    {"_0402010403030002005",72},//长兴泵站输水管道1#压力
        //    {"_0402010403030002002",77},//长兴泵站输水泵出水管道2流量
        //    {"_0402010403030002006",76},//长兴泵站输水管道2#压力
        //};
    }
}