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