Remove the step_finali copy/report feature

Not needed anymore: the app no longer copies matched .stp files from
step/ into a separate step_finali/ folder, or reports which distinta
codes are still missing a STEP. Removed the "Crea cartella step_finali"
button, GeneraReportStep, and ReportStepForm/EsitoStep. Phase 5 keeps
"Verifica completezza assiemi" and the drag&drop .asm list (still how
files get sent to Creo Distributed Batch); renamed from "Verifica
completezza e STEP" to "Verifica completezza" since it's no longer about
STEP output. PulisciRawEStep now only clears raw/ and step/.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
davideandClaude Sonnet 5 committed 2026-09-21 11:23:46 +02:00
1 parent 13798ad47c
commit 379deec986
5 files changed
+37 -217

No files matched your search

+13 -104
View File
@@ -9,7 +9,6 @@ public partial class Form1 : Form
private readonly Button _btnAggiorna = new();
private readonly Button _btnCreaRaw = new();
private readonly Button _btnTrovaPrt = new();
private readonly Button _btnReport = new();
private readonly Button _btnVerifica = new();
private readonly Button _btnCompletezza = new();
private readonly ListView _lstAnteprimaAsm = new();
@@ -32,7 +31,7 @@ public partial class Form1 : Form
"2. Importa Distinta Base",
"3. Crea cartella raw",
"4. Trova componenti referenziati",
"5. Verifica completezza e STEP",
"5. Verifica completezza",
};
private readonly Panel[] _panelFasi = new Panel[NomiFasi.Length];
private readonly Panel _faseContainer = new() { Dock = DockStyle.Fill };
@@ -282,9 +281,10 @@ public partial class Form1 : Form
AutoSize = true,
ForeColor = SystemColors.GrayText,
Margin = new Padding(0, 20, 0, 4),
Text = "Cartella di lavoro: qui vengono scritti il CSV della distinta e le "
+ "cartelle 'raw', 'step' e 'step_finali'. Proposta automaticamente "
+ "(ricordata da un avvio all'altro), modificabile con 'Cambia cartella...'.",
Text = "Cartella di lavoro: qui vengono scritti il CSV della distinta e la "
+ "cartella 'raw' (gli STEP esportati con Creo vanno invece in 'step', "
+ "dentro la stessa cartella). Proposta automaticamente (ricordata da un "
+ "avvio all'altro), modificabile con 'Cambia cartella...'.",
};
contenuto.Controls.Add(lblIstruzioniCartella);
@@ -530,35 +530,9 @@ public partial class Form1 : Form
};
top.Controls.Add(lblAnteprimaAsm);
var bottom = new TableLayoutPanel
{
Dock = DockStyle.Bottom,
AutoSize = true,
AutoSizeMode = AutoSizeMode.GrowAndShrink,
ColumnCount = 1,
};
bottom.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100));
var lblIstruzioniStep = new Label
{
Dock = DockStyle.Top,
AutoSize = true,
ForeColor = SystemColors.GrayText,
Margin = new Padding(12, 0, 0, 8),
Text = "Dopo aver esportato gli STEP con Creo, premi qui per confrontare i componenti "
+ "della distinta (e i sotto-componenti trovati in fase 4) con i file .stp presenti "
+ "in 'step', copiare quelli trovati in 'step_finali' e vedere quali mancano ancora.",
};
bottom.Controls.Add(lblIstruzioniStep);
_btnReport.Text = "Crea cartella step_finali";
UiStile.Secondario(_btnReport);
_btnReport.Click += (_, _) => GeneraReportStep();
bottom.Controls.Add(_btnReport);
// Dock=Fill invece di una Size fissa: la lista occupa tutto lo spazio verticale
// rimasto tra le istruzioni sopra e sotto, così si vedono più file .asm senza scroll
// anche a finestra ingrandita, invece dei ~160px fissi di prima.
// rimasto sotto le istruzioni, così si vedono più file .asm senza scroll anche a
// finestra ingrandita, invece dei ~160px fissi di prima.
_lstAnteprimaAsm.View = View.LargeIcon;
_lstAnteprimaAsm.MultiSelect = true;
_lstAnteprimaAsm.LargeImageList = new ImageList { ImageSize = new Size(32, 32) };
@@ -575,7 +549,6 @@ public partial class Form1 : Form
};
panel.Controls.Add(_lstAnteprimaAsm);
panel.Controls.Add(bottom);
panel.Controls.Add(top);
return panel;
}
@@ -675,82 +648,18 @@ public partial class Form1 : Form
AggiornaStatoAvanti();
}
/// <summary>Confronta i componenti della distinta importata con i file .stp presenti nella
/// cartella "step" (esportati manualmente con Creo Distributed Batch), per dire quali sono
/// già stati realizzati e quali mancano ancora.</summary>
private void GeneraReportStep()
{
if (_righeCorrenti is null)
return;
string radice = _cartellaLavoro!;
var cartellaStep = Path.Combine(radice, "step");
if (!Directory.Exists(cartellaStep))
{
ImpostaStatoImport($"Cartella 'step' non trovata in {cartellaStep}.", Color.DarkRed);
return;
}
var descrizioni = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
foreach (var r in _righeCorrenti)
descrizioni[r.Componente] = r.Descrizione;
// Solo i componenti della distinta importata dal CSV: i sotto-componenti trovati in
// fase 4 (_componentiRisolti) servono a completare "raw", non entrano nello STEP finale.
var tuttiICodici = _righeCorrenti.Select(r => r.Componente)
.Distinct(StringComparer.OrdinalIgnoreCase)
.ToList();
// Per i codici senza STEP, distingue "il CAD c'è ma lo STEP non è stato esportato" da
// "il componente non è nemmeno nell'indice CAD" (riusa la verifica già fatta in fase 2/3
// se disponibile, altrimenti la rifà).
var cadTrovati = _ultimaVerifica ?? TrovaPercorsiCad(tuttiICodici);
var cartellaStepFinali = Path.Combine(radice, "step_finali");
Directory.CreateDirectory(cartellaStepFinali);
var righeReport = new List<(string Componente, string Descrizione, EsitoStep Esito)>();
foreach (var codice in tuttiICodici)
{
var percorsoStp = Path.Combine(cartellaStep, codice + ".stp");
EsitoStep esito;
if (File.Exists(percorsoStp))
{
File.Copy(percorsoStp, Path.Combine(cartellaStepFinali, codice + ".stp"), overwrite: true);
esito = EsitoStep.Creato;
}
else
{
esito = cadTrovati.ContainsKey(codice) ? EsitoStep.StepMancante : EsitoStep.ComponenteNonTrovato;
}
righeReport.Add((codice, descrizioni.GetValueOrDefault(codice, ""), esito));
}
int creati = righeReport.Count(r => r.Esito == EsitoStep.Creato);
int stepMancanti = righeReport.Count(r => r.Esito == EsitoStep.StepMancante);
int nonTrovati = righeReport.Count(r => r.Esito == EsitoStep.ComponenteNonTrovato);
ImpostaStatoImport(
$"STEP finali: {creati} copiati, {stepMancanti} da esportare (CAD presente), "
+ $"{nonTrovati} componenti non nell'indice, su {righeReport.Count} totali. "
+ $"Cartella: {cartellaStepFinali}.",
Color.DarkGreen);
using var dialog = new ReportStepForm(righeReport, cartellaStepFinali);
dialog.ShowDialog(this);
}
/// <summary>Svuota in un colpo solo le cartelle "raw", "step" e "step_finali" nella cartella
/// di lavoro, previa un'unica conferma. Non tocca l'indice CAD: solo le copie locali
/// generate dalla pipeline.</summary>
/// <summary>Svuota in un colpo solo le cartelle "raw" e "step" nella cartella di lavoro,
/// previa un'unica conferma. Non tocca l'indice CAD: solo le copie locali generate dalla
/// pipeline.</summary>
private void PulisciRawEStep()
{
string radice = _cartellaLavoro!;
var cartelle = new[] { Path.Combine(radice, "raw"), Path.Combine(radice, "step"), Path.Combine(radice, "step_finali") }
var cartelle = new[] { Path.Combine(radice, "raw"), Path.Combine(radice, "step") }
.Where(Directory.Exists)
.ToList();
if (cartelle.Count == 0)
{
ImpostaStatoImport($"Nessuna cartella 'raw', 'step' o 'step_finali' trovata in {radice}.", Color.DarkRed);
ImpostaStatoImport($"Nessuna cartella 'raw' o 'step' trovata in {radice}.", Color.DarkRed);
return;
}
@@ -1081,7 +990,7 @@ public partial class Form1 : Form
{
using var dialog = new FolderBrowserDialog
{
Description = "Seleziona la cartella di lavoro (CSV, raw, step, step_finali)",
Description = "Seleziona la cartella di lavoro (CSV, raw, step)",
SelectedPath = _cartellaLavoro ?? string.Empty,
};
if (dialog.ShowDialog(this) != DialogResult.OK)