duhongyu il y a 4 ans
Parent
commit
7a3977341a

+ 2 - 0
CallCenterApi/CallCenterApi.Interface/CallCenterApi.Interface/CallCenterApi.Interface.csproj

@@ -206,6 +206,7 @@
206 206
     <Compile Include="Controllers\Quality\IndexBaseController.cs" />
207 207
     <Compile Include="Controllers\Quality\IndexCategoryController.cs" />
208 208
     <Compile Include="Controllers\Quality\QCManageController.cs" />
209
+    <Compile Include="Controllers\Quality\QCResultController.cs" />
209 210
     <Compile Include="Controllers\Sms\SmsNewController.cs" />
210 211
     <Compile Include="Controllers\WebChart\InfoController.cs" />
211 212
     <Compile Include="Controllers\information\InternalMessagesController.cs" />
@@ -342,6 +343,7 @@
342 343
   </ItemGroup>
343 344
   <ItemGroup>
344 345
     <Folder Include="App_Data\" />
346
+    <Folder Include="Views\QCResult\" />
345 347
   </ItemGroup>
346 348
   <ItemGroup>
347 349
     <ProjectReference Include="..\..\..\CallCenterCommon\CallCenter.QuartzService\CallCenter.QuartzService.csproj">

+ 322 - 0
CallCenterApi/CallCenterApi.Interface/CallCenterApi.Interface/Controllers/Quality/QCResultController.cs

