Esempio n. 1
0
        public void Execute(object parameter)
        {
            var viewModel = parameter as PertPageViewModel;

            // 基本データの更新
            foreach (var edge in viewModel.Edges)
            {
                var taskId = edge.TaskId;
                var task   = this.appContext.Tasks.FirstOrDefault(x => x.TaskCd == taskId);
                if (task != null)
                {
                    edge.ProcessId  = task.ProcessCd;
                    edge.FunctionId = task.FunctionCd;
                    edge.PV         = task.PlanValue;
                }
                else
                {
                    edge.PV = 0.0;
                }
            }

            // 依存性に違反しているエッジを抽出
            var input = new CheckDependencyInput();

            input.ProcessDependencies  = appContext.ProcessDependencies;
            input.FunctionDependencies = appContext.FunctionDependencies;
            input.Tasks     = appContext.Tasks;
            input.PertEdges = appContext.PertEdges;

            var output = this.businessLogic.Execute(input);

            if (output.InvalidStartStartDependencies.Count() > 0)
            {
                MessageBox.Show(string.Format("開始日が前工程の開始日より前です。{0}{1}",
                                              Environment.NewLine,
                                              string.Join(Environment.NewLine, output.InvalidStartStartDependencies.Select(x => x.TaskName).ToArray())));
            }
            if (output.InvalidStartFinishDependencies.Count() > 0)
            {
                MessageBox.Show(string.Format("終了日が前工程の開始日より前です。{0}{1}",
                                              Environment.NewLine,
                                              string.Join(Environment.NewLine, output.InvalidStartFinishDependencies.Select(x => x.TaskName).ToArray())));
            }
            if (output.InvalidFinishStartDependencies.Count() > 0)
            {
                MessageBox.Show(string.Format("開始日が前工程の終了日より前です。{0}{1}",
                                              Environment.NewLine,
                                              string.Join(Environment.NewLine, output.InvalidFinishStartDependencies.Select(x => x.TaskName).ToArray())));
            }
            if (output.InvalidFinishFinishDependencies.Count() > 0)
            {
                MessageBox.Show(string.Format("終了日が前工程の終了日より前です。{0}{1}",
                                              Environment.NewLine,
                                              string.Join(Environment.NewLine, output.InvalidFinishFinishDependencies.Select(x => x.TaskName).ToArray())));
            }
        }
Esempio n. 2
0
        public CheckependencyOutput Execute(CheckDependencyInput input)
        {
            var output = new CheckependencyOutput();

            output.InvalidStartStartDependencies   = new Task[0];
            output.InvalidStartFinishDependencies  = new Task[0];
            output.InvalidFinishStartDependencies  = new Task[0];
            output.InvalidFinishFinishDependencies = new Task[0];

            // 工程の依存性チェック
            CheckProcessDependency(input.Tasks, input.ProcessDependencies, output);

            // 機能の依存性チェック
            CheckFunctionDependency(input.Tasks, input.FunctionDependencies, output);

            // 重複タスクを削除
            output.InvalidStartStartDependencies   = output.InvalidStartStartDependencies.Distinct();
            output.InvalidStartFinishDependencies  = output.InvalidStartFinishDependencies.Distinct();
            output.InvalidFinishStartDependencies  = output.InvalidFinishStartDependencies.Distinct();
            output.InvalidFinishFinishDependencies = output.InvalidFinishFinishDependencies.Distinct();

            return(output);
        }