ok anche scrittura file nuovo pronto per dload

This commit is contained in:
zaccaria.majid
2023-09-19 15:42:16 +02:00
parent e246e919d0
commit 16f68cdd5f
4 changed files with 442 additions and 24 deletions
+49
View File
@@ -686,6 +686,55 @@ namespace SMGen.Data.Services
return currFile;
}
public async Task modFile(FilesClass file)
{
Dictionary<int, string> eventsFromDb = await AnagEventiGetAll();
Dictionary<int, string> statesFromDb = await AnagStatiGetAll();
string filePath = file.tempFileName;
var lines = File.ReadLines(filePath);
var fileTxt = File.ReadAllText(filePath);
foreach (var line in lines)
{
var txt = "";
if (line != "" && line.Contains(":"))
{
if (!line.StartsWith("$EVENT") && !line.StartsWith("#") && line.StartsWith("$STATE"))
{
var lineSplit = line.Split(":");
if (lineSplit.Count() >= 3)
{
if (statesFromDb[int.Parse(lineSplit[1].Trim())] != lineSplit[2].Trim())
{
fileTxt = fileTxt.Replace(lineSplit[2].Trim(), statesFromDb[int.Parse(lineSplit[1].Trim())]);
}
}
}
else if (line.StartsWith("$EVENT") && !line.StartsWith("#") && !line.StartsWith("$STATE"))
{
var lineSplit = line.Split(":");
if (lineSplit.Count() >= 3)
{
if (eventsFromDb[int.Parse(lineSplit[1].Trim())] != lineSplit[2].Trim())
{
fileTxt = fileTxt.Replace(lineSplit[2].Trim(), eventsFromDb[int.Parse(lineSplit[1].Trim())]);
}
}
}
}
}
var fileName = $"{file.origFileName.Split(".")[0]}.rul";
file.DLoadFileName = $"{Path.Combine(procRootDir, bitCsvPath, fileName)}";
await FileUpdate(file.origFileName, file);
using (StreamWriter sw = new StreamWriter(file.DLoadFileName))
{
sw.Write(fileTxt);
}
}
/// <summary>
/// Valuta un file di ruoles x ingressi 2 Stati e restituisce esito
/// </summary>
+18
View File
@@ -2,4 +2,22 @@
<h3>FilesFix</h3>
<div class="d-flex justify-content-between w-100">
<div class="mb-2">
<InputFile OnChange="@LoadFiles" multiple />
</div>
</div>
<button @onclick="()=>doProc()">PROC</button>
@foreach (var item in Files)
{
<div>
<span>
@item.Key
</span>
@if(item.Value.DLoadFileName != "")
{
<span>@item.Value.DLoadFileName</span>
}
</div>
}
+77 -24
View File
@@ -22,6 +22,8 @@ using SMGen.Data.DbModels;
using SMGen.Data.Services;
using Microsoft.VisualBasic;
using System.Text;
using NLog.Fluent;
using SMGen.Data.Data;
namespace SMGen.Pages
{
@@ -33,39 +35,77 @@ namespace SMGen.Pages
[Inject]
protected SMGDataService SMGDService { get; set; } = null!;
protected async Task modFile(string filePath)
protected Dictionary<string, FilesClass> Files { get; set; } = new Dictionary<string, FilesClass>();
protected int maxAllowedFiles { get; set; } = 100;
protected string pathDir { get; set; } = "";
protected string pathFile { get; set; } = "";
protected int resetSucc { get; set; } = 0;
private async Task LoadFiles(InputFileChangeEventArgs e)
{
var lines = File.ReadLines(filePath);
var fileTxt = File.ReadAllText(filePath);
foreach (var line in lines)
List<IBrowserFile> loadedFiles = new();
long maxFileSize = 1024 * 1024;
loadedFiles.Clear();
Files.Clear();
// path cartella root (development)
pathDir = Path.Combine("Temp", "unsafe_uploads");
// se la cartella non esistesse la creo
if (!Directory.Exists(pathDir))
{
var txt = "";
if (line != "" && line.Contains(":"))
Directory.CreateDirectory(pathDir);
Log.Info($"Creato directory {pathDir}");
}
foreach (var file in e.GetMultipleFiles(maxAllowedFiles))
{
try
{
if (!line.StartsWith("$EVENT") && !line.StartsWith("#") && line.StartsWith("$STATE"))
loadedFiles.Add(file);
//assegno un nome file randomico x sicurezza
var trustedFileNameForFileStorage = Path.GetRandomFileName();
//path del file da scrivere
pathFile = Path.Combine(pathDir, trustedFileNameForFileStorage);
// creo file
using (FileStream fs = new(pathFile, FileMode.Create))
{
var lineSplit = line.Split(":");
if (lineSplit.Count() >= 3)
{
if (statesFromDb[int.Parse(lineSplit[1].Trim())] != lineSplit[2].Trim())
{
fileTxt = fileTxt.Replace(lineSplit[2].Trim(), statesFromDb[int.Parse(lineSplit[1].Trim())]);
}
}
// copio il contenuto del file
await file.OpenReadStream(maxFileSize).CopyToAsync(fs);
// scrivo log
Log.Info($"Salvato file temp {pathFile}");
}
else if (line.StartsWith("$EVENT") && !line.StartsWith("#") && !line.StartsWith("$STATE"))
if (file.Name.Contains(".rul"))
{
var lineSplit = line.Split(":");
if (lineSplit.Count() >= 3)
var newFIle = new FilesClass()
{
if (eventsFromDb[int.Parse(lineSplit[1].Trim())] != lineSplit[2].Trim())
{
fileTxt = fileTxt.Replace(lineSplit[2].Trim(), eventsFromDb[int.Parse(lineSplit[1].Trim())]);
}
}
tempFileName = pathFile,
isOk = false,
origFileName = file.Name,
calcRunning = false,
DLoadFileName = ""
};
Files.Add(file.Name, newFIle);
}
}
catch (Exception exc)
{
Log.Error($"Errore durante salvataggio file temp {file.Name}: {exc}{Environment.NewLine}");
}
}
if (Files != null && Files.Count > 0)
{
await SMGDService.FilesLoadRedis(Files);
}
resetSucc = 0;
await InvokeAsync(() => StateHasChanged());
await ReloadData();
}
protected override async Task OnInitializedAsync()
@@ -73,7 +113,20 @@ namespace SMGen.Pages
await Task.Delay(1);
eventsFromDb = await SMGDService.AnagEventiGetAll();
statesFromDb = await SMGDService.AnagStatiGetAll();
await modFile("S:\\Zaccaria Majid\\File_RUL\\Jetco\\12_FAMIGLIA_JETCO_NEW.rul");
}
protected async Task doProc()
{
foreach (var item in Files.OrderBy(x => x.Value.origFileName))
{
await Task.Delay(1);
await SMGDService.modFile(item.Value);
}
}
protected async Task ReloadData()
{
Files = await SMGDService.FilesGetAll();
}
}
}
+298
View File
@@ -0,0 +1,298 @@
#
# Macchine MANUALE/BArcode di partenza
#
# **** ATTENZIONE!!! ***** Se si aggiunge un Evento o uno Stato va prima aggiunto nel FILE MASTE ELENCO_EVENTI_E_STATI_MASTER.rul se non presente
#
# 2023.08.01
# 2023.08.11 Eventi 34,35,36
#
$DEFINITIONS
$NAME : FAMIGLIA_12
$IDX : 12
#definizione stati (MACRO) : obbligatorio iniziare da 0 --> select * from AnagraficaStati
#
# 27 MancaRifornMPD -> Manca_Materia_Prima
#
$STATE : 0 : ND
$STATE : 2 : Attrezzaggio
$STATE : 3 : Creazione_Programmi
$STATE : 4 : Lavori_Vari
$STATE : 5 : Guasto
$STATE : 6 : Manca_Pezzo
$STATE : 7 : Manca_Lavoro
$STATE : 8 : Assenteismo
$STATE : 9 : Manutenzione
$STATE : 10 : Pulizia
$STATE : 11 : Macchina_Spenta
$STATE : 12 : Fermo_Generico
$STATE : 13 : Lavorazione
$STATE : 14 : Cambio_Pezzo
$STATE : 15 : Allarme_CN
$STATE : 23 : Rottura_Nastro
$STATE : 24 : Manuale
$STATE : 25 : Scarico_Pieno
$STATE : 26 : Non_Disponibile
$STATE : 27 : Manca_Materia_Prima
$STATE : 28 : Magazzino_Grezzi_Vuoto
$STATE : 29 : Emergenza
$STATE : 30 : Fermo_Organizzativo
$STATE : 31 : Modifica_Programmi
$STATE : 32 : Sostituzione_Utensile
$STATE : 33 : Riempimento_Vasca
$STATE : 34 : Riscaldamento
$STATE : 35 : Anomalia_Macchina
$STATE : 49 : Manca_Attrezzatura
$STATE : 50 : Usura_Utensile
#definizione eventi : obbligatorio iniziare da 0 --> select * from AnagraficaEventi
# NOTE
#
# BARCODE SOSTITUITI
#
# 4 NoBarcode_Riempimento_Vasca -> Barcode_Lavori_Vari (DONATI)
# 6 NoBarcode_Riscaldamento -> Barcode_Manca_Pezzo (DONATI)
# 26 Barcode_Manca_Riforn_MPD -> Barcode_Manca_Materia_Prima
# 29 HW_Magazzino_Grezzi_Vuoto POTREBBE ESSERE HW - mancanza materiale DA CAMBIARE
# 34 HW_End_Pallet_1 -> HW_deposito_robot
# 35 HW_End_Pallet_2 -> HW_StartTavola
# 36 HW_deposito_robot -> HW_End_Tavola
#
$EVENT : 00 : EMPTY
$EVENT : 01 : Barcode_Lavora
$EVENT : 02 : Barcode_Attrezzaggio
$EVENT : 03 : Barcode_Creazione_Programmi
$EVENT : 04 : Barcode_Lavori_Vari
$EVENT : 05 : Barcode_Guasto
$EVENT : 06 : Barcode_Manca_Pezzo
$EVENT : 07 : Barcode_Manca_Ciclo_Lavoro
$EVENT : 08 : Barcode_Assenteismo
$EVENT : 09 : Barcode_Manutenzione
$EVENT : 10 : Barcode_Pulizia
$EVENT : 12 : Barcode_Macchina_Spenta
$EVENT : 14 : HW_Power_Off
$EVENT : 15 : HW_Power_On
$EVENT : 16 : HW_Machining
$EVENT : 17 : HW_End_Machining
$EVENT : 18 : HW_Error
$EVENT : 19 : Barcode_Fermo_Organizzativo
$EVENT : 20 : Contapezzi
$EVENT : 21 : HW_Start_Pallet
$EVENT : 22 : HW_End_Pallet
$EVENT : 23 : HW_Rottura_Nastro_Abrasivo
$EVENT : 24 : HW_Manuale
$EVENT : 25 : HW_Nastro_Scarico_Pieno
$EVENT : 26 : Barcode_Manca_Materia_Prima
$EVENT : 27 : Timer_Timeout_Tempo_Ciclo
$EVENT : 28 : Timer_Timeout_Turno_By_Tempo_Ciclo
$EVENT : 29 : HW_Magazzino_Grezzi_Vuoto
$EVENT : 30 : HW_Emergenza
$EVENT : 31 : Barcode_Modifica_Programmi
$EVENT : 32 : Barcode_Sostituzione_Utensile
$EVENT : 33 : HW_Allarme_Macchina
$EVENT : 36 : HW_End_Tavola
$EVENT : 37 : Barcode_Riempimento_Vasca
$EVENT : 38 : Barcode_Riscaldamento
$EVENT : 39 : Barcode_Anomalia_macchina
$EVENT : 40 : HW_Ciclo_Accensione_Spegnimento
$EVENT : 49 : Barcode_Manca_Attrezzatura
$EVENT : 50 : Barcode_Usura_Utensile
$RULES
# state : event : next state
ALL_STATES : EMPTY : ND
ALL_STATES : Barcode_Lavora : Lavorazione
ALL_STATES : Barcode_Attrezzaggio : Attrezzaggio
ALL_STATES : Barcode_Creazione_Programmi : Creazione_Programmi
ALL_STATES : Barcode_Lavori_Vari : Lavori_Vari
ALL_STATES : Barcode_Guasto : Guasto
ALL_STATES : Barcode_Manca_Pezzo : Manca_Pezzo
ALL_STATES : Barcode_Manca_Ciclo_Lavoro : Manca_Lavoro
ALL_STATES : Barcode_Assenteismo : Assenteismo
ALL_STATES : Barcode_Manutenzione : Manutenzione
ALL_STATES : Barcode_Pulizia : Pulizia
#ALL_STATES : Bcode_Cambio_Pallet : Cambio_Pezzo # 11 TOLTO perchè non dovrebbe mai essere usato da nessuno infatti nome sbagliato bcode
ALL_STATES : Barcode_Macchina_Spenta : Macchina_Spenta
ALL_STATES : Barcode_Fermo_Organizzativo : Fermo_Organizzativo
ALL_STATES : Barcode_Manca_Materia_Prima : Manca_Materia_Prima # 26
ALL_STATES : Barcode_Modifica_Programmi : Modifica_Programmi
ALL_STATES : Barcode_Sostituzione_Utensile : Sostituzione_Utensile
ALL_STATES : Barcode_Riempimento_Vasca : Riempimento_Vasca
ALL_STATES : Barcode_Riscaldamento : Riscaldamento
ALL_STATES : Barcode_Anomalia_macchina : Anomalia_Macchina
ALL_STATES : Barcode_Manca_Attrezzatura : Manca_Attrezzatura # 49
ALL_STATES : Barcode_Usura_Utensile : Usura_Utensile # 50
ALL_STATES : HW_Power_Off : Macchina_Spenta
Macchina_Spenta : HW_Power_On : Fermo_Generico
Lavorazione : HW_Power_On : Fermo_Generico
Cambio_Pezzo : HW_Power_On : Fermo_Generico
Allarme_CN : HW_Power_On : Fermo_Generico
Rottura_Nastro : HW_Power_On : Fermo_Generico
Manuale : HW_Power_On : Fermo_Generico
Non_Disponibile : HW_Power_On : Fermo_Generico
Riscaldamento : HW_Power_On : Fermo_Generico
Macchina_Spenta : HW_Machining : Lavorazione
Fermo_Generico : HW_Machining : Lavorazione
Cambio_Pezzo : HW_Machining : Lavorazione
Allarme_CN : HW_Machining : Lavorazione
Rottura_Nastro : HW_Machining : Lavorazione
Manuale : HW_Machining : Lavorazione
Scarico_Pieno : HW_Machining : Lavorazione
Non_Disponibile : HW_Machining : Lavorazione
Magazzino_Grezzi_Vuoto: HW_Machining : Lavorazione
Emergenza : HW_Machining : Lavorazione
Riscaldamento : HW_Machining : Lavorazione
Macchina_Spenta : HW_End_Machining : Cambio_Pezzo
Fermo_Generico : HW_End_Machining : Fermo_Generico
Lavorazione : HW_End_Machining : Lavorazione
Allarme_CN : HW_End_Machining : Allarme_CN
Rottura_Nastro : HW_End_Machining : Cambio_Pezzo
Manuale : HW_End_Machining : Manuale
Scarico_Pieno : HW_End_Machining : Cambio_Pezzo
Non_Disponibile : HW_End_Machining : Cambio_Pezzo
Macchina_Spenta : HW_Error : Allarme_CN
Fermo_Generico : HW_Error : Allarme_CN
Lavorazione : HW_Error : Allarme_CN
Cambio_Pezzo : HW_Error : Allarme_CN
Rottura_Nastro : HW_Error : Allarme_CN
Manuale : HW_Error : Allarme_CN
Scarico_Pieno : HW_Error : Allarme_CN
Non_Disponibile : HW_Error : Allarme_CN
Macchina_Spenta : Contapezzi : Cambio_Pezzo
Fermo_Generico : Contapezzi : Fermo_Generico
Lavorazione : Contapezzi : Lavorazione
Allarme_CN : Contapezzi : Allarme_CN
Rottura_Nastro : Contapezzi : Cambio_Pezzo
Manuale : Contapezzi : Manuale
Scarico_Pieno : Contapezzi : Cambio_Pezzo
Non_Disponibile : Contapezzi : Cambio_Pezzo
Macchina_Spenta : HW_Start_Pallet : Lavorazione
Fermo_Generico : HW_Start_Pallet : Lavorazione
Cambio_Pezzo : HW_Start_Pallet : Lavorazione
Allarme_CN : HW_Start_Pallet : Lavorazione
Rottura_Nastro : HW_Start_Pallet : Lavorazione
Manuale : HW_Start_Pallet : Lavorazione
Scarico_Pieno : HW_Start_Pallet : Lavorazione
Non_Disponibile : HW_Start_Pallet : Lavorazione
Macchina_Spenta : HW_End_Pallet : Cambio_Pezzo
Fermo_Generico : HW_End_Pallet : Fermo_Generico
Lavorazione : HW_End_Pallet : Lavorazione
Allarme_CN : HW_End_Pallet : Allarme_CN
Rottura_Nastro : HW_End_Pallet : Cambio_Pezzo
Manuale : HW_End_Pallet : Manuale
Scarico_Pieno : HW_End_Pallet : Cambio_Pezzo
Non_Disponibile : HW_End_Pallet : Cambio_Pezzo
Macchina_Spenta : HW_Rottura_Nastro_Abrasivo : Rottura_Nastro
Fermo_Generico : HW_Rottura_Nastro_Abrasivo : Rottura_Nastro
Lavorazione : HW_Rottura_Nastro_Abrasivo : Rottura_Nastro
Cambio_Pezzo : HW_Rottura_Nastro_Abrasivo : Rottura_Nastro
Allarme_CN : HW_Rottura_Nastro_Abrasivo : Rottura_Nastro
Manuale : HW_Rottura_Nastro_Abrasivo : Rottura_Nastro
Scarico_Pieno : HW_Rottura_Nastro_Abrasivo : Rottura_Nastro
Non_Disponibile : HW_Rottura_Nastro_Abrasivo : Rottura_Nastro
Macchina_Spenta : HW_Manuale : Manuale
Fermo_Generico : HW_Manuale : Manuale
Lavorazione : HW_Manuale : Manuale
Cambio_Pezzo : HW_Manuale : Manuale
Allarme_CN : HW_Manuale : Manuale
Rottura_Nastro : HW_Manuale : Manuale
Scarico_Pieno : HW_Manuale : Manuale
Non_Disponibile : HW_Manuale : Manuale
Emergenza : HW_Manuale : Manuale
Riscaldamento : HW_Manuale : Manuale
Macchina_Spenta : HW_Nastro_Scarico_Pieno : Scarico_Pieno
Fermo_Generico : HW_Nastro_Scarico_Pieno : Scarico_Pieno
Lavorazione : HW_Nastro_Scarico_Pieno : Scarico_Pieno
Cambio_Pezzo : HW_Nastro_Scarico_Pieno : Scarico_Pieno
Allarme_CN : HW_Nastro_Scarico_Pieno : Scarico_Pieno
Rottura_Nastro : HW_Nastro_Scarico_Pieno : Scarico_Pieno
Manuale : HW_Nastro_Scarico_Pieno : Scarico_Pieno
Non_Disponibile : HW_Nastro_Scarico_Pieno : Scarico_Pieno
Lavorazione : Timer_Timeout_Tempo_Ciclo : Fermo_Generico # 27
Attrezzaggio : Timer_Timeout_Turno_By_Tempo_Ciclo : Non_Disponibile
Creazione_Programmi : Timer_Timeout_Turno_By_Tempo_Ciclo : Non_Disponibile
Lavori_Vari : Timer_Timeout_Turno_By_Tempo_Ciclo : Non_Disponibile
Guasto : Timer_Timeout_Turno_By_Tempo_Ciclo : Non_Disponibile
Manca_Pezzo : Timer_Timeout_Turno_By_Tempo_Ciclo : Non_Disponibile
Manca_Lavoro : Timer_Timeout_Turno_By_Tempo_Ciclo : Non_Disponibile
Assenteismo : Timer_Timeout_Turno_By_Tempo_Ciclo : Non_Disponibile
Manutenzione : Timer_Timeout_Turno_By_Tempo_Ciclo : Non_Disponibile
Pulizia : Timer_Timeout_Turno_By_Tempo_Ciclo : Non_Disponibile
Fermo_Generico : Timer_Timeout_Turno_By_Tempo_Ciclo : Non_Disponibile
Lavorazione : Timer_Timeout_Turno_By_Tempo_Ciclo : Non_Disponibile
Cambio_Pezzo : Timer_Timeout_Turno_By_Tempo_Ciclo : Non_Disponibile
Allarme_CN : Timer_Timeout_Turno_By_Tempo_Ciclo : Non_Disponibile
Rottura_Nastro : Timer_Timeout_Turno_By_Tempo_Ciclo : Non_Disponibile
Manuale : Timer_Timeout_Turno_By_Tempo_Ciclo : Non_Disponibile
Scarico_Pieno : Timer_Timeout_Turno_By_Tempo_Ciclo : Non_Disponibile
Manca_Materia_Prima : Timer_Timeout_Turno_By_Tempo_Ciclo : Non_Disponibile
Modifica_Programmi : Timer_Timeout_Turno_By_Tempo_Ciclo : Non_Disponibile
Sostituzione_Utensile: Timer_Timeout_Turno_By_Tempo_Ciclo : Non_Disponibile
Riempimento_Vasca : Timer_Timeout_Turno_By_Tempo_Ciclo : Non_Disponibile
Riscaldamento : Timer_Timeout_Turno_By_Tempo_Ciclo : Non_Disponibile
Anomalia_Macchina : Timer_Timeout_Turno_By_Tempo_Ciclo : Non_Disponibile
Manca_Attrezzatura : Timer_Timeout_Turno_By_Tempo_Ciclo : Non_Disponibile
Usura_Utensile : Timer_Timeout_Turno_By_Tempo_Ciclo : Non_Disponibile
Macchina_Spenta : HW_Magazzino_Grezzi_Vuoto : Magazzino_Grezzi_Vuoto
Fermo_Generico : HW_Magazzino_Grezzi_Vuoto : Magazzino_Grezzi_Vuoto
Lavorazione : HW_Magazzino_Grezzi_Vuoto : Magazzino_Grezzi_Vuoto
Cambio_Pezzo : HW_Magazzino_Grezzi_Vuoto : Magazzino_Grezzi_Vuoto
Allarme_CN : HW_Magazzino_Grezzi_Vuoto : Magazzino_Grezzi_Vuoto
Rottura_Nastro : HW_Magazzino_Grezzi_Vuoto : Magazzino_Grezzi_Vuoto
Manuale : HW_Magazzino_Grezzi_Vuoto : Magazzino_Grezzi_Vuoto
Scarico_Pieno : HW_Magazzino_Grezzi_Vuoto : Magazzino_Grezzi_Vuoto
Non_Disponibile : HW_Magazzino_Grezzi_Vuoto : Magazzino_Grezzi_Vuoto
Macchina_Spenta : HW_Emergenza : Emergenza
Fermo_Generico : HW_Emergenza : Emergenza
Lavorazione : HW_Emergenza : Emergenza
Cambio_Pezzo : HW_Emergenza : Emergenza
Allarme_CN : HW_Emergenza : Emergenza
Rottura_Nastro : HW_Emergenza : Emergenza
Manuale : HW_Emergenza : Emergenza
Scarico_Pieno : HW_Emergenza : Emergenza
Non_Disponibile : HW_Emergenza : Emergenza
Macchina_Spenta : HW_Allarme_Macchina : Allarme_CN
Fermo_Generico : HW_Allarme_Macchina : Allarme_CN
Lavorazione : HW_Allarme_Macchina : Allarme_CN
Cambio_Pezzo : HW_Allarme_Macchina : Allarme_CN
Rottura_Nastro : HW_Allarme_Macchina : Allarme_CN
Manuale : HW_Allarme_Macchina : Allarme_CN
Scarico_Pieno : HW_Allarme_Macchina : Allarme_CN
Non_Disponibile : HW_Allarme_Macchina : Allarme_CN
Macchina_Spenta : HW_End_Tavola : Cambio_Pezzo
Fermo_Generico : HW_End_Tavola : Fermo_Generico
Lavorazione : HW_End_Tavola : Lavorazione
Allarme_CN : HW_End_Tavola : Allarme_CN
Rottura_Nastro : HW_End_Tavola : Cambio_Pezzo
Manuale : HW_End_Tavola : Manuale
Scarico_Pieno : HW_End_Tavola : Cambio_Pezzo
Non_Disponibile : HW_End_Tavola : Cambio_Pezzo
ALL_STATES : HW_Ciclo_Accensione_Spegnimento : Riscaldamento # 40
#--------------------------------------------------------------------------
$DO