diff --git a/MasstransferCommon/Convert/DatetimeConverter.cs b/MasstransferCommon/Convert/DatetimeConverter.cs index 5e76e12..3e1bd82 100644 --- a/MasstransferCommon/Convert/DatetimeConverter.cs +++ b/MasstransferCommon/Convert/DatetimeConverter.cs @@ -10,7 +10,7 @@ public class DatetimeConverter : JsonConverter public override void WriteJson(JsonWriter writer, DateTime value, JsonSerializer serializer) { long timestamp = (long)(value.ToUniversalTime() - UnixEpoch).TotalMilliseconds; - writer.WriteValue(timestamp); + writer.WriteValue(timestamp < 0 ? 0 : timestamp); } public override DateTime ReadJson(JsonReader reader, Type objectType, DateTime existingValue, bool hasExistingValue, diff --git a/MasstransferExporter/DataExporter/Model/ProductionRecord.cs b/MasstransferExporter/DataExporter/Model/ProductionRecord.cs index 25cb44b..6fbe174 100644 --- a/MasstransferExporter/DataExporter/Model/ProductionRecord.cs +++ b/MasstransferExporter/DataExporter/Model/ProductionRecord.cs @@ -1,4 +1,6 @@ -namespace MasstransferExporter.DataExporter.Model; +using Newtonsoft.Json; + +namespace MasstransferExporter.DataExporter.Model; /// /// 动打记录 @@ -6,12 +8,19 @@ /// public class ProductionRecord { - public string BatchNumber { get; set; } - public string PcbNumber { get; set; } - public string ChipType { get; set; } - public string HitQuantity { get; set; } - public string PcbInputTimeCost { get; set; } - public string PcbScanTimeCost { get; set; } - public string PcbOutputTimeCost { get; set; } - public List Rounds { get; set; } + [JsonProperty("batchNumber")] public string BatchNumber { get; set; } + + [JsonProperty("pcbNumber")] public string PcbNumber { get; set; } + + [JsonProperty("chipType")] public string ChipType { get; set; } + [JsonProperty("hitQuantity")] public string HitQuantity { get; set; } + + [JsonProperty("pcbInputTime")] public DateTime PcbInputTime { get; set; } + + [JsonProperty("pcbOutputTime")] public DateTime PcbOutputTime { get; set; } + + [JsonProperty("pcbInputTimeCost")] public int PcbInputTimeCost { get; set; } + [JsonProperty("pcbScanTimeCost")] public int PcbScanTimeCost { get; set; } + [JsonProperty("pcbOutputTimeCost")] public int PcbOutputTimeCost { get; set; } + [JsonProperty("rounds")] public List Rounds { get; set; } } \ No newline at end of file diff --git a/MasstransferExporter/DataExporter/Model/ProductionWaferRecord.cs b/MasstransferExporter/DataExporter/Model/ProductionWaferRecord.cs index fa7e1b3..90d670b 100644 --- a/MasstransferExporter/DataExporter/Model/ProductionWaferRecord.cs +++ b/MasstransferExporter/DataExporter/Model/ProductionWaferRecord.cs @@ -1,16 +1,25 @@ -namespace MasstransferExporter.DataExporter.Model; +using Newtonsoft.Json; + +namespace MasstransferExporter.DataExporter.Model; /// /// 每次动打期间用到的wafer记录 /// public class ProductionWaferRecord { - public string WaferNumber { get; set; } - public string ChipQuantity { get; set; } - public string WaferInputTimeCost { get; set; } - public string ChipScanTimeCost { get; set; } - public string ProdutionTimeCost { get; set; } - public string PcbCheckTimeCost { get; set; } - public string WaferOutputTimeCost { get; set; } - public string HitedQuantity { get; set; } + [JsonProperty("waferNumber")] public string WaferNumber { get; set; } + + [JsonProperty("chipQuantity")] public int ChipQuantity { get; set; } + + [JsonProperty("waferInputTimeCost")] public int WaferInputTimeCost { get; set; } + + [JsonProperty("chipScanTimeCost")] public int ChipScanTimeCost { get; set; } + + [JsonProperty("productionTimeCost")] public int ProductionTimeCost { get; set; } + + [JsonProperty("pcbCheckTimeCost")] public int PcbCheckTimeCost { get; set; } + + [JsonProperty("waferOutputTimeCost")] public int WaferOutputTimeCost { get; set; } + + [JsonProperty("hitedQuantity")] public int HitedQuantity { get; set; } } \ No newline at end of file diff --git a/MasstransferExporter/DataExporter/StrikeRecordService.cs b/MasstransferExporter/DataExporter/StrikeRecordService.cs index 712e04b..b0c31fd 100644 --- a/MasstransferExporter/DataExporter/StrikeRecordService.cs +++ b/MasstransferExporter/DataExporter/StrikeRecordService.cs @@ -14,9 +14,10 @@ public class StrikeRecordService /// /// 上报动打记录 /// - private static void ReportStrikeRecord() + public static async Task ReportStrikeRecord() { // 根据这个基板编号,从记录中找到所有的跟基板有关的生产记录 + await ReportStrikeRecord("1108016217473286144"); } @@ -51,9 +52,11 @@ public class StrikeRecordService Db.Query(querySubstrateConsumeTime, substrateId).FirstOrDefault(); if (substrateConsumeTime != null) { - record.PcbInputTimeCost = substrateConsumeTime.LoadingConsumedTime.ToString(); - record.PcbOutputTimeCost = substrateConsumeTime.UnloadingConsumedTime.ToString(); - record.PcbScanTimeCost = substrateConsumeTime.FlyConsumedTime.ToString(); + record.PcbInputTimeCost = substrateConsumeTime.LoadingConsumedTime; + record.PcbOutputTimeCost = substrateConsumeTime.UnloadingConsumedTime; + record.PcbScanTimeCost = substrateConsumeTime.FlyConsumedTime; + record.PcbInputTime = substrateConsumeTime.LoadingStartTime; + record.PcbOutputTime = substrateConsumeTime.UnloadingEndTime; } // 查询出当前的作业相关的晶环耗时信息 @@ -63,7 +66,8 @@ public class StrikeRecordService var waferConsumeTimes = Db.Query(queryWaferConsumeTime); // 查询出当前作业的所有晶环信息 - var queryWafer = "select * from wafer where Id in (" + string.Join(",", waferIds) + ")"; + var queryWafer = "select * from wafers where Id in (" + string.Join(",", waferIds) + ")"; + var wafers = Db.Query(queryWafer); // 将晶环耗时信息与晶环信息关联 @@ -83,11 +87,11 @@ public class StrikeRecordService var waferRecord = new ProductionWaferRecord { WaferNumber = wafer.WaferCode, - ChipQuantity = wafer.ChipAmount.ToString(), - WaferInputTimeCost = consumeTime.LoadingConsumedTime.ToString(), - WaferOutputTimeCost = consumeTime.UnloadingConsumedTime.ToString(), - ChipScanTimeCost = consumeTime.FlyConsumedTime.ToString(), - HitedQuantity = strikeRecord.StrikeAmount.ToString(), + ChipQuantity = wafer.ChipAmount, + WaferInputTimeCost = consumeTime.LoadingConsumedTime, + WaferOutputTimeCost = consumeTime.UnloadingConsumedTime, + ChipScanTimeCost = consumeTime.FlyConsumedTime, + HitedQuantity = strikeRecord.StrikeAmount, }; waferRecords.Add(waferRecord); diff --git a/MasstransferExporter/Program.cs b/MasstransferExporter/Program.cs index 39ed302..a16dd09 100644 --- a/MasstransferExporter/Program.cs +++ b/MasstransferExporter/Program.cs @@ -1,13 +1,14 @@ using MasstransferCommon.Config; using MasstransferCommon.Events; -using MasstransferCommon.Model.Entity; using MasstransferCommon.Scheduler; using MasstransferCommunicate.Mqtt.Client; using MasstransferExporter.DataExporter; +using MasstransferExporter.DataExporter.Model; using MasstransferExporter.Init; using MasstransferInfrastructure.Database.Sqlite; using MasstransferInfrastructure.Mqtt.Model; using Serilog; +using MqttParams = MasstransferCommon.Model.Entity.MqttParams; namespace MasstransferExporter; @@ -38,7 +39,7 @@ class Program // 启动完成后,广播启动通知 EventBus.Publish(EventType.StartUp, true); - DelayScheduler.Delay(async () => await CoordinateService.CoordinateExporter(), + DelayScheduler.Delay(async () => await StrikeRecordService.ReportStrikeRecord(), TimeSpan.FromSeconds(5)); // 启动与主程序的通信