using CommunityToolkit.Mvvm.ComponentModel; using ivf_tl_Entity.Entity.balance; using ivf_tl_Entity.Entity.Result; using ivf_tl_Entity.Enums; using ivf_tl_Manage.Converts; using ivf_tl_Service.HttpProvider; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Net.Http.Json; using System.Text; using System.Threading.Tasks; namespace ivf_tl_Manage.ViewModels.Win { public partial class AddDishWindowViewModel : ObservableObject { [ObservableProperty] private Dish currentDish = new Dish(); [ObservableProperty] private string titleString = ""; [ObservableProperty] private List yearsList = new List(); [ObservableProperty] private List monthList = new List(); [ObservableProperty] private List dayList = new List(); [ObservableProperty] private List hourList = new List(); [ObservableProperty] private List minList = new List(); [ObservableProperty] private int currentYear = -1; [ObservableProperty] private int currentMonth = -1; [ObservableProperty] private int currentDay = -1; [ObservableProperty] private string currentAge = null; [ObservableProperty] private int husbandYear = -1; [ObservableProperty] private int husbandMonth = -1; [ObservableProperty] private int husbandDay = -1; [ObservableProperty] private string husbandAge = null; [ObservableProperty] private int isEmbryo = 0; public List FertilizationTypeEntitieList { get; set; } [ObservableProperty] private FertilizationTypeEntity currentFert = null; private DishProvider dishProvider; [ObservableProperty] private bool isAdd = true; [ObservableProperty] private int ferYear = -1; [ObservableProperty] private int ferMonth = -1; [ObservableProperty] private int ferDay = -1; [ObservableProperty] private int ferHour = -1; [ObservableProperty] private int ferMin = -1; public AddDishWindowViewModel(Dish dish) { FertilizationTypeEntitieList = AppData.Instance.FertilizationTypeEntitieList; dishProvider = AppData.Instance.GetDishProvider(); int curreYeat = DateTime.Now.Year; for (int i = 1963; i <= curreYeat; i++) YearsList.Add(i); for (int i = 1; i <= 12; i++) MonthList.Add(i); for (int i = 1; i <= 31; i++) DayList.Add(i); for (int i = 0; i <= 23; i++) HourList.Add(i); for (int i = 0; i <= 59; i++) MinList.Add(i); //CurrentYear = DateTime.Now.Year; //CurrentMonth = DateTime.Now.Month; //CurrentDay = DateTime.Now.Day; if (dish.id > 0) { IsAdd = false; if (DateTime.TryParse(dish.wifeBirth, out DateTime wifeTime)) { CurrentYear = wifeTime.Year; CurrentMonth = wifeTime.Month; CurrentDay = wifeTime.Day; } if (DateTime.TryParse(dish.husbandBirth, out DateTime husbandTime)) { HusbandYear = husbandTime.Year; HusbandMonth = husbandTime.Month; HusbandDay = husbandTime.Day; } if (DateTime.TryParse(dish.startTime, out DateTime dishFerTime)) { FerYear = dishFerTime.Year; FerMonth = dishFerTime.Month; FerDay = dishFerTime.Day; FerHour = dishFerTime.Hour; FerMin = dishFerTime.Minute; } //TitleString = "编辑患者信息"; TitleString = KeyToStringConvert.GetLanguageStringByKey("0184"); if (dish.embryoList != null && dish.embryoList.Any()) IsEmbryo = 1; CurrentFert = FertilizationTypeEntitieList.FirstOrDefault(x => x.dictValue == dish.fertilizationTypeId.ToString()); } else { TitleString = KeyToStringConvert.GetLanguageStringByKey("0177"); } CurrentDish.id = dish.id; CurrentDish.caseId = dish.caseId; CurrentDish.embryoCount = dish.embryoCount; CurrentDish.fertilizationType = dish.fertilizationType; CurrentDish.fertilizationTypeId = dish.fertilizationTypeId; CurrentDish.houseSn = dish.houseSn; CurrentDish.husbandBirth = dish.husbandBirth; CurrentDish.tlSn = dish.tlSn; CurrentDish.wifeBirth = dish.wifeBirth; CurrentDish.phone = dish.phone; CurrentDish.state = dish.state; CurrentDish.vip = dish.vip; CurrentDish.wife = dish.wife; CurrentDish.husband = dish.husband; CurrentDish.embryoList = dish.embryoList; CurrentDish.cycle = dish.cycle; if (CurrentDish.embryoList == null) CurrentDish.embryoList = new List(); if (!IsAdd) return; var pro = AppData.Instance.GetPicProvider(); } private void ExLog(Exception ex, string name) { AppData.Instance.LogService.ExceptionLog(ex, $"AddDishWindow.{name}", LogEnum.RunException); } private void ErrorLog(string message, LogEnum logType) { AppData.Instance.LogService.TLLog($"AddDishWindow.{message}", logType); } public string StartBalance() { try { return dishProvider.StartBalance(CurrentDish.tlSn, CurrentDish.houseSn); } catch (Exception ex) { ExLog(ex, "StartBalance"); return ex.Message; } } public string StopBalance(long bid) { try { return dishProvider.StopBalance(bid); } catch (Exception ex) { ExLog(ex, "StopBalance"); return ex.Message; } } /// /// 开始培养 /// /// public string StartDish(List wellSn) { if (string.IsNullOrEmpty(CurrentDish.caseId)) return KeyToStringConvert.GetLanguageStringByKey("0172"); //return "请输入病例编号"; if (string.IsNullOrEmpty(CurrentDish.wife)) return KeyToStringConvert.GetLanguageStringByKey("0173"); //return "请输入女方姓名"; //if (string.IsNullOrEmpty(CurrentAge)) return "请输入女方年龄"; if (string.IsNullOrEmpty(CurrentDish.husband)) return KeyToStringConvert.GetLanguageStringByKey("0174"); //return "请输入男方姓名"; //if (string.IsNullOrEmpty(HusbandAge)) return "请输入男方年龄"; if (FerYear == -1) return KeyToStringConvert.GetLanguageStringByKey("0175"); //return "请选择受精时间"; if (CurrentFert == null) return KeyToStringConvert.GetLanguageStringByKey("0176"); //return "请选择受精方式"; if (DateTime.TryParse($"{FerYear}-{FerMonth}-{FerDay} {FerHour}:{FerMin}", out DateTime newFerTime)) CurrentDish.startTime = newFerTime.ToString("yyyy-MM-dd HH:mm:ss"); else return "受精时间错误"; if (newFerTime > DateTime.Now) return KeyToStringConvert.GetLanguageStringByKey("0352"); //return "受精时间不能超过当前时间"; if (string.IsNullOrEmpty(CurrentAge)) CurrentDish.wifeBirth = null; else CurrentDish.wifeBirth = $"{CurrentYear.ToString("D2")}-{CurrentMonth.ToString("D2")}-{CurrentDay.ToString("D2")} 00:00:00"; if (string.IsNullOrEmpty(HusbandAge)) CurrentDish.husbandBirth = null; else CurrentDish.husbandBirth = $"{HusbandYear.ToString("D2")}-{HusbandMonth.ToString("D2")}-{HusbandDay.ToString("D2")} 00:00:00"; CurrentDish.embryoCount = wellSn.Count; CurrentDish.fertilizationType = CurrentFert.dictKey; CurrentDish.fertilizationTypeId = int.Parse(CurrentFert.dictValue); CurrentDish.wellSn = wellSn; string error = dishProvider.StartDish(CurrentDish); if (string.IsNullOrEmpty(error)) return null; //return $"开始培养失败:{error}"; return $"{KeyToStringConvert.GetLanguageStringByKey("0351")}:{error}"; } public string UpdateDish(List wellSn) { if (string.IsNullOrEmpty(CurrentDish.caseId)) return KeyToStringConvert.GetLanguageStringByKey("0172"); //return "请输入病例编号"; if (string.IsNullOrEmpty(CurrentDish.wife)) return KeyToStringConvert.GetLanguageStringByKey("0173"); //return "请输入女方姓名"; //if (string.IsNullOrEmpty(CurrentAge)) return "请输入女方年龄"; if (string.IsNullOrEmpty(CurrentDish.husband)) return KeyToStringConvert.GetLanguageStringByKey("0174"); //return "请输入男方姓名"; //if (string.IsNullOrEmpty(HusbandAge)) return "请输入男方年龄"; if (string.IsNullOrEmpty(CurrentAge)) CurrentDish.wifeBirth = null; else CurrentDish.wifeBirth = $"{CurrentYear.ToString("D2")}-{CurrentMonth.ToString("D2")}-{CurrentDay.ToString("D2")} 00:00:00"; if (string.IsNullOrEmpty(HusbandAge)) CurrentDish.husbandBirth = null; else CurrentDish.husbandBirth = $"{HusbandYear.ToString("D2")}-{HusbandMonth.ToString("D2")}-{HusbandDay.ToString("D2")} 00:00:00"; int newWellCount = wellSn.Count; if (newWellCount > 0) CurrentDish.embryoCount = wellSn.Count; string body = JsonConvert.SerializeObject(new { embryoCount = CurrentDish.embryoCount, husband = CurrentDish.husband, husbandBirth = CurrentDish.husbandBirth, id = CurrentDish.id, vip = CurrentDish.vip, wellSn = wellSn, wife = CurrentDish.wife, wifeBirth = CurrentDish.wifeBirth, }); string error = dishProvider.UpDataDish(body); if (string.IsNullOrEmpty(error)) return null; return $"{KeyToStringConvert.GetLanguageStringByKey("0286")}:{error}"; //return $"修改信息失败{error}"; } #region 年龄计算 partial void OnCurrentYearChanged(int value) { if (CurrentMonth == -1 || CurrentDay == -1) return; GetAge(); } partial void OnCurrentMonthChanged(int value) { if (CurrentYear == -1 || CurrentDay == -1) return; GetAge(); } partial void OnCurrentDayChanged(int value) { if (CurrentMonth == -1 || CurrentYear == -1) return; GetAge(); } private void GetAge() { int age = DateTime.Now.Year - CurrentYear; if (DateTime.Now.Month < CurrentMonth || (DateTime.Now.Month == CurrentMonth && DateTime.Now.Day < CurrentDay)) age--; CurrentAge = age.ToString(); } private void GetHusbandAge() { int age = DateTime.Now.Year - HusbandYear; if (DateTime.Now.Month < HusbandMonth || (DateTime.Now.Month == HusbandMonth && DateTime.Now.Day < HusbandDay)) age--; HusbandAge = age.ToString(); } partial void OnHusbandYearChanged(int value) { if (HusbandMonth == -1 || HusbandDay == -1) return; GetHusbandAge(); } partial void OnHusbandMonthChanged(int value) { if (HusbandYear == -1 || HusbandDay == -1) return; GetHusbandAge(); } partial void OnHusbandDayChanged(int value) { if (HusbandYear == -1 || HusbandMonth == -1) return; GetHusbandAge(); } #endregion } }