Ejemplo n.º 1
0
        public Bitmap RealtimeBackInfoStat_TeacherGraphPrint(string getDept, PanelControl pControl)
        {
            using (RealtimeInfo_TeacherDataAccess realTimeInfo_TeacherDataAccess = new RealtimeInfo_TeacherDataAccess())
            {
                try
                {
                    DataSet dsDutyID = realTimeInfo_TeacherDataAccess.GetDutyID(DateTime.Now.ToString("HH:mm:ss"));
                    int     teaAttOnTimeNumbersInDuty      = 0;
                    int     teaAttNotOnTimeNumbersInDuty   = 0;
                    int     teaLeaveOnTimeNumbersInDuty    = 0;
                    int     teaLeaveNotOnTimeNumbersInDuty = 0;
                    int     teaShouldLeaveInDuty           = 0;

                    if (dsDutyID.Tables[0].Rows.Count > 0)
                    {
                        foreach (DataRow dutyRow in dsDutyID.Tables[0].Rows)
                        {
                            //teaAttNumbersInDuty += realTimeInfo_TeacherDataAccess.GetTeaNumbers(DateTime.Now.DayOfWeek.ToString(),dutyRow[0].ToString(),getDept);
                            realTimeInfo_TeacherDataAccess.GetTeaWorkingNumbers(dutyRow[0].ToString(), ref teaAttOnTimeNumbersInDuty, ref teaAttNotOnTimeNumbersInDuty, getDept, DateTime.Now.Date);
                            realTimeInfo_TeacherDataAccess.GetTeaLeaveNumbers(dutyRow[0].ToString(), ref teaLeaveOnTimeNumbersInDuty, ref teaLeaveNotOnTimeNumbersInDuty, getDept, DateTime.Now.Date);
                        }
                    }

                    int noDutyTotal  = 0;
                    int noDutyAttend = 0;
                    int noDutyLeave  = 0;

                    realTimeInfo_TeacherDataAccess.GetTeacherRealTimeInfoWithNoDuty(getDept, DateTime.Now.DayOfWeek.ToString(), ref noDutyTotal, ref noDutyAttend, ref noDutyLeave);

                    teaLeaveOnTimeNumbersInDuty += noDutyLeave;
                    teaShouldLeaveInDuty         = teaAttOnTimeNumbersInDuty + teaAttNotOnTimeNumbersInDuty + noDutyAttend;


                    double onTimePer    = (double)teaLeaveOnTimeNumbersInDuty / (double)teaShouldLeaveInDuty;
                    double notOnTimePer = (double)teaLeaveNotOnTimeNumbersInDuty / (double)teaShouldLeaveInDuty;
                    double remainPer    = 1 - (((double)teaLeaveOnTimeNumbersInDuty + (double)teaLeaveNotOnTimeNumbersInDuty) / (double)teaShouldLeaveInDuty);

                    zedGraph_RealtimeMorningInfoStatTeacher = new ZedGraphControl();
                    pControl.Controls.Clear();
                    pControl.Controls.Add(zedGraph_RealtimeMorningInfoStatTeacher);
                    zedGraph_RealtimeMorningInfoStatTeacher.Dock = DockStyle.Fill;

                    GraphPane myPane = zedGraph_RealtimeMorningInfoStatTeacher.GraphPane;

                    if (getDept.Equals(""))
                    {
                        myPane.Title = new GardenInfoDataAccess().GetGardenInfo().Tables[0].Rows[0][1].ToString()
                                       + "全体教职工下班情况实时统计图\n" + "统计日期: " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                    }
                    else
                    {
                        myPane.Title = new GardenInfoDataAccess().GetGardenInfo().Tables[0].Rows[0][1].ToString()
                                       + getDept + "部教师下班情况实时统计图\n" + "统计日期: " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                    }

                    double[] statusVal   = { onTimePer, notOnTimePer, remainPer };
                    string[] statusLabel = { "离开", "早退", "剩余" };

                    myPane.PaneFill             = new Fill(Color.Cornsilk);
                    myPane.AxisFill             = new Fill(Color.Cornsilk);
                    myPane.Legend.Position      = LegendPos.Right;
                    myPane.Legend.FontSpec.Size = 12;

                    PieItem [] slices = new PieItem[statusVal.Length];
                    slices = myPane.AddPieSlices(statusVal, statusLabel);

                    ((PieItem)slices[0]).LabelType = PieLabelType.Percent;
                    ((PieItem)slices[0]).LabelDetail.FontSpec.Size = 14;
                    ((PieItem)slices[1]).LabelType = PieLabelType.Percent;
                    ((PieItem)slices[1]).LabelDetail.FontSpec.Size = 14;
                    ((PieItem)slices[2]).LabelType = PieLabelType.Percent;
                    ((PieItem)slices[2]).LabelDetail.FontSpec.Size = 14;
                    ((PieItem)slices[1]).Displacement = .1;

                    BoxItem box = new BoxItem(new RectangleF(0F, 0F, 1F, 1F),
                                              Color.Empty, Color.PeachPuff);
                    box.Location.CoordinateFrame = CoordType.AxisFraction;
                    box.Border.IsVisible         = false;
                    box.Location.AlignH          = AlignH.Left;
                    box.Location.AlignV          = AlignV.Top;
                    box.ZOrder = ZOrder.E_BehindAxis;

                    myPane.GraphItemList.Add(box);

                    zedGraph_RealtimeMorningInfoStatTeacher.IsShowContextMenu = false;
                    zedGraph_RealtimeMorningInfoStatTeacher.IsEnableZoom      = false;
                    zedGraph_RealtimeMorningInfoStatTeacher.AxisChange();

                    return(myPane.Image);
                }
                catch (Exception e)
                {
                    Util.WriteLog(e.Message, Util.EXCEPTION_LOG_TITLE);
                    return(null);
                }
            }
        }
