protected override void RunActualProcess() { var dbProfiles = Services.SqlConnectionPreparer.GetDatabaseConnection(Stage.Raw, Constants.PresentSlice); dbProfiles.RecreateTable <LastgangBusinessAssignment>(); dbProfiles.BeginTransaction(); string filename = CombineForFlaSettings("BusinessRLMProfileAssignments.xlsx"); Info("Importing " + filename); ExcelHelper eh = new ExcelHelper(Services.Logger, MyStage); var arr = eh.ExtractDataFromExcel2(filename, 1, "A1", "G100", out var _); //read header var hdict = new Dictionary <string, int>(); for (var i = 0; i < arr.GetLength(1); i++) { var o = arr[0, i]; if (o == null) { continue; } hdict.Add(o.ToString(), i); } var usedKeys = new List <string>(); for (var row = 1; row < arr.GetLength(0); row++) { if (arr[row, hdict["Datei"]] == null) { continue; } var complexname = Helpers.GetString(arr[row, hdict["ComplexName"]]); var businessname = Helpers.GetString(arr[row, hdict["BusinessName"]]); var erzeugerid = Helpers.GetString(arr[row, hdict["ErzeugerID"]]); var standort = Helpers.GetString(arr[row, hdict["Standort"]]); string key = complexname + " " + businessname + " " + erzeugerid + " " + standort + " "; if (usedKeys.Contains(key) && !key.Contains("none")) { throw new FlaException("key already used: " + key); } usedKeys.Add(key); var fn = Helpers.GetString(arr[row, hdict["Datei"]]); var rba = new LastgangBusinessAssignment(fn, complexname, businessname, erzeugerid) { Standort = standort }; dbProfiles.Save(rba); } dbProfiles.CompleteTransaction(); var assignments = dbProfiles.Fetch <LastgangBusinessAssignment>(); var rlmprofiles = dbProfiles.Fetch <RlmProfile>(); var assignedNames = assignments.Select(x => x.RlmFilename).ToList(); var allFound = true; foreach (var profile in rlmprofiles) { if (!assignedNames.Contains(profile.Name)) { Info("Unassigned Profile: " + profile.Name + "\t" + profile.SumElectricity); allFound = false; } } if (!allFound) { throw new Exception("Unassigend rlm profiles"); } foreach (var rlm in assignments) { if (rlm.ComplexName == "none") { continue; } if (string.IsNullOrWhiteSpace(rlm.BusinessName + rlm.Standort + rlm.ErzeugerID)) { throw new FlaException("assignment without full info: " + rlm.RlmFilename); } } }
protected override void RunActualProcess() { SqlConnection.RecreateTable <LastgangBusinessAssignment>(Stage.ProfileImport, Constants.PresentSlice); var dbProfiles = SqlConnection.GetDatabaseConnection(Stage.ProfileImport, Constants.PresentSlice).Database; dbProfiles.BeginTransaction(); const string filename = @"U:\SimZukunft\RawDataForMerging\BusinessRLMProfileAssignments.xlsx"; Log(MessageType.Info, "Importing " + filename); var arr = ExcelHelper.ExtractDataFromExcel(filename, 1, "A1", "G100"); //read header var hdict = new Dictionary <string, int>(); for (var i = 0; i < arr.GetLength(1) - 1; i++) { var o = arr[1, i + 1]; if (o == null) { continue; } hdict.Add(o.ToString(), i + 1); } for (var row = 2; row < arr.GetLength(0); row++) { if (arr[row, hdict["Datei"]] == null) { continue; } var rba = new LastgangBusinessAssignment(Helpers.GetStringNotNull(arr[row, hdict["Datei"]]), Helpers.GetStringNotNull(arr[row, hdict["ComplexName"]]), Helpers.GetStringNotNull(arr[row, hdict["BusinessName"]]), Helpers.GetStringNotNull(arr[row, hdict["ErzeugerID"]]) ) { Standort = Helpers.GetStringNotNull(arr[row, hdict["Standort"]]) }; dbProfiles.Save(rba); } dbProfiles.CompleteTransaction(); var assignments = dbProfiles.Fetch <LastgangBusinessAssignment>(); var rlmprofiles = dbProfiles.Fetch <RlmProfile>(); var assignedNames = assignments.Select(x => x.RlmFilename).ToList(); var allFound = true; foreach (var profile in rlmprofiles) { if (!assignedNames.Contains(profile.Name)) { Log(MessageType.Info, profile.Name + "\t" + profile.SumElectricity); allFound = false; } } if (!allFound) { throw new Exception("Unassigend rlm profiles"); } }
private bool MakeErzeugerLastgang([NotNull][ItemNotNull] List <House> houses, [NotNull] LastgangBusinessAssignment assignment, [NotNull][ItemNotNull] List <RlmProfile> profiles, [NotNull] SaveableEntry <Prosumer> sa) { var selectedhouses = houses.Where(x => x.ErzeugerIDs.Contains(assignment.ErzeugerID)).ToList(); if (selectedhouses.Count != 1) { if (selectedhouses.Count == 0) { Log(MessageType.Info, "No house found for " + assignment.ErzeugerID); return(true); } throw new Exception(selectedhouses.Count + " houses for erzeuger id " + assignment.ErzeugerID); } Hausanschluss ha = selectedhouses[0].Hausanschluss[0]; //odo: adjust with new factors var rlmrprofile = profiles.Single(x => x.Name == assignment.RlmFilename); var pa = new Prosumer(selectedhouses[0].HouseGuid, assignment.RlmFilename, ProsumerType.LastgangGeneration, null, selectedhouses[0].GebäudeObjectIDs[0], ha.HausanschlussGuid, ha.ObjectID) { Profile = rlmrprofile.Profile }; sa.AddRow(pa); return(false); }