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);
}
}
}