Esempio n. 1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                //设置默认值
                if (string.IsNullOrEmpty(action))
                {
                    groupID = "36";
                    state   = ((int)UserState.Normal).ToString();
                }

                if (!string.IsNullOrEmpty(action) && companyID > 0)
                {
                    ShowArea.Style.Add("display", "");
                    company              = CompanyBLL.ReadCompany(companyID);
                    companyName          = company.CompanyName;
                    startDate            = Convert.ToDateTime(RequestHelper.GetQueryString <string>("SearchStartDate"));
                    endDate              = Convert.ToDateTime(RequestHelper.GetQueryString <string>("SearchEndDate"));
                    SearchStartDate.Text = startDate.ToString("d");
                    SearchEndDate.Text   = endDate.ToString("d");
                    endDate              = ShopCommon.SearchEndDate(endDate);

                    //计算周数
                    WeekNum = (endDate - startDate).Days / 7;
                    if ((endDate - startDate).Days % 7 > 0)
                    {
                        WeekNum = WeekNum + 1;
                    }


                    if (base.IsGroupCompany(company.GroupId))
                    {
                        StringBuilder TotalTable = new StringBuilder();
                        //调取所有用户列表
                        UserSearchInfo userSearch = new UserSearchInfo();
                        userSearch.InCompanyID = CompanyBLL.ReadCompanyIdList(companyID.ToString());
                        userSearch.Condition   = "Order by [CompanyID] Desc";
                        List <UserInfo> userAllList = UserBLL.SearchUserList(userSearch);

                        //调取所有考试记录
                        TestPaperInfo testPaperSearch = new TestPaperInfo();
                        testPaperSearch.CompanyIdCondition = userSearch.InCompanyID;
                        testPaperSearch.Condition          = "[UserID] in (select [ID] from [_User] where [CompanyID] in (" + userSearch.InCompanyID + "))";
                        List <TestPaperInfo> TestPaperAllList = TestPaperBLL.NewReadList(testPaperSearch);

                        PostPassInfo postPassSearch = new PostPassInfo();
                        postPassSearch.CreateDate  = endDate;
                        postPassSearch.InCompanyID = userSearch.InCompanyID;
                        List <PostPassInfo> postPassList = PostPassBLL.ReadPostPassList(postPassSearch);

                        TotalTable.Append("<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">");
                        TotalTable.Append("<thead>");
                        TotalTable.Append("<tr class=\"listTableHead\">");
                        TotalTable.Append("<th>单店</th>");
                        TotalTable.Append("<th>总人数</th>");
                        TotalTable.Append("<th>应学习人数</th>");
                        TotalTable.Append("<th>学习总人数</th>");
                        TotalTable.Append("<th>通过本岗位总人数</th>");
                        TotalTable.Append("<th>通过本岗位在职人数</th>");
                        TotalTable.Append("<th>正在学习他岗位人数</th>");
                        TotalTable.Append("<th>已通过认证人数</th>");
                        TotalTable.Append("<th>完成多岗位认证的人数</th>");
                        TotalTable.Append("<th>项目启动时间</th>");
                        TotalTable.Append("</tr>\r\n");
                        List <CompanyInfo> companyList = CompanyBLL.ReadCompanyListByParentID(companyID.ToString());
                        foreach (CompanyInfo companyItem in companyList)
                        {
                            Dictionary <int, int> userDic = new Dictionary <int, int>();
                            List <UserInfo>       currentCompanyUserList = userAllList.FindAll(delegate(UserInfo tempUser) { return(tempUser.CompanyID == companyItem.CompanyId); });

                            int manyPostNum = 0;
                            Dictionary <int, int> studyUserDic                    = new Dictionary <int, int>(); //有学习的人
                            Dictionary <int, int> passPostUserDic                 = new Dictionary <int, int>(); //通过认证的人
                            Dictionary <int, int> passSelfPostUserDic             = new Dictionary <int, int>(); //通过本职岗位的人
                            Dictionary <int, int> passSelfPostAndInCompanyUserDic = new Dictionary <int, int>(); //通过本职岗位还在职的人
                            Dictionary <int, int> passOtherPostUserDic            = new Dictionary <int, int>(); //通过其他岗位的人

                            foreach (UserInfo userItem in currentCompanyUserList)
                            {
                                foreach (TestPaperInfo testpaper in TestPaperAllList)
                                {
                                    if (userItem.ID == testpaper.UserId && !studyUserDic.ContainsKey(userItem.ID))
                                    {
                                        studyUserDic[userItem.ID] = userItem.ID;
                                        break;
                                    }
                                }

                                foreach (PostPassInfo postpass in postPassList)
                                {
                                    if (postpass.UserId == userItem.ID)
                                    {
                                        if (passPostUserDic.ContainsKey(userItem.ID))
                                        {
                                            passPostUserDic[userItem.ID] = passPostUserDic[userItem.ID] + 1;
                                        }
                                        else
                                        {
                                            passPostUserDic[userItem.ID] = 1;
                                        }
                                        if (postpass.PostId == userItem.WorkingPostID)
                                        {
                                            passSelfPostUserDic[userItem.ID] = userItem.ID;
                                            if (userItem.Status != (int)UserState.Del)
                                            {
                                                passSelfPostAndInCompanyUserDic[userItem.ID] = userItem.ID;
                                            }
                                        }
                                        if (postpass.PostId != userItem.WorkingPostID)
                                        {
                                            passOtherPostUserDic[userItem.ID] = userItem.ID;
                                        }
                                    }
                                }
                            }

                            foreach (int item in passPostUserDic.Values)
                            {
                                if (item > 1)
                                {
                                    manyPostNum++;
                                }
                            }
                            TotalTable.Append("<tr class=\"listTableMain\">");
                            TotalTable.Append("<td>" + companyItem.CompanySimpleName + "</td>");
                            TotalTable.Append("<td>" + currentCompanyUserList.Count + "</td>");
                            TotalTable.Append("<td>" + currentCompanyUserList.FindAll(delegate(UserInfo tempUser) { return(tempUser.Status != (int)UserState.Del); }).Count + "</td>");
                            TotalTable.Append("<td>" + studyUserDic.Count + "</td>");
                            TotalTable.Append("<td>" + passSelfPostUserDic.Count + "</td>");
                            TotalTable.Append("<td>" + passSelfPostAndInCompanyUserDic.Count + "</td>");
                            TotalTable.Append("<td>" + passOtherPostUserDic.Count + "</td>");
                            TotalTable.Append("<td>" + passPostUserDic.Count + "</td>");
                            TotalTable.Append("<td>" + manyPostNum + "</td>");
                            TotalTable.Append("<td>" + (!string.IsNullOrEmpty(companyItem.PostStartDate.ToString()) ? Convert.ToDateTime(companyItem.PostStartDate).ToString("d") : "") + "</td>");
                            TotalTable.Append("</tr>\r\n");
                        }
                        TotalTable.Append("</table>\r\n");



                        groupResult.Add(company.CompanySimpleName + "合计");
                        groupResult.Add(0);
                        groupResult.Add(0);
                        groupResult.Add(0);
                        groupResult.Add("");
                        groupResult.Add("");
                        groupResult.Add("");
                        groupResult.Add(0);
                        string dataHtml = GetTheadHtml(company);
                        TotalTable.Append("<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">");
                        TotalTable.Append("<tr class=\"listTableHead\">");
                        TotalTable.Append("<td colspan=\"7\">" + company.CompanySimpleName + " [" + startDate.ToString("d") + "—" + endDate.AddDays(-1).ToString("d") + "]");
                        TotalTable.Append("</td></tr>\r\n");
                        TotalTable.Append("<tr class=\"listTableHead\">\r\n");
                        TotalTable.Append("<td>公司名</td>");
                        TotalTable.Append("<td>参加岗位考试人数</td>");
                        TotalTable.Append("<td>最小学习量<br />学习达标人数</td>");
                        TotalTable.Append("<td>最小学习量<br />学习未达标人数</td>");
                        TotalTable.Append("<td>最小学习量<br />学习达成率</td>");
                        TotalTable.Append("<td>学霸</td>");
                        TotalTable.Append("<td>学习数量</td>");
                        TotalTable.Append("</tr>\r\n");

                        CompanyInfo companySearch = new CompanyInfo();
                        companySearch.Field            = "CompanyId";
                        companySearch.Condition        = CompanyBLL.ReadCompanyIdList(companyID.ToString());
                        companySearch.State            = 0;
                        companySearch.GroupIdCondition = "0,3";
                        List <CompanyInfo> sonCompanyList = CompanyBLL.ReadCompanyList(companySearch);
                        //List<CompanyInfo> sonCompanyList = CompanyBLL.ReadCompanyListByCompanyId(CompanyBLL.ReadCompanyIdList(companyID.ToString()));
                        foreach (CompanyInfo info in sonCompanyList)
                        {
                            if (info.CompanyId != companyID && !string.IsNullOrEmpty(info.PostStartDate.ToString()) && Convert.ToDateTime(info.PostStartDate) < endDate)
                            {
                                dataHtml += HtmlOut1(info, ref TotalTable);
                            }
                        }
                        TotalTable.Append("<tr class=\"listTableFoot\">\r\n");
                        TotalTable.Append("<td>" + groupResult[0] + "</td>");
                        TotalTable.Append("<td>" + groupResult[1] + "</td>");
                        TotalTable.Append("<td>" + groupResult[2] + "</td>");
                        TotalTable.Append("<td>" + groupResult[3] + "</td>");
                        TotalTable.Append("<td>" + (double.Parse(groupResult[2].ToString()) / double.Parse(groupResult[1].ToString())).ToString("P") + "</td>");
                        TotalTable.Append("<td>" + groupResult[6] + "</td>");
                        TotalTable.Append("<td>" + groupResult[7] + "</td>");
                        TotalTable.Append("</tr>\r\n");
                        TotalTable.Append("</table>\r\n");
                        TotalTable.Append("<div style=\"line-height:25px; text-align:left; font-size:14px; margin-bottom:50px;\"><p style=\"text-align:left;  font-size:14px; line-heigh:30px; margin-top:20px;\">4S店每人每周完成1-2小时的基础学习,将带动公司提升“百年老店”运营,建议高标为100%,低标为70%。");
                        if (!string.IsNullOrEmpty(groupResult[4].ToString()))
                        {
                            TotalTable.Append("<br /><br />目前:<span style=\"color:#00b050;\">" + groupResult[4] + "</span> 达至 <span style=\"color:#00b050;\">100%</span> ,表现良好,予以肯定。");
                        }
                        if (!string.IsNullOrEmpty(groupResult[5].ToString()))
                        {
                            TotalTable.Append("<br /><br /><span style=\"color:#FF0000;\">" + groupResult[5] + "</span> 达成率尚不足 <span style=\"color:#FF0000;\">70%</span> ,请相关部门领导关注下属自主学习时间的妥善安排。");
                        }
                        TotalTable.Append("</p></div>\r\n");
                        this.ReportList.InnerHtml = TotalTable.ToString() + dataHtml + GetTfootHtml();
                    }
                    else
                    {
                        StringBuilder TotalTable = null;
                        this.ReportList.InnerHtml = GetTheadHtml(company) + HtmlOut1(company, ref TotalTable) + GetTfootHtml();
                    }
                }
            }
        }