@@ -0,0 +1,322 @@
1
+using CallCenter.Utility;
2
+using CallCenterApi.DB;
3
+using CallCenterApi.Interface.Controllers.Base;
4
+using System;
5
+using System.Collections.Generic;
6
+using System.Data;
7
+using System.Linq;
8
+using System.Web;
9
+using System.Web.Mvc;
10
+
11
+namespace CallCenterApi.Interface.Controllers.Quality
12
+{
13
+    [Authority]
14
+    public class QCResultController : BaseController
15
+    {
16
+        //质检报表
17
+
18
+        List<string> arlist = new List<string>();
19
+        DataTable dtNew = new DataTable();
20
+        //获取表头
21
+        public ActionResult GetColumnList(string isext)
22
+        {
23
+           
24
+            List<Model.QCModel> qclist = new List<Model.QCModel>();
25
+
26
+            #region 加载固定项
27
+            DataColumn dc1 = new DataColumn("QCName", Type.GetType("System.String"));
28
+            DataColumn dc2 = new DataColumn("UserName", Type.GetType("System.String"));
29
+            DataColumn dc3 = new DataColumn("UserCode", Type.GetType("System.String"));
30
+            DataColumn dc4 = new DataColumn("ZJCount", Type.GetType("System.String"));
31
+            dtNew.Columns.Add(dc1);
32
+            dtNew.Columns.Add(dc2);
33
+            dtNew.Columns.Add(dc3);
34
+            dtNew.Columns.Add(dc4);
35
+            Model.QCModel qcm1 = new Model.QCModel();
36
+            qcm1.Qcid = "cpr1";
37
+            qcm1.Qcname = "测评人";
38
+            qcm1.Rowspan = "4";
39
+            Model.QCModel qcm2 = new Model.QCModel();
40
+            qcm2.Qcid = "xm2";
41
+            qcm2.Qcname = "姓名";
42
+            qcm2.Rowspan = "4";
43
+            Model.QCModel qcm3 = new Model.QCModel();
44
+            qcm3.Qcid = "gh3";
45
+            qcm3.Qcname = "工号";
46
+            qcm3.Rowspan = "4";
47
+            Model.QCModel qcm4 = new Model.QCModel();
48
+            qcm4.Qcid = "zjts4";
49
+            qcm4.Qcname = "质检条数";
50
+            qcm4.Rowspan = "4";
51
+            qclist.Add(qcm1);
52
+            qclist.Add(qcm2);
53
+            qclist.Add(qcm3);
54
+            qclist.Add(qcm4);
55
+            #endregion
56
+            Model.QCModel qcmzf = new Model.QCModel();
57
+            qcmzf.Qcid = "zf999";
58
+            qcmzf.Qcname = "总分";
59
+            qcmzf.Rowspan = "3";
60
+
61
+            object obj = null;
62
+
63
+            DataSet ds = DbHelperSQL.Query("select F_CategoryId,F_CategoryName,F_ParentId from T_QC_IndexCategory where F_DeleteFlag=0 order by F_CategoryId asc");
64
+            DataTable dsConten = DbHelperSQL.Query("select F_IndexId,F_Content,F_Title,F_Score,F_CategoryId from T_QC_IndexBase order by F_IndexId asc").Tables[0];
65
+            if (ds != null && ds.Tables.Count > 0)
66
+            {
67
+                DataTable dt = ds.Tables[0];
68
+                DataRow[] drlist = dt.Select("F_ParentId=0");
69
+                if (drlist != null)
70
+                {
71
+                    int ctsc = 0;//总分
72
+                    for (int i = 0; i < drlist.Length; i++)
73
+                    {
74
+                        obj = DbHelperSQL.GetSingle("select count(*) from T_QC_IndexBase where F_CategoryId in(select F_CategoryId from T_QC_IndexCategory where F_ParentId=" + drlist[i]["F_CategoryId"] + ")");
75
+
76
+                        Model.QCModel qcml = new Model.QCModel();
77
+                        qcml.Qcid = drlist[i]["F_CategoryId"].ToString();
78
+                        qcml.Qcname = drlist[i]["F_CategoryName"].ToString();
79
+                        qcml.Colspan = obj.ToString();
80
+
81
+                        //strColom1 += "<td colspan='" + obj.ToString() + "' style='height: 18px; background-color: #D5EDFE; border-left: 1px solid #CCCCCC; border-right: 1px solid #CCCCCC; border-top: 1px solid #CCCCCC; border-bottom: 1px solid #CCCCCC; padding: 3px 3px 3px 3px; text-align: center;'>" + drlist[i]["F_CategoryName"] + "</td>";
82
+                        //strColom1 += "<td rowspan='3' style='height: 18px; background-color: #D5EDFE; border-left: 1px solid #CCCCCC; border-right: 1px solid #CCCCCC; border-top: 1px solid #CCCCCC; border-bottom: 1px solid #CCCCCC; padding: 3px 3px 3px 3px; text-align: center;'>分项得分</td>";
83
+
84
+                        DataRow[] drlistnew = dt.Select("F_ParentId=" + drlist[i]["F_CategoryId"]);
85
+                        if (drlistnew != null && drlist.Length > 0)
86
+                        {
87
+                            List<Model.QCModel> qcclist = new List<Model.QCModel>();
88
+                            int sc = 0;
89
+                            string strCatid = "";
90
+                            for (int n = 0; n < drlistnew.Length; n++)
91
+                            {
92
+                                Model.QCModel qccml = new Model.QCModel();
93
+                                obj = DbHelperSQL.GetSingle("select count(*) from T_QC_IndexBase where F_CategoryId=" + drlistnew[n]["F_CategoryId"]);
94
+                                //strColom2 += "<td colspan='" + obj + "' style='height: 18px; background-color: #D5EDFE; border-left: 1px solid #CCCCCC; border-right: 1px solid #CCCCCC; border-top: 1px solid #CCCCCC; border-bottom: 1px solid #CCCCCC; padding: 3px 3px 3px 3px; text-align: center;'>" + drlistnew[n]["F_CategoryName"] + "</td>";
95
+                                qccml.Qcid = drlist[i]["F_CategoryId"].ToString() + "-" + drlistnew[n]["F_CategoryId"].ToString();
96
+                                qccml.Qcname = drlistnew[n]["F_CategoryName"].ToString();
97
+                                qccml.Colspan = obj.ToString();
98
+
99
+                                DataRow[] drContent = dsConten.Select("F_CategoryId=" + drlistnew[n]["F_CategoryId"]);
100
+                                if (drContent != null && drContent.Length > 0)
101
+                                {
102
+                                    List<Model.QCModel> qccllist = new List<Model.QCModel>();
103
+                                    for (int m = 0; m < drContent.Length; m++)
104
+                                    {
105
+                                        Model.QCModel qccmll = new Model.QCModel();
106
+                                        qccmll.Qcid = drlist[i]["F_CategoryId"].ToString() + "-" + drlistnew[n]["F_CategoryId"].ToString() + "-" + drContent[m]["F_IndexId"].ToString();
107
+                                        qccmll.Qcname = drContent[m]["F_Title"].ToString();
108
+                                        qccmll.Qcscore = drContent[m]["F_Score"].ToString();
109
+                                        //strColom3 += "<td  align='center'style='border-top: 0px solid #CCCCCC; border-bottom: 1px solid #CCCCCC; border-left: 1px solid #CCCCCC; border-right: 1px solid #CCCCCC; padding-left: 2px; height: 18px; padding-top: 3px; padding-bottom: 3px;'>" + drContent[m]["F_Title"] + "</td>";
110
+                                        //strColom4 += "<td  align='center'style='border-top: 0px solid #CCCCCC; border-bottom: 1px solid #CCCCCC; border-left: 1px solid #CCCCCC; border-right: 1px solid #CCCCCC; padding-left: 2px; height: 18px; padding-top: 3px; padding-bottom: 3px;'>" + drContent[m]["F_Score"] + "</td>";
111
+                                        if (!string.IsNullOrEmpty(drContent[m]["F_Score"].ToString()))
112
+                                        {
113
+                                            sc += int.Parse(drContent[m]["F_Score"].ToString());
114
+                                        }
115
+
116
+                                        strCatid += drContent[m]["F_IndexId"] + ",";
117
+
118
+                                        DataColumn dc = new DataColumn("Q" + drContent[m]["F_IndexId"].ToString(), Type.GetType("System.String"));
119
+                                        dtNew.Columns.Add(dc);
120
+
121
+                                        qccllist.Add(qccmll);
122
+                                    }
123
+
124
+                                    qccml.Qclist = qccllist;
125
+                                }
126
+                                qcclist.Add(qccml);
127
+                            }
128
+
129
+                            if (strCatid != "")
130
+                            {
131
+                                strCatid.Substring(0, strCatid.Length - 1);
132
+                            }
133
+                            arlist.Add(strCatid); //每一组的题id记下来,用在分数总和上。
134
+                                                  //strColom4 += "<td  align='center'style='border-top: 0px solid #CCCCCC; border-bottom: 1px solid #CCCCCC; border-left: 1px solid #CCCCCC; border-right: 1px solid #CCCCCC; padding-left: 2px; height: 18px; padding-top: 3px; padding-bottom: 3px;'>" + sc.ToString() + "</td>";
135
+                            ctsc += sc;
136
+
137
+
138
+                            qcml.Qclist = qcclist;
139
+                            qclist.Add(qcml);
140
+
141
+                            Model.QCModel qcml1 = new Model.QCModel();
142
+                            qcml1.Qcid = "fx" + drlist[i]["F_CategoryId"].ToString();
143
+                            qcml1.Qcname = "分项得分";
144
+                            qcml1.Rowspan = "3";
145
+                            qcml1.Qcscore = sc.ToString();
146
+                            qclist.Add(qcml1);
147
+                            DataColumn dcdf = new DataColumn("df" + i.ToString(), Type.GetType("System.String"));
148
+                            dtNew.Columns.Add(dcdf);
149
+                        }
150
+
151
+                    }
152
+
153
+                    qcmzf.Qcscore = ctsc.ToString();
154
+                }
155
+
156
+            }
157
+
158
+            qclist.Add(qcmzf);
159
+            DataColumn dczf = new DataColumn("AllScore", Type.GetType("System.String"));
160
+            dtNew.Columns.Add(dczf);
161
+            if (isext != null && isext.Trim() != "")
162
+            {
163
+                //导出增加显示问题和建议
164
+                Model.QCModel qcmlzj1 = new Model.QCModel();
165
+                Model.QCModel qcmlzj2 = new Model.QCModel();
166
+                qcmlzj1.Qcid = "wt99";
167
+                qcmlzj1.Qcname = "问题";
168
+                qcmlzj1.Rowspan = "4";
169
+                qclist.Add(qcmlzj1);
170
+                qcmlzj2.Qcid = "jy99";
171
+                qcmlzj2.Qcname = "建议";
172
+                qcmlzj2.Rowspan = "4";
173
+                qclist.Add(qcmlzj2);
174
+                DataColumn dcwt = new DataColumn("Question", Type.GetType("System.String"));
175
+                dtNew.Columns.Add(dcwt);
176
+                DataColumn dcjy = new DataColumn("Advise", Type.GetType("System.String"));
177
+                dtNew.Columns.Add(dcjy);
178
+            }
179
+
180
+            return Success("获取质检表头成功", qclist);
181
+
182
+            
183
+        }
184
+
185
+        //获取数据
186
+        public ActionResult GetDataList(string stime, string endtime)
187
+        {
188
+          
189
+            Model.PageData<object> pagedata = new Model.PageData<object>();
190
+
191
+            string dpt = RequestString.GetQueryString("dpt");
192
+            string isext = RequestString.GetQueryString("isext");
193
+
194
+            GetColumnList(isext);
195
+
196
+            string sqltimeCallRecords = "";
197
+            string strsql = "";
198
+            if (stime != null && stime.Trim() != "")
199
+            {
200
+                sqltimeCallRecords += " and CONVERT(varchar , BeginTime, 120)>=CONVERT(varchar , '" + stime.Trim() + " 00:00:01', 120) ";
201
+            }
202
+            if (endtime != null && endtime.Trim() != "")
203
+            {
204
+                sqltimeCallRecords += " and CONVERT(varchar , BeginTime, 120)<=CONVERT(varchar , '" + endtime.Trim() + " 23:59:59', 120) ";
205
+            }
206
+            if (dpt != null && dpt.ToString() != "")
207
+            {
208
+                strsql = " and UserId in(select F_UserId from T_Sys_UserAccount where F_DeptId=" + dpt.ToString() + ") ";
209
+            }
210
+
211
+            DataSet ds = DbHelperSQL.Query("select *,(select F_UserName from  T_Sys_UserAccount as b where b.F_UserId=a.UserId) as name,(select F_UserCode from  T_Sys_UserAccount as b where b.F_UserId=a.UserId) as wknmb from (select COUNT(*) as ct,UserId from T_Call_CallRecords where F_QCState=1 " + sqltimeCallRecords + strsql + " group by  UserId) as a order by wknmb asc");
212
+            DataTable dtTitle = DbHelperSQL.Query("select F_IndexId from T_QC_IndexBase where F_DeleteFlag=0").Tables[0];
213
+            if (ds != null && ds.Tables.Count > 0)
214
+            {
215
+                DataTable dt = ds.Tables[0];
216
+                string strname = "";
217
+                foreach (DataRow dr in dt.Rows)
218
+                {
219
+                    DataRow drNew = dtNew.NewRow();
220
+
221
+                    object obj = DbHelperSQL.GetSingle("select F_QCUserName from T_Call_CallRecords where UserCode='" + dr["wknmb"] + "' and F_QCState=1 " + sqltimeCallRecords);
222
+                    if (obj != null)
223
+                    {
224
+                        strname = obj.ToString();
225
+                    }
226
+                    else
227
+                    {
228
+                        strname = "";
229
+                    }
230
+                    drNew["QCName"] = strname;
231
+                    drNew["UserName"] = dr["name"].ToString();
232
+                    drNew["UserCode"] = dr["wknmb"].ToString();
233
+
234
+                    int ct = 0;
235
+                    if (dr["ct"] != null && dr["ct"].ToString() != "")
236
+                    {
237
+                        ct = int.Parse(dr["ct"].ToString());//评价数量
238
+                    }
239
+                    drNew["ZJCount"] = dr["ct"].ToString();
240
+
241
+                    double itemfs = 0;//每一大项分数和
242
+                    double ctfs = 0;//总分
243
+
244
+                    for (int i = 0; i < arlist.Count; i++)
245
+                    {
246
+                        string strList = arlist[i];
247
+                        string[] strTitleList = strList.Split(',');
248
+                        foreach (string str in strTitleList)
249
+                        {
250
+                            if (str != "")
251
+                            {
252
+                                double fs = 0;//每一项分数
253
+                                obj = DbHelperSQL.GetSingle("select sum(F_QCScore) from T_QC_IndexRes where CallRecordsId in (select CallRecordsId from T_Call_CallRecords where F_QCState=1 and UserId=" + dr["UserId"] + " " + sqltimeCallRecords + ") and F_IndexId=" + str);
254
+                                if (obj != null && obj.ToString() != "")
255
+                                {
256
+                                    if (ct != 0)
257
+                                    {//评价数量不为0
258
+                                        if (int.Parse(obj.ToString()) % ct == 0)
259
+                                        {
260
+                                            fs = int.Parse(obj.ToString()) / ct; //每一项分数
261
+                                        }
262
+                                        else
263
+                                        {
264
+                                            fs = double.Parse(obj.ToString()) / double.Parse(ct.ToString());
265
+                                        }
266
+                                    }
267
+                                }
268
+                                string mm = "";
269
+                                if (fs.ToString().IndexOf('.') > -1 && fs.ToString().Substring(fs.ToString().IndexOf('.') + 1).Length > 2)
270
+                                {
271
+                                    mm = fs.ToString("0.00");
272
+                                }
273
+                                else
274
+                                {
275
+                                    mm = fs.ToString();
276
+                                }
277
+                                drNew["Q" + str] = mm;
278
+                                itemfs += fs;
279
+                            }
280
+                        }
281
+                        string imm = "";
282
+                        if (itemfs.ToString().IndexOf('.') > -1 && itemfs.ToString().Substring(itemfs.ToString().IndexOf('.') + 1).Length > 2)
283
+                        {
284
+                            imm = itemfs.ToString("0.00");
285
+                        }
286
+                        else
287
+                        {
288
+                            imm = itemfs.ToString();
289
+                        }
290
+                        drNew["df" + i.ToString()] = imm;
291
+                        ctfs += itemfs;
292
+                        itemfs = 0;
293
+                    }
294
+                    drNew["AllScore"] = ((int)ctfs).ToString();
295
+                    if (isext != null && isext.Trim() != "")
296
+                    {
297
+                        string question = "";
298
+                        string advise = "";
299
+                        DataSet dss = DbHelperSQL.Query("select * from T_Call_CallRecords where UserId=" + dr["UserId"] + " and F_QCState=1 " + sqltimeCallRecords);
300
+                        if (dss.Tables[0].Rows.Count > 0)
301
+                        {
302
+                            for (int ii = 0; ii < dss.Tables[0].Rows.Count; ii++)
303
+                            {
304
+                                question += dss.Tables[0].Rows[ii]["F_QCQuestion"].ToString() + ";";
305
+                                advise += dss.Tables[0].Rows[ii]["F_QCAdvise"].ToString() + ";";
306
+                            }
307
+                        }
308
+                        drNew["Question"] = question;
309
+                        drNew["Advise"] = advise;
310
+                    }
311
+                    ctfs = 0;
312
+
313
+                    dtNew.Rows.Add(drNew);
314
+                }
315
+            }
316
+
317
+            return Success("获取质检数据成功", dtNew);
318
+
319
+             
320
+        }
321
+    }
322
+}

