using CommunityToolkit.Mvvm.ComponentModel; using ivf_tl_Entity.Entity.Alarm; using ivf_tl_Entity.Entity.balance; using ivf_tl_Entity.Enums; using ivf_tl_Entity.Response; using ivf_tl_Manage.Converts; using ivf_tl_Manage.Win; 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.Media.Animation; namespace ivf_tl_Manage.ViewModels { public partial class DishRecordViewModel : BaseViewModel { public ObservableCollection TlInfoList { get; set; } = new ObservableCollection(); public List HouseList { get; set; } = new List { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; public int NoMarkTime = 48; /// /// 当前页码 /// [ObservableProperty] public int pageCurrent = 1; public int PageSize { get; set; } = 9; /// /// 查询范围 1: 全部,2:正在培养,3:结束培养 /// public int SelectedType = 1; [ObservableProperty] private string currentTitle = ""; [ObservableProperty] private int dataCount = -1; [ObservableProperty] private ObservableCollection dishRecordList = new ObservableCollection(); public TLInfo CurrentTlInfo = null; public int CurrentHouse = -1; public string SearchName = null; public string SearchTime = null; public string CasedId = null; public string Cycle = null; private DishProvider dishProvider; private HouseProvider houseProvider; public DishRecordViewModel(string tlsn) { base.NavName = KeyToStringConvert.GetLanguageStringByKey("0002"); base.ViewModelName = nameof(DishRecordViewModel); CurrentTitle = KeyToStringConvert.GetLanguageStringByKey("0027"); dishProvider = AppData.Instance.GetDishProvider(); houseProvider = AppData.Instance.GetHouseProvider(); TlInfoList = new ObservableCollection(AppData.Instance.MainWindowViewModel.devManageViewModel.TlInfoList); if (!string.IsNullOrEmpty(tlsn)) CurrentTlInfo = TlInfoList.FirstOrDefault(x => x.tlSn == tlsn); return; } public void OpenDishDetail(DishRecordEntity dishRecordEntity) { try { var tlinfo = TlInfoList.FirstOrDefault(x => x.tlSn == dishRecordEntity.tlSn); if (tlinfo == null) { //ToastMessageShow($"获取仪器信息失败:{dishRecordEntity.tlSn}"); ToastMessageShow($"{KeyToStringConvert.GetLanguageStringByKey("0345")}:{dishRecordEntity.tlSn}"); return; } var house = tlinfo.houses.FirstOrDefault(x => x.houseSn == dishRecordEntity.houseSn); if (house == null) { //ToastMessageShow($"获取舱室信息失败:{dishRecordEntity.houseSn}"); ToastMessageShow($"{KeyToStringConvert.GetLanguageStringByKey("0346")}:{dishRecordEntity.houseSn}"); return; } //PageCurrent = 1; //CurrentHouse = -1; //SearchName = null; //SelectedType = 1; //SearchTime = null; //CurrentTlInfo = null; var startTime = Convert.ToDateTime(dishRecordEntity.startTime); DateTime endTime = DateTime.Now; if (dishRecordEntity.state == 1) { house.IsUpdate = true; house.StartTime = startTime.ToString("MM-dd HH:mm"); var span = endTime.Subtract(startTime); if (span.TotalHours > 168) house.FaYuTime = $"168h+"; else house.FaYuTime = $"{(span.Days * 24) + span.Hours}h:{span.Minutes}m"; AppData.Instance.MainWindowViewModel.CurrentViewModle = new DetailViewModel(this, tlinfo, house.embryoRecordVO, house, true); ; } else { var CurrentTLSettingModel = houseProvider.GetSettingSystemApi(tlinfo.tlSn); if (CurrentTLSettingModel != null) NoMarkTime = CurrentTLSettingModel.operableEmbryoTime * 24; DateTime.TryParse(dishRecordEntity.endTime, out endTime); var newDish = dishProvider.GetDishByIdApi(dishRecordEntity.id); house.IsUpdate = false; house.StartTime = startTime.ToString("MM-dd HH:mm"); var span = DateTime.Now.Subtract(endTime); if (span.TotalHours > 168) house.FaYuTime = $"168h+"; else house.FaYuTime = $"{(span.Days * 24) + span.Hours}h:{span.Minutes}m"; if (span.TotalHours > NoMarkTime) { AppData.Instance.MainWindowViewModel.CurrentViewModle = new DetailViewModel(this, tlinfo, newDish, house, true) { IsHistory = true, IsCurrentDish = false }; } else { AppData.Instance.MainWindowViewModel.CurrentViewModle = new DetailViewModel(this, tlinfo, newDish, house, true) { IsHistory = true, IsCurrentDish = true }; } } } catch (Exception ex) { ExLog(ex, "OpenDishDetail"); } } private int Updata() { DishRecordList.Clear(); SearchDishRecordResponse searchAlarmResponse = new SearchDishRecordResponse(); searchAlarmResponse.current = PageCurrent; if (CurrentHouse != -1) searchAlarmResponse.houseSn = CurrentHouse; searchAlarmResponse.name = SearchName; searchAlarmResponse.selectType = SelectedType; searchAlarmResponse.size = PageSize; searchAlarmResponse.startTime = SearchTime; searchAlarmResponse.caseId = CasedId; searchAlarmResponse.cycle = Cycle; if (CurrentTlInfo != null) searchAlarmResponse.tlSn = CurrentTlInfo.tlSn; var a = dishProvider.SearchDishRecordApi(searchAlarmResponse); var k = ((PageCurrent - 1) * PageSize) + 1; DateTime startTime = DateTime.Now; DateTime endTime = DateTime.Now; DateTime createTime = DateTime.Now; TimeSpan span = endTime - startTime; DateTime currentTime = DateTime.Now; foreach (var item in a.records) { item.num = k++; if (item.state == 1) { item.stateString = KeyToStringConvert.GetLanguageStringByKey("0057"); } else { item.stateString = KeyToStringConvert.GetLanguageStringByKey("0029"); } DateTime.TryParse(item.createTime, out createTime); item.createTimeString = createTime.ToString("MM-dd HH:mm"); DateTime.TryParse(item.startTime, out startTime); item.startTimeString = startTime.ToString("MM-dd HH:mm"); if (string.IsNullOrEmpty(item.cycle)) item.cycle = "---"; if (string.IsNullOrEmpty(item.endTime)) { item.endTimeString = "---"; span = currentTime - startTime; } else { if (DateTime.TryParse(item.endTime, out endTime)) { span = endTime - startTime; item.endTimeString = endTime.ToString("MM-dd HH:mm"); } else { span = currentTime - startTime; item.endTimeString = item.endTime; } } item.fayuTime = $"{(span.Days * 24) + span.Hours}h:{span.Minutes}m"; DishRecordList.Add(item); } //MessageBoxShow("提示", "查询超时,请稍后重试"); if (!a.IsSuccess) MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0304"), KeyToStringConvert.GetLanguageStringByKey("0347")); return a.total; } public List GetAllDishRecord() { SearchDishRecordResponse searchAlarmResponse = new SearchDishRecordResponse(); searchAlarmResponse.current = 1; searchAlarmResponse.houseSn = null; searchAlarmResponse.name = null; searchAlarmResponse.selectType = 1; searchAlarmResponse.size = 99999; searchAlarmResponse.startTime = null; searchAlarmResponse.caseId = null; searchAlarmResponse.cycle = null; searchAlarmResponse.tlSn = null; var a = dishProvider.SearchDishRecordApi(searchAlarmResponse); return a.records; } public void UpdataCount() { SearchDishRecordResponse searchAlarmResponse = new SearchDishRecordResponse(); searchAlarmResponse.current = PageCurrent; if (CurrentHouse != -1) searchAlarmResponse.houseSn = CurrentHouse; searchAlarmResponse.name = SearchName; searchAlarmResponse.selectType = SelectedType; searchAlarmResponse.size = PageSize; searchAlarmResponse.startTime = SearchTime; searchAlarmResponse.caseId = CasedId; searchAlarmResponse.cycle = Cycle; if (CurrentTlInfo != null) searchAlarmResponse.tlSn = CurrentTlInfo.tlSn; var a = dishProvider.SearchDishRecordNumApi(searchAlarmResponse); DataCount = -1; switch (SelectedType) { case 1: DataCount = a.all; break; case 2: DataCount = a.current; break; case 3: DataCount = a.history; break; } if (DataCount == -1) DataCount = 0; } public void SetPageCurrent(int page) { PageCurrent = page; Updata(); } public void SetSelectedType(string typeString) { switch (typeString) { case "1": SelectedType = 1; CurrentTitle = KeyToStringConvert.GetLanguageStringByKey("0027"); break; case "2": SelectedType = 2; CurrentTitle = KeyToStringConvert.GetLanguageStringByKey("0028"); break; case "3": SelectedType = 3; CurrentTitle = KeyToStringConvert.GetLanguageStringByKey("0029"); break; } UpdataCount(); } public void SetCurrentTlInfo(TLInfo tLInfo, string name, string newTime) { if (CurrentTlInfo == tLInfo && SearchName == name && SearchTime == newTime) return; SearchName = name; SearchTime = newTime; CurrentTlInfo = tLInfo; UpdataCount(); } public void SetCurrentHouse(int housesn, string name, string newTime) { if (CurrentHouse == housesn && SearchName == name && SearchTime == newTime) return; SearchName = name; SearchTime = newTime; CurrentHouse = housesn; UpdataCount(); } public void SetSearchName(string name) { if (SearchName == name) return; SearchName = name; UpdataCount(); } public void SetCaseId(string name) { if (CasedId == name) return; CasedId = name; UpdataCount(); } public void SetCycle(string name) { if (Cycle == name) return; Cycle = name; UpdataCount(); } public void SetSearchTime(string newTime) { if (SearchTime == newTime) return; SearchTime = newTime; UpdataCount(); } public void SetSearchNameAndTime(string name, string newTime) { if (SearchName == name && SearchTime == newTime) return; SearchName = name; SearchTime = newTime; UpdataCount(); } public void DeletDishRecord(DishRecordEntity delDish) { try { //MessageBoxShow("删除", $"确定删除此条名为{delDish.wife}的培养记录吗?") != true if (MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0043"), KeyToStringConvert.GetLanguageStringByKey("0537")) != true) return; string error = dishProvider.DeleteDishRecordApi(delDish.id); if (!string.IsNullOrEmpty(error)) { //ToastMessageShow($"操作失败:{error}"); ToastMessageShow($"{KeyToStringConvert.GetLanguageStringByKey("0286")}:{error}"); return; } ToastShow(true); UpdataCount(); } catch (Exception ex) { ExLog(ex, "DeletDishRecord"); //ToastMessageShow($"操作异常:{ex.Message}"); ToastMessageShow($"{KeyToStringConvert.GetLanguageStringByKey("0291")}:{ex.Message}"); } } public void OpenPdfView(DishRecordEntity dishRecordEntity) { try { var tlinfo = TlInfoList.FirstOrDefault(x => x.tlSn == dishRecordEntity.tlSn); if (tlinfo == null) { //ToastMessageShow($"获取仪器信息失败:{dishRecordEntity.tlSn}"); ToastMessageShow($"{KeyToStringConvert.GetLanguageStringByKey("0345")}:{dishRecordEntity.tlSn}"); return; } var house = tlinfo.houses.FirstOrDefault(x => x.houseSn == dishRecordEntity.houseSn); if (house == null) { //ToastMessageShow($"获取舱室信息失败:{dishRecordEntity.houseSn}"); ToastMessageShow($"{KeyToStringConvert.GetLanguageStringByKey("0571")}:{dishRecordEntity.houseSn}"); return; } AppData.Instance.CurrentTlInfo = tlinfo; var startTime = Convert.ToDateTime(dishRecordEntity.startTime); DateTime endTime = DateTime.Now; if (dishRecordEntity.state == 1) { house.IsUpdate = true; house.StartTime = startTime.ToString("MM-dd HH:mm"); var span = endTime.Subtract(startTime); if (span.TotalHours > 168) house.FaYuTime = $"168h+"; else house.FaYuTime = $"{(span.Days * 24) + span.Hours}h:{span.Minutes}m"; //DetailViewModel vm = new DetailViewModel(this, tlinfo, house.embryoRecordVO, house, true); PdfViewModel vm = new PdfViewModel(this, house.embryoRecordVO, false); AppData.Instance.MainWindowViewModel.CurrentViewModle = vm; } else { var CurrentTLSettingModel = houseProvider.GetSettingSystemApi(tlinfo.tlSn); if (CurrentTLSettingModel != null) NoMarkTime = CurrentTLSettingModel.operableEmbryoTime * 24; DateTime.TryParse(dishRecordEntity.endTime, out endTime); var newDish = dishProvider.GetDishByIdApi(dishRecordEntity.id); house.IsUpdate = false; house.StartTime = startTime.ToString("MM-dd HH:mm"); var span = DateTime.Now.Subtract(endTime); if (span.TotalHours > 168) house.FaYuTime = $"168h+"; else house.FaYuTime = $"{(span.Days * 24) + span.Hours}h:{span.Minutes}m"; if (span.TotalHours > NoMarkTime) { //DetailViewModel vm = new DetailViewModel(this, tlinfo, newDish, house, true) { IsHistory = true, IsCurrentDish = false }; PdfViewModel vm = new PdfViewModel(this, newDish, false); AppData.Instance.MainWindowViewModel.CurrentViewModle = vm; } else { //DetailViewModel vm = new DetailViewModel(this, tlinfo, newDish, house, true) { IsHistory = true, IsCurrentDish = true }; PdfViewModel vm = new PdfViewModel(this, newDish, true); AppData.Instance.MainWindowViewModel.CurrentViewModle = vm; } } } catch (Exception ex) { ExLog(ex, "OpenDishDetail"); } } } }