桌面端快检记录新增列表及同步mes

This commit is contained in:
2026-06-22 17:38:49 +08:00
parent 3bce685f3a
commit efcd73a565
37 changed files with 2481 additions and 416 deletions

View File

@@ -0,0 +1,11 @@
using Prism.Events;
namespace YY.Admin.Core.Events;
public class RubberQuickTestRecordChangedPayload
{
public string Action { get; set; } = string.Empty;
public string? RecordId { get; set; }
}
public class RubberQuickTestRecordChangedEvent : PubSubEvent<RubberQuickTestRecordChangedPayload> { }

View File

@@ -0,0 +1,31 @@
using YY.Admin.Core.Entity;
namespace YY.Admin.Core.Services;
public interface IRubberQuickTestRecordService
{
Task<RubberQuickTestRecordPageResult> PageAsync(
int pageNo,
int pageSize,
string? filterRecordNo = null,
string? filterRubberMaterialName = null,
string? filterPlanNo = null,
CancellationToken ct = default);
Task<MesXslRubberQuickTestRecord?> GetByIdAsync(string id, CancellationToken ct = default);
RubberQuickTestRecordLocalItem? GetByLocalId(string localId);
Task<RubberQuickTestRecordSaveResult> SaveAsync(MesXslRubberQuickTestRecord entity, CancellationToken ct = default);
/// <summary>删除本地同步失败的快检记录(已同步或待同步不可删)</summary>
bool DeleteFailedLocal(string localId);
string GenerateRecordNo(string rubberMaterialName);
}
public record RubberQuickTestRecordPageResult(
List<RubberQuickTestRecordListRow> Records,
long Total,
int PageNo,
int PageSize);

View File

@@ -7,6 +7,9 @@ public class MesXslRubberQuickTestRecord
public string? RubberMaterialId { get; set; }
public string? RubberMaterialName { get; set; }
public string? StdId { get; set; }
public string? StdName { get; set; }
public string? TestMethodId { get; set; }
public string? TestMethodName { get; set; }
public string? ProdEquipmentLedgerId { get; set; }
public string? ProdEquipmentName { get; set; }
public DateTime? ProductionDate { get; set; }
@@ -17,8 +20,18 @@ public class MesXslRubberQuickTestRecord
public string? InspectorUserId { get; set; }
public string? InspectorUsername { get; set; }
public string? InspectorRealname { get; set; }
public string? QuickTestTypeId { get; set; }
public string? QuickTestTypeName { get; set; }
public string? InspectResult { get; set; }
public string? ProductionPlanNo { get; set; }
public List<MesXslRubberQuickTestRecordLine>? LineList { get; set; }
public DateTime? CreateTime { get; set; }
public List<MesXslRubberQuickTestRecordStdLine>? StdLineList { get; set; }
public List<MesXslRubberQuickTestRecordRawLine>? RawLineList { get; set; }
public List<MesXslRubberQuickTestRecordChartPoint>? ChartPointList { get; set; }
/// <summary>列表展示:班次文本</summary>
public string? WorkShiftText { get; set; }
/// <summary>列表展示:是否合格</summary>
public string? InspectResultText { get; set; }
}

View File

@@ -0,0 +1,13 @@
namespace YY.Admin.Core.Entity;
/// <summary>胶料快检记录曲线图数据点</summary>
public class MesXslRubberQuickTestRecordChartPoint
{
public string? Id { get; set; }
public string? RecordId { get; set; }
public decimal? TimeMin { get; set; }
public decimal? UpperTemp { get; set; }
public decimal? LowerTemp { get; set; }
public decimal? TorqueS { get; set; }
public int? SortNo { get; set; }
}

View File

@@ -0,0 +1,16 @@
namespace YY.Admin.Core.Entity;
/// <summary>胶料快检记录数据标准明细(实验标准快照)</summary>
public class MesXslRubberQuickTestRecordStdLine
{
public string? Id { get; set; }
public string? RecordId { get; set; }
public string? DataPointId { get; set; }
public string? PointName { get; set; }
public decimal? LowerLimit { get; set; }
public decimal? UpperLimit { get; set; }
public decimal? LowerWarn { get; set; }
public decimal? UpperWarn { get; set; }
public decimal? TargetValue { get; set; }
public int? SortNo { get; set; }
}

