ServiceMonitorFaultMapper.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. using System;
  2. namespace ivf_tl_Operate.ViewModel
  3. {
  4. /// <summary>
  5. /// 舱故障(H-08)展示映射:把 control 经 /status 透出的 HouseFaultRow 原始字段
  6. /// (英文枚举名 / 舱号 / UTC 时间 / 隔离布尔) 转成现场可读中文文案。
  7. ///
  8. /// 纯静态、不依赖 WPF / control 程序集,签名只收基础类型,便于独立 harness / 单测验证
  9. /// (ServiceMonitorViewModel.BuildFaultRows 调用它构造展示行,颜色 Brush 留在 ViewModel)。
  10. /// </summary>
  11. public static class ServiceMonitorFaultMapper
  12. {
  13. /// <summary>HouseFaultType 枚举名(control 端 ToString 透出的英文)→ 现场可读中文。未知码原样返回。</summary>
  14. public static string FaultTypeZh(string type)
  15. {
  16. switch (type)
  17. {
  18. case "CameraReadFailed": return "相机SN读取异常";
  19. case "CameraDuplicateSn": return "相机SN重复";
  20. case "HouseSnDuplicate": return "舱号重复";
  21. case "CcdSnMissing": return "相机SN缺失(相机半坏)";
  22. case "CcdSnDuplicate": return "舱相机SN重复";
  23. case "SerialReadException": return "串口读异常";
  24. case "InitException": return "舱初始化异常";
  25. case "RuntimeFault": return "运行期突发故障";
  26. default: return string.IsNullOrEmpty(type) ? "未知故障" : type;
  27. }
  28. }
  29. /// <summary>舱号文案:&gt;0=具体舱(可被剔除);否则=相机/串口级、未定位到具体舱。</summary>
  30. public static string HouseText(int houseSn) =>
  31. houseSn > 0 ? $"{houseSn}号舱" : "未定位(相机/串口级)";
  32. /// <summary>发生时刻:control 端存 UtcNow,展示转本地时间;default=未知。</summary>
  33. public static string AtText(DateTime atUtc) =>
  34. atUtc == default(DateTime) ? "—" : atUtc.ToLocalTime().ToString("MM-dd HH:mm:ss");
  35. /// <summary>隔离态文案:已被剔除/已停=已隔离;否则仅提示(舱号未知的相机/串口级故障不剔除某舱)。</summary>
  36. public static string IsolatedText(bool isolated) => isolated ? "已隔离" : "仅提示";
  37. }
  38. }