* Added Lot table and service
* Changed behaviour of scanning to scan first PartNumber, select specific record and then scan MeylePartNumber
This commit is contained in:
32
SytelineSaAppEfDataModel/Dtos/LotDto.cs
Normal file
32
SytelineSaAppEfDataModel/Dtos/LotDto.cs
Normal file
@@ -0,0 +1,32 @@
|
||||
namespace SytelineSaAppEfDataModel.Dtos;
|
||||
|
||||
public class LotDto
|
||||
{
|
||||
public string Item { get; set; }
|
||||
public string LotNumber { get; set; }
|
||||
public decimal? RcvdQty { get; set; }
|
||||
public DateTime? CreateDate { get; set; }
|
||||
public DateTime? ExpDate { get; set; }
|
||||
public DateTime? PurgeDate { get; set; }
|
||||
public string VendLot { get; set; }
|
||||
public string CertNum { get; set; }
|
||||
public string Charfld1 { get; set; }
|
||||
public string Charfld2 { get; set; }
|
||||
public string Charfld3 { get; set; }
|
||||
public DateTime? Datefld { get; set; }
|
||||
public decimal? Decifld1 { get; set; }
|
||||
public decimal? Decifld2 { get; set; }
|
||||
public decimal? Decifld3 { get; set; }
|
||||
public bool Logifld { get; set; }
|
||||
public bool NoteExistsFlag { get; set; }
|
||||
public DateTime RecordDate { get; set; }
|
||||
public Guid RowPointer { get; set; }
|
||||
public string CreatedBy { get; set; }
|
||||
public string UpdatedBy { get; set; }
|
||||
public DateTime CreateDateField { get; set; }
|
||||
public bool InWorkflow { get; set; }
|
||||
public bool ContainsTaxFreeMatl { get; set; }
|
||||
public string AttrGroup { get; set; }
|
||||
public string ManufacturerId { get; set; }
|
||||
public string ManufacturerItem { get; set; }
|
||||
}
|
||||
@@ -11,4 +11,6 @@ public class WzRowMeyleDto
|
||||
public string WzNumber { get; set; }
|
||||
public string? PartNumber { get; set; }
|
||||
public int? TransactionNumber { get; set; }
|
||||
public string? FaIndex { get; set; }
|
||||
public string? PartNumberSl { get; set; }
|
||||
}
|
||||
32
SytelineSaAppEfDataModel/Entities/Lot.cs
Normal file
32
SytelineSaAppEfDataModel/Entities/Lot.cs
Normal file
@@ -0,0 +1,32 @@
|
||||
namespace SytelineSaAppEfDataModel.Entities;
|
||||
|
||||
public class Lot
|
||||
{
|
||||
public string Item { get; set; }
|
||||
public string LotNumber { get; set; }
|
||||
public decimal? RcvdQty { get; set; }
|
||||
public DateTime? CreateDate { get; set; }
|
||||
public DateTime? ExpDate { get; set; }
|
||||
public DateTime? PurgeDate { get; set; }
|
||||
public string VendLot { get; set; }
|
||||
public string CertNum { get; set; }
|
||||
public string Charfld1 { get; set; }
|
||||
public string Charfld2 { get; set; }
|
||||
public string Charfld3 { get; set; }
|
||||
public DateTime? Datefld { get; set; }
|
||||
public decimal? Decifld1 { get; set; }
|
||||
public decimal? Decifld2 { get; set; }
|
||||
public decimal? Decifld3 { get; set; }
|
||||
public bool Logifld { get; set; }
|
||||
public bool NoteExistsFlag { get; set; }
|
||||
public DateTime RecordDate { get; set; }
|
||||
public Guid RowPointer { get; set; }
|
||||
public string CreatedBy { get; set; }
|
||||
public string UpdatedBy { get; set; }
|
||||
public DateTime CreateDateField { get; set; }
|
||||
public bool InWorkflow { get; set; }
|
||||
public bool ContainsTaxFreeMatl { get; set; }
|
||||
public string AttrGroup { get; set; }
|
||||
public string ManufacturerId { get; set; }
|
||||
public string ManufacturerItem { get; set; }
|
||||
}
|
||||
@@ -11,6 +11,8 @@ public class WzRowMeyle
|
||||
public string WzNumber { get; set; }
|
||||
public string? PartNumber { get; set; }
|
||||
public int? TransactionNumber { get; set; }
|
||||
public string? FaIndex { get; set; }
|
||||
public string? PartNumberSl { get; set; }
|
||||
|
||||
// Navigation property
|
||||
public WzHeader Header { get; set; }
|
||||
|
||||
@@ -24,6 +24,7 @@ namespace SytelineSaAppEfDataModel
|
||||
CreateMap<WzHeader, WzHeaderDto>().ReverseMap();
|
||||
CreateMap<WzRowMeyle, WzRowMeyleDto>().ReverseMap();
|
||||
CreateMap<ItemCust, ItemCustDto>().ReverseMap();
|
||||
CreateMap<Lot, LotDto>().ReverseMap();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
10
SytelineSaAppEfDataModel/Services/ILotService.cs
Normal file
10
SytelineSaAppEfDataModel/Services/ILotService.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
using SytelineSaAppEfDataModel.Dtos;
|
||||
|
||||
namespace SytelineSaAppEfDataModel.Services;
|
||||
|
||||
public interface ILotService
|
||||
{
|
||||
Task<IEnumerable<LotDto>> GetAll();
|
||||
Task<LotDto?> GetByItemNumber(string itemNumber);
|
||||
Task<LotDto?> GetByLotNumber(string lotNumber);
|
||||
}
|
||||
@@ -10,4 +10,5 @@ public interface IMaterialTransactionService
|
||||
Task<IEnumerable<MaterialTransactionDto>> GetByOrderNumber(string orderNumber);
|
||||
Task<IEnumerable<MaterialTransactionDto>> GetOrderNumbersByWz(ISet<string> wzNumbers);
|
||||
Task<IEnumerable<MaterialTransactionDto>> GetByCustomerNumber(string customerNumber, int customerSequence);
|
||||
Task<MaterialTransactionDto?> GetByPartNumber(string partNumber);
|
||||
}
|
||||
25
SytelineSaAppEfDataModel/Services/LotService.cs
Normal file
25
SytelineSaAppEfDataModel/Services/LotService.cs
Normal file
@@ -0,0 +1,25 @@
|
||||
using AutoMapper;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using SytelineSaAppEfDataModel.Dtos;
|
||||
|
||||
namespace SytelineSaAppEfDataModel.Services;
|
||||
|
||||
public class LotService(SytelineSaAppDbContext context, IMapper mapper) : ILotService
|
||||
{
|
||||
public async Task<IEnumerable<LotDto>> GetAll()
|
||||
{
|
||||
return await context.Lots.Select(x => mapper.Map<LotDto>(x)).ToListAsync();
|
||||
}
|
||||
|
||||
public async Task<LotDto?> GetByItemNumber(string itemNumber)
|
||||
{
|
||||
return await context.Lots.Where(x => x.Item == itemNumber).Select(x => mapper.Map<LotDto>(x))
|
||||
.FirstOrDefaultAsync();
|
||||
}
|
||||
|
||||
public async Task<LotDto?> GetByLotNumber(string lotNumber)
|
||||
{
|
||||
return await context.Lots.Where(x => x.LotNumber == lotNumber).Select(x => mapper.Map<LotDto>(x))
|
||||
.FirstOrDefaultAsync();
|
||||
}
|
||||
}
|
||||
@@ -83,4 +83,11 @@ public class MaterialTransactionService(SytelineSaAppDbContext context, IMapper
|
||||
|
||||
return result.OrderByDescending(x => x.CreateDate);
|
||||
}
|
||||
|
||||
public async Task<MaterialTransactionDto?> GetByPartNumber(string partNumber)
|
||||
{
|
||||
return await context.MaterialTransactions
|
||||
.Where(x => x.NR_KARTY_KONTROLNEJ == partNumber)
|
||||
.Select(x => mapper.Map<MaterialTransactionDto>(x)).FirstOrDefaultAsync();
|
||||
}
|
||||
}
|
||||
@@ -27,6 +27,8 @@ namespace SytelineSaAppEfDataModel
|
||||
public DbSet<WzRowMeyle> WzRowsMeyle { get; set; }
|
||||
|
||||
public DbSet<ItemCust> ItemCusts { get; set; }
|
||||
|
||||
public DbSet<Lot> Lots { get; set; }
|
||||
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
||||
{
|
||||
var configuration = new ConfigurationBuilder()
|
||||
@@ -1000,7 +1002,17 @@ namespace SytelineSaAppEfDataModel
|
||||
.HasColumnName("trans_num")
|
||||
.HasColumnType("int")
|
||||
.IsRequired(false);
|
||||
|
||||
entity.Property(e => e.FaIndex)
|
||||
.HasColumnName("fa_index")
|
||||
.HasMaxLength(100)
|
||||
.IsRequired(false);
|
||||
|
||||
entity.Property(e => e.PartNumberSl)
|
||||
.HasColumnName("part_number_sl")
|
||||
.HasMaxLength(100)
|
||||
.IsRequired(false);
|
||||
|
||||
// Relationship
|
||||
entity.HasOne(e => e.Header)
|
||||
.WithMany()
|
||||
@@ -1150,6 +1162,150 @@ namespace SytelineSaAppEfDataModel
|
||||
.HasDatabaseName("IX_itemcust_RowPointer")
|
||||
.IsUnique();
|
||||
});
|
||||
|
||||
modelBuilder.Entity<Lot>(entity =>
|
||||
{
|
||||
entity.ToTable("lot");
|
||||
|
||||
entity.HasKey(e => new { e.Item, e.LotNumber });
|
||||
|
||||
entity.Property(e => e.Item)
|
||||
.HasColumnName("item")
|
||||
.HasMaxLength(60)
|
||||
.IsRequired();
|
||||
|
||||
entity.Property(e => e.LotNumber)
|
||||
.HasColumnName("lot")
|
||||
.HasMaxLength(15)
|
||||
.IsRequired();
|
||||
|
||||
entity.Property(e => e.RcvdQty)
|
||||
.HasColumnName("rcvd_qty")
|
||||
.HasDefaultValueSql("0")
|
||||
.IsRequired(false);
|
||||
|
||||
entity.Property(e => e.CreateDate)
|
||||
.HasColumnName("create_date")
|
||||
.IsRequired(false);
|
||||
|
||||
entity.Property(e => e.ExpDate)
|
||||
.HasColumnName("exp_date")
|
||||
.IsRequired(false);
|
||||
|
||||
entity.Property(e => e.PurgeDate)
|
||||
.HasColumnName("purge_date")
|
||||
.IsRequired(false);
|
||||
|
||||
entity.Property(e => e.VendLot)
|
||||
.HasColumnName("vend_lot")
|
||||
.HasMaxLength(30)
|
||||
.IsRequired(false);
|
||||
|
||||
entity.Property(e => e.CertNum)
|
||||
.HasColumnName("cert_num")
|
||||
.HasMaxLength(20)
|
||||
.IsRequired(false);
|
||||
|
||||
entity.Property(e => e.Charfld1)
|
||||
.HasColumnName("charfld1")
|
||||
.HasMaxLength(40)
|
||||
.IsRequired(false);
|
||||
|
||||
entity.Property(e => e.Charfld2)
|
||||
.HasColumnName("charfld2")
|
||||
.HasMaxLength(40)
|
||||
.IsRequired(false);
|
||||
|
||||
entity.Property(e => e.Charfld3)
|
||||
.HasColumnName("charfld3")
|
||||
.HasMaxLength(40)
|
||||
.IsRequired(false);
|
||||
|
||||
entity.Property(e => e.Datefld)
|
||||
.HasColumnName("datefld")
|
||||
.IsRequired(false);
|
||||
|
||||
entity.Property(e => e.Decifld1)
|
||||
.HasColumnName("decifld1")
|
||||
.HasDefaultValueSql("0")
|
||||
.IsRequired(false);
|
||||
|
||||
entity.Property(e => e.Decifld2)
|
||||
.HasColumnName("decifld2")
|
||||
.HasDefaultValueSql("0")
|
||||
.IsRequired(false);
|
||||
|
||||
entity.Property(e => e.Decifld3)
|
||||
.HasColumnName("decifld3")
|
||||
.HasDefaultValueSql("0")
|
||||
.IsRequired(false);
|
||||
|
||||
entity.Property(e => e.Logifld)
|
||||
.HasColumnName("logifld")
|
||||
.HasColumnType("tinyint")
|
||||
.HasDefaultValueSql("0");
|
||||
|
||||
entity.Property(e => e.NoteExistsFlag)
|
||||
.HasColumnName("NoteExistsFlag")
|
||||
.HasColumnType("tinyint")
|
||||
.HasDefaultValueSql("0");
|
||||
|
||||
entity.Property(e => e.RecordDate)
|
||||
.HasColumnName("RecordDate")
|
||||
.HasDefaultValueSql("getdate()");
|
||||
|
||||
entity.Property(e => e.RowPointer)
|
||||
.HasColumnName("RowPointer")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasDefaultValueSql("newid()");
|
||||
|
||||
entity.Property(e => e.CreatedBy)
|
||||
.HasColumnName("CreatedBy")
|
||||
.HasMaxLength(60)
|
||||
.HasDefaultValueSql("suser_sname()");
|
||||
|
||||
entity.Property(e => e.UpdatedBy)
|
||||
.HasColumnName("UpdatedBy")
|
||||
.HasMaxLength(60)
|
||||
.HasDefaultValueSql("suser_sname()");
|
||||
|
||||
entity.Property(e => e.CreateDateField)
|
||||
.HasColumnName("CreateDate")
|
||||
.HasDefaultValueSql("getdate()");
|
||||
|
||||
entity.Property(e => e.InWorkflow)
|
||||
.HasColumnName("InWorkflow")
|
||||
.HasColumnType("tinyint")
|
||||
.HasDefaultValueSql("0");
|
||||
|
||||
entity.Property(e => e.ContainsTaxFreeMatl)
|
||||
.HasColumnName("contains_tax_free_matl")
|
||||
.HasColumnType("tinyint")
|
||||
.HasDefaultValueSql("0");
|
||||
|
||||
entity.Property(e => e.AttrGroup)
|
||||
.HasColumnName("attr_group")
|
||||
.HasMaxLength(20)
|
||||
.IsRequired(false);
|
||||
|
||||
entity.Property(e => e.ManufacturerId)
|
||||
.HasColumnName("manufacturer_id")
|
||||
.HasMaxLength(14)
|
||||
.IsRequired(false);
|
||||
|
||||
entity.Property(e => e.ManufacturerItem)
|
||||
.HasColumnName("manufacturer_item")
|
||||
.HasMaxLength(60)
|
||||
.IsRequired(false);
|
||||
|
||||
// Indexes
|
||||
entity.HasIndex(e => e.LotNumber)
|
||||
.HasDatabaseName("IX_lot");
|
||||
|
||||
entity.HasIndex(e => e.RowPointer)
|
||||
.HasDatabaseName("IX_lot_RowPointer")
|
||||
.IsUnique();
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user