Esempio n. 1
0
        /// <summary>
        /// 根据ID,获取整个评分表的JSON格式数据
        /// </summary>
        /// <param name="rtid"></param>
        /// <returns></returns>
        private string GetJsonStrByRtid(int rtid)
        {
            int totalCount = 0;

            Entities.QS_RulesTable QsObject = BLL.QS_RulesTable.Instance.GetQS_RulesTable(rtid);

            Entities.QueryQS_Category queryC = new Entities.QueryQS_Category();
            queryC.QS_RTID = rtid;
            DataTable DtCategory = BLL.QS_Category.Instance.GetQS_Category(queryC, "", 1, 999999, out totalCount);

            Entities.QueryQS_Item queryI = new Entities.QueryQS_Item();
            queryI.QS_RTID = rtid;
            DataTable DtItem = BLL.QS_Item.Instance.GetQS_Item(queryI, "", 1, 999999, out totalCount);

            Entities.QueryQS_Standard queryS = new Entities.QueryQS_Standard();
            queryS.QS_RTID = rtid;
            DataTable DtStandard = BLL.QS_Standard.Instance.GetQS_Standard(queryS, "", 1, 999999, out totalCount);

            Entities.QueryQS_Marking queryM = new Entities.QueryQS_Marking();
            queryM.QS_RTID = rtid;
            DataTable DtMarking = BLL.QS_Marking.Instance.GetQS_Marking(queryM, "", 1, 999999, out totalCount);

            Entities.QueryQS_DeadOrAppraisal queryD = new Entities.QueryQS_DeadOrAppraisal();
            queryD.QS_RTID = rtid;
            DataTable DtDead = BLL.QS_DeadOrAppraisal.Instance.GetQS_DeadOrAppraisal(queryD, "", 1, 999999, out totalCount);

            string jsonStr = GetJsonStrByDataTable(QsObject, DtCategory, DtItem, DtStandard, DtMarking, DtDead);

            return(jsonStr);
        }
        //评分型导出
        private string ExportByRatingType(int qs_rtid)
        {
            StringBuilder returnStr = new StringBuilder();

            returnStr.Append("<table borderColor=#000000 height=40 cellPadding=1 align=center border=1>");
            DataTable dtCategory = BLL.QS_Category.Instance.GetQS_CategoryNameAndItemNum(qs_rtid);

            #region 表头
            returnStr.Append("<tr>");
            string rowspan = "";
            if (dtCategory != null && dtCategory.Rows.Count > 0)
            {
                rowspan = " rowspan='2' ";
            }
            returnStr.Append("<td " + rowspan + " >序号</td>");
            returnStr.Append("<td " + rowspan + " >对话时间</td>");
            returnStr.Append("<td " + rowspan + " >评分时间</td>");
            returnStr.Append("<td " + rowspan + " >员工姓名</td>");
            returnStr.Append("<td " + rowspan + " >对话ID</td>");
            returnStr.Append("<td " + rowspan + " >消息次数</td>");
            returnStr.Append("<td " + rowspan + " >所属分组</td>");
            //returnStr.Append("<td " + rowspan + " >分类</td>");
            returnStr.Append("<td " + rowspan + " >工单ID</td>");
            returnStr.Append("<td " + rowspan + " >任务状态</td>");

            #region 评分分类名称
            if (dtCategory != null)
            {
                foreach (DataRow dr in dtCategory.Rows)
                {
                    returnStr.Append("<td colspan=" + dr["ItemNum"] + " style='text-align:center'>" + dr["Name"] + "</td>");
                }
            }
            #endregion
            returnStr.Append("<td " + rowspan + " >致命项数</td>");
            returnStr.Append("<td " + rowspan + " >总分</td>");
            returnStr.Append("<td " + rowspan + " >质检点评</td>");

            returnStr.Append("</tr>");
            #endregion

            #region 评分项
            Entities.QueryQS_Item itemQuery = new Entities.QueryQS_Item();
            itemQuery.QS_RTID = qs_rtid;
            int       itemTotalCount = 0;
            DataTable dtItem         = BLL.QS_Item.Instance.GetQS_Item(itemQuery, "QS_IID ASC", 1, -1, out itemTotalCount);
            if (itemTotalCount > 0)
            {
                returnStr.Append("<tr>");
                foreach (DataRow dr in dtItem.Rows)
                {
                    returnStr.Append("<td>" + dr["ItemName"] + "</td>");
                }
                returnStr.Append("</tr>");
            }
            #endregion

            #region 输出统计结果
            DataTable dtDetails = GetResultDetail(qs_rtid);
            DataTable dtResult  = GetResult();
            for (int j = 0; j < dtResult.Rows.Count; j++)
            {
                returnStr.Append("<tr>");
                DataRow dr = dtResult.Rows[j];
                //序号
                returnStr.Append("<td>" + (j + 1) + "</td>");
                DateTime dt;
                //对话时间
                if (DateTime.TryParse(dr["BeginTime"].ToString(), out dt))
                {
                    returnStr.Append("<td style='vnd.ms-excel.numberformat:@'>" + dt.ToString("yyyy-MM-dd HH:mm:ss") + "</td>");
                }
                else
                {
                    returnStr.Append("<td></td>");
                }
                //评分时间
                if (DateTime.TryParse(dr["Result_CreateTime"].ToString(), out dt))
                {
                    returnStr.Append("<td style='vnd.ms-excel.numberformat:@'>" + dt.ToString("yyyy-MM-dd HH:mm:ss") + "</td>");
                }
                else
                {
                    returnStr.Append("<td></td>");
                }
                //坐席
                returnStr.Append("<td>" + dr["AgentUserName"] + "</td>");
                //会话id
                returnStr.Append("<td style='vnd.ms-excel.numberformat:@'>" + dr["CSID"] + "</td>");
                //消息次数
                returnStr.Append("<td>" + dr["Count"].ToString() + "</td>");
                //所属分组
                returnStr.Append("<td>" + dr["BGName"] + "</td>");
                //工单ID
                returnStr.Append("<td>" + dr["OrderID"] + "</td>");
                //任务状态
                string statusname = BLL.Util.GetEnumOptText(typeof(QSResultStatus), CommonFunction.ObjectToInteger(dr["Result_Status"]));
                returnStr.Append("<td>" + statusname + "</td>");

                //成绩明细
                string  qsrid      = dr["QS_RID"].ToString();
                decimal totalScore = 100;
                if (scoretype == "3")
                {
                    totalScore = 0;
                }
                int deadNum = 0;
                for (int k = 0; k < dtItem.Rows.Count; k++)
                {
                    string qsiid = dtItem.Rows[k]["QS_IID"].ToString();
                    if (qsrid != "" && qsiid != "")
                    {
                        DataRow[] resultItem = dtDetails.Select(" QS_RID=" + qsrid + " and QS_IID=" + qsiid);
                        if (resultItem.Length > 0)
                        {
                            decimal enscore = 0;
                            if (scoretype == "3")
                            {
                                for (int p = 0; p < resultItem.Length; p++)
                                {
                                    if (resultItem[p]["Score"] != null && resultItem[p]["Score"].ToString() != string.Empty)
                                    {
                                        //单项扣的分数和
                                        enscore += decimal.Parse(resultItem[p]["Score"].ToString());
                                    }
                                }
                            }
                            else
                            {
                                for (int p = 0; p < resultItem.Length; p++)
                                {
                                    if (resultItem[p]["enscore"] != null && resultItem[p]["enscore"].ToString() != string.Empty)
                                    {
                                        //单项扣的分数和
                                        enscore += decimal.Parse(resultItem[p]["enscore"].ToString());
                                    }
                                }
                                //比较这个总和是否大于整个选项的分值,如果扣分大于选项最大值,则取最大选项值
                                decimal itemMaxScore = decimal.Parse(dtItem.Rows[k]["Score"].ToString());
                                if (System.Math.Abs(enscore) > itemMaxScore)
                                {
                                    enscore = itemMaxScore * -1;
                                }
                            }
                            returnStr.Append("<td>" + enscore + "</td>");

                            totalScore += enscore;
                        }
                        else
                        {
                            //没有值则单项为空
                            returnStr.Append("<td></td>");
                            //判断是不是有致命项
                            DataRow[] resultItem1 = dtDetails.Select(" QS_RID=" + qsrid + " and QS_IID=-2");
                            if (resultItem1.Length > 0)
                            {
                                if (resultItem1[0]["deadNum"] != null && resultItem1[0]["deadNum"].ToString() != string.Empty)
                                {
                                    deadNum = int.Parse(resultItem1[0]["deadNum"].ToString());
                                }
                            }
                        }
                    }
                    else
                    {
                        returnStr.Append("<td></td>");
                    }
                }
                //是否有致命项
                if (statusname != "待评分")
                {
                    returnStr.Append("<td>" + deadNum + "</td>");
                }
                else
                {
                    returnStr.Append("<td></td>");
                }

                if (deadNum == 1)
                {
                    //有致命项,分数直接为0
                    returnStr.Append("<td>0</td>");
                }
                else
                {
                    //否则分数为统计分数
                    if (statusname != "待评分")
                    {
                        returnStr.Append("<td>" + totalScore + "</td>");
                    }
                    else
                    {
                        returnStr.Append("<td></td>");
                    }
                }
                //质检评价
                returnStr.Append("<td>" + dr["QualityAppraisal"] + "</td>");
                returnStr.Append("</tr>");
            }
            #endregion

            returnStr.Append("</table>");
            return(returnStr.ToString());
        }