Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
 /// <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);
                }
            }
        }
Exemplo n.º 4
0
        /// <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);
        }
Exemplo n.º 5
0
        /// <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;
        }