完善上传生产数据问题

This commit is contained in:
huangxianguo 2024-09-10 10:17:00 +08:00
parent 7edb347ec7
commit 5dfbdfee5e
5 changed files with 54 additions and 31 deletions

View File

@ -10,7 +10,7 @@ public class DatetimeConverter : JsonConverter<DateTime>
public override void WriteJson(JsonWriter writer, DateTime value, JsonSerializer serializer) public override void WriteJson(JsonWriter writer, DateTime value, JsonSerializer serializer)
{ {
long timestamp = (long)(value.ToUniversalTime() - UnixEpoch).TotalMilliseconds; 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, public override DateTime ReadJson(JsonReader reader, Type objectType, DateTime existingValue, bool hasExistingValue,

View File

@ -1,4 +1,6 @@
namespace MasstransferExporter.DataExporter.Model; using Newtonsoft.Json;
namespace MasstransferExporter.DataExporter.Model;
/// <summary> /// <summary>
/// 动打记录 /// 动打记录
@ -6,12 +8,19 @@
/// </summary> /// </summary>
public class ProductionRecord public class ProductionRecord
{ {
public string BatchNumber { get; set; } [JsonProperty("batchNumber")] public string BatchNumber { get; set; }
public string PcbNumber { get; set; }
public string ChipType { get; set; } [JsonProperty("pcbNumber")] public string PcbNumber { get; set; }
public string HitQuantity { get; set; }
public string PcbInputTimeCost { get; set; } [JsonProperty("chipType")] public string ChipType { get; set; }
public string PcbScanTimeCost { get; set; } [JsonProperty("hitQuantity")] public string HitQuantity { get; set; }
public string PcbOutputTimeCost { get; set; }
public List<ProductionWaferRecord> Rounds { 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<ProductionWaferRecord> Rounds { get; set; }
} }

View File

@ -1,16 +1,25 @@
namespace MasstransferExporter.DataExporter.Model; using Newtonsoft.Json;
namespace MasstransferExporter.DataExporter.Model;
/// <summary> /// <summary>
/// 每次动打期间用到的wafer记录 /// 每次动打期间用到的wafer记录
/// </summary> /// </summary>
public class ProductionWaferRecord public class ProductionWaferRecord
{ {
public string WaferNumber { get; set; } [JsonProperty("waferNumber")] public string WaferNumber { get; set; }
public string ChipQuantity { get; set; }
public string WaferInputTimeCost { get; set; } [JsonProperty("chipQuantity")] public int ChipQuantity { get; set; }
public string ChipScanTimeCost { get; set; }
public string ProdutionTimeCost { get; set; } [JsonProperty("waferInputTimeCost")] public int WaferInputTimeCost { get; set; }
public string PcbCheckTimeCost { get; set; }
public string WaferOutputTimeCost { get; set; } [JsonProperty("chipScanTimeCost")] public int ChipScanTimeCost { get; set; }
public string HitedQuantity { 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; }
} }

View File

@ -14,9 +14,10 @@ public class StrikeRecordService
/// <summary> /// <summary>
/// 上报动打记录 /// 上报动打记录
/// </summary> /// </summary>
private static void ReportStrikeRecord() public static async Task ReportStrikeRecord()
{ {
// 根据这个基板编号,从记录中找到所有的跟基板有关的生产记录 // 根据这个基板编号,从记录中找到所有的跟基板有关的生产记录
await ReportStrikeRecord("1108016217473286144");
} }
@ -51,9 +52,11 @@ public class StrikeRecordService
Db.Query<SubstrateConsumeTime>(querySubstrateConsumeTime, substrateId).FirstOrDefault(); Db.Query<SubstrateConsumeTime>(querySubstrateConsumeTime, substrateId).FirstOrDefault();
if (substrateConsumeTime != null) if (substrateConsumeTime != null)
{ {
record.PcbInputTimeCost = substrateConsumeTime.LoadingConsumedTime.ToString(); record.PcbInputTimeCost = substrateConsumeTime.LoadingConsumedTime;
record.PcbOutputTimeCost = substrateConsumeTime.UnloadingConsumedTime.ToString(); record.PcbOutputTimeCost = substrateConsumeTime.UnloadingConsumedTime;
record.PcbScanTimeCost = substrateConsumeTime.FlyConsumedTime.ToString(); record.PcbScanTimeCost = substrateConsumeTime.FlyConsumedTime;
record.PcbInputTime = substrateConsumeTime.LoadingStartTime;
record.PcbOutputTime = substrateConsumeTime.UnloadingEndTime;
} }
// 查询出当前的作业相关的晶环耗时信息 // 查询出当前的作业相关的晶环耗时信息
@ -63,7 +66,8 @@ public class StrikeRecordService
var waferConsumeTimes = Db.Query<WaferConsumeTime>(queryWaferConsumeTime); var waferConsumeTimes = Db.Query<WaferConsumeTime>(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<Wafer>(queryWafer); var wafers = Db.Query<Wafer>(queryWafer);
// 将晶环耗时信息与晶环信息关联 // 将晶环耗时信息与晶环信息关联
@ -83,11 +87,11 @@ public class StrikeRecordService
var waferRecord = new ProductionWaferRecord var waferRecord = new ProductionWaferRecord
{ {
WaferNumber = wafer.WaferCode, WaferNumber = wafer.WaferCode,
ChipQuantity = wafer.ChipAmount.ToString(), ChipQuantity = wafer.ChipAmount,
WaferInputTimeCost = consumeTime.LoadingConsumedTime.ToString(), WaferInputTimeCost = consumeTime.LoadingConsumedTime,
WaferOutputTimeCost = consumeTime.UnloadingConsumedTime.ToString(), WaferOutputTimeCost = consumeTime.UnloadingConsumedTime,
ChipScanTimeCost = consumeTime.FlyConsumedTime.ToString(), ChipScanTimeCost = consumeTime.FlyConsumedTime,
HitedQuantity = strikeRecord.StrikeAmount.ToString(), HitedQuantity = strikeRecord.StrikeAmount,
}; };
waferRecords.Add(waferRecord); waferRecords.Add(waferRecord);

View File

@ -1,13 +1,14 @@
using MasstransferCommon.Config; using MasstransferCommon.Config;
using MasstransferCommon.Events; using MasstransferCommon.Events;
using MasstransferCommon.Model.Entity;
using MasstransferCommon.Scheduler; using MasstransferCommon.Scheduler;
using MasstransferCommunicate.Mqtt.Client; using MasstransferCommunicate.Mqtt.Client;
using MasstransferExporter.DataExporter; using MasstransferExporter.DataExporter;
using MasstransferExporter.DataExporter.Model;
using MasstransferExporter.Init; using MasstransferExporter.Init;
using MasstransferInfrastructure.Database.Sqlite; using MasstransferInfrastructure.Database.Sqlite;
using MasstransferInfrastructure.Mqtt.Model; using MasstransferInfrastructure.Mqtt.Model;
using Serilog; using Serilog;
using MqttParams = MasstransferCommon.Model.Entity.MqttParams;
namespace MasstransferExporter; namespace MasstransferExporter;
@ -38,7 +39,7 @@ class Program
// 启动完成后,广播启动通知 // 启动完成后,广播启动通知
EventBus<bool>.Publish(EventType.StartUp, true); EventBus<bool>.Publish(EventType.StartUp, true);
DelayScheduler.Delay(async () => await CoordinateService.CoordinateExporter(), DelayScheduler.Delay(async () => await StrikeRecordService.ReportStrikeRecord(),
TimeSpan.FromSeconds(5)); TimeSpan.FromSeconds(5));
// 启动与主程序的通信 // 启动与主程序的通信