Exemplo n.º 1
0
 /// <summary>
 /// 更新运营权历史
 /// </summary>
 /// <param name="NewOperationPlan"></param>
 private void UpdateOperationHistory(OperationPlan NewOperationPlan)
 {
     if (NewOperationPlan.OperationHistory != null)
     {
         DecodeOperationHistory IDO = new DecodeOperationHistory();
         IDO.SetDbContext(this._FE);
         IDO.Decode(NewOperationPlan.OperationHistory);
     }
 }
Exemplo n.º 2
0
        /// <summary>
        /// 创建运营计划明细
        /// 同一架计划飞机在一份计划中的明细项不得超过两条,且两条不得为同种操作类型(含运营计划与变更计划)
        /// </summary>
        /// <param name="plan"></param>
        /// <param name="planAircraft"></param>
        /// <param name="actionType"></param>
        /// <param name="service"></param>
        /// <returns></returns>
        internal OperationPlan CreateOperationPlan(Plan plan, PlanAircraft planAircraft, string actionType, IFleetService service)
        {
            if (plan == null) return null;
            // 创建新的计划历史
            var planDetail = new OperationPlan
                {
                    PlanHistoryID = Guid.NewGuid(),
                    Plan = plan,
                    ActionType = actionType,
                    Airlines = service.CurrentAirlines,
                    Annual = service.CurrentAnnual,
                    PerformMonth = 1,
                };
            // 1、计划飞机为空
            if (planAircraft == null)
            {
                // 创建新的计划飞机
                var pa = new PlanAircraft
                    {
                        PlanAircraftID = Guid.NewGuid(),
                        Airlines = service.CurrentAirlines,
                        Status = (int)ManageStatus.Plan,
                        IsOwn = true
                    };
                planDetail.PlanAircraft = pa;
            }
            // 2、计划飞机非空
            else
            {
                // 获取计划飞机的所有计划明细集合
                var phs = planAircraft.PlanHistories;
                // 获取计划飞机在当前计划中的计划明细集合
                var planDetails = phs.Where(ph => ph.Plan == plan).ToList();
                // 2.1、不是针对现有飞机的计划明细
                if (planAircraft.Aircraft == null)
                {
                    if (phs.Any())
                    {
                        // 获取计划飞机的最后一条计划明细,用于复制数据
                        var planHistory =
                            phs.OrderBy(ph => ph.Annual.Year)
                               .ThenBy(ph => ph.Plan.VersionNumber)
                               .LastOrDefault();
                        if (planHistory != null)
                        {
                            // 1、计划飞机在当前计划中没有明细项
                            if (!planDetails.Any())
                            {
                                planDetail.AircraftType = planAircraft.AircraftType;
                                planDetail.ActionCategory = planHistory.ActionCategory;
                                planDetail.TargetCategory = planHistory.TargetCategory;
                                planDetail.SeatingCapacity = planHistory.SeatingCapacity;
                                planDetail.CarryingCapacity = planHistory.CarryingCapacity;
                                planAircraft.Status = (int)ManageStatus.Plan;
                            }
                            // 2、计划飞机在当前计划中已有明细项
                            else
                            {
                                planDetail.AircraftType = planAircraft.AircraftType;
                                planDetail.SeatingCapacity = -planHistory.SeatingCapacity;
                                planDetail.CarryingCapacity = -planHistory.CarryingCapacity;
                            }
                        }
                    }
                }
                // 2.2、是针对现有飞机的计划明细,肯定是退出计划,无需改变计划飞机管理状态
                else
                {
                    planDetail.AircraftType = planAircraft.AircraftType;
                    planDetail.SeatingCapacity = planAircraft.Aircraft.SeatingCapacity;
                    planDetail.CarryingCapacity = planAircraft.Aircraft.CarryingCapacity;
                }
                planDetail.PlanAircraft = planAircraft;
            }

            return planDetail;
        }
Exemplo n.º 3
0
 private void OnOperation()
 {
     if (this._operationPlan == null)
     {
         // 针对运营飞机的运营计划只能是退出
         this._operationPlan = this.service.CreateOperationPlan(this.CurrentPlan, this._planAircraft, "退出");
     }
     this.PlanDetail = this._operationPlan;
     this.IsChangeable = false;
 }
