diff --git a/GWMS.Data/Controllers/GWMSController.cs b/GWMS.Data/Controllers/GWMSController.cs index 4fd2f17..a3f8061 100644 --- a/GWMS.Data/Controllers/GWMSController.cs +++ b/GWMS.Data/Controllers/GWMSController.cs @@ -176,11 +176,25 @@ namespace GWMS.Data.Controllers return dbResult; } - public List GetOrdersFilt(int PlantId, int SupplierId, int TransporterId, DateTime DtStart, DateTime DtEnd) + public List GetOrdersFilt(int PlantId, int SupplierId, int TransporterId, DateTime DtStart, DateTime DtEnd, bool ShowClosed) { var dbResult = dbCtx .DbSetOrders - .Where(x => (x.PlantId == PlantId || PlantId == 0) && (x.SupplierId == SupplierId || SupplierId == 0) && (x.TransporterId == TransporterId || TransporterId == 0) && (x.DtOrder >= DtStart && x.DtOrder <= DtEnd)) + .Where(x => (x.PlantId == PlantId || PlantId == 0) && (x.SupplierId == SupplierId || SupplierId == 0) && (x.TransporterId == TransporterId || TransporterId == 0) && (x.DtOrder >= DtStart && x.DtOrder <= DtEnd) && (x.ExecutionQty == 0 || ShowClosed)) + .Include(p => p.Plant) + .Include(s => s.Supplier) + .Include(t => t.Transporter) + .OrderByDescending(x => x.DtOrder) + .ToList(); + + return dbResult; + } + + public List GetOrdersOpen(int PlantId) + { + var dbResult = dbCtx + .DbSetOrders + .Where(x => (x.PlantId == PlantId || PlantId == 0) && (x.DtExecStart < x.DtOrder)) .Include(p => p.Plant) .Include(s => s.Supplier) .Include(t => t.Transporter) @@ -319,6 +333,51 @@ namespace GWMS.Data.Controllers return answ; } + /// + /// Eliminazione di un ordine + /// + /// + /// + public bool OrderDelete(OrderModel Item2Del) + { + bool done = false; + try + { + if (Item2Del != null) + { + dbCtx + .DbSetOrders + .Remove(Item2Del); + dbCtx.SaveChanges(); + done = true; + } + } + catch (Exception exc) + { } + return done; + } + + /// + /// Aggiunta in blocco di Ordini + /// + /// + /// + public bool OrderInsert(List newItems) + { + bool done = false; + try + { + dbCtx + .DbSetOrders + .AddRange(newItems); + dbCtx.SaveChanges(); + done = true; + } + catch (Exception exc) + { } + return done; + } + /// /// Aggiorna un Ordine /// @@ -335,6 +394,12 @@ namespace GWMS.Data.Controllers .FirstOrDefault(); if (currData != null) { + // se ho modificato data --> cambio codice ordine! + if (!dbCtx.Entry(updItem).OriginalValues["DtOrder"].Equals(dbCtx.Entry(updItem).CurrentValues["DtOrder"])) + { + updItem.OrderCode = $"O{updItem.Plant.PlantCode}{updItem.DtOrder:yyMMddHHmm}"; + updItem.OrderDesc = $"Ordine {updItem.Plant.PlantDesc} - {updItem.DtOrder}"; + } dbCtx.Entry(updItem).State = EntityState.Modified; } else @@ -402,7 +467,7 @@ namespace GWMS.Data.Controllers var rawOrderData = dbCtxMult .DbSetOrders - .Where(x => x.PlantId == PlantId) + .Where(x => x.PlantId == PlantId && x.ExecutionQty == 0) .OrderBy(x => x.DtOrder) .Take(maxRecords) .ToList(); @@ -443,6 +508,8 @@ namespace GWMS.Data.Controllers PlantDesc = currPlant.PlantDesc, LevelAct = actLevel, LevelMax = currPlant.LevelMax, + LevelReorder = currPlant.LevelReorder, + OrderQtyStd = currPlant.OrderQtyStd, PressAct = PressAct, LevelTS = LevelTS, PressTS = PressTS, diff --git a/GWMS.Data/DTO/PlantDTO.cs b/GWMS.Data/DTO/PlantDTO.cs index d03c146..f4c3778 100644 --- a/GWMS.Data/DTO/PlantDTO.cs +++ b/GWMS.Data/DTO/PlantDTO.cs @@ -21,6 +21,9 @@ namespace GWMS.Data.DTO public double LevelMax { get; set; } = 99999; public double LevelAct { get; set; } = 0; + public double LevelReorder { get; set; } = 0; + public double OrderQtyStd { get; set; } = 0; + public int LevelRatio { diff --git a/GWMS.Data/DatabaseModels/OrderModel.cs b/GWMS.Data/DatabaseModels/OrderModel.cs index cf1ba78..953ca6f 100644 --- a/GWMS.Data/DatabaseModels/OrderModel.cs +++ b/GWMS.Data/DatabaseModels/OrderModel.cs @@ -44,6 +44,10 @@ namespace GWMS.Data.DatabaseModels public double ExecutionQty { get; set; } = 0; + public double LevelStart { get; set; } = 0; + + public double LevelEnd { get; set; } = 1; + [ForeignKey("PlantId")] public virtual PlantDetailModel Plant { get; set; } diff --git a/GWMS.Data/DatabaseModels/PlantDetailModel.cs b/GWMS.Data/DatabaseModels/PlantDetailModel.cs index 46761cb..5442d25 100644 --- a/GWMS.Data/DatabaseModels/PlantDetailModel.cs +++ b/GWMS.Data/DatabaseModels/PlantDetailModel.cs @@ -26,11 +26,13 @@ namespace GWMS.Data.DatabaseModels [MaxLength(250)] public string PlantDesc { get; set; } = ""; - public double LevelMax { get; set; } = 9999; + public double LevelMax { get; set; } = 29999; public double LevelReorder { get; set; } = 0; - //public double PressMax { get; set; } = 9999; + public double OrderQtyStd { get; set; } = 1000; + + //public double LastLevelMax { get; set; } = 0; //public double PressAct { get; set; } = 0; diff --git a/GWMS.Data/Migrations/20210806162035_AddOrderDefQty.Designer.cs b/GWMS.Data/Migrations/20210806162035_AddOrderDefQty.Designer.cs new file mode 100644 index 0000000..5792773 --- /dev/null +++ b/GWMS.Data/Migrations/20210806162035_AddOrderDefQty.Designer.cs @@ -0,0 +1,875 @@ +// +using System; +using GWMS.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +namespace GWMS.Data.Migrations +{ + [DbContext(typeof(GWMSContext))] + [Migration("20210806162035_AddOrderDefQty")] + partial class AddOrderDefQty + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("Relational:MaxIdentifierLength", 64) + .HasAnnotation("ProductVersion", "5.0.7"); + + modelBuilder.Entity("GWMS.Data.DatabaseModels.AnKeyValModel", b => + { + b.Property("KeyName") + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("Descript") + .HasMaxLength(250) + .HasColumnType("varchar(250)") + .HasComment("Descrizione dell'item"); + + b.Property("ValFloat") + .HasColumnType("int"); + + b.Property("ValInt") + .HasColumnType("int"); + + b.Property("ValString") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.HasKey("KeyName"); + + b.ToTable("AnKeyVal"); + }); + + modelBuilder.Entity("GWMS.Data.DatabaseModels.ConfigModel", b => + { + b.Property("KeyName") + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("Note") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.Property("Val") + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("ValStd") + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("Valore di default/riferimento per la variabile"); + + b.HasKey("KeyName"); + + b.ToTable("Config"); + }); + + modelBuilder.Entity("GWMS.Data.DatabaseModels.ItemModel", b => + { + b.Property("ItemId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("ItemCode") + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("ItemDesc") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.Property("ItemType") + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("UM") + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.HasKey("ItemId"); + + b.ToTable("Items"); + }); + + modelBuilder.Entity("GWMS.Data.DatabaseModels.ListValModel", b => + { + b.Property("TabName") + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasColumnName("TabName"); + + b.Property("FieldName") + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasColumnName("FieldName"); + + b.Property("Val") + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasColumnName("Val"); + + b.Property("Descript") + .HasMaxLength(250) + .HasColumnType("varchar(250)") + .HasColumnName("Descript"); + + b.Property("Ordinal") + .HasColumnType("int") + .HasColumnName("Ordinal"); + + b.HasKey("TabName", "FieldName", "Val"); + + b.ToTable("ListVal"); + }); + + modelBuilder.Entity("GWMS.Data.DatabaseModels.OrderModel", b => + { + b.Property("OrderId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("DtETA") + .HasColumnType("datetime(6)"); + + b.Property("DtExecEnd") + .HasColumnType("datetime(6)"); + + b.Property("DtExecStart") + .HasColumnType("datetime(6)"); + + b.Property("DtOrder") + .HasColumnType("datetime(6)"); + + b.Property("ExecutionQty") + .HasColumnType("double"); + + b.Property("OrderCode") + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("OrderDesc") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.Property("OrderQty") + .HasColumnType("double"); + + b.Property("PlantId") + .HasColumnType("int"); + + b.Property("SupplierId") + .HasColumnType("int"); + + b.Property("TransporterId") + .HasColumnType("int"); + + b.HasKey("OrderId"); + + b.HasIndex("PlantId"); + + b.HasIndex("SupplierId"); + + b.HasIndex("TransporterId"); + + b.ToTable("Order"); + }); + + modelBuilder.Entity("GWMS.Data.DatabaseModels.PlantDetailModel", b => + { + b.Property("PlantId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("LevelMax") + .HasColumnType("double"); + + b.Property("LevelReorder") + .HasColumnType("double"); + + b.Property("OrderQtyStd") + .HasColumnType("double"); + + b.Property("PlantCode") + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("PlantDesc") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.HasKey("PlantId"); + + b.ToTable("PlantDetail"); + + b.HasData( + new + { + PlantId = 1, + LevelMax = 26000.0, + LevelReorder = 15000.0, + OrderQtyStd = 18000.0, + PlantCode = "PIZ03", + PlantDesc = "Collecchio" + }, + new + { + PlantId = 2, + LevelMax = 28000.0, + LevelReorder = 15000.0, + OrderQtyStd = 18000.0, + PlantCode = "PIZ04", + PlantDesc = "Noceto" + }, + new + { + PlantId = 3, + LevelMax = 24000.0, + LevelReorder = 15000.0, + OrderQtyStd = 18000.0, + PlantCode = "PIZ05", + PlantDesc = "Baganzola" + }, + new + { + PlantId = 4, + LevelMax = 26000.0, + LevelReorder = 15000.0, + OrderQtyStd = 18000.0, + PlantCode = "PIZ08", + PlantDesc = "Pilastrello" + }); + }); + + modelBuilder.Entity("GWMS.Data.DatabaseModels.PlantLogModel", b => + { + b.Property("PlantDataId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("DtEvent") + .HasColumnType("datetime(6)"); + + b.Property("FluxType") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.Property("PlantId") + .HasColumnType("int"); + + b.Property("ValNumber") + .HasColumnType("double"); + + b.Property("ValString") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.HasKey("PlantDataId"); + + b.HasIndex("PlantId"); + + b.ToTable("PlantLog"); + }); + + modelBuilder.Entity("GWMS.Data.DatabaseModels.PlantStatusModel", b => + { + b.Property("PlantId") + .HasColumnType("int"); + + b.Property("FluxType") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.Property("DtEvent") + .HasColumnType("datetime(6)"); + + b.Property("ValNumber") + .HasColumnType("double"); + + b.Property("ValString") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.HasKey("PlantId", "FluxType"); + + b.ToTable("PlantStatus"); + }); + + modelBuilder.Entity("GWMS.Data.DatabaseModels.RebootLogModel", b => + { + b.Property("RecordId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("DtEvent") + .HasColumnType("datetime(6)"); + + b.Property("Item") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.Property("Payload") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.HasKey("RecordId"); + + b.ToTable("RebootLog"); + }); + + modelBuilder.Entity("GWMS.Data.DatabaseModels.SupplierModel", b => + { + b.Property("SupplierId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("SupplierCode") + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("SupplierDesc") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.HasKey("SupplierId"); + + b.ToTable("Supplier"); + + b.HasData( + new + { + SupplierId = 1, + SupplierCode = "LIQUIGAS", + SupplierDesc = "Liquigas" + }, + new + { + SupplierId = 2, + SupplierCode = "VULKANGAS", + SupplierDesc = "Vulkangas" + }); + }); + + modelBuilder.Entity("GWMS.Data.DatabaseModels.TransporterModel", b => + { + b.Property("TransporterId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("PositionLatitude") + .HasColumnType("double"); + + b.Property("PositionLongitude") + .HasColumnType("double"); + + b.Property("PositionUpdated") + .HasColumnType("datetime(6)"); + + b.Property("TransporterCode") + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("TransporterDesc") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.HasKey("TransporterId"); + + b.ToTable("Transporter"); + + b.HasData( + new + { + TransporterId = 1, + PositionLatitude = 0.0, + PositionLongitude = 0.0, + PositionUpdated = new DateTime(2021, 8, 6, 18, 20, 35, 347, DateTimeKind.Local).AddTicks(1664), + TransporterCode = "LEVO", + TransporterDesc = "Levorato" + }, + new + { + TransporterId = 2, + PositionLatitude = 0.0, + PositionLongitude = 0.0, + PositionUpdated = new DateTime(2021, 8, 6, 18, 20, 35, 347, DateTimeKind.Local).AddTicks(2482), + TransporterCode = "TRAF", + TransporterDesc = "Traffik" + }); + }); + + modelBuilder.Entity("GWMS.Data.DatabaseModels.UserModel", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("AuthKey") + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("Email") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.Property("Firstname") + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("IsActive") + .HasColumnType("tinyint(1)"); + + b.Property("Lang") + .HasMaxLength(10) + .HasColumnType("varchar(10)"); + + b.Property("Lastname") + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("Livello") + .HasColumnType("int"); + + b.Property("MaskPlantId") + .HasColumnType("int"); + + b.Property("MaskSupplierId") + .HasColumnType("int"); + + b.Property("MaskTranspId") + .HasColumnType("int"); + + b.Property("SaltPasswd") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.Property("UserName") + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.HasKey("UserId"); + + b.ToTable("Users"); + + b.HasData( + new + { + UserId = 1, + AuthKey = "th1sIsTh3R1vrOfThNgt98", + Email = "samuele@steamware.net", + Firstname = "Samuele", + IsActive = true, + Lang = "IT", + Lastname = "Locatelli", + Livello = 1, + MaskPlantId = 0, + MaskSupplierId = 0, + MaskTranspId = 0, + SaltPasswd = "", + UserName = "samuele.locatelli" + }, + new + { + UserId = 2, + AuthKey = "th1sIsTh3R1vrOfThNgt91", + Email = "giancarlo@steamware.net", + Firstname = "Giancarlo", + IsActive = true, + Lang = "IT", + Lastname = "Rottoli", + Livello = 1, + MaskPlantId = 0, + MaskSupplierId = 0, + MaskTranspId = 0, + SaltPasswd = "", + UserName = "giancarlo.rottoli" + }, + new + { + UserId = 3, + AuthKey = "th1sIsTh3R1vrOfThNgt93", + Email = "info@steamware.net", + Firstname = "Steamware", + IsActive = true, + Lang = "IT", + Lastname = "Admin", + Livello = 1, + MaskPlantId = 0, + MaskSupplierId = 0, + MaskTranspId = 0, + SaltPasswd = "", + UserName = "steamw.admin" + }, + new + { + UserId = 4, + AuthKey = "th1sIsTh3R1vrOfThNgt97", + Email = "a.pizzaferri@pizzaferripetroli.it", + Firstname = "Angelo", + IsActive = true, + Lang = "IT", + Lastname = "Pizzaferri", + Livello = 2, + MaskPlantId = 0, + MaskSupplierId = 0, + MaskTranspId = 0, + SaltPasswd = "", + UserName = "angelo.pizzaferri" + }, + new + { + UserId = 5, + AuthKey = "th1sIsTh3R1vrOfThNgt99", + Email = "andrei.valeanu@winnlab.it", + Firstname = "Andrei", + IsActive = true, + Lang = "IT", + Lastname = "Valeanu", + Livello = 2, + MaskPlantId = 0, + MaskSupplierId = 0, + MaskTranspId = 0, + SaltPasswd = "", + UserName = "andrei.valeanu" + }, + new + { + UserId = 6, + AuthKey = "th1sIsTh3R1vrOfThNgt92", + Email = "info@steamware.net", + Firstname = "User", + IsActive = true, + Lang = "IT", + Lastname = "LIQUIGAS", + Livello = 4, + MaskPlantId = 0, + MaskSupplierId = 1, + MaskTranspId = 0, + SaltPasswd = "", + UserName = "liquigas.user01" + }, + new + { + UserId = 7, + AuthKey = "th1sIsTh3R1vrOfThNgt94", + Email = "info@steamware.net", + Firstname = "User", + IsActive = true, + Lang = "IT", + Lastname = "VULKANGAS", + Livello = 4, + MaskPlantId = 0, + MaskSupplierId = 2, + MaskTranspId = 0, + SaltPasswd = "", + UserName = "vulkangas.user01" + }, + new + { + UserId = 8, + AuthKey = "th1sIsTh3R1vrOfThNgt95", + Email = "info@steamware.net", + Firstname = "User", + IsActive = true, + Lang = "IT", + Lastname = "LEVORATO", + Livello = 4, + MaskPlantId = 0, + MaskSupplierId = 0, + MaskTranspId = 1, + SaltPasswd = "", + UserName = "levorato.user01" + }, + new + { + UserId = 9, + AuthKey = "th1sIsTh3R1vrOfThNgt96", + Email = "info@steamware.net", + Firstname = "User", + IsActive = true, + Lang = "IT", + Lastname = "TRAFFIK", + Livello = 4, + MaskPlantId = 0, + MaskSupplierId = 0, + MaskTranspId = 2, + SaltPasswd = "", + UserName = "traffik.user01" + }, + new + { + UserId = 10, + AuthKey = "th1sIsTh3R1vrOfThNgt96", + Email = "info@steamware.net", + Firstname = "Stazione", + IsActive = true, + Lang = "IT", + Lastname = "Collecchio", + Livello = 3, + MaskPlantId = 1, + MaskSupplierId = 0, + MaskTranspId = 0, + SaltPasswd = "", + UserName = "piz03.user01" + }, + new + { + UserId = 11, + AuthKey = "th1sIsTh3R1vrOfThNgt96", + Email = "info@steamware.net", + Firstname = "Stazione", + IsActive = true, + Lang = "IT", + Lastname = "Noceto", + Livello = 3, + MaskPlantId = 2, + MaskSupplierId = 0, + MaskTranspId = 0, + SaltPasswd = "", + UserName = "piz04.user01" + }, + new + { + UserId = 12, + AuthKey = "th1sIsTh3R1vrOfThNgt96", + Email = "info@steamware.net", + Firstname = "Stazione", + IsActive = true, + Lang = "IT", + Lastname = "Baganzola", + Livello = 3, + MaskPlantId = 3, + MaskSupplierId = 0, + MaskTranspId = 0, + SaltPasswd = "", + UserName = "piz05.user01" + }, + new + { + UserId = 13, + AuthKey = "th1sIsTh3R1vrOfThNgt96", + Email = "info@steamware.net", + Firstname = "Stazione", + IsActive = true, + Lang = "IT", + Lastname = "Pilastrello", + Livello = 3, + MaskPlantId = 4, + MaskSupplierId = 0, + MaskTranspId = 0, + SaltPasswd = "", + UserName = "piz08.user01" + }); + }); + + modelBuilder.Entity("GWMS.Data.DatabaseModels.WeekPlanModel", b => + { + b.Property("WeekPlanId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("DayNum") + .HasColumnType("int"); + + b.Property("DeliveryHour") + .HasColumnType("int"); + + b.Property("Note") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.Property("PlantId") + .HasColumnType("int"); + + b.Property("SupplierId") + .HasColumnType("int"); + + b.Property("TransporterId") + .HasColumnType("int"); + + b.HasKey("WeekPlanId"); + + b.HasIndex("PlantId"); + + b.HasIndex("SupplierId"); + + b.HasIndex("TransporterId"); + + b.ToTable("WeekPlan"); + + b.HasData( + new + { + WeekPlanId = 1, + DayNum = 1, + DeliveryHour = 20, + Note = "18K", + PlantId = 2, + SupplierId = 1, + TransporterId = 1 + }, + new + { + WeekPlanId = 2, + DayNum = 2, + DeliveryHour = 20, + Note = "18K", + PlantId = 2, + SupplierId = 1, + TransporterId = 1 + }, + new + { + WeekPlanId = 3, + DayNum = 3, + DeliveryHour = 20, + Note = "18K", + PlantId = 2, + SupplierId = 1, + TransporterId = 2 + }, + new + { + WeekPlanId = 4, + DayNum = 4, + DeliveryHour = 15, + Note = "9K", + PlantId = 2, + SupplierId = 1, + TransporterId = 1 + }, + new + { + WeekPlanId = 5, + DayNum = 4, + DeliveryHour = 20, + Note = "18K", + PlantId = 2, + SupplierId = 1, + TransporterId = 1 + }, + new + { + WeekPlanId = 6, + DayNum = 6, + DeliveryHour = 20, + Note = "18K", + PlantId = 2, + SupplierId = 1, + TransporterId = 1 + }, + new + { + WeekPlanId = 7, + DayNum = 2, + DeliveryHour = 14, + Note = "3K", + PlantId = 3, + SupplierId = 1, + TransporterId = 1 + }, + new + { + WeekPlanId = 8, + DayNum = 2, + DeliveryHour = 15, + Note = "15K", + PlantId = 4, + SupplierId = 1, + TransporterId = 1 + }, + new + { + WeekPlanId = 9, + DayNum = 2, + DeliveryHour = 17, + Note = "18K", + PlantId = 1, + SupplierId = 2, + TransporterId = 2 + }); + }); + + modelBuilder.Entity("GWMS.Data.DatabaseModels.OrderModel", b => + { + b.HasOne("GWMS.Data.DatabaseModels.PlantDetailModel", "Plant") + .WithMany() + .HasForeignKey("PlantId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("GWMS.Data.DatabaseModels.SupplierModel", "Supplier") + .WithMany() + .HasForeignKey("SupplierId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("GWMS.Data.DatabaseModels.TransporterModel", "Transporter") + .WithMany() + .HasForeignKey("TransporterId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Plant"); + + b.Navigation("Supplier"); + + b.Navigation("Transporter"); + }); + + modelBuilder.Entity("GWMS.Data.DatabaseModels.PlantLogModel", b => + { + b.HasOne("GWMS.Data.DatabaseModels.PlantDetailModel", "Plant") + .WithMany() + .HasForeignKey("PlantId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Plant"); + }); + + modelBuilder.Entity("GWMS.Data.DatabaseModels.PlantStatusModel", b => + { + b.HasOne("GWMS.Data.DatabaseModels.PlantDetailModel", "Plant") + .WithMany() + .HasForeignKey("PlantId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Plant"); + }); + + modelBuilder.Entity("GWMS.Data.DatabaseModels.WeekPlanModel", b => + { + b.HasOne("GWMS.Data.DatabaseModels.PlantDetailModel", "Plant") + .WithMany() + .HasForeignKey("PlantId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("GWMS.Data.DatabaseModels.SupplierModel", "Supplier") + .WithMany() + .HasForeignKey("SupplierId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("GWMS.Data.DatabaseModels.TransporterModel", "Transporter") + .WithMany() + .HasForeignKey("TransporterId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Plant"); + + b.Navigation("Supplier"); + + b.Navigation("Transporter"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/GWMS.Data/Migrations/20210806162035_AddOrderDefQty.cs b/GWMS.Data/Migrations/20210806162035_AddOrderDefQty.cs new file mode 100644 index 0000000..005ed10 --- /dev/null +++ b/GWMS.Data/Migrations/20210806162035_AddOrderDefQty.cs @@ -0,0 +1,81 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +namespace GWMS.Data.Migrations +{ + public partial class AddOrderDefQty : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "OrderQtyStd", + table: "PlantDetail", + type: "double", + nullable: false, + defaultValue: 0.0); + + migrationBuilder.UpdateData( + table: "PlantDetail", + keyColumn: "PlantId", + keyValue: 1, + column: "OrderQtyStd", + value: 18000.0); + + migrationBuilder.UpdateData( + table: "PlantDetail", + keyColumn: "PlantId", + keyValue: 2, + column: "OrderQtyStd", + value: 18000.0); + + migrationBuilder.UpdateData( + table: "PlantDetail", + keyColumn: "PlantId", + keyValue: 3, + column: "OrderQtyStd", + value: 18000.0); + + migrationBuilder.UpdateData( + table: "PlantDetail", + keyColumn: "PlantId", + keyValue: 4, + column: "OrderQtyStd", + value: 18000.0); + + migrationBuilder.UpdateData( + table: "Transporter", + keyColumn: "TransporterId", + keyValue: 1, + column: "PositionUpdated", + value: new DateTime(2021, 8, 6, 18, 20, 35, 347, DateTimeKind.Local).AddTicks(1664)); + + migrationBuilder.UpdateData( + table: "Transporter", + keyColumn: "TransporterId", + keyValue: 2, + column: "PositionUpdated", + value: new DateTime(2021, 8, 6, 18, 20, 35, 347, DateTimeKind.Local).AddTicks(2482)); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "OrderQtyStd", + table: "PlantDetail"); + + migrationBuilder.UpdateData( + table: "Transporter", + keyColumn: "TransporterId", + keyValue: 1, + column: "PositionUpdated", + value: new DateTime(2021, 8, 6, 15, 40, 12, 341, DateTimeKind.Local).AddTicks(9521)); + + migrationBuilder.UpdateData( + table: "Transporter", + keyColumn: "TransporterId", + keyValue: 2, + column: "PositionUpdated", + value: new DateTime(2021, 8, 6, 15, 40, 12, 341, DateTimeKind.Local).AddTicks(9901)); + } + } +} diff --git a/GWMS.Data/Migrations/20210809143652_OrderFillData.Designer.cs b/GWMS.Data/Migrations/20210809143652_OrderFillData.Designer.cs new file mode 100644 index 0000000..20a3542 --- /dev/null +++ b/GWMS.Data/Migrations/20210809143652_OrderFillData.Designer.cs @@ -0,0 +1,881 @@ +// +using System; +using GWMS.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +namespace GWMS.Data.Migrations +{ + [DbContext(typeof(GWMSContext))] + [Migration("20210809143652_OrderFillData")] + partial class OrderFillData + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("Relational:MaxIdentifierLength", 64) + .HasAnnotation("ProductVersion", "5.0.7"); + + modelBuilder.Entity("GWMS.Data.DatabaseModels.AnKeyValModel", b => + { + b.Property("KeyName") + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("Descript") + .HasMaxLength(250) + .HasColumnType("varchar(250)") + .HasComment("Descrizione dell'item"); + + b.Property("ValFloat") + .HasColumnType("int"); + + b.Property("ValInt") + .HasColumnType("int"); + + b.Property("ValString") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.HasKey("KeyName"); + + b.ToTable("AnKeyVal"); + }); + + modelBuilder.Entity("GWMS.Data.DatabaseModels.ConfigModel", b => + { + b.Property("KeyName") + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("Note") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.Property("Val") + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("ValStd") + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("Valore di default/riferimento per la variabile"); + + b.HasKey("KeyName"); + + b.ToTable("Config"); + }); + + modelBuilder.Entity("GWMS.Data.DatabaseModels.ItemModel", b => + { + b.Property("ItemId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("ItemCode") + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("ItemDesc") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.Property("ItemType") + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("UM") + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.HasKey("ItemId"); + + b.ToTable("Items"); + }); + + modelBuilder.Entity("GWMS.Data.DatabaseModels.ListValModel", b => + { + b.Property("TabName") + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasColumnName("TabName"); + + b.Property("FieldName") + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasColumnName("FieldName"); + + b.Property("Val") + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasColumnName("Val"); + + b.Property("Descript") + .HasMaxLength(250) + .HasColumnType("varchar(250)") + .HasColumnName("Descript"); + + b.Property("Ordinal") + .HasColumnType("int") + .HasColumnName("Ordinal"); + + b.HasKey("TabName", "FieldName", "Val"); + + b.ToTable("ListVal"); + }); + + modelBuilder.Entity("GWMS.Data.DatabaseModels.OrderModel", b => + { + b.Property("OrderId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("DtETA") + .HasColumnType("datetime(6)"); + + b.Property("DtExecEnd") + .HasColumnType("datetime(6)"); + + b.Property("DtExecStart") + .HasColumnType("datetime(6)"); + + b.Property("DtOrder") + .HasColumnType("datetime(6)"); + + b.Property("ExecutionQty") + .HasColumnType("double"); + + b.Property("LevelEnd") + .HasColumnType("double"); + + b.Property("LevelStart") + .HasColumnType("double"); + + b.Property("OrderCode") + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("OrderDesc") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.Property("OrderQty") + .HasColumnType("double"); + + b.Property("PlantId") + .HasColumnType("int"); + + b.Property("SupplierId") + .HasColumnType("int"); + + b.Property("TransporterId") + .HasColumnType("int"); + + b.HasKey("OrderId"); + + b.HasIndex("PlantId"); + + b.HasIndex("SupplierId"); + + b.HasIndex("TransporterId"); + + b.ToTable("Order"); + }); + + modelBuilder.Entity("GWMS.Data.DatabaseModels.PlantDetailModel", b => + { + b.Property("PlantId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("LevelMax") + .HasColumnType("double"); + + b.Property("LevelReorder") + .HasColumnType("double"); + + b.Property("OrderQtyStd") + .HasColumnType("double"); + + b.Property("PlantCode") + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("PlantDesc") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.HasKey("PlantId"); + + b.ToTable("PlantDetail"); + + b.HasData( + new + { + PlantId = 1, + LevelMax = 26000.0, + LevelReorder = 15000.0, + OrderQtyStd = 18000.0, + PlantCode = "PIZ03", + PlantDesc = "Collecchio" + }, + new + { + PlantId = 2, + LevelMax = 28000.0, + LevelReorder = 15000.0, + OrderQtyStd = 18000.0, + PlantCode = "PIZ04", + PlantDesc = "Noceto" + }, + new + { + PlantId = 3, + LevelMax = 24000.0, + LevelReorder = 15000.0, + OrderQtyStd = 18000.0, + PlantCode = "PIZ05", + PlantDesc = "Baganzola" + }, + new + { + PlantId = 4, + LevelMax = 26000.0, + LevelReorder = 15000.0, + OrderQtyStd = 18000.0, + PlantCode = "PIZ08", + PlantDesc = "Pilastrello" + }); + }); + + modelBuilder.Entity("GWMS.Data.DatabaseModels.PlantLogModel", b => + { + b.Property("PlantDataId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("DtEvent") + .HasColumnType("datetime(6)"); + + b.Property("FluxType") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.Property("PlantId") + .HasColumnType("int"); + + b.Property("ValNumber") + .HasColumnType("double"); + + b.Property("ValString") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.HasKey("PlantDataId"); + + b.HasIndex("PlantId"); + + b.ToTable("PlantLog"); + }); + + modelBuilder.Entity("GWMS.Data.DatabaseModels.PlantStatusModel", b => + { + b.Property("PlantId") + .HasColumnType("int"); + + b.Property("FluxType") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.Property("DtEvent") + .HasColumnType("datetime(6)"); + + b.Property("ValNumber") + .HasColumnType("double"); + + b.Property("ValString") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.HasKey("PlantId", "FluxType"); + + b.ToTable("PlantStatus"); + }); + + modelBuilder.Entity("GWMS.Data.DatabaseModels.RebootLogModel", b => + { + b.Property("RecordId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("DtEvent") + .HasColumnType("datetime(6)"); + + b.Property("Item") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.Property("Payload") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.HasKey("RecordId"); + + b.ToTable("RebootLog"); + }); + + modelBuilder.Entity("GWMS.Data.DatabaseModels.SupplierModel", b => + { + b.Property("SupplierId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("SupplierCode") + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("SupplierDesc") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.HasKey("SupplierId"); + + b.ToTable("Supplier"); + + b.HasData( + new + { + SupplierId = 1, + SupplierCode = "LIQUIGAS", + SupplierDesc = "Liquigas" + }, + new + { + SupplierId = 2, + SupplierCode = "VULKANGAS", + SupplierDesc = "Vulkangas" + }); + }); + + modelBuilder.Entity("GWMS.Data.DatabaseModels.TransporterModel", b => + { + b.Property("TransporterId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("PositionLatitude") + .HasColumnType("double"); + + b.Property("PositionLongitude") + .HasColumnType("double"); + + b.Property("PositionUpdated") + .HasColumnType("datetime(6)"); + + b.Property("TransporterCode") + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("TransporterDesc") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.HasKey("TransporterId"); + + b.ToTable("Transporter"); + + b.HasData( + new + { + TransporterId = 1, + PositionLatitude = 0.0, + PositionLongitude = 0.0, + PositionUpdated = new DateTime(2021, 8, 9, 16, 36, 52, 691, DateTimeKind.Local).AddTicks(9092), + TransporterCode = "LEVO", + TransporterDesc = "Levorato" + }, + new + { + TransporterId = 2, + PositionLatitude = 0.0, + PositionLongitude = 0.0, + PositionUpdated = new DateTime(2021, 8, 9, 16, 36, 52, 691, DateTimeKind.Local).AddTicks(9470), + TransporterCode = "TRAF", + TransporterDesc = "Traffik" + }); + }); + + modelBuilder.Entity("GWMS.Data.DatabaseModels.UserModel", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("AuthKey") + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("Email") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.Property("Firstname") + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("IsActive") + .HasColumnType("tinyint(1)"); + + b.Property("Lang") + .HasMaxLength(10) + .HasColumnType("varchar(10)"); + + b.Property("Lastname") + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("Livello") + .HasColumnType("int"); + + b.Property("MaskPlantId") + .HasColumnType("int"); + + b.Property("MaskSupplierId") + .HasColumnType("int"); + + b.Property("MaskTranspId") + .HasColumnType("int"); + + b.Property("SaltPasswd") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.Property("UserName") + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.HasKey("UserId"); + + b.ToTable("Users"); + + b.HasData( + new + { + UserId = 1, + AuthKey = "th1sIsTh3R1vrOfThNgt98", + Email = "samuele@steamware.net", + Firstname = "Samuele", + IsActive = true, + Lang = "IT", + Lastname = "Locatelli", + Livello = 1, + MaskPlantId = 0, + MaskSupplierId = 0, + MaskTranspId = 0, + SaltPasswd = "", + UserName = "samuele.locatelli" + }, + new + { + UserId = 2, + AuthKey = "th1sIsTh3R1vrOfThNgt91", + Email = "giancarlo@steamware.net", + Firstname = "Giancarlo", + IsActive = true, + Lang = "IT", + Lastname = "Rottoli", + Livello = 1, + MaskPlantId = 0, + MaskSupplierId = 0, + MaskTranspId = 0, + SaltPasswd = "", + UserName = "giancarlo.rottoli" + }, + new + { + UserId = 3, + AuthKey = "th1sIsTh3R1vrOfThNgt93", + Email = "info@steamware.net", + Firstname = "Steamware", + IsActive = true, + Lang = "IT", + Lastname = "Admin", + Livello = 1, + MaskPlantId = 0, + MaskSupplierId = 0, + MaskTranspId = 0, + SaltPasswd = "", + UserName = "steamw.admin" + }, + new + { + UserId = 4, + AuthKey = "th1sIsTh3R1vrOfThNgt97", + Email = "a.pizzaferri@pizzaferripetroli.it", + Firstname = "Angelo", + IsActive = true, + Lang = "IT", + Lastname = "Pizzaferri", + Livello = 2, + MaskPlantId = 0, + MaskSupplierId = 0, + MaskTranspId = 0, + SaltPasswd = "", + UserName = "angelo.pizzaferri" + }, + new + { + UserId = 5, + AuthKey = "th1sIsTh3R1vrOfThNgt99", + Email = "andrei.valeanu@winnlab.it", + Firstname = "Andrei", + IsActive = true, + Lang = "IT", + Lastname = "Valeanu", + Livello = 2, + MaskPlantId = 0, + MaskSupplierId = 0, + MaskTranspId = 0, + SaltPasswd = "", + UserName = "andrei.valeanu" + }, + new + { + UserId = 6, + AuthKey = "th1sIsTh3R1vrOfThNgt92", + Email = "info@steamware.net", + Firstname = "User", + IsActive = true, + Lang = "IT", + Lastname = "LIQUIGAS", + Livello = 4, + MaskPlantId = 0, + MaskSupplierId = 1, + MaskTranspId = 0, + SaltPasswd = "", + UserName = "liquigas.user01" + }, + new + { + UserId = 7, + AuthKey = "th1sIsTh3R1vrOfThNgt94", + Email = "info@steamware.net", + Firstname = "User", + IsActive = true, + Lang = "IT", + Lastname = "VULKANGAS", + Livello = 4, + MaskPlantId = 0, + MaskSupplierId = 2, + MaskTranspId = 0, + SaltPasswd = "", + UserName = "vulkangas.user01" + }, + new + { + UserId = 8, + AuthKey = "th1sIsTh3R1vrOfThNgt95", + Email = "info@steamware.net", + Firstname = "User", + IsActive = true, + Lang = "IT", + Lastname = "LEVORATO", + Livello = 4, + MaskPlantId = 0, + MaskSupplierId = 0, + MaskTranspId = 1, + SaltPasswd = "", + UserName = "levorato.user01" + }, + new + { + UserId = 9, + AuthKey = "th1sIsTh3R1vrOfThNgt96", + Email = "info@steamware.net", + Firstname = "User", + IsActive = true, + Lang = "IT", + Lastname = "TRAFFIK", + Livello = 4, + MaskPlantId = 0, + MaskSupplierId = 0, + MaskTranspId = 2, + SaltPasswd = "", + UserName = "traffik.user01" + }, + new + { + UserId = 10, + AuthKey = "th1sIsTh3R1vrOfThNgt96", + Email = "info@steamware.net", + Firstname = "Stazione", + IsActive = true, + Lang = "IT", + Lastname = "Collecchio", + Livello = 3, + MaskPlantId = 1, + MaskSupplierId = 0, + MaskTranspId = 0, + SaltPasswd = "", + UserName = "piz03.user01" + }, + new + { + UserId = 11, + AuthKey = "th1sIsTh3R1vrOfThNgt96", + Email = "info@steamware.net", + Firstname = "Stazione", + IsActive = true, + Lang = "IT", + Lastname = "Noceto", + Livello = 3, + MaskPlantId = 2, + MaskSupplierId = 0, + MaskTranspId = 0, + SaltPasswd = "", + UserName = "piz04.user01" + }, + new + { + UserId = 12, + AuthKey = "th1sIsTh3R1vrOfThNgt96", + Email = "info@steamware.net", + Firstname = "Stazione", + IsActive = true, + Lang = "IT", + Lastname = "Baganzola", + Livello = 3, + MaskPlantId = 3, + MaskSupplierId = 0, + MaskTranspId = 0, + SaltPasswd = "", + UserName = "piz05.user01" + }, + new + { + UserId = 13, + AuthKey = "th1sIsTh3R1vrOfThNgt96", + Email = "info@steamware.net", + Firstname = "Stazione", + IsActive = true, + Lang = "IT", + Lastname = "Pilastrello", + Livello = 3, + MaskPlantId = 4, + MaskSupplierId = 0, + MaskTranspId = 0, + SaltPasswd = "", + UserName = "piz08.user01" + }); + }); + + modelBuilder.Entity("GWMS.Data.DatabaseModels.WeekPlanModel", b => + { + b.Property("WeekPlanId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("DayNum") + .HasColumnType("int"); + + b.Property("DeliveryHour") + .HasColumnType("int"); + + b.Property("Note") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.Property("PlantId") + .HasColumnType("int"); + + b.Property("SupplierId") + .HasColumnType("int"); + + b.Property("TransporterId") + .HasColumnType("int"); + + b.HasKey("WeekPlanId"); + + b.HasIndex("PlantId"); + + b.HasIndex("SupplierId"); + + b.HasIndex("TransporterId"); + + b.ToTable("WeekPlan"); + + b.HasData( + new + { + WeekPlanId = 1, + DayNum = 1, + DeliveryHour = 20, + Note = "18K", + PlantId = 2, + SupplierId = 1, + TransporterId = 1 + }, + new + { + WeekPlanId = 2, + DayNum = 2, + DeliveryHour = 20, + Note = "18K", + PlantId = 2, + SupplierId = 1, + TransporterId = 1 + }, + new + { + WeekPlanId = 3, + DayNum = 3, + DeliveryHour = 20, + Note = "18K", + PlantId = 2, + SupplierId = 1, + TransporterId = 2 + }, + new + { + WeekPlanId = 4, + DayNum = 4, + DeliveryHour = 15, + Note = "9K", + PlantId = 2, + SupplierId = 1, + TransporterId = 1 + }, + new + { + WeekPlanId = 5, + DayNum = 4, + DeliveryHour = 20, + Note = "18K", + PlantId = 2, + SupplierId = 1, + TransporterId = 1 + }, + new + { + WeekPlanId = 6, + DayNum = 6, + DeliveryHour = 20, + Note = "18K", + PlantId = 2, + SupplierId = 1, + TransporterId = 1 + }, + new + { + WeekPlanId = 7, + DayNum = 2, + DeliveryHour = 14, + Note = "3K", + PlantId = 3, + SupplierId = 1, + TransporterId = 1 + }, + new + { + WeekPlanId = 8, + DayNum = 2, + DeliveryHour = 15, + Note = "15K", + PlantId = 4, + SupplierId = 1, + TransporterId = 1 + }, + new + { + WeekPlanId = 9, + DayNum = 2, + DeliveryHour = 17, + Note = "18K", + PlantId = 1, + SupplierId = 2, + TransporterId = 2 + }); + }); + + modelBuilder.Entity("GWMS.Data.DatabaseModels.OrderModel", b => + { + b.HasOne("GWMS.Data.DatabaseModels.PlantDetailModel", "Plant") + .WithMany() + .HasForeignKey("PlantId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("GWMS.Data.DatabaseModels.SupplierModel", "Supplier") + .WithMany() + .HasForeignKey("SupplierId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("GWMS.Data.DatabaseModels.TransporterModel", "Transporter") + .WithMany() + .HasForeignKey("TransporterId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Plant"); + + b.Navigation("Supplier"); + + b.Navigation("Transporter"); + }); + + modelBuilder.Entity("GWMS.Data.DatabaseModels.PlantLogModel", b => + { + b.HasOne("GWMS.Data.DatabaseModels.PlantDetailModel", "Plant") + .WithMany() + .HasForeignKey("PlantId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Plant"); + }); + + modelBuilder.Entity("GWMS.Data.DatabaseModels.PlantStatusModel", b => + { + b.HasOne("GWMS.Data.DatabaseModels.PlantDetailModel", "Plant") + .WithMany() + .HasForeignKey("PlantId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Plant"); + }); + + modelBuilder.Entity("GWMS.Data.DatabaseModels.WeekPlanModel", b => + { + b.HasOne("GWMS.Data.DatabaseModels.PlantDetailModel", "Plant") + .WithMany() + .HasForeignKey("PlantId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("GWMS.Data.DatabaseModels.SupplierModel", "Supplier") + .WithMany() + .HasForeignKey("SupplierId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("GWMS.Data.DatabaseModels.TransporterModel", "Transporter") + .WithMany() + .HasForeignKey("TransporterId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Plant"); + + b.Navigation("Supplier"); + + b.Navigation("Transporter"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/GWMS.Data/Migrations/20210809143652_OrderFillData.cs b/GWMS.Data/Migrations/20210809143652_OrderFillData.cs new file mode 100644 index 0000000..b3b37ef --- /dev/null +++ b/GWMS.Data/Migrations/20210809143652_OrderFillData.cs @@ -0,0 +1,64 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +namespace GWMS.Data.Migrations +{ + public partial class OrderFillData : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "LevelEnd", + table: "Order", + type: "double", + nullable: false, + defaultValue: 0.0); + + migrationBuilder.AddColumn( + name: "LevelStart", + table: "Order", + type: "double", + nullable: false, + defaultValue: 0.0); + + migrationBuilder.UpdateData( + table: "Transporter", + keyColumn: "TransporterId", + keyValue: 1, + column: "PositionUpdated", + value: new DateTime(2021, 8, 9, 16, 36, 52, 691, DateTimeKind.Local).AddTicks(9092)); + + migrationBuilder.UpdateData( + table: "Transporter", + keyColumn: "TransporterId", + keyValue: 2, + column: "PositionUpdated", + value: new DateTime(2021, 8, 9, 16, 36, 52, 691, DateTimeKind.Local).AddTicks(9470)); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "LevelEnd", + table: "Order"); + + migrationBuilder.DropColumn( + name: "LevelStart", + table: "Order"); + + migrationBuilder.UpdateData( + table: "Transporter", + keyColumn: "TransporterId", + keyValue: 1, + column: "PositionUpdated", + value: new DateTime(2021, 8, 6, 18, 20, 35, 347, DateTimeKind.Local).AddTicks(1664)); + + migrationBuilder.UpdateData( + table: "Transporter", + keyColumn: "TransporterId", + keyValue: 2, + column: "PositionUpdated", + value: new DateTime(2021, 8, 6, 18, 20, 35, 347, DateTimeKind.Local).AddTicks(2482)); + } + } +} diff --git a/GWMS.Data/Migrations/GWMSContextModelSnapshot.cs b/GWMS.Data/Migrations/GWMSContextModelSnapshot.cs index ad32f55..1682d20 100644 --- a/GWMS.Data/Migrations/GWMSContextModelSnapshot.cs +++ b/GWMS.Data/Migrations/GWMSContextModelSnapshot.cs @@ -146,6 +146,12 @@ namespace GWMS.Data.Migrations b.Property("ExecutionQty") .HasColumnType("double"); + b.Property("LevelEnd") + .HasColumnType("double"); + + b.Property("LevelStart") + .HasColumnType("double"); + b.Property("OrderCode") .HasMaxLength(100) .HasColumnType("varchar(100)"); @@ -189,6 +195,9 @@ namespace GWMS.Data.Migrations b.Property("LevelReorder") .HasColumnType("double"); + b.Property("OrderQtyStd") + .HasColumnType("double"); + b.Property("PlantCode") .HasMaxLength(100) .HasColumnType("varchar(100)"); @@ -207,6 +216,7 @@ namespace GWMS.Data.Migrations PlantId = 1, LevelMax = 26000.0, LevelReorder = 15000.0, + OrderQtyStd = 18000.0, PlantCode = "PIZ03", PlantDesc = "Collecchio" }, @@ -215,6 +225,7 @@ namespace GWMS.Data.Migrations PlantId = 2, LevelMax = 28000.0, LevelReorder = 15000.0, + OrderQtyStd = 18000.0, PlantCode = "PIZ04", PlantDesc = "Noceto" }, @@ -223,6 +234,7 @@ namespace GWMS.Data.Migrations PlantId = 3, LevelMax = 24000.0, LevelReorder = 15000.0, + OrderQtyStd = 18000.0, PlantCode = "PIZ05", PlantDesc = "Baganzola" }, @@ -231,6 +243,7 @@ namespace GWMS.Data.Migrations PlantId = 4, LevelMax = 26000.0, LevelReorder = 15000.0, + OrderQtyStd = 18000.0, PlantCode = "PIZ08", PlantDesc = "Pilastrello" }); @@ -378,7 +391,7 @@ namespace GWMS.Data.Migrations TransporterId = 1, PositionLatitude = 0.0, PositionLongitude = 0.0, - PositionUpdated = new DateTime(2021, 8, 6, 15, 40, 12, 341, DateTimeKind.Local).AddTicks(9521), + PositionUpdated = new DateTime(2021, 8, 9, 16, 36, 52, 691, DateTimeKind.Local).AddTicks(9092), TransporterCode = "LEVO", TransporterDesc = "Levorato" }, @@ -387,7 +400,7 @@ namespace GWMS.Data.Migrations TransporterId = 2, PositionLatitude = 0.0, PositionLongitude = 0.0, - PositionUpdated = new DateTime(2021, 8, 6, 15, 40, 12, 341, DateTimeKind.Local).AddTicks(9901), + PositionUpdated = new DateTime(2021, 8, 9, 16, 36, 52, 691, DateTimeKind.Local).AddTicks(9470), TransporterCode = "TRAF", TransporterDesc = "Traffik" }); diff --git a/GWMS.Data/ModelBuilderExtensions.cs b/GWMS.Data/ModelBuilderExtensions.cs index fb434ac..ae66fee 100644 --- a/GWMS.Data/ModelBuilderExtensions.cs +++ b/GWMS.Data/ModelBuilderExtensions.cs @@ -37,10 +37,10 @@ namespace GWMS.Data // inizializzazione dei valori di default x Plant modelBuilder.Entity().HasData( - new PlantDetailModel { PlantId = 1, PlantCode = "PIZ03", PlantDesc = "Collecchio", LevelMax = 26000, LevelReorder = 15000 }, - new PlantDetailModel { PlantId = 2, PlantCode = "PIZ04", PlantDesc = "Noceto", LevelMax = 28000, LevelReorder = 15000 }, - new PlantDetailModel { PlantId = 3, PlantCode = "PIZ05", PlantDesc = "Baganzola", LevelMax = 24000, LevelReorder = 15000 }, - new PlantDetailModel { PlantId = 4, PlantCode = "PIZ08", PlantDesc = "Pilastrello", LevelMax = 26000, LevelReorder = 15000 } + new PlantDetailModel { PlantId = 1, PlantCode = "PIZ03", PlantDesc = "Collecchio", LevelMax = 26000, LevelReorder = 15000, OrderQtyStd = 9000 }, + new PlantDetailModel { PlantId = 2, PlantCode = "PIZ04", PlantDesc = "Noceto", LevelMax = 28000, LevelReorder = 15000, OrderQtyStd = 18000 }, + new PlantDetailModel { PlantId = 3, PlantCode = "PIZ05", PlantDesc = "Baganzola", LevelMax = 24000, LevelReorder = 15000, OrderQtyStd = 9000 }, + new PlantDetailModel { PlantId = 4, PlantCode = "PIZ08", PlantDesc = "Pilastrello", LevelMax = 26000, LevelReorder = 15000, OrderQtyStd = 9000 } // new PlantDetailModel { PlantId = 1, PlantCode = "PIZ03", PlantDesc = "Collecchio", LevelMax = 26000, PressMax = 19, PressBHMax = 270, PressBLMax = 270 }, //new PlantDetailModel { PlantId = 2, PlantCode = "PIZ04", PlantDesc = "Noceto", LevelMax = 28000, PressMax = 19, PressBHMax = 270, PressBLMax = 270 }, //new PlantDetailModel { PlantId = 3, PlantCode = "PIZ05", PlantDesc = "Baganzola", LevelMax = 24000, PressMax = 19, PressBHMax = 270, PressBLMax = 270 }, diff --git a/GWMS.UI/Components/OrderAdminEditor.razor b/GWMS.UI/Components/OrderAdminEditor.razor index 92fafaa..0a9b3fb 100644 --- a/GWMS.UI/Components/OrderAdminEditor.razor +++ b/GWMS.UI/Components/OrderAdminEditor.razor @@ -7,7 +7,9 @@ @inject MessageService AppMService @inject GWMSDataService DataService +@inject NavigationManager NavManager @inject IConfiguration Configuration +@inject IJSRuntime JSRuntime
@@ -17,15 +19,33 @@
-
+
-
+
-
+
- + + + +
+ +
+
+
+
+
+ +
+ +
+
+
+
+
+
@@ -37,42 +57,113 @@
-
- @*
-
- - - -
- -
*@ -
-
+
- + + + +
+ + @foreach (var item in transpList) + { + + } + +
+
+
+
+
+
- +
+ note +
+
+
+
+
+
- Note +
+ +
+ kg +
-
- -
-
- +
+
+ +
+ +
+
+
+ +
+ @if (editAll) + { +
+
+
+
+
+
+
+
+
+
+ +
+ +
+ inizio carico +
+
+
+
+
+
+ +
+ +
+ fine carico +
+
+
+
+
+
+
+
+ + + +
+ +
+ kg +
+
+
+
+
+
+ }
@@ -80,6 +171,7 @@ @code { private List suppList; + private List transpList; protected OrderModel _currItem = new OrderModel(); protected int _supplierId { get; set; } = 0; @@ -97,6 +189,8 @@ } } + private bool editAll { get; set; } = false; + [Parameter] public EventCallback DataReset { get; set; } [Parameter] @@ -135,6 +229,22 @@ await DataReset.InvokeAsync(0); } + private async Task deleteRecord() + { + if (!await JSRuntime.InvokeAsync("confirm", "Sicuro di voler eliminare l'ordine selezionato??")) + return; + + if (_currItem != null) + { + DataService.OrderDelete(_currItem); + await DataUpdated.InvokeAsync(1); + } + else + { + Console.WriteLine("User null!"); + } + } + protected override async Task OnInitializedAsync() { await ReloadAllData(); @@ -143,6 +253,23 @@ protected async Task ReloadAllData() { suppList = await DataService.SuppliersGetAll(); + transpList = await DataService.TransportersGetAll(); + + // vedere anche https://www.mikesdotnetting.com/article/340/working-with-query-strings-in-blazor + var uri = NavManager.ToAbsoluteUri(NavManager.Uri); + var currMode = GetQueryParm("currMode"); + if (!string.IsNullOrEmpty(currMode)) + { + editAll = currMode.Equals("debug"); + } + } + + // Blazor: get query parm from the URL + protected string GetQueryParm(string parmName) + { + var uriBuilder = new UriBuilder(NavManager.Uri); + var q = System.Web.HttpUtility.ParseQueryString(uriBuilder.Query); + return q[parmName] ?? ""; } /// diff --git a/GWMS.UI/Components/PlantDetail.razor.cs b/GWMS.UI/Components/PlantDetail.razor.cs index b9e9f0b..ef2baa2 100644 --- a/GWMS.UI/Components/PlantDetail.razor.cs +++ b/GWMS.UI/Components/PlantDetail.razor.cs @@ -130,11 +130,8 @@ namespace GWMS.UI.Components { int answ = 1; int numCount = _currItem.LevelTS.Count; - if (numCount > 200) - answ = 4; - else if (numCount > 150) - answ = 3; - else if (numCount >= 50) + // passo a 2h se > 1 week + if (numCount > 120) answ = 2; redFact = answ; } @@ -159,7 +156,7 @@ namespace GWMS.UI.Components private List GetLineChartLabels() { fixRedFactor(); - var answ = _currItem.LevelTS.Where((cat, index) => index % redFact == 0).Select(x => x.DtEvent.ToString("dd.MM HH")).ToList(); + var answ = _currItem.LevelTS.Where((cat, index) => index % redFact == 0).Select(x => x.DtEvent.ToString("dd/MM HH")).ToList(); return answ; } diff --git a/GWMS.UI/Components/WeekPlanEditor.razor b/GWMS.UI/Components/WeekPlanEditor.razor index caaf8b2..d547d7b 100644 --- a/GWMS.UI/Components/WeekPlanEditor.razor +++ b/GWMS.UI/Components/WeekPlanEditor.razor @@ -206,7 +206,7 @@ private async Task deleteRecord() { - if (!await JSRuntime.InvokeAsync("confirm", $"Sicuro di voler eliminare la consegna selezionata??")) + if (!await JSRuntime.InvokeAsync("confirm", "Sicuro di voler eliminare la consegna selezionata??")) return; if (_currItem != null) diff --git a/GWMS.UI/Controllers/IOBController.cs b/GWMS.UI/Controllers/IOBController.cs index 0433890..184838b 100644 --- a/GWMS.UI/Controllers/IOBController.cs +++ b/GWMS.UI/Controllers/IOBController.cs @@ -90,6 +90,29 @@ namespace GWMS.UI.Controllers return $"OK"; } + /// + /// Esegue verifica livelli ed eventuale creazione ordini refill + /// + /// GET: IOB/checkLevels/SIMUL_03 + /// + /// + /// + [HttpGet("checkLevels/{id}")] + public async Task checkLevels(string id) + { + bool fatto = false; + // ...verifica per ricalcolo ordini... + fatto = await _DataService.checkLevels(); + if (fatto) + { + return "Ok"; + } + else + { + return "NO"; + } + } + // DELETE api/IOB/5 [HttpDelete("{id}")] public void Delete(int id) @@ -248,6 +271,9 @@ namespace GWMS.UI.Controllers newData.Add(newItem); // insert! fatto = await _DataService.PlantLogInsert(newData); + + // effettuo SEMPRE verifica per ricalcolo ordini... + _DataService.checkLevels(); } } catch (Exception exc) @@ -286,6 +312,9 @@ namespace GWMS.UI.Controllers List plData = rawData.fluxData.Select(jpl => _DataService.convertFluxToPL(currPlant.PlantId, jpl)).ToList(); //insert! fatto = await _DataService.PlantLogInsert(plData); + + // effettuo SEMPRE verifica per ricalcolo ordini... + await _DataService.checkLevels(); } } if (fatto) diff --git a/GWMS.UI/Data/GWMSDataService.cs b/GWMS.UI/Data/GWMSDataService.cs index 84137ee..0495f21 100644 --- a/GWMS.UI/Data/GWMSDataService.cs +++ b/GWMS.UI/Data/GWMSDataService.cs @@ -186,12 +186,86 @@ namespace GWMS.UI.Data return mHash(string.Format("ExeTask:{0}", idxMacchina)); } + protected async Task checkCreateOrders() + { + bool fatto = false; + List NewOrders = new List(); + DateTime adesso = DateTime.Now; + int supplierId = 1; + int transporterId = 1; + double qtyOrd = 0; + // faccio ciclo x tutti gli impianti + List currPlantData = await PlantsGetAll(); + List fullWeekPlan = WeekPlanGet().Result; + foreach (var item in currPlantData) + { + // recupero ordini x il plant + var currOrderOpen = await OrdersGetOpen(item.PlantId); + // calcolo delta ordinato + qtyOrd = currOrderOpen.Sum(x => x.OrderQty); + // verifico il livello attuale + i valori degli ordini APERTI rispetto al livello di riordino... + if (item.LevelAct + qtyOrd < item.LevelReorder) + { + // (FARE !!! VERIFICA!!!!) + // calcolo supplier/transporter da tab WeekPlan + var dailyPlan = fullWeekPlan.Where(x => x.PlantId == item.PlantId && (int)x.DayNum == ((int)adesso.DayOfWeek + 1)).FirstOrDefault(); + if (dailyPlan != null) + { + supplierId = dailyPlan.SupplierId; + transporterId = dailyPlan.TransporterId; + } + else + { + supplierId = 1; + transporterId = 1; + } + // stacco un NUOVO ordine di quantità finita + NewOrders.Add(new OrderModel() { DtOrder = adesso, OrderQty = item.OrderQtyStd, PlantId = item.PlantId, OrderCode = $"O{item.PlantCode}{adesso:yyMMddHHmm}", OrderDesc = $"Ordine {item.PlantDesc} - {adesso}", SupplierId = supplierId, TransporterId = transporterId }); + } + } + if (NewOrders.Count > 0) + { + // effettuo inserimento ordini! + dbController.OrderInsert(NewOrders); + + // invio email x ogni fornitore x i NUOVI ordini inseriti + var orders4supp = NewOrders.GroupBy(g => g.SupplierId).FirstOrDefault(); + foreach (var item in orders4supp) + { + // invio email di notifica nuovi ordini inseriti + } + + // invio email x ogni fornitore x i NUOVI ordini inseriti + var orders4transp = NewOrders.GroupBy(g => g.TransporterId).FirstOrDefault(); + foreach (var item in orders4transp) + { + // invio email di notifica nuovi ordini inseriti + } + fatto = true; + } + return fatto; + } + protected string getCacheKey(string TableName, SelectOrderData CurrFilter) { string answ = $"{TableName}:P_{CurrFilter.PlantId:00}:S_{CurrFilter.SupplierId:00}:T_{CurrFilter.TransporterId:00}:D_{CurrFilter.DateStart:yyyyMMddHHmm}_{CurrFilter.DateEnd:yyyyMMddHHmm}"; return answ; } + /// + /// invalida tutta la cache in caso di update + /// + /// + protected async void invalidateAllCache() + { + await distributedCache.RemoveAsync("DATA:CONFIG"); + await distributedCache.RemoveAsync("DATA:CHECKLEVEL"); + await distributedCache.RemoveAsync("DATA:PLANTS:ListDTO"); + await distributedCache.RemoveAsync("DATA:SUPPL:List"); + await distributedCache.RemoveAsync("DATA:TRANSP:List"); + await distributedCache.RemoveAsync("DATA:WEEKPLAN:List"); + } + protected async Task> PlantLogGetLastByFlux(int PlantId) { List lastValues = new List(); @@ -234,6 +308,45 @@ namespace GWMS.UI.Data return $"DATA:{dataType}"; } + /// + /// effettua verifica x tutti i plant, se livello > livello riordino e NON ci sono ordini APERTI in arrivo --> lancia ordine + /// + public async Task checkLevels() + { + bool fatto = false; + // effettuo verifica veto ricalcolo ordini da cache... + DateTime adesso = DateTime.Now; + DateTime vetoCheck = adesso.AddMinutes(1); + string cacheKey = "DATA:CHECKLEVEL"; + string rawData; + try + { + var redisDataList = await distributedCache.GetAsync(cacheKey); + // se non ho veto --> controllo + if (redisDataList != null) + { + rawData = Encoding.UTF8.GetString(redisDataList); + vetoCheck = JsonConvert.DeserializeObject(rawData); + } + else + { + vetoCheck = adesso.AddMinutes(-1); + } + if (adesso > vetoCheck) + { + fatto = await checkCreateOrders(); + // imposto nuovo veto a 5 min... + vetoCheck = adesso.AddMinutes(5); + rawData = JsonConvert.SerializeObject(vetoCheck); + redisDataList = Encoding.UTF8.GetBytes(rawData); + await distributedCache.SetAsync(cacheKey, redisDataList, cacheOpt(false)); + } + } + catch + { } + return fatto; + } + public async Task> ConfigGetAll() { //return Task.FromResult(dbController.ActionsGetAll()); @@ -341,13 +454,26 @@ namespace GWMS.UI.Data return answ; } + public async void OrderDelete(OrderModel currItem) + { + try + { + dbController.OrderDelete(currItem); + invalidateAllCache(); + dbController.ResetController(); + } + catch + { + } + } + public async Task> OrdersGetFilt(SelectOrderData CurrFilter) { List dbResult = new List(); Stopwatch stopWatch = new Stopwatch(); stopWatch.Start(); - dbResult = dbController.GetOrdersFilt(CurrFilter.PlantId, CurrFilter.SupplierId, CurrFilter.TransporterId, CurrFilter.DateStart, CurrFilter.DateEnd); + dbResult = dbController.GetOrdersFilt(CurrFilter.PlantId, CurrFilter.SupplierId, CurrFilter.TransporterId, CurrFilter.DateStart, CurrFilter.DateEnd, CurrFilter.ShowClosed); stopWatch.Stop(); TimeSpan ts = stopWatch.Elapsed; Log.Info($"Effettuata lettura da DB per OrdersGetFilt: {ts.TotalMilliseconds} ms"); @@ -355,11 +481,32 @@ namespace GWMS.UI.Data return await Task.FromResult(dbResult); } + /// + /// Elenco degli ordini ancora aperti x il Plant + /// + /// + /// + public async Task> OrdersGetOpen(int PlantId) + { + List dbResult = new List(); + + Stopwatch stopWatch = new Stopwatch(); + stopWatch.Start(); + dbResult = dbController.GetOrdersOpen(PlantId); + stopWatch.Stop(); + TimeSpan ts = stopWatch.Elapsed; + Log.Info($"Effettuata lettura da DB per OrdersGetOpen | PlantId: {PlantId} | {ts.TotalMilliseconds} ms"); + + return await Task.FromResult(dbResult); + } + public void OrderUpdate(OrderModel currItem) { try { dbController.OrderUpdate(currItem); + invalidateAllCache(); + dbController.ResetController(); } catch { @@ -506,6 +653,11 @@ namespace GWMS.UI.Data return await Task.FromResult(dbController.RegenDB(1, numDays, stepMin, maxHourRate)); } + public void ResetController() + { + dbController.ResetController(); + } + public void rollBackEdit(object item) { dbController.rollBackEntity(item); @@ -595,8 +747,7 @@ namespace GWMS.UI.Data //dbController.ResetController(); dbController.WeekPlanDelete(currItem); string cacheKey = $"DATA:WEEKPLAN:List"; - var redisDataList = Encoding.UTF8.GetBytes(""); - await distributedCache.SetAsync(cacheKey, redisDataList, cacheOpt(true)); + await distributedCache.RemoveAsync(cacheKey); } catch { @@ -623,8 +774,7 @@ namespace GWMS.UI.Data //dbController.ResetController(); dbController.WeekPlanUpdate(currItem); string cacheKey = $"DATA:WEEKPLAN:List"; - var redisDataList = Encoding.UTF8.GetBytes(""); - await distributedCache.SetAsync(cacheKey, redisDataList, cacheOpt(true)); + await distributedCache.RemoveAsync(cacheKey); } catch { diff --git a/GWMS.UI/Data/SelectData.cs b/GWMS.UI/Data/SelectData.cs index 473f77d..b1b4bbb 100644 --- a/GWMS.UI/Data/SelectData.cs +++ b/GWMS.UI/Data/SelectData.cs @@ -25,7 +25,7 @@ namespace GWMS.UI.Data public static SelectData Init(int minRound, int numDayPrev) { TimeSpan DayElapsed = DateTime.Now.Subtract(DateTime.Today); - int minDay = (int)(DayElapsed.TotalMinutes / minRound) * minRound; + int minDay = (int)((DayElapsed.TotalMinutes / minRound) + 1) * minRound; DateTime endRounded = DateTime.Today.AddMinutes(minDay); SelectData answ = new SelectData() { diff --git a/GWMS.UI/Data/SelectOrderData.cs b/GWMS.UI/Data/SelectOrderData.cs index c2dc59f..569d0a5 100644 --- a/GWMS.UI/Data/SelectOrderData.cs +++ b/GWMS.UI/Data/SelectOrderData.cs @@ -10,7 +10,9 @@ namespace GWMS.UI.Data #region Public Properties public int PlantId { get; set; } = 0; + public bool ShowClosed { get; set; } = false; public int SupplierId { get; set; } = 0; + public int TransporterId { get; set; } = 0; #endregion Public Properties @@ -26,7 +28,7 @@ namespace GWMS.UI.Data public static new SelectOrderData Init(int minRound, int numDayPrev) { var selD = SelectData.Init(minRound, numDayPrev); - return new SelectOrderData() { DateStart = selD.DateStart, DateEnd = selD.DateEnd }; + return new SelectOrderData() { DateStart = selD.DateStart, DateEnd = selD.DateEnd, ShowClosed = false }; } public override bool Equals(object obj) @@ -34,6 +36,8 @@ namespace GWMS.UI.Data if (!(obj is SelectOrderData item)) return false; + if (ShowClosed != item.ShowClosed) + return false; if (PlantId != item.PlantId) return false; if (SupplierId != item.SupplierId) diff --git a/GWMS.UI/GWMS.UI.csproj b/GWMS.UI/GWMS.UI.csproj index 15573cf..a8d933d 100644 --- a/GWMS.UI/GWMS.UI.csproj +++ b/GWMS.UI/GWMS.UI.csproj @@ -2,7 +2,7 @@ net5.0 - 1.0.2108.0617 + 1.0.2108.1012 95c9f021-52d1-4390-a670-5810b7b777b0 diff --git a/GWMS.UI/Pages/Orders.razor b/GWMS.UI/Pages/Orders.razor index c73bf78..96b6bfb 100644 --- a/GWMS.UI/Pages/Orders.razor +++ b/GWMS.UI/Pages/Orders.razor @@ -11,6 +11,16 @@
+
+
+
+
+
+ + +
+
+
@@ -65,6 +75,17 @@
+
+
+ +
+
+
+ @if (ShowAddNew) + { + + } +
@@ -94,7 +115,9 @@ Data Ordine Ordine Fornitore - Qta + Richiesta + Carico + Effettivo @@ -112,13 +135,29 @@ @record.OrderCode | @record.OrderDesc -
-
[@record.Supplier.SupplierCode]
-
@record.Supplier.SupplierDesc
+
+ @record.Supplier.SupplierDesc
-
@record.Transporter.TransporterCode | @record.Transporter.TransporterDesc
+
@record.Transporter.TransporterDesc
+ + + @record.OrderQty.ToString("N0") + + + @if (!record.DtExecStart.Equals(@record.DtExecEnd)) + { +
+ @record.DtExecStart.Date.ToString("ddd dd/MM/yyyyy") +
+
@record.DtExecStart.TimeOfDay --> @record.DtExecEnd.TimeOfDay
+ } + + + @if (record.ExecutionQty > 0) + { + @record.ExecutionQty.ToString("N0") + } - @record.OrderQty.ToString("N0") } diff --git a/GWMS.UI/Pages/Orders.razor.cs b/GWMS.UI/Pages/Orders.razor.cs index 577f56d..d8e9533 100644 --- a/GWMS.UI/Pages/Orders.razor.cs +++ b/GWMS.UI/Pages/Orders.razor.cs @@ -105,6 +105,28 @@ namespace GWMS.UI.Pages private bool ShowCharts { get; set; } = false; + private bool ShowClosed + { + get + { + bool answ = true; + if (AppMService.Order_Filter != null) + { + answ = AppMService.Order_Filter.ShowClosed; + } + return answ; + } + set + { + if (!AppMService.Order_Filter.ShowClosed.Equals(value)) + { + AppMService.Order_Filter.ShowClosed = value; + var pUpd = Task.Run(async () => await ReloadData()); + pUpd.Wait(); + } + } + } + #endregion Private Properties #region Protected Properties @@ -180,6 +202,20 @@ namespace GWMS.UI.Pages #endregion Protected Properties + #region Public Properties + + public bool ShowAddNew + { + get + { + bool answ = false; + answ = (SelSupplierId > 0 && SelPlantId > 0); + return answ; + } + } + + #endregion Public Properties + #region Private Methods private void OnDateEndChanged(DateTime? date) @@ -204,6 +240,32 @@ namespace GWMS.UI.Pages #region Protected Methods + /// + /// Creazione nuovo record Ordine + /// + protected void CreateNew() + { + var currPlant = PlantsList.Where(x => x.PlantId == SelPlantId).FirstOrDefault(); + var currSuppl = SuppliersList.Where(x => x.SupplierId == SelSupplierId).FirstOrDefault(); + if (currPlant != null && currSuppl != null) + { + DateTime adesso = DateTime.Now; + // creo un nuovo record + currRecord = new OrderModel() + { + DtOrder = adesso, + PlantId = SelPlantId, + SupplierId = SelSupplierId, + OrderDesc = $"Ord Man {currPlant.PlantDesc} - {adesso}", + OrderQty = 1000, + TransporterId = 1, + OrderCode = $"O{currPlant.PlantCode}{adesso:yyMMddHHmm}", + }; + // aggiorno filtro + AppMService.Order_Filter = SelectOrderData.Init(5, 7); + } + } + protected void Edit(OrderModel selRecord) { currRecord = selRecord; @@ -241,7 +303,7 @@ namespace GWMS.UI.Pages currRecord = null; } - protected async Task ResetFilter(SelectOrderData newFilter) + protected async Task ResetFilter() { currRecord = null; SearchRecords = null; @@ -259,6 +321,7 @@ namespace GWMS.UI.Pages protected async Task UpdateData() { currRecord = null; + DataService.ResetController(); await ReloadData(); } diff --git a/Resources/ChangeLog.html b/Resources/ChangeLog.html index f2ea01a..676eaa3 100644 --- a/Resources/ChangeLog.html +++ b/Resources/ChangeLog.html @@ -1,6 +1,6 @@ GWMS - Gas Warehouse Management System -

Versione: 1.0.2108.0617

+

Versione: 1.0.2108.1012


Note di rilascio:
  • diff --git a/Resources/VersNum.txt b/Resources/VersNum.txt index 765c537..9fef9f8 100644 --- a/Resources/VersNum.txt +++ b/Resources/VersNum.txt @@ -1 +1 @@ -1.0.2108.0617 +1.0.2108.1012 diff --git a/Resources/manifest.xml b/Resources/manifest.xml index e6d66f9..469aac1 100644 --- a/Resources/manifest.xml +++ b/Resources/manifest.xml @@ -1,6 +1,6 @@ - 1.0.2108.0617 + 1.0.2108.1012 http://nexus.steamware.net/repository/SWS/GWMS/stable/0/GWMS.UI.zip http://nexus.steamware.net/repository/SWS/GWMS/stable/0/ChangeLog.html false