using ivf_tl_Entity.Entity; using ivf_tl_Entity.Entity.balance; using ivf_tl_Entity.Entity.Result; using ivf_tl_Manage.Converts; using ivf_tl_Manage.Views; using ivf_tl_Service.HttpProvider; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Documents; using System.Windows.Input; namespace ivf_tl_Manage.ViewModels { /// /// 设备管理主界面数据源 /// public partial class DevManageViewModel : BaseViewModel { private DishProvider _dishProvider = null; private TLInfoProvider _tLInfoProvider = null; public AppData Appdata { get; set; } public DevManageView View { get; set; } = null; public List TlInfoList { get; set; } = new List(); public bool IsInit { get; set; } = false; public DevManageViewModel() { base.NavName = KeyToStringConvert.GetLanguageStringByKey("0001"); base.ViewModelName = nameof(DevManageViewModel); Appdata = AppData.Instance; _dishProvider = new DishProvider(Appdata.HttpServiceCall, Appdata.LogService); _tLInfoProvider = Appdata.GetTLInfoProvider(); } List tLInfos = new List(); int zhixingNum = 0; public bool UpData() { bool isAdd = false; try { zhixingNum = 1; tLInfos.Clear(); tLInfos = _dishProvider.GetTlInfoList(); zhixingNum = 2; TLInfo currentTlInfo = null; GetHouseCultureListResult currentDishInfo = null; foreach (var item in tLInfos) { currentTlInfo = TlInfoList.FirstOrDefault(x => x.tlSn == item.tlSn); if (currentTlInfo == null) { isAdd = true; TlInfoList.Add(item); continue; } currentTlInfo.id = item.id; currentTlInfo.tlName = item.tlName; currentTlInfo.state = item.state; currentTlInfo.online = item.online; } zhixingNum = 3; foreach (var item in TlInfoList) { currentDishInfo = _tLInfoProvider.GetHouseCultureList(item.tlSn); if (currentDishInfo == null) continue; if (currentDishInfo.embryoCultureRecords == null) currentDishInfo.embryoCultureRecords = new List(); if (currentDishInfo.balances == null) currentDishInfo.balances = new List(); zhixingNum = 4; foreach (var houseItem in item.houses) { if (houseItem == null) continue; houseItem.embryoRecordVO = currentDishInfo.embryoCultureRecords.FirstOrDefault(x => x.houseSn == houseItem.houseSn); if (houseItem.embryoRecordVO == null) houseItem.embryoRecordVO = new Dish(); if (houseItem.embryoRecordVO.embryoList == null) houseItem.embryoRecordVO.embryoList = new List(); houseItem.balanceVO = currentDishInfo.balances.FirstOrDefault(x => x.houseSn == houseItem.houseSn); if (!houseItem.IsUpdate) continue; if (houseItem.embryoRecordVO != null && houseItem.embryoRecordVO.id > 0) { if (DateTime.TryParse(houseItem.embryoRecordVO.startTime, out DateTime sou)) { var span = DateTime.Now.Subtract(sou); if (span.TotalHours > 168) houseItem.FaYuTime = $"168h+"; else houseItem.FaYuTime = $"{(span.Days * 24) + span.Hours}h:{span.Minutes}m"; houseItem.StartTime = sou.ToString("MM-dd HH:mm"); } else { houseItem.FaYuTime = "-------"; houseItem.StartTime = "--- ---"; } continue; } if (houseItem.balanceVO != null && houseItem.balanceVO.id > 0) { if (DateTime.TryParse(houseItem.balanceVO.startTime, out DateTime sou)) { var span = DateTime.Now.Subtract(sou); if (span.TotalHours > 168) houseItem.FaYuTime = $"168h+"; else houseItem.FaYuTime = $"{(span.Days * 24) + span.Hours}h:{span.Minutes}m"; houseItem.StartTime = sou.ToString("MM-dd HH:mm"); } else { houseItem.FaYuTime = "-------"; houseItem.StartTime = "--- ---"; } continue; } houseItem.FaYuTime = "-------"; houseItem.StartTime = "--- ---"; } zhixingNum = 5; } tLInfos.Clear(); return isAdd; } catch (Exception ex) { ExLog(ex, $"UpData:{zhixingNum}:{isAdd}"); return false; } } public bool UpData1() { try { bool isAdd = false; TlInfoList.Clear(); tLInfos.Clear(); tLInfos = _dishProvider.GetTlInfoList(); TLInfo currentTlInfo = null; GetHouseCultureListResult currentDishInfo = null; foreach (var item in tLInfos) { currentTlInfo = TlInfoList.FirstOrDefault(x => x.tlSn == item.tlSn); if (currentTlInfo == null) { isAdd = true; TlInfoList.Add(item); continue; } currentTlInfo.id = item.id; currentTlInfo.tlName = item.tlName; currentTlInfo.state = item.state; currentTlInfo.online = item.online; } foreach (var item in TlInfoList) { currentDishInfo = _tLInfoProvider.GetHouseCultureList(item.tlSn); if (currentDishInfo == null) continue; if (currentDishInfo.embryoCultureRecords == null) currentDishInfo.embryoCultureRecords = new List(); if (currentDishInfo.balances == null) currentDishInfo.balances = new List(); foreach (var houseItem in item.houses) { if (houseItem == null) continue; houseItem.embryoRecordVO = currentDishInfo.embryoCultureRecords.FirstOrDefault(x => x.houseSn == houseItem.houseSn); if (houseItem.embryoRecordVO == null) houseItem.embryoRecordVO = new Dish(); if (houseItem.embryoRecordVO.embryoList == null) houseItem.embryoRecordVO.embryoList = new List(); houseItem.balanceVO = currentDishInfo.balances.FirstOrDefault(x => x.houseSn == houseItem.houseSn); if (!houseItem.IsUpdate) continue; if (houseItem.embryoRecordVO != null && houseItem.embryoRecordVO.id > 0) { if (DateTime.TryParse(houseItem.embryoRecordVO.startTime, out DateTime sou)) { var span = DateTime.Now.Subtract(sou); if (span.TotalHours > 168) houseItem.FaYuTime = $"168h+"; else houseItem.FaYuTime = $"{(span.Days * 24) + span.Hours}h:{span.Minutes}m"; houseItem.StartTime = sou.ToString("MM-dd HH:mm"); } else { houseItem.FaYuTime = "-------"; houseItem.StartTime = "--- ---"; } continue; } if (houseItem.balanceVO != null && houseItem.balanceVO.id > 0) { if (DateTime.TryParse(houseItem.balanceVO.startTime, out DateTime sou)) { var span = DateTime.Now.Subtract(sou); if (span.TotalHours > 168) houseItem.FaYuTime = $"168h+"; else houseItem.FaYuTime = $"{(span.Days * 24) + span.Hours}h:{span.Minutes}m"; houseItem.StartTime = sou.ToString("MM-dd HH:mm"); } else { houseItem.FaYuTime = "-------"; houseItem.StartTime = "--- ---"; } continue; } houseItem.FaYuTime = "-------"; houseItem.StartTime = "--- ---"; } } tLInfos.Clear(); return isAdd; } catch (Exception ex) { ExLog(ex, "UpData"); return false; } } public bool DeleteTL(long id) { return _tLInfoProvider.DeleteTlByIdApi(id); } public bool HiddenTL(long id) { return _tLInfoProvider.HiddenTLByIdAPi(id); } } }