Fix csv export warning + ottimizzazione e fix warnings vari metodi Core
This commit is contained in:
+16
-11
@@ -1,9 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Reflection;
|
||||
|
||||
namespace Egw.Core
|
||||
{
|
||||
@@ -19,14 +14,24 @@ namespace Egw.Core
|
||||
/// <returns></returns>
|
||||
public static async Task SaveToCsv<T>(List<T> reportData, string path, char separator)
|
||||
{
|
||||
// 1. Recuperiamo le proprietà del tipo T una sola volta (Risolve i problemi di performance)
|
||||
PropertyInfo[] properties = typeof(T).GetProperties();
|
||||
|
||||
var lines = new List<string>();
|
||||
IEnumerable<PropertyDescriptor> props = TypeDescriptor.GetProperties(typeof(T)).OfType<PropertyDescriptor>();
|
||||
var header = string.Join(";", props.ToList().Select(x => x.Name));
|
||||
|
||||
// 2. Creiamo l'header usando il separatore corretto (Risolve il bug del ";" fisso)
|
||||
var header = string.Join(separator, properties.Select(p => p.Name));
|
||||
lines.Add(header);
|
||||
var valueLines = reportData.Select(row => string.Join(separator, header.Split(separator).Select(a => row.GetType().GetProperty(a).GetValue(row, null))));
|
||||
//var valueLines = reportData.Select(row => string.Join(";", header.Split(';').Select(a => row.GetType().GetProperty(a).GetValue(row, null))));
|
||||
|
||||
// 3. Estraiamo i valori gestendo i possibili null (Risolve il tuo warning)
|
||||
var valueLines = reportData
|
||||
.Where(row => row != null)
|
||||
.Select(row => string.Join(separator, properties.Select(p => p.GetValue(row)?.ToString() ?? string.Empty)));
|
||||
|
||||
lines.AddRange(valueLines);
|
||||
await Task.Run(() => File.WriteAllLines(path, lines.ToArray()));
|
||||
|
||||
// 4. Utilizziamo il metodo di scrittura asincrono nativo di .NET
|
||||
await File.WriteAllLinesAsync(path, lines);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<Version>8.16.2605.2808</Version>
|
||||
<Version>8.16.2605.2809</Version>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<RootNamespace>MP_TAB3</RootNamespace>
|
||||
</PropertyGroup>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<body>
|
||||
<i>Modulo MAPOSPEC </i>
|
||||
<h4>Versione: 8.16.2605.2808</h4>
|
||||
<h4>Versione: 8.16.2605.2809</h4>
|
||||
<br /> Note di rilascio:
|
||||
<ul>
|
||||
<li>
|
||||
|
||||
@@ -1 +1 @@
|
||||
8.16.2605.2808
|
||||
8.16.2605.2809
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<item>
|
||||
<version>8.16.2605.2808</version>
|
||||
<version>8.16.2605.2809</version>
|
||||
<url>https://nexus.steamware.net/repository/SWS/MP-TAB3/stable/LAST/MP-TAB3.zip</url>
|
||||
<changelog>https://nexus.steamware.net/repository/SWS/MP-TAB3/stable/LAST/ChangeLog.html</changelog>
|
||||
<mandatory>false</mandatory>
|
||||
|
||||
@@ -1,17 +1,15 @@
|
||||
using System;
|
||||
|
||||
namespace MP.Core.DTO
|
||||
namespace MP.Core.DTO
|
||||
{
|
||||
public class FluxLogDTO
|
||||
{
|
||||
public string IdxMacchina { get; set; }
|
||||
public string IdxMacchina { get; set; } = string.Empty;
|
||||
|
||||
public DateTime dtEvento { get; set; }
|
||||
|
||||
public string CodFlux { get; set; }
|
||||
public string CodFlux { get; set; } = string.Empty;
|
||||
|
||||
public string Valore { get; set; }
|
||||
public string Valore { get; set; } = string.Empty;
|
||||
|
||||
public string ValoreEdit { get; set; }
|
||||
public string ValoreEdit { get; set; } = string.Empty;
|
||||
}
|
||||
}
|
||||
@@ -9,20 +9,20 @@ namespace MP.Core.DTO
|
||||
{
|
||||
public int RowNum { get; set; }
|
||||
public DateTime? LastUpdate { get; set; }
|
||||
public string IdxMacchina { get; set; }
|
||||
public string CodMacchina { get; set; }
|
||||
public string Nome { get; set; }
|
||||
public string Url { get; set; }
|
||||
public string IdxMacchina { get; set; } = string.Empty;
|
||||
public string CodMacchina { get; set; } = string.Empty;
|
||||
public string Nome { get; set; } = string.Empty;
|
||||
public string Url { get; set; } = string.Empty;
|
||||
public int? IdxOdl { get; set; } = 0;
|
||||
public int? IdxPOdl { get; set; } = 0;
|
||||
public string CodArticolo { get; set; }
|
||||
public string Disegno { get; set; }
|
||||
public string CodArticolo { get; set; } = string.Empty;
|
||||
public string Disegno { get; set; } = string.Empty;
|
||||
public int NumPezzi { get; set; } = 0;
|
||||
public decimal TCAssegnato { get; set; } = 0;
|
||||
public DateTime? DataInizioOdl { get; set; }
|
||||
public string Semaforo { get; set; }
|
||||
public string Semaforo { get; set; } = string.Empty;
|
||||
public int? IdxStato { get; set; }
|
||||
public string DescrizioneStato { get; set; }
|
||||
public string DescrizioneStato { get; set; } = string.Empty;
|
||||
public double? Durata { get; set; }
|
||||
public int PezziProd { get; set; } = 0;
|
||||
public int PezziConf { get; set; } = 0;
|
||||
@@ -65,7 +65,7 @@ namespace MP.Core.DTO
|
||||
get
|
||||
{
|
||||
int answ = 0;
|
||||
if(NumPezzi < PezziProd)
|
||||
if (NumPezzi < PezziProd)
|
||||
{
|
||||
answ = Math.Abs(NumPezzi - PezziProd);
|
||||
}
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
using System;
|
||||
|
||||
namespace MP.Core.DTO
|
||||
namespace MP.Core.DTO
|
||||
{
|
||||
public class ParetoFluxLogDTO
|
||||
{
|
||||
public string IdxMacchina { get; set; }
|
||||
public string CodFlux { get; set; }
|
||||
public string IdxMacchina { get; set; } = string.Empty;
|
||||
public string CodFlux { get; set; } = string.Empty;
|
||||
public int Qty { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -7,7 +7,7 @@
|
||||
{
|
||||
#region Public Properties
|
||||
|
||||
public List<ULogDataDto> fluxData { get; set; }
|
||||
public List<ULogDataDto> fluxData { get; set; } = new();
|
||||
|
||||
#endregion Public Properties
|
||||
}
|
||||
|
||||
+15
-25
@@ -13,35 +13,25 @@ namespace MP.Core
|
||||
public const string redisAnagGruppi = redisBaseAddr + "Cache:AnagGruppi";
|
||||
public const string redisAnagStati = redisBaseAddr + "Cache:AnagStati";
|
||||
|
||||
public const string redisLinkMenu = redisBaseAddr + "Cache:LinkMenu";
|
||||
|
||||
public const string redisArtByDossier = redisBaseAddr + "Cache:ArtByDossier";
|
||||
|
||||
public const string redisArtList = redisBaseAddr + "Cache:ArtList";
|
||||
|
||||
public const string redisBaseAddr = "MP:";
|
||||
|
||||
public const string redisConfFlux = redisBaseAddr + "Cache:ConfFlux";
|
||||
public const string redisConfKey = redisBaseAddr + "Cache:Config";
|
||||
|
||||
public const string redisDecNumArtKey = redisBaseAddr + "Cache:DecNumArt";
|
||||
|
||||
public const string redisDossByMac = redisBaseAddr + "Cache:DossByMac";
|
||||
public const string redisDossByMacLast = redisBaseAddr + "Cache:DossByMacLast";
|
||||
|
||||
public const string redisEventList = redisBaseAddr + "Cache:EventList";
|
||||
|
||||
public const string redisFluxByMac = redisBaseAddr + "Cache:FluxByMac";
|
||||
public const string redisFluxByMacFirst = redisBaseAddr + "Cache:FluxByMacFirst";
|
||||
public const string redisFluxLogFilt = redisBaseAddr + "Cache:FluxLogFilt";
|
||||
|
||||
public const string redisGiacenzaList = redisBaseAddr + "Cache:GiacenzaList";
|
||||
|
||||
public const string redisKit = redisBaseAddr + "Cache:Kit";
|
||||
public const string redisKitInst = redisBaseAddr + "Cache:Kit:Inst";
|
||||
public const string redisKitScore = redisBaseAddr + "Cache:Kit:Score";
|
||||
public const string redisKitTempl = redisBaseAddr + "Cache:Kit:Templ";
|
||||
public const string redisKitWip = redisBaseAddr + "Cache:Kit:Wip";
|
||||
public const string redisLinkMenu = redisBaseAddr + "Cache:LinkMenu";
|
||||
public const string redisMacByFlux = redisBaseAddr + "Cache:MacByFlux";
|
||||
|
||||
public const string redisMacList = redisBaseAddr + "Cache:MacList";
|
||||
@@ -90,12 +80,12 @@ namespace MP.Core
|
||||
|
||||
public static string redKeyArtUsed
|
||||
{
|
||||
get => RedHash($"SPEC:Cache:CheckArtUsed");
|
||||
get => RedHash($"SPEC:Cache:CheckArtUsed").ToString();
|
||||
}
|
||||
|
||||
public static string redKeyTabCheckArt
|
||||
{
|
||||
get => RedHash($"CACHE:TabCheckArt");
|
||||
get => RedHash($"CACHE:TabCheckArt").ToString();
|
||||
}
|
||||
|
||||
#endregion Public Properties
|
||||
@@ -182,7 +172,7 @@ namespace MP.Core
|
||||
/// <param name="idxMacchina"></param>
|
||||
/// <param name="baseAddr">Chiave override per i valori in caso di dati che accedono al dominio dati di un altra app (es: baseAddr x IO legacy)</param>
|
||||
/// <returns></returns>
|
||||
public static RedisKey RedKeyCurrObjItems(string idxMacchina, string baseAddr = null)
|
||||
public static RedisKey RedKeyCurrObjItems(string idxMacchina, string? baseAddr = null)
|
||||
{
|
||||
var prefix = (baseAddr ?? redisBaseAddr).TrimEnd(':');
|
||||
return (RedisKey)$"{prefix}:CurrentParameters:{idxMacchina}";
|
||||
@@ -194,7 +184,7 @@ namespace MP.Core
|
||||
/// <param name="idxMacchina"></param>
|
||||
/// <param name="baseAddr">Chiave override per i valori in caso di dati che accedono al dominio dati di un altra app (es: baseAddr x IO legacy)</param>
|
||||
/// <returns></returns>
|
||||
public static RedisKey RedKeyDatiMacc(string idxMacchina, string baseAddr = null)
|
||||
public static RedisKey RedKeyDatiMacc(string idxMacchina, string? baseAddr = null)
|
||||
{
|
||||
var prefix = (baseAddr ?? redisBaseAddr).TrimEnd(':');
|
||||
return (RedisKey)$"{prefix}:DtMac:{idxMacchina}";
|
||||
@@ -214,7 +204,7 @@ namespace MP.Core
|
||||
/// <param name="idxMacchina"></param>
|
||||
/// <param name="baseAddr">Chiave override per i valori in caso di dati che accedono al dominio dati di un altra app (es: baseAddr x IO legacy)</param>
|
||||
/// <returns></returns>
|
||||
public static RedisKey RedKeyIobConfYaml(string idxMacchina, string baseAddr = null)
|
||||
public static RedisKey RedKeyIobConfYaml(string idxMacchina, string? baseAddr = null)
|
||||
{
|
||||
var prefix = (baseAddr ?? redisBaseAddr).TrimEnd(':');
|
||||
return (RedisKey)$"{prefix}:IOB:{idxMacchina}:ConfYaml";
|
||||
@@ -226,7 +216,7 @@ namespace MP.Core
|
||||
/// <param name="idxMacchina"></param>
|
||||
/// <param name="baseAddr">Chiave override per i valori in caso di dati che accedono al dominio dati di un altra app (es: baseAddr x IO legacy)</param>
|
||||
/// <returns></returns>
|
||||
public static RedisKey RedKeyIobMemMap(string idxMacchina, string baseAddr = null)
|
||||
public static RedisKey RedKeyIobMemMap(string idxMacchina, string? baseAddr = null)
|
||||
{
|
||||
var prefix = (baseAddr ?? redisBaseAddr).TrimEnd(':');
|
||||
return (RedisKey)$"{prefix}:MemMap:{idxMacchina}";
|
||||
@@ -239,7 +229,7 @@ namespace MP.Core
|
||||
/// <param name="flog"></param>
|
||||
/// <param name="baseAddr">Chiave override per i valori in caso di dati che accedono al dominio dati di un altra app (es: baseAddr x IO legacy)</param>
|
||||
/// <returns></returns>
|
||||
public static RedisKey RedKeyLastFLog(string idxMacchina, string flog, string baseAddr = null)
|
||||
public static RedisKey RedKeyLastFLog(string idxMacchina, string flog, string? baseAddr = null)
|
||||
{
|
||||
var prefix = (baseAddr ?? redisBaseAddr).TrimEnd(':');
|
||||
return (RedisKey)$"{prefix}:FLOG:{idxMacchina}:{flog}";
|
||||
@@ -251,7 +241,7 @@ namespace MP.Core
|
||||
/// <param name="idxMacchina"></param>
|
||||
/// <param name="baseAddr"></param>
|
||||
/// <returns></returns>
|
||||
public static RedisKey RedKeyMach2Iob(string idxMacchina, string baseAddr = null)
|
||||
public static RedisKey RedKeyMach2Iob(string idxMacchina, string? baseAddr = null)
|
||||
{
|
||||
var prefix = (baseAddr ?? redisBaseAddr).TrimEnd(':');
|
||||
return (RedisKey)$"{prefix}:hM2IOB:{idxMacchina}";
|
||||
@@ -263,7 +253,7 @@ namespace MP.Core
|
||||
/// <param name="idxMacchina"></param>
|
||||
/// <param name="baseAddr"></param>
|
||||
/// <returns></returns>
|
||||
public static RedisKey RedKeyMachIobConf(string idxMacchina, string baseAddr = null)
|
||||
public static RedisKey RedKeyMachIobConf(string idxMacchina, string? baseAddr = null)
|
||||
{
|
||||
var prefix = (baseAddr ?? redisBaseAddr).TrimEnd(':');
|
||||
return (RedisKey)$"{prefix}:IOB:{idxMacchina}:MachIobConf";
|
||||
@@ -275,7 +265,7 @@ namespace MP.Core
|
||||
/// <param name="idxMacchina"></param>
|
||||
/// <param name="baseAddr">Chiave override per i valori in caso di dati che accedono al dominio dati di un altra app (es: baseAddr x IO legacy)</param>
|
||||
/// <returns></returns>
|
||||
public static RedisKey RedKeyMsmi(string idxMacchina, string baseAddr = null)
|
||||
public static RedisKey RedKeyMsmi(string idxMacchina, string? baseAddr = null)
|
||||
{
|
||||
var prefix = (baseAddr ?? redisBaseAddr).TrimEnd(':');
|
||||
return (RedisKey)$"{prefix}:hMSMI:{idxMacchina}";
|
||||
@@ -287,7 +277,7 @@ namespace MP.Core
|
||||
/// <param name="idxMacchina"></param>
|
||||
/// <param name="baseAddr">Chiave override per i valori in caso di dati che accedono al dominio dati di un altra app (es: baseAddr x IO legacy)</param>
|
||||
/// <returns></returns>
|
||||
public static RedisKey RedKeyOptPar(string idxMacchina, string baseAddr = null)
|
||||
public static RedisKey RedKeyOptPar(string idxMacchina, string? baseAddr = null)
|
||||
{
|
||||
var prefix = (baseAddr ?? redisBaseAddr).TrimEnd(':');
|
||||
return (RedisKey)$"{prefix}:OptPar:{idxMacchina}";
|
||||
@@ -299,7 +289,7 @@ namespace MP.Core
|
||||
/// <param name="idxMacchina"></param>
|
||||
/// <param name="baseAddr">Chiave override per i valori in caso di dati che accedono al dominio dati di un altra app (es: baseAddr x IO legacy)</param>
|
||||
/// <returns></returns>
|
||||
public static RedisKey RedKeyPzCount(string idxMacchina, string baseAddr = null)
|
||||
public static RedisKey RedKeyPzCount(string idxMacchina, string? baseAddr = null)
|
||||
{
|
||||
var prefix = (baseAddr ?? redisBaseAddr).TrimEnd(':');
|
||||
return (RedisKey)$"{prefix}:PzCount:{idxMacchina}";
|
||||
@@ -311,7 +301,7 @@ namespace MP.Core
|
||||
/// </summary>
|
||||
/// <param name="idxMacchina"></param>
|
||||
/// <returns></returns>
|
||||
public static RedisKey RedKeySavedTask2ExeMacc(string idxMacchina, string baseAddr = null)
|
||||
public static RedisKey RedKeySavedTask2ExeMacc(string idxMacchina, string? baseAddr = null)
|
||||
{
|
||||
var prefix = (baseAddr ?? redisBaseAddr).TrimEnd(':');
|
||||
return (RedisKey)$"{prefix}:SavedTask:{idxMacchina}";
|
||||
@@ -323,7 +313,7 @@ namespace MP.Core
|
||||
/// <param name="idxMacchina"></param>
|
||||
/// <param name="baseAddr">Chiave override per i valori in caso di dati che accedono al dominio dati di un altra app (es: baseAddr x IO legacy)</param>
|
||||
/// <returns></returns>
|
||||
public static RedisKey RedKeyTask2ExeMacc(string idxMacchina, string baseAddr = null)
|
||||
public static RedisKey RedKeyTask2ExeMacc(string idxMacchina, string? baseAddr = null)
|
||||
{
|
||||
var prefix = (baseAddr ?? redisBaseAddr).TrimEnd(':');
|
||||
return (RedisKey)$"{prefix}:ExeTask:{idxMacchina}";
|
||||
|
||||
Reference in New Issue
Block a user