View File

@@ -0,0 +1,32 @@
namespace YY.Admin.Core.Entity;
/// <summary>胶料快检记录列表行</summary>
public class RubberQuickTestRecordListRow
{
public string? LocalId { get; set; }
public string? MesId { get; set; }
public string? RecordNo { get; set; }
public DateTime? ProductionDate { get; set; }
public string? ProdEquipmentName { get; set; }
public string? WorkShiftDisplay { get; set; }
public string? ProductionPlanNo { get; set; }
public string? RubberMaterialName { get; set; }
public string? StdName { get; set; }
public string? TestMethodName { get; set; }
public string? QuickTestTypeName { get; set; }
public string? TrainNo { get; set; }
public int? InspectTimes { get; set; }
public string? InspectorRealname { get; set; }
public DateTime? InspectDate { get; set; }
public string? InspectResultDisplay { get; set; }
public string SyncStatus { get; set; } = "Pending";
public string SyncStatusDisplay => SyncStatus switch
{
"Synced" => "已同步",
"Failed" => "失败",
_ => "待同步"
};
/// <summary>仅本地同步失败记录可删除</summary>
public bool CanDelete => SyncStatus == "Failed" && !string.IsNullOrWhiteSpace(LocalId);
}

View File

@@ -0,0 +1,13 @@
namespace YY.Admin.Core.Entity;
/// <summary>桌面端本地胶料快检记录包装(含同步状态)</summary>
public class RubberQuickTestRecordLocalItem
{
public string LocalId { get; set; } = Guid.NewGuid().ToString("N");
public string? MesId { get; set; }
/// <summary>Pending / Synced / Failed</summary>
public string SyncStatus { get; set; } = "Pending";
public string? SyncError { get; set; }
public DateTime LocalCreateTime { get; set; } = DateTime.Now;
public MesXslRubberQuickTestRecord Record { get; set; } = new();
}

View File

@@ -0,0 +1,8 @@
namespace YY.Admin.Core.Entity;
public class RubberQuickTestRecordSaveResult
{
public MesXslRubberQuickTestRecord Record { get; set; } = new();
public string LocalId { get; set; } = string.Empty;
public string SyncStatus { get; set; } = "Pending";
}

View File

@@ -51,7 +51,7 @@ public class SysMenuSeedData : ISqlSugarEntitySeedData<SysMenu>
// 胶料快检实验标准(桌面端只读)
new SysMenu{ Id=1300150011301, Pid=1300150000101, Title="胶料快检实验标准", Path="/xslmes/mesXslRubberQuickTestStd", Name="mesXslRubberQuickTestStd", Component="RubberQuickTestStdListView", Icon="&#xe7ce;", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=112 },
// 胶料快检记录(紧接实验标准之后)
new SysMenu{ Id=1300150011201, Pid=1300150000101, Title="胶料快检记录", Path="/xslmes/rubberQuickTestOperation", Name="rubberQuickTestOperation", Component="RubberQuickTestOperationView", Icon="&#xe7de;", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=113 },
new SysMenu{ Id=1300150011201, Pid=1300150000101, Title="胶料快检记录", Path="/xslmes/rubberQuickTestRecord", Name="rubberQuickTestRecord", Component="RubberQuickTestRecordListView", Icon="&#xe7de;", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=113 },
// 密炼计划
new SysMenu{ Id=1300150011401, Pid=1300150000101, Title="密炼计划", Path="/xslmes/mesXslMixingProductionPlan", Name="mesXslMixingProductionPlan", Component="MixingProductionPlanListView", Icon="&#xe7ce;", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=114 },

View File

@@ -518,6 +518,9 @@ namespace YY.Admin.Core.SqlSugar
dbProvider.Updateable<SysMenu>()
.SetColumns(m => m.Title == "胶料快检记录")
.SetColumns(m => m.Path == "/xslmes/rubberQuickTestRecord")
.SetColumns(m => m.Name == "rubberQuickTestRecord")
.SetColumns(m => m.Component == "RubberQuickTestRecordListView")
.SetColumns(m => m.OrderNo == 113)
.Where(m => m.Id == quickTestRecordMenuId)
.ExecuteCommand();