From 1998c849be270159a086cf6d0448a0cdba4db53c Mon Sep 17 00:00:00 2001
From: tangxu <76880903@qq.com>
Date: 星期一, 24 十月 2022 21:29:22 +0800
Subject: [PATCH] 添加 严桥2

---
 Application/IStation.Application.OpenApi/shys/plan/PlanAna_ShysController.cs |  287 ++++++++++++++++++++++++++-------------------------------
 1 files changed, 132 insertions(+), 155 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..8d1dac1 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,35 @@
             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 path = @"D:\WorkData\IStation\result_1024b.json";
+            if (!System.IO.File.Exists(path))
+                return null;
+              
+            var responseText = System.IO.File.ReadAllText(path);//(娴嬭瘯鐢ㄧ殑)   
+            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,169 +83,119 @@
                 return default;
             }
 
-            var factoryIds = planDataList.SelectMany(x=>x.datas).Select(x => x.factory).Distinct().ToList();
+            var sg_factoryIds = planDataList.SelectMany(x => x.datas).Select(x => x.factory).Distinct().ToList();
             var vmList = new List<PlanAnaDto>();
-            foreach (var factoryId in factoryIds)
+            foreach (var sg_factoryId in sg_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});
-                    }
-                }
+                var vmItem = Ana(planDataList, sg_factoryId);
+                if(vmItem != null)
                 vmList.Add(vmItem);
             }
             return vmList;
         }
 
-        /// <summary>
-        /// 璁$畻-璋冭瘯
-        /// </summary>
-        [AllowAnonymous]
-        [NonUnify]
-        [Route("Calculate@Debug")]
-        [HttpPost]
-        public List<PlanAnaDto> Calculate_debug()
+        private PlanAnaDto Ana(List<PlanAnaData> planDataList, int sg_factoryId)
         {
-            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)
+            //鎵惧埌鐩稿叧娉电珯锛屽苟杩涜璁$畻
+            var stationInfo = ShysPlanHelper.GetStationInfo(sg_factoryId);
+            if (stationInfo == null)
             {
-                //鏋勯�犺绠楀叆鍙�
-                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);
+                // LogHelper.Error("鏈壘鍒癷d:{factoryId},瀵瑰簲鐨勬车绔�");
+                return null ;
             }
-            return vmList;
+
+            var stationId = stationInfo.ID;
+            var station = new Service.Station().GetByID(_corpId, stationId);
+            if (station == null)
+            {
+                LogHelper.Error($"涓婃捣鍘熸按鑳借�楄鍒掑垎鏋愯绠椾腑锛� 娉电珯id:{stationId}, 鏁版嵁搴撲腑鏈壘鍒版娉电珯");
+                return null;
+            }
+            var calculator = stationInfo.Calculator;
+            if (calculator == null)
+            {
+                LogHelper.Error($"涓婃捣鍘熸按鑳借�楄鍒掑垎鏋愯绠椾腑锛� 娉电珯id:{stationId}, 鏈瀯寤鸿绠楀櫒");
+                return null;
+            }
+            calculator.SetStationID(4, stationInfo.ID);//璁剧疆ID
+
+            //鏋勯�犺绠楀叆鍙�
+            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 == sg_factoryId);
+                for (int i = 0; i <= 23; i++)
+                {
+                    var hourSumRecord = new HourSumRecord();
+                    hourSumRecord.Hour = i;
+                    hourSumRecord.Records = new List<Dto.MonitorRecord4SG>();
+                    if (factoryData.scada != null && factoryData.scada.Count > 0)
+                    {
+                        foreach (var scadaItem in factoryData.scada)
+                        {
+                            var scadaRecord = new Dto.MonitorRecord4SG();
+                            scadaRecord.MonitorTag = scadaItem.tagname;
+                            var ff = scadaItem.values.Find(t => t.GetHour() == i);
+                            if (ff == null)
+                            {
+                                if (calculator.IsIgnoreAble(scadaItem.tagname))
+                                {
+                                    scadaRecord.RecordValue = 0;
+                                }
+                                else if (calculator.Is娑蹭綅Monitor(scadaItem.tagname))
+                                {
+                                    scadaRecord.RecordValue = 0;
+                                }
+                                else
+                                {
+                                    LogHelper.Error($"涓婃捣鍘熸按鑳借�楄鍒掑垎鏋愯绠椾腑锛� 娉电珯id:{stationId}, {scadaItem.tagname} 鏃堕棿鐐箋i}, 鏈壘鍒版暟鎹�");
+                                    return null;
+                                }
+                            }
+                            else
+                            {
+                                scadaRecord.RecordValue = ff.value;
+                            }
+
+                            hourSumRecord.Records.Add(scadaRecord);
+                        }
+                    }
+                    sumRecord.HourRecords.Add(hourSumRecord);
+                }
+                sumRecordList.Add(sumRecord);
+            }
+
+            string error_info = "";
+            var resultList = calculator.Calc(station, sg_factoryId, sumRecordList, out error_info);
+            if (resultList == null || resultList.Count() < 1)
+            {
+                LogHelper.Error($"涓婃捣鍘熸按鑳借�楄鍒掑垎鏋愯绠椾腑锛屾车绔欏悕绉�:{station.Name} 娉电珯id:{stationId},璁$畻閿欒,鍘熷洜鏄�:{error_info}");
+                return null;
+            }
+
+            //鐢熸垚杩斿洖缁撴灉
+            var vmItem = new PlanAnaDto();
+            vmItem.factory = sg_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 });
+                }
+            }
+
+            return vmItem;
         }
-
-
 
 
 

--
Gitblit v1.9.3