Ejemplo n.º 2
0
        public DataSet BuildRealtimeBackInfo(string getDept)
        {
            using (RealtimeInfo_TeacherDataAccess realTimeInfo_TeacherDataAccess = new RealtimeInfo_TeacherDataAccess())
            {
                try
                {
                    DataSet buildRealtimeTeacher = realTimeInfo_TeacherDataAccess.GetTeaDeptInfo(getDept);
                    DataSet dsDutyID             = realTimeInfo_TeacherDataAccess.GetDutyID(DateTime.Now.ToString("HH:mm:ss"));

                    int teaShouldLeaveAll = 0;
                    int teaLeaveOnTimeNumbersInDutyAll    = 0;
                    int teaLeaveNotOnTimeNumbersInDutyAll = 0;

                    buildRealtimeTeacher.Tables[0].Columns.AddRange(new DataColumn[] { new DataColumn("info_leaveOnTime"), new DataColumn("info_leaveNotOnTime"),
                                                                                       new DataColumn("info_shouldLeave"), new DataColumn("info_remain"),
                                                                                       new DataColumn("info_leavePer") });
                    for (int row = 0; row < buildRealtimeTeacher.Tables[0].Rows.Count; row++)
                    {
//						int teaAttNumbersInDuty = 0;
                        int teaAttOnTimeNumbersInDuty      = 0;
                        int teaAttNotOnTimeNumbersInDuty   = 0;
                        int teaLeaveOnTimeNumbersInDuty    = 0;
                        int teaLeaveNotOnTimeNumbersInDuty = 0;
                        int teaShouldLeaveInDuty           = 0;

                        if (dsDutyID.Tables[0].Rows.Count > 0)
                        {
                            foreach (DataRow dutyRow in dsDutyID.Tables[0].Rows)
                            {
//								teaAttNumbersInDuty += realTimeInfo_TeacherDataAccess.GetTeaNumbers(DateTime.Now.DayOfWeek.ToString(),dutyRow[0].ToString(),buildRealtimeTeacher.Tables[0].Rows[row][0].ToString());
                                realTimeInfo_TeacherDataAccess.GetTeaWorkingNumbers(dutyRow[0].ToString(), ref teaAttOnTimeNumbersInDuty, ref teaAttNotOnTimeNumbersInDuty, buildRealtimeTeacher.Tables[0].Rows[row][0].ToString(), DateTime.Now.Date);
                                realTimeInfo_TeacherDataAccess.GetTeaLeaveNumbers(dutyRow[0].ToString(), ref teaLeaveOnTimeNumbersInDuty, ref teaLeaveNotOnTimeNumbersInDuty, buildRealtimeTeacher.Tables[0].Rows[row][0].ToString(), DateTime.Now.Date);
                            }

                            teaShouldLeaveInDuty = teaAttOnTimeNumbersInDuty + teaAttNotOnTimeNumbersInDuty;

                            int noDutyTotal  = 0;
                            int noDutyAttend = 0;
                            int noDutyLeave  = 0;

                            realTimeInfo_TeacherDataAccess.GetTeacherRealTimeInfoWithNoDuty(buildRealtimeTeacher.Tables[0].Rows[row][0].ToString(), DateTime.Now.DayOfWeek.ToString(), ref noDutyTotal, ref noDutyAttend, ref noDutyLeave);

//								buildRealtimeTeacher.Tables[0].Rows[row][1] = leave;   //离开
//								buildRealtimeTeacher.Tables[0].Rows[row][2] = 0;   //早退
//								buildRealtimeTeacher.Tables[0].Rows[row][3] = attend;   //应离开
//								buildRealtimeTeacher.Tables[0].Rows[row][4] = attend - leave;   //剩余
//								buildRealtimeTeacher.Tables[0].Rows[row][5] = attend == 0 ? "0.00%" : ((double)leave/(double)leave).ToString("0.00%");   //离开率

                            teaLeaveOnTimeNumbersInDuty += noDutyLeave;
                            teaShouldLeaveInDuty        += noDutyAttend;

                            buildRealtimeTeacher.Tables[0].Rows[row][1] = teaLeaveOnTimeNumbersInDuty + " (" + ((double)teaLeaveOnTimeNumbersInDuty / (double)teaShouldLeaveInDuty).ToString("0.00%") + ")";
                            buildRealtimeTeacher.Tables[0].Rows[row][2] = teaLeaveNotOnTimeNumbersInDuty + " (" + ((double)teaLeaveNotOnTimeNumbersInDuty / (double)teaShouldLeaveInDuty).ToString("0.00%") + ")";
                            buildRealtimeTeacher.Tables[0].Rows[row][3] = teaShouldLeaveInDuty;                               //teaAttNumbersInDuty;
                            buildRealtimeTeacher.Tables[0].Rows[row][4] = (teaShouldLeaveInDuty - teaLeaveOnTimeNumbersInDuty - teaLeaveNotOnTimeNumbersInDuty) + " ("
                                                                          + (1 - ((double)teaLeaveOnTimeNumbersInDuty + (double)teaLeaveNotOnTimeNumbersInDuty) / (double)teaShouldLeaveInDuty).ToString("0.00%") + ")";
                            buildRealtimeTeacher.Tables[0].Rows[row][5] = (((double)teaLeaveOnTimeNumbersInDuty + (double)teaLeaveNotOnTimeNumbersInDuty) / (double)teaShouldLeaveInDuty).ToString("0.00%");

                            buildRealtimeTeacher.Tables[0].Rows[row][1] = buildRealtimeTeacher.Tables[0].Rows[row][1].ToString().Replace("(非数字)", string.Empty);
                            buildRealtimeTeacher.Tables[0].Rows[row][2] = buildRealtimeTeacher.Tables[0].Rows[row][2].ToString().Replace("(非数字)", string.Empty);
                            buildRealtimeTeacher.Tables[0].Rows[row][3] = buildRealtimeTeacher.Tables[0].Rows[row][3].ToString().Replace("(非数字)", string.Empty);
                            buildRealtimeTeacher.Tables[0].Rows[row][4] = buildRealtimeTeacher.Tables[0].Rows[row][4].ToString().Replace("(非数字)", string.Empty);
                            buildRealtimeTeacher.Tables[0].Rows[row][5] = buildRealtimeTeacher.Tables[0].Rows[row][5].ToString().Replace("非数字", "0.00%");

                            teaShouldLeaveAll += teaShouldLeaveInDuty;
                            teaLeaveOnTimeNumbersInDutyAll    += teaLeaveOnTimeNumbersInDuty;
                            teaLeaveNotOnTimeNumbersInDutyAll += teaLeaveNotOnTimeNumbersInDuty;
                        }
                        else
                        {
                            int noDutyTotal  = 0;
                            int noDutyAttend = 0;
                            int noDutyLeave  = 0;

                            realTimeInfo_TeacherDataAccess.GetTeacherRealTimeInfoWithNoDuty(buildRealtimeTeacher.Tables[0].Rows[row][0].ToString(), DateTime.Now.DayOfWeek.ToString(), ref noDutyTotal, ref noDutyAttend, ref noDutyLeave);
                            buildRealtimeTeacher.Tables[0].Rows[row][1] = noDutyLeave;                                                                                 //离开
                            buildRealtimeTeacher.Tables[0].Rows[row][2] = 0;                                                                                           //早退
                            buildRealtimeTeacher.Tables[0].Rows[row][3] = noDutyAttend;                                                                                //应离开
                            buildRealtimeTeacher.Tables[0].Rows[row][4] = noDutyAttend - noDutyLeave;                                                                  //剩余
                            buildRealtimeTeacher.Tables[0].Rows[row][5] = noDutyAttend == 0 ? "100%" : ((double)noDutyLeave / (double)noDutyAttend).ToString("0.00%"); //离开率

                            teaLeaveOnTimeNumbersInDutyAll   += noDutyLeave;
                            teaLeaveNotOnTimeNumbersInDutyAll = 0;
                            teaShouldLeaveAll += noDutyAttend;
                        }

                        if (row == buildRealtimeTeacher.Tables[0].Rows.Count - 1)
                        {
                            DataRow newRow = buildRealtimeTeacher.Tables[0].NewRow();

                            newRow[0] = "[总计]";

                            if (teaShouldLeaveAll == 0)
                            {
                                newRow[1] = 0;
                                newRow[2] = 0;
                                newRow[3] = 0;
                                newRow[4] = 0;
                                newRow[5] = 0;
                            }
                            else
                            {
                                newRow[1] = teaLeaveOnTimeNumbersInDutyAll + " (" + ((double)teaLeaveOnTimeNumbersInDutyAll / (double)teaShouldLeaveAll).ToString("0.00%") + ")";
                                newRow[2] = teaLeaveNotOnTimeNumbersInDutyAll + " (" + ((double)teaLeaveNotOnTimeNumbersInDutyAll / (double)teaShouldLeaveAll).ToString("0.00%") + ")";
                                newRow[3] = teaShouldLeaveAll;
                                newRow[4] = (teaShouldLeaveAll - teaLeaveOnTimeNumbersInDutyAll - teaLeaveNotOnTimeNumbersInDutyAll) + " ("
                                            + (1 - ((double)teaLeaveOnTimeNumbersInDutyAll + (double)teaLeaveNotOnTimeNumbersInDutyAll) / (double)teaShouldLeaveAll).ToString("0.00%") + ")";
                                newRow[5] = (((double)teaLeaveOnTimeNumbersInDutyAll + (double)teaLeaveNotOnTimeNumbersInDutyAll) / (double)teaShouldLeaveAll).ToString("0.00%");

                                newRow[1] = newRow[1].ToString().Replace("(非数字)", string.Empty);
                                newRow[2] = newRow[2].ToString().Replace("(非数字)", string.Empty);
                                newRow[3] = newRow[3].ToString().Replace("(非数字)", string.Empty);
                                newRow[4] = newRow[4].ToString().Replace("(非数字)", string.Empty);
                                newRow[5] = newRow[5].ToString().Replace("非数字", "0.00%");
                            }

                            buildRealtimeTeacher.Tables[0].Rows.Add(newRow);
                            break;
                        }
                    }

                    return(buildRealtimeTeacher);
                }
                catch (Exception e)
                {
                    Util.WriteLog(e.Message, Util.EXCEPTION_LOG_TITLE);
                    return(null);
                }
            }
        }