diff --git a/IOB-WIN-NEXT/IobGeneric.cs b/IOB-WIN-NEXT/IobGeneric.cs index 6e8fe707..e0ae8c04 100644 --- a/IOB-WIN-NEXT/IobGeneric.cs +++ b/IOB-WIN-NEXT/IobGeneric.cs @@ -2136,7 +2136,7 @@ namespace IOB_WIN_NEXT // effettua gestione import file se configurato... processFileImport(); // effettua process ritorno ricette - processRicetteFileRitorno(); + processRecipeFileRet(); } else if (ciclo == gatherCycle.VLF) { @@ -2216,7 +2216,7 @@ namespace IOB_WIN_NEXT // effettua gestione import file se configurato... processFileImport(); // effettua process ritorno ricette - processRicetteFileRitorno(); + processRecipeFileRet(); } // provo a riconnettere SE abilitato tryRestart... @@ -5952,23 +5952,24 @@ namespace IOB_WIN_NEXT return answ; } - protected virtual bool processRicetteFileRitorno() + protected virtual bool processRecipeFileRet() { bool answ = false; // test file import da conf... se hasRecipe=true --> modalità tenditalia... if (hasRecipe) { // recupera i NUOVI file e li sposta in folder locale temp - string remoPath = Path.Combine(pathList["path-locBase"], pathList["path-04-remR"]); - string tempPath = Path.Combine(pathList["path-locBase"], pathList["path-03-Recv"], "TEMP"); + string remoPath = Path.Combine(pathList["path-locBase"], pathList["path-05-remR"]); + string archBasePath = Path.Combine(pathList["path-locBase"], pathList["path-03-Recv"]); + string tempPath = Path.Combine(archBasePath, "TEMP"); baseUtils.checkDir(tempPath); bool okRetrieve = RecipeTaskDoneRetrieve(remoPath, tempPath); // ora cerca nella folder locale e processa i files... - bool okCheck = RecipeDoCheckFileProc(tempPath); + bool okCheck = RecipeDoCheckFileProc(tempPath, archBasePath); // verifica se sia da creare/inviare il record settimanale di consumo - bool okSent = RecipeDoProcCons("W"); + bool okSent = RecipeDoProcCons(archBasePath, "W"); } return answ; } @@ -5994,8 +5995,9 @@ namespace IOB_WIN_NEXT /// - accumulo consumo materiali /// /// + /// /// - protected virtual bool RecipeDoCheckFileProc(string localPath) + protected virtual bool RecipeDoCheckFileProc(string localPath, string archBasePath) { bool answ = false; int week = 0; @@ -6006,18 +6008,73 @@ namespace IOB_WIN_NEXT var fileList = Directory.GetFiles(localPath); if (fileList != null && fileList.Count() > 0) { - // FIXME TODO !!! per ogni file ricevuto controlla se sia corrispondente ad un file - // inviato (cerca PODL) + foreach (var recipeFile in fileList) + { + // init var + string rawVal = ""; + int idxPOdl = 0; + // leggo ricetta + var rawData = File.ReadAllLines(recipeFile); - // se trova PODL prova ad avviare/chiudere PODL relativo (eventualmente duplicandolo) + // per ogni file ricevuto controlla se viene dal MES (cerca PODL) + string tokenSearch = "PODL"; + // recupero riga PODL... + var rowPodl = rawData.Where(x => x.Contains(tokenSearch)).FirstOrDefault(); + if (rowPodl != null) + { + DateTime dtStartPOdl = DateTime.Today; + int duration = 0; + DateTime dtEndPOdl = DateTime.Today.AddMinutes(10); + string dtEve = ""; + string dtCurr = ""; - // registra COMUNQUE ogni record di consumo materiale - bool okSync = RecipeDoSyncRecipe(""); + // inizio ricerca PODL + rawVal = rowPodl.Trim().Replace(tokenSearch, "").Replace("", ""); + int.TryParse(rawVal, out idxPOdl); + if (idxPOdl > 0) + { + // leggo inizio commessa + tokenSearch = ""; + var rowStart = rawData.Where(x => x.Contains(tokenSearch)).FirstOrDefault(); + if (rowStart != null) + { + rawVal = rowPodl.Trim().Replace(tokenSearch, "").Replace("", ""); + DateTime.TryParse(rawVal, out dtStartPOdl); + } - // archivio file in area settimanale corrispondente - week = cal.GetWeekOfYear(adesso, CalendarWeekRule.FirstDay, DayOfWeek.Monday); - archPath = Path.Combine(pathList["path-locBase"], pathList["path-03-Recv"], $"{adesso:yyyy}", $"{week:00}"); - baseUtils.checkDir(archPath); + // leggo durata commessa + tokenSearch = ""; + var rowDurSec = rawData.Where(x => x.Contains(tokenSearch)).FirstOrDefault(); + if (rowStart != null) + { + rawVal = rowPodl.Trim().Replace(tokenSearch, "").Replace("", ""); + int.TryParse(rawVal, out duration); + dtEndPOdl = dtStartPOdl.AddSeconds(duration); + } + + // prova ad avviare/chiudere PODL relativo (eventualmente duplicandolo) + dtEve = $"{dtStartPOdl:yyyyMMddHHmmss}"; + dtCurr = $"{DateTime.Now:yyyyMMddHHmmss}"; + callUrl($"{urlOLDStartFromPODL}{idxPOdl}&dtEve={dtEve}&dtCurr={dtCurr}", false); + + // ora chiamo chiusura... + dtEve = $"{dtEndPOdl:yyyyMMddHHmmss}"; + dtCurr = $"{DateTime.Now:yyyyMMddHHmmss}"; + callUrl($"{urlPODLClose}{idxPOdl}&dtEve={dtEve}&dtCurr={dtCurr}", false); + } + } + + + // registra COMUNQUE ogni record di consumo materiale + bool okSync = RecipeDoSyncRecipe(""); + + // archivio file in area settimanale corrispondente + //week = cal.GetWeekOfYear(adesso, CalendarWeekRule.FirstDay, DayOfWeek.Monday); + //archPath = Path.Combine(archBasePath, $"{adesso:yyyy}", $"{week:00}"); + //baseUtils.checkDir(archPath); + + // archivio file processato... + } } return answ; } @@ -6025,9 +6082,10 @@ namespace IOB_WIN_NEXT /// /// Verifica se si debba registrare/inviare il report periodico di consumo indicato /// + /// /// Report di consumo: D/W/M (day, week, month...) /// - protected bool RecipeDoProcCons(string repType) + protected bool RecipeDoProcCons(string archBasePath, string repType) { bool answ = false; @@ -6228,7 +6286,7 @@ namespace IOB_WIN_NEXT { bool fatto = false; // recupero elenco files... - var fileList = Directory.GetFiles(localPath); + var fileList = Directory.GetFiles(remotePath); string destName = ""; if (fileList != null && fileList.Count() > 0) { diff --git a/IOB-WIN-NEXT/IobSimula.cs b/IOB-WIN-NEXT/IobSimula.cs index aca06743..d60bf34f 100644 --- a/IOB-WIN-NEXT/IobSimula.cs +++ b/IOB-WIN-NEXT/IobSimula.cs @@ -123,7 +123,7 @@ namespace IOB_WIN_NEXT if (hasRecipe) { // effettua process ritorno ricette - processRicetteFileRitorno(); + processRecipeFileRet(); } } @@ -724,7 +724,7 @@ namespace IOB_WIN_NEXT // effettua gestione import file... processFileImport(); // effettua process ritorno ricette - processRicetteFileRitorno(); + processRecipeFileRet(); } catch (Exception exc) {