From 6b437da7145139fda9cbff0acaa5b8e2295d11cd Mon Sep 17 00:00:00 2001
From: tangxu <76880903@qq.com>
Date: 星期六, 08 十月 2022 10:55:23 +0800
Subject: [PATCH] 添加 能效计划

---
 Application/IStation.Application.OpenApi/shys/plan/PlanAna_ShysController.cs |  166 ++++++++++++++++++++----------------------------------
 1 files changed, 62 insertions(+), 104 deletions(-)

diff --git a/Application/IStation.Application.OpenApi/shys/plan/PlanAna_ShysController.cs b/Application/IStation.Application.OpenApi/shys/plan/PlanAna_ShysController.cs
index b62ab44..7c745a8 100644
--- a/Application/IStation.Application.OpenApi/shys/plan/PlanAna_ShysController.cs
+++ b/Application/IStation.Application.OpenApi/shys/plan/PlanAna_ShysController.cs
@@ -6,10 +6,9 @@
 using IStation.Untity;
 using Furion.DynamicApiController;
 using System.ComponentModel.DataAnnotations;
-using Mapster;
 using Microsoft.AspNetCore.Authorization;
 using IStation.Calculation;
-using IStation.Calculation.PlanAna;
+using IStation.Dto;
 
 namespace IStation.Application
 {
@@ -45,7 +44,31 @@
             LogHelper.Debug(responseText);
 
             var planDataList = JsonHelper.Json2Object<List<PlanAnaData>>(responseText);
-            if (planDataList == null||planDataList.Count<1)
+            return CalculateCore(planDataList);
+        }
+
+        /// <summary>
+        /// 璁$畻-璋冭瘯
+        /// </summary>
+        [AllowAnonymous]
+        [NonUnify]
+        [Route("Calculate@Debug")]
+        [HttpGet]
+        public List<PlanAnaDto> Calculate_debug()
+        {
+            var responseText = System.IO.File.ReadAllText(@"E:\WorkData\IStation\result.txt");//(娴嬭瘯鐢ㄧ殑)
+            var planDataList = JsonHelper.Json2Object<List<PlanAnaData>>(responseText);
+            return CalculateCore(planDataList);
+        }
+       
+        /// <summary>
+        /// 鍒嗘瀽鏍稿績
+        /// </summary>
+        /// <param name="planDataList"></param>
+        /// <returns></returns>
+        private List<PlanAnaDto> CalculateCore(List<PlanAnaData> planDataList) 
+        {
+            if (planDataList == null || planDataList.Count < 1)
             {
                 LogHelper.Error("涓婃捣鍘熸按鑳借�楄鍒掑垎鏋愯绠椾笁楂樿繑鍥炴帴鍙e嚭鍙備负绌�");
                 return default;
@@ -56,97 +79,29 @@
                 return default;
             }
 
-            var factoryIds = planDataList.SelectMany(x=>x.datas).Select(x => x.factory).Distinct().ToList();
-            var vmList = new List<PlanAnaDto>();
-            foreach (var factoryId in factoryIds)
-            {
-                //鏋勯�犺绠楀叆鍙�
-                var sumRecordList = new List<MonthSumRecord>();
-                foreach (var planData in planDataList)
-                {
-                    var sumRecord = new MonthSumRecord();
-                    sumRecord.Month = planData.timeflag;
-                    sumRecord.HourRecords = new List<HourSumRecord>();
-                    var factoryData = planData.datas.Find(t=>t.factory==factoryId);
-                    for (int i = 0; i <= 23; i++)
-                    {
-                        var hourSumRecord = new HourSumRecord();
-                        hourSumRecord.Hour = i;
-                        hourSumRecord.Records = new List<Calculation.PlanAna.MonitorRecord>();
-                        if (factoryData.scada != null && factoryData.scada.Count > 0)
-                        {
-                            foreach (var scadaItem in factoryData.scada)
-                            {
-                                var scadaRecord = new Calculation.PlanAna.MonitorRecord();
-                                scadaRecord.MonitorId = PlanAnaConstant.MonitorDict[scadaItem.tagname];
-                                scadaRecord.RecordValue = scadaItem.values.Find(t => t.datetime.Trim() == PlanAnaConstant.HourDict[i]).value;
-                                hourSumRecord.Records.Add(scadaRecord);
-                            }
-                        }
-                        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);
-                            }
-                        }
-                        sumRecord.HourRecords.Add(hourSumRecord);
-                    }
-                    sumRecordList.Add(sumRecord);
-                }
-
-                //鎵惧埌鐩稿叧娉电珯锛屽苟杩涜璁$畻
-                var stationId = PlanAnaConstant.FactoryDict[factoryId];
-                var station = new Service.Station().GetByID(_corpId, stationId);
-                var calculator = PlanAnaCalculatorFactory.CreateCalculator(_corpId, ObjectType.Station, stationId);
-                var resultList = calculator.Calculate(sumRecordList);
-                if (resultList == null || resultList.Count < 1)
-                {
-                    LogHelper.Error($"涓婃捣鍘熸按鑳借�楄鍒掑垎鏋愯绠椾腑锛屾车绔欏悕绉�:{station.Name} 娉电珯id:{stationId},璁$畻閿欒");
-                    continue;
-                }
-
-                //鐢熸垚杩斿洖缁撴灉
-                var vmItem = new PlanAnaDto();
-                vmItem.factory = factoryId;
-                vmItem.name = station.Name;
-                vmItem.values = new List<List<double>>();
-                for (int i = 1; i <= 12; i++)
-                {
-                    var result = resultList.Find(t => t.Month == i);
-                    if (result == null)
-                    {
-                        vmItem.values.Add(new List<double>() { 0, 0, 0 });
-                    }
-                    else
-                    {
-                        vmItem.values.Add(new List<double>() {result.Qt,result.Dt,result.WP});
-                    }
-                }
-                vmList.Add(vmItem);
-            }
-            return vmList;
-        }
-
-        /// <summary>
-        /// 璁$畻-璋冭瘯
-        /// </summary>
-        [AllowAnonymous]
-        [NonUnify]
-        [Route("Calculate@Debug")]
-        [HttpPost]
-        public List<PlanAnaDto> Calculate_debug()
-        {
-            var responseText = System.IO.File.ReadAllText(@"D:\result.txt");//(娴嬭瘯鐢ㄧ殑)
-            var planDataList = JsonHelper.Json2Object<List<PlanAnaData>>(responseText);
-
             var factoryIds = planDataList.SelectMany(x => x.datas).Select(x => x.factory).Distinct().ToList();
             var vmList = new List<PlanAnaDto>();
             foreach (var factoryId in factoryIds)
             {
+                //鎵惧埌鐩稿叧娉电珯锛屽苟杩涜璁$畻
+                if (!PlanAnaConstant.FactoryDict.ContainsKey(factoryId))
+                {
+                    LogHelper.Error("鏈壘鍒癷d:{factoryId},瀵瑰簲鐨勬车绔�");
+                    return default;
+                }
+                var stationId = PlanAnaConstant.FactoryDict[factoryId];
+                var station = new Service.Station().GetByID(_corpId, stationId);
+                if (station == null)
+                {
+                    LogHelper.Error($"涓婃捣鍘熸按鑳借�楄鍒掑垎鏋愯绠椾腑锛� 娉电珯id:{stationId}, 鏁版嵁搴撲腑鏈壘鍒版娉电珯");
+                    continue;
+                }
+                var calculator = PlanAnaCalculatorFactory.CreateCalculator(_corpId, ObjectType.Station, stationId);
+                if (calculator == null)
+                {
+                    LogHelper.Error($"涓婃捣鍘熸按鑳借�楄鍒掑垎鏋愯绠椾腑锛� 娉电珯id:{stationId}, 鏈瀯寤鸿绠楀櫒");
+                    continue;
+                }
                 //鏋勯�犺绠楀叆鍙�
                 var sumRecordList = new List<MonthSumRecord>();
                 foreach (var planData in planDataList)
@@ -159,14 +114,20 @@
                     {
                         var hourSumRecord = new HourSumRecord();
                         hourSumRecord.Hour = i;
-                        hourSumRecord.Records = new List<Calculation.PlanAna.MonitorRecord>();
+                        hourSumRecord.Records = new List<Dto.MonitorRecord4SG>();
                         if (factoryData.scada != null && factoryData.scada.Count > 0)
                         {
                             foreach (var scadaItem in factoryData.scada)
                             {
-                                var scadaRecord = new Calculation.PlanAna.MonitorRecord();
-                                scadaRecord.MonitorId = PlanAnaConstant.MonitorDict[scadaItem.tagname];
-                                scadaRecord.RecordValue = scadaItem.values.Find(t => t.datetime.Trim() == PlanAnaConstant.HourDict[i]).value;
+                                var scadaRecord = new Dto.MonitorRecord4SG();
+                                scadaRecord.MonitorTag =  scadaItem.tagname ;
+                                var ff = scadaItem.values.Find(t => t.GetHour() ==  i );
+                                if(ff == null)
+                                {
+                                    LogHelper.Error($"涓婃捣鍘熸按鑳借�楄鍒掑垎鏋愯绠椾腑锛� 娉电珯id:{stationId}, {scadaItem.tagname} 鏃堕棿鐐箋i}, 鏈壘鍒版暟鎹�" );
+                                    return default;
+                                }
+                                scadaRecord.RecordValue = ff.value;
                                 hourSumRecord.Records.Add(scadaRecord);
                             }
                         }
@@ -174,9 +135,9 @@
                         {
                             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;
+                                var resultRecord = new Dto.MonitorRecord4SG();
+                                resultRecord.MonitorTag = resultItem.tagname;// PlanAnaConstant.MonitorDict[resultItem.tagname];
+                                resultRecord.RecordValue = resultItem.values.Find(t => t.GetHour() == i).value;
                                 hourSumRecord.Records.Add(resultRecord);
                             }
                         }
@@ -185,14 +146,11 @@
                     sumRecordList.Add(sumRecord);
                 }
 
-                //鎵惧埌鐩稿叧娉电珯锛屽苟杩涜璁$畻
-                var stationId = PlanAnaConstant.FactoryDict[factoryId];
-                var station = new Service.Station().GetByID(_corpId, stationId);
-                var calculator = PlanAnaCalculatorFactory.CreateCalculator(_corpId, ObjectType.Station, stationId);
-                var resultList = calculator.Calculate(sumRecordList);
-                if (resultList == null || resultList.Count < 1)
+                string error_info="";
+                var resultList = calculator.Calc(station, factoryId, sumRecordList, out error_info);
+                if (resultList == null || resultList.Count() < 1)
                 {
-                    LogHelper.Error($"涓婃捣鍘熸按鑳借�楄鍒掑垎鏋愯绠椾腑锛屾车绔欏悕绉�:{station.Name} 娉电珯id:{stationId},璁$畻閿欒");
+                    LogHelper.Error($"涓婃捣鍘熸按鑳借�楄鍒掑垎鏋愯绠椾腑锛屾车绔欏悕绉�:{station.Name} 娉电珯id:{stationId},璁$畻閿欒,鍘熷洜鏄�:{error_info}"  );
                     continue;
                 }
 

--
Gitblit v1.9.3