Exemplo n.º 4
0
        private void ShowEditDialog(PlanHistory existDetail, PlanDetailCreateSource source)
        {
            switch (source)
            {
                case PlanDetailCreateSource.New:
                    this.IsPlanTypeVisible = Visibility.Collapsed;
                    this._operationPlan = this.service.CreateOperationPlan(this.CurrentPlan, this._planAircraft, "引进");
                    this.PlanDetail = this._operationPlan;
                    this.IsChangeable = true;
                    break;
                case PlanDetailCreateSource.PlanAircraft:
                    this.IsPlanTypeVisible = Visibility.Collapsed;
                    // 计划飞机已有的明细项肯定是引进计划,只能添加退出计划
                    this._operationPlan = this.service.CreateOperationPlan(this.CurrentPlan, this._planAircraft, existDetail != null ? "退出" : "引进");
                    this.PlanDetail = this._operationPlan;
                    //这时不能修改机型和座机
                    this.IsChangeable = false;
                    break;
                case PlanDetailCreateSource.Aircraft:
                    this.IsPlanTypeVisible = Visibility.Visible;
                    // 1、计划飞机已有明细项
                    if (existDetail != null)
                    {
                        // 已有的是变更计划,只能添加退出计划
                        if (existDetail.ActionType == "变更")
                        {
                            this.IsChangeEnabled = false;
                            this.IsOperation = true;
                            this.IsChange = false;
                            this.OnOperation();
                        }
                        // 已有的是退出计划,只能添加变更计划
                        else
                        {
                            this.IsOperationEnabled = false;
                            this.IsOperation = false;
                            this.IsChange = true;
                            this.OnOperation();//生成之后,不让用户编辑,起到保存原计划历史的机型的作用,在取消时,能够用来恢复计划飞机数据
                            this.OnChange();
                        }
                    }
                    // 2、计划飞机没有明细项
                    else
                    {
                        this.IsChangeEnabled = true;
                        this.IsOperationEnabled = true;
                        if (!this.IsOperation) this.IsOperation = true;
                        this.OnOperation();
                    }
                    break;
                default:
                    throw new ArgumentOutOfRangeException("source");
            }

            this.editDialog.ShowDialog();
        }
Exemplo n.º 5
0
        /// <summary>
        /// 打开子窗体之前判断是否要打开
        /// </summary>
        /// <param name="planAircraft">计划飞机</param>
        /// <param name="source">调用的来源</param>
        internal void OpenEditDialog(PlanAircraft planAircraft, PlanDetailCreateSource source)
        {
            if (this.ViewPlanHistory == null || (!this.ViewPlanHistory.Any(p => p.HasValidationErrors)))
            {
                this._planAircraft = planAircraft;
                this._operationPlan = null;
                this._changePlan = null;
                // 获取计划飞机在当前计划中的明细项集合
                var planDetails = new List<PlanHistory>();
                if(planAircraft!=null)
                planDetails = this.ViewPlanHistory.Where(ph => ph.PlanAircraft == planAircraft).ToList();

                // 1、计划飞机在当前计划中没有明细项
                if (!planDetails.Any())
                    this.ShowEditDialog(null, source);
                // 2、计划飞机在当前计划中已有明细项
                else
                {
                    if (planDetails.Count == 1)
                    {
                        string content;
                        switch (source)
                        {
                            case PlanDetailCreateSource.New:
                                break;
                            case PlanDetailCreateSource.PlanAircraft:
                                content = "计划飞机在当前计划中已有引进计划明细项,是否要针对该计划飞机添加退出计划明细项?";
                                RadWindow.Confirm(this.SetConfirm("确认添加计划明细", "确认", "取消", content, 13, 250, (o, e) =>
                                    {
                                        if (e.DialogResult == true)
                                            this.ShowEditDialog(planDetails[0], source);
                                    }));
                                break;
                            case PlanDetailCreateSource.Aircraft:
                                content = planDetails[0].ActionType == "变更"
                                              ? "飞机在当前计划中已有变更计划明细项,是否要针对该飞机添加退出计划明细项?"
                                              : "飞机在当前计划中已有退出计划明细项,是否要针对该飞机添加变更计划明细项?";
                                RadWindow.Confirm(this.SetConfirm("确认添加计划明细", "确认", "取消", content, 13, 250, (o, e) =>
                                    {
                                        if (e.DialogResult == true)
                                            this.ShowEditDialog(planDetails[0], source);
                                    }));
                                break;
                            default:
                                throw new ArgumentOutOfRangeException("source");
                        }
                    }
                    else
                    {
                        RadWindow.Alert(this.SetAlter("提醒", "确认", "该计划飞机已有两条明细项,不能再添加新计划明细项!", 13, 250, () => { }));
                    }
                }
            }
        }