/// <summary>勤務シフトに対してマッチしているか?(1日単位で) /// </summary> /// <returns>割合</returns> private double CheckPatternMuches() { double ret = 0.0; CRequirePatterns require = sdate.Require; if (require == null) { return(1.0); } List <CPattern> patterns = new List <CPattern>(); for (int i = 0; i < require.Size(); i++) { patterns.Add(require.GetPattern(i)); } int j = 0; for (int i = 0; i < patterns.Count; i++) { CPattern pattern = patterns[i]; if (pattern.IsAvailable(sdate.Date)) { double work = CheckPatternMuches(pattern); ret += work; j++; } } ret = (j > 0 ? ret / (double)j : 1.0); return(ret); }
/// <summary>勤務シフトの一覧の作成 /// </summary> private void SetUpValidPatterns () { TblPattern.Clear(); if (TimeTable != null && Dates.Count > 0) { // 期間中有効なシフトのみ int size = TimeTable.Patterns.Size(true); for (int i = 0; i < size; i++) { CPattern pattern = TimeTable.Patterns[i, true]; if (pattern.IsAvailable(StartDate, EndDate)) { TblPattern.Rows.Add(pattern, pattern.Name); } } TblPattern.Rows.Add(CPattern.MULTI, CPattern.MULTI.Name); } }
/// <summary>勤務シフトの一覧 /// </summary> private void ResetPatterns(DateTime currentdate) { if (timeTable == null) { return; } TblPatternComboBox.Clear(); TimeTableManager.ElementCollection.CPatternCollection Patterns = TimeTable.Patterns; int size = Patterns.Size(true); for (int i = 0; i < size; i++) { CPattern Pattern = Patterns[i, true]; if (Pattern.IsAvailable(currentdate)) { TblPatternComboBox.Rows.Add(Pattern, Pattern.Name); } } }
/// <summary> /// パターンに対してマッチしているか?(1日単位で) /// </summary> /// <returns>割合</returns> private double CheckPatternMuches() { double ret = 0.0; CRequirePatterns require = sdate.Require; if (require == null) { return(1.0); } List <CPattern> patterns = new List <CPattern>(); for (int i = 0; i < require.Size(); i++) { patterns.Add(require.GetPattern(i)); } int j = 0; for (int i = 0; i < patterns.Count; i++) { CPattern pattern = patterns[i]; if (pattern.IsAvailable(sdate.Date)) { double work = CheckPatternMuches(pattern); //if (work > 1) { // work = 1.0; //} else { // if (work < 1) { // AddItem(EvaluationResult.NOTICE, pattern.Name + "が必要な人数を満たしていません。"); // } else if (work < 0.5) { // AddItem(EvaluationResult.WARNING, pattern.Name + "が必要な人数の半分を満たしていません。"); // } else if (work <= 0.0) { // AddItem(EvaluationResult.ERROR, pattern.Name + "が必要な人数を満たしていません。"); // } //} ret += work; j++; } } ret = (j > 0 ? ret / (double)j : 1.0); return(ret); }
/// <summary>勤務シフトの再作成 /// </summary> private void RebuildPatterns() { for (int i = MemberPatternView.Columns.Count - 1; i > 0; i--) { MemberPatternView.Columns.RemoveAt(i); } DsPattern.Clear(); patterns.Clear(); int j = 0; for (int i = 0; i < TimeTable.Patterns.Size(true); i++) { CPattern pattern = TimeTable.Patterns[i, true]; if (pattern.IsAvailable(sdate.Date) && !pattern.BuiltIn) { patterns.Add(pattern); // データセットの設定 TblPatterns.Rows.Add(pattern, pattern.Name); // 列の設定 DataGridViewComboBoxColumn column = new DataGridViewComboBoxColumn(); column.CellTemplate = new PatternCell(); column.DataSource = this.DsPattern; column.DisplayMember = "TblPatterns.ClmPatternName"; column.HeaderText = (++j) + "番目"; column.Name = "PATTERN" + i.ToString(); column.Resizable = System.Windows.Forms.DataGridViewTriState.True; column.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; column.ValueMember = "TblPatterns.ClmPattern"; column.DisplayStyle = System.Windows.Forms.DataGridViewComboBoxDisplayStyle.Nothing; column.DisplayStyleForCurrentCellOnly = true; MemberPatternView.Columns.Add(column); } else if (pattern.BuiltIn) { // データセットの設定 TblPatterns.Rows.Add(pattern, pattern.Name); } } PatternMemberView.RowCount = patterns.Count; }