Esempio n. 2
0
        protected string HtmlOut1(CompanyInfo company, string Type)
        {
            int       WeekNum = 0, ColNum = 10, PeoperNum = 0;
            string    logPath = ServerHelper.MapPath(@"\Log\");
            TxtLog    log     = new TxtLog(logPath);
            Stopwatch time1   = new Stopwatch();

            time1.Start();
            StringBuilder TextOut           = new StringBuilder();
            string        CompanyBrandId    = company.BrandId;
            DateTime      PostPlanStartDate = DateTime.MinValue;

            if (string.IsNullOrEmpty(company.PostStartDate.ToString()))
            {
                PostPlanStartDate = Convert.ToDateTime("2013-7-1");
            }
            else
            {
                PostPlanStartDate = Convert.ToDateTime(company.PostStartDate.ToString());
            }

            string rowspan = string.Empty;

            TextOut.Append("<table class=\"evaluation_sheet\">");
            TextOut.Append("<tr>");
            if (StartDate != DateTime.MinValue)
            {
                WeekNum = (EndDate - StartDate).Days / 7;
                if ((EndDate - StartDate).Days % 7 > 0)
                {
                    WeekNum = WeekNum + 1;
                }
                TextOut.Append("<th colspan=\"" + (ColNum + WeekNum * 3) + "\">" + company.CompanySimpleName + " [" + StartDate.ToString("d") + "—" + EndDate.AddDays(-1).ToString("d") + "]");
                rowspan = " rowspan=\"3\"";
            }
            else
            {
                TextOut.Append("<th colspan=\"" + ColNum + "\">" + company.CompanySimpleName + " [ 截止到:" + EndDate.AddDays(-1).ToString("d") + " ]");
                rowspan = " rowspan=\"3\"";
            }
            TextOut.Append("</th></tr>\r\n");
            TextOut.Append("<tr>\r\n");
            TextOut.Append("<th" + rowspan + " class=\"id\">序号</th>");
            //if (base.IsGroupCompany(company.GroupId)) TextOut.Append("<th" + rowspan + ">公司名</th>");
            TextOut.Append("<th" + rowspan + " class=\"name\">姓名</th>");
            TextOut.Append("<th" + rowspan + " class=\"post\">工作岗位</th>");
            TextOut.Append("<th" + rowspan + " class=\"post\">学习岗位</th>");
            TextOut.Append("<th colspan=\"" + (WeekNum * 3).ToString() + "\">学习已通过</th>");
            TextOut.Append("<th colspan=\"3\">合计<br />(");
            if (StartDate != DateTime.MinValue)
            {
                TextOut.Append(StartDate.ToString("d") + "—" + EndDate.AddDays(-1).ToString("d"));
            }
            else
            {
                TextOut.Append("截止到:" + EndDate.AddDays(-1).ToString("d"));
                StartDate = PostPlanStartDate;
            }
            TextOut.Append(")</th>");
            TextOut.Append("<th colspan=\"3\">从项目启动开始</th>");
            TextOut.Append("</tr>\r\n");
            TextOut.Append("<tr>\r\n");
            for (int j = 1; j <= WeekNum; j++)
            {
                TextOut.Append("<th colspan=\"3\">第" + j.ToString() + "周<br>" + StartDate.AddDays(7 * (j - 1)).ToString("M-d") + "—");
                if (j == WeekNum)
                {
                    TextOut.Append(EndDate.AddDays(-1).ToString("M-d") + "</th>");
                }
                else
                {
                    TextOut.Append(StartDate.AddDays((7 * j) - 1).ToString("M-d") + "</th>");
                }
            }
            TextOut.Append("<th rowspan=\"2\" class=\"total\">累计学习<br />考试次数</th>");
            TextOut.Append("<th rowspan=\"2\" class=\"total\">考试通过<br />课程数量</th>");
            TextOut.Append("<th rowspan=\"2\" class=\"total\">课程考试<br />通过率</th>");
            TextOut.Append("<th rowspan=\"2\" class=\"total\">累计<br>完成总数</th>");
            TextOut.Append("<th rowspan=\"2\" class=\"total\">目标<br>完成总数<br>(实际数)</th>");
            TextOut.Append("<th rowspan=\"2\" class=\"total\">学习进度<br>达成分析<br>(超前/落后)</th>");
            TextOut.Append("</tr>\r\n");
            TextOut.Append("<tr class=\"listTableHead\">\r\n");
            for (int j = 1; j <= WeekNum; j++)
            {
                TextOut.Append("<th class=\"total\">累计学习<br />考试次数</th>");
                TextOut.Append("<th class=\"total\">考试通过<br />课程数量</th>");
                TextOut.Append("<th class=\"total\">课程考试<br />通过率</th>");
            }
            TextOut.Append("</tr>\r\n");

            //统计目标课程数
            int TargetNum = 0, CompanyDelayNum = 0;
            //统计通过课程数量第一的数据信息
            string PassCourseFirstUser = string.Empty, GoodStudent = string.Empty; int FirstPassCourseNum = 0;
            //单个岗位的岗位计划开始时间
            DateTime PostStartDate = DateTime.MinValue;
            int      PostSign = 0;      //是否重新计算岗位总数的标记
            int      PostCourseNum = 0; //岗位课程数
            string   AllPostPlan = "0"; //岗位下所有级别的岗位课程
            int      RedNum = 0, YellowNum = 0, GreenNum = 0;

            //增加通过率所用补丁部分
            TestPaperInfo TestPaperModel = new TestPaperInfo();

            if (!string.IsNullOrEmpty(company.PostStartDate.ToString()))
            {
                TestPaperModel.TestMinDate = Convert.ToDateTime(company.PostStartDate);
            }
            TestPaperModel.TestMaxDate        = EndDate;
            TestPaperModel.CompanyIdCondition = company.CompanyId.ToString();
            TestPaperModel.Condition          = "[UserID] in (select [ID] from [_User] where [companyID]=" + company.CompanyId.ToString() + " and [status]=" + (int)UserState.Normal;
            if (!string.IsNullOrEmpty(groupID))
            {
                TestPaperModel.Condition += " and [GroupID] in (" + groupID + ")";
            }
            if (!string.IsNullOrEmpty(PostIdCondition))
            {
                TestPaperModel.Condition += " and [WorkingPostID] in (" + PostIdCondition + ")";
            }
            if (!string.IsNullOrEmpty(StudyPostIdCondition))
            {
                TestPaperModel.Condition += " and [StudyPostId] in (" + StudyPostIdCondition + ")";
            }
            TestPaperModel.Condition += ")";
            List <TestPaperInfo> TestPaperList = TestPaperBLL.NewReadList(TestPaperModel);

            UserSearchInfo userSearch = new UserSearchInfo();

            userSearch.Status          = (int)UserState.Normal;
            userSearch.InWorkingPostID = PostIdCondition;
            //if (base.IsGroupCompany(company.GroupId))
            //{
            //    userSearch.InCompanyID = CompanyBLL.ReadCompanyIdList(company.CompanyId.ToString());
            //    ColNum = 11;
            //    userSearch.InStudyPostID = "45";//集团打开默认显示学习岗位
            //}
            //else
            {
                userSearch.InCompanyID   = company.CompanyId.ToString();
                userSearch.InStudyPostID = StudyPostIdCondition; //只显示该学习岗位下的人员
            }
            userSearch.InGroupID = groupID;
            List <UserInfo> userList = UserBLL.SearchReportUserList(userSearch);
            //记录岗位课程ID串
            Dictionary <int, string[]> postCourseDic = new Dictionary <int, string[]>();

            time1.Stop();
            log.Write("执行到会员开始循环的时间为:" + time1.Elapsed.TotalSeconds);
            time1.Reset();
            foreach (UserInfo Info in userList)
            {
                time1.Reset();
                time1.Start();
                int PostId = int.MinValue, PerPassCourseNum = 0, PerCourseNum = 0;

                PostId = Info.StudyPostID;

                PostInfo PostModel = PostBLL.ReadPost(PostId);
                if (PostModel != null) //排除掉没有设置岗位的人
                {
                    //筛选出当前用户ID的成绩列表
                    List <TestPaperInfo> currentUserPaperList     = TestPaperList.FindAll(delegate(TestPaperInfo TempModel) { return(TempModel.UserId == Info.ID); });
                    List <TestPaperInfo> currentUserPassPaperList = currentUserPaperList.FindAll(delegate(TestPaperInfo TempModel) { return(TempModel.IsPass == 1); });

                    int ResidueCourseNum = 0;//岗位内剩余岗位课程数

                    if (!postCourseDic.ContainsKey(PostId))
                    {
                        //岗位数据信息 1:岗位课程ID串;2:岗位课程数量;3:岗位开始时间;4:目标课程数量
                        string[] postData = { "0", "0", DateTime.MinValue.ToString(), "0" };
                        AllPostPlan = PostBLL.ReadPostCourseID(company.CompanyId, PostId);
                        postData[0] = AllPostPlan;

                        if (!string.IsNullOrEmpty(AllPostPlan))
                        {
                            PostCourseNum = AllPostPlan.Split(',').Length;
                            postData[1]   = PostCourseNum.ToString();
                        }

                        //公司有事耽误的数量  由于岗位不一样,岗位计划开始的时间也不一样,所以有事耽误的数量也是不一致的,按岗位计算
                        PostStartDate = CompanyPostPlanBLL.ReadCompanyPostPlan(company.CompanyId, PostId);
                        //如果没有设置岗位开始时间或者岗位开始时间比公司开始时间早,统一使用公司开始时间
                        if (PostStartDate == DateTime.MinValue || PostStartDate < PostPlanStartDate)
                        {
                            PostStartDate = PostPlanStartDate;
                        }

                        //根据统一的岗位开始时间调取数据
                        CompanyDelayNum = ChangeNumBLL.CompanyChangeNum(company.CompanyId, PostId, PostStartDate, EndDate);
                        TargetNum       = CompanyRuleBLL.GetCourseNum(company.CompanyId, PostId, PostStartDate, EndDate); //理论值是每周两门
                        TargetNum       = TargetNum - CompanyDelayNum;

                        postData[2] = PostStartDate.ToString();
                        postData[3] = TargetNum.ToString();
                        postCourseDic.Add(PostId, postData);
                    }
                    else
                    {
                        AllPostPlan   = postCourseDic[PostId][0];
                        PostCourseNum = int.Parse(postCourseDic[PostId][1]);
                        PostStartDate = Convert.ToDateTime(postCourseDic[PostId][2]);
                        TargetNum     = int.Parse(postCourseDic[PostId][3]);
                    }

                    //如果员工是后来的,要以员工进来的时间为起始点
                    if (PostStartDate < Info.PostStartDate)//Info.RegisterDate
                    {
                        PostStartDate   = Info.PostStartDate;
                        CompanyDelayNum = ChangeNumBLL.CompanyChangeNum(company.CompanyId, PostId, PostStartDate, EndDate);
                        TargetNum       = CompanyRuleBLL.GetCourseNum(company.CompanyId, PostId, PostStartDate, EndDate); //理论值是每周两门
                        TargetNum       = TargetNum - CompanyDelayNum;
                    }
                    TargetNum = TargetNum - ChangeNumBLL.UserChangeNum(Info.ID, PostStartDate, EndDate);


                    //PassCateId 跨岗位通过的课程  PostResidueCourse 岗位内剩余课程
                    string PassCateId = string.Empty, NoPassCateId = string.Empty, PostResidueCourse = string.Empty;
                    if (!string.IsNullOrEmpty(company.PostStartDate.ToString()))
                    {
                        PassCateId        = TestPaperBLL.ReadCourseIDStr(currentUserPassPaperList.FindAll(delegate(TestPaperInfo TempModel) { return(TempModel.TestDate >= PostStartDate && TempModel.TestDate <= EndDate); }));
                        PostResidueCourse = StringHelper.SubString(AllPostPlan, TestPaperBLL.ReadCourseIDStr(currentUserPassPaperList.FindAll(delegate(TestPaperInfo TempModel) { return(TempModel.TestDate <= EndDate); })));
                    }
                    else
                    {
                        PassCateId        = TestPaperBLL.ReadCourseIDStr(currentUserPassPaperList.FindAll(delegate(TestPaperInfo TempModel) { return(TempModel.TestDate <= EndDate); }));
                        PostResidueCourse = StringHelper.SubString(AllPostPlan, PassCateId);
                    }

                    //跨岗位通过的课程数(全岗位计划开始后,累计完成的课程数)
                    int AllPassCourseNum = 0;
                    if (!string.IsNullOrEmpty(PassCateId))
                    {
                        AllPassCourseNum = PassCateId.Split(',').Length;
                    }
                    //获取岗位内剩余课程数
                    if (!string.IsNullOrEmpty(PostResidueCourse))
                    {
                        ResidueCourseNum = PostResidueCourse.Split(',').Length;
                    }

                    string PastPassCourse = string.Empty;
                    PeoperNum = PeoperNum + 1;
                    TextOut.Append("<tr>\r\n");
                    TextOut.Append("<td>" + PeoperNum + "</td>");
                    //if (base.IsGroupCompany(company.GroupId)) TextOut.Append("<td>" + CompanyBLL.ReadCompany(Info.CompanyID).CompanySimpleName + "</td>");
                    TextOut.Append("<td>" + Info.RealName + "</td>");
                    if (!string.IsNullOrEmpty(Info.PostName))
                    {
                        TextOut.Append("<td>" + Info.PostName + "</td>");
                    }
                    else
                    {
                        TextOut.Append("<td>" + PostBLL.ReadPost(Info.WorkingPostID).PostName + "</td>");
                    }
                    TextOut.Append("<td>" + PostModel.PostName + "</td>");
                    for (int j = 1; j <= WeekNum; j++)
                    {
                        int      WeekCourseNum = 0;
                        DateTime _StartDate    = StartDate.AddDays(7 * (j - 1));
                        DateTime _EndDate      = StartDate.AddDays(7 * j);
                        if (j == WeekNum)
                        {
                            _EndDate = EndDate;
                        }
                        if (_StartDate < PostStartDate)
                        {
                            _StartDate = PostStartDate;
                        }
                        if (_EndDate > PostStartDate)
                        {
                            PastPassCourse = TestPaperBLL.ReadCourseIDStr(currentUserPassPaperList.FindAll(delegate(TestPaperInfo TempModel) { return(TempModel.TestDate >= _StartDate && TempModel.TestDate <= _EndDate); }));
                            WeekCourseNum  = currentUserPaperList.FindAll(delegate(TestPaperInfo TempModel) { return(TempModel.TestDate >= _StartDate && TempModel.TestDate <= _EndDate); }).Count;
                        }
                        int PastPassCourseNum = 0;
                        if (!string.IsNullOrEmpty(PastPassCourse))
                        {
                            PastPassCourseNum = PastPassCourse.Split(',').Length;
                        }
                        PerPassCourseNum += PastPassCourseNum;
                        PerCourseNum     += WeekCourseNum;
                        TextOut.Append("<td>" + WeekCourseNum + "</td>");
                        TextOut.Append("<td>" + (PastPassCourseNum) + "</td>");
                        if (PastPassCourseNum == 0)
                        {
                            TextOut.Append("<td>0</td>");
                        }
                        else
                        {
                            TextOut.Append("<td>" + ((double)PastPassCourseNum / (double)WeekCourseNum).ToString("P") + "</td>");
                        }
                    }

                    //统计好学生 学习课程超过30门的人
                    if (PerCourseNum >= 30)
                    {
                        GoodStudent += " " + Info.RealName;
                    }

                    //统计通过课程数量第一的数据
                    if (PerPassCourseNum > 0 && PerPassCourseNum >= FirstPassCourseNum)
                    {
                        if (PerPassCourseNum > FirstPassCourseNum)
                        {
                            PassCourseFirstUser = Info.RealName;
                            FirstPassCourseNum  = PerPassCourseNum;
                        }
                        else
                        {
                            PassCourseFirstUser = PassCourseFirstUser + " " + Info.RealName;
                        }
                    }
                    TextOut.Append("<td>" + PerCourseNum + "</td>");
                    TextOut.Append("<td>" + PerPassCourseNum + "</td>");
                    if (PerCourseNum <= 0)
                    {
                        TextOut.Append("<td>0</td>");
                    }
                    else
                    {
                        TextOut.Append("<td>" + ((double)PerPassCourseNum / (double)PerCourseNum).ToString("P") + "</td>");
                    }
                    TextOut.Append("<td>" + (AllPassCourseNum) + "</td>");
                    TextOut.Append("<td>" + (TargetNum) + "</td>");
                    TargetNum = AllPassCourseNum - TargetNum;
                    TextOut.Append("<td style=\"");
                    if (TargetNum > 0)
                    {
                        TextOut.Append("background: #00b050;");
                        GreenNum += 1;
                    }
                    else if (TargetNum < 0)
                    {
                        TextOut.Append("background: #ff0000;");
                        RedNum += 1;
                    }
                    else
                    {
                        TextOut.Append("background: #ffff00;");
                        YellowNum += 1;
                    }
                    TextOut.Append(" color:#000;\">" + (TargetNum) + "</td>");
                    TextOut.Append("</tr>\r\n");

                    currentUserPaperList     = null;
                    currentUserPassPaperList = null;
                }
                PostModel = null;
                time1.Stop();
                log.Write(Info.RealName + "执行时间为:" + time1.Elapsed.Milliseconds);
            }
            TestPaperList = null;
            if (FirstPassCourseNum > 0)
            {
                TextOut.Append("<tr><th colspan=\"" + (ColNum + WeekNum * 3) + "\">课程考试通过数量最多的学霸为: <font color=red>" + PassCourseFirstUser + "</font>  ,数量为: <font color=red>" + FirstPassCourseNum.ToString() + "</font> 。</th></tr>");
            }
            if (!string.IsNullOrEmpty(GoodStudent))
            {
                TextOut.Append("<tr><th colspan=\"" + (ColNum + WeekNum * 3) + "\">月度考试数量超过30门的为好学生,此次好学生为: <font color=red>" + GoodStudent + "</font> 。</th></tr>");
            }
            TextOut.Append("<tr><th colspan=\"" + (ColNum + WeekNum * 3) + "\">未达标人数:" + RedNum.ToString() + " 刚好达标人数:" + YellowNum.ToString() + " 超越目标人数:" + GreenNum.ToString() + "</th></tr>");
            TextOut.Append("<tr><th colspan=\"" + (ColNum + WeekNum * 3) + "\">未达标人数:" + RedNum.ToString() + " 达标人数:" + (YellowNum + GreenNum).ToString() + " 达成率:" + ((double)(YellowNum + GreenNum) / (double)PeoperNum).ToString("P") + "</th></tr>");
            TextOut.Append("</table>");
            if (string.IsNullOrEmpty(Type))
            {
                return(TextOut.ToString());
            }
            else
            {
                GroupResult[1] = (int)GroupResult[1] + PeoperNum;
                GroupResult[2] = (int)GroupResult[2] + (YellowNum + GreenNum);
                GroupResult[3] = (int)GroupResult[3] + RedNum;
                if (((double)(YellowNum + GreenNum) / (double)PeoperNum) == 1.0)
                {
                    GroupResult[4] = GroupResult[4] + "<span style=\"margin:0px 10px;\">" + company.CompanySimpleName + "</span>";
                }
                else if (((double)(YellowNum + GreenNum) / (double)PeoperNum) < 0.7)
                {
                    GroupResult[5] = GroupResult[5] + "<span style=\"margin:0px 10px;\">" + company.CompanySimpleName + "</span>";
                }
                //GroupResult[4] += ((double)(YellowNum + GreenNum) / (double)PeoperNum);
                return("<tr><td>" + company.CompanySimpleName + "</td><td>" + PeoperNum + "</td><td>" + (YellowNum + GreenNum).ToString() + "</td><td>" + RedNum.ToString() + "</td><td>" + ((double)(YellowNum + GreenNum) / (double)PeoperNum).ToString("P") + "</td></tr>");
            }
        }
Esempio n. 3
0
        protected string HtmlOut1(CompanyInfo company, ref StringBuilder TotalTable)
        {
            StringBuilder TextOut           = new StringBuilder();
            DateTime      PostPlanStartDate = DateTime.MinValue;

            if (string.IsNullOrEmpty(company.PostStartDate.ToString()))
            {
                PostPlanStartDate = Convert.ToDateTime("2013-7-1");
            }
            else
            {
                PostPlanStartDate = Convert.ToDateTime(company.PostStartDate.ToString());
            }

            int PeoperNum = 0;
            //统计目标课程数
            int TargetNum = 0, CompanyDelayNum = 0;
            //统计通过课程数量第一的数据信息
            string PassCourseFirstUser = string.Empty, GoodStudent = string.Empty; int FirstPassCourseNum = 0;
            //单个岗位的岗位计划开始时间
            DateTime PostStartDate = DateTime.MinValue;
            int      PostCourseNum = 0; //岗位课程数
            string   AllPostPlan = "0"; //岗位下所有级别的岗位课程
            int      RedNum = 0, YellowNum = 0, GreenNum = 0;

            //把公司所有员工的考试记录都一起调起
            TestPaperInfo TestPaperModel = new TestPaperInfo();

            if (!string.IsNullOrEmpty(company.PostStartDate.ToString()))
            {
                TestPaperModel.TestMinDate = Convert.ToDateTime(company.PostStartDate);
            }
            TestPaperModel.TestMaxDate        = endDate;
            TestPaperModel.CompanyIdCondition = company.CompanyId.ToString();
            //TestPaperModel.Field = "UserID";
            TestPaperModel.Condition = "[UserID] in (select [ID] from [_User] where [companyID]=" + company.CompanyId.ToString();
            if (!string.IsNullOrEmpty(groupID))
            {
                TestPaperModel.Condition += " and [GroupID] in (" + groupID + ")";
            }
            if (!string.IsNullOrEmpty(postIdCondition))
            {
                TestPaperModel.Condition += " and [WorkingPostID] in (" + postIdCondition + ")";
            }
            if (!string.IsNullOrEmpty(studyPostIdCondition))
            {
                TestPaperModel.Condition += " and [StudyPostId] in (" + studyPostIdCondition + ")";
            }
            if (!string.IsNullOrEmpty(state))
            {
                TestPaperModel.Condition += " and [Status] in (" + state + ")";
            }
            TestPaperModel.Condition += ")";
            List <TestPaperInfo> TestPaperList = TestPaperBLL.NewReadList(TestPaperModel);

            UserSearchInfo userSearch = new UserSearchInfo();

            userSearch.InStatus        = state;
            userSearch.InWorkingPostID = postIdCondition;
            //if (base.IsGroupCompany(company.GroupId))
            //{
            //    userSearch.InCompanyID = CompanyBLL.ReadCompanyIdList(company.CompanyId.ToString());
            //    ColNum = 11;
            //    userSearch.InStudyPostID = "45";//集团打开默认显示学习岗位
            //}
            //else
            {
                userSearch.InCompanyID   = company.CompanyId.ToString();
                userSearch.InStudyPostID = studyPostIdCondition; //只显示该学习岗位下的人员
            }
            userSearch.InGroupID = groupID;
            List <UserInfo> userList = UserBLL.SearchReportUserList(userSearch);

            //把公司所有员工的第一次考试记录都一起调起
            List <TestPaperReportInfo> userFirstTestRecordList = TestPaperBLL.ReadTheFirstRecordList(userSearch.InCompanyID);
            //把所有员工的认证记录一起调用
            PostPassInfo postPassSearch = new PostPassInfo();

            postPassSearch.CreateDate  = endDate;
            postPassSearch.InCompanyID = userSearch.InCompanyID;
            List <PostPassInfo> postPassList = PostPassBLL.ReadPostPassList(postPassSearch);

            //记录岗位课程ID串
            Dictionary <int, string[]> postCourseDic = new Dictionary <int, string[]>();

            foreach (UserInfo Info in userList)
            {
                int PostId = int.MinValue, PerPassCourseNum = 0, PerCourseNum = 0;

                PostId = Info.StudyPostID;

                PostInfo PostModel = PostBLL.ReadPost(PostId);
                if (PostModel != null) //排除掉没有设置岗位的人
                {
                    //筛选出当前用户ID的成绩列表
                    List <TestPaperInfo> currentUserPaperList     = TestPaperList.FindAll(delegate(TestPaperInfo TempModel) { return(TempModel.UserId == Info.ID); });
                    List <TestPaperInfo> currentUserPassPaperList = currentUserPaperList.FindAll(delegate(TestPaperInfo TempModel) { return(TempModel.IsPass == 1); });

                    int ResidueCourseNum = 0;//岗位内剩余岗位课程数

                    if (!postCourseDic.ContainsKey(PostId))
                    {
                        //岗位数据信息 1:岗位课程ID串;2:岗位课程数量;3:岗位开始时间;4:目标课程数量
                        string[] postData = { "0", "0", DateTime.MinValue.ToString(), "0" };
                        AllPostPlan = PostBLL.ReadPostCourseID(company.CompanyId, PostId);
                        postData[0] = AllPostPlan;

                        if (!string.IsNullOrEmpty(AllPostPlan))
                        {
                            PostCourseNum = AllPostPlan.Split(',').Length;
                            postData[1]   = PostCourseNum.ToString();
                        }

                        //公司有事耽误的数量  由于岗位不一样,岗位计划开始的时间也不一样,所以有事耽误的数量也是不一致的,按岗位计算
                        PostStartDate = CompanyPostPlanBLL.ReadCompanyPostPlan(company.CompanyId, PostId);
                        //如果没有设置岗位开始时间或者岗位开始时间比公司开始时间早,统一使用公司开始时间
                        if (PostStartDate == DateTime.MinValue || PostStartDate < PostPlanStartDate)
                        {
                            PostStartDate = PostPlanStartDate;
                        }

                        //根据统一的岗位开始时间调取数据
                        CompanyDelayNum = ChangeNumBLL.CompanyChangeNum(company.CompanyId, PostId, PostStartDate, endDate);
                        TargetNum       = CompanyRuleBLL.GetCourseNum(company.CompanyId, PostId, PostStartDate, endDate); //理论值是每周两门
                        TargetNum       = TargetNum - CompanyDelayNum;

                        postData[2] = PostStartDate.ToString();
                        postData[3] = TargetNum.ToString();
                        postCourseDic.Add(PostId, postData);
                    }
                    else
                    {
                        AllPostPlan   = postCourseDic[PostId][0];
                        PostCourseNum = int.Parse(postCourseDic[PostId][1]);
                        PostStartDate = Convert.ToDateTime(postCourseDic[PostId][2]);
                        TargetNum     = int.Parse(postCourseDic[PostId][3]);
                    }

                    //如果员工是后来的,要以员工进来的时间为起始点
                    if (PostStartDate < Info.PostStartDate)//Info.RegisterDate
                    {
                        PostStartDate   = Info.PostStartDate;
                        CompanyDelayNum = ChangeNumBLL.CompanyChangeNum(company.CompanyId, PostId, PostStartDate, endDate);
                        TargetNum       = CompanyRuleBLL.GetCourseNum(company.CompanyId, PostId, PostStartDate, endDate); //理论值是每周两门
                        TargetNum       = TargetNum - CompanyDelayNum;
                    }
                    TargetNum = TargetNum - ChangeNumBLL.UserChangeNum(Info.ID, PostStartDate, endDate);


                    //PassCateId 跨岗位通过的课程  PostResidueCourse 岗位内剩余课程
                    string PassCateId = string.Empty, NoPassCateId = string.Empty, PostResidueCourse = string.Empty;
                    if (!string.IsNullOrEmpty(company.PostStartDate.ToString()))
                    {
                        PassCateId        = TestPaperBLL.ReadCourseIDStr(currentUserPassPaperList.FindAll(delegate(TestPaperInfo TempModel) { return(TempModel.TestDate >= PostStartDate && TempModel.TestDate <= endDate); }));
                        PostResidueCourse = StringHelper.SubString(AllPostPlan, TestPaperBLL.ReadCourseIDStr(currentUserPassPaperList.FindAll(delegate(TestPaperInfo TempModel) { return(TempModel.TestDate <= endDate); })));
                    }
                    else
                    {
                        PassCateId        = TestPaperBLL.ReadCourseIDStr(currentUserPassPaperList.FindAll(delegate(TestPaperInfo TempModel) { return(TempModel.TestDate <= endDate); }));
                        PostResidueCourse = StringHelper.SubString(AllPostPlan, PassCateId);
                    }

                    //跨岗位通过的课程数(全岗位计划开始后,累计完成的课程数)
                    int AllPassCourseNum = 0;
                    if (!string.IsNullOrEmpty(PassCateId))
                    {
                        AllPassCourseNum = PassCateId.Split(',').Length;
                    }
                    //获取岗位内剩余课程数
                    if (!string.IsNullOrEmpty(PostResidueCourse))
                    {
                        ResidueCourseNum = PostResidueCourse.Split(',').Length;
                    }

                    string PastPassCourse = string.Empty;
                    PeoperNum       = PeoperNum + 1;
                    TotalPeoperNum += 1;
                    TextOut.Append("<tr class=\"listTableMain\">\r\n");
                    TextOut.Append("<td>" + TotalPeoperNum + "</td>");
                    TextOut.Append("<td>" + company.CompanySimpleName + "</td>");
                    TextOut.Append("<td>" + Info.RealName + "</td>");
                    if (!string.IsNullOrEmpty(Info.PostName))
                    {
                        TextOut.Append("<td>" + Info.PostName + "</td>");
                    }
                    else
                    {
                        TextOut.Append("<td>" + PostBLL.ReadPost(Info.WorkingPostID).PostName + "</td>");
                    }
                    TextOut.Append("<td>" + PostModel.PostName + "</td>");
                    TextOut.Append("<td>" + EnumHelper.ReadEnumChineseName <UserState>(Info.Status) + "</td>");

                    TestPaperReportInfo currentUserFirstTestRecord = userFirstTestRecordList.Find(delegate(TestPaperReportInfo tempModel) { return(tempModel.UserID == Info.ID); });
                    if (currentUserFirstTestRecord != null)
                    {
                        TextOut.Append("<td>" + currentUserFirstTestRecord.TestDate.ToString("d") + "</td>");
                    }
                    else
                    {
                        TextOut.Append("<td>&nbsp;</td>");
                    }
                    PostPassInfo selfPostRZ = postPassList.Find(delegate(PostPassInfo postpass) { return(postpass.UserId == Info.ID && postpass.PostId == Info.WorkingPostID); });
                    if (selfPostRZ != null)
                    {
                        TextOut.Append("<td>是</td>");
                        TextOut.Append("<td>" + selfPostRZ.CreateDate.ToString("d") + "</td>");
                    }
                    else
                    {
                        TextOut.Append("<td>&nbsp;</td>");
                        TextOut.Append("<td>&nbsp;</td>");
                    }
                    List <PostPassInfo> otherPostRZ = postPassList.FindAll(delegate(PostPassInfo postpass) { return(postpass.UserId == Info.ID && postpass.PostId != Info.WorkingPostID); });
                    if (otherPostRZ.Count > 0)
                    {
                        TextOut.Append("<td>是</td>");
                        //TextOut.Append("<td>");
                        //string otherPostName = string.Empty;
                        //foreach (ReportPostPassInfo info in otherPostRZ)
                        //{
                        //    TextOut.Append(info.PassPostName + " ");
                        //}
                        //TextOut.Append("</td>");
                    }
                    else
                    {
                        TextOut.Append("<td>&nbsp;</td>");
                    }

                    for (int j = 1; j <= WeekNum; j++)
                    {
                        int      WeekCourseNum = 0;
                        DateTime _StartDate    = startDate.AddDays(7 * (j - 1));
                        DateTime _EndDate      = startDate.AddDays(7 * j);
                        if (j == WeekNum)
                        {
                            _EndDate = endDate;
                        }
                        if (_StartDate < PostStartDate)
                        {
                            _StartDate = PostStartDate;
                        }
                        if (_EndDate > PostStartDate)
                        {
                            PastPassCourse = TestPaperBLL.ReadCourseIDStr(currentUserPassPaperList.FindAll(delegate(TestPaperInfo TempModel) { return(TempModel.TestDate >= _StartDate && TempModel.TestDate <= _EndDate); }));
                            WeekCourseNum  = currentUserPaperList.FindAll(delegate(TestPaperInfo TempModel) { return(TempModel.TestDate >= _StartDate && TempModel.TestDate <= _EndDate); }).Count;
                        }
                        int PastPassCourseNum = 0;
                        if (!string.IsNullOrEmpty(PastPassCourse))
                        {
                            PastPassCourseNum = PastPassCourse.Split(',').Length;
                        }
                        PerPassCourseNum += PastPassCourseNum;
                        PerCourseNum     += WeekCourseNum;
                        TextOut.Append("<td>" + WeekCourseNum + "</td>");
                        TextOut.Append("<td>" + (PastPassCourseNum) + "</td>");
                        if (PastPassCourseNum == 0)
                        {
                            TextOut.Append("<td>0</td>");
                        }
                        else
                        {
                            TextOut.Append("<td>" + ((double)PastPassCourseNum / (double)WeekCourseNum).ToString("P") + "</td>");
                        }
                    }

                    //统计好学生 学习课程超过30门的人
                    if (PerCourseNum >= 30)
                    {
                        GoodStudent += " " + Info.RealName;
                    }

                    //统计通过课程数量第一的数据
                    if (PerPassCourseNum > 0 && PerPassCourseNum >= FirstPassCourseNum)
                    {
                        if (PerPassCourseNum > FirstPassCourseNum)
                        {
                            PassCourseFirstUser = Info.RealName;
                            FirstPassCourseNum  = PerPassCourseNum;
                        }
                        else
                        {
                            PassCourseFirstUser = PassCourseFirstUser + " " + Info.RealName;
                        }
                    }
                    TextOut.Append("<td>" + PerCourseNum + "</td>");
                    TextOut.Append("<td>" + PerPassCourseNum + "</td>");
                    if (PerCourseNum <= 0)
                    {
                        TextOut.Append("<td>0</td>");
                    }
                    else
                    {
                        TextOut.Append("<td>" + ((double)PerPassCourseNum / (double)PerCourseNum).ToString("P") + "</td>");
                    }
                    TextOut.Append("<td>" + (AllPassCourseNum) + "</td>");
                    TextOut.Append("<td>" + (TargetNum) + "</td>");
                    TargetNum = AllPassCourseNum - TargetNum;
                    TextOut.Append("<td style=\"");
                    if (TargetNum > 0)
                    {
                        TextOut.Append("background: #00b050;");
                        GreenNum += 1;
                    }
                    else if (TargetNum < 0)
                    {
                        TextOut.Append("background: #ff0000;");
                        RedNum += 1;
                    }
                    else
                    {
                        TextOut.Append("background: #ffff00;");
                        YellowNum += 1;
                    }
                    TextOut.Append(" color:#000;\">" + (TargetNum) + "</td>");
                    TextOut.Append("</tr>\r\n");

                    currentUserPaperList     = null;
                    currentUserPassPaperList = null;
                }
                PostModel = null;
            }
            TestPaperList = null;

            //集团性质不显示总结描述
            if (TotalTable == null)
            {
                if (FirstPassCourseNum > 0)
                {
                    TextOut.Append("<tr class=\"listTableHead\"><th colspan=\"" + (ColNum + WeekNum * 3) + "\">课程考试通过数量最多的学霸为: <font color=red>" + PassCourseFirstUser + "</font>  ,数量为: <font color=red>" + FirstPassCourseNum.ToString() + "</font> 。</th></tr>");
                }
                if (!string.IsNullOrEmpty(GoodStudent))
                {
                    TextOut.Append("<tr class=\"listTableHead\"><th colspan=\"" + (ColNum + WeekNum * 3) + "\">月度考试数量超过30门的为好学生,此次好学生为: <font color=red>" + GoodStudent + "</font> 。</th></tr>");
                }
                TextOut.Append("<tr class=\"listTableHead\"><th colspan=\"" + (ColNum + WeekNum * 3) + "\">未达标人数:" + RedNum.ToString() + " 刚好达标人数:" + YellowNum.ToString() + " 超越目标人数:" + GreenNum.ToString() + "</th></tr>");
                TextOut.Append("<tr class=\"listTableHead\"><th colspan=\"" + (ColNum + WeekNum * 3) + "\">未达标人数:" + RedNum.ToString() + " 达标人数:" + (YellowNum + GreenNum).ToString() + " 达成率:" + ((double)(YellowNum + GreenNum) / (double)PeoperNum).ToString("P") + "</th></tr>");
            }

            //生成集团报表内容
            if (TotalTable != null)
            {
                //集团报表内容开始
                groupResult[1] = (int)groupResult[1] + PeoperNum;
                groupResult[2] = (int)groupResult[2] + (YellowNum + GreenNum);
                groupResult[3] = (int)groupResult[3] + RedNum;
                if (((double)(YellowNum + GreenNum) / (double)PeoperNum) == 1.0)
                {
                    groupResult[4] = groupResult[4] + "<span style=\"margin:0px 10px;\">" + company.CompanySimpleName + "</span>";
                }
                else if (((double)(YellowNum + GreenNum) / (double)PeoperNum) < 0.7)
                {
                    groupResult[5] = groupResult[5] + "<span style=\"margin:0px 10px;\">" + company.CompanySimpleName + "</span>";
                }
                //GroupResult[4] += ((double)(YellowNum + GreenNum) / (double)PeoperNum);
                if (FirstPassCourseNum > 0 && FirstPassCourseNum >= (int)groupResult[7])
                {
                    if (FirstPassCourseNum == (int)groupResult[7])
                    {
                        groupResult[6] = string.IsNullOrEmpty(groupResult[6].ToString()) ? PassCourseFirstUser : groupResult[6] + " " + PassCourseFirstUser;
                    }
                    else
                    {
                        groupResult[6] = PassCourseFirstUser;
                        groupResult[7] = FirstPassCourseNum;
                    }
                }
                TotalTable.AppendLine("<tr class=\"listTableMain\"><td>" + company.CompanySimpleName + "</td><td>" + PeoperNum + "</td><td>" + (YellowNum + GreenNum).ToString() + "</td><td>" + RedNum.ToString() + "</td><td>" + ((double)(YellowNum + GreenNum) / (double)PeoperNum).ToString("P") + "</td><td>" + PassCourseFirstUser + "</td><td>" + FirstPassCourseNum.ToString() + "</td></tr>");
            }
            return(TextOut.ToString());
        }
Esempio n. 4
0
        protected void Page_Load(object sender, EventArgs e)
        {
            base.ClearCache();

            int companyID = base.UserCompanyID;
            int userID    = base.UserID;

            filePath = TestPaperBLL.ReadTestPaperPath(userID, productID);

            if (!IsPostBack)
            {
                if (productID < 0)
                {
                    ScriptHelper.Alert("选择课程后,进行考试!");
                    Response.End();
                }
                TestSettingInfo testSetting = TestSettingBLL.ReadTestSetting(companyID, productID);
                ProductInfo     product     = ProductBLL.ReadProduct(productID);

                RenZhengCateInfo renZhengProduct = RenZhengCateBLL.ReadTestCateByID(product.ID);
                if (renZhengProduct != null)
                {
                    PostApprover postApprover = new PostApprover(PostPassBLL.ReadPostPassList(new PostPassInfo()
                    {
                        UserId = userID, IsRZ = 1
                    }));
                    if (!postApprover.IsTest(renZhengProduct.PostId))
                    {
                        Response.Write("<script>alert('请先完成 " + PostBLL.ReadPost(postApprover.NextPostID).PostName + " 的岗位综合认证!');history.go(-1);</script>");
                        Response.End();
                    }
                }

                if (testSetting.TestStartTime != null && testSetting.TestEndTime != null)
                {
                    if (testSetting.TestStartTime > DateTime.Now || testSetting.TestEndTime < DateTime.Now)
                    {
                        Response.Write("<script>alert('不在 该门课程 设定的考试时间内!');history.go(-1);</script>");
                        Response.End();
                    }
                }
                TestPaperInfo PaperModel = new TestPaperInfo();
                PaperModel.CateIdCondition = productID.ToString();
                PaperModel.UserIdCondition = userID.ToString();
                List <TestPaperInfo> PaperList = TestPaperBLL.NewReadList(PaperModel);
                if (PaperList.Count > 0)
                {
                    foreach (TestPaperInfo Item in PaperList)
                    {
                        if (Item.IsPass == 1)// && Item.CateId != 5368//孟特销售工具应用与说明 需要多次考试
                        {
                            Response.Write("<script>alert('您已通过,请选择其它课程!');</script>");
                            Response.End();
                        }
                        if ((DateTime.Now - Item.TestDate).TotalHours < testSetting.TestInterval)
                        {
                            if (testSetting.TestStartTime != null || testSetting.TestEndTime != null)
                            {
                                Response.Write("<script>alert('您已经参加过考试,暂不能重考!');window.close();</script>");
                            }
                            else
                            {
                                Response.Write("<script>alert('考完" + testSetting.TestInterval + "小时后才能重考,请选择其它课程!');history.go(-1);</script>");
                            }
                            Response.End();
                        }
                    }
                }

                if ((File.Exists(filePath) && (DateTime.Now - File.GetLastWriteTime(filePath)).TotalHours < testSetting.TestInterval))//TempPaperInfo != null && (DateTime.Now - TempPaperInfo.TestDate).TotalHours < 72
                {
                    bool      HaveTest = false;
                    XmlHelper XmlDoc1  = new XmlHelper(filePath);
                    for (int StyleId = 1; StyleId <= 3; StyleId++)
                    {
                        string NodeName = "TestPaper";
                        if (StyleId == 1)
                        {
                            NodeName = NodeName + "/Single";
                        }
                        else if (StyleId == 2)
                        {
                            NodeName = NodeName + "/Multi";
                        }
                        else if (StyleId == 3)
                        {
                            NodeName = NodeName + "/PanDuan";
                        }
                        //判断题型库里是否有考题
                        XmlNode Node = XmlDoc1.ReadNode(NodeName);
                        if (Node != null && Node.HasChildNodes)
                        {
                            XmlNodeList NodeList = XmlDoc1.ReadChildNodes(NodeName);
                            //遍历节点
                            foreach (XmlNode node in NodeList)
                            {
                                if (!string.IsNullOrEmpty(node.ChildNodes[6].InnerText))
                                {
                                    HaveTest = true;
                                }
                            }
                        }
                    }
                    if (HaveTest)
                    {
                        AdminLogBLL.AddAdminLog(ShopLanguage.ReadLanguage("TestPaperRecord"), ShopLanguage.ReadLanguage("TestPaper"), productID);
                        TestPaperInfo testpaper = TestPaperBLL.CalcTestResult(companyID, userID, productID);
                        if (testpaper.IsPass == 1)
                        {
                            PostPassBLL.CheckPostPass(UserID, productID);

                            //孟特销售工具应用与说明 课程处理
                            //if (productID == 5368)
                            //    TestSettingBLL.SpecialTestHandle(userID, int.Parse(CookiesHelper.ReadCookieValue("UserStudyPostId")));
                        }
                        ResponseHelper.Write("<script>alert('您上次未完成交卷,此时系统自动为您补交!得分:" + testpaper.Scorse + "分。');window.location.href='CourseCenter.aspx';</script>");
                        Response.End();
                    }
                }


                TestName.Text = product.Name;
                endTimer      = testSetting.TestTimeLength * 60;

                QuestionBLL.ReadQuestionXmlList(productID, product.Accessory, companyID, userID);

                AdminLogBLL.AddAdminLog(ShopLanguage.ReadLanguage("StartTest"), ShopLanguage.ReadLanguage("TestCate"), productID);
                AdminLogBLL.AddAdminLog(Request.Browser.Browser + "|" + Request.Browser.Version, productID);
            }
        }
Esempio n. 5
0
        protected override void PageLoad()
        {
            int    companyID = base.UserCompanyID;
            int    userID    = base.UserID;
            string filePath  = TestPaperBLL.ReadTestPaperPath(userID, productID);

            base.PageLoad();
            base.ClearCache();
            base.Title = "考试中心";
            if (productID == int.MinValue)
            {
                ScriptHelper.Alert("请在“课程列表”中选择课程后,进行考试!");
            }
            TestSettingInfo testSetting = TestSettingBLL.ReadTestSetting(companyID, productID);
            ProductInfo     product     = ProductBLL.ReadProduct(productID);

            //if (!CompanyBLL.IsTest)
            //{
            //    Response.Write("<script>alert('该公司不允许考试,请联系管理员!');var DG = frameElement.lhgDG;DG.cancel();</script>");
            //    Response.End();
            //}
            RenZhengCateInfo renZhengProduct = RenZhengCateBLL.ReadTestCateByID(product.ID);

            if (renZhengProduct != null)
            {
                PostApprover postApprover = new PostApprover(PostPassBLL.ReadPostPassList(new PostPassInfo()
                {
                    UserId = userID, IsRZ = 1
                }));
                if (!postApprover.IsTest(renZhengProduct.PostId))
                {
                    Response.Write("<script>alert('请先完成 " + PostBLL.ReadPost(postApprover.NextPostID).PostName + " 的岗位综合认证!');window.close();</script>");
                    Response.End();
                }
            }
            if (testSetting.TestStartTime.HasValue && testSetting.TestEndTime.HasValue)
            {
                //if (product.ClassID != 4387)
                //{
                //    if (Convert.ToDateTime(testSetting.TestStartTime) > DateTime.Now || Convert.ToDateTime(testSetting.TestEndTime) < DateTime.Now)
                //    {
                //        Response.Write("<script>alert('不在 该门课程 设定的考试时间内!');var DG = frameElement.lhgDG;DG.cancel();</script>");
                //        Response.End();
                //    }
                //}
                //else
                //{
                if (testSetting.TestStartTime > DateTime.Now || testSetting.TestEndTime < DateTime.Now) //&& Convert.ToDateTime(testSetting.TestStartTime).Minute <= DateTime.Now.Minute && Convert.ToDateTime(testSetting.TestEndTime).Minute >= DateTime.Now.Minute
                {
                    Response.Write("<script>alert('不在 该门课程 设定的考试时间内!');window.close();</script>");
                    Response.End();
                }
                //}
            }

            TestPaperInfo PaperModel = new TestPaperInfo();

            PaperModel.CateIdCondition = productID.ToString();
            PaperModel.UserIdCondition = userID.ToString();
            List <TestPaperInfo> PaperList = TestPaperBLL.NewReadList(PaperModel);

            if (PaperList.Count > 0)
            {
                foreach (TestPaperInfo Item in PaperList)
                {
                    if (Item.IsPass == 1)// && Item.CateId != 5368孟特销售工具应用与说明 需要多次考试
                    {
                        Response.Write("<script>alert('您已通过,请选择其它课程!');</script>");
                        Response.End();
                    }
                    if ((DateTime.Now - Item.TestDate).TotalHours < testSetting.TestInterval)
                    {
                        if (testSetting.TestStartTime.HasValue || testSetting.TestEndTime.HasValue)
                        {
                            Response.Write("<script>alert('您已经参加过考试,暂不能重考!');window.close();</script>");
                        }
                        else
                        {
                            Response.Write("<script>alert('考完" + testSetting.TestInterval + "小时后才能重考,请选择其它课程!');window.close();</script>");
                        }
                        Response.End();
                    }
                }
            }

            if ((File.Exists(filePath) && (DateTime.Now - File.GetLastWriteTime(filePath)).TotalHours < testSetting.TestInterval))//TempPaperInfo != null && (DateTime.Now - TempPaperInfo.TestDate).TotalHours < 72
            {
                bool      HaveTest = false;
                XmlHelper XmlDoc1  = new XmlHelper(filePath);
                for (int StyleId = 1; StyleId <= 3; StyleId++)
                {
                    string NodeName = "TestPaper";
                    if (StyleId == 1)
                    {
                        NodeName = NodeName + "/Single";
                    }
                    else if (StyleId == 2)
                    {
                        NodeName = NodeName + "/Multi";
                    }
                    else if (StyleId == 3)
                    {
                        NodeName = NodeName + "/PanDuan";
                    }
                    //判断题型库里是否有考题
                    XmlNode Node = XmlDoc1.ReadNode(NodeName);
                    if (Node != null && Node.HasChildNodes)
                    {
                        XmlNodeList NodeList = XmlDoc1.ReadChildNodes(NodeName);
                        //遍历节点
                        foreach (XmlNode node in NodeList)
                        {
                            if (!string.IsNullOrEmpty(node.ChildNodes[6].InnerText))
                            {
                                HaveTest = true;
                            }
                        }
                    }
                }
                if (HaveTest)
                {
                    AdminLogBLL.AddAdminLog(ShopLanguage.ReadLanguage("TestPaperRecord"), ShopLanguage.ReadLanguage("TestPaper"), productID);
                    TestPaperInfo testpaper = TestPaperBLL.CalcTestResult(companyID, userID, productID);
                    if (testpaper.IsPass == 1)
                    {
                        PostPassBLL.CheckPostPass(UserID, productID);

                        //孟特销售工具应用与说明 课程处理
                        //if (productID == 5368)
                        //    TestSettingBLL.SpecialTestHandle(userID, int.Parse(CookiesHelper.ReadCookieValue("UserStudyPostId")));
                    }
                    ResponseHelper.Write("<script>alert('您上次未完成交卷,此时系统自动为您补交!得分:" + testpaper.Scorse + "分。');window.close();</script>");
                    Response.End();
                }
            }

            //开启防止多次开启同一课程考试
            //TestSettingBLL.TestBegin(userID, productID);

            paperName = product.Name;
            testTime  = (testSetting.TestTimeLength * 60).ToString();

            QuestionBLL.ReadQuestionXmlList(productID, product.Accessory, companyID, userID);
            XmlHelper XmlDoc = new XmlHelper(filePath);


            paperInfoHtml.AppendLine("<p>考试时长:" + testSetting.TestTimeLength.ToString() + " 分钟</p>");
            paperInfoHtml.AppendLine("<p>试卷总分:" + testSetting.PaperScore.ToString() + " 分</p>");
            paperInfoHtml.AppendLine("<p>试题数量:共 " + XmlDoc.ReadAttribute("TestPaper", "QuestionNum") + " 道。其中 ");
            string TempNum = XmlDoc.ReadAttribute("TestPaper", "SingleNum");

            if (int.Parse(TempNum) > 0)
            {
                paperInfoHtml.Append("单项选择题:" + TempNum + " 道;");
            }
            TempNum = XmlDoc.ReadAttribute("TestPaper", "MultiNum");
            if (int.Parse(TempNum) > 0)
            {
                paperInfoHtml.Append("多项选择题:" + TempNum + " 道;");
            }
            TempNum = XmlDoc.ReadAttribute("TestPaper", "PanDunNum");
            if (int.Parse(TempNum) > 0)
            {
                paperInfoHtml.Append("判断题:" + TempNum + " 道;");
            }
            paperInfoHtml.Append("</p>");

            int NoteCount = XmlDoc.ReadChildNodes("TestPaper/Single").Count;

            if (NoteCount > 0)
            {
                questionStyleHtml.AppendLine("<li data-id=\"1\"><a href=\"javascript:void(0);\">" + EnumHelper.ReadEnumChineseName <QuestionType>(1) + "</a></li>");
                questionIndexHtml.AppendLine("<ul data-style=\"1\" class=\"clearfix\" id=\"radio\">");
                for (int i = 1; i <= NoteCount; i++)
                {
                    questionIndexHtml.AppendLine("<li><a href=\"javascript:void(0);\">" + (i) + "</a></li>");
                }
                questionIndexHtml.AppendLine("</ul>");
            }

            NoteCount = XmlDoc.ReadChildNodes("TestPaper/Multi").Count;
            if (NoteCount > 0)
            {
                questionStyleHtml.AppendLine("<li data-id=\"2\"><a href=\"javascript:void(0);\">" + EnumHelper.ReadEnumChineseName <QuestionType>(2) + "</a></li>");
                questionIndexHtml.AppendLine("<ul data-style=\"2\" class=\"clearfix\" id=\"checkbox\">");
                for (int i = 1; i <= NoteCount; i++)
                {
                    questionIndexHtml.AppendLine("<li><a href=\"javascript:void(0);\">" + (i) + "</a></li>");
                }
                questionIndexHtml.AppendLine("</ul>");
            }

            NoteCount = XmlDoc.ReadChildNodes("TestPaper/PanDuan").Count;
            if (NoteCount > 0)
            {
                questionStyleHtml.AppendLine("<li data-id=\"3\"><a href=\"javascript:void(0);\">" + EnumHelper.ReadEnumChineseName <QuestionType>(3) + "</a></li>");
                questionIndexHtml.AppendLine("<ul data-style=\"3\" class=\"clearfix\" id=\"judge\">");
                for (int i = 1; i <= NoteCount; i++)
                {
                    questionIndexHtml.AppendLine("<li><a href=\"javascript:void(0);\">" + (i) + "</a></li>");
                }
                questionIndexHtml.AppendLine("</ul>");
            }

            UserLogBLL.AddUserLog(ShopLanguage.ReadLanguage("StartTest"), ShopLanguage.ReadLanguage("TestPaper"), paperName);
            UserLogBLL.AddUserLog(Request.Browser.Browser + "|" + Request.Browser.Version, productID);
        }
Esempio n. 6
0
        protected string HtmlOut1(CompanyInfo company)
        {
            int           ColNum         = 8;
            StringBuilder TextOut        = new StringBuilder();
            string        CompanyBrandId = company.BrandId;

            string rowspan = string.Empty;

            TextOut.Append("<table class=\"evaluation_sheet\">");
            TextOut.AppendLine("<thead>");
            TextOut.Append("<tr>");
            TextOut.Append("<th colspan=\"" + ColNum + "\">" + company.CompanySimpleName + "</th>");
            TextOut.Append("</tr>\r\n");
            TextOut.Append("<tr>\r\n");
            TextOut.Append("<th class=\"id\">序号</th>");
            TextOut.Append("<th class=\"name\">姓名</th>");
            TextOut.Append("<th class=\"post\" style=\"width:auto;\">工作岗位</th>");
            TextOut.Append("<th class=\"post\" data-sort=\"string\" style=\"width:auto;\">当前学习岗位<i class=\"icon_arrow\"></i></th>");
            TextOut.Append("<th>岗位课程数</th>");
            TextOut.Append("<th data-sort=\"int\">已通过课程数<i class=\"icon_arrow\"></i></th>");
            TextOut.Append("<th data-sort=\"int\">剩余课程数<i class=\"icon_arrow\"></i></th>");
            TextOut.Append("<th data-sort=\"float\">完成进度<i class=\"icon_arrow\"></i></th>");
            TextOut.Append("</tr>\r\n");
            TextOut.AppendLine("</thead>");
            TextOut.AppendLine("<tbody>");

            TestPaperInfo testPaperSearch = new TestPaperInfo();

            testPaperSearch.IsPass    = 1;
            testPaperSearch.Condition = "[UserID] in (select [ID] from [_User] where [companyID]=" + company.CompanyId.ToString() + " and [status]=" + (int)UserState.Normal;
            if (!string.IsNullOrEmpty(groupID))
            {
                testPaperSearch.Condition += " and [GroupID] in (" + groupID + ")";
            }
            if (!string.IsNullOrEmpty(PostIdCondition))
            {
                testPaperSearch.Condition += " and [WorkingPostID] in (" + PostIdCondition + ")";
            }
            if (!string.IsNullOrEmpty(StudyPostIdCondition))
            {
                testPaperSearch.Condition += " and [StudyPostId] in (" + StudyPostIdCondition + ")";
            }
            testPaperSearch.Condition += ")";
            List <TestPaperInfo> allTestPaperList = TestPaperBLL.NewReadList(testPaperSearch);

            UserSearchInfo userSearch = new UserSearchInfo();

            userSearch.Status          = (int)UserState.Normal;
            userSearch.InWorkingPostID = PostIdCondition;
            userSearch.InCompanyID     = company.CompanyId.ToString();
            userSearch.InStudyPostID   = StudyPostIdCondition; //只显示该学习岗位下的人员
            userSearch.InGroupID       = groupID;
            List <UserInfo> userList = UserBLL.SearchReportUserList(userSearch);

            //记录岗位课程ID串
            Dictionary <int, string> postCourseDic = new Dictionary <int, string>();
            int peoperNum = 0;

            foreach (UserInfo Info in userList)
            {
                int PostId = Info.StudyPostID;

                PostInfo PostModel = PostBLL.ReadPost(PostId);
                if (PostModel != null) //排除掉没有设置岗位的人
                {
                    if (!postCourseDic.ContainsKey(PostId))
                    {
                        postCourseDic.Add(PostId, PostBLL.ReadPostCourseID(company.CompanyId, PostId));
                    }
                    string postCourseID = postCourseDic[PostId];

                    //筛选出当前用户ID的成绩列表
                    List <TestPaperInfo> currentUserPassPaperList = allTestPaperList.FindAll(delegate(TestPaperInfo TempModel) { return(TempModel.UserId == Info.ID && StringHelper.CompareSingleString(postCourseID, TempModel.CateId.ToString())); });

                    int postCourseNum = string.IsNullOrEmpty(postCourseID) ? 0 : postCourseID.Split(',').Length;
                    int passCourseNum = DistinctList(currentUserPassPaperList).Count;

                    peoperNum = peoperNum + 1;
                    TextOut.Append("<tr>");
                    TextOut.Append("<td>" + peoperNum + "</td>");
                    TextOut.Append("<td>" + Info.RealName + "</td>");
                    if (!string.IsNullOrEmpty(Info.PostName))
                    {
                        TextOut.Append("<td>" + Info.PostName + "</td>");
                    }
                    else
                    {
                        TextOut.Append("<td>" + PostBLL.ReadPost(Info.WorkingPostID).PostName + "</td>");
                    }
                    TextOut.Append("<td>" + PostModel.PostName + "</td>");
                    TextOut.Append("<td>" + postCourseNum + "</td>");
                    TextOut.Append("<td>" + passCourseNum + "</td>");
                    TextOut.Append("<td>" + (postCourseNum - passCourseNum) + "</td>");
                    TextOut.Append("<td>" + (postCourseNum > 0 ? ((double)passCourseNum / (double)postCourseNum).ToString("P") : "0.00%") + "</td>");
                    TextOut.Append("</tr>\r\n");

                    currentUserPassPaperList = null;
                }
                PostModel = null;
            }
            TextOut.AppendLine("</tbody>");
            TextOut.AppendLine("</table>");
            allTestPaperList = null;
            return(TextOut.ToString());
        }
Esempio n. 7
0
        protected string HistoryData(List <CompanyInfo> companyList, DateTime EndDate)
        {
            int AllPassCourseNum = 0, AllCourseNum = 0, AllUserNum = 0, TotalNum = 0;

            StringBuilder MonthOut = new StringBuilder();

            MonthOut.Append("<br /><table class=\"listTable\">");
            MonthOut.Append("<tr class=\"listTableHead\"><td colspan=\"5\">" + companyModel.CompanyName + " 历史所有数据 [");
            MonthOut.Append("从项目启动");
            MonthOut.Append("到" + EndDate.AddDays(-1).ToString("d") + "]</td></tr>");
            MonthOut.Append("<tr class=\"listTableHead\">");
            MonthOut.Append("<td>店名</td>");
            MonthOut.Append("<td>系统登记<br />使用人数</td>");
            MonthOut.Append("<td>累计参加<br />考试人数</td>");
            MonthOut.Append("<td>累计学习<br />考试次数</td>");
            MonthOut.Append("<td>考试通过<br />课程数量</td>");
            MonthOut.Append("</tr>");

            foreach (CompanyInfo _CompanyModel in companyList)
            {
                if (!string.IsNullOrEmpty(_CompanyModel.PostStartDate.ToString()) && Convert.ToDateTime(_CompanyModel.PostStartDate.ToString()) < EndDate)
                {
                    string         UserId = string.Empty;
                    int            PassCourseNum = 0, CourseNum = 0, UserNum = 0, Num = 0;
                    UserSearchInfo userSearch = new UserSearchInfo();
                    userSearch.InCompanyID = _CompanyModel.CompanyId.ToString();
                    //userSearch.GroupId = 36;
                    Num = UserBLL.SearchUserList(userSearch).Count;

                    TestPaperInfo TestPaperModel = new TestPaperInfo();
                    TestPaperModel.TestMaxDate        = EndDate;
                    TestPaperModel.CompanyIdCondition = _CompanyModel.CompanyId.ToString();
                    TestPaperModel.Del = int.MinValue;
                    List <TestPaperInfo> TempList = TestPaperBLL.NewReadList(TestPaperModel);
                    foreach (TestPaperInfo Info in TempList)
                    {
                        if (!StringHelper.CompareSingleString(UserId, Info.UserId.ToString()))
                        {
                            UserId += "," + Info.UserId.ToString();
                        }
                        if (Info.IsPass == 1)
                        {
                            PassCourseNum += 1;
                        }
                    }
                    CourseNum         = TempList.Count;
                    AllPassCourseNum += PassCourseNum;
                    AllCourseNum     += CourseNum;
                    if (UserId.StartsWith(","))
                    {
                        UserId = UserId.Substring(1);
                    }
                    if (string.IsNullOrEmpty(UserId))
                    {
                        UserNum = 0;
                    }
                    else
                    {
                        UserNum = UserId.Split(',').Length;
                    }
                    if (Num < UserNum)
                    {
                        Num = UserNum;                 //如果系统历史记录人数小于历史考试记录人数,以历史考试记录人数为准
                    }
                    TotalNum   += Num;
                    AllUserNum += UserNum;

                    MonthOut.Append("<tr class=\"listTableMain\">");
                    MonthOut.Append("<td>" + _CompanyModel.CompanySimpleName + "</td>");
                    MonthOut.Append("<td>" + Num.ToString() + "</td>");
                    MonthOut.Append("<td>" + UserNum.ToString() + "</td>");
                    MonthOut.Append("<td>" + CourseNum + "</td>");
                    MonthOut.Append("<td>" + PassCourseNum + "</td>");
                    MonthOut.Append("</tr>");
                }
            }
            MonthOut.Append("<tr class=\"listTableHead\">");
            MonthOut.Append("<td>" + companyModel.CompanySimpleName + "合计</td>");
            MonthOut.Append("<td>" + TotalNum.ToString() + "</td>");
            MonthOut.Append("<td>" + AllUserNum.ToString() + "</td>");
            MonthOut.Append("<td>" + AllCourseNum + "</td>");
            MonthOut.Append("<td>" + AllPassCourseNum + "</td>");
            MonthOut.Append("</tr>");
            MonthOut.Append("</table>");
            return(MonthOut.ToString());
        }
Esempio n. 8
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                //设置默认值
                if (string.IsNullOrEmpty(action))
                {
                    groupID = "36";
                    state   = ((int)UserState.Normal).ToString();
                }
                if (action == "search" && companyID > 0)
                {
                    startDate            = RequestHelper.GetQueryString <DateTime>("SearchStartDate");
                    endDate              = RequestHelper.GetQueryString <DateTime>("SearchEndDate");
                    SearchStartDate.Text = startDate.ToString("d");
                    SearchEndDate.Text   = endDate.ToString("d");
                    companyModel         = CompanyBLL.ReadCompany(companyID);
                    companyName          = companyModel.CompanyName;

                    CompanyInfo companySearch = new CompanyInfo();
                    companySearch.Field            = "CompanyId";
                    companySearch.Condition        = CompanyBLL.ReadCompanyIdList(companyID.ToString());
                    companySearch.State            = 0;
                    companySearch.GroupIdCondition = "0,3";
                    List <CompanyInfo> companyList = CompanyBLL.ReadCompanyList(companySearch);

                    //有效学习统计开始
                    int    AllPassCourseNum = 0, AllCourseNum = 0, AllUserNum = 0, TotalNum = 0, CompanyNum = 0;
                    double PassAverage = 0.0, PerPassAverage = 0.0, PerAllAverage = 0.0;
                    string NoPassCompanyName = string.Empty, AverageCourseNumCompanyName = string.Empty;

                    StringBuilder MonthOut = new StringBuilder();
                    MonthOut.Append("<table class=\"listTable\">");
                    MonthOut.Append("<tr class=\"listTableHead\"><td colspan=\"11\">" + companyModel.CompanyName + " 人员数据统计[");
                    if (startDate != DateTime.MinValue)
                    {
                        MonthOut.Append("从" + startDate.ToString("d"));
                    }
                    else
                    {
                        MonthOut.Append("从项目启动");
                    }
                    MonthOut.Append("到" + endDate.ToString("d") + "]</td></tr>");
                    MonthOut.Append("<tr class=\"listTableHead\">");
                    MonthOut.Append("<td>店名</td>");
                    MonthOut.Append("<td>项目启动时间</td>");
                    MonthOut.Append("<td>系统登记<br />应考人数</td>");
                    MonthOut.Append("<td>累计参加<br />考试人数</td>");
                    MonthOut.Append("<td>累计学习<br />考试次数</td>");
                    MonthOut.Append("<td>考试通过<br />课程数量</td>");
                    MonthOut.Append("<td>人均学习<br />课程数量</td>");
                    MonthOut.Append("<td>人均通过<br />课程数量</td>");
                    MonthOut.Append("<td>参考人员<br />人均学习<br />课程数量</td>");
                    MonthOut.Append("<td>参考人员<br />人均通过<br />课程数量</td>");
                    MonthOut.Append("<td>课程考试<br />通过率</td>");
                    MonthOut.Append("</tr>");

                    endDate = endDate.AddDays(1);
                    foreach (CompanyInfo _CompanyModel in companyList)
                    {
                        if (!string.IsNullOrEmpty(_CompanyModel.PostStartDate.ToString()) && Convert.ToDateTime(_CompanyModel.PostStartDate.ToString()) < endDate)
                        {
                            int            PassCourseNum = 0, CourseNum = 0, UserNum = 0, Num = 0;
                            UserSearchInfo userSearch = new UserSearchInfo();
                            userSearch.InCompanyID     = _CompanyModel.CompanyId.ToString();
                            userSearch.InStatus        = state;
                            userSearch.InGroupID       = groupID;
                            userSearch.InWorkingPostID = postIdCondition;
                            userSearch.InStudyPostID   = studyPostIdCondition;
                            List <UserInfo> userList = UserBLL.SearchUserList(userSearch);
                            Num = userList.Count;

                            TestPaperInfo TestPaperModel = new TestPaperInfo();
                            TestPaperModel.TestMinDate        = startDate;
                            TestPaperModel.TestMaxDate        = endDate;
                            TestPaperModel.UserIdCondition    = UserBLL.ReadUserIdStr(userList);
                            TestPaperModel.CompanyIdCondition = _CompanyModel.CompanyId.ToString();
                            List <TestPaperInfo> TempList = TestPaperBLL.NewReadList(TestPaperModel);
                            string UserId = string.Empty;
                            foreach (TestPaperInfo Info in TempList)
                            {
                                if (!StringHelper.CompareSingleString(UserId, Info.UserId.ToString()))
                                {
                                    UserId += "," + Info.UserId.ToString();
                                }
                                if (Info.IsPass == 1)
                                {
                                    PassCourseNum += 1;
                                }
                            }
                            if (UserId.StartsWith(","))
                            {
                                UserId = UserId.Substring(1);
                            }
                            if (string.IsNullOrEmpty(UserId))
                            {
                                UserNum = 0;
                            }
                            else
                            {
                                UserNum = UserId.Split(',').Length;
                            }

                            CourseNum = TempList.Count;
                            double SinglePassRate; //单店课程通过率
                            if (CourseNum == 0)
                            {
                                SinglePassRate = 0;
                            }
                            else
                            {
                                SinglePassRate = (double)PassCourseNum / (double)CourseNum;
                            }

                            if (SinglePassRate >= 0.22 || _CompanyModel.CompanyId == companyID)
                            {
                                CompanyNum       += 1;             //通过率大于22%的公司数量
                                TotalNum         += Num;           //总人数
                                AllUserNum       += UserNum;       //总参加考试人数
                                AllCourseNum     += CourseNum;     //总考试课程数
                                AllPassCourseNum += PassCourseNum; //总通过考试课程数
                            }
                            else
                            {
                                NoPassCompanyName += _CompanyModel.CompanySimpleName + " ";
                            }

                            MonthOut.Append("<tr class=\"listTableMain\">");
                            MonthOut.Append("<td>" + _CompanyModel.CompanySimpleName + "</td>");
                            MonthOut.Append("<td>" + Convert.ToDateTime(_CompanyModel.PostStartDate.ToString()).ToString("yyyy年M月") + "</td>");
                            MonthOut.Append("<td>" + Num.ToString() + "</td>");
                            MonthOut.Append("<td>" + UserNum.ToString() + "</td>");
                            MonthOut.Append("<td>" + CourseNum + "</td>");
                            MonthOut.Append("<td>" + PassCourseNum + "</td>");
                            if (Num == 0)
                            {
                                MonthOut.Append("<td>0</td>");
                                MonthOut.Append("<td>0</td>");
                            }
                            else
                            {
                                if (startDate == DateTime.MinValue || (endDate - startDate).Days > 7 || Math.Round(((double)CourseNum / Num), 1) >= 2.2)
                                {
                                    MonthOut.Append("<td>" + Math.Round(((double)CourseNum / Num), 1) + "</td>");
                                }
                                else
                                {
                                    AverageCourseNumCompanyName += _CompanyModel.CompanySimpleName + " ";
                                    MonthOut.Append("<td style=\"background:#FF0000;\">" + Math.Round(((double)CourseNum / Num), 1) + "</td>");
                                }
                                MonthOut.Append("<td>" + Math.Round(((double)PassCourseNum / Num), 1) + "</td>");
                                if (SinglePassRate >= 0.22 || _CompanyModel.CompanyId == companyID)
                                {
                                    PerAllAverage  += Math.Round(((double)CourseNum / Num), 1);
                                    PerPassAverage += Math.Round(((double)PassCourseNum / Num), 1);
                                }
                            }
                            //计算参考人员人均值
                            if (UserNum == 0)
                            {
                                MonthOut.Append("<td>0</td>");
                                MonthOut.Append("<td>0</td>");
                            }
                            else
                            {
                                MonthOut.Append("<td>" + Math.Round(((double)CourseNum / UserNum), 1) + "</td>");
                                MonthOut.Append("<td>" + Math.Round(((double)PassCourseNum / UserNum), 1) + "</td>");
                            }
                            if (SinglePassRate >= 0.22 || _CompanyModel.CompanyId == companyID)
                            {
                                MonthOut.Append("<td>" + SinglePassRate.ToString("P") + "</td>");
                                PassAverage += SinglePassRate;
                            }
                            else
                            {
                                MonthOut.Append("<td style=\"background:#FF0000;\">" + SinglePassRate.ToString("P") + "</td>");
                            }
                            MonthOut.Append("</tr>");
                        }
                    }
                    MonthOut.Append("<tr class=\"listTableHead\">");
                    MonthOut.Append("<td colspan=\"2\">" + companyModel.CompanySimpleName + "有效学习合计</td>");
                    MonthOut.Append("<td>" + TotalNum.ToString() + "</td>");
                    MonthOut.Append("<td>" + AllUserNum.ToString() + "</td>");
                    MonthOut.Append("<td>" + AllCourseNum + "</td>");
                    MonthOut.Append("<td>" + AllPassCourseNum + "</td>");
                    if (TotalNum == 0)
                    {
                        MonthOut.Append("<td>0</td>");
                        MonthOut.Append("<td>0</td>");
                    }
                    else
                    {
                        //MonthOut.Append("<td>" + Math.Round((PerAllAverage / CompanyNum), 1) + "</td>");
                        //MonthOut.Append("<td>" + Math.Round((PerPassAverage / CompanyNum), 1) + "</td>");
                        //MonthOut.Append("<td>" + (PassAverage / CompanyNum).ToString("P") + "</td>");
                        MonthOut.Append("<td>" + Math.Round(((double)AllCourseNum / TotalNum), 1) + "</td>");
                        MonthOut.Append("<td>" + Math.Round(((double)AllPassCourseNum / TotalNum), 1) + "</td>");
                    }
                    if (AllUserNum == 0)
                    {
                        MonthOut.Append("<td>0</td>");
                        MonthOut.Append("<td>0</td>");
                    }
                    else
                    {
                        MonthOut.Append("<td>" + Math.Round(((double)AllCourseNum / AllUserNum), 1) + "</td>");
                        MonthOut.Append("<td>" + Math.Round(((double)AllPassCourseNum / AllUserNum), 1) + "</td>");
                    }
                    if (AllCourseNum == 0)
                    {
                        MonthOut.Append("<td>0</td>");
                    }
                    else
                    {
                        MonthOut.Append("<td>" + ((double)AllPassCourseNum / (double)AllCourseNum).ToString("P") + "</td>");
                    }
                    MonthOut.Append("</tr>");
                    MonthOut.Append("</table>");
                    if (AllCourseNum <= 0)
                    {
                        MonthOut.Insert(0, "<p>课程学习的考试通过率为 <span style=\"color:#FF0000;\"> 0 </span></p><br /></div>");
                    }
                    else
                    {
                        MonthOut.Insert(0, "<p>课程学习的考试通过率为 <span style=\"color:#FF0000;\">" + ((double)AllPassCourseNum / (double)AllCourseNum).ToString("P") + "</span></p><br /></div>");
                    }
                    MonthOut.Insert(0, "在孟特EMS考试系统中进行有效学习的人数为 <span style=\"color:#FF0000;\">" + TotalNum.ToString() + " 人</span></p><br /><p>累计进行了 <span style=\"color:#FF0000;\">" + AllCourseNum.ToString() + " 次</span>课程的学习,人均进行了 <span style=\"color:#FF0000;\">" + Math.Round(((double)AllCourseNum / TotalNum), 1) + " 次</span>课程考试</p><br /><p>其中学习通过 <span style=\"color:#FF0000;\">" + AllPassCourseNum + " 门</span>课程考试,人均通过 <span style=\"color:#FF0000;\">" + Math.Round(((double)AllPassCourseNum / TotalNum), 1) + " 门</span>课程</p><br />");

                    MonthOut.Insert(0, "到" + endDate.AddDays(-1).ToString("d"));
                    if (startDate != DateTime.MinValue)
                    {
                        MonthOut.Insert(0, "从" + startDate.ToString("d"));
                    }
                    else
                    {
                        MonthOut.Insert(0, "从项目启动");
                    }
                    if (companyModel.GroupId == 1 || companyModel.GroupId == 2)
                    {
                        MonthOut.Insert(0, "集团");
                    }
                    else
                    {
                        MonthOut.Insert(0, "贵司");
                    }
                    MonthOut.Insert(0, "<div style=\" text-align:left; font-size:14px;\"><p>");

                    MonthOut.Append("<div style=\"line-height:25px; text-align:left; font-size:14px;\"><p style=\"text-align:left; font-size:14px;\"><font color=\"red\">人均学习课程数量:</font>代表团队对学习重视的程度,越高代表越重视学习,建议<span style=\"color:#FF0000;\">不低于每周人均2.2门课程,每月人均8.5门课程</span>,低于指标者请部门领导对学习加大关注。</p>");
                    if (startDate != DateTime.MinValue && (endDate - startDate).Days <= 7 && !string.IsNullOrEmpty(AverageCourseNumCompanyName) && (companyModel.GroupId == 1 || companyModel.GroupId == 2))
                    {
                        MonthOut.Append("<p style=\"text-align:left; color:#3366ff; font-size:14px;\">目前人均学习数量低于每周人均2.2门课程的团队有:<span style=\"color:#FF0000;\">" + AverageCourseNumCompanyName + "</span>;请相关领导予以关注。</p>");
                        // else if (string.IsNullOrEmpty(AverageCourseNumCompanyName) && (CompanyModel.GroupId == 1 || CompanyModel.GroupId == 2))
                        MonthOut.Append("<p style=\"text-align:left; color:#3366ff; font-size:14px;\">目前有效人均学习数量为:  <span style=\"color:#FF0000;\">" + Math.Round(((double)AllCourseNum / TotalNum), 1) + " 次</span>,");
                        if (Math.Round(((double)AllCourseNum / TotalNum), 1) >= 2.2)
                        {
                            MonthOut.Append("表现良好,请再接再厉。</p>");
                        }
                        else
                        {
                            MonthOut.Append("请相关领导予以关注。</p>");
                        }
                    }
                    MonthOut.Append("<br />");
                    MonthOut.Append("<p style=\"text-align:left; font-size:14px;\"><font color=\"red\">课程考试通过率:</font>通过率高代表团队学习认真,若<span style=\"color:#FF0000;\">通过率低于22%</span>,表示学员没有学习课程,只是通过不断考试来<span style=\"color:#FF0000;\">试图懵过考核</span>,请部门领导制止不当的学习行为。</p>");
                    if (!string.IsNullOrEmpty(NoPassCompanyName) && (companyModel.GroupId == 1 || companyModel.GroupId == 2))
                    {
                        MonthOut.Append("<p style=\"text-align:left; color:#3366ff; font-size:14px;\">目前通过率低于22%的团队有: <span style=\"color:#FF0000;\">" + NoPassCompanyName + "</span>,请相关领导予以关注,以上4S店视为无效学习,全部数据不列入集团学习效果统计。</p>");
                    }
                    else if (string.IsNullOrEmpty(NoPassCompanyName) && (companyModel.GroupId == 1 || companyModel.GroupId == 2))
                    {
                        MonthOut.Append("<p style=\"text-align:left; color:#3366ff; font-size:14px;\">目前通过率为: <span style=\"color:#FF0000;\">" + ((double)AllPassCourseNum / (double)AllCourseNum).ToString("P") + "</span>,表现良好,请再接再厉。</p>");
                    }
                    MonthOut.Append("</div>");

                    //有效学习统计结束


                    //有效学习统计开始
                    //AllPassCourseNum = 0;
                    //AllCourseNum = 0;
                    //AllUserNum = 0;
                    //TotalNum = 0;
                    //CompanyNum = 0;

                    //MonthOut.Append("<br><br>");
                    //MonthOut.Append("<table class=\"listTable\">");
                    //MonthOut.Append("<tr class=\"listTableHead\"><td colspan=\"11\">" + companyModel.CompanyName + " 人员数据统计(除了删除人员以外的所有考试人员) [");
                    //if (startDate != DateTime.MinValue) MonthOut.Append("从" + startDate.ToString("d"));
                    //else MonthOut.Append("从项目启动");
                    //MonthOut.Append("到" + endDate.AddDays(-1).ToString("d") + "]</td></tr>");
                    //MonthOut.Append("<tr class=\"listTableHead\">");
                    //MonthOut.Append("<td>店名</td>");
                    //MonthOut.Append("<td>项目启动时间</td>");
                    //MonthOut.Append("<td>系统登记<br />人数</td>");
                    //MonthOut.Append("<td>累计参加<br />考试人数</td>");
                    //MonthOut.Append("<td>累计学习<br />考试次数</td>");
                    //MonthOut.Append("<td>考试通过<br />课程数量</td>");
                    //MonthOut.Append("<td>人均学习<br />课程数量</td>");
                    //MonthOut.Append("<td>人均通过<br />课程数量</td>");
                    //MonthOut.Append("<td>参考人员<br />人均学习<br />课程数量</td>");
                    //MonthOut.Append("<td>参考人员<br />人均通过<br />课程数量</td>");
                    //MonthOut.Append("<td>课程考试<br />通过率</td>");
                    //MonthOut.Append("</tr>");

                    //foreach (CompanyInfo _CompanyModel in companyList)
                    //{
                    //    if (!string.IsNullOrEmpty(_CompanyModel.PostStartDate.ToString()) && Convert.ToDateTime(_CompanyModel.PostStartDate.ToString()) < endDate)
                    //    {
                    //        int PassCourseNum = 0, CourseNum = 0, UserNum = 0, Num = 0;
                    //        UserSearchInfo userSearch = new UserSearchInfo();
                    //        userSearch.InCompanyID = _CompanyModel.CompanyId.ToString();
                    //        userSearch.InStatus = state;
                    //        userSearch.InGroupID = groupID;
                    //        userSearch.InWorkingPostID = postIdCondition;
                    //        userSearch.InStudyPostID = studyPostIdCondition;
                    //        List<UserInfo> userList = UserBLL.SearchUserList(userSearch);
                    //        Num = userList.Count;
                    //        //应考人数(去除在待考分组的人)
                    //        //int YKNum = userList.FindAll(delegate(UserInfo TempModel) { return TempModel.Status == (int)UserState.Normal; }).Count;
                    //        //Num = YKNum;

                    //        TestPaperInfo TestPaperModel = new TestPaperInfo();
                    //        TestPaperModel.TestMinDate = startDate;
                    //        TestPaperModel.TestMaxDate = endDate;
                    //        TestPaperModel.UserIdCondition = UserBLL.ReadUserIdStr(userList);
                    //        TestPaperModel.CompanyIdCondition = _CompanyModel.CompanyId.ToString();
                    //        List<TestPaperInfo> TempList = TestPaperBLL.NewReadList(TestPaperModel);
                    //        string UserId = string.Empty;
                    //        foreach (TestPaperInfo Info in TempList)
                    //        {
                    //            if (!StringHelper.CompareSingleString(UserId, Info.UserId.ToString()))
                    //            {
                    //                UserId += "," + Info.UserId.ToString();
                    //            }
                    //            if (Info.IsPass == 1)
                    //            {
                    //                PassCourseNum += 1;
                    //            }
                    //        }
                    //        if (UserId.StartsWith(",")) UserId = UserId.Substring(1);
                    //        if (string.IsNullOrEmpty(UserId))
                    //        {
                    //            UserNum = 0;
                    //        }
                    //        else
                    //        {
                    //            UserNum = UserId.Split(',').Length;
                    //        }

                    //        CourseNum = TempList.Count;
                    //        double SinglePassRate; //单店课程通过率
                    //        if (CourseNum == 0)
                    //            SinglePassRate = 0;
                    //        else
                    //            SinglePassRate = (double)PassCourseNum / (double)CourseNum;

                    //        if (SinglePassRate >= 0.22 || _CompanyModel.CompanyId == companyID)
                    //        {
                    //            CompanyNum += 1; //通过率大于22%的公司数量
                    //            TotalNum += Num;  //总人数
                    //            AllUserNum += UserNum; //总参加考试人数
                    //            AllCourseNum += CourseNum; //总考试课程数
                    //            AllPassCourseNum += PassCourseNum;  //总通过考试课程数
                    //        }
                    //        else
                    //        {
                    //            NoPassCompanyName += _CompanyModel.CompanySimpleName + " ";
                    //        }

                    //        MonthOut.Append("<tr class=\"listTableMain\">");
                    //        MonthOut.Append("<td>" + _CompanyModel.CompanySimpleName + "</td>");
                    //        MonthOut.Append("<td>" + Convert.ToDateTime(_CompanyModel.PostStartDate.ToString()).ToString("yyyy年M月") + "</td>");
                    //        MonthOut.Append("<td>" + Num.ToString() + "</td>");
                    //        MonthOut.Append("<td>" + UserNum.ToString() + "</td>");
                    //        MonthOut.Append("<td>" + CourseNum + "</td>");
                    //        MonthOut.Append("<td>" + PassCourseNum + "</td>");
                    //        if (Num == 0)
                    //        {
                    //            MonthOut.Append("<td>0</td>");
                    //            MonthOut.Append("<td>0</td>");
                    //        }
                    //        else
                    //        {
                    //            if (startDate == DateTime.MinValue || (endDate - startDate).Days > 7 || Math.Round(((double)CourseNum / Num), 1) >= 2.2)
                    //            {
                    //                MonthOut.Append("<td>" + Math.Round(((double)CourseNum / Num), 1) + "</td>");
                    //            }
                    //            else
                    //            {
                    //                AverageCourseNumCompanyName += _CompanyModel.CompanySimpleName + " ";
                    //                MonthOut.Append("<td style=\"background:#FF0000;\">" + Math.Round(((double)CourseNum / Num), 1) + "</td>");
                    //            }
                    //            MonthOut.Append("<td>" + Math.Round(((double)PassCourseNum / Num), 1) + "</td>");
                    //            if (SinglePassRate >= 0.22 || _CompanyModel.CompanyId == companyID)
                    //            {
                    //                PerAllAverage += Math.Round(((double)CourseNum / Num), 1);
                    //                PerPassAverage += Math.Round(((double)PassCourseNum / Num), 1);
                    //            }
                    //        }
                    //        //计算参考人员人均值
                    //        if (UserNum == 0)
                    //        {
                    //            MonthOut.Append("<td>0</td>");
                    //            MonthOut.Append("<td>0</td>");
                    //        }
                    //        else
                    //        {
                    //            MonthOut.Append("<td>" + Math.Round(((double)CourseNum / UserNum), 1) + "</td>");
                    //            MonthOut.Append("<td>" + Math.Round(((double)PassCourseNum / UserNum), 1) + "</td>");
                    //        }
                    //        if (SinglePassRate >= 0.22 || _CompanyModel.CompanyId == companyID)
                    //        {
                    //            MonthOut.Append("<td>" + SinglePassRate.ToString("P") + "</td>");
                    //            PassAverage += SinglePassRate;
                    //        }
                    //        else
                    //        {
                    //            MonthOut.Append("<td style=\"background:#FF0000;\">" + SinglePassRate.ToString("P") + "</td>");
                    //        }
                    //        MonthOut.Append("</tr>");
                    //    }
                    //}
                    //MonthOut.Append("<tr class=\"listTableHead\">");
                    //MonthOut.Append("<td colspan=\"2\">" + companyModel.CompanySimpleName + "有效学习合计</td>");
                    //MonthOut.Append("<td>" + TotalNum.ToString() + "</td>");
                    //MonthOut.Append("<td>" + AllUserNum.ToString() + "</td>");
                    //MonthOut.Append("<td>" + AllCourseNum + "</td>");
                    //MonthOut.Append("<td>" + AllPassCourseNum + "</td>");
                    //if (TotalNum == 0)
                    //{
                    //    MonthOut.Append("<td>0</td>");
                    //    MonthOut.Append("<td>0</td>");
                    //}
                    //else
                    //{
                    //    //MonthOut.Append("<td>" + Math.Round((PerAllAverage / CompanyNum), 1) + "</td>");
                    //    //MonthOut.Append("<td>" + Math.Round((PerPassAverage / CompanyNum), 1) + "</td>");
                    //    //MonthOut.Append("<td>" + (PassAverage / CompanyNum).ToString("P") + "</td>");
                    //    MonthOut.Append("<td>" + Math.Round(((double)AllCourseNum / TotalNum), 1) + "</td>");
                    //    MonthOut.Append("<td>" + Math.Round(((double)AllPassCourseNum / TotalNum), 1) + "</td>");
                    //}
                    //if (AllUserNum == 0)
                    //{
                    //    MonthOut.Append("<td>0</td>");
                    //    MonthOut.Append("<td>0</td>");
                    //}
                    //else
                    //{
                    //    MonthOut.Append("<td>" + Math.Round(((double)AllCourseNum / AllUserNum), 1) + "</td>");
                    //    MonthOut.Append("<td>" + Math.Round(((double)AllPassCourseNum / AllUserNum), 1) + "</td>");
                    //}
                    //if (AllCourseNum == 0)
                    //    MonthOut.Append("<td>0</td>");
                    //else
                    //    MonthOut.Append("<td>" + ((double)AllPassCourseNum / (double)AllCourseNum).ToString("P") + "</td>");
                    //MonthOut.Append("</tr>");
                    //MonthOut.Append("</table>");
                    //MonthOut.Append("<br><br>");
                    //有效学习统计结束


                    //岗位资质认证统计开始
                    MonthOut.Append("<table class=\"listTable\">");
                    MonthOut.Append("<tr class=\"listTableHead\"><td colspan=\"9\">" + companyModel.CompanyName + " 岗位资质认证统计 [");
                    if (startDate != DateTime.MinValue)
                    {
                        MonthOut.Append("从" + startDate.ToString("d"));
                    }
                    else
                    {
                        MonthOut.Append("从项目启动");
                    }
                    MonthOut.Append("到" + endDate.AddDays(-1).ToString("d") + "]</td></tr>");
                    MonthOut.Append("<tr class=\"listTableHead\">");
                    MonthOut.Append("<td>店名</td>");
                    MonthOut.Append("<td>姓名</td>");
                    MonthOut.Append("<td>在职岗位</td>");
                    MonthOut.Append("<td>已通过的<br />认证岗位</td>");
                    //MonthOut.Append("<td>岗位考核<br />课程数量</td>");
                    MonthOut.Append("<td>累计通过<br />岗位数量</td>");
                    MonthOut.Append("<td>目前正在<br />学习岗位</td>");
                    MonthOut.Append("</tr>");
                    foreach (CompanyInfo _CompanyModel in companyList)
                    {
                        PostPassInfo PostPassModel = new PostPassInfo();
                        PostPassModel.SearchStartDate = startDate;
                        PostPassModel.CreateDate      = endDate;
                        List <ReportPostPassInfo> PostPassList = PostPassBLL.PostPassReportList(PostPassModel, _CompanyModel.CompanyId.ToString());
                        foreach (ReportPostPassInfo Info in PostPassList)
                        {
                            MonthOut.Append("<tr class=\"listTableMain\">");
                            MonthOut.Append("<td>" + _CompanyModel.CompanySimpleName + "</td>");
                            MonthOut.Append("<td>" + Info.RealName + "</td>");
                            if (string.IsNullOrEmpty(Info.WorkingPostName))
                            {
                                MonthOut.Append("<td>" + PostBLL.ReadPost(Info.WorkingPostId).PostName + "</td>");
                            }
                            else
                            {
                                MonthOut.Append("<td>" + Info.WorkingPostName + "</td>");
                            }
                            MonthOut.Append("<td>" + Info.PassPostName + "</td>");
                            MonthOut.Append("<td>" + Info.PassPostNum.ToString() + "</td>");
                            MonthOut.Append("<td>" + PostBLL.ReadPost(Info.StudyPostId).PostName + "</td>");
                            MonthOut.Append("</tr>");
                        }
                    }
                    MonthOut.Append("</table>");
                    //岗位资质认证统计结束

                    ReportList.InnerHtml  = MonthOut.ToString();
                    ReportList.InnerHtml += HistoryData(companyList, endDate);
                }
            }
        }
