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()))); } }
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); }