private void AggiornaCmbStagioni() { //seleziono la stagione nella combo string name = DefinedNames.GetSheetName("CT_TORINO"); if (name != "") { Excel.Worksheet ws = Workbook.Sheets[name]; DefinedNames definedNames = new DefinedNames(ws.Name); Range rng = definedNames.Get("CT_TORINO", "STAGIONE", Date.SuffissoDATA1, Date.GetSuffissoOra(1)); bool enabledEvents = Workbook.Application.EnableEvents; if (enabledEvents) { Workbook.Application.EnableEvents = false; } ((RibbonDropDown)Globals.Ribbons.GetRibbon <ToolsExcelRibbon>().Controls["cmbStagione"]).SelectedItemIndex = (int)(ws.Range[rng.ToString()].Value ?? 1) - 1; if (enabledEvents) { Workbook.Application.EnableEvents = true; } } }
private void btnImporta_Click(object sender, EventArgs e) { SplashScreen.Show(); Workbook.ScreenUpdating = false; Workbook.Application.Calculation = Excel.XlCalculation.xlCalculationManual; Sheet.Protected = false; foreach (var c in _commonInfo) { if (tvEntitaInformazioni.Nodes[c.SiglaEntita].Checked) { SplashScreen.UpdateStatus("Importo dati per " + c.DesEntita); string foglio = DefinedNames.GetSheetName(c.SiglaEntita); Excel.Worksheet ws = Workbook.Sheets[foglio]; DefinedNames definedNames = new DefinedNames(foglio); foreach (var kv in c.Info) { if (tvEntitaInformazioni.Nodes[c.SiglaEntita].Nodes[kv.Key.ToString()].Checked) { var values = from r in _tabellaImportXML.AsEnumerable() where r["SiglaEntita"].Equals(c.SiglaEntita) && r["SiglaInformazione"].Equals(kv.Key) && (r["Data"].ToString().Substring(0, 8).CompareTo(Workbook.DataAttiva.ToString("yyyyMMdd")) >= 0) select new { Data = r["Data"], Valore = r["Valore"] }; foreach (var val in values) { string suffissoData = Date.GetSuffissoData(val.Data.ToString()); string suffissoOra = Date.GetSuffissoOra(val.Data); Range rng = new Range(); if (definedNames.TryGet(out rng, c.SiglaEntita, kv.Key, suffissoData, suffissoOra)) { object tmpVal = null; double conv; if (Double.TryParse(val.Valore.ToString(), out conv)) { tmpVal = conv; } else { tmpVal = val.Valore; } ws.Range[rng.ToString()].Value = tmpVal; } } } } } } Sheet.Protected = true; Workbook.Application.Calculation = Excel.XlCalculation.xlCalculationAutomatic; SplashScreen.Close(); Workbook.ScreenUpdating = true; }
/// <summary> /// Funizione ereditata dall'interfaccia che viene richiamata nella parte base dell'algoritmo per eseguire l'ottimizzazione. /// </summary> /// <param name="siglaEntita">Entità da ottimizzare.</param> public virtual void EseguiOttimizzazione(object siglaEntita) { try { Workbook.Application.Run("wbSetGeneralOptions", Arg3: "120", Arg13: "1"); _sheet = DefinedNames.GetSheetName(siglaEntita); _definedNames = new DefinedNames(_sheet, DefinedNames.InitType.CheckNaming); string desEntita = (from r in Workbook.Repository[DataBase.TAB.CATEGORIA_ENTITA].AsEnumerable() where r["IdApplicazione"].Equals(Workbook.IdApplicazione) && r["SiglaEntita"].Equals(siglaEntita) select r["DesEntita"].ToString()).First(); _entitaProprieta.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND SiglaProprieta LIKE '%GIORNI_STRUTTURA' AND IdApplicazione = " + Workbook.IdApplicazione; if (_entitaProprieta.Count > 0) { _dataFine = Workbook.DataAttiva.AddDays(int.Parse(_entitaProprieta[0]["Valore"].ToString())); } else { _dataFine = Workbook.DataAttiva.AddDays(Struct.intervalloGiorni); } CheckObj chkObj = _definedNames.Checks.Where(chk => chk.SiglaEntita.Equals(siglaEntita)).FirstOrDefault(); if (chkObj != null) { Excel.Range rng = Workbook.Sheets[_sheet].Range[chkObj.Range.ToString()]; foreach (Excel.Range cell in rng.Cells) { if (cell.Value.Equals("ERRORE")) { SplashScreen.Close(); System.Windows.Forms.MessageBox.Show("Non è possibile ottimizzare l'UP selezionata perché sono presenti degli errori. Controllare i check!", Simboli.NomeApplicazione + " - ATTENZIONE!!!", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Warning); return; } } } OmitConstraints(); AddAdjust(siglaEntita); AddConstraints(siglaEntita); AddOpt(siglaEntita); SplashScreen.Close(); Execute(siglaEntita); DeleteExistingAdjust(); Workbook.InsertLog(PSO.Core.DataBase.TipologiaLOG.LogGenera, "Eseguita ottimizzazione " + desEntita); } catch (Exception e) { SplashScreen.Close(); Workbook.Application.ScreenUpdating = true; System.Windows.Forms.MessageBox.Show("Si è verificato un errore nel processo di ottimizzazione. Il messaggio dice '" + e.Message + "'", Simboli.NomeApplicazione + " - ERRORE!!!", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error); } }
public override bool AzioneInformazione(object siglaEntita, object siglaAzione, object azionePadre, DateTime giorno, string[] mercati, object parametro = null) { bool isGenera = azionePadre.Equals("GENERA"); if (isGenera) { azionePadre = "CARICA"; } bool o = base.AzioneInformazione(siglaEntita, siglaAzione, azionePadre, giorno, mercati, parametro); if (isGenera) { azionePadre = "GENERA"; } //non ho fatto nulla, la connessione non si apre e l'azione padre è CARICA... rientro nel caso del caricamento da XML if (o == false && !DataBase.OpenConnection() && azionePadre.Equals("CARICA")) { //tipo file da caricare string tf = siglaAzione.ToString(); DataTable azioneInformazione = CaricaXML("pathExportFile" + tf, "formatoNomeFile" + tf, siglaEntita, tf) ?? new DataTable(); if (azioneInformazione.Rows.Count == 0) { DataBase.InsertApplicazioneRiepilogo(siglaEntita, siglaAzione, giorno, false); return(false); } else { string sheet = DefinedNames.GetSheetName(siglaEntita); DefinedNames definedNames = new DefinedNames(sheet); ScriviInformazione(siglaEntita, azioneInformazione.DefaultView, definedNames); DataBase.InsertApplicazioneRiepilogo(siglaEntita, siglaAzione, giorno); } } DataBase.CloseConnection(); string name = DefinedNames.GetSheetName(siglaEntita); Sheet s = new Sheet(Workbook.Sheets[name]); s.AggiornaColori(); return(o); }
public void AggiornaPrevisione(object siglaEntita) { DateTime dataFine = Workbook.DataAttiva.AddDays(Struct.intervalloGiorni); int mainRow = _definedNames.GetRowByName(Date.SuffissoDATA1); int mainCol = 0; DataView entitaInformazione = new DataView(Workbook.Repository[DataBase.TAB.ENTITA_INFORMAZIONE]); entitaInformazione.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND IdApplicazione = " + Workbook.IdApplicazione; string nomeFoglio = DefinedNames.GetSheetName(siglaEntita); Excel.Worksheet ws = Workbook.WB.Sheets[nomeFoglio]; DefinedNames definedNames = new DefinedNames(nomeFoglio, DefinedNames.InitType.Naming); //copio nel main il valore dei totali foreach (DataRowView info in entitaInformazione) { int col = definedNames.GetFirstCol(); int row = definedNames.GetRowByNameSuffissoData(siglaEntita, info["SiglaInformazione"], Date.SuffissoDATA1); Array rngTotali = ws.Range[Range.GetRange(row, col + 25, Struct.intervalloGiorni)].Value as Array; int i = 1; for (DateTime giorno = Workbook.DataAttiva; giorno < dataFine; giorno = giorno.AddDays(1)) { Range[] rngGiornoGas = Sheet.GetRangeGiornoGas(giorno, info, definedNames); Array primoGiorno = ws.Range[rngGiornoGas[0].ToString()].Value as Array; Array secondoGiorno = ws.Range[rngGiornoGas[1].ToString()].Value as Array; if (!(primoGiorno.OfType <double>().Any() || secondoGiorno.OfType <double>().Any())) { rngTotali.SetValue(null, i, 1); } i++; } mainCol = _definedNames.GetColFromName(siglaEntita); Excel.Range rngMain = Workbook.Main.Range[Range.GetRange(mainRow, mainCol, Struct.intervalloGiorni)]; rngMain.Value = rngTotali; } }
/// <summary> /// Controlla da LocalDB se ho cambiato entità dal ciclo precedente. Se sì, aggiorno la sigla entità, il nome del foglio, la data fine ed inizializzo la struttra dei nomi con questi parametri. Tutti parametri sono passati per riferimento e servono nei passaggi successivi dell'algoritmo. /// </summary> /// <param name="info">La riga delle informazioni da cui prendere i dati</param> /// <param name="siglaEntita">La variabile su cui salvare la Sigla Entità</param> /// <param name="nomeFoglio">La variabile su cui salvare il nome del foglio</param> /// <param name="dataFine">La variabile su cui salvare la data fine</param> /// <param name="definedNames">La struttura dei nomi inizializzata sul nuovo foglio</param> private void Helper(DataRowView info, ref string siglaEntita, ref string nomeFoglio, ref DateTime dataFine, ref DefinedNames definedNames) { if (!info["SiglaEntita"].Equals(siglaEntita)) { siglaEntita = info["SiglaEntita"].ToString(); _entitaProprieta.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND SiglaProprieta LIKE '%GIORNI_STRUTTURA' AND IdApplicazione = " + Workbook.IdApplicazione; if (_entitaProprieta.Count > 0) { dataFine = Workbook.DataAttiva.AddDays(int.Parse(_entitaProprieta[0]["Valore"].ToString())); } else { dataFine = Workbook.DataAttiva.AddDays(Struct.intervalloGiorni); } nomeFoglio = DefinedNames.GetSheetName(siglaEntita); if (definedNames == null || nomeFoglio != definedNames.Sheet) { definedNames = new DefinedNames(nomeFoglio); } } }
protected override bool EsportaAzioneInformazione(object siglaEntita, object siglaAzione, object desEntita, object desAzione, DateTime dataRif, string[] mercati) { DataView entitaAzione = Workbook.Repository[DataBase.TAB.ENTITA_AZIONE].DefaultView; entitaAzione.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND SiglaAzione = '" + siglaAzione + "' AND IdApplicazione = " + Workbook.IdApplicazione; if (entitaAzione.Count == 0) { return(false); } DataView categoriaEntita = Workbook.Repository[DataBase.TAB.CATEGORIA_ENTITA].DefaultView; categoriaEntita.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND IdApplicazione = " + Workbook.IdApplicazione; object codiceRUP = categoriaEntita[0]["CodiceRUP"]; DataView entitaProprieta = Workbook.Repository[DataBase.TAB.ENTITA_PROPRIETA].DefaultView; entitaProprieta.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND SiglaProprieta = 'IMP_COD_IF' AND IdApplicazione = " + Workbook.IdApplicazione; object codiceIF = entitaProprieta[0]["Valore"]; DataView entitaAzioneInformazione = Workbook.Repository[DataBase.TAB.ENTITA_AZIONE_INFORMAZIONE].DefaultView; entitaAzioneInformazione.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND SiglaAzione = '" + siglaAzione + "' AND IdApplicazione = " + Workbook.IdApplicazione; string nomeFoglio = DefinedNames.GetSheetName(siglaEntita); DefinedNames definedNames = new DefinedNames(nomeFoglio); switch (siglaAzione.ToString()) { case "E_MP_MGP": DataTable dt = new DataTable("E_MP_MGP") { Columns = { { "Campo1", typeof(string) }, { "Campo2", typeof(string) }, { "UP", typeof(string) }, { "Campo3", typeof(string) }, { "Data", typeof(string) }, { "Ora", typeof(string) }, { "Informazione", typeof(string) }, { "Valore", typeof(string) } } }; string suffissoData = Date.GetSuffissoData(dataRif); foreach (DataRowView info in entitaAzioneInformazione) { object siglaEntitaRif = (info["SiglaEntitaRif"] is DBNull ? info["SiglaEntita"] : info["SiglaEntitaRif"]); Excel.Worksheet ws = Workbook.Sheets[nomeFoglio]; Range range = definedNames.Get(siglaEntitaRif, info["SiglaInformazione"], suffissoData); range.Extend(0, definedNames.GetDayOffset(suffissoData) - 1); Excel.Range rng = ws.Range[range.ToString()]; object[,] tmpVal = rng.Value; object[] values = tmpVal.Cast <object>().ToArray(); for (int i = 0, length = values.Length; i < length; i++) { DataRow row = dt.NewRow(); row["Campo1"] = nomeFoglio == "Iren Termo" ? "AHRP" : "AIHRP"; row["Campo2"] = "Prod"; row["UP"] = codiceIF; if (definedNames.IsDefined(siglaEntitaRif, "UNIT_COMM")) { row["Campo3"] = "17"; } else { row["Campo3"] = "NA"; } row["Data"] = dataRif.ToString("yyyy/MM/dd"); row["Ora"] = i + 1; row["Informazione"] = info["SiglaInformazione"].Equals("PMAX") ? "Pmax" : "Pmin"; row["Valore"] = values[i] ?? 0; dt.Rows.Add(row); } } string pathStr = PreparePath(Workbook.GetUsrConfigElement("pathExportMP_MGP")); if (Directory.Exists(pathStr)) { if (!ExportToCSV(System.IO.Path.Combine(pathStr, "AEM_" + (nomeFoglio == "Iren Termo" ? "AHRP_" : "AIHRP_") + codiceIF + "_" + dataRif.ToString("yyyyMMdd") + "_" + DateTime.Now.ToString("yyyyMMddHHmmssfffffff") + ".csv"), dt)) { return(false); } } else { System.Windows.Forms.MessageBox.Show("Il percorso '" + pathStr + "' non è raggiungibile.", Simboli.NomeApplicazione, System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error); return(false); } break; } return(true); }
/// <summary> /// Launcher dell'azione di caricamento/generazione dei dati. /// </summary> /// <param name="siglaEntita">Sigla dell'entità di cui caricare/generare i dati.</param> /// <param name="siglaAzione">Sigla dell'azione per cui è richiesto il caricamento dei dati.</param> /// <param name="azionePadre">Sigla dell'azione padre (di solito CARICAx o GENERA).</param> /// <param name="giorno">Data di riferimento.</param> /// <param name="mercati">Mercati da considerare nell'azione.</param> /// <param name="parametro">Parametro da specificare alla storedProcedure CARICA_AZIONE_INFORMAZIONE nel caso sia necessario.</param> /// <returns>True se il caricamento va a buon fine.</returns> public override bool AzioneInformazione(object siglaEntita, object siglaAzione, object azionePadre, DateTime giorno, string[] mercati, object parametro = null) { DefinedNames definedNames = new DefinedNames(DefinedNames.GetSheetName(siglaEntita)); try { AzzeraInformazione(siglaEntita, siglaAzione, definedNames, giorno, mercati, azionePadre.ToString().StartsWith("CARICA")); if (DataBase.OpenConnection()) { if (azionePadre.Equals("GENERA")) { if (mercati != null) { foreach (string mercato in mercati) { SpecMercato m = Simboli.MercatiMB["MB" + mercato]; ElaborazioneInformazione(siglaEntita, siglaAzione, definedNames, giorno, m.Inizio, Math.Min(Date.GetOreGiorno(giorno), m.Fine)); } } else { ElaborazioneInformazione(siglaEntita, siglaAzione, definedNames, giorno); } DataBase.InsertApplicazioneRiepilogo(siglaEntita, siglaAzione, giorno); } else { DataTable azioneInformazione = null; if (mercati != null) { azioneInformazione = DataBase.Select(DataBase.SP.CARICA_AZIONE_INFORMAZIONE, "@SiglaEntita=" + siglaEntita + ";@SiglaAzione=" + siglaAzione + ";@Parametro=" + String.Join(",", mercati) + ";@Data=" + giorno.ToString("yyyyMMdd")); } else { azioneInformazione = DataBase.Select(DataBase.SP.CARICA_AZIONE_INFORMAZIONE, "@SiglaEntita=" + siglaEntita + ";@SiglaAzione=" + siglaAzione + ";@Parametro=" + parametro + ";@Data=" + giorno.ToString("yyyyMMdd")); } if (azioneInformazione != null) { if (azioneInformazione.Rows.Count == 0) { DataBase.InsertApplicazioneRiepilogo(siglaEntita, siglaAzione, giorno, false); return(false); } else { ScriviInformazione(siglaEntita, azioneInformazione.DefaultView, definedNames); DataBase.InsertApplicazioneRiepilogo(siglaEntita, siglaAzione, giorno); } } } Sheet s = new Sheet(Workbook.Sheets[definedNames.Sheet]); s.AggiornaGrafici(); return(true); } else { if (azionePadre.Equals("GENERA")) { ElaborazioneInformazione(siglaEntita, siglaAzione, definedNames, giorno); Sheet s = new Sheet(Workbook.Sheets[definedNames.Sheet]); s.AggiornaGrafici(); return(true); } return(false); } } catch (Exception e) { Workbook.InsertLog(PSO.Core.DataBase.TipologiaLOG.LogErrore, "CaricaAzioneInformazione [" + siglaEntita + ", " + siglaAzione + "]: " + e.Message); System.Windows.Forms.MessageBox.Show(e.Message, Simboli.NomeApplicazione + " - ERRORE!!", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error); return(false); } }
protected override bool EsportaAzioneInformazione(object siglaEntita, object siglaAzione, object desEntita, object desAzione, DateTime dataRif, string[] mercati) { DataView entitaAzione = Workbook.Repository[DataBase.TAB.ENTITA_AZIONE].DefaultView; entitaAzione.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND SiglaAzione = '" + siglaAzione + "' AND IdApplicazione = " + Workbook.IdApplicazione; if (entitaAzione.Count == 0) { return(false); } DataView categoriaEntita = Workbook.Repository[DataBase.TAB.CATEGORIA_ENTITA].DefaultView; categoriaEntita.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND IdApplicazione = " + Workbook.IdApplicazione; object codiceRUP = categoriaEntita[0]["CodiceRUP"]; DataView entitaProprieta = Workbook.Repository[DataBase.TAB.ENTITA_PROPRIETA].DefaultView; entitaProprieta.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND SiglaProprieta = 'IMP_COD_IF' AND IdApplicazione = " + Workbook.IdApplicazione; object codiceIF = entitaProprieta[0]["Valore"]; DataView entitaAzioneInformazione = Workbook.Repository[DataBase.TAB.ENTITA_AZIONE_INFORMAZIONE].DefaultView; entitaAzioneInformazione.RowFilter = "SiglaEntitaRif = '" + siglaEntita + "' AND SiglaAzione = '" + siglaAzione + "' AND IdApplicazione = " + Workbook.IdApplicazione; string nomeFoglio = DefinedNames.GetSheetName(siglaEntita); DefinedNames definedNames = new DefinedNames(nomeFoglio, DefinedNames.InitType.Naming); Excel.Worksheet ws = Workbook.Sheets[nomeFoglio]; switch (siglaAzione.ToString()) { case "E_UNIT_COMM": DataTable dt = new DataTable("E_UNIT_COMM") { Columns = { { "Campo1", typeof(string) }, { "Campo2", typeof(string) }, { "UP", typeof(string) }, { "Campo3", typeof(string) }, { "Data", typeof(string) }, { "Ora", typeof(string) }, { "Campo4", typeof(string) }, { "UnitComm", typeof(string) }, { "Campo5", typeof(string) } } }; string suffissoData = Date.GetSuffissoData(dataRif); int oreData = Date.GetOreGiorno(dataRif); foreach (DataRowView info in entitaAzioneInformazione) { object siglaEntitaRif = (info["SiglaEntitaRif"] is DBNull ? siglaEntita: info["SiglaEntitaRif"]); Range rng = definedNames.Get(siglaEntitaRif, info["SiglaInformazione"], suffissoData).Extend(colOffset: oreData); //object[,] values = ws.Range[rng.ToString()].Value; //bool empty = true; //foreach (object value in values) //{ // if(value != null) // { // empty = false; // break; // } //} //if (!empty) //{ for (int i = 0; i < rng.Columns.Count; i++) { DataRow row = dt.NewRow(); row["Campo1"] = "ASSET"; row["Campo2"] = "Produzione"; row["UP"] = codiceIF; row["Campo3"] = "NA"; row["Data"] = dataRif.ToString("dd/MM/yyyy"); row["Ora"] = (i + 1).ToString("00") + ".00"; row["Campo4"] = "ASSETTO"; row["UnitComm"] = ws.Range[rng.Columns[i].ToString()].Value; row["Campo5"] = DateTime.Now.ToString("dd/MM/yyyy HH:mm"); dt.Rows.Add(row); } //} } string pathStr = PreparePath(Workbook.GetUsrConfigElement("pathCaricatoreImpianti")); if (Directory.Exists(pathStr)) { if (dt.AsEnumerable().Any(r => r["UnitComm"] != DBNull.Value) && ExportToCSV(System.IO.Path.Combine(pathStr, "AEM_ASSET_" + codiceIF + "_" + dataRif.ToString("yyyyMMdd") + "_" + DateTime.Now.ToString("yyyyMMddHHmmssfffffff") + ".csv"), dt)) { return(true); } } else { System.Windows.Forms.MessageBox.Show("Il percorso '" + pathStr + "' non è raggiungibile.", Simboli.NomeApplicazione, System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error); } break; } return(false); }
protected bool CreaOfferteXML_GME(object siglaEntita, object siglaAzione, string exportPath, DateTime dataRif) { try { string nomeFoglio = DefinedNames.GetSheetName(siglaEntita); DefinedNames definedNames = new DefinedNames(nomeFoglio); Excel.Worksheet ws = Workbook.Sheets[nomeFoglio]; string suffissoData = Date.GetSuffissoData(dataRif); int oreGiorno = Date.GetOreGiorno(dataRif); DataView categoriaEntita = Workbook.Repository[DataBase.TAB.CATEGORIA_ENTITA].DefaultView; categoriaEntita.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND IdApplicazione = " + Workbook.IdApplicazione; object codiceRUP = categoriaEntita[0]["CodiceRUP"]; DataView entitaAzioneInformazione = Workbook.Repository[DataBase.TAB.ENTITA_AZIONE_INFORMAZIONE].DefaultView; entitaAzioneInformazione.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND SiglaAzione ='" + siglaAzione + "' AND SiglaInformazione LIKE 'OFFERTA_MGP_E%' AND IdApplicazione = " + Workbook.IdApplicazione; DataView entitaProprieta = Workbook.Repository[DataBase.TAB.ENTITA_PROPRIETA].DefaultView; entitaProprieta.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND SiglaProprieta = 'COMPANY_NAME' AND IdApplicazione = " + Workbook.IdApplicazione; object companyName = entitaProprieta[0]["Valore"]; entitaProprieta.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND SiglaProprieta = 'COMPANY_IDENTIFIER' AND IdApplicazione = " + Workbook.IdApplicazione; object companyID = entitaProprieta[0]["Valore"]; XNamespace ns = XNamespace.Get("urn:XML-PIPE"); XNamespace xsi = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance"); XNamespace xsd = XNamespace.Get("http://www.w3.org/2001/XMLSchema"); XNamespace schemaLocation = XNamespace.Get("urn:XML-PIPE PIPEDocument.xsd"); string referenceNumber = codiceRUP.ToString().Replace("_", "") + "_" + DateTime.Now.ToString("yyyyMMddHHmmss"); XElement PIPEDocument = new XElement(ns + "PIPEDocument", new XAttribute("ReferenceNumber", referenceNumber.Length > 30 ? referenceNumber.Substring(0, 30) : referenceNumber), new XAttribute("CreationDate", DateTime.Now.ToString("yyyyMMddHHmmss")), new XAttribute("Version", "1.0"), new XAttribute(XNamespace.Xmlns + "xsi", xsi), new XAttribute(XNamespace.Xmlns + "xsd", xsd), new XAttribute(xsi + "schemaLocation", schemaLocation), new XElement(ns + "TradingPartnerDirectory", new XElement(ns + "Sender", new XElement(ns + "TradingPartner", new XAttribute("PartnerType", "Market Participant"), new XElement(ns + "CompanyName", companyName), new XElement(ns + "CompanyIdentifier", companyID) ) ), new XElement(ns + "Recipient", new XElement(ns + "TradingPartner", new XAttribute("PartnerType", "Operator"), new XElement(ns + "CompanyName", "GME SPA"), new XElement(ns + "CompanyIdentifier", "IDGME") ) ) ) ); entitaProprieta.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND SiglaProprieta = 'OFFERTA_MGP_TIPO_OFFERTA' AND IdApplicazione = " + Workbook.IdApplicazione; foreach (DataRowView info in entitaAzioneInformazione) { string gradino = Regex.Match(info["SiglaInformazione"].ToString(), @"\d+").Value; object siglaEntitaRif = info["SiglaEntitaRif"] is DBNull ? siglaEntita : info["SiglaEntitaRif"]; Range rngEnergia = definedNames.Get(siglaEntitaRif, "OFFERTA_MGP_E" + gradino).Extend(colOffset: oreGiorno); Range rngPrezzo = definedNames.Get(siglaEntitaRif, "OFFERTA_MGP_P" + gradino).Extend(colOffset: oreGiorno); for (int i = 0; i < oreGiorno; i++) { decimal valoreOfferta = GetDecimal(ws, rngEnergia.Columns[i]); // (decimal)(ws.Range[rngEnergia.Columns[i].ToString()].Value ?? 0); decimal prezzoOfferta = GetDecimal(ws, rngPrezzo.Columns[i]); // (decimal)(ws.Range[rngPrezzo.Columns[i].ToString()].Value ?? 0); if (valoreOfferta != 0) { object tipoOfferta = entitaProprieta[0]["Valore"].Equals("MISTA") ? (valoreOfferta < 0 ? "ACQ" : "VEN") : entitaProprieta[0]["Valore"]; XElement bidSubmittal = new XElement(ns + "BidSubmittal", new XAttribute("MarketParticipantNumber", codiceRUP + "_" + dataRif.ToString("yyyyMMdd") + "_" + (i + 1) + "_G" + gradino), new XAttribute("ReplacementIndicator", "Yes"), new XAttribute("PredefinedOffer", "No"), new XAttribute("Purpose", tipoOfferta.Equals("VEN") ? "Sell" : "Buy"), new XElement(ns + "Market", "MGP"), new XElement(ns + "Date", dataRif.ToString("yyyyMMdd")), new XElement(ns + "Hour", i + 1), new XElement(ns + "UnitReferenceNumber", codiceRUP), new XElement(ns + "BidQuantity", new XAttribute("UnitOfMeasure", "MWh"), Math.Abs(valoreOfferta).ToString(CultureInfo.InstalledUICulture)), new XElement(ns + "EnergyPrice", prezzoOfferta.ToString(CultureInfo.InstalledUICulture)) ); PIPEDocument.Add(new XElement(ns + "PIPTransaction", bidSubmittal)); } } } XDocument offerteSuggerite = new XDocument(new XDeclaration("1.0", "ISO-8859-1", "yes"), PIPEDocument ); string filename = "Suggerite_MGP_" + codiceRUP.ToString() + "_GME.xml"; offerteSuggerite.Save(Path.Combine(exportPath, filename)); return(true); } catch { return(false); } }
protected bool CreaOfferteSuggeriteXML(object siglaEntita, object siglaAzione, string exportPath, DateTime dataRif, string[] mercati) { try { string nomeFoglio = DefinedNames.GetSheetName(siglaEntita); DefinedNames definedNames = new DefinedNames(nomeFoglio); Excel.Worksheet ws = Workbook.Sheets[nomeFoglio]; string suffissoData = Date.GetSuffissoData(dataRif); int oreGiorno = Date.GetOreGiorno(dataRif); DataView categoriaEntita = Workbook.Repository[DataBase.TAB.CATEGORIA_ENTITA].DefaultView; categoriaEntita.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND IdApplicazione = " + Workbook.IdApplicazione; object codiceRUP = categoriaEntita[0]["CodiceRUP"]; //bool isTermo = categoriaEntita[0]["SiglaCategoria"].Equals("IREN_60T"); DataView entitaParametro = Workbook.Repository[DataBase.TAB.ENTITA_PARAMETRO].DefaultView; entitaParametro.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND idParametro = 903 AND CONVERT(DataIV, System.Int32) <= " + dataRif.ToString("yyyyMMdd") + " AND CONVERT(DataFV, System.Int32) >= " + dataRif.ToString("yyyyMMdd") + " AND IdApplicazione = " + Workbook.IdApplicazione; //decimal calcoloPPA = (decimal)entitaParametro[0]["Valore"]; XNamespace ns = XNamespace.Get("urn:XML-BIDMGM"); XNamespace xsi = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance"); XNamespace schemaLocation = XNamespace.Get("urn:XML-BIDMGM BM_SuggestedOfferMSD.xsd"); string referenceNumber = codiceRUP.ToString().Replace("_", "") + "_" + DateTime.Now.ToString("yyyyMMddHHmmss"); foreach (string mercato in mercati) { XElement suggested = new XElement(ns + "Suggested"); // verifico il mercato MB e le ore di quel mercato SpecMercato m = Simboli.MercatiMB["MB" + mercato]; //controllo se ci sono dei vincoli di orario int oraInizio = m.Inizio - 1; int oraFine = Math.Min(oreGiorno, m.Fine); XElement coordinate = new XElement(ns + "Coordinate", new XAttribute("Mercato", "MB" + mercato), new XAttribute("IDUnit", codiceRUP), new XAttribute("FlowDate", dataRif.ToString("yyyyMMdd")) ); //cambioassetto Range rng = new Range(); Range rng1 = new Range(); string prezzo = ""; string energia = ""; if (definedNames.TryGet(out rng, siglaEntita, "CAMBIO_ASSETTO_MB")) { //rng.StartColumn -= 1; prezzo = (ws.Range[rng.ToString()].Value ?? "0").ToString().Replace(".", ","); energia = "0"; XElement gradino = new XElement(ns + "CambioAssetto"); for (int j = oraInizio; j < oraFine; j++) { gradino.Add(new XElement(ns + "SG1", (j + 1), new XAttribute("PRE", prezzo), new XAttribute("QUA", energia), new XAttribute("AZIONE", "VEN") ) ); } coordinate.Add(gradino); } //spegnimento rng = definedNames.Get(siglaEntita, "OFFERTA_MB_G0AE", suffissoData).Extend(colOffset: oreGiorno); rng1 = definedNames.Get(siglaEntita, "OFFERTA_MB_G0AP", suffissoData).Extend(colOffset: oreGiorno); energia = "0"; prezzo = "0"; if (!ws.Range[rng.ToString()].EntireRow.Hidden) { XElement gradino = new XElement(ns + "Spegnimento"); for (int j = oraInizio; j < oraFine; j++) { energia = (ws.Range[rng.Columns[j].ToString()].Value ?? "0").ToString().Replace(".", ","); prezzo = (ws.Range[rng1.Columns[j].ToString()].Value ?? "0").ToString().Replace(".", ","); gradino.Add(new XElement(ns + "SG1", (j + 1), new XAttribute("PRE", prezzo), new XAttribute("QUA", energia), new XAttribute("AZIONE", "ACQ") ) ); } coordinate.Add(gradino); } //minimo rng = definedNames.Get(siglaEntita, "OFFERTA_MB_G0VE", suffissoData).Extend(colOffset: oreGiorno); rng1 = definedNames.Get(siglaEntita, "OFFERTA_MB_G0VP", suffissoData).Extend(colOffset: oreGiorno); energia = "0"; prezzo = "0"; if (!ws.Range[rng.ToString()].EntireRow.Hidden) { XElement gradino = new XElement(ns + "Minimo"); for (int j = oraInizio; j < oraFine; j++) { energia = (ws.Range[rng.Columns[j].ToString()].Value ?? "0").ToString().Replace(".", ","); prezzo = (ws.Range[rng1.Columns[j].ToString()].Value ?? "0").ToString().Replace(".", ","); gradino.Add(new XElement(ns + "SG1", (j + 1), new XAttribute("PRE", prezzo), new XAttribute("QUA", energia), new XAttribute("AZIONE", "VEN") ) ); } coordinate.Add(gradino); } //riserva secondaria rng = definedNames.Get(siglaEntita, "OFFERTA_MB_G4VE", suffissoData).Extend(colOffset: oreGiorno); rng1 = definedNames.Get(siglaEntita, "OFFERTA_MB_G4VP", suffissoData).Extend(colOffset: oreGiorno); energia = "0"; prezzo = "0"; if (!ws.Range[rng.ToString()].EntireRow.Hidden) { XElement gradino = new XElement(ns + "RisSecondaria"); for (int j = oraInizio; j < oraFine; j++) { energia = (ws.Range[rng.Columns[j].ToString()].Value ?? "0").ToString().Replace(".", ","); prezzo = (ws.Range[rng1.Columns[j].ToString()].Value ?? "0").ToString().Replace(".", ","); gradino.Add(new XElement(ns + "SG1", (j + 1), new XAttribute("PRE", prezzo), new XAttribute("QUA", energia), new XAttribute("AZIONE", "VEN") ) ); } rng = definedNames.Get(siglaEntita, "OFFERTA_MB_G4AE", suffissoData).Extend(colOffset: oreGiorno); rng1 = definedNames.Get(siglaEntita, "OFFERTA_MB_G4AP", suffissoData).Extend(colOffset: oreGiorno); energia = "0"; prezzo = "0"; for (int j = oraInizio; j < oraFine; j++) { energia = (ws.Range[rng.Columns[j].ToString()].Value ?? "0").ToString().Replace(".", ","); prezzo = (ws.Range[rng1.Columns[j].ToString()].Value ?? "0").ToString().Replace(".", ","); gradino.Add(new XElement(ns + "SG2", (j + 1), new XAttribute("PRE", prezzo), new XAttribute("QUA", energia), new XAttribute("AZIONE", "ACQ") ) ); } coordinate.Add(gradino); } //altri servizi XElement altriServizi = new XElement(ns + "AltriServizi"); bool aggiungi = false; int sgId = 0; for (int k = 1; k < 4; k++) { rng = definedNames.Get(siglaEntita, "OFFERTA_MB_G" + k + "VE", suffissoData).Extend(colOffset: oreGiorno); rng1 = definedNames.Get(siglaEntita, "OFFERTA_MB_G" + k + "VP", suffissoData).Extend(colOffset: oreGiorno); energia = "0"; prezzo = "0"; if (!ws.Range[rng.ToString()].EntireRow.Hidden) { aggiungi = true; sgId++; for (int j = oraInizio; j < oraFine; j++) { energia = (ws.Range[rng.Columns[j].ToString()].Value ?? "0").ToString().Replace(".", ","); prezzo = (ws.Range[rng1.Columns[j].ToString()].Value ?? "0").ToString().Replace(".", ","); XElement sg = new XElement(ns + ("SG" + sgId), (j + 1), new XAttribute("PRE", prezzo), new XAttribute("QUA", energia), new XAttribute("AZIONE", "VEN") ); /*if (calcoloPPA == 1 && k == 1 && j == 0) * sg.Add(new XAttribute("RifStand", "MI1"));*/ altriServizi.Add(sg); } rng = definedNames.Get(siglaEntita, "OFFERTA_MB_G" + k + "AE", suffissoData).Extend(colOffset: oreGiorno); rng1 = definedNames.Get(siglaEntita, "OFFERTA_MB_G" + k + "AP", suffissoData).Extend(colOffset: oreGiorno); energia = "0"; prezzo = "0"; sgId++; for (int j = oraInizio; j < oraFine; j++) { energia = (ws.Range[rng.Columns[j].ToString()].Value ?? "0").ToString().Replace(".", ","); prezzo = (ws.Range[rng1.Columns[j].ToString()].Value ?? "0").ToString().Replace(".", ","); altriServizi.Add(new XElement(ns + ("SG" + sgId), (j + 1), new XAttribute("PRE", prezzo), new XAttribute("QUA", energia), new XAttribute("AZIONE", "ACQ") ) ); } } } if (aggiungi) { coordinate.Add(altriServizi); } //accensione rng = new Range(); energia = "0"; prezzo = "0"; if (definedNames.TryGet(out rng, siglaEntita, "ACCENSIONE_MB")) { //AGGIUNTO FIL rng = rng.Extend(colOffset: oreGiorno); //prezzo = (ws.Range[rng.ToString()].Value ?? "0").ToString().Replace(".", ","); XElement gradino = new XElement(ns + "Accensione"); for (int j = oraInizio; j < oraFine; j++) { //FIL //energia = (ws.Range[rng.Columns[j].ToString()].Value ?? "0").ToString().Replace(".", ","); object[,] prz = ws.Range[rng.Columns[j].ToString()].MergeArea.Value; //TODO controllare se non esiste mergearea...va in errore!! prezzo = (prz[1, 1] ?? "0").ToString().Replace(".", ","); gradino.Add(new XElement(ns + "SG1", (j + 1), new XAttribute("PRE", prezzo), new XAttribute("QUA", energia), new XAttribute("AZIONE", "VEN") ) ); } coordinate.Add(gradino); } suggested.Add(coordinate); XDocument offerteSuggerite = new XDocument(new XDeclaration("1.0", "ISO-8859-1", "yes"), new XElement(ns + "BMTransaction-SUGMSD", new XAttribute("ReferenceNumber", referenceNumber.Length > 30 ? referenceNumber.Substring(0, 30) : referenceNumber), new XAttribute(XNamespace.Xmlns + "xsi", xsi), new XAttribute(xsi + "schemaLocation", schemaLocation), suggested ) ); string filename = "Suggerite_MB_" + codiceRUP.ToString() + "_" + DateTime.Now.ToString("yyyyMMddhhmmss") + "_MB" + mercato + ".xml"; offerteSuggerite.Save(Path.Combine(exportPath, filename)); } return(true); } catch { return(false); } }
public void RunExport() { DataTable categoriaEntita = Workbook.Repository[DataBase.TAB.CATEGORIA_ENTITA]; DataView categorie = Workbook.Repository[DataBase.TAB.CATEGORIA].DefaultView; DataView entitaInformazione = Workbook.Repository[DataBase.TAB.ENTITA_INFORMAZIONE].DefaultView; foreach (DataRow entita in categoriaEntita.Rows) { object siglaEntita = entita["SiglaEntita"]; string nomeFoglio = DefinedNames.GetSheetName(siglaEntita); if (nomeFoglio != "") { DefinedNames definedNames = new DefinedNames(nomeFoglio); Excel.Worksheet ws = Workbook.Sheets[nomeFoglio]; bool hasData0H24 = definedNames.HasData0H24; entitaInformazione.RowFilter = "(SiglaEntita = '" + siglaEntita + "' OR SiglaEntitaRif = '" + siglaEntita + "') AND Editabile = '1' AND IdApplicazione = " + Workbook.IdApplicazione; DataTable entitaProprieta = Workbook.Repository[DataBase.TAB.ENTITA_PROPRIETA]; int intervalloGiorni = (from r in entitaProprieta.AsEnumerable() where r["IdApplicazione"].Equals(Workbook.IdApplicazione) && r["SiglaEntita"].Equals(siglaEntita) && r["SiglaProprieta"].ToString().EndsWith("GIORNI_STRUTTURA") select int.Parse(r["Valore"].ToString())).FirstOrDefault(); DateTime dataFine = Workbook.DataAttiva.AddDays(Math.Max( (from r in entitaProprieta.AsEnumerable() where r["IdApplicazione"].Equals(Workbook.IdApplicazione) && r["SiglaEntita"].Equals(siglaEntita) && r["SiglaProprieta"].ToString().EndsWith("GIORNI_STRUTTURA") select int.Parse(r["Valore"].ToString())).FirstOrDefault(), Struct.intervalloGiorni)); foreach (DataRowView info in entitaInformazione) { object siglaEntitaRif = info["SiglaEntitaRif"] is DBNull ? info["SiglaEntita"] : info["SiglaEntitaRif"]; if (Struct.tipoVisualizzazione == "O") { //prima cella della riga da salvare (non considera Data0H24) Range rng = definedNames.Get(siglaEntitaRif, info["SiglaInformazione"], Date.SuffissoDATA1).Extend(colOffset: Date.GetOreIntervallo(dataFine)); Handler.StoreEdit(ws.Range[rng.ToString()], 0, true, DataBase.TAB.EXPORT_XML); } else { for (DateTime giorno = Workbook.DataAttiva; giorno <= dataFine; giorno = giorno.AddDays(1)) { Range rng = definedNames.Get(siglaEntitaRif, info["SiglaInformazione"], Date.GetSuffissoData(giorno)).Extend(colOffset: Date.GetOreGiorno(giorno)); Handler.StoreEdit(ws.Range[rng.ToString()], 0, true, DataBase.TAB.EXPORT_XML); } } } } } //preparo l'export string directory = Path.Combine(Workbook.Repository.Applicazione["PathDatiComuniEmergenza"].ToString(), Simboli.NomeApplicazione.Replace(" ", "")); string fileName = Path.Combine(directory, Simboli.NomeApplicazione.Replace(" ", "").ToUpperInvariant() + "_" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".xml"); if (!Directory.Exists(directory)) { Directory.CreateDirectory(directory); } DataTable export = Workbook.Repository[DataBase.TAB.EXPORT_XML]; export.WriteXml(fileName); //svuoto la tabella alla fine dell'utilizzo export.Clear(); }
private void btnApplica_Click(object sender, EventArgs e) { Workbook.ScreenUpdating = false; Sheet.Protected = false; btnApplica.Enabled = false; btnAnnulla.Enabled = false; btnMeteo.Enabled = false; if (_toProcessDates.Count == 0) { MessageBox.Show("Non è stata selezionata alcuna data...", Simboli.NomeApplicazione, MessageBoxButtons.OK, MessageBoxIcon.Warning); } else if (treeViewUP.Nodes.OfType <TreeNode>().Where(n => n.Checked).ToArray().Length == 0) { MessageBox.Show("Non è stata selezionata alcuna unità...", Simboli.NomeApplicazione, MessageBoxButtons.OK, MessageBoxIcon.Warning); } else { SplashScreen.Show(); Workbook.Application.EnableEvents = false; Workbook.ScreenUpdating = false; Workbook.Application.Calculation = Excel.XlCalculation.xlCalculationManual; bool caricaOrGenera = false; bool loaded = false; bool g_mp_mgp = false; DataView entitaProprieta = Workbook.Repository[DataBase.TAB.ENTITA_PROPRIETA].DefaultView; ThroughAllNodes(treeViewAzioni.Nodes, nodoAzione => { if (loaded && Regex.Match(nodoAzione.Name, @"\w[^\d]+").Value == "GENERA") { Workbook.Application.CalculateFull(); Workbook.ScreenUpdating = false; loaded = false; } if (nodoAzione.Checked && nodoAzione.Nodes.Count == 0) { TreeNode[] nodiEntita = treeViewUP.Nodes.OfType <TreeNode>().Where(node => node.Checked).ToArray(); _azioni.RowFilter = "SiglaAzione = '" + nodoAzione.Name + "' AND IdApplicazione = " + Workbook.IdApplicazione; if (!g_mp_mgp) { g_mp_mgp = nodoAzione.Name == "G_MP_MGP"; } ThroughAllNodes(treeViewUP.Nodes, nodoEntita => { foreach (DateTime date in _toProcessDates) { string suffissoData = Date.GetSuffissoData(date); if (nodoEntita.Checked && nodoEntita.Nodes.Count == 0) { entitaProprieta.RowFilter = "SiglaEntita = '" + nodoEntita.Name + "' AND SiglaProprieta LIKE '%GIORNI_STRUTTURA' AND IdApplicazione = " + Workbook.IdApplicazione; int intervalloGiorni = Struct.intervalloGiorni; if (entitaProprieta.Count > 0) { intervalloGiorni = int.Parse("" + entitaProprieta[0]["Valore"]); } if (date <= Workbook.DataAttiva.AddDays(intervalloGiorni)) { string nomeFoglio = DefinedNames.GetSheetName(nodoEntita.Name); bool presente; DataView entitaAzione = new DataView(Workbook.Repository[DataBase.TAB.ENTITA_AZIONE]); entitaAzione.RowFilter = "SiglaEntita = '" + nodoEntita.Name + "' AND SiglaAzione = '" + nodoAzione.Name + "' AND IdApplicazione = " + Workbook.IdApplicazione; if (entitaAzione.Count > 0 && (entitaAzione[0]["Giorno"] is DBNull || entitaAzione[0]["Giorno"].ToString().Contains(Date.GetSuffissoData(date)))) { SplashScreen.UpdateStatus("[" + date.ToShortDateString() + "] " + nodoAzione.Parent.Text + " " + nodoAzione.Text + ": " + nodoEntita.Text); //string[] mercati = null; string[] mercati = null; if (Workbook.Repository.Applicazione["ModificaDinamica"].Equals("1")) { mercati = groupMercati.Controls .OfType <CheckBox>() .Where(c => c.Checked) .Select(c => Regex.Match(c.Text, @"\d+").Value) .OrderBy(s => s) .ToArray(); } else if (Workbook.IdApplicazione == 18) { mercati = new string[] { Regex.Match(Workbook.Mercato, @"\d+").Value }; } switch (Regex.Match(nodoAzione.Parent.Name, @"\w[^\d]+").Value) { case "CARICA": presente = _carica.AzioneInformazione(nodoEntita.Name, nodoAzione.Name, nodoAzione.Parent.Name, date, mercati); _r.AggiornaRiepilogo(nodoEntita.Name, nodoAzione.Name, presente, date); caricaOrGenera = true; loaded = true; break; case "GENERA": presente = _carica.AzioneInformazione(nodoEntita.Name, nodoAzione.Name, nodoAzione.Parent.Name, date, mercati); _r.AggiornaRiepilogo(nodoEntita.Name, nodoAzione.Name, presente, date); caricaOrGenera = true; break; case "ESPORTA": presente = _esporta.RunExport(nodoEntita.Name, nodoAzione.Name, nodoEntita.Text, nodoAzione.Text, date, mercati); if (presente) { _r.AggiornaRiepilogo(nodoEntita.Name, nodoAzione.Name, presente, date); } break; } if (_azioni[0]["Relazione"] != DBNull.Value && Struct.visualizzaRiepilogo) { string[] azioneRelazione = _azioni[0]["Relazione"].ToString().Split(';'); DefinedNames definedNames = new DefinedNames("Main"); foreach (string relazione in azioneRelazione) { _azioni.RowFilter = "SiglaAzione = '" + relazione + "' AND IdApplicazione = " + Workbook.IdApplicazione; Range rng = new Range(definedNames.GetRowByName(nodoEntita.Name), definedNames.GetColFromName(relazione, suffissoData)); if (Workbook.Main.Range[rng.ToString()].Interior.ColorIndex != 2) { Workbook.Main.Range[rng.ToString()].Value = "RI" + _azioni[0]["Gerarchia"]; Style.RangeStyle(Workbook.Main.Range[rng.ToString()], fontSize: 8, bold: true, foreColor: 3, backColor: 6, align: Excel.XlHAlign.xlHAlignCenter); } } _azioni.RowFilter = "SiglaAzione = '" + nodoAzione.Name + "' AND IdApplicazione = " + Workbook.IdApplicazione; } } } } } }); switch (Regex.Match(nodoAzione.Parent.Name, @"\w[^\d]+").Value) { case "CARICA": Workbook.InsertLog(Core.DataBase.TipologiaLOG.LogCarica, "Carica: " + nodoAzione.Text); break; case "GENERA": Workbook.InsertLog(Core.DataBase.TipologiaLOG.LogGenera, "Genera: " + nodoAzione.Text); break; case "ESPORTA": Workbook.InsertLog(Core.DataBase.TipologiaLOG.LogEsporta, "Esporta: " + nodoAzione.Text); break; } } }); Workbook.Application.Calculation = Excel.XlCalculation.xlCalculationAutomatic; if (caricaOrGenera) { SplashScreen.UpdateStatus("Salvo su DB"); Sheet.SalvaModifiche(); DataBase.SalvaModificheDB(); if (Workbook.IdApplicazione == 5 && g_mp_mgp) { SplashScreen.UpdateStatus("Aggiorno rendimenti"); Workbook.Application.Calculation = Excel.XlCalculation.xlCalculationManual; ThroughAllNodes(treeViewUP.Nodes, nodoEntita => { if (nodoEntita.Checked && nodoEntita.Nodes.Count == 0) { _categoriaEntita.RowFilter = "SiglaEntita = '" + nodoEntita.Name + "' AND IdApplicazione = " + Workbook.IdApplicazione; if (_categoriaEntita[0]["SiglaCategoria"].Equals("IREN_60T")) { foreach (DateTime date in _toProcessDates) { _carica.AzioneInformazione(nodoEntita.Name, "RENDIMENTO", "CARICA", date, null); } } } }); Workbook.Application.Calculation = Excel.XlCalculation.xlCalculationAutomatic; SplashScreen.UpdateStatus("Salvo su DB"); Sheet.SalvaModifiche(); DataBase.SalvaModificheDB(); } } Workbook.Application.EnableEvents = true; Workbook.ScreenUpdating = true; SplashScreen.Close(); } btnApplica.Enabled = true; btnAnnulla.Enabled = true; btnMeteo.Enabled = true; Sheet.Protected = true; Workbook.ScreenUpdating = true; }
protected bool CreaDatiTopiciUnitaXML(object siglaEntita, object siglaAzione, string exportPath, DateTime dataRif) { try { string nomeFoglio = DefinedNames.GetSheetName(siglaEntita); DefinedNames definedNames = new DefinedNames(nomeFoglio); Excel.Worksheet ws = Workbook.Sheets[nomeFoglio]; string suffissoData = Date.GetSuffissoData(dataRif); int oreGiorno = Date.GetOreGiorno(dataRif); DataView categoriaEntita = Workbook.Repository[DataBase.TAB.CATEGORIA_ENTITA].DefaultView; categoriaEntita.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND IdApplicazione = " + Workbook.IdApplicazione; object codiceRUP = categoriaEntita[0]["CodiceRUP"]; //bool isTermo = categoriaEntita[0]["SiglaCategoria"].Equals("IREN_60T"); DataView entitaAzioneInformazione = Workbook.Repository[DataBase.TAB.ENTITA_AZIONE_INFORMAZIONE].DefaultView; entitaAzioneInformazione.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND SiglaAzione = '" + siglaAzione + "' AND IdApplicazione = " + Workbook.IdApplicazione; XNamespace ns = XNamespace.Get("urn:XML-BIDMGM"); XElement unit = new XElement(ns + "Unit", new XAttribute("StartDate", dataRif.ToString("yyyyMMdd")), new XAttribute("IDUnit", codiceRUP)); for (int i = 0; i < oreGiorno; i++) { string[] values = new string[7]; int j = 0; foreach (DataRowView info in entitaAzioneInformazione) { object siglaEntitaRif = info["SiglaEntitaRif"] is DBNull ? siglaEntita : info["SiglaEntitaRif"]; Range rng = definedNames.Get(siglaEntitaRif, info["SiglaInformazione"], suffissoData, Date.GetSuffissoOra(i + 1)); values[j++] = Math.Abs(GetDecimal(ws, rng)).ToString(CultureInfo.InstalledUICulture); } unit.Add( new XElement(ns + "PR", i + 1, new XAttribute("OPTIMAL", values[0] ?? "0"), new XAttribute("MaxPower", values[1] ?? "0"), new XAttribute("MinTech", values[2] ?? "0"), new XAttribute("ReqPow", values[3] ?? "0"), new XAttribute("COST", values[4] ?? "0"), new XAttribute("COST2", values[5] ?? "0"), new XAttribute("PumpingPower", values[6] ?? "0") ) ); } XNamespace xsi = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance"); XNamespace schemaLocation = XNamespace.Get("urn:XML-BIDMGM BM_DatiTopiciUnita.xsd"); XDocument datiTopiciUnita = new XDocument(new XDeclaration("1.0", "ISO-8859-1", "yes"), new XElement(ns + "BMTransaction-DTU", new XAttribute("ReferenceNumber", codiceRUP.ToString().Replace("_", "") + "_" + DateTime.Now.ToString("yyyyMMddHHmmss")), new XAttribute(XNamespace.Xmlns + "xsi", xsi), new XAttribute(xsi + "schemaLocation", schemaLocation), new XElement(ns + "DatiTopiciUnit", unit)) ); string filename = "DatiTopici_" + codiceRUP.ToString().ToUpperInvariant() + "_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xml"; datiTopiciUnita.Save(Path.Combine(exportPath, filename)); return(true); } catch { return(false); } }
protected bool CreaOfferteSuggeriteXML(object siglaEntita, object siglaAzione, string exportPath, DateTime dataRif) { try { string nomeFoglio = DefinedNames.GetSheetName(siglaEntita); DefinedNames definedNames = new DefinedNames(nomeFoglio); Excel.Worksheet ws = Workbook.Sheets[nomeFoglio]; string suffissoData = Date.GetSuffissoData(dataRif); int oreGiorno = Date.GetOreGiorno(dataRif); DataView categoriaEntita = Workbook.Repository[DataBase.TAB.CATEGORIA_ENTITA].DefaultView; categoriaEntita.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND IdApplicazione = " + Workbook.IdApplicazione; object codiceRUP = categoriaEntita[0]["CodiceRUP"]; DataView entitaAzioneInformazione = Workbook.Repository[DataBase.TAB.ENTITA_AZIONE_INFORMAZIONE].DefaultView; entitaAzioneInformazione.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND SiglaAzione ='" + siglaAzione + "' AND SiglaInformazione LIKE 'OFFERTA_MGP_E%' AND IdApplicazione = " + Workbook.IdApplicazione; DataView entitaProprieta = Workbook.Repository[DataBase.TAB.ENTITA_PROPRIETA].DefaultView; entitaProprieta.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND SiglaProprieta = 'OFFERTA_MGP_TIPO_OFFERTA' AND IdApplicazione = " + Workbook.IdApplicazione; XNamespace ns = XNamespace.Get("urn:XML-BIDMGM"); XNamespace xsi = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance"); XNamespace schemaLocation = XNamespace.Get("urn:XML-BIDMGM BM_SuggestedOffer.xsd"); string referenceNumber = codiceRUP.ToString().Replace("_", "") + "_" + DateTime.Now.ToString("yyyyMMddHHmmss"); XElement BMTransaction = new XElement(ns + "BMTransaction-SUG", new XAttribute("ReferenceNumber", referenceNumber.Length > 30 ? referenceNumber.Substring(0, 30) : referenceNumber), new XAttribute(XNamespace.Xmlns + "xsi", xsi), new XAttribute(xsi + "schemaLocation", schemaLocation), new XElement(ns + "Suggested", new XElement(ns + "Coordinate", new XAttribute("Mercato", "MGP"), new XAttribute("IDUnit", codiceRUP), new XAttribute("FlowDate", dataRif.ToString("yyyyMMdd")) ) ) ); foreach (DataRowView info in entitaAzioneInformazione) { string gradino = Regex.Match(info["SiglaInformazione"].ToString(), @"\d+").Value; object siglaEntitaRif = info["SiglaEntitaRif"] is DBNull ? siglaEntita : info["SiglaEntitaRif"]; Range rngEnergia = definedNames.Get(siglaEntitaRif, "OFFERTA_MGP_E" + gradino).Extend(colOffset: oreGiorno); Range rngPrezzo = definedNames.Get(siglaEntitaRif, "OFFERTA_MGP_P" + gradino).Extend(colOffset: oreGiorno); for (int i = 0; i < oreGiorno; i++) { decimal valoreOfferta = GetDecimal(ws, rngEnergia.Columns[i]); // (decimal)(ws.Range[rngEnergia.Columns[i].ToString()].Value ?? 0); decimal prezzoOfferta = GetDecimal(ws, rngPrezzo.Columns[i]); // (decimal)(ws.Range[rngPrezzo.Columns[i].ToString()].Value ?? 0); object tipoOfferta = entitaProprieta[0]["Valore"].Equals("MISTA") ? (valoreOfferta < 0 ? "ACQ" : "VEN") : entitaProprieta[0]["Valore"]; XElement sg = new XElement(ns + ("SG" + gradino), new XAttribute("PRE", prezzoOfferta.ToString(CultureInfo.InstalledUICulture)), new XAttribute("QUA", Math.Abs(valoreOfferta).ToString(CultureInfo.InstalledUICulture)), new XAttribute("AZIONE", tipoOfferta), (i + 1) ); BMTransaction.Element(ns + "Suggested").Element(ns + "Coordinate").Add(sg); } } XDocument offerteSuggerite = new XDocument(new XDeclaration("1.0", "ISO-8859-1", "yes"), BMTransaction ); string filename = "Suggerite_MGP_" + codiceRUP.ToString() + "_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xml"; offerteSuggerite.Save(Path.Combine(exportPath, filename)); return(true); } catch { return(false); } }
protected override bool EsportaAzioneInformazione(object siglaEntita, object siglaAzione, object desEntita, object desAzione, DateTime dataRif, string[] mercati) { DataView entitaAzione = Workbook.Repository[DataBase.TAB.ENTITA_AZIONE].DefaultView; entitaAzione.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND SiglaAzione = '" + siglaAzione + "' AND IdApplicazione = " + Workbook.IdApplicazione; if (entitaAzione.Count == 0) { return(false); } switch (siglaAzione.ToString()) { case "E_VDT": string pathStr = PreparePath(Workbook.GetUsrConfigElement("pathExportSisComTerna")); if (Directory.Exists(pathStr)) { if (!CreaVariazioneDatiTecniciXML(siglaEntita, pathStr)) { return(false); } } else { System.Windows.Forms.MessageBox.Show("Il percorso '" + pathStr + "' non è raggiungibile.", Simboli.NomeApplicazione + " - ERRORE!!", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error); return(false); } break; case "MAIL": Workbook.ScreenUpdating = false; string nomeFoglio = DefinedNames.GetSheetName(siglaEntita); DefinedNames definedNames = new DefinedNames(nomeFoglio, DefinedNames.InitType.Naming); var oldActiveWindow = Globals.ThisWorkbook.Application.ActiveWindow; Globals.ThisWorkbook.Worksheets[nomeFoglio].Activate(); List <Range> export = new List <Range>(); //titolo entità export.Add(new Range(definedNames.GetRowByNameSuffissoData(siglaEntita, "T", Date.SuffissoDATA1), definedNames.GetFirstCol() - 2).Extend(colOffset: 2 + Date.GetOreGiorno(Workbook.DataAttiva))); //data export.Add(new Range(Globals.ThisWorkbook.Application.ActiveWindow.SplitRow - 1, definedNames.GetFirstCol() - 2).Extend(colOffset: 2 + Date.GetOreGiorno(Workbook.DataAttiva))); //ora export.Add(new Range(Globals.ThisWorkbook.Application.ActiveWindow.SplitRow, definedNames.GetFirstCol() - 2).Extend(colOffset: 2 + Date.GetOreGiorno(Workbook.DataAttiva))); DataView entitaAzioneInformazione = Workbook.Repository[DataBase.TAB.ENTITA_AZIONE_INFORMAZIONE].DefaultView; entitaAzioneInformazione.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND SiglaAzione = '" + siglaAzione + "' AND IdApplicazione = " + Workbook.IdApplicazione; foreach (DataRowView info in entitaAzioneInformazione) { export.Add(new Range(definedNames.GetRowByNameSuffissoData(siglaEntita, info["SiglaInformazione"], Date.SuffissoDATA1), definedNames.GetFirstCol() - 2).Extend(colOffset: 2 + Date.GetOreGiorno(Workbook.DataAttiva))); } if (InviaMail(nomeFoglio, siglaEntita, export)) { } oldActiveWindow.Activate(); Workbook.ScreenUpdating = true; break; } return(true); }
protected bool CreaVariazioneDatiTecniciXML(object siglaEntita, string exportPath) { try { DataView entitaAssetto = Workbook.Repository[DataBase.TAB.ENTITA_ASSETTO].DefaultView; entitaAssetto.RowFilter = "SiglaEntita = '" + siglaEntita + "'"; string nomeFoglio = DefinedNames.GetSheetName(siglaEntita); DefinedNames definedNames = new DefinedNames(nomeFoglio); Excel.Worksheet ws = Workbook.Sheets[nomeFoglio]; DateTime giorno = Workbook.DataAttiva; string suffissoData = Date.GetSuffissoData(giorno); int oreGiorno = Date.GetOreGiorno(Workbook.DataAttiva); DataView categoriaEntita = Workbook.Repository[DataBase.TAB.CATEGORIA_ENTITA].DefaultView; categoriaEntita.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND IdApplicazione = " + Workbook.IdApplicazione; object codiceRUP = categoriaEntita[0]["CodiceRUP"]; bool isTermo = categoriaEntita[0]["SiglaCategoria"].Equals("IREN_60T"); XElement inserisci = new XElement("INSERISCI"); bool salta3aOra = oreGiorno == 25; int ora = 0; for (int i = 0; i < oreGiorno; i++) { if (salta3aOra && ora == 2) { salta3aOra = false; continue; } string start = giorno.ToString("yyyy-MM-dd") + "T" + ora.ToString("00") + ":00:00"; string end = giorno.ToString("yyyy-MM-dd") + "T" + (oreGiorno - i > 1 ? (ora + 1).ToString("00") + ":00:00" : "23:59:00"); XElement vdt = new XElement("VDT", new XAttribute("DATAORAINIZIO", start), new XAttribute("DATAORAFINE", end), new XElement("CODICEETSO", codiceRUP), new XElement("IDMOTIVAZIONE", "VDT_VIN_TEC_UNI_PRO"), new XElement("NOTE", "Vincoli Tecnologici dell'Unita di Produzione") ); foreach (DataRowView assetto in entitaAssetto) { for (int j = 1; j <= (int)assetto["NumeroFasce"]; j++) { Range rng = definedNames.Get(siglaEntita, "PSMIN_ASSETTO" + assetto["Riferimento"] + "_FASCIA" + j, suffissoData, Date.GetSuffissoOra(i + 1)); Range rngCorr = definedNames.Get(siglaEntita, "PSMIN_CORRETTA_ASSETTO" + assetto["Riferimento"] + "_FASCIA" + j, suffissoData, Date.GetSuffissoOra(i + 1)); string psminVal = (ws.Range[rngCorr.ToString()].Value ?? ws.Range[rng.ToString()].Value).ToString().Replace(',', '.'); rng = definedNames.Get(siglaEntita, "PSMAX_ASSETTO" + assetto["Riferimento"] + "_FASCIA" + j, suffissoData, Date.GetSuffissoOra(i + 1)); rngCorr = definedNames.Get(siglaEntita, "PSMAX_CORRETTA_ASSETTO" + assetto["Riferimento"] + "_FASCIA" + j, suffissoData, Date.GetSuffissoOra(i + 1)); string psmaxVal = (ws.Range[rngCorr.ToString()].Value ?? ws.Range[rng.ToString()].Value).ToString().Replace(',', '.'); rng = definedNames.Get(siglaEntita, "PTMIN_ASSETTO" + assetto["Riferimento"] + "_FASCIA" + j, suffissoData, Date.GetSuffissoOra(i + 1)); string ptminVal = (ws.Range[rng.ToString()].Value).ToString().Replace(',', '.'); rng = definedNames.Get(siglaEntita, "PTMAX_ASSETTO" + assetto["Riferimento"] + "_FASCIA" + j, suffissoData, Date.GetSuffissoOra(i + 1)); string ptmaxVal = (ws.Range[rng.ToString()].Value).ToString().Replace(',', '.'); rng = definedNames.Get(siglaEntita, "TRISP_ASSETTO" + assetto["Riferimento"], suffissoData, Date.GetSuffissoOra(i + 1)); string trispVal = (ws.Range[rng.ToString()].Value).ToString().Replace(',', '.'); rng = definedNames.Get(siglaEntita, "GPA_ASSETTO" + assetto["Riferimento"], suffissoData, Date.GetSuffissoOra(i + 1)); string gpaVal = (ws.Range[rng.ToString()].Value).ToString().Replace(',', '.'); rng = definedNames.Get(siglaEntita, "GPD_ASSETTO" + assetto["Riferimento"], suffissoData, Date.GetSuffissoOra(i + 1)); string gpdVal = (ws.Range[rng.ToString()].Value).ToString().Replace(',', '.'); rng = definedNames.Get(siglaEntita, "TAVA_ASSETTO" + assetto["Riferimento"], suffissoData, Date.GetSuffissoOra(i + 1)); string tavaVal = (ws.Range[rng.ToString()].Value).ToString().Replace(',', '.'); rng = definedNames.Get(siglaEntita, "TARA_ASSETTO" + assetto["Riferimento"], suffissoData, Date.GetSuffissoOra(i + 1)); string taraVal = (ws.Range[rng.ToString()].Value).ToString().Replace(',', '.'); rng = definedNames.Get(siglaEntita, "BRS_ASSETTO" + assetto["Riferimento"], suffissoData, Date.GetSuffissoOra(i + 1)); string brsVal = (ws.Range[rng.ToString()].Value).ToString().Replace(',', '.'); string tderampaVal = null; if (isTermo) { rng = definedNames.Get(siglaEntita, "TDERAMPA_ASSETTO" + assetto["Riferimento"], suffissoData, Date.GetSuffissoOra(i + 1)); tderampaVal = (ws.Range[rng.ToString()].Value).ToString().Replace(',', '.'); } if (ptminVal != "" && ptmaxVal != "") { vdt.Add(new XElement("FASCIA", new XElement("PSMIN", psminVal), new XElement("PSMAX", psmaxVal), new XElement("ASSETTO", new XElement("IDASSETTO", assetto["IdAssetto"]), new XElement("PTMIN", ptminVal), new XElement("PTMAX", ptmaxVal), new XElement("TRISP", trispVal), new XElement("GPA", gpaVal), new XElement("GPD", gpdVal), new XElement("TAVA", tavaVal), new XElement("TARA", taraVal), new XElement("BRS", brsVal), (isTermo && tderampaVal != null ? new XElement("TDERAMPA", tderampaVal) : null) ) ) ); } } } if (isTermo) { Range rngProfiloPQNR = definedNames.Get(siglaEntita, "PQNR_PROFILO", suffissoData); if (ws.Range[rngProfiloPQNR.ToString()].Value == null) { SplashScreen.Close(); System.Windows.Forms.MessageBox.Show("Non è stato definito alcun profilo PQNR per l'UP " + siglaEntita + ": l'esportazione verrà interrotta per questa UP. Compilare il suo profilo per poter esportare.", Simboli.NomeApplicazione + " - ERRORE!!!", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error); SplashScreen.Show(); return(false); } XElement pqnr = new XElement("PQNR"); for (int j = 1; j <= 24; j++) { Range rng = definedNames.Get(siglaEntita, "PQNR" + j, suffissoData, Date.GetSuffissoOra(i + 1)); object pqnrVal = ws.Range[rng.ToString()].Value; if (pqnrVal != null) { pqnr.Add(new XElement("Q", pqnrVal.ToString())); } } vdt.Add(pqnr); } inserisci.Add(vdt); ora++; } XDocument variazioneDatiTecnici = new XDocument(new XDeclaration("1.0", "ISO-8859-1", "yes"), new XElement("FLUSSO", new XAttribute(XNamespace.Xmlns + "xsi", "http://www.w3.org/2001/XMLSchema-instance"), inserisci) ); string filename = "VDT_" + codiceRUP.ToString().ToUpperInvariant() + "_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xml"; variazioneDatiTecnici.Save(Path.Combine(exportPath, filename)); return(true); } catch (Exception e) { Workbook.InsertLog(PSO.Core.DataBase.TipologiaLOG.LogErrore, "SistemaComandi.Esporta.CreaVariazioneDatiTecniciXML [" + siglaEntita + "]: " + e.Message); return(false); } }
protected bool CreaOfferteSuggeriteXML(object siglaEntita, object siglaAzione, string exportPath, DateTime dataRif, string mercato) { try { string nomeFoglio = DefinedNames.GetSheetName(siglaEntita); DefinedNames definedNames = new DefinedNames(nomeFoglio); Excel.Worksheet ws = Workbook.Sheets[nomeFoglio]; string suffissoData = Date.GetSuffissoData(dataRif); int oreGiorno = Date.GetOreGiorno(dataRif); DataView categoriaEntita = Workbook.Repository[DataBase.TAB.CATEGORIA_ENTITA].DefaultView; categoriaEntita.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND IdApplicazione = " + Workbook.IdApplicazione + " AND Gerarchia is NULL"; object codiceRUP = categoriaEntita[0]["CodiceRUP"]; // Create an instance of the XmlSerializer class; // specify the type of object to be deserialized. XmlSerializer serializer = new XmlSerializer(typeof(BMTransactionSUG)); BMTransactionSUG bmt = new BMTransactionSUG(); if (Workbook.DaConsole) { bmt.ApplySendAutomaticSpecified = true; bmt.ApplySendAutomatic = YESNO.YES; bmt.OperatorCreator = Workbook.NomeUtente; } else { bmt.ApplySendAutomaticSpecified = false; } //schemalocation non viene creato nel file xml e non so come impstarlo // XNamespace schemaLocation = XNamespace.Get("urn:XML-BIDMGM BM_SuggestedOfferMSD.xsd"); //Data e ora creazione Offerta bmt.DataCreazione = (DateTime.Now.Date).ToString("yyyyMMdd"); bmt.OraCreazione = (DateTime.Now.TimeOfDay.TotalMilliseconds).ToString(); //bmt.OraCreazione = (DateTime.Now.TimeOfDay).ToString("HHmmss"); //Reference Number string referenceNumber = codiceRUP.ToString().Replace("_", "") + "_" + DateTime.Now.ToString("yyyyMMddHHmmss"); bmt.ReferenceNumber = referenceNumber; /* XNamespace ns = XNamespace.Get("urn:XML-BIDMGM"); * XNamespace xsi = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance"); * XNamespace schemaLocation = XNamespace.Get("urn:XML-BIDMGM BM_SuggestedOfferMSD.xsd"); */ //Dictionary<string, SpecMercato> Mi = new Dictionary<string, SpecMercato>(); List <Tuple <string, TimeSpan, TimeSpan, int, bool> > mercatoMI = new List <Tuple <string, TimeSpan, TimeSpan, int, bool> >(); mercatoMI = Simboli.MercatiMI; //Oggetto offerta suggerita bmt.Suggested = new Suggested(); // Numero delle Entità selezionate (in questo metodo sempre una) oggetto del mercato. //TODO INSERIRE TUTTE LE ENTITA' SELEZIONATE int numEntità = 1; // verifico il mercato MI e le ore di quel mercato //controllo se ci sono dei vincoli di orario // Prima ora di mercato int oraInizio = mercatoMI.Where(x => x.Item1 == "MI" + mercato).FirstOrDefault().Item4; int oraFine = oreGiorno; // Intervallo ore oggetto di mercato (fine-inizio) int intervalloOreMercato = oraFine - oraInizio + 1; // Array delle offete di mercato della unità selezionata bmt.Suggested.Coordinate = new SuggestedCoordinate[numEntità]; // Offeta di mercato di una UP/UC bmt.Suggested.Coordinate[0] = new SuggestedCoordinate(); // Data oggetto dell'offerta bmt.Suggested.Coordinate[0].FlowDate = dataRif.ToString("yyyyMMdd"); // ID dell'unità bmt.Suggested.Coordinate[0].IDUnit = codiceRUP.ToString(); // Mercato ElencoMercatiEnergia EnumMercato = (ElencoMercatiEnergia)Enum.Parse(typeof(ElencoMercatiEnergia), "MI" + mercato); bmt.Suggested.Coordinate[0].Mercato = EnumMercato; Range rngAV = new Range(); Range rngVe = new Range(); Range rngVp = new Range(); Range rngBi = new Range(); string prezzo = ""; string energia = ""; string codBil = ""; int sgId = 0; for (int k = 1; k < 5; k++) { /**/ rngAV = definedNames.Get(siglaEntita, "OFFERTA_MI" + mercato + "_G" + k + "TIPO", suffissoData).Extend(colOffset: oreGiorno); rngVe = definedNames.Get(siglaEntita, "OFFERTA_MI" + mercato + "_G" + k + "E", suffissoData).Extend(colOffset: oreGiorno); rngVp = definedNames.Get(siglaEntita, "OFFERTA_MI" + mercato + "_G" + k + "P", suffissoData).Extend(colOffset: oreGiorno); rngBi = definedNames.Get(siglaEntita, "OFFERTA_MI" + mercato + "_G" + k + "CB", suffissoData).Extend(colOffset: oreGiorno); energia = "0"; prezzo = "0"; if (!ws.Range[rngVe.ToString()].EntireRow.Hidden) { sgId++; switch (sgId) { case 1: // Array offerte ACQ/VEN per UP/UC Primo gradino bmt.Suggested.Coordinate[0].SG1 = new SuggestedCoordinateSG1[intervalloOreMercato]; for (int j = 0; j < intervalloOreMercato; j++) { // Dettaglio ACQ/VEN per ora j bmt.Suggested.Coordinate[0].SG1[j] = new SuggestedCoordinateSG1(); //Quantità energia = (ws.Range[rngVe.Columns[j].ToString()].Value ?? "0").ToString().Replace(".", ","); bmt.Suggested.Coordinate[0].SG1[j].QUA = energia; //Codice Bilanciamento codBil = (ws.Range[rngBi.Columns[j].ToString()].Value ?? "").ToString(); bmt.Suggested.Coordinate[0].SG1[j].BILANC = codBil; if (string.IsNullOrEmpty(codBil)) { prezzo = (ws.Range[rngVp.Columns[j].ToString()].Value ?? "0").ToString().Replace(".", ","); } else { prezzo = ""; } //Prezzo bmt.Suggested.Coordinate[0].SG1[j].PRE = prezzo; // Azione ACQ/VEN // bmt.Suggested.Coordinate[0].SG1[j].AZIONE = TipoAzione.ACQ; if (string.IsNullOrEmpty(prezzo) && string.IsNullOrEmpty(energia)) { bmt.Suggested.Coordinate[0].SG1[j].AZIONESpecified = false; } else { bmt.Suggested.Coordinate[0].SG1[j].AZIONESpecified = true; bmt.Suggested.Coordinate[0].SG1[j].AZIONE = (TipoAzione)Enum.Parse(typeof(TipoAzione), (ws.Range[rngAV.Columns[j].ToString()].Value ?? "0").ToString()); } // Ora oggetto del mercato. bmt.Suggested.Coordinate[0].SG1[j].Value = (oraInizio + j).ToString(); } break; case 2: // Array offerte ACQ/VEN per UP/UC Secondo gradino bmt.Suggested.Coordinate[0].SG2 = new SuggestedCoordinateSG2[intervalloOreMercato]; for (int j = 0; j < intervalloOreMercato; j++) { // Dettaglio ACQ/VEN per ora j bmt.Suggested.Coordinate[0].SG2[j] = new SuggestedCoordinateSG2(); //Quantità energia = (ws.Range[rngVe.Columns[j].ToString()].Value ?? "0").ToString().Replace(".", ","); bmt.Suggested.Coordinate[0].SG2[j].QUA = energia; //Codice Bilanciamento codBil = (ws.Range[rngBi.Columns[j].ToString()].Value ?? "").ToString(); if (string.IsNullOrEmpty(codBil)) { prezzo = (ws.Range[rngVp.Columns[j].ToString()].Value ?? "0").ToString().Replace(".", ","); } else { prezzo = ""; } //Prezzo bmt.Suggested.Coordinate[0].SG2[j].PRE = prezzo; bmt.Suggested.Coordinate[0].SG2[j].BILANC = codBil; /*****************************************************************************************/ // Azione ACQ/VEN if (string.IsNullOrEmpty(prezzo) && string.IsNullOrEmpty(energia)) { bmt.Suggested.Coordinate[0].SG2[j].AZIONESpecified = false; } else { bmt.Suggested.Coordinate[0].SG2[j].AZIONESpecified = true; bmt.Suggested.Coordinate[0].SG2[j].AZIONE = (TipoAzione)Enum.Parse(typeof(TipoAzione), (ws.Range[rngAV.Columns[j].ToString()].Value ?? "0").ToString()); } /*****************************************************************************************/ // Ora oggetto del mercato. bmt.Suggested.Coordinate[0].SG2[j].Value = (oraInizio + j).ToString(); } break; case 3: // Array offerte ACQ/VEN per UP/UC Terzo gradino bmt.Suggested.Coordinate[0].SG3 = new SuggestedCoordinateSG3[intervalloOreMercato]; for (int j = 0; j < intervalloOreMercato; j++) { // Dettaglio ACQ/VEN per ora j bmt.Suggested.Coordinate[0].SG3[j] = new SuggestedCoordinateSG3(); //Quantità energia = (ws.Range[rngVe.Columns[j].ToString()].Value ?? "0").ToString().Replace(".", ","); bmt.Suggested.Coordinate[0].SG3[j].QUA = energia; //Codice Bilanciamento codBil = (ws.Range[rngBi.Columns[j].ToString()].Value ?? "").ToString(); if (string.IsNullOrEmpty(codBil)) { prezzo = (ws.Range[rngVp.Columns[j].ToString()].Value ?? "0").ToString().Replace(".", ","); } else { prezzo = ""; } bmt.Suggested.Coordinate[0].SG3[j].BILANC = codBil; //Prezzo bmt.Suggested.Coordinate[0].SG3[j].PRE = prezzo; /***************************************************************************************/ // Azione ACQ/VEN if (string.IsNullOrEmpty(prezzo) && string.IsNullOrEmpty(energia)) { bmt.Suggested.Coordinate[0].SG3[j].AZIONESpecified = false; } else { bmt.Suggested.Coordinate[0].SG3[j].AZIONESpecified = true; bmt.Suggested.Coordinate[0].SG3[j].AZIONE = (TipoAzione)Enum.Parse(typeof(TipoAzione), (ws.Range[rngAV.Columns[j].ToString()].Value ?? "0").ToString()); } // Ora oggetto del mercato. bmt.Suggested.Coordinate[0].SG3[j].Value = (oraInizio + j).ToString(); } break;
protected bool CreaOfferteSuggeriteXML_GME(object siglaEntita, object siglaAzione, string exportPath, DateTime dataRif, string mercato) { try { string nomeFoglio = DefinedNames.GetSheetName(siglaEntita); DefinedNames definedNames = new DefinedNames(nomeFoglio); Excel.Worksheet ws = Workbook.Sheets[nomeFoglio]; string suffissoData = Date.GetSuffissoData(dataRif); int oreGiorno = Date.GetOreGiorno(dataRif); DataView categoriaEntita = Workbook.Repository[DataBase.TAB.CATEGORIA_ENTITA].DefaultView; categoriaEntita.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND IdApplicazione = " + Workbook.IdApplicazione; object codiceRUP = categoriaEntita[0]["CodiceRUP"]; //bool isTermo = categoriaEntita[0]["SiglaCategoria"].Equals("IREN_60T"); DataView entitaParametro = Workbook.Repository[DataBase.TAB.ENTITA_PARAMETRO].DefaultView; entitaParametro.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND idParametro = 903 AND DataIV <= '" + dataRif.ToString("yyyyMMdd") + "01' AND DataFV >= '" + dataRif.ToString("yyyyMMdd") + "25' AND IdApplicazione = " + Workbook.IdApplicazione; decimal calcoloPPA = (decimal)entitaParametro[0]["Valore"]; XNamespace ns = XNamespace.Get("urn:XML-PIPE"); XNamespace xsi = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance"); XNamespace xsd = XNamespace.Get("http://www.w3.org/2001/XMLSchema"); string referenceNumber = codiceRUP.ToString().Replace("_", "") + "_" + DateTime.Now.ToString("yyyyMMddHHmmss"); DataView entitaProprieta = Workbook.Repository[DataBase.TAB.ENTITA_PROPRIETA].DefaultView; entitaProprieta.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND SiglaProprieta = 'COMPANY_NAME' AND IdApplicazione = " + Workbook.IdApplicazione; object companyName = entitaProprieta[0]["Valore"]; entitaProprieta.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND SiglaProprieta = 'COMPANY_IDENTIFIER' AND IdApplicazione = " + Workbook.IdApplicazione; object companyID = entitaProprieta[0]["Valore"]; XElement PIPEDocument = new XElement(ns + "PIPEDocument", new XAttribute("ReferenceNumber", referenceNumber.Length > 30 ? referenceNumber.Substring(0, 30) : referenceNumber), new XAttribute("CreationDate", DateTime.Now.ToString("yyyyMMddHHmmss")), new XAttribute("Version", "1.0"), new XAttribute(XNamespace.Xmlns + "xsi", xsi), new XAttribute(XNamespace.Xmlns + "xsd", xsd), new XElement(ns + "TradingPartnerDirectory", new XElement(ns + "Sender", new XElement(ns + "TradingPartner", new XAttribute("PartnerType", "Market Participant"), new XElement(ns + "CompanyName", companyName), new XElement(ns + "CompanyIdentifier", companyID) ) ), new XElement(ns + "Recipient", new XElement(ns + "TradingPartner", new XAttribute("PartnerType", "Operator"), new XElement(ns + "CompanyName", companyName), new XElement(ns + "CompanyIdentifier", companyID) ) ) ) ); string[] informazioni = { "OFFERTA_MSD_G0", "OFFERTA_MSD_G1", "OFFERTA_MSD_G2", "OFFERTA_MSD_G3", "OFFERTA_MSD_G4" }; string[] gradini = { "AS", "GR1", "GR2", "GR3", "RS" }; for (int i = 0; i < oreGiorno; i++) { XElement bidSubmittal = new XElement(ns + "BidSubmittal", new XAttribute("PredefinedOffer", "No"), new XElement(ns + "Market", mercato), new XElement(ns + "Date", dataRif.ToString("yyyyMMdd")), new XElement(ns + "Hour", i + 1), new XElement(ns + "UnitReferenceNumber", codiceRUP)); Range rng; string presentedOffer; string energia; string prezzo; for (int j = 0; j < informazioni.Length; j++) { //Vendita rng = definedNames.Get(siglaEntita, informazioni[j] + "VE", suffissoData, Date.GetSuffissoOra(i + 1)); presentedOffer = "No"; energia = "0"; prezzo = "0"; if (!ws.Range[rng.ToString()].EntireRow.Hidden) { presentedOffer = "Yes"; energia = (ws.Range[rng.ToString()].Value ?? "0").ToString().Replace(".", ","); rng = definedNames.Get(siglaEntita, informazioni[j] + "VP", suffissoData, Date.GetSuffissoOra(i + 1)); if (ws.Range[rng.ToString()].Value != null) { prezzo = ws.Range[rng.ToString()].Value.ToString().Replace(".", ","); } } bidSubmittal.Add(new XElement(ns + "Offer", new XAttribute("PresentedOffer", presentedOffer), new XAttribute("Purpose", "Sell"), new XAttribute("Scope", gradini[j]), new XElement(ns + "BidQuantity", energia, new XAttribute("UnitOfMeasure", "MWh")), new XElement(ns + "EnergyPrice", prezzo), new XElement(ns + "SourceOffer", "SPOT")) ); //Acquisto rng = definedNames.Get(siglaEntita, informazioni[j] + "AE", suffissoData, Date.GetSuffissoOra(i + 1)); presentedOffer = "No"; energia = "0"; prezzo = "0"; if (!ws.Range[rng.ToString()].EntireRow.Hidden) { presentedOffer = "Yes"; energia = (ws.Range[rng.ToString()].Value ?? "0").ToString().Replace(".", ","); rng = definedNames.Get(siglaEntita, informazioni[j] + "AP", suffissoData, Date.GetSuffissoOra(i + 1)); if (ws.Range[rng.ToString()].Value != null) { prezzo = ws.Range[rng.ToString()].Value.ToString().Replace(".", ","); } } bidSubmittal.Add(new XElement(ns + "Offer", new XAttribute("PresentedOffer", presentedOffer), new XAttribute("Purpose", "Buy"), new XAttribute("Scope", gradini[j]), new XElement(ns + "BidQuantity", energia, new XAttribute("UnitOfMeasure", "MWh")), new XElement(ns + "EnergyPrice", prezzo), new XElement(ns + "SourceOffer", "SPOT")) ); } //Accensione - Vendita presentedOffer = "Yes"; prezzo = "0"; energia = "0"; if (definedNames.TryGet(out rng, siglaEntita, "ACCENSIONE_MSD")) { //aggiusto la colonna che mi ritorna DATA1.H1 //rng.StartColumn -= 1; if (ws.Range[rng.ToString()].Value != null) { prezzo = ws.Range[rng.ToString()].Value.ToString().Replace(".", ","); } } bidSubmittal.Add(new XElement(ns + "Offer", new XAttribute("PresentedOffer", presentedOffer), new XAttribute("Purpose", "Sell"), new XAttribute("Scope", "AC"), new XElement(ns + "BidQuantity", energia, new XAttribute("UnitOfMeasure", "MWh")), new XElement(ns + "EnergyPrice", prezzo), new XElement(ns + "SourceOffer", "SPOT")) ); //Cambio Assetto - Vendita presentedOffer = "Yes"; prezzo = "0"; if (definedNames.TryGet(out rng, siglaEntita, "CAMBIO_ASSETTO_MSD")) { //aggiusto la colonna che mi ritorna DATA1.H1 //rng.StartColumn -= 1; if (ws.Range[rng.ToString()].Value != null) { prezzo = ws.Range[rng.ToString()].Value.ToString().Replace(".", ","); } } bidSubmittal.Add(new XElement(ns + "Offer", new XAttribute("PresentedOffer", presentedOffer), new XAttribute("Purpose", "Sell"), new XAttribute("Scope", "CA"), new XElement(ns + "BidQuantity", energia, new XAttribute("UnitOfMeasure", "MWh")), new XElement(ns + "EnergyPrice", prezzo), new XElement(ns + "SourceOffer", "SPOT")) ); if (calcoloPPA == 1) { bidSubmittal.Add(new XAttribute("RifStand", "MI1")); } PIPEDocument.Add(new XElement(ns + "PIPTransaction", bidSubmittal)); } XDocument offerteSuggerite = new XDocument(new XDeclaration("1.0", "ISO-8859-1", "yes"), PIPEDocument ); string filename = "Suggerite_MSD_" + codiceRUP.ToString() + "_GME.xml"; offerteSuggerite.Save(Path.Combine(exportPath, filename)); return(true); } catch { return(false); } }