Esempio n. 9
0
        protected void HtmlOut()
        {
            startDate            = Convert.ToDateTime(RequestHelper.GetQueryString <string>("SearchStartDate"));
            endDate              = Convert.ToDateTime(RequestHelper.GetQueryString <string>("SearchEndDate")).AddDays(1);
            SearchStartDate.Text = startDate.ToString("d");
            SearchEndDate.Text   = endDate.AddDays(-1).ToShortDateString();
            int           WeekNum = 0, ColNum = 14;
            int           PeoperNum = 0;
            StringBuilder TextOut   = new StringBuilder();
            CompanyInfo   company   = CompanyBLL.ReadCompany(companyID);

            companyName = company.CompanyName;
            //string CompanyBrandId = company.BrandId;
            bool isGroupCompany = base.IsGroupCompany(company.GroupId);

            if (isGroupCompany)
            {
                ColNum = 15;
            }

            string rowspan = string.Empty;

            TextOut.Append("<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">");
            TextOut.Append("<thead>");
            TextOut.Append("<tr class=\"listTableHead\">");

            //循环开始日期
            DateTime loopStartDate = startDate;

            if (SelectMonth == "Other")
            {
                //目前只要一周的数据
                loopStartDate = endDate.AddDays(-7);
                WeekNum       = (endDate - loopStartDate).Days / 7;
                if ((endDate - loopStartDate).Days % 7 > 0)
                {
                    WeekNum = WeekNum + 1;
                }
                TextOut.Append("<th colspan=\"" + (ColNum + WeekNum) + "\">" + company.CompanySimpleName);//+ " [" + loopStartDate.ToString("d") + "—" + EndDate.AddDays(-1).ToString("d") + "]"
                rowspan = " rowspan=\"2\"";
            }
            TextOut.Append("</th></tr>\r\n");
            TextOut.Append("<tr class=\"listTableHead\">\r\n");
            TextOut.Append("<th" + rowspan + ">序号</th>");
            if (isGroupCompany)
            {
                TextOut.Append("<td" + rowspan + ">公司名</th>");
            }
            TextOut.Append("<th" + rowspan + " data-sort=\"string\">姓名</th>");
            TextOut.Append("<th" + rowspan + " data-sort=\"string\">工作岗位</th>");
            TextOut.Append("<th" + rowspan + " data-sort=\"string\">学习岗位</th>");
            TextOut.Append("<th" + rowspan + " data-sort=\"string\">状态</th>");
            TextOut.Append("<th" + rowspan + ">初考时间</th>");
            TextOut.Append("<th" + rowspan + ">岗位课程数</th>");
            TextOut.Append("<th" + rowspan + " data-sort=\"int\">岗位课程<br>完成总数</th>");
            TextOut.Append("<th" + rowspan + " data-sort=\"int\">岗位剩余<br>课程总数</th>");
            TextOut.Append("<th" + rowspan + " data-sort=\"int\">学习完成率</th>");
            TextOut.Append("<th" + rowspan + ">所有已过岗位</th>");
            TextOut.Append("<th" + rowspan + " data-sort=\"int\">已过岗位数量<i class=\"icon_arrow\"></i></th>");
            TextOut.Append("<th" + rowspan + ">岗位已学习<br>考试未通过</th>");
            TextOut.Append("<th" + rowspan + ">已通过数量</th>");
            if (SelectMonth == "Other")
            {
                TextOut.Append("<th colspan=\"" + WeekNum.ToString() + "\">学习已通过</th></tr>\r\n");
                TextOut.Append("<tr class=\"listTableHead\">\r\n");
                for (int j = 1; j <= WeekNum; j++)
                {
                    TextOut.Append("<th>第" + j.ToString() + "周<br>" + loopStartDate.AddDays(7 * (j - 1)).ToString("M-d") + "—");
                    if (j == WeekNum)
                    {
                        TextOut.Append(endDate.AddDays(-1).ToString("M-d") + "</th>");
                    }
                    else
                    {
                        TextOut.Append(loopStartDate.AddDays((7 * j) - 1).ToString("M-d") + "</th>");
                    }
                }
                TextOut.Append("</tr>\r\n");
            }
            TextOut.Append("</thead>");
            TextOut.Append("<tbody>");

            UserSearchInfo user = new UserSearchInfo();

            user.InStatus        = state;
            user.InGroupID       = groupID;
            user.InWorkingPostID = postIdCondition;
            user.InStudyPostID   = studyPostIdCondition; //只显示该学习岗位下的人员
            if (isGroupCompany)
            {
                user.InCompanyID = CompanyBLL.ReadCompanyIdList(companyID.ToString());
                //user.StudyPostIdCondition = "45";//集团打开默认显示学习岗位
            }
            else
            {
                user.InCompanyID = companyID.ToString();
            }
            if (rzDate == 1)
            {
                if (rz == 0)
                {
                    user.Condition = "[id] not in (select [userid] from [_passpost] where [CreateDate]<='" + endDate + "' and [isrz]=1 and [_passpost].[postid] in (select [postid] from [_post]))";
                }
                else if (rz == 1)
                {
                    user.Condition = "[id] in (select [userid] from [_passpost] where [CreateDate]<='" + endDate + "' and [isrz]=1 and [_passpost].[postid] in (select [postid] from [_post]))";
                }
            }
            else if (rzDate == 0)
            {
                if (rz == 0)
                {
                    user.Condition = "[id] not in (select [userid] from [_passpost] where [CreateDate]>='" + startDate + "' And [CreateDate]<='" + endDate + "' and [isrz]=1 and [_passpost].[postid] in (select [postid] from [_post]))";
                }
                else if (rz == 1)
                {
                    user.Condition = "[id] in (select [userid] from [_passpost] where [CreateDate]>='" + startDate + "' And [CreateDate]<='" + endDate + "' and [isrz]=1 and [_passpost].[postid] in (select [postid] from [_post]))";
                }
            }
            //user.Condition = string.IsNullOrEmpty(user.Condition) ? "Order by [CompanyID] Desc" : user.Condition + " Order by [CompanyID] Desc";
            //user.PostIdCondition = PostIdStr;
            List <UserInfo> userList = UserBLL.SearchReportUserList(user);//UserBLL.SearchUserList(user);

            //把公司所有员工的第一次考试记录都一起调起
            List <TestPaperReportInfo> userFirstTestRecordList = TestPaperBLL.ReadTheFirstRecordList(user.InCompanyID);

            //把公司所有员工的考试记录都一起调起
            TestPaperInfo TestPaperModel = new TestPaperInfo();

            //if (!string.IsNullOrEmpty(company.PostStartDate.ToString()))
            //    TestPaperModel.TestMinDate = Convert.ToDateTime(company.PostStartDate);
            TestPaperModel.TestMaxDate        = endDate;
            TestPaperModel.CompanyIdCondition = user.InCompanyID;
            //TestPaperModel.Field = "UserID";
            TestPaperModel.Condition = "[UserID] in (select [ID] from [_User] where [CompanyID] in (" + user.InCompanyID + ")";
            if (!string.IsNullOrEmpty(groupID))
            {
                TestPaperModel.Condition += " and [GroupID] in (" + groupID + ")";
            }
            if (!string.IsNullOrEmpty(postIdCondition))
            {
                TestPaperModel.Condition += " and [WorkingPostID] in (" + postIdCondition + ")";
            }
            if (!string.IsNullOrEmpty(studyPostIdCondition))
            {
                TestPaperModel.Condition += " and [StudyPostId] in (" + studyPostIdCondition + ")";
            }
            if (!string.IsNullOrEmpty(state))
            {
                TestPaperModel.Condition += " and [Status] in (" + state + ")";
            }
            TestPaperModel.Condition += ")";
            List <TestPaperInfo> TestPaperList = TestPaperBLL.NewReadList(TestPaperModel);

            foreach (UserInfo Info in userList)
            {
                int PostId = int.MinValue;
                PostId = Info.StudyPostID;
                PostInfo PostModel = PostBLL.ReadPost(Info.StudyPostID);
                if (PostModel != null) //排除掉没有设置岗位的人
                {
                    //string PassCateId = TestPaperBLL.ReadListStr(Info.ID, endDate, 1);
                    //string NoPassCateId = TestPaperBLL.ReadListStr(Info.ID, endDate, 0);
                    //筛选出当前用户ID的成绩列表
                    List <TestPaperInfo> currentUserPaperList       = TestPaperList.FindAll(delegate(TestPaperInfo TempModel) { return(TempModel.UserId == Info.ID); });
                    List <TestPaperInfo> currentUserPassPaperList   = currentUserPaperList.FindAll(delegate(TestPaperInfo TempModel) { return(TempModel.IsPass == 1); });
                    List <TestPaperInfo> currentUserNoPassPaperList = currentUserPaperList.FindAll(delegate(TestPaperInfo TempModel) { return(TempModel.IsPass == 0); });
                    string PassCateId   = TestPaperBLL.ReadCourseIDStr(currentUserPassPaperList);
                    string NoPassCateId = TestPaperBLL.ReadCourseIDStr(currentUserNoPassPaperList);

                    //从未通过的记录中去除后期又补考通过的记录
                    NoPassCateId = StringHelper.SubString(NoPassCateId, PassCateId);
                    int PostCourseNum   = 0;
                    int PassCourseNum   = 0;
                    int NoPassCourseNum = 0;

                    //岗位下所有已过级别的岗位课程
                    //if (isGroupCompany)
                    //    CompanyBrandId = CompanyBLL.ReadCompany(Info.CompanyID).BrandId;
                    string AllPostPlan = PostBLL.ReadPostCourseID(Info.CompanyID, Info.StudyPostID);//PostBLL.ReadPostCourseID(Info.StudyPostID, CompanyBrandId);

                    if (string.IsNullOrEmpty(AllPostPlan))
                    {
                        PostCourseNum = 0;
                    }
                    else
                    {
                        PostCourseNum = AllPostPlan.Split(',').Length;
                    }
                    string PassPostCateId   = StringHelper.EqualString(PassCateId, AllPostPlan);
                    string NoPassPostCateId = StringHelper.EqualString(AllPostPlan, NoPassCateId);
                    if (string.IsNullOrEmpty(PassPostCateId))
                    {
                        PassCourseNum = 0;
                    }
                    else
                    {
                        PassCourseNum = PassPostCateId.Split(',').Length;
                    }

                    //选取时间段内
                    if (rzDate == 0)
                    {
                        //时间段内的学习中的岗位课程补丁,去掉即为到截止时间所有的学习中的岗位课程
                        if (SelectMonth == "Other")
                        {
                            NoPassPostCateId = StringHelper.EqualString(NoPassPostCateId, TestPaperBLL.ReadCourseIDStr(currentUserNoPassPaperList.FindAll(delegate(TestPaperInfo TempModel) { return(TempModel.TestDate >= startDate && TempModel.TestDate <= endDate); })));
                        }
                        //补丁结束
                    }

                    if (string.IsNullOrEmpty(NoPassPostCateId))
                    {
                        NoPassCourseNum = 0;
                    }
                    else
                    {
                        NoPassCourseNum = NoPassPostCateId.Split(',').Length;
                    }

                    //如果公司ID不同,再次获取公司信息,减少重复操作
                    if (Info.CompanyID != company.CompanyId)
                    {
                        company = CompanyBLL.ReadCompany(Info.CompanyID);
                    }
                    string PastPassCourse = string.Empty;
                    PeoperNum = PeoperNum + 1;
                    TextOut.Append("<tr class=\"listTableMain\">\r\n");
                    TextOut.Append("<td>" + PeoperNum + "</td>");
                    if (isGroupCompany)
                    {
                        TextOut.Append("<td>" + company.CompanySimpleName + "</td>");
                    }
                    TextOut.Append("<td>" + Info.RealName + "</td>");
                    if (!string.IsNullOrEmpty(Info.PostName))
                    {
                        TextOut.Append("<td>" + Info.PostName + "</td>");
                    }
                    else
                    {
                        TextOut.Append("<td>" + PostBLL.ReadPost(Info.WorkingPostID).PostName + "</td>");
                    }
                    TextOut.Append("<td>" + PostModel.PostName + "</td>");
                    TextOut.Append("<td>" + EnumHelper.ReadEnumChineseName <UserState>(Info.Status) + "</td>");
                    //DateTime firstTestDate = TestPaperBLL.ReadTheOldTestPaperInfo(Info.ID).TestDate;
                    TestPaperReportInfo currentUserFirstTestRecord = userFirstTestRecordList.Find(delegate(TestPaperReportInfo tempModel) { return(tempModel.UserID == Info.ID); });
                    if (currentUserFirstTestRecord != null)
                    {
                        TextOut.Append("<td>" + currentUserFirstTestRecord.TestDate.ToString("d") + "</td>");
                    }
                    else
                    {
                        TextOut.Append("<td>&nbsp;</td>");
                    }
                    TextOut.Append("<td>" + PostCourseNum.ToString() + "</td>");
                    TextOut.Append("<td>" + PassCourseNum.ToString() + "</td>");
                    TextOut.Append("<td>" + (PostCourseNum - PassCourseNum) + "</td>");
                    if (PostCourseNum > 0)
                    {
                        TextOut.Append("<td>" + (Math.Round((double)PassCourseNum / PostCourseNum, 4) * 100) + "%</td>");
                    }
                    else
                    {
                        TextOut.Append("<td>0</td>");
                    }
                    int passPostNum = 0;
                    if (rzDate == 1)
                    {
                        TextOut.Append("<td>" + PostPassBLL.ReadPassPostName(Info.ID, endDate, ref passPostNum) + "</td>");
                    }
                    else
                    {
                        TextOut.Append("<td>" + PostPassBLL.ReadPassPostName(Info.ID, startDate, endDate, ref passPostNum) + "</td>");
                    }
                    TextOut.Append("<td>" + passPostNum + "</td>");
                    TextOut.Append("<td>" + (NoPassCourseNum) + "</td>");
                    if (rzDate == 0)
                    {
                        List <TestPaperInfo> tempList = currentUserPassPaperList.FindAll(m => m.TestDate >= startDate && m.TestDate <= endDate);
                        if (tempList.Count > 0)
                        {
                            TextOut.Append("<td>" + TestPaperBLL.ReadCourseIDStr(tempList).Split(',').Length + "</td>");
                        }
                        else
                        {
                            TextOut.Append("<td>0</td>");
                        }
                    }
                    else
                    {
                        TextOut.Append("<td>" + (string.IsNullOrEmpty(PassCateId) ? 0 : PassCateId.Split(',').Length) + "</td>");
                    }
                    if (SelectMonth == "Other")
                    {
                        for (int j = 1; j <= WeekNum; j++)
                        {
                            if (j == WeekNum)
                            {
                                PastPassCourse = StringHelper.EqualString(AllPostPlan, TestPaperBLL.ReadCourseIDStr(currentUserPassPaperList.FindAll(delegate(TestPaperInfo TempModel) { return(TempModel.TestDate >= loopStartDate.AddDays(7 * (j - 1)) && TempModel.TestDate <= endDate); }))); //TestPaperBLL.ReadListStr(Info.ID, loopStartDate.AddDays(7 * (j - 1)), endDate, 1)
                            }
                            else
                            {
                                PastPassCourse = StringHelper.EqualString(AllPostPlan, TestPaperBLL.ReadCourseIDStr(currentUserPassPaperList.FindAll(delegate(TestPaperInfo TempModel) { return(TempModel.TestDate >= loopStartDate.AddDays(7 * (j - 1)) && TempModel.TestDate <= loopStartDate.AddDays(7 * j)); }))); //TestPaperBLL.ReadListStr(Info.ID, loopStartDate.AddDays(7 * (j - 1)), loopStartDate.AddDays(7 * j), 1)
                            }
                            int PastPassCourseNum = 0;
                            if (!string.IsNullOrEmpty(PastPassCourse))
                            {
                                PastPassCourseNum = PastPassCourse.Split(',').Length;
                            }
                            TextOut.Append("<td>" + (PastPassCourseNum) + "</td>");
                        }
                    }
                    else
                    {
                        //计算到上个时间学过的课程数
                        //算法(到现在所有通过的课程-到上个时间点所有完成的课程=时间段内新增课程)
                        //时间段内新增课程与岗位计划相同的部分=时间段内新增课程
                        PastPassCourse = StringHelper.EqualString(AllPostPlan, StringHelper.SubString(PassCateId, TestPaperBLL.ReadCourseIDStr(currentUserPassPaperList.FindAll(delegate(TestPaperInfo TempModel) { return(TempModel.TestDate <= startDate); })))); //TestPaperBLL.ReadListStr(Info.ID, startDate, 1)
                        int PastPassCourseNum = 0;
                        if (!string.IsNullOrEmpty(PastPassCourse))
                        {
                            PastPassCourseNum = PastPassCourse.Split(',').Length;
                        }
                        TextOut.Append("<td>" + (PastPassCourseNum) + "</td>");
                    }
                    TextOut.Append("</tr>\r\n");
                }
            }
            TextOut.Append("</tbody>");
            TextOut.Append("</table>");
            this.ReportList.InnerHtml = TextOut.ToString();
        }
Esempio n. 10
0
        protected override void PageLoad()
        {
            base.PageLoad();
            base.Title = "综合情况统计表";
            base.CheckUserPower("ReadEMSReport", PowerCheckType.Single);

            if (!base.ExistsSonCompany || Action == "Search" || !base.CompareUserPower("ManageGroupCompany", PowerCheckType.Single))
            {
                if (EndDate == DateTime.MinValue)
                {
                    EndDate = DateTime.Today;
                }
                List <CompanyInfo> sonCompanyList = new List <CompanyInfo>();
                if (CompanyID <= 0)
                {
                    CompanyID = base.UserCompanyID;
                }

                CompanyModel = CompanyBLL.ReadCompany(CompanyID);

                if (base.CompareUserPower("ManageGroupCompany", PowerCheckType.Single))
                {
                    //减少使用递归方法的频率
                    if (CompanyID != base.UserCompanyID)
                    {
                        sonCompanyList = CompanyBLL.ReadCompanyListByCompanyId(CompanyBLL.ReadCompanyIdList(CompanyID.ToString()));
                    }
                    else
                    {
                        sonCompanyList = base.SonCompanyList;
                    }
                }
                else
                {
                    sonCompanyList.Add(CompanyModel);
                }

                int           AllPassCourseNum = 0, AllCourseNum = 0, AllUserNum = 0, TotalNum = 0, CompanyNum = 0;
                double        PassAverage = 0.0, PerPassAverage = 0.0, PerAllAverage = 0.0;
                string        NoPassCompanyName = string.Empty, AverageCourseNumCompanyName = string.Empty;
                StringBuilder MonthOut = new StringBuilder();

                MonthOut.Append("<table class=\"evaluation_sheet\">");
                MonthOut.Append("<tr><th colspan=\"11\">" + CompanyModel.CompanyName + " 在职人员数据统计 [");
                if (StartDate != DateTime.MinValue)
                {
                    MonthOut.Append("从" + StartDate.ToString("d"));
                }
                else
                {
                    MonthOut.Append("从项目启动");
                }
                MonthOut.Append("到" + EndDate.ToString("d") + "]</th></tr>");
                MonthOut.Append("<tr>");
                MonthOut.Append("<th>店名</th>");
                MonthOut.Append("<th>项目启动时间</th>");
                MonthOut.Append("<th>系统登记<br />人数</th>");
                MonthOut.Append("<th>累计参加<br />考试人数</th>");
                MonthOut.Append("<th>累计学习<br />考试次数</th>");
                MonthOut.Append("<th>考试通过<br />课程数量</th>");
                MonthOut.Append("<th>人均学习<br />课程数量</th>");
                MonthOut.Append("<th>人均通过<br />课程数量</th>");
                MonthOut.Append("<th>参考人员<br />人均学习<br />课程数量</th>");
                MonthOut.Append("<th>参考人员<br />人均通过<br />课程数量</th>");
                MonthOut.Append("<th>课程考试<br />通过率</th>");
                MonthOut.Append("</tr>");
                EndDate = EndDate.AddDays(1);

                foreach (CompanyInfo _CompanyModel in sonCompanyList)
                {
                    if (_CompanyModel.CompanyId != CompanyID || !base.IsGroupCompany(_CompanyModel.GroupId))
                    {
                        if (!string.IsNullOrEmpty(_CompanyModel.PostStartDate.ToString()) && Convert.ToDateTime(_CompanyModel.PostStartDate.ToString()) < EndDate)
                        {
                            string         UserId = string.Empty;
                            int            PassCourseNum = 0, CourseNum = 0, UserNum = 0, Num = 0;
                            UserSearchInfo userSearch = new UserSearchInfo();
                            userSearch.InCompanyID   = _CompanyModel.CompanyId.ToString();
                            userSearch.StatusNoEqual = (int)UserState.Del;
                            //userSearch.GroupId = 36;
                            List <UserInfo> userList = UserBLL.SearchReportUserList(userSearch);
                            Num = userList.Count;
                            //应考人数(去除在待考分组的人)
                            //int YKNum = userList.FindAll(delegate(UserInfo TempModel) { return TempModel.Status == (int)UserState.Normal; }).Count;
                            //Num = YKNum;

                            TestPaperInfo TestPaperModel = new TestPaperInfo();
                            TestPaperModel.TestMinDate        = StartDate;
                            TestPaperModel.TestMaxDate        = EndDate;
                            TestPaperModel.UserIdCondition    = UserBLL.ReadUserIdStr(userList);
                            TestPaperModel.CompanyIdCondition = _CompanyModel.CompanyId.ToString();
                            List <TestPaperInfo> TempList = TestPaperBLL.NewReadList(TestPaperModel);
                            foreach (TestPaperInfo Info in TempList)
                            {
                                if (!StringHelper.CompareSingleString(UserId, Info.UserId.ToString()))
                                {
                                    UserId += "," + Info.UserId.ToString();
                                }
                                if (Info.IsPass == 1)
                                {
                                    PassCourseNum += 1;
                                }
                            }
                            if (UserId.StartsWith(","))
                            {
                                UserId = UserId.Substring(1);
                            }
                            if (string.IsNullOrEmpty(UserId))
                            {
                                UserNum = 0;
                            }
                            else
                            {
                                UserNum = UserId.Split(',').Length;
                            }
                            CourseNum = TempList.Count;

                            double SinglePassRate; //单店课程通过率
                            if (CourseNum == 0)
                            {
                                SinglePassRate = 0;
                            }
                            else
                            {
                                SinglePassRate = (double)PassCourseNum / (double)CourseNum;
                            }

                            if (SinglePassRate >= 0.22 || _CompanyModel.CompanyId == CompanyID)
                            {
                                CompanyNum       += 1;             //通过率大于22%的公司数量
                                TotalNum         += Num;           //总人数
                                AllUserNum       += UserNum;       //总参加考试人数
                                AllCourseNum     += CourseNum;     //总考试课程数
                                AllPassCourseNum += PassCourseNum; //总通过考试课程数
                            }
                            else
                            {
                                NoPassCompanyName += _CompanyModel.CompanySimpleName + " ";
                            }

                            MonthOut.Append("<tr>");
                            MonthOut.Append("<td>" + _CompanyModel.CompanySimpleName + "</td>");
                            MonthOut.Append("<td>" + Convert.ToDateTime(_CompanyModel.PostStartDate.ToString()).ToString("yyyy年M月") + "</td>");
                            MonthOut.Append("<td>" + Num.ToString() + "</td>");
                            MonthOut.Append("<td>" + UserNum.ToString() + "</td>");
                            MonthOut.Append("<td>" + CourseNum + "</td>");
                            MonthOut.Append("<td>" + PassCourseNum + "</td>");
                            if (Num == 0)
                            {
                                MonthOut.Append("<td>0</td>");
                                MonthOut.Append("<td>0</td>");
                            }
                            else
                            {
                                if (StartDate == DateTime.MinValue || (EndDate - StartDate).Days > 7 || Math.Round(((double)CourseNum / Num), 1) >= 2.2)
                                {
                                    MonthOut.Append("<td>" + Math.Round(((double)CourseNum / Num), 1) + "</td>");
                                }
                                else
                                {
                                    AverageCourseNumCompanyName += _CompanyModel.CompanySimpleName + " ";
                                    MonthOut.Append("<td style=\"background:#FF0000;\">" + Math.Round(((double)CourseNum / Num), 1) + "</td>");
                                }
                                MonthOut.Append("<td>" + Math.Round(((double)PassCourseNum / Num), 1) + "</td>");
                                if (SinglePassRate >= 0.22 || _CompanyModel.CompanyId == CompanyID)
                                {
                                    PerAllAverage  += Math.Round(((double)CourseNum / Num), 1);
                                    PerPassAverage += Math.Round(((double)PassCourseNum / Num), 1);
                                }
                            }
                            //计算参考人员人均值
                            if (UserNum == 0)
                            {
                                MonthOut.Append("<td>0</td>");
                                MonthOut.Append("<td>0</td>");
                            }
                            else
                            {
                                MonthOut.Append("<td>" + Math.Round(((double)CourseNum / UserNum), 1) + "</td>");
                                MonthOut.Append("<td>" + Math.Round(((double)PassCourseNum / UserNum), 1) + "</td>");
                            }
                            if (SinglePassRate >= 0.22 || _CompanyModel.CompanyId == CompanyID)
                            {
                                MonthOut.Append("<td>" + SinglePassRate.ToString("P") + "</td>");
                                PassAverage += SinglePassRate;
                            }
                            else
                            {
                                MonthOut.Append("<td style=\"background:#FF0000;\">" + SinglePassRate.ToString("P") + "</td>");
                            }
                            MonthOut.Append("</tr>");
                        }
                    }
                }
                MonthOut.Append("<tr>");
                MonthOut.Append("<td colspan=\"2\">" + CompanyModel.CompanySimpleName + "有效学习合计</td>");
                MonthOut.Append("<td>" + TotalNum.ToString() + "</td>");
                MonthOut.Append("<td>" + AllUserNum.ToString() + "</td>");
                MonthOut.Append("<td>" + AllCourseNum + "</td>");
                MonthOut.Append("<td>" + AllPassCourseNum + "</td>");
                if (TotalNum == 0)
                {
                    MonthOut.Append("<td>0</td>");
                    MonthOut.Append("<td>0</td>");
                }
                else
                {
                    //MonthOut.Append("<td>" + Math.Round((PerAllAverage / CompanyNum), 1) + "</td>");
                    //MonthOut.Append("<td>" + Math.Round((PerPassAverage / CompanyNum), 1) + "</td>");
                    //MonthOut.Append("<td>" + (PassAverage / CompanyNum).ToString("P") + "</td>");
                    MonthOut.Append("<td>" + Math.Round(((double)AllCourseNum / TotalNum), 1) + "</td>");
                    MonthOut.Append("<td>" + Math.Round(((double)AllPassCourseNum / TotalNum), 1) + "</td>");
                }
                if (AllUserNum == 0)
                {
                    MonthOut.Append("<td>0</td>");
                    MonthOut.Append("<td>0</td>");
                }
                else
                {
                    MonthOut.Append("<td>" + Math.Round(((double)AllCourseNum / AllUserNum), 1) + "</td>");
                    MonthOut.Append("<td>" + Math.Round(((double)AllPassCourseNum / AllUserNum), 1) + "</td>");
                }
                if (AllCourseNum == 0)
                {
                    MonthOut.Append("<td>0</td>");
                }
                else
                {
                    MonthOut.Append("<td>" + ((double)AllPassCourseNum / (double)AllCourseNum).ToString("P") + "</td>");
                }
                MonthOut.Append("</tr>");
                MonthOut.Append("</table>");
                MonthOut.Insert(0, "在孟特EMS考试系统中进行有效学习的人数为 <span style=\"color:#FF0000;\">" + TotalNum.ToString() + " 人</span></li><li>累计进行了 <span style=\"color:#FF0000;\">" + AllCourseNum.ToString() + " 次</span>课程的学习,人均进行了 <span style=\"color:#FF0000;\">" + Math.Round(((double)AllCourseNum / TotalNum), 1) + " 次</span>课程考试</li><li>其中学习通过 <span style=\"color:#FF0000;\">" + AllPassCourseNum + " 门</span>课程考试,人均通过 <span style=\"color:#FF0000;\">" + Math.Round(((double)AllPassCourseNum / TotalNum), 1) + " 门</span>课程</li><li>课程学习的考试通过率为 <span style=\"color:#FF0000;\">" + ((double)AllPassCourseNum / (double)AllCourseNum).ToString("P") + "</span></li></ul>");

                MonthOut.Insert(0, "到" + EndDate.AddDays(-1).ToString("d"));
                if (StartDate != DateTime.MinValue)
                {
                    MonthOut.Insert(0, "从" + StartDate.ToString("d"));
                }
                else
                {
                    MonthOut.Insert(0, "从项目启动");
                }
                if (CompanyModel.GroupId == 1 || CompanyModel.GroupId == 2)
                {
                    MonthOut.Insert(0, "集团");
                }
                else
                {
                    MonthOut.Insert(0, "贵司");
                }
                MonthOut.Insert(0, "<ul class=\"ReportList_count\"><li>");

                MonthOut.Append("<ul class=\"ReportList_count\"><li><font color=\"red\">人均学习课程数量:</font>代表团队对学习重视的程度,越高代表越重视学习,建议<span style=\"color:#FF0000;\">不低于每周人均2.2门课程,每月人均8.5门课程</span>,低于指标者请部门领导对学习加大关注。</li>");
                if (StartDate != DateTime.MinValue && (EndDate - StartDate).Days <= 7 && !string.IsNullOrEmpty(AverageCourseNumCompanyName) && (CompanyModel.GroupId == 1 || CompanyModel.GroupId == 2))
                {
                    MonthOut.Append("<li style=\"color:#3366ff;\">目前人均学习数量低于每周人均2.2门课程的团队有:<span style=\"color:#FF0000;\">" + AverageCourseNumCompanyName + "</span>;请相关领导予以关注。</li>");
                    // else if (string.IsNullOrEmpty(AverageCourseNumCompanyName) && (CompanyModel.GroupId == 1 || CompanyModel.GroupId == 2))
                    MonthOut.Append("<li style=\"color:#3366ff;\">目前有效人均学习数量为:  <span style=\"color:#FF0000;\">" + Math.Round(((double)AllCourseNum / TotalNum), 1) + " 次</span>,");
                    if (Math.Round(((double)AllCourseNum / TotalNum), 1) >= 2.2)
                    {
                        MonthOut.Append("表现良好,请再接再厉。</li>");
                    }
                    else
                    {
                        MonthOut.Append("请相关领导予以关注。</li>");
                    }
                }
                MonthOut.Append("<li><font color=\"red\">课程考试通过率:</font>通过率高代表团队学习认真,若<span style=\"color:#FF0000;\">通过率低于22%</span>,表示学员没有学习课程,只是通过不断考试来<span style=\"color:#FF0000;\">试图懵过考核</span>,请部门领导制止不当的学习行为。</li>");
                if (!string.IsNullOrEmpty(NoPassCompanyName) && (CompanyModel.GroupId == 1 || CompanyModel.GroupId == 2))
                {
                    MonthOut.Append("<li style=\"color:#3366ff;\">目前通过率低于22%的团队有: <span style=\"color:#FF0000;\">" + NoPassCompanyName + "</span>,请相关领导予以关注,以上4S店视为无效学习,全部数据不列入集团学习效果统计。</li>");
                }
                else if (string.IsNullOrEmpty(NoPassCompanyName) && (CompanyModel.GroupId == 1 || CompanyModel.GroupId == 2))
                {
                    MonthOut.Append("<li style=\"color:#3366ff; \">目前通过率为: <span style=\"color:#FF0000;\">" + ((double)AllPassCourseNum / (double)AllCourseNum).ToString("P") + "</span>,表现良好,请再接再厉。</li>");
                }
                MonthOut.Append("</ul>");

                //添加通过岗位报表
                MonthOut.Append("<div class=\"split_line\"></div>");
                MonthOut.Append("<table class=\"evaluation_sheet\">");
                MonthOut.Append("<tr><th colspan=\"9\">" + CompanyModel.CompanyName + " 岗位资质认证统计 [");
                if (StartDate != DateTime.MinValue)
                {
                    MonthOut.Append("从" + StartDate.ToString("d"));
                }
                else
                {
                    MonthOut.Append("从项目启动");
                }
                MonthOut.Append("到" + EndDate.AddDays(-1).ToString("d") + "]</th></tr>");
                MonthOut.Append("<tr>");
                MonthOut.Append("<th>店名</th>");
                MonthOut.Append("<th>姓名</th>");
                MonthOut.Append("<th>在职岗位</th>");
                MonthOut.Append("<th>已通过的<br />认证岗位</th>");
                //MonthOut.Append("<th>岗位考核<br />课程数量</th>");
                MonthOut.Append("<th>累计通过<br />岗位数量</th>");
                MonthOut.Append("<th>目前正在<br />学习岗位</th>");
                MonthOut.Append("</tr>");
                foreach (CompanyInfo _CompanyModel in sonCompanyList)
                {
                    if (_CompanyModel.State != 0)
                    {
                        continue;
                    }
                    if (_CompanyModel.CompanyId != CompanyID || !base.IsGroupCompany(_CompanyModel.GroupId))
                    {
                        PostPassInfo PostPassModel = new PostPassInfo();
                        PostPassModel.SearchStartDate = StartDate;
                        PostPassModel.CreateDate      = EndDate;
                        List <ReportPostPassInfo> PostPassList = PostPassBLL.PostPassReportList(PostPassModel, _CompanyModel.CompanyId.ToString());
                        foreach (ReportPostPassInfo Info in PostPassList)
                        {
                            MonthOut.Append("<tr>");
                            MonthOut.Append("<td>" + _CompanyModel.CompanySimpleName + "</td>");
                            MonthOut.Append("<td>" + Info.RealName + "</td>");
                            if (string.IsNullOrEmpty(Info.WorkingPostName))
                            {
                                MonthOut.Append("<td>" + PostBLL.ReadPost(Info.WorkingPostId).PostName + "</td>");
                            }
                            else
                            {
                                MonthOut.Append("<td>" + Info.WorkingPostName + "</td>");
                            }
                            MonthOut.Append("<td>" + Info.PassPostName + "</td>");
                            MonthOut.Append("<td>" + Info.PassPostNum.ToString() + "</td>");
                            MonthOut.Append("<td>" + PostBLL.ReadPost(Info.StudyPostId).PostName + "</td>");
                            MonthOut.Append("</tr>");
                        }
                    }
                }
                MonthOut.Append("</table>");

                ReportContentHtml  = MonthOut.ToString();
                ReportContentHtml += HistoryData(sonCompanyList, EndDate);
            }
        }