| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550 |
- using CommunityToolkit.Mvvm.ComponentModel;
- using ivf_tl_Entity.Entity;
- using ivf_tl_Entity.Entity.balance;
- using ivf_tl_Entity.Entity.Mark;
- using ivf_tl_Entity.Entity.Result;
- 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 log4net.Layout;
- using Newtonsoft.Json.Linq;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows;
- namespace ivf_tl_Manage.ViewModels
- {
- public partial class MarkUseViewModel : BaseViewModel
- {
- //public List<GetPicturesByRecordIdData> AllEmbryoPicAndVideo { get; set; } = new List<GetPicturesByRecordIdData>();
- //public PictureEntity CurrentPicZhen { get; set; }
- //public GetPicturesByRecordIdData CurrentVideoData { get; set; } = null;
- public event Action<int, int, string> DingWeiEvent;
- [ObservableProperty]
- private Dish currentDish;
- [ObservableProperty]
- private Embryo currentEmbryo = null;
- [ObservableProperty]
- private double videoAllTime = 1;
- [ObservableProperty]
- private double videoCurrentTime = 0;
- [ObservableProperty]
- private int currentFocal = 0;
- [ObservableProperty]
- private Dictionary<double, string> fpsItemList = new Dictionary<double, string>();
- [ObservableProperty]
- private KeyValuePair<double, string> selectedFps = new KeyValuePair<double, string>(1, "1.0x");
- [ObservableProperty]
- private List<MarkEntity> markList = new List<MarkEntity>();
- [ObservableProperty]
- private MarkEntity currentMarkEntity = null;
- [ObservableProperty]
- private List<MarkModelTypeEntity> markModelTypeList = new List<MarkModelTypeEntity>();
- [ObservableProperty]
- private MarkModelTypeEntity currentMarkModelType = null;
- [ObservableProperty]
- private bool isDishRecord = false;
- [ObservableProperty]
- private bool isUpdata = false;
- [ObservableProperty]
- private bool isCurrentDish = true;
- [ObservableProperty]
- private int currentVideoFps = 1;
- public DetailProvider detailProvider = null;
- public List<DishPicAndVideo> DishPicAndVideoList { get; set; } = new List<DishPicAndVideo>();
- public DishPicAndVideo CurrentWellDishPicAndVideo { get; set; } = null;
- public LayerPicAndVideo CurrentWellLayerPicAndVideo { get; set; } = null;
- public DetailPic CurrentPic { get; set; } = null;
- public List<ButtonEntity> QuickButtons { get; set; } = new List<ButtonEntity>();
- public DetailViewModel DetailViewModel = null;
- public BaseViewModel RecordViewModel = null;
- public bool isPdf = false;
- public PdfViewModel PdfParentViewModel = null;
- public MarkUseViewModel(DetailViewModel detailViewModel, bool IsDishRecord, bool b)
- {
- //base.ViewModelName = nameof(MarkUseViewModel);
- //DetailViewModel = detailViewModel;
- //tLInfo = detailViewModel.tLInfo;
- //Title = titi;
- //CurrentDish = detailViewModel.CurrentDish;
- //DishPicAndVideoList = detailViewModel.DishPicAndVideoList;
- //QuickButtons = detailViewModel.QuickButtons;
- //FpsItemList.Add(2, "2.0x");
- //FpsItemList.Add(1.5, "1.5x");
- //FpsItemList.Add(1.25, "1.25x");
- //FpsItemList.Add(1, "1.0x");
- //FpsItemList.Add(0.5, "0.5x");
- //FpsItemList.Add(0.25, "0.25x");
- //if (detailProvider == null) detailProvider = AppData.Instance.GetDetailProvider();
- //IsUpdata = true;
- base.NavName = KeyToStringConvert.GetLanguageStringByKey("0159");
- base.ViewModelName = nameof(MarkUseViewModel);
- base.NavList.Clear();
- foreach (var item in detailViewModel.NavList)
- {
- base.NavList.Add(item);
- }
- base.NavList.Add(this);
- DetailViewModel = detailViewModel;
- CurrentDish = detailViewModel.CurrentDish;
- DishPicAndVideoList = detailViewModel.DishPicAndVideoList;
- QuickButtons = detailViewModel.QuickButtons;
- FpsItemList.Add(2, "2.0x");
- FpsItemList.Add(1.5, "1.5x");
- FpsItemList.Add(1.25, "1.25x");
- FpsItemList.Add(1, "1.0x");
- FpsItemList.Add(0.5, "0.5x");
- FpsItemList.Add(0.25, "0.25x");
- if (detailProvider == null) detailProvider = AppData.Instance.GetDetailProvider();
- this.IsDishRecord = IsDishRecord;
- IsUpdata = true;
- IsCurrentDish = b;
- }
- public MarkUseViewModel(PdfViewModel pdfViewModel, bool b)
- {
- isPdf = true;
- PdfParentViewModel = pdfViewModel;
- base.NavName = KeyToStringConvert.GetLanguageStringByKey("0159");
- base.ViewModelName = nameof(MarkUseViewModel);
- base.NavList.Clear();
- foreach (var item in pdfViewModel.NavList)
- {
- base.NavList.Add(item);
- }
- base.NavList.Add(this);
- CurrentDish = pdfViewModel.Dish;
- if (detailProvider == null) detailProvider = AppData.Instance.GetDetailProvider();
- FpsItemList.Add(2, "2.0x");
- FpsItemList.Add(1.5, "1.5x");
- FpsItemList.Add(1.25, "1.25x");
- FpsItemList.Add(1, "1.0x");
- FpsItemList.Add(0.5, "0.5x");
- FpsItemList.Add(0.25, "0.25x");
- this.IsDishRecord = IsDishRecord;
- IsUpdata = true;
- IsCurrentDish = b;
- if (PdfParentViewModel != null && PdfParentViewModel.DishPicAndVideoList.Any() && PdfParentViewModel.QuickButtons.Any())
- {
- DishPicAndVideoList = PdfParentViewModel.DishPicAndVideoList;
- QuickButtons = PdfParentViewModel.QuickButtons;
- Init();
- isPdf = false;
- }
- }
- public void Initnew()
- {
- SelectedFps = new KeyValuePair<double, string>(1, "1.0x");
- CurrentEmbryo = null;
- DishPicAndVideoList.Clear();
- CurrentWellDishPicAndVideo = null;
- CurrentWellLayerPicAndVideo = null;
- CurrentPic = null;
- QuickButtons.Clear();
- if (CurrentDish.embryoList != null && CurrentDish.embryoList.Any())
- DishPicAndVideoList = detailProvider.GetRecordDetailApi(CurrentDish.tlSn, CurrentDish.houseSn, CurrentDish.id, CurrentDish.embryoList.Select(x => x.wellSn).ToList());
- QuickButtons = detailProvider.GetQuickButtonsApi();
- PdfParentViewModel.QuickButtons = QuickButtons;
- PdfParentViewModel.DishPicAndVideoList = DishPicAndVideoList;
- Init();
- }
- public void Init()
- {
- MarkModelTypeList = detailProvider.GetEnableMarkModelTypeApi();
- //if (MarkModelTypeList.Any()) CurrentMarkModelType = MarkModelTypeList.First();
- }
- partial void OnCurrentEmbryoChanged(Embryo value)
- {
- if (value == null)
- {
- foreach (var item in MarkList)
- {
- item.minTimeString = "0h";
- item.maxTime = 0;
- }
- var a1 = CurrentMarkEntity;
- CurrentMarkEntity = null;
- CurrentMarkEntity = a1;
- return;
- }
- value.embryoMark = detailProvider.GetEmbryoMarkApi(value.id);
- var a = CurrentMarkEntity;
- CurrentMarkEntity = null;
- CurrentMarkEntity = a;
- EmbryoMark embryoMark = null;
- foreach (var item in MarkList)
- {
- embryoMark = value.embryoMark.FirstOrDefault(x => x.markId == item.id);
- if (embryoMark == null)
- {
- item.minTimeString = "0h";
- item.maxTime = 0;
- continue;
- }
- item.pictureLayer = embryoMark.pictureLayer;
- item.maxTime = embryoMark.developTime;
- item.minTimeString = $"{(embryoMark.developTime / 60).ToString("D2")}h:{(embryoMark.developTime % 60).ToString("D2")}m";
- }
- }
- partial void OnCurrentMarkModelTypeChanged(MarkModelTypeEntity value)
- {
- if (value == null)
- {
- MarkList.Clear();
- CurrentMarkEntity = null;
- return;
- }
- MarkList = detailProvider.GetEmbryoMarkEntityAPi(value.id);
- if (MarkList.Any())
- {
- CurrentMarkEntity = MarkList.First();
- if (CurrentEmbryo == null)
- {
- foreach (var item in MarkList)
- {
- item.minTimeString = "0h";
- item.maxTime = 0;
- }
- return;
- }
- EmbryoMark embryoMark = null;
- foreach (var item in MarkList)
- {
- embryoMark = CurrentEmbryo.embryoMark.FirstOrDefault(x => x.markId == item.id);
- if (embryoMark == null)
- {
- item.minTimeString = "0h";
- item.maxTime = 0;
- continue;
- }
- item.pictureLayer = embryoMark.pictureLayer;
- item.maxTime = embryoMark.developTime;
- item.minTimeString = $"{(embryoMark.developTime / 60).ToString("D2")}h:{(embryoMark.developTime % 60).ToString("D2")}m";
- //item.minTime = (int)Math.Round((embryoMark.developTime / 60d), 0, MidpointRounding.AwayFromZero);
- }
- }
- else CurrentMarkEntity = null;
- }
- partial void OnCurrentMarkEntityChanged(MarkEntity value)
- {
- try
- {
- if (value == null) return;
- List<MarkEntity> markNews = new List<MarkEntity>();//模板中倒数第二级别
- GetLeafParentNodeList(value, markNews);
- if (CurrentEmbryo == null)
- {
- foreach (var item in markNews) item.CurrentValue = null;
- return;
- }
- if (CurrentEmbryo.embryoMark == null)
- {
- foreach (var item in markNews) item.CurrentValue = null;
- }
- else
- {
- var currentMarkDetil = CurrentEmbryo.embryoMark.FirstOrDefault(x => x.markId == value.id);
- if (currentMarkDetil == null)
- {
- foreach (var item in markNews) item.CurrentValue = null;
- }
- else
- {
- List<EmbryoMark> lastMarkList = new List<EmbryoMark>();
- GetLeafParentNodeList(currentMarkDetil, lastMarkList);
- foreach (var item in markNews)
- {
- var oldValue = lastMarkList.FirstOrDefault(x => x.markId == item.id);
- if (oldValue == null)
- {
- item.CurrentValue = null;
- }
- else
- {
- if (oldValue.children != null && oldValue.children.Any() && item.children != null && item.children.Any())
- {
- var defaultDeail = item.children.FirstOrDefault(x => x.id == oldValue.children.First().markId);
- if (defaultDeail != null)
- {
- item.CurrentValue = defaultDeail;
- continue;
- }
- }
- item.CurrentValue = null;
- }
- }
- //if (value.maxTime != 0) DingWeiEvent?.Invoke(value.maxTime, value.maxTime, value.name);
- }
- }
- return;
- if (CurrentEmbryo == null)
- {
- foreach (var item in markNews)
- {
- if (item.children != null && item.children.Any())
- {
- var defaultDeail = item.children.FirstOrDefault(x => x.defaultValue == 1);
- if (defaultDeail != null)
- {
- item.CurrentValue = defaultDeail;
- continue;
- }
- }
- item.CurrentValue = null;
- }
- return;
- }
- if (CurrentEmbryo.embryoMark == null)
- {
- foreach (var item in markNews)
- {
- if (item.children != null && item.children.Any())
- {
- var defaultDeail = item.children.FirstOrDefault(x => x.defaultValue == 1);
- if (defaultDeail != null)
- {
- item.CurrentValue = defaultDeail;
- continue;
- }
- }
- item.CurrentValue = null;
- }
- }
- else
- {
- var currentMarkDetil = CurrentEmbryo.embryoMark.FirstOrDefault(x => x.markId == value.id);
- if (currentMarkDetil == null)
- {
- foreach (var item in markNews)
- {
- if (item.children != null && item.children.Any())
- {
- var defaultDeail = item.children.FirstOrDefault(x => x.defaultValue == 1);
- if (defaultDeail != null)
- {
- item.CurrentValue = defaultDeail;
- continue;
- }
- }
- item.CurrentValue = null;
- }
- }
- else
- {
- List<EmbryoMark> lastMarkList = new List<EmbryoMark>();
- GetLeafParentNodeList(currentMarkDetil, lastMarkList);
- foreach (var item in markNews)
- {
- var oldValue = lastMarkList.FirstOrDefault(x => x.markId == item.id);
- if (oldValue == null)
- {
- if (item.children != null && item.children.Any())
- {
- var defaultDeail = item.children.FirstOrDefault(x => x.defaultValue == 1);
- if (defaultDeail != null)
- {
- item.CurrentValue = defaultDeail;
- continue;
- }
- }
- item.CurrentValue = null;
- }
- else
- {
- if (oldValue.children != null && oldValue.children.Any() && item.children != null && item.children.Any())
- {
- var defaultDeail = item.children.FirstOrDefault(x => x.id == oldValue.children.First().markId);
- if (defaultDeail != null)
- {
- item.CurrentValue = defaultDeail;
- continue;
- }
- }
- if (item.children != null && item.children.Any())
- {
- var defaultDeail = item.children.FirstOrDefault(x => x.defaultValue == 1);
- if (defaultDeail != null)
- {
- item.CurrentValue = defaultDeail;
- continue;
- }
- }
- item.CurrentValue = null;
- }
- }
- }
- }
- }
- catch (Exception ex)
- {
- ExLog(ex, "OnCurrentMarkEntityChanged");
- }
- }
- private void GetLeafParentNodeList(MarkEntity markEntity, List<MarkEntity> list)
- {
- if (markEntity.child != 1) return;
- if (markEntity.children != null && markEntity.children.Any())
- {
- var a = markEntity.children.FirstOrDefault(x => x.child == 1);
- if (a == null)
- {
- list.Add(markEntity);
- return;
- }
- foreach (var item in markEntity.children)
- {
- GetLeafParentNodeList(item, list);
- }
- return;
- }
- list.Add(markEntity);
- }
- private void GetLeafParentNodeList(EmbryoMark markEntity, List<EmbryoMark> list)
- {
- if (markEntity.child != 1) return;
- if (markEntity.children != null && markEntity.children.Any())
- {
- var a = markEntity.children.FirstOrDefault(x => x.child == 1);
- if (a == null)
- {
- list.Add(markEntity);
- return;
- }
- foreach (var item in markEntity.children)
- {
- GetLeafParentNodeList(item, list);
- }
- return;
- }
- list.Add(markEntity);
- }
- public void SaveMark(MarkEntity MarkSource)
- {
- try
- {
- if (CurrentEmbryo == null)
- {
- new ToastMessageWindow(AppData.Instance.MainWindow, 1920, 65, KeyToStringConvert.GetLanguageStringByKey("0303")).Show();
- return;
- }
- if (CurrentPic == null)
- {
- //new ToastMessageWindow(AppData.Instance.MainWindow, 1920, 65, $"当前没有图片,无法标记").Show();
- new ToastMessageWindow(AppData.Instance.MainWindow, 1920, 65,KeyToStringConvert.GetLanguageStringByKey("0543")).Show();
- return;
- }
- List<MarkEntity> markNews = new List<MarkEntity>();
- GetLeafParentNodeList(MarkSource, markNews);
- var a = markNews.FirstOrDefault(x => x.CurrentValue == null);
- if (a != null)
- {
- var b = markNews.FirstOrDefault(x => x.markKey == "2PN/PN-NUM");
- if (b == null || b.CurrentValue == null || b.CurrentValue.markKey == "2PN/2")
- {
- new ToastMessageWindow(AppData.Instance.MainWindow, 1920, 65, $"{a.name} {KeyToStringConvert.GetLanguageStringByKey("0336")}").Show();
- return;
- }
- //if (b != null && (b.CurrentValue.markKey == "2PN/0" || b.CurrentValue.markKey == "2PN/3"))
- //{
- //}
- //else
- //{
- // //new ToastMessageWindow(AppData.Instance.MainWindow, 1920, 65, $"{a.name}的下级为空").Show();
- // new ToastMessageWindow(AppData.Instance.MainWindow, 1920, 65, $"{a.name} {KeyToStringConvert.GetLanguageStringByKey("0336")}").Show();
- // return;
- //}
- }
- EmbryoMarkResponse embryoMarkResponse = new EmbryoMarkResponse();
- embryoMarkResponse.tlSn = AppData.Instance.CurrentTlInfo.tlSn;
- embryoMarkResponse.embryoCultureRecordId = CurrentDish.id;
- embryoMarkResponse.embryoId = CurrentEmbryo.id;
- embryoMarkResponse.houseSn = CurrentDish.houseSn;
- embryoMarkResponse.markKey = MarkSource.markKey;
- embryoMarkResponse.model = MarkSource.model;
- embryoMarkResponse.developTime = CurrentPic.developTime;
- embryoMarkResponse.layer = CurrentFocal;
- //embryoMarkResponse.pictureUuid = CurrentPicZhen.id;
- embryoMarkResponse.rootId = MarkSource.id;
- foreach (var item in markNews)
- {
- if (item.CurrentValue == null) continue;
- embryoMarkResponse.leafNode.Add(new LeafNode()
- {
- child = item.CurrentValue.child,
- id = item.CurrentValue.id,
- markKey = item.CurrentValue.markKey,
- markName = item.CurrentValue.name,
- parentId = item.id,
- });
- }
- if (detailProvider.SaveMarkApi(embryoMarkResponse))
- {
- CurrentEmbryo.embryoMark = detailProvider.GetEmbryoMarkApi(CurrentEmbryo.id);
- var current = CurrentEmbryo.embryoMark.FirstOrDefault(x => x.markId == MarkSource.id);
- if (current == null)
- {
- MarkSource.minTimeString = "0h";
- MarkSource.maxTime = 0;
- MarkSource.pictureLayer = 0;
- }
- else
- {
- //MarkSource.minTime = $"{(current.developTime / 60d)}h:{current.developTime % 60d}m";
- MarkSource.maxTime = current.developTime;
- MarkSource.minTimeString = $"{(current.developTime / 60).ToString("D2")}h:{(current.developTime % 60).ToString("D2")}m";
- MarkSource.pictureLayer = CurrentFocal;
- //(int)Math.Round((current.developTime / 60d), 0, MidpointRounding.AwayFromZero);
- }
- new ToastWindow(AppData.Instance.MainWindow, 1920, 65, true).Show();
- if (PdfParentViewModel != null) PdfParentViewModel.IsUpdateAi = true;
- }
- else
- {
- new ToastWindow(AppData.Instance.MainWindow, 1920, 65, false).Show();
- }
- }
- catch (Exception ex)
- {
- new ToastWindow(AppData.Instance.MainWindow, 1920, 65, false).Show();
- ExLog(ex, "SaveMark");
- }
- }
- internal bool MarkEmbryo(int embryoState)
- {
- return detailProvider.MarkEmbryoDestinationApi(CurrentEmbryo.id, embryoState);
- }
- }
- }
|