using Seyounth.Core.Extensions; using Seyounth.Hyosung.Data.Entities; namespace Seyounth.Hyosung.Data.Models; public class Yarn { public int Id { get; set; } public string QrCode { get; set; } public string ScanCode { get; set; } public int Lot { get; set; } public string? DenFila { get; set; } public string? DtexFila { get; set; } public string WorkShift { get; set; } = "NoData"; public string Machine { get; set; } = "NoData"; public int VarietyId { get; set; } public DateTime ScanTime { get; set; } public string ProduceTime { get; set; } public bool IsFinished { get; set; } = false; public int? TrayId { get; set; } public DateTime? StackTime { get; set; } public DateTime? StorageTime { get; set; } public static Yarn? Create(string qrCode, int varietyId) { try { Yarn yarn; if (!qrCode.Contains('\n')) { var parts = qrCode.Split(' '); yarn = new Yarn() { QrCode = qrCode, Lot = int.Parse(parts[0].Replace("Lot:", "")), Machine = parts[2], ProduceTime = parts[3], ScanTime = DateTime.Now, VarietyId = varietyId, ScanCode = DateTime.Now.ToTimestamp().ToString(), TrayId = null }; yarn.WorkShift = parts[1] switch { "0" => "早班", "1" => "中班", "2" => "晚班", _ => yarn.WorkShift }; return yarn; } else { var parts = qrCode.Split('\n'); yarn = new Yarn() { QrCode = qrCode, Lot = int.Parse(parts[0].Replace("Lot:", "")), DenFila = parts[1], DtexFila = parts[2], ProduceTime = parts[3], Machine = parts[4], ScanTime = DateTime.Now, VarietyId = varietyId, TrayId = null, ScanCode = DateTime.Now.ToTimestamp().ToString().PadLeft(10, '0'), }; yarn.WorkShift = parts[5] switch { "0" => "早班", "1" => "中班", "2" => "晚班", _ => yarn.WorkShift }; return yarn; } } catch (Exception e) { return null; } } public static Yarn FromEntity(ScannedYarnEntity entity) { return new Yarn { Id = entity.Id, ScanCode = entity.ScanCode, DenFila = entity.DenFila, DtexFila = entity.DtexFila, IsFinished = entity.IsFinished, Lot = entity.Lot, Machine = entity.Machine, ProduceTime = entity.ProduceTime, QrCode = entity.QrCode, ScanTime = entity.ScanTime, VarietyId = entity.VarietyId, WorkShift = entity.WorkShift, TrayId = entity.TrayId, StorageTime = entity.StorageTime, StackTime = entity.StackTime }; } public ScannedYarnEntity ToEntity() { return new ScannedYarnEntity { Id = Id, ScanCode = ScanCode, DenFila = DenFila, DtexFila = DtexFila, IsFinished = IsFinished, Lot = Lot, Machine = Machine, ProduceTime = ProduceTime, QrCode = QrCode, ScanTime = ScanTime, VarietyId = VarietyId, WorkShift = WorkShift, TrayId = TrayId, StackTime = StackTime, StorageTime = StorageTime }; } }