/// <summary>
 /// 给表格赋值-"月份","年份"
 /// </summary>
 /// <param name="TableOfDa"></param>
 /// <param name="drs"></param>
 /// <param name="type"></param>
 private void SetValueInReportOfMonthYearInfo(TableObject TableOfDa, List <DataRow> drs, string type)
 {
     if (drs != null && drs.Count > 0)
     {
         int             index           = TableOfDa.Rows.Count - 1;
         MonthYearPrintf monthYearPrintf = CalMonthYear(drs);
         if (monthYearPrintf != null && !string.IsNullOrEmpty(monthYearPrintf.date))
         {
             if (type == "Month")
             {
                 TableOfDa.Rows[index][0].Text = monthYearPrintf.date.Substring(0, 7);       //月份
             }
             else
             {
                 TableOfDa.Rows[index][0].Text = monthYearPrintf.date.Substring(0, 4);       //年份
             }
             TableOfDa.Rows[index][1].Text = monthYearPrintf.dateSum;                        //出勤天数
             TableOfDa.Rows[index][2].Text = monthYearPrintf.durationLow;                    //最短时长
             TableOfDa.Rows[index][3].Text = monthYearPrintf.durationHeight;                 //最长时长
             TableOfDa.Rows[index][4].Text = monthYearPrintf.duration;                       //时长
             TableOfDa.Rows[index][5].Text = monthYearPrintf.deductDuration;                 //扣除时长
             TableOfDa.Rows[index][6].Text = monthYearPrintf.avgDuration;                    //平均时长
             TableOfDa.Rows[index][7].Text = monthYearPrintf.accumulativeTotalDuration;      //累计时长
         }
     }
 }
        /// <summary>
        /// 计算年份、月份时间信息
        /// </summary>
        /// <returns></returns>
        private MonthYearPrintf CalMonthYear(List <DataRow> drs)
        {
            try
            {
                MonthYearPrintf monthYearPrintf = new MonthYearPrintf();

                int    sumDays        = 0;         //出勤天数
                double duration       = 0;         //总时长
                double deductDuration = 0;         //总扣除时长

                if (drs != null && drs.Count > 0)
                {
                    monthYearPrintf.date = drs[0]["workdate"].ToString();
                    string workdate = "0000-00-01";

                    Dictionary <string, double> timeDic = new Dictionary <string, double>();
                    for (int i = 0; i < drs.Count; i++)
                    {
                        string timeStart = drs[i]["starttime"].ToString();
                        string timeEnd   = drs[i]["endtime"].ToString();
                        if (!string.IsNullOrEmpty(timeStart) && !string.IsNullOrEmpty(timeEnd))
                        {
                            DateTime dtStart = DateTime.Now;   //开始时间
                            DateTime dtEnd   = DateTime.Now;   //结束时间
                            if (DateTime.TryParse(timeStart, out dtStart) && DateTime.TryParse(timeEnd, out dtEnd))
                            {
                                double time = GetTimeDuration(dtStart, dtEnd);

                                #region
                                if (drs[i]["workdate"].ToString() == workdate)
                                {
                                    timeDic[workdate] += time;
                                }
                                else
                                {
                                    sumDays++;
                                    workdate = drs[i]["workdate"].ToString();
                                    timeDic.Add(workdate, time);
                                }
                                #endregion

                                duration += time;

                                string deductTime = drs[i]["deduct"].ToString();
                                if (!string.IsNullOrEmpty(deductTime))
                                {
                                    timeDic[workdate] -= double.Parse(deductTime);
                                    deductDuration    += double.Parse(deductTime);
                                }
                            }
                        }
                    }

                    string valueLow    = timeDic.OrderBy(d => d.Value).Select(d => d.Key).FirstOrDefault();
                    string valueHeight = timeDic.OrderBy(d => d.Value).Select(d => d.Key).LastOrDefault();

                    monthYearPrintf.dateSum                   = sumDays.ToString();
                    monthYearPrintf.durationLow               = valueLow + ": " + timeDic[valueLow].ToString("0.000") + "h";
                    monthYearPrintf.durationHeight            = valueHeight + ": " + timeDic[valueHeight].ToString("0.000") + "h";
                    monthYearPrintf.duration                  = duration.ToString("0.000");
                    monthYearPrintf.deductDuration            = deductDuration.ToString("0.000");
                    monthYearPrintf.accumulativeTotalDuration = (duration - deductDuration).ToString("0.000");
                    monthYearPrintf.avgDuration               = ((duration - deductDuration) / sumDays).ToString("0.000");
                }

                return(monthYearPrintf);
            }
            catch (Exception)
            {
                return(null);
            }
        }