public RUSAData processRUSAData(RUSAData data) { WebLogger.Info("RUSA process", VotGES.Logger.LoggerSource.service); data.Result = new List<RUSAResult>(); ProcessRUSAData.processEqualData(data); ProcessRUSAData.processDiffData(data); foreach (RUSAResult result in data.EqResult) { data.Result.Add(result); } foreach (RUSAResult result in data.DiffResult) { data.Result.Add(result); } return data; }
public static void processDiffData(RUSAData data) { List<RUSADiffPower.RusaChoice> choices=RUSADiffPower.getChoices(data.getAvailGenerators(), data.Napor, data.Power,3); foreach (RUSADiffPower.RusaChoice choice in choices) { double rashod=choice.rashod; data.DiffResult = new List<RUSAResult>(); RUSAResult result=new RUSAResult(); result.Rashod = rashod; result.Sostav = new Dictionary<int, double>(); foreach (KeyValuePair<int, double> de in choice.sostav) { if (de.Value > 0) { result.Sostav.Add(de.Key, de.Value); } } result.KPD = RashodTable.KPD(data.Power, data.Napor, rashod)*100; data.EqResult.Add(result); } }
public static void processEqualData(RUSAData data) { SortedList<double,List<int>> sostavs=RUSA.getOptimRashodsFull(data.Power, data.Napor, data.getAvailGenerators()); int index=0; data.EqResult = new List<RUSAResult>(); foreach (KeyValuePair<double, List<int>> de in sostavs) { if (index == 3) break; index++; double rashod=de.Key; List<int> sostav=de.Value; RUSAResult result=new RUSAResult(); result.Rashod = rashod; result.Sostav = new Dictionary<int, double>(); foreach (int ga in sostav) { result.Sostav.Add(ga, data.Power / sostav.Count); } result.KPD = RashodTable.KPD(data.Power, data.Napor, rashod) * 100; data.EqResult.Add(result); } }
public void init(RUSADomainContext context) { this.context = context; CurrentData = new RUSAData(); CurrentData.GaAvail = new List<GAParams>(); for (int ga=1; ga <= 10; ga++) { GAParams p=new GAParams(); p.GaNumber = ga; p.Avail = true; CurrentData.GaAvail.Add(p); } CurrentData.Power = 300; CurrentData.Napor = 21; items=new Dictionary<int, TabItem>(); gridControls=new Dictionary<int, RUSAGridControl>(); items.Add(1, tab1); items.Add(2, tab2); items.Add(3, tab3); items.Add(4, tab4); items.Add(5, tab5); items.Add(6, tab6); items.Add(7, tab7); items.Add(8, tab8); items.Add(9, tab9); items.Add(10, tab10); gridControls.Add(1, grid1); gridControls.Add(2, grid2); gridControls.Add(3, grid3); gridControls.Add(4, grid4); gridControls.Add(5, grid5); gridControls.Add(6, grid6); gridControls.Add(7, grid7); gridControls.Add(8, grid8); gridControls.Add(9, grid9); gridControls.Add(10, grid10); }
public static void processEqualData(RUSAData data) { SortedList<double,List<int>> sostavs=RUSA.getOptimRashodsFull(data.Power, data.Napor, data.getAvailGenerators()); int index=0; data.EqResult = new List<RUSAResult>(); Dictionary<int, FullResultRUSARecord> FullResult = new Dictionary<int, FullResultRUSARecord>(); try { foreach (KeyValuePair<double, List<int>> de in sostavs) { index++; double rashod=de.Key; List<int> sostav=de.Value; RUSAResult result=new RUSAResult(); result.Rashod = rashod; result.Sostav = new Dictionary<int, double>(); foreach (int ga in sostav) { result.Sostav.Add(ga, data.Power / sostav.Count); } result.ProcessSostav(result.Sostav); result.Sostav = null; result.KPD = RashodTable.KPD(data.Power, data.Napor, rashod) * 100; result.Count = sostav.Count; if (!FullResult.ContainsKey(sostav.Count)) { data.EqResult.Add(result); FullResult.Add(sostav.Count, new FullResultRUSARecord()); FullResult[sostav.Count].Data = new List<RUSAResult>(); } FullResult[sostav.Count].Data.Add(result); FullResult[sostav.Count].CountGA = sostav.Count; } data.FullResultList = FullResult.Values.ToList(); } catch (Exception e) { Logger.Error("Ошибка при расчете РУСА "); Logger.Error(e.ToString()); } }
/// <summary> /// Асинхронно вызывает метод "processRUSAData" службы DomainService. /// </summary> /// <param name="data">Значение параметра "data" для данного действия.</param> /// <returns>Экземпляр операции, который может быть использован для управления асинхронным запросом.</returns> public InvokeOperation<RUSAData> processRUSAData(RUSAData data) { Dictionary<string, object> parameters = new Dictionary<string, object>(); parameters.Add("data", data); this.ValidateMethod("processRUSAData", parameters); return ((InvokeOperation<RUSAData>)(this.InvokeOperation("processRUSAData", typeof(RUSAData), parameters, true, null, null))); }
private void btnCalcRUSA_Click(object sender, RoutedEventArgs e) { InvokeOperation currentOper=context.processRUSAData(CurrentData, oper => { if (oper.IsCanceled) { return; } try { GlobalStatus.Current.StartProcess(); clear(); CurrentData = oper.Value; process(); } catch (Exception ex) { Logging.Logger.info(ex.ToString()); GlobalStatus.Current.ErrorLoad("Ошибка"); } finally { GlobalStatus.Current.StopLoad(); } }, null); GlobalStatus.Current.StartLoad(currentOper); }