| | |
| | | using IStation.Model; |
| | | using IStation.CalcModel.Tide; |
| | | using IStation.Model; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.IO; |
| | | using System.Linq; |
| | | using System.Security.AccessControl; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using System.Xml; |
| | | |
| | | namespace IStation.Common |
| | | { |
| | | public class PumpHistoryDataFileHelper |
| | | { |
| | | |
| | | public class RunParasData |
| | | public class RunParasData |
| | | { |
| | | public DateTime Day { get; set; } |
| | | /// <summary> |
| | | /// æ°æ®æ¥æ |
| | | /// </summary> |
| | | public DateTime DateTime { get; set; } |
| | | /// <summary> |
| | | /// æ³µè¿è¡ç¶æ |
| | | /// </summary> |
| | | public List<RunParasBlock> Blocks { get; set; } |
| | | public List<RunParasBlock> Pump1 { get; set; } |
| | | public List<RunParasBlock> Pump2 { get; set; } |
| | | public List<RunParasBlock> Pump3 { get; set; } |
| | | public List<RunParasBlock> Pump4 { get; set; } |
| | | public List<RunParasBlock> Pump5 { get; set; } |
| | | /// <summary> |
| | | /// æ»åæ°´é |
| | | /// </summary> |
| | | public double FlowIn { get; set; } |
| | | /// <summary> |
| | | /// æ»ç¨çµé |
| | | /// </summary> |
| | | public double Electric { get; set; } |
| | | /// <summary> |
| | | /// æ»çµè´¹ |
| | | /// </summary> |
| | | public double Money { get; set; } |
| | | } |
| | | public class RunParasBlock |
| | | { |
| | | /// <summary> |
| | | /// å¼å§æ¶é´ |
| | | /// </summary> |
| | | public DateTime StartTime { get; set; } |
| | | /// <summary> |
| | | /// ç»ææ¶é´ |
| | | /// </summary> |
| | | public DateTime EndTime { get; set; } |
| | | /// <summary> |
| | | /// åæ°´é |
| | | /// </summary> |
| | |
| | | /// ç¨çµé |
| | | /// </summary> |
| | | public double Electric { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç¨çµé |
| | | /// çµè´¹ |
| | | /// </summary> |
| | | public double Money { get; set; } |
| | | } |
| | | public class RunParasBlock |
| | | { |
| | | public DateTime StartTime { get; set; } |
| | | |
| | | public DateTime EndTime { get; set; } |
| | | |
| | | public double FlowIn1 { get; set; } |
| | | List<ZyModel.RealScadaData> allFlows = null; |
| | | List<ZyModel.RealScadaData> allEles = null; |
| | | |
| | | public double FlowIn2 { get; set; } |
| | | //åæ°´é |
| | | private double? GetPumpFlowIndexByStartTime(int start_index, int pump_index, DateTime time) |
| | | { |
| | | for (int i = 0; i < allFlows[pump_index].MonitorRecords.Count; i++) |
| | | { |
| | | var v = allFlows[pump_index].MonitorRecords[i]; |
| | | if (v.Time >= time && v.Value != null) |
| | | { |
| | | return v.Value; |
| | | } |
| | | } |
| | | |
| | | public double FlowIn3 { get; set; } |
| | | |
| | | public double FlowIn4 { get; set; } |
| | | |
| | | public double FlowIn5 { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç¨çµé |
| | | /// </summary> |
| | | public double Electric1 { get; set; } |
| | | /// <summary> |
| | | /// çµè´¹ |
| | | /// </summary> |
| | | public double Money1 { get; set; } |
| | | /// <summary> |
| | | /// ç¨çµé |
| | | /// </summary> |
| | | public double Electric2 { get; set; } |
| | | /// <summary> |
| | | /// çµè´¹ |
| | | /// </summary> |
| | | public double Money2 { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç¨çµé |
| | | /// </summary> |
| | | public double Electric3 { get; set; } |
| | | /// <summary> |
| | | /// çµè´¹ |
| | | /// </summary> |
| | | public double Money3 { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç¨çµé |
| | | /// </summary> |
| | | public double Electric4 { get; set; } |
| | | /// <summary> |
| | | /// çµè´¹ |
| | | /// </summary> |
| | | public double Money4 { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç¨çµé |
| | | /// </summary> |
| | | public double Electric5 { get; set; } |
| | | /// <summary> |
| | | /// çµè´¹ |
| | | /// </summary> |
| | | public double Money5 { get; set; } |
| | | return -1; |
| | | } |
| | | |
| | | //çµè½ |
| | | private double? GetPumpEleIndexByStartTime(int start_index, int pump_index, DateTime time) |
| | | { |
| | | for (int i = 0; i < allEles[pump_index].MonitorRecords.Count; i++) |
| | | { |
| | | var v = allEles[pump_index].MonitorRecords[i]; |
| | | if (v.Time >= time && v.Value != null) |
| | | { |
| | | return v.Value; |
| | | } |
| | | } |
| | | |
| | | return -1; |
| | | } |
| | | private double GetByEndTime(int index, DateTime time) |
| | | { |
| | | foreach (var v in allFlows[index].MonitorRecords) |
| | | { |
| | | if (v.Time >= time && v.Value != null) |
| | | return v.Value.Value; |
| | | } |
| | | |
| | | return -1; |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// åå§æ¹æ³è·åæææ°æ® |
| | | /// </summary> |
| | | /// <param name="day"></param> |
| | | /// <returns></returns> |
| | | public static List<RunParasData> GetHistoryData(DateTime day) |
| | | public void GetHistoryData() |
| | | { |
| | | List<double> doublesWater = new List<double>(); |
| | | List<double> doublesEle = new List<double>(); |
| | | var PumpIsOpen = getPumpIsOpen(day); |
| | | foreach (var item in PumpIsOpen) |
| | | List<RunParasData> runParasDatasList = new List<RunParasData>(); |
| | | |
| | | DateTime startDay = new DateTime(2022, 11, 1); |
| | | DateTime endDay = new DateTime(2023, 11, 14); |
| | | |
| | | allFlows = GetAllWaterData(); //åæ°´é |
| | | allEles = GetAllEleData(); //æåçµè½ |
| | | //var allRunStaus = GetAllRunStatusData(); |
| | | var allRunstatus = getPumpIsOpen();//è¿è¡åæ° |
| | | var pumprun1 = allRunstatus.Where(x => x.Item1 == 1).ToList(); |
| | | var pumprun2 = allRunstatus.Where(x => x.Item1 == 2).ToList(); |
| | | var pumprun3 = allRunstatus.Where(x => x.Item1 == 3).ToList(); |
| | | var pumprun4 = allRunstatus.Where(x => x.Item1 == 4).ToList(); |
| | | var pumprun5 = allRunstatus.Where(x => x.Item1 == 5).ToList(); |
| | | List<RunParasBlock> runParasBlockpump1 = new List<RunParasBlock>(); |
| | | List<RunParasBlock> runParasBlockpump2 = new List<RunParasBlock>(); |
| | | List<RunParasBlock> runParasBlockpump3 = new List<RunParasBlock>(); |
| | | List<RunParasBlock> runParasBlockpump4 = new List<RunParasBlock>(); |
| | | List<RunParasBlock> runParasBlockpump5 = new List<RunParasBlock>(); |
| | | RunParasData day_sum = new RunParasData(); |
| | | for (DateTime day = startDay; day <= endDay; day = day.AddDays(1)) |
| | | { |
| | | doublesWater.Add(GetWaterdata(item.Item1, item.Item2)); |
| | | day_sum = new RunParasData(); |
| | | var next_day = day.AddDays(1); |
| | | day_sum.DateTime = day; |
| | | |
| | | foreach (var time_block in pumprun1) |
| | | { |
| | | if (time_block.Item2 >= day && time_block.Item3 <= next_day) |
| | | { |
| | | RunParasBlock block = new RunParasBlock(); |
| | | block.EndTime = time_block.Item3; |
| | | block.StartTime = time_block.Item2; |
| | | double? start_flow_in = GetPumpFlowIndexByStartTime(0, 0, time_block.Item2); |
| | | double? end_flow = GetPumpFlowIndexByStartTime(0, 0, time_block.Item3); |
| | | if (end_flow >= 0 && start_flow_in >= 0 && start_flow_in < end_flow) |
| | | { |
| | | block.FlowIn = (double)(end_flow - start_flow_in); //åæ°´é |
| | | } |
| | | double? start_ELe = GetPumpEleIndexByStartTime(0, 0, time_block.Item2); |
| | | double? end_Ele = GetPumpEleIndexByStartTime(0, 0, time_block.Item3); |
| | | if (end_flow >= 0 && start_flow_in >= 0 && start_flow_in < end_flow) |
| | | { |
| | | block.Electric = (double)(end_Ele - start_ELe); //ç¨çµé |
| | | } |
| | | block.Money = GetMoney(time_block.Item2, time_block.Item3, 0); |
| | | if (time_block.Item1 == 1) |
| | | { |
| | | runParasBlockpump1.Add(block); |
| | | } |
| | | if (time_block.Item1 == 2) |
| | | { |
| | | runParasBlockpump2.Add(block); |
| | | } |
| | | if (time_block.Item1 == 3) |
| | | { |
| | | runParasBlockpump3.Add(block); |
| | | } |
| | | if (time_block.Item1 == 4) |
| | | { |
| | | runParasBlockpump4.Add(block); |
| | | } |
| | | if (time_block.Item1 == 5) |
| | | { |
| | | runParasBlockpump5.Add(block); |
| | | } |
| | | } |
| | | } |
| | | foreach (var item in pumprun2) |
| | | { |
| | | if (item.Item2 >= day && item.Item3 <= next_day) |
| | | { |
| | | RunParasBlock block = new RunParasBlock(); |
| | | block.EndTime = item.Item3; |
| | | block.StartTime = item.Item2; |
| | | double? start_flow_in = GetPumpFlowIndexByStartTime(1, 1, item.Item2); |
| | | double? end_flow = GetPumpFlowIndexByStartTime(1, 1, item.Item3); |
| | | if (end_flow >= 0 && start_flow_in >= 0 && start_flow_in < end_flow) |
| | | { |
| | | block.FlowIn = (double)(end_flow - start_flow_in); //åæ°´é |
| | | } |
| | | double? start_ELe = GetPumpEleIndexByStartTime(1, 1, item.Item2); |
| | | double? end_Ele = GetPumpEleIndexByStartTime(1, 1, item.Item3); |
| | | if (end_flow >= 0 && start_flow_in >= 0 && start_flow_in < end_flow) |
| | | { |
| | | block.Electric = (double)(end_Ele - start_ELe); //ç¨çµé |
| | | } |
| | | block.Money = GetMoney(item.Item2, item.Item3, 1); |
| | | if (item.Item1 == 1) |
| | | { |
| | | runParasBlockpump1.Add(block); |
| | | } |
| | | if (item.Item1 == 2) |
| | | { |
| | | runParasBlockpump2.Add(block); |
| | | } |
| | | if (item.Item1 == 3) |
| | | { |
| | | runParasBlockpump3.Add(block); |
| | | } |
| | | if (item.Item1 == 4) |
| | | { |
| | | runParasBlockpump4.Add(block); |
| | | } |
| | | if (item.Item1 == 5) |
| | | { |
| | | runParasBlockpump5.Add(block); |
| | | } |
| | | } |
| | | } |
| | | foreach (var item in pumprun3) |
| | | { |
| | | if (item.Item2 >= day && item.Item3 <= next_day) |
| | | { |
| | | RunParasBlock block = new RunParasBlock(); |
| | | block.EndTime = item.Item3; |
| | | block.StartTime = item.Item2; |
| | | double? start_flow_in = GetPumpFlowIndexByStartTime(2, 2, item.Item2); |
| | | double? end_flow = GetPumpFlowIndexByStartTime(2, 2, item.Item3); |
| | | if (end_flow >= 0 && start_flow_in >= 0 && start_flow_in < end_flow) |
| | | { |
| | | block.FlowIn = (double)(end_flow - start_flow_in); //åæ°´é |
| | | } |
| | | double? start_ELe = GetPumpEleIndexByStartTime(2, 2, item.Item2); |
| | | double? end_Ele = GetPumpEleIndexByStartTime(2, 2, item.Item3); |
| | | if (end_flow >= 0 && start_flow_in >= 0 && start_flow_in < end_flow) |
| | | { |
| | | block.Electric = (double)(end_Ele - start_ELe); //ç¨çµé |
| | | } |
| | | block.Money = GetMoney(item.Item2, item.Item3, 2); |
| | | if (item.Item1 == 1) |
| | | { |
| | | runParasBlockpump1.Add(block); |
| | | } |
| | | if (item.Item1 == 2) |
| | | { |
| | | runParasBlockpump2.Add(block); |
| | | } |
| | | if (item.Item1 == 3) |
| | | { |
| | | runParasBlockpump3.Add(block); |
| | | } |
| | | if (item.Item1 == 4) |
| | | { |
| | | runParasBlockpump4.Add(block); |
| | | } |
| | | if (item.Item1 == 5) |
| | | { |
| | | runParasBlockpump5.Add(block); |
| | | } |
| | | } |
| | | } |
| | | foreach (var item in pumprun4) |
| | | { |
| | | if (item.Item2 >= day && item.Item3 <= next_day) |
| | | { |
| | | RunParasBlock block = new RunParasBlock(); |
| | | block.EndTime = item.Item3; |
| | | block.StartTime = item.Item2; |
| | | double? start_flow_in = GetPumpFlowIndexByStartTime(3, 3, item.Item2); |
| | | double? end_flow = GetPumpFlowIndexByStartTime(3, 3, item.Item3); |
| | | if (end_flow >= 0 && start_flow_in >= 0 && start_flow_in < end_flow) |
| | | { |
| | | block.FlowIn = (double)(end_flow - start_flow_in); //åæ°´é |
| | | } |
| | | double? start_ELe = GetPumpEleIndexByStartTime(3, 3, item.Item2); |
| | | double? end_Ele = GetPumpEleIndexByStartTime(3, 3, item.Item3); |
| | | if (end_flow >= 0 && start_flow_in >= 0 && start_flow_in < end_flow) |
| | | { |
| | | block.Electric = (double)(end_Ele - start_ELe); //ç¨çµé |
| | | } |
| | | block.Money = GetMoney(item.Item2, item.Item3, 3); |
| | | |
| | | if (item.Item1 == 1) |
| | | { |
| | | runParasBlockpump1.Add(block); |
| | | } |
| | | if (item.Item1 == 2) |
| | | { |
| | | runParasBlockpump2.Add(block); |
| | | } |
| | | if (item.Item1 == 3) |
| | | { |
| | | runParasBlockpump3.Add(block); |
| | | } |
| | | if (item.Item1 == 4) |
| | | { |
| | | runParasBlockpump4.Add(block); |
| | | } |
| | | if (item.Item1 == 5) |
| | | { |
| | | runParasBlockpump5.Add(block); |
| | | } |
| | | } |
| | | } |
| | | foreach (var item in pumprun5) |
| | | { |
| | | if (item.Item2 >= day && item.Item3 <= next_day) |
| | | { |
| | | RunParasBlock block = new RunParasBlock(); |
| | | block.EndTime = item.Item3; |
| | | block.StartTime = item.Item2; |
| | | double? start_flow_in = GetPumpFlowIndexByStartTime(4, 4, item.Item2); |
| | | double? end_flow = GetPumpFlowIndexByStartTime(4, 4, item.Item3); |
| | | if (end_flow >= 0 && start_flow_in >= 0 && start_flow_in < end_flow) |
| | | { |
| | | block.FlowIn = (double)(end_flow - start_flow_in); //åæ°´é |
| | | } |
| | | double? start_ELe = GetPumpEleIndexByStartTime(4, 4, item.Item2); |
| | | double? end_Ele = GetPumpEleIndexByStartTime(4, 4, item.Item3); |
| | | if (end_flow >= 0 && start_flow_in >= 0 && start_flow_in < end_flow) |
| | | { |
| | | block.Electric = (double)(end_Ele - start_ELe); //ç¨çµé |
| | | } |
| | | block.Money = GetMoney(item.Item2, item.Item3, 4); |
| | | |
| | | if (item.Item1 == 1) |
| | | { |
| | | runParasBlockpump1.Add(block); |
| | | } |
| | | if (item.Item1 == 2) |
| | | { |
| | | runParasBlockpump2.Add(block); |
| | | } |
| | | if (item.Item1 == 3) |
| | | { |
| | | runParasBlockpump3.Add(block); |
| | | } |
| | | if (item.Item1 == 4) |
| | | { |
| | | runParasBlockpump4.Add(block); |
| | | } |
| | | if (item.Item1 == 5) |
| | | { |
| | | runParasBlockpump5.Add(block); |
| | | } |
| | | } |
| | | } |
| | | day_sum.Pump1 = runParasBlockpump1; |
| | | day_sum.Pump2 = runParasBlockpump2; |
| | | day_sum.Pump3 = runParasBlockpump3; |
| | | day_sum.Pump4 = runParasBlockpump4; |
| | | day_sum.Pump5 = runParasBlockpump5; |
| | | foreach (var item in runParasBlockpump1) |
| | | { |
| | | day_sum.Electric += item.Electric; |
| | | day_sum.FlowIn += item.FlowIn; |
| | | day_sum.Money += item.Money; |
| | | } |
| | | foreach (var item in runParasBlockpump2) |
| | | { |
| | | day_sum.Electric += item.Electric; |
| | | day_sum.FlowIn += item.FlowIn; |
| | | day_sum.Money += item.Money; |
| | | } |
| | | foreach (var item in runParasBlockpump3) |
| | | { |
| | | day_sum.Electric += item.Electric; |
| | | day_sum.FlowIn += item.FlowIn; |
| | | day_sum.Money += item.Money; |
| | | } |
| | | foreach (var item in runParasBlockpump4) |
| | | { |
| | | day_sum.Electric += item.Electric; |
| | | day_sum.FlowIn += item.FlowIn; |
| | | day_sum.Money += item.Money; |
| | | } |
| | | foreach (var item in runParasBlockpump5) |
| | | { |
| | | day_sum.Electric += item.Electric; |
| | | day_sum.FlowIn += item.FlowIn; |
| | | day_sum.Money += item.Money; |
| | | } |
| | | runParasDatasList.Add(day_sum); |
| | | var json = JsonHelper.Object2Json(runParasDatasList); |
| | | |
| | | |
| | | runParasBlockpump1 = new List<RunParasBlock>(); |
| | | runParasBlockpump2 = new List<RunParasBlock>(); |
| | | runParasBlockpump3 = new List<RunParasBlock>(); |
| | | runParasBlockpump4 = new List<RunParasBlock>(); |
| | | runParasBlockpump5 = new List<RunParasBlock>(); |
| | | } |
| | | foreach (var item in PumpIsOpen) |
| | | DateTime date = new DateTime(2022, 11, 1); |
| | | DateTime currenttime = new DateTime(2022, 11, 1); |
| | | |
| | | // int daysInMonth = DateTime.DaysInMonth(date.Year, date.Month); |
| | | // var path = "C:\\Users\\ZKC\\Desktop\\æ°å»ºæä»¶å¤¹ (2)"; |
| | | int processedDays = 0; |
| | | for (int k = 0; k < 30; k++) |
| | | { |
| | | doublesEle.Add(GetElectrityData(item.Item1, item.Item2)); |
| | | int daysInMonth = DateTime.DaysInMonth(date.Year, date.Month); // è·åå½åæä»½çå¤©æ° |
| | | var path22 = $"C:\\Users\\ZKC\\Desktop\\æ°å»ºæä»¶å¤¹ (2)\\{date.ToString("yyyy-MM")}"; |
| | | var filepath = Directory.CreateDirectory(path22); |
| | | int i = 0; |
| | | |
| | | foreach (var item in runParasDatasList.Skip(processedDays)) // è·³è¿å·²å¤ççå¤©æ° |
| | | { |
| | | string jsonpath = string.Concat(path22, $"\\{currenttime.ToString("dd")}"); |
| | | string json = JsonHelper.Object2Json(item); |
| | | File.WriteAllText($"{jsonpath}.json", json); |
| | | currenttime = currenttime.AddDays(1); |
| | | i++; |
| | | if (i == daysInMonth) |
| | | break; |
| | | } |
| | | |
| | | processedDays += i; // æ´æ°å·²å¤ççå¤©æ° |
| | | date = date.AddMonths(1); // æ´æ°æ¥æå°ä¸ä¸ä¸ªæä»½ |
| | | currenttime = date; // éç½® currenttime ä¸ºæ°æä»½çç¬¬ä¸ |
| | | } |
| | | List<RunParasData> runParasDatas = new List<RunParasData>(); |
| | | runParasDatas.Add(new RunParasData |
| | | { |
| | | /*TimeRunParas = PumpIsOpen, |
| | | Water = doublesWater, |
| | | Electric = doublesEle*/ |
| | | }); |
| | | return runParasDatas; |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | /* |
| | | /// <summary> |
| | | ///åæ°´é |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public List<ZyModel.StatusScadaData> GetWater() |
| | | { |
| | | var tagDict = new List<string> |
| | | { |
| | | "_0402010204012101001",//"äºåæ°´1å·æ³µç´¯è®¡æµé" }, |
| | | "_0402010204012203002",//"äºåæ°´2å·æ³µç´¯è®¡æµé" }, |
| | | "_0402010204012303002",// "äºåæ°´3å·æ³µç´¯è®¡æµé" }, |
| | | "_0402010204012403002", //"äºåæ°´4å·æ³µç´¯è®¡æµé" }, |
| | | "_0402010204012503002", //"äºåæ°´5å·æ³µç´¯è®¡æµé" }, |
| | | }; |
| | | |
| | | ZyModel.StatusScadaData pump1 = new ZyModel.StatusScadaData(); |
| | | pump1.TagName = tagDict[0]; |
| | | pump1.MonitorRecords = new List<ZyModel.RunStatusRecord>(); |
| | | ZyModel.StatusScadaData pump2 = new ZyModel.StatusScadaData(); |
| | | ZyModel.StatusScadaData pump3 = new ZyModel.StatusScadaData(); |
| | | ZyModel.StatusScadaData pump4 = new ZyModel.StatusScadaData(); |
| | | ZyModel.StatusScadaData pump5 = new ZyModel.StatusScadaData(); |
| | | string path = System.IO.Path.Combine(IStation.DataFolderHelper.GetRootPath(), |
| | | "PumpRunParas", "äºåæ°´æºæ³µå¼åç¶æ.csv"); |
| | | if (!File.Exists(path)) |
| | | return null; |
| | | int totalLines = File.ReadLines(path, Encoding.GetEncoding("gb2312")).Count();//æ»è¡æ° |
| | | System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.Open); |
| | | System.IO.StreamReader sr = new System.IO.StreamReader(fs, Encoding.GetEncoding("gb2312")); |
| | | string tempText; |
| | | int last_status1 = 0; |
| | | for (int i = 0; i < totalLines - 1; i++) |
| | | { |
| | | tempText = sr.ReadLine(); |
| | | string[] arr = tempText.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); |
| | | var row = new ZyModel.MonitorRecord |
| | | { |
| | | Time = Convert.ToDateTime(arr[0]), |
| | | Value = Convert.ToDouble(arr[2]) |
| | | }; |
| | | } |
| | | fs.Close(); |
| | | // return new List<ZyModel.RealScadaData>() { pump1, pump2, pump3, pump4, pump5 }; |
| | | return null; |
| | | }*/ |
| | | |
| | | |
| | | /* /// <summary> |
| | | /// è·åçµè´¹ä»·æ ¼ |
| | | /// </summary> |
| | | private double getEleMoney(List<RunParasBlock> runParasBlocks) |
| | | { |
| | | double totalPrice=0; |
| | | foreach (var item in runParasBlocks) |
| | | { |
| | | totalPrice+=GetMoney(item.StartTime, item.EndTime); |
| | | } |
| | | return totalPrice; |
| | | }*/ |
| | | |
| | | //è·åçµè´¹ |
| | | private double GetMoney(DateTime str, DateTime end, int sort) |
| | | { |
| | | var list = IStation.Common.ElecPrice.GetAll(); |
| | | double Price = 0; |
| | | var month = str.Month; |
| | | var Starthour = str.Hour; |
| | | var Endhour = end.Hour; |
| | | foreach (var item in list[0].Settings.MonthList) |
| | | { |
| | | if (month >= item.StartMonth && month <= item.EndMonth) |
| | | { |
| | | foreach (var Hour in item.HourList) |
| | | { |
| | | if (Starthour == Endhour) continue; |
| | | // Check if the hour range overlaps with the given start and end hours |
| | | if ((Starthour >= Hour.StartHour && Starthour <= Hour.EndHour) || |
| | | (Endhour >= Hour.StartHour && Endhour <= Hour.EndHour) || |
| | | (Starthour < Hour.StartHour && Endhour > Hour.EndHour)) // If the range spans across multiple hours |
| | | { |
| | | // Calculate the amount based on the portion of hours covered |
| | | double? start_flow_in = GetPumpFlowIndexByStartTime(sort, sort, new DateTime(str.Year, str.Month, str.Day, Starthour, 0, 0)); |
| | | double? end_flow = GetPumpFlowIndexByStartTime(sort, sort, new DateTime(str.Year, str.Month, str.Day, Endhour, 0, 0)); |
| | | double amount = 0; |
| | | if (Starthour >= Hour.StartHour && Endhour <= Hour.EndHour) // If start and end hours are within this hour range |
| | | { |
| | | amount = (double)(end_flow - start_flow_in); |
| | | Price += Hour.Price * amount; // Accumulate price |
| | | Starthour = Endhour; // Update StartHour to EndHour for next iteration |
| | | } |
| | | else if (Starthour < Hour.StartHour && Endhour <= Hour.EndHour) // If the range starts before this hour range |
| | | { |
| | | double? next_flow = GetPumpFlowIndexByStartTime(sort, sort, new DateTime(str.Year, str.Month, str.Day, Hour.StartHour, 0, 0)); |
| | | amount = (double)(next_flow - start_flow_in); |
| | | Price += Hour.Price * amount; // Accumulate price |
| | | Starthour = Hour.StartHour; // Update StartHour to Hour.StartHour for next iteration |
| | | } |
| | | else if (Starthour >= Hour.StartHour && Endhour > Hour.EndHour && Starthour < Hour.EndHour) // If the range ends after this hour range |
| | | { |
| | | double? prev_flow = GetPumpFlowIndexByStartTime(sort, sort, new DateTime(str.Year, str.Month, str.Day, Hour.EndHour, 0, 0)); |
| | | amount = (double)(prev_flow - start_flow_in); |
| | | Price += Hour.Price * amount; // Accumulate price |
| | | Starthour = Hour.EndHour; // Update StartHour to Hour.EndHour for next iteration |
| | | } |
| | | else // If the range spans across this hour range |
| | | { |
| | | double? next_flow = GetPumpFlowIndexByStartTime(sort, sort, new DateTime(str.Year, str.Month, str.Day, Hour.StartHour, 0, 0)); |
| | | double? prev_flow = GetPumpFlowIndexByStartTime(sort, sort, new DateTime(str.Year, str.Month, str.Day, Hour.EndHour, 0, 0)); |
| | | amount = (double)(next_flow - prev_flow); |
| | | Price += Hour.Price * amount; // Accumulate price |
| | | Starthour = Hour.EndHour; // Update StartHour to Hour.EndHour for next iteration |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | }; |
| | | return Price; |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// è·åæ»åæ°´é |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public static List<Model.PumpWater> GetWaterData() |
| | | public List<ZyModel.RealScadaData> GetAllWaterData() |
| | | { |
| | | var tagDict = new List<string> |
| | | { |
| | | "äºåæ°´1å·ä¸»æ°´æ³µ.æ¥ç´¯è®¡",//"äºåæ°´1å·æ³µç´¯è®¡æµé" }, |
| | | "äºåæ°´2å·ä¸»æ°´æ³µ.æ¥ç´¯è®¡",//"äºåæ°´2å·æ³µç´¯è®¡æµé" }, |
| | | "äºåæ°´3å·ä¸»æ°´æ³µ.æ¥ç´¯è®¡",// "äºåæ°´3å·æ³µç´¯è®¡æµé" }, |
| | | "äºåæ°´4å·ä¸»æ°´æ³µ.æ¥ç´¯è®¡", //"äºåæ°´4å·æ³µç´¯è®¡æµé" }, |
| | | "äºåæ°´5å·ä¸»æ°´æ³µ.æ¥ç´¯è®¡", //"äºåæ°´5å·æ³µç´¯è®¡æµé" }, |
| | | }; |
| | | ZyModel.RealScadaData pump1 = new ZyModel.RealScadaData(); |
| | | pump1.TagName = tagDict[0]; |
| | | pump1.MonitorRecords = new List<ZyModel.MonitorRecord>(); |
| | | ZyModel.RealScadaData pump2 = new ZyModel.RealScadaData(); |
| | | pump2.TagName = tagDict[1]; |
| | | pump2.MonitorRecords = new List<ZyModel.MonitorRecord>(); |
| | | ZyModel.RealScadaData pump3 = new ZyModel.RealScadaData(); |
| | | pump3.TagName = tagDict[2]; |
| | | pump3.MonitorRecords = new List<ZyModel.MonitorRecord>(); |
| | | ZyModel.RealScadaData pump4 = new ZyModel.RealScadaData(); |
| | | pump4.TagName = tagDict[3]; |
| | | pump4.MonitorRecords = new List<ZyModel.MonitorRecord>(); |
| | | ZyModel.RealScadaData pump5 = new ZyModel.RealScadaData(); |
| | | pump5.TagName = tagDict[4]; |
| | | pump5.MonitorRecords = new List<ZyModel.MonitorRecord>(); |
| | | string path = System.IO.Path.Combine(IStation.DataFolderHelper.GetRootPath(), |
| | | "PumpRunParas", "äºåæ°´æºæ³µç´¯è®¡æµé.csv"); |
| | | if (!File.Exists(path)) |
| | |
| | | System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.Open); |
| | | System.IO.StreamReader sr = new System.IO.StreamReader(fs, Encoding.GetEncoding("gb2312")); |
| | | string tempText; |
| | | List<Model.PumpWater> pumpISopenlist = new List<Model.PumpWater>(); |
| | | for (int i = 0; i < totalLines-1; i++) |
| | | |
| | | for (int i = 0; i < totalLines - 1; i++) |
| | | { |
| | | tempText = sr.ReadLine(); |
| | | string[] arr = tempText.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); |
| | | try |
| | | var row = new ZyModel.MonitorRecord |
| | | { |
| | | var pumpISopen = new Model.PumpWater |
| | | { |
| | | Tag = arr[1], |
| | | Values = new List<Model.Water> |
| | | { |
| | | new Model.Water |
| | | { |
| | | DateTime = Convert.ToDateTime(arr[0]), |
| | | SingleWater =Convert.ToDouble( arr[2]) |
| | | } |
| | | } |
| | | |
| | | |
| | | }; |
| | | pumpISopenlist.Add(pumpISopen); |
| | | Time = Convert.ToDateTime(arr[0]), |
| | | Value = Convert.ToDouble(arr[2]) |
| | | }; |
| | | if (arr[1] == tagDict[0]) |
| | | { |
| | | pump1.MonitorRecords.Add(row); |
| | | } |
| | | catch |
| | | if (arr[1] == tagDict[1]) |
| | | { |
| | | var a = i; |
| | | pump2.MonitorRecords.Add(row); |
| | | } |
| | | if (arr[1] == tagDict[2]) |
| | | { |
| | | pump3.MonitorRecords.Add(row); |
| | | } |
| | | if (arr[1] == tagDict[3]) |
| | | { |
| | | pump4.MonitorRecords.Add(row); |
| | | } |
| | | if (arr[1] == tagDict[4]) |
| | | { |
| | | pump5.MonitorRecords.Add(row); |
| | | } |
| | | } |
| | | fs.Close(); |
| | | return pumpISopenlist; |
| | | return new List<ZyModel.RealScadaData>() { pump1, pump2, pump3, pump4, pump5 }; |
| | | } |
| | | |
| | | |
| | |
| | | /// è·åæåçµè½ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public static List<Model.electricity> GetEleData() |
| | | public static List<ZyModel.RealScadaData> GetAllEleData() |
| | | { |
| | | var tagDict = new List<string> |
| | | { |
| | | "_0402010204040193046",//"äºåæ°´1å·æ³µç´¯è®¡æµé" }, |
| | | "_0402010204040193047",//"äºåæ°´2å·æ³µç´¯è®¡æµé" }, |
| | | "_0402010204012308007",// "äºåæ°´3å·æ³µç´¯è®¡æµé" }, |
| | | "_0402010204012408007", //"äºåæ°´4å·æ³µç´¯è®¡æµé" }, |
| | | "_0402010204012508007", //"äºåæ°´5å·æ³µç´¯è®¡æµé" }, |
| | | }; |
| | | string path = System.IO.Path.Combine(IStation.DataFolderHelper.GetRootPath(), |
| | | "PumpRunParas", "äºåæ°´æºæ³µæåçµè½.csv"); |
| | | if (!File.Exists(path)) |
| | |
| | | int totalLines = File.ReadLines(path, Encoding.GetEncoding("gb2312")).Count();//æ»è¡æ° |
| | | System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.Open); |
| | | System.IO.StreamReader sr = new System.IO.StreamReader(fs, Encoding.GetEncoding("gb2312")); |
| | | ZyModel.RealScadaData pump1 = new ZyModel.RealScadaData(); |
| | | pump1.TagName = tagDict[0]; |
| | | pump1.MonitorRecords = new List<ZyModel.MonitorRecord>(); |
| | | ZyModel.RealScadaData pump2 = new ZyModel.RealScadaData(); |
| | | pump2.TagName = tagDict[1]; |
| | | pump2.MonitorRecords = new List<ZyModel.MonitorRecord>(); |
| | | ZyModel.RealScadaData pump3 = new ZyModel.RealScadaData(); |
| | | pump3.TagName = tagDict[2]; |
| | | pump3.MonitorRecords = new List<ZyModel.MonitorRecord>(); |
| | | ZyModel.RealScadaData pump4 = new ZyModel.RealScadaData(); |
| | | pump4.TagName = tagDict[3]; |
| | | pump4.MonitorRecords = new List<ZyModel.MonitorRecord>(); |
| | | ZyModel.RealScadaData pump5 = new ZyModel.RealScadaData(); |
| | | pump5.TagName = tagDict[4]; |
| | | pump5.MonitorRecords = new List<ZyModel.MonitorRecord>(); |
| | | string tempText; |
| | | List<Model.electricity> pumpISopenlist = new List<Model.electricity>(); |
| | | for (int i = 0; i < totalLines; i++) |
| | | { |
| | | tempText = sr.ReadLine(); |
| | | string[] arr = tempText.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); |
| | | var pumpISopen = new Model.electricity |
| | | var row = new ZyModel.MonitorRecord |
| | | { |
| | | Tag = arr[1], |
| | | TotalEle = new List<Model.Ele> |
| | | { |
| | | new Model.Ele |
| | | { |
| | | DateTime = Convert.ToDateTime(arr[0]), |
| | | Value =Convert.ToDouble( arr[2]) |
| | | } |
| | | } |
| | | Time = Convert.ToDateTime(arr[0]), |
| | | Value = Convert.ToDouble(arr[2]) |
| | | }; |
| | | pumpISopenlist.Add(pumpISopen); |
| | | if (arr[1] == tagDict[0]) |
| | | { |
| | | pump1.MonitorRecords.Add(row); |
| | | } |
| | | if (arr[1] == tagDict[1]) |
| | | { |
| | | pump2.MonitorRecords.Add(row); |
| | | } |
| | | if (arr[1] == tagDict[2]) |
| | | { |
| | | pump3.MonitorRecords.Add(row); |
| | | } |
| | | if (arr[1] == tagDict[3]) |
| | | { |
| | | pump4.MonitorRecords.Add(row); |
| | | } |
| | | if (arr[1] == tagDict[4]) |
| | | { |
| | | pump5.MonitorRecords.Add(row); |
| | | } |
| | | } |
| | | fs.Close(); |
| | | return pumpISopenlist; |
| | | return new List<ZyModel.RealScadaData>() { pump1, pump2, pump3, pump4, pump5 }; |
| | | } |
| | | |
| | | |
| | |
| | | /// <summary> |
| | | /// è·åå
·ä½æ¶é´æ®µç弿³µå°æ° |
| | | /// </summary> |
| | | public static List<(DateTime, DateTime, int)> getPumpIsOpen(DateTime datetime) |
| | | public List<(int, DateTime, DateTime)> getPumpIsOpen() |
| | | { |
| | | List<IsOpen> isOpenpump1 = new List<IsOpen>(); |
| | | List<IsOpen> isOpenpump2 = new List<IsOpen>(); |
| | |
| | | var Pump1 = TestIsOpen.Where(x => x.Tag == "_0402010204012101001").ToList(); |
| | | foreach (var item in Pump1) |
| | | { |
| | | isOpenpump1.AddRange(item.Values.Where(x => x.DateTime >= datetime && x.DateTime <= datetime.AddHours(23).AddMinutes(59)).ToList()); |
| | | isOpenpump1.AddRange(item.Values); |
| | | } |
| | | var Pump2 = TestIsOpen.Where(x => x.Tag == "_0402010204012201001").ToList(); |
| | | foreach (var item in Pump2) |
| | | { |
| | | isOpenpump2.AddRange(item.Values.Where(x => x.DateTime >= datetime && x.DateTime <= datetime.AddHours(23).AddMinutes(59)).ToList()); |
| | | isOpenpump2.AddRange(item.Values); |
| | | } |
| | | var Pump3 = TestIsOpen.Where(x => x.Tag == "_0402010204012301001").ToList(); |
| | | foreach (var item in Pump3) |
| | | { |
| | | isOpenpump3.AddRange(item.Values.Where(x => x.DateTime >= datetime && x.DateTime <= datetime.AddHours(23).AddMinutes(59)).ToList()); |
| | | isOpenpump3.AddRange(item.Values); |
| | | } |
| | | var Pump4 = TestIsOpen.Where(x => x.Tag == "_0402010204012401001").ToList(); |
| | | foreach (var item in Pump4) |
| | | { |
| | | isOpenpump4.AddRange(item.Values.Where(x => x.DateTime >= datetime && x.DateTime <= datetime.AddHours(23).AddMinutes(59)).ToList()); |
| | | isOpenpump4.AddRange(item.Values); |
| | | } |
| | | var Pump5 = TestIsOpen.Where(x => x.Tag == "_0402010204012501001").ToList(); |
| | | foreach (var item in Pump5) |
| | | { |
| | | isOpenpump5.AddRange(item.Values.Where(x => x.DateTime >= datetime && x.DateTime <= datetime.AddHours(23).AddMinutes(59)).ToList()); |
| | | isOpenpump5.AddRange(item.Values); |
| | | } |
| | | List<string> startTime = new List<string>(); |
| | | List<string> endtime = new List<string>(); |
| | | var Run1 = GetData(isOpenpump1); |
| | | var Run2 = GetData(isOpenpump2); |
| | | var Run3 = GetData(isOpenpump3); |
| | | var Run4 = GetData(isOpenpump4); |
| | | var Run5 = GetData(isOpenpump5); |
| | | List<(DateTime, DateTime)> mergedList = MergeList(Run1, Run2, Run3, Run4, Run5); |
| | | return MergeTimeSlots(mergedList); |
| | | // List<string> startTime = new List<string>(); |
| | | // List<string> endtime = new List<string>(); |
| | | var Run1 = GetData(isOpenpump1, 1); |
| | | var Run2 = GetData(isOpenpump2, 2); |
| | | var Run3 = GetData(isOpenpump3, 3); |
| | | var Run4 = GetData(isOpenpump4, 4); |
| | | var Run5 = GetData(isOpenpump5, 5); |
| | | List<(int, DateTime, DateTime)> mergedList = MergeList(Run1, Run2, Run3, Run4, Run5); |
| | | return (mergedList); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// è·åæ³µç弿ºåæ° |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public static List<Model.PumpIsopen> GetPumpRunParas() |
| | | public List<Model.PumpIsopen> GetPumpRunParas() |
| | | { |
| | | string path = System.IO.Path.Combine(IStation.DataFolderHelper.GetRootPath(), |
| | | "PumpRunParas", "äºåæ°´æºæ³µå¼åç¶æ.csv"); |
| | |
| | | |
| | | |
| | | //æ³µå¼æºåæ°çè¾
婿¹æ³ |
| | | private static List<(DateTime, DateTime)> GetData(List<IsOpen> PumpList) |
| | | private static List<(int, DateTime, DateTime)> GetData(List<IsOpen> PumpList, int sort) |
| | | { |
| | | List<(DateTime, DateTime)> values = new List<(DateTime, DateTime)>(); |
| | | values.Clear(); |
| | | // List<DateTime> Endvalues = new List<DateTime>(); |
| | | DateTime startTime; |
| | | DateTime EndTime; |
| | | for (int time = 0; time < PumpList.Count; time++) |
| | | List<(int, DateTime, DateTime)> openTimeRanges = new List<(int, DateTime, DateTime)>(); |
| | | |
| | | // æ¯å¤©çæ°æ®æ¡æ° |
| | | int itemsPerDay = 288; |
| | | |
| | | // éåå表 |
| | | for (int i = 0; i < PumpList.Count - 1; i += itemsPerDay) |
| | | { |
| | | if (PumpList[time].Isopen == "1") |
| | | DateTime currentDate = PumpList[i].DateTime.Date; |
| | | DateTime startTime = DateTime.MinValue; |
| | | bool isOpen = false; |
| | | |
| | | // éåå½å¤©çæ°æ® |
| | | for (int j = i; j < i + itemsPerDay && j < PumpList.Count - 1; j++) |
| | | { |
| | | startTime = PumpList[time].DateTime; |
| | | EndTime = PumpList[time].DateTime; |
| | | for (int k = time + 1; k < PumpList.Count; k++) //k为ä»å¼æºåæ¯è¾çåé䏿 |
| | | if (PumpList[j].Isopen == "1") |
| | | { |
| | | if (PumpList[k].Isopen == "1") |
| | | if (!isOpen) |
| | | { |
| | | EndTime = PumpList[k].DateTime; |
| | | time = k; |
| | | startTime = PumpList[j].DateTime; |
| | | isOpen = true; |
| | | } |
| | | else break; |
| | | } |
| | | values.Add((startTime, EndTime)); |
| | | else |
| | | { |
| | | if (isOpen) |
| | | { |
| | | openTimeRanges.Add((sort, startTime, PumpList[j - 1].DateTime)); |
| | | isOpen = false; |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 妿å½å¤©æå䏿¡æ°æ®æ¯æå¼ç¶æï¼æ·»å æ¶é´æ®µ |
| | | if (isOpen) |
| | | { |
| | | openTimeRanges.Add((sort, startTime, PumpList[i + itemsPerDay - 1].DateTime)); |
| | | } |
| | | } |
| | | return values; |
| | | |
| | | return openTimeRanges; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | |
| | | /// </summary> |
| | | /// <param name="lists"></param> |
| | | /// <returns></returns> |
| | | static List<(DateTime, DateTime)> MergeList(params List<(DateTime, DateTime)>[] lists) |
| | | static List<(int, DateTime, DateTime)> MergeList(params List<(int, DateTime, DateTime)>[] lists) |
| | | { |
| | | List<(DateTime, DateTime)> mergedList = new List<(DateTime, DateTime)>(); |
| | | List<(int, DateTime, DateTime)> mergedList = new List<(int, DateTime, DateTime)>(); |
| | | foreach (var list in lists) |
| | | { |
| | | mergedList.AddRange(list); |
| | |
| | | |
| | | |
| | | |
| | | private static double GetWaterdata(DateTime Str, DateTime end) |
| | | /* private static double GetWaterdata(DateTime Str, DateTime end) |
| | | { |
| | | List<Model.Water> water1 = new List<Model.Water>(); |
| | | List<Model.Water> water2 = new List<Model.Water>(); |
| | | List<Model.Water> water3 = new List<Model.Water>(); |
| | | List<Model.Water> water4 = new List<Model.Water>(); |
| | | List<Model.Water> water5 = new List<Model.Water>(); |
| | | var waterData = GetWaterData(); |
| | | var pump1 = waterData.Where(x => x.Tag == "äºåæ°´1å·ä¸»æ°´æ³µ.æ¥ç´¯è®¡").ToList(); |
| | | foreach (var item in pump1) |
| | | { |
| | | water1.AddRange(item.Values.Where(x => x.DateTime >= Str && x.DateTime <= end)); |
| | | } |
| | | var pump2 = waterData.Where(x => x.Tag == "äºåæ°´2å·ä¸»æ°´æ³µ.æ¥ç´¯è®¡").ToList(); |
| | | foreach (var item in pump2) |
| | | { |
| | | water2.AddRange(item.Values.Where(x => x.DateTime >= Str && x.DateTime <= end)); |
| | | } |
| | | var pump3 = waterData.Where(x => x.Tag == "äºåæ°´3å·ä¸»æ°´æ³µ.æ¥ç´¯è®¡").ToList(); |
| | | foreach (var item in pump3) |
| | | { |
| | | water3.AddRange(item.Values.Where(x => x.DateTime >= Str && x.DateTime <= end)); |
| | | } |
| | | var pump4 = waterData.Where(x => x.Tag == "äºåæ°´4å·ä¸»æ°´æ³µ.æ¥ç´¯è®¡").ToList(); |
| | | foreach (var item in pump4) |
| | | { |
| | | water4.AddRange(item.Values.Where(x => x.DateTime >= Str && x.DateTime <= end)); |
| | | } |
| | | var pump5 = waterData.Where(x => x.Tag == "äºåæ°´5å·ä¸»æ°´æ³µ.æ¥ç´¯è®¡").ToList(); |
| | | foreach (var item in pump5) |
| | | { |
| | | water5.AddRange(item.Values.Where(x => x.DateTime >= Str && x.DateTime <= end)); |
| | | } |
| | | var Result1 = water1.Last().SingleWater - water1.First().SingleWater; |
| | | var Result2 = water2.Last().SingleWater - water2.First().SingleWater; |
| | | var Result3 = water3.Last().SingleWater - water3.First().SingleWater; |
| | | var Result4 = water4.Last().SingleWater - water4.First().SingleWater; |
| | | var Result5 = water5.Last().SingleWater - water5.First().SingleWater; |
| | | return Result1 + Result2 + Result3 + Result4 + Result5; |
| | | } |
| | | |
| | | */ |
| | | |
| | | private static double GetElectrityData(DateTime Str, DateTime end) |
| | | { |
| | | List<Model.Water> water1 = new List<Model.Water>(); |
| | | List<Model.Water> water2 = new List<Model.Water>(); |
| | | List<Model.Water> water3 = new List<Model.Water>(); |
| | | List<Model.Water> water4 = new List<Model.Water>(); |
| | | List<Model.Water> water5 = new List<Model.Water>(); |
| | | var waterData = GetWaterData(); |
| | | var pump1 = waterData.Where(x => x.Tag == "äºåæ°´1å·ä¸»æ°´æ³µ.æ¥ç´¯è®¡").ToList(); |
| | | foreach (var item in pump1) |
| | | { |
| | | water1.AddRange(item.Values.Where(x => x.DateTime >= Str && x.DateTime <= end)); |
| | | } |
| | | var pump2 = waterData.Where(x => x.Tag == "äºåæ°´2å·ä¸»æ°´æ³µ.æ¥ç´¯è®¡").ToList(); |
| | | foreach (var item in pump2) |
| | | { |
| | | water2.AddRange(item.Values.Where(x => x.DateTime >= Str && x.DateTime <= end)); |
| | | } |
| | | var pump3 = waterData.Where(x => x.Tag == "äºåæ°´3å·ä¸»æ°´æ³µ.æ¥ç´¯è®¡").ToList(); |
| | | foreach (var item in pump3) |
| | | { |
| | | water3.AddRange(item.Values.Where(x => x.DateTime >= Str && x.DateTime <= end)); |
| | | } |
| | | var pump4 = waterData.Where(x => x.Tag == "äºåæ°´4å·ä¸»æ°´æ³µ.æ¥ç´¯è®¡").ToList(); |
| | | foreach (var item in pump4) |
| | | { |
| | | water4.AddRange(item.Values.Where(x => x.DateTime >= Str && x.DateTime <= end)); |
| | | } |
| | | var pump5 = waterData.Where(x => x.Tag == "äºåæ°´5å·ä¸»æ°´æ³µ.æ¥ç´¯è®¡").ToList(); |
| | | foreach (var item in pump5) |
| | | { |
| | | water5.AddRange(item.Values.Where(x => x.DateTime >= Str && x.DateTime <= end)); |
| | | } |
| | | var Result1 = water1.Last().SingleWater - water1.First().SingleWater; |
| | | var Result2 = water2.Last().SingleWater - water2.First().SingleWater; |
| | | var Result3 = water3.Last().SingleWater - water3.First().SingleWater; |
| | | var Result4 = water4.Last().SingleWater - water4.First().SingleWater; |
| | | var Result5 = water5.Last().SingleWater - water5.First().SingleWater; |
| | | return Result1 + Result2 + Result3 + Result4 + Result5; |
| | | } |
| | | |
| | | |
| | | |
| | | private static double GetElectrityData(DateTime Str, DateTime end) |
| | | { |
| | | var Ele = GetEleData(); |
| | | List<Model.Ele> Ele1 = new List<Model.Ele>(); |
| | | List<Model.Ele> Ele2 = new List<Model.Ele>(); |
| | | List<Model.Ele> Ele3 = new List<Model.Ele>(); |
| | | List<Model.Ele> Ele4 = new List<Model.Ele>(); |
| | | List<Model.Ele> Ele5 = new List<Model.Ele>(); |
| | | var pump1 = Ele.Where(x => x.Tag == "_0402010204040193046").ToList(); |
| | | foreach (var item in pump1) |
| | | { |
| | | Ele1.AddRange(item.TotalEle.Where(x => x.DateTime >= Str && x.DateTime <= end)); |
| | | } |
| | | var pump2 = Ele.Where(x => x.Tag == "_0402010204040193047").ToList(); |
| | | foreach (var item in pump2) |
| | | { |
| | | Ele2.AddRange(item.TotalEle.Where(x => x.DateTime >= Str && x.DateTime <= end)); |
| | | } |
| | | var pump3 = Ele.Where(x => x.Tag == "_0402010204012308007").ToList(); |
| | | foreach (var item in pump3) |
| | | { |
| | | Ele3.AddRange(item.TotalEle.Where(x => x.DateTime >= Str && x.DateTime <= end)); |
| | | } |
| | | var pump4 = Ele.Where(x => x.Tag == "_0402010204012408007").ToList(); |
| | | foreach (var item in pump4) |
| | | { |
| | | Ele4.AddRange(item.TotalEle.Where(x => x.DateTime >= Str && x.DateTime <= end)); |
| | | } |
| | | var pump5 = Ele.Where(x => x.Tag == "_0402010204012508007").ToList(); |
| | | foreach (var item in pump5) |
| | | { |
| | | Ele5.AddRange(item.TotalEle.Where(x => x.DateTime >= Str && x.DateTime <= end)); |
| | | } |
| | | var Result1 = Ele1.Last().Value - Ele1.First().Value; |
| | | var Result2 = Ele2.Last().Value - Ele2.First().Value; |
| | | var Result3 = Ele3.Last().Value - Ele3.First().Value; |
| | | var Result4 = Ele4.Last().Value - Ele4.First().Value; |
| | | var Result5 = Ele5.Last().Value - Ele5.First().Value; |
| | | return Result1 + Result2 + Result3 + Result4 + Result5; |
| | | /* var Ele = GetEleData(); |
| | | List<Model.Ele> Ele1 = new List<Model.Ele>(); |
| | | List<Model.Ele> Ele2 = new List<Model.Ele>(); |
| | | List<Model.Ele> Ele3 = new List<Model.Ele>(); |
| | | List<Model.Ele> Ele4 = new List<Model.Ele>(); |
| | | List<Model.Ele> Ele5 = new List<Model.Ele>();*/ |
| | | /* var pump1 = Ele.Where(x => x.Tag == "_0402010204040193046").ToList(); |
| | | foreach (var item in pump1) |
| | | { |
| | | Ele1.AddRange(item.TotalEle.Where(x => x.DateTime >= Str && x.DateTime <= end)); |
| | | } |
| | | var pump2 = Ele.Where(x => x.Tag == "_0402010204040193047").ToList(); |
| | | foreach (var item in pump2) |
| | | { |
| | | Ele2.AddRange(item.TotalEle.Where(x => x.DateTime >= Str && x.DateTime <= end)); |
| | | } |
| | | var pump3 = Ele.Where(x => x.Tag == "_0402010204012308007").ToList(); |
| | | foreach (var item in pump3) |
| | | { |
| | | Ele3.AddRange(item.TotalEle.Where(x => x.DateTime >= Str && x.DateTime <= end)); |
| | | } |
| | | var pump4 = Ele.Where(x => x.Tag == "_0402010204012408007").ToList(); |
| | | foreach (var item in pump4) |
| | | { |
| | | Ele4.AddRange(item.TotalEle.Where(x => x.DateTime >= Str && x.DateTime <= end)); |
| | | } |
| | | var pump5 = Ele.Where(x => x.Tag == "_0402010204012508007").ToList(); |
| | | foreach (var item in pump5) |
| | | { |
| | | Ele5.AddRange(item.TotalEle.Where(x => x.DateTime >= Str && x.DateTime <= end)); |
| | | } |
| | | var Result1 = Ele1.Last().Value - Ele1.First().Value; |
| | | var Result2 = Ele2.Last().Value - Ele2.First().Value; |
| | | var Result3 = Ele3.Last().Value - Ele3.First().Value; |
| | | var Result4 = Ele4.Last().Value - Ele4.First().Value; |
| | | var Result5 = Ele5.Last().Value - Ele5.First().Value; |
| | | return Result1 + Result2 + Result3 + Result4 + Result5;*/ |
| | | return 0; |
| | | } |
| | | } |
| | | } |