|
|
@@ -49,6 +49,9 @@ namespace ivf_tl_Control
|
|
|
AppData.LogService.Pan = initTLResult.Item1.TLSetting.tmpDir;
|
|
|
|
|
|
if (!InitHouse(initTLResult.Item1, initTLResult.Item2, ref errorInfo)) return errorInfo;
|
|
|
+ // 舱室故障隔离:好舱继续后,把完整启动坏舱清单(扫口期 + InitHouse 构造期)经现有 reportAlarm
|
|
|
+ // 报警闭环上报一次(alarm 表/双端列表/短信电话/可消警);失败不影响启动。
|
|
|
+ try { AppData.ReportStartupFaults(); } catch { }
|
|
|
AppData.StartAsync().Wait();
|
|
|
return null;
|
|
|
}
|
|
|
@@ -131,9 +134,6 @@ namespace ivf_tl_Control
|
|
|
return (new TLInitControllerResult(), new List<int>());
|
|
|
}
|
|
|
|
|
|
- // 启动期坏舱经现有 reportAlarm 报警闭环上报(alarm 表/双端列表/短信电话/可消警);失败不影响启动。
|
|
|
- try { AppData.ReportStartupFaults(); } catch { }
|
|
|
-
|
|
|
TLInitData tLInitData = new TLInitData();
|
|
|
tLInitData.tlSn = $"NEO-1-{serialBin.TLNum}";
|
|
|
tLInitData.dayLighting = serialBin.dayLighting;
|
|
|
@@ -183,87 +183,76 @@ namespace ivf_tl_Control
|
|
|
|
|
|
var allList = AppData.SerialBinController.GetDishAndBalanceDataController(tLSetting.tlSn);
|
|
|
|
|
|
- int housesn = 11;
|
|
|
- AppData.BufferBottleBin = new BufferBottleBin(tLSetting, tLInitControllerResult.HouseList.FirstOrDefault(x => x.houseSn == housesn), AppData.Instance.guanbiTime);
|
|
|
- AppData.InitBufferBottleBinEvent(AppData.BufferBottleBin);
|
|
|
-
|
|
|
- housesn = 1;
|
|
|
- AppData.HouseBin1 = new HouseBin(tLSetting, tLInitControllerResult.HouseList.FirstOrDefault(x => x.houseSn == housesn), allList.Dishes.FirstOrDefault(x => x.houseSn == housesn), allList.BalanceList.FirstOrDefault(x => x.houseSn == housesn), tLInitControllerResult.HouseWellList.Where(x => x.houseSn == housesn).ToList());
|
|
|
- AppData.InitHouseBinEvent(AppData.HouseBin1);
|
|
|
-
|
|
|
-
|
|
|
- housesn = 2;
|
|
|
- AppData.HouseBin2 = new HouseBin(tLSetting, tLInitControllerResult.HouseList.FirstOrDefault(x => x.houseSn == housesn), allList.Dishes.FirstOrDefault(x => x.houseSn == housesn), allList.BalanceList.FirstOrDefault(x => x.houseSn == housesn), tLInitControllerResult.HouseWellList.Where(x => x.houseSn == housesn).ToList());
|
|
|
- AppData.InitHouseBinEvent(AppData.HouseBin2);
|
|
|
-
|
|
|
- housesn = 3;
|
|
|
- AppData.HouseBin3 = new HouseBin(tLSetting, tLInitControllerResult.HouseList.FirstOrDefault(x => x.houseSn == housesn), allList.Dishes.FirstOrDefault(x => x.houseSn == housesn), allList.BalanceList.FirstOrDefault(x => x.houseSn == housesn), tLInitControllerResult.HouseWellList.Where(x => x.houseSn == housesn).ToList());
|
|
|
- AppData.InitHouseBinEvent(AppData.HouseBin3);
|
|
|
-
|
|
|
- housesn = 4;
|
|
|
- AppData.HouseBin4 = new HouseBin(tLSetting, tLInitControllerResult.HouseList.FirstOrDefault(x => x.houseSn == housesn), allList.Dishes.FirstOrDefault(x => x.houseSn == housesn), allList.BalanceList.FirstOrDefault(x => x.houseSn == housesn), tLInitControllerResult.HouseWellList.Where(x => x.houseSn == housesn).ToList());
|
|
|
- AppData.InitHouseBinEvent(AppData.HouseBin4);
|
|
|
-
|
|
|
- housesn = 5;
|
|
|
- AppData.HouseBin5 = new HouseBin(tLSetting, tLInitControllerResult.HouseList.FirstOrDefault(x => x.houseSn == housesn), allList.Dishes.FirstOrDefault(x => x.houseSn == housesn), allList.BalanceList.FirstOrDefault(x => x.houseSn == housesn), tLInitControllerResult.HouseWellList.Where(x => x.houseSn == housesn).ToList());
|
|
|
- AppData.InitHouseBinEvent(AppData.HouseBin5);
|
|
|
-
|
|
|
- housesn = 6;
|
|
|
- AppData.HouseBin6 = new HouseBin(tLSetting, tLInitControllerResult.HouseList.FirstOrDefault(x => x.houseSn == housesn), allList.Dishes.FirstOrDefault(x => x.houseSn == housesn), allList.BalanceList.FirstOrDefault(x => x.houseSn == housesn), tLInitControllerResult.HouseWellList.Where(x => x.houseSn == housesn).ToList());
|
|
|
- AppData.InitHouseBinEvent(AppData.HouseBin6);
|
|
|
-
|
|
|
- housesn = 7;
|
|
|
- AppData.HouseBin7 = new HouseBin(tLSetting, tLInitControllerResult.HouseList.FirstOrDefault(x => x.houseSn == housesn), allList.Dishes.FirstOrDefault(x => x.houseSn == housesn), allList.BalanceList.FirstOrDefault(x => x.houseSn == housesn), tLInitControllerResult.HouseWellList.Where(x => x.houseSn == housesn).ToList());
|
|
|
- AppData.InitHouseBinEvent(AppData.HouseBin7);
|
|
|
-
|
|
|
- housesn = 8;
|
|
|
- AppData.HouseBin8 = new HouseBin(tLSetting, tLInitControllerResult.HouseList.FirstOrDefault(x => x.houseSn == housesn), allList.Dishes.FirstOrDefault(x => x.houseSn == housesn), allList.BalanceList.FirstOrDefault(x => x.houseSn == housesn), tLInitControllerResult.HouseWellList.Where(x => x.houseSn == housesn).ToList());
|
|
|
- AppData.InitHouseBinEvent(AppData.HouseBin8);
|
|
|
-
|
|
|
- housesn = 9;
|
|
|
- AppData.HouseBin9 = new HouseBin(tLSetting, tLInitControllerResult.HouseList.FirstOrDefault(x => x.houseSn == housesn), allList.Dishes.FirstOrDefault(x => x.houseSn == housesn), allList.BalanceList.FirstOrDefault(x => x.houseSn == housesn), tLInitControllerResult.HouseWellList.Where(x => x.houseSn == housesn).ToList());
|
|
|
- AppData.InitHouseBinEvent(AppData.HouseBin9);
|
|
|
-
|
|
|
- housesn = 10;
|
|
|
- AppData.HouseBin10 = new HouseBin(tLSetting, tLInitControllerResult.HouseList.FirstOrDefault(x => x.houseSn == housesn), allList.Dishes.FirstOrDefault(x => x.houseSn == housesn), allList.BalanceList.FirstOrDefault(x => x.houseSn == housesn), tLInitControllerResult.HouseWellList.Where(x => x.houseSn == housesn).ToList());
|
|
|
- AppData.InitHouseBinEvent(AppData.HouseBin10);
|
|
|
+ // 舱室故障隔离:单舱构造/启动各自兜底——抛异常只登记坏舱 + 跳过该舱,绝不拖垮其余舱(spec §35)。
|
|
|
+ void Build(int sn, Action build)
|
|
|
+ {
|
|
|
+ try { build(); }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ AppData.LogService.ExceptionLog(ex, $"舱{sn}构造失败(已隔离,其余舱继续)", null, LogEnum.RunException);
|
|
|
+ AppData.StartupFaults?.Add(new HouseFault
|
|
|
+ {
|
|
|
+ HouseSn = sn,
|
|
|
+ Type = HouseFaultType.InitException,
|
|
|
+ Reason = $"舱{sn}构造异常:{ex.Message}",
|
|
|
+ Stage = "舱初始化",
|
|
|
+ At = DateTime.UtcNow,
|
|
|
+ Isolated = true
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ void Start(int sn, Action start)
|
|
|
+ {
|
|
|
+ try { start(); }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ AppData.LogService.ExceptionLog(ex, $"舱{sn} StartTask 失败(已隔离)", null, LogEnum.RunException);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- AppData.HouseBin1.CamNum = CamNum;
|
|
|
- AppData.HouseBin2.CamNum = CamNum;
|
|
|
- AppData.HouseBin3.CamNum = CamNum;
|
|
|
- AppData.HouseBin4.CamNum = CamNum;
|
|
|
- AppData.HouseBin5.CamNum = CamNum;
|
|
|
- AppData.HouseBin6.CamNum = CamNum;
|
|
|
- AppData.HouseBin7.CamNum = CamNum;
|
|
|
- AppData.HouseBin8.CamNum = CamNum;
|
|
|
- AppData.HouseBin9.CamNum = CamNum;
|
|
|
- AppData.HouseBin10.CamNum = CamNum;
|
|
|
+ Build(11, () =>
|
|
|
+ {
|
|
|
+ AppData.BufferBottleBin = new BufferBottleBin(tLSetting, tLInitControllerResult.HouseList.FirstOrDefault(x => x.houseSn == 11), AppData.Instance.guanbiTime);
|
|
|
+ AppData.InitBufferBottleBinEvent(AppData.BufferBottleBin);
|
|
|
+ });
|
|
|
+
|
|
|
+ Build(1, () => { AppData.HouseBin1 = new HouseBin(tLSetting, tLInitControllerResult.HouseList.FirstOrDefault(x => x.houseSn == 1), allList.Dishes.FirstOrDefault(x => x.houseSn == 1), allList.BalanceList.FirstOrDefault(x => x.houseSn == 1), tLInitControllerResult.HouseWellList.Where(x => x.houseSn == 1).ToList()); AppData.InitHouseBinEvent(AppData.HouseBin1); });
|
|
|
+ Build(2, () => { AppData.HouseBin2 = new HouseBin(tLSetting, tLInitControllerResult.HouseList.FirstOrDefault(x => x.houseSn == 2), allList.Dishes.FirstOrDefault(x => x.houseSn == 2), allList.BalanceList.FirstOrDefault(x => x.houseSn == 2), tLInitControllerResult.HouseWellList.Where(x => x.houseSn == 2).ToList()); AppData.InitHouseBinEvent(AppData.HouseBin2); });
|
|
|
+ Build(3, () => { AppData.HouseBin3 = new HouseBin(tLSetting, tLInitControllerResult.HouseList.FirstOrDefault(x => x.houseSn == 3), allList.Dishes.FirstOrDefault(x => x.houseSn == 3), allList.BalanceList.FirstOrDefault(x => x.houseSn == 3), tLInitControllerResult.HouseWellList.Where(x => x.houseSn == 3).ToList()); AppData.InitHouseBinEvent(AppData.HouseBin3); });
|
|
|
+ Build(4, () => { AppData.HouseBin4 = new HouseBin(tLSetting, tLInitControllerResult.HouseList.FirstOrDefault(x => x.houseSn == 4), allList.Dishes.FirstOrDefault(x => x.houseSn == 4), allList.BalanceList.FirstOrDefault(x => x.houseSn == 4), tLInitControllerResult.HouseWellList.Where(x => x.houseSn == 4).ToList()); AppData.InitHouseBinEvent(AppData.HouseBin4); });
|
|
|
+ Build(5, () => { AppData.HouseBin5 = new HouseBin(tLSetting, tLInitControllerResult.HouseList.FirstOrDefault(x => x.houseSn == 5), allList.Dishes.FirstOrDefault(x => x.houseSn == 5), allList.BalanceList.FirstOrDefault(x => x.houseSn == 5), tLInitControllerResult.HouseWellList.Where(x => x.houseSn == 5).ToList()); AppData.InitHouseBinEvent(AppData.HouseBin5); });
|
|
|
+ Build(6, () => { AppData.HouseBin6 = new HouseBin(tLSetting, tLInitControllerResult.HouseList.FirstOrDefault(x => x.houseSn == 6), allList.Dishes.FirstOrDefault(x => x.houseSn == 6), allList.BalanceList.FirstOrDefault(x => x.houseSn == 6), tLInitControllerResult.HouseWellList.Where(x => x.houseSn == 6).ToList()); AppData.InitHouseBinEvent(AppData.HouseBin6); });
|
|
|
+ Build(7, () => { AppData.HouseBin7 = new HouseBin(tLSetting, tLInitControllerResult.HouseList.FirstOrDefault(x => x.houseSn == 7), allList.Dishes.FirstOrDefault(x => x.houseSn == 7), allList.BalanceList.FirstOrDefault(x => x.houseSn == 7), tLInitControllerResult.HouseWellList.Where(x => x.houseSn == 7).ToList()); AppData.InitHouseBinEvent(AppData.HouseBin7); });
|
|
|
+ Build(8, () => { AppData.HouseBin8 = new HouseBin(tLSetting, tLInitControllerResult.HouseList.FirstOrDefault(x => x.houseSn == 8), allList.Dishes.FirstOrDefault(x => x.houseSn == 8), allList.BalanceList.FirstOrDefault(x => x.houseSn == 8), tLInitControllerResult.HouseWellList.Where(x => x.houseSn == 8).ToList()); AppData.InitHouseBinEvent(AppData.HouseBin8); });
|
|
|
+ Build(9, () => { AppData.HouseBin9 = new HouseBin(tLSetting, tLInitControllerResult.HouseList.FirstOrDefault(x => x.houseSn == 9), allList.Dishes.FirstOrDefault(x => x.houseSn == 9), allList.BalanceList.FirstOrDefault(x => x.houseSn == 9), tLInitControllerResult.HouseWellList.Where(x => x.houseSn == 9).ToList()); AppData.InitHouseBinEvent(AppData.HouseBin9); });
|
|
|
+ Build(10, () => { AppData.HouseBin10 = new HouseBin(tLSetting, tLInitControllerResult.HouseList.FirstOrDefault(x => x.houseSn == 10), allList.Dishes.FirstOrDefault(x => x.houseSn == 10), allList.BalanceList.FirstOrDefault(x => x.houseSn == 10), tLInitControllerResult.HouseWellList.Where(x => x.houseSn == 10).ToList()); AppData.InitHouseBinEvent(AppData.HouseBin10); });
|
|
|
+
|
|
|
+ if (AppData.HouseBin1 != null) AppData.HouseBin1.CamNum = CamNum;
|
|
|
+ if (AppData.HouseBin2 != null) AppData.HouseBin2.CamNum = CamNum;
|
|
|
+ if (AppData.HouseBin3 != null) AppData.HouseBin3.CamNum = CamNum;
|
|
|
+ if (AppData.HouseBin4 != null) AppData.HouseBin4.CamNum = CamNum;
|
|
|
+ if (AppData.HouseBin5 != null) AppData.HouseBin5.CamNum = CamNum;
|
|
|
+ if (AppData.HouseBin6 != null) AppData.HouseBin6.CamNum = CamNum;
|
|
|
+ if (AppData.HouseBin7 != null) AppData.HouseBin7.CamNum = CamNum;
|
|
|
+ if (AppData.HouseBin8 != null) AppData.HouseBin8.CamNum = CamNum;
|
|
|
+ if (AppData.HouseBin9 != null) AppData.HouseBin9.CamNum = CamNum;
|
|
|
+ if (AppData.HouseBin10 != null) AppData.HouseBin10.CamNum = CamNum;
|
|
|
|
|
|
if (!AppData.MvcTest)
|
|
|
{
|
|
|
- if (runHouses.Contains(1)) AppData.HouseBin1.StartTask();
|
|
|
-
|
|
|
- if (runHouses.Contains(2)) AppData.HouseBin2.StartTask();
|
|
|
-
|
|
|
- if (runHouses.Contains(3)) AppData.HouseBin3.StartTask();
|
|
|
-
|
|
|
- if (runHouses.Contains(4)) AppData.HouseBin4.StartTask();
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- if (runHouses.Contains(6)) AppData.HouseBin6.StartTask();
|
|
|
-
|
|
|
- if (runHouses.Contains(7)) AppData.HouseBin7.StartTask();
|
|
|
-
|
|
|
- if (runHouses.Contains(8)) AppData.HouseBin8.StartTask();
|
|
|
-
|
|
|
- if (runHouses.Contains(9)) AppData.HouseBin9.StartTask();
|
|
|
-
|
|
|
- if (runHouses.Contains(10)) AppData.HouseBin10.StartTask();
|
|
|
+ if (runHouses.Contains(1) && AppData.HouseBin1 != null) Start(1, () => AppData.HouseBin1.StartTask());
|
|
|
+ if (runHouses.Contains(2) && AppData.HouseBin2 != null) Start(2, () => AppData.HouseBin2.StartTask());
|
|
|
+ if (runHouses.Contains(3) && AppData.HouseBin3 != null) Start(3, () => AppData.HouseBin3.StartTask());
|
|
|
+ if (runHouses.Contains(4) && AppData.HouseBin4 != null) Start(4, () => AppData.HouseBin4.StartTask());
|
|
|
+ if (runHouses.Contains(6) && AppData.HouseBin6 != null) Start(6, () => AppData.HouseBin6.StartTask());
|
|
|
+ if (runHouses.Contains(7) && AppData.HouseBin7 != null) Start(7, () => AppData.HouseBin7.StartTask());
|
|
|
+ if (runHouses.Contains(8) && AppData.HouseBin8 != null) Start(8, () => AppData.HouseBin8.StartTask());
|
|
|
+ if (runHouses.Contains(9) && AppData.HouseBin9 != null) Start(9, () => AppData.HouseBin9.StartTask());
|
|
|
+ if (runHouses.Contains(10) && AppData.HouseBin10 != null) Start(10, () => AppData.HouseBin10.StartTask());
|
|
|
}
|
|
|
- if (runHouses.Contains(5)) AppData.HouseBin5.StartTask();
|
|
|
+ if (runHouses.Contains(5) && AppData.HouseBin5 != null) Start(5, () => AppData.HouseBin5.StartTask());
|
|
|
|
|
|
- if (runHouses.Contains(11)) AppData.BufferBottleBin.StartTask();
|
|
|
+ if (runHouses.Contains(11) && AppData.BufferBottleBin != null) Start(11, () => AppData.BufferBottleBin.StartTask());
|
|
|
return true;
|
|
|
}
|
|
|
catch (Exception ex)
|