+ 1 - 0
CallCenterApi/CallCenterApi.Model/CallCenterApi.Model.csproj

@@ -43,6 +43,7 @@
43 43
   <ItemGroup>
44 44
     <Compile Include="CallResult.cs" />
45 45
     <Compile Include="EmailrReceive.cs" />
46
+    <Compile Include="QCModel.cs" />
46 47
     <Compile Include="Rep_Dept_Assessment.cs" />
47 48
     <Compile Include="SeatGroupInput.cs" />
48 49
     <Compile Include="T_Ask_PagerInfo.cs" />

+ 133 - 0
CallCenterApi/CallCenterApi.Model/QCModel.cs

@@ -0,0 +1,133 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+using System.Threading.Tasks;
6
+
7
+namespace CallCenterApi.Model
8
+{
9
+    public class QCModel
10
+    {
11
+        private string qcid;
12
+        private string qcname;
13
+        private string qcscore;
14
+        private string qcpf;
15
+        private string colspan;
16
+        private string rowspan;
17
+        private List<QCModel> qclist;
18
+
19
+        /// <summary>
20
+        /// QCid
21
+        /// </summary>
22
+        public string Qcid
23
+        {
24
+            get
25
+            {
26
+                return qcid;
27
+            }
28
+
29
+            set
30
+            {
31
+                qcid = value;
32
+            }
33
+        }
34
+
35
+        /// <summary>
36
+        /// QC名称
37
+        /// </summary>
38
+        public string Qcname
39
+        {
40
+            get
41
+            {
42
+                return qcname;
43
+            }
44
+
45
+            set
46
+            {
47
+                qcname = value;
48
+            }
49
+        }
50
+
51
+        /// <summary>
52
+        /// QC分数
53
+        /// </summary>
54
+        public string Qcscore
55
+        {
56
+            get
57
+            {
58
+                return qcscore;
59
+            }
60
+
61
+            set
62
+            {
63
+                qcscore = value;
64
+            }
65
+        }
66
+
67
+        /// <summary>
68
+        /// QC评分
69
+        /// </summary>
70
+        public string Qcpf
71
+        {
72
+            get
73
+            {
74
+                return qcpf;
75
+            }
76
+
77
+            set
78
+            {
79
+                qcpf = value;
80
+            }
81
+        }
82
+
83
+        /// <summary>
84
+        /// QC子类
85
+        /// </summary>
86
+        public List<QCModel> Qclist
87
+        {
88
+            get
89
+            {
90
+                return qclist;
91
+            }
92
+
93
+            set
94
+            {
95
+                qclist = value;
96
+            }
97
+        }
98
+
99
+        /// <summary>
100
+        /// 包含几行
101
+        /// </summary>
102
+        public string Rowspan
103
+        {
104
+            get
105
+            {
106
+                return rowspan;
107
+            }
108
+
109
+            set
110
+            {
111
+                rowspan = value;
112
+            }
113
+        }
114
+
115
+        /// <summary>
116
+        /// 包含几列
117
+        /// </summary>
118
+        public string Colspan
119
+        {
120
+            get
121
+            {
122
+                return colspan;
123
+            }
124
+
125
+            set
126
+            {
127
+                colspan = value;
128
+            }
129
+        }
130
+    }
131
+}
132
+
133
+