using Yw.Model; namespace HStation.WinFrmUI { /// /// /// public class CreateXhsSchemeHelper { /// /// 创建 /// /// 通用视图Model /// 信息反馈 /// 进度反馈 /// public static async Task Create(CreateXhsSchemeViewModel vm, Action feedBackMsg, Action feedBackProgress) { var msg = string.Empty; if (vm == null) { return false; } #region 第一步 复制水力信息 feedBackMsg?.Invoke("正在创建水力信息副本...", Color.Black); var hydroInfoId = await BLLFactory.Instance.Copy(vm.HydroInfo.ID); if (hydroInfoId < 1) { feedBackMsg?.Invoke("水力信息副本创建失败!!!", Color.Red); return false; } feedBackMsg?.Invoke("水力信息副本创建成功。。。", Color.Green); feedBackProgress?.Invoke(100, 30); vm.HydroInfo = await BLLFactory.Instance.GetByID(hydroInfoId); #endregion #region 第二步 创建方案 feedBackMsg?.Invoke("正在创建水力方案...", Color.Black); var schemeId = await BLLFactory.Instance.Insert(vm.Scheme); if (schemeId < 1) { feedBackMsg?.Invoke("水力方案创建失败!!!", Color.Red); return true; } feedBackMsg?.Invoke("水力方案创建成功。。。", Color.Green); feedBackProgress?.Invoke(100, 40); vm.Scheme = await BLLFactory.Instance.GetByID(schemeId); #endregion #region 第三步 建立水力关联 feedBackMsg?.Invoke("正在建立水力关联...", Color.Black); var relation = new Yw.Vmo.HydroModelRelationVmo(); relation.ObjectType = HStation.Xhs.DataType.XhsScheme; relation.ObjectID = vm.Scheme.ID; relation.ModelID = vm.HydroInfo.ID; relation.Purpose = Yw.Hydro.Purpose.Simulation; relation.Content = null; relation.SortCode = 1; relation.Description = "自动生成"; relation.ID = await BLLFactory.Instance.Insert(relation); if (relation.ID < 1) { feedBackMsg?.Invoke("水力关联失败!!!", Color.Red); return true; } feedBackMsg?.Invoke("水力关联成功。。。", Color.Green); feedBackProgress?.Invoke(100, 50); #endregion #region 第四步 更新水力信息 feedBackMsg?.Invoke("正在更新水力信息...", Color.Black); if (vm.allChangeRecordList != null && vm.allChangeRecordList.Count > 0) { var allParterChangeList = new List(); foreach (var changeRecord in vm.allChangeRecordList) { var parter = changeRecord.ViewModel.Vmo; if (!allParterChangeList.Exists(x => x.Code == parter.Code)) { allParterChangeList.Add(changeRecord.ViewModel.Vmo); } } var bol = await BLLFactory.Instance.Update(vm.HydroInfo, null, allParterChangeList, null); if (!bol) { feedBackMsg?.Invoke("水力信息更新失败!!!", Color.Red); } } feedBackMsg?.Invoke("水力信息更新成功。。。", Color.Green); feedBackProgress?.Invoke(100, 100); return true; #endregion } } }