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