浏览代码

工勤人员完工统计

liyuanyuan 3 年之前
父节点
当前提交
a2a99fe0b1

+ 7 - 7
RMYY_CallCenter_Api.QuartzWorker/PushWorkorder.cs

@@ -23,13 +23,13 @@ namespace RMYY_CallCenter_Api.QuartzWorker
23 23
         public void Push(object sender, EventArgs e)
24 24
         {
25 25
 
26
-            WebClient web = new WebClient();
27
-            web.Encoding = Encoding.UTF8;
28
-            string Dataurl = web.DownloadString(api + "FaultRepair/Evaluate");
29
-            string Dataur2 = web.DownloadString(api + "FaultRepair/Automatic");
30
-            string Dataur3 = web.DownloadString(api + "T_Car_WorkOrder/Evaluate");
31
-            string Dataur4 = web.DownloadString(api + "InternalMessages/DingTalkGetMessage");
32
-            string Dataur5 = web.DownloadString(api + "FaultRepair/AutoSendOverTimeMsg");
26
+            //WebClient web = new WebClient();
27
+            //web.Encoding = Encoding.UTF8;
28
+            //string Dataurl = web.DownloadString(api + "FaultRepair/Evaluate");
29
+            //string Dataur2 = web.DownloadString(api + "FaultRepair/Automatic");
30
+            //string Dataur3 = web.DownloadString(api + "T_Car_WorkOrder/Evaluate");
31
+            //string Dataur4 = web.DownloadString(api + "InternalMessages/DingTalkGetMessage");
32
+            //string Dataur5 = web.DownloadString(api + "FaultRepair/AutoSendOverTimeMsg");
33 33
 
34 34
 
35 35
         }

+ 228 - 0
RMYY_CallCenter_Api/Controllers/ReportController.cs

@@ -0,0 +1,228 @@
1
+using RMYY_CallCenter_Api.DB;
2
+using RMYY_CallCenter_Api.Model;
3
+using RMYY_CallCenter_Api.Models;
4
+using RMYY_CallCenter_Api.Models.Enum;
5
+using RMYY_CallCenter_Api.Models.Input;
6
+using RMYY_CallCenter_Api.Utility;
7
+using System;
8
+using System.Collections.Generic;
9
+using System.ComponentModel;
10
+using System.Data;
11
+using System.IO;
12
+using System.Linq;
13
+using System.Reflection;
14
+using System.Web;
15
+using System.Web.Mvc;
16
+
17
+namespace RMYY_CallCenter_Api.Controllers
18
+{
19
+    public class ReportController : BaseController
20
+    {
21
+        private BLL.T_IntegratedScheduling_Base baseBll = new BLL.T_IntegratedScheduling_Base();
22
+        Bll.T_Sys_GongDan gdbll = new Bll.T_Sys_GongDan();
23
+        private Bll.T_Sys_Department departmentBLL = new Bll.T_Sys_Department();
24
+        private static BLL.T_IntegratedScheduling_OperationLog logBll = new BLL.T_IntegratedScheduling_OperationLog();
25
+        private BLL.T_IntegratedScheduling_Detail detailBll = new BLL.T_IntegratedScheduling_Detail();
26
+        private Bll.T_Sys_SystemConfig configBll = new Bll.T_Sys_SystemConfig();
27
+        private BLL.T_IntegratedScheduling_Process proBll = new BLL.T_IntegratedScheduling_Process();
28
+
29
+
30
+        private static InternalMessagesController msg = new InternalMessagesController();
31
+
32
+        //   工勤人员完工统计     综合调度类工单统计:
33
+        //1、筛选项:时间范围、部门、人员、工单类型,可设置显示字段
34
+        //2、列表项:姓名、工号、接单量、处理量、处理效率、超时量、超时率、好评量、好评率、差评量、差评率
35
+        //3、指标说明(需要在表头上增加提示标签,悬浮标签显示对应公式):
36
+        //接单量 = 当前查询范围内已接单的数量;
37
+        //处理量 = 范围内已接单工单中已处理的数量;处理效率 = 处理量/接单量;
38
+        //超时量 = 范围内接单工单并超时未处理的工单;超时率 = 超时量/接单量;
39
+        //好评量/差评量 = 范围内接单工单被好评或差评的数量;
40
+        //好评率/差评率 = 好评量/(好评量 + 差评量)
41
+
42
+        [AllowAnonymous]
43
+        public ActionResult SchedulingReport(string dealman, string starttime = "", string endtime = "", int dealdept = 0, int isdc = 0)
44
+        {
45
+
46
+            int recordCount = 0;
47
+            string sql = $" and F_IsDelete = 0  ";
48
+
49
+            if (!string.IsNullOrEmpty(starttime))
50
+            {
51
+                sql += $" and F_CreateTime>='{starttime}'";
52
+            }
53
+            if (!string.IsNullOrEmpty(endtime))
54
+            {
55
+                sql += $" and F_CreateTime<'{endtime}'";
56
+            }
57
+
58
+            if (dealdept > 0)
59
+            {
60
+                sql += $" and F_DealDept = '{ dealdept }' ";
61
+            }
62
+
63
+            if (!string.IsNullOrEmpty(dealman))
64
+            {
65
+                sql += $" and F_DealMan = '{ dealman }' ";
66
+                
67
+            }
68
+
69
+            string dealmansql = "select dbo.GetUserName(F_dealman) dealusername, F_dealman,COUNT(1) allcount dealusername  from [T_IntegratedScheduling_Base]   where F_dealman is not null and f_dealman != ''" + sql+" group by F_dealman ";
70
+
71
+            DataTable dealmandt = DbHelperSQL.Query(dealmansql).Tables[0];
72
+            // 接单量、处理量、处理效率、超时量、超时率、好评量、好评率、差评量、差评率
73
+
74
+            string allordersql = "    F_dealman is not null and f_dealman != ''"+sql;
75
+
76
+
77
+            List<Model.T_IntegratedScheduling_Base> modellist = baseBll.GetModelList(allordersql);
78
+
79
+          
80
+
81
+
82
+            dealmandt.Columns.Add("jiedanliang");
83
+            dealmandt.Columns.Add("chuliliang");
84
+           //处理效率 = 处理量/接单量;
85
+
86
+            DataColumn chkColumn = new DataColumn();
87
+            chkColumn.DataType =typeof(string);
88
+            chkColumn.ColumnName = "chulixiaolv";
89
+            chkColumn.DefaultValue = "0%";
90
+            dealmandt.Columns.Add(chkColumn);
91
+
92
+
93
+            DataColumn chkColumn1 = new DataColumn();
94
+            chkColumn1.DataType = typeof(int);
95
+            chkColumn1.ColumnName = "chaoshiliang";
96
+            chkColumn1.DefaultValue = 0;
97
+            dealmandt.Columns.Add(chkColumn1);
98
+
99
+            DataColumn chkColumn2 = new DataColumn();
100
+            chkColumn2.DataType = typeof(string);
101
+            chkColumn2.ColumnName = "chaoshilv";
102
+            chkColumn2.DefaultValue = "0%";
103
+            dealmandt.Columns.Add(chkColumn2);
104
+
105
+            DataColumn chkColumn3 = new DataColumn();
106
+            chkColumn3.DataType = typeof(int);
107
+            chkColumn3.ColumnName = "haopingliang";
108
+            chkColumn3.DefaultValue = 0;
109
+            dealmandt.Columns.Add(chkColumn3);
110
+
111
+            DataColumn chkColumn4 = new DataColumn();
112
+            chkColumn4.DataType = typeof(string);
113
+            chkColumn4.ColumnName = "haopinglv";
114
+            chkColumn4.DefaultValue = "0%";
115
+            dealmandt.Columns.Add(chkColumn4);
116
+
117
+
118
+            DataColumn chkColumn5 = new DataColumn();
119
+            chkColumn5.DataType = typeof(int);
120
+            chkColumn5.ColumnName = "chapingliang";
121
+            chkColumn5.DefaultValue = 0;
122
+            dealmandt.Columns.Add(chkColumn5);
123
+
124
+
125
+            DataColumn chkColumn6 = new DataColumn();
126
+            chkColumn6.DataType = typeof(string);
127
+            chkColumn6.ColumnName = "chapinglv";
128
+            chkColumn6.DefaultValue = "0%";
129
+            dealmandt.Columns.Add(chkColumn6);
130
+
131
+
132
+            if (dealmandt != null && dealmandt.Rows.Count > 0)
133
+            {
134
+                foreach (DataRow dr in dealmandt.Rows)
135
+                {
136
+                    List<string> jiedanlist = modellist.Where(x => x.F_DealMan == dr["F_DealMan"].ToString() && x.F_WorkOrderState > 1).Select(x => x.F_WorkOrderCode).ToList();
137
+                    dr["jiedanliang"] = jiedanlist.Count;
138
+
139
+                    List<string> chulilist = modellist.Where(x => x.F_DealMan == dr["F_DealMan"].ToString() && x.F_WorkOrderState > 2).Select(x => x.F_WorkOrderCode).ToList();
140
+                    dr["chuliliang"] = chulilist.Count;
141
+
142
+                    if (jiedanlist.Count != 0)
143
+                    {
144
+                        dr["chulixiaolv"] = Math.Round(decimal.Parse(chulilist.Count.ToString()) / jiedanlist.Count * 100, 2).ToString() + "%";
145
+                    }
146
+
147
+                    var chaoshilist = modellist.Where(x => x.F_Deadline < x.F_Endtime || (x.F_Endtime == null && x.F_Deadline < DateTime.Now)).ToList();
148
+                    dr["chaoshiliang"] = chaoshilist.Count;
149
+                    if (jiedanlist.Count != 0)
150
+                    {
151
+                        //超时率 = 超时量/接单量;
152
+                        dr["chaoshilv"] = Math.Round(decimal.Parse(chaoshilist.Count.ToString()) / jiedanlist.Count * 100, 2).ToString() + "%";
153
+                    }
154
+                    //好评量/差评量 = 范围内接单工单被好评或差评的数量;
155
+                    var haopinglist = modellist.Where(x => x.MYD == 1 || x.MYD == 0).ToList();
156
+
157
+                    dr["haopingliang"] = haopinglist.Count;
158
+
159
+                    var chapinglist= modellist.Where(x => x.MYD == 2).ToList();
160
+
161
+                    dr["chapingliang"] = chapinglist.Count;
162
+
163
+
164
+                    int pingjiacount= haopinglist.Count+ chapinglist.Count;
165
+                    if (pingjiacount != 0)
166
+                    {
167
+                        //好评率/差评率 = 好评量/(好评量 + 差评量)
168
+                        dr["haopinglv"] = Math.Round(decimal.Parse(haopinglist.Count.ToString()) / pingjiacount * 100, 2).ToString() + "%";
169
+
170
+                        dr["chapinglv"] = Math.Round(decimal.Parse(chapinglist.Count.ToString()) / pingjiacount * 100, 2).ToString() + "%";
171
+                    }
172
+                   
173
+                    
174
+
175
+
176
+
177
+                }
178
+            }
179
+
180
+
181
+            if (isdc > 0)
182
+            {
183
+                 
184
+                dealmandt.Columns.Remove("allcount");
185
+             //   接单量、处理量、处理效率、超时量、超时率、好评量、好评率、差评量、差评率
186
+                var msg = new NPOIHelper().ExportToExcel("工勤人员完工统计", dealmandt, new string[] { "姓名", "工号", "接单量", "处理量" , "处理效率", "超时量", "超时率", "好评量", "好评率", "差评量", "差评率" });
187
+                if (msg == "")
188
+                {
189
+                    return Success("导出成功");
190
+                }
191
+                else
192
+                {
193
+                    return Error("导出失败");
194
+                }
195
+            }
196
+
197
+
198
+
199
+            //    DataTable datatable = Bll.PagerBll.GetListPager
200
+            //                               ("T_Wo_CommonBase ",
201
+            //                                 "F_WoCode",
202
+            //                                 "*,[dbo].[GetUserName](F_Proposer) F_ProposerName,[dbo].[GetUserName](F_DealUser) F_DealUserName, (case when MYD = 0 then '不满意' when  MYD = 1 then '满意' else '' end) MYD ",
203
+            //                                 sql,
204
+            //                                 "order by F_CreateTime desc",
205
+            //                                 pagesize,
206
+            //                                 pageindex,
207
+            //                                 true,
208
+            //                                 out recordCount
209
+            //                               );
210
+
211
+            //    datatable = WorkOrderBase.SetOtherField(datatable, MENUENUM.工单列表, User.F_UserCode, User.F_RoleId);
212
+
213
+            var obj = new
214
+                {
215
+                    state = "success",
216
+                    message = "成功",
217
+                    rows = dealmandt,
218
+                    total = recordCount
219
+
220
+                };
221
+                return Content(obj.ToJson());
222
+            }
223
+           
224
+        }
225
+
226
+
227
+    
228
+}

+ 1 - 1
RMYY_CallCenter_Api/Controllers/WorkOrder/WorkCommonController.cs

@@ -148,7 +148,7 @@ namespace RMYY_CallCenter_Api.Controllers.WorkOrder
148 148
 
149 149
                 if (isdc > 0)
150 150
                 {
151
-                    var dtdc = DbHelperSQL.Query(" select  F_WoCode 工单编号,[dbo].[GetUserName](F_Proposer)  姓名,  dbo.GetGongDanNameByID(F_SonType) 工单类别, F_Content 工单内容, F_Status 工单状态,  (case when MYD =0 then '满意' when  MYD =1 then '满意' else '' end ) MYD, F_CreateTime 创建时间 from T_Wo_CommonBase "
151
+                    var dtdc = DbHelperSQL.Query(" select  F_WoCode 工单编号,[dbo].[GetUserName](F_Proposer)  姓名,  dbo.GetGongDanNameByID(F_SonType) 工单类别, F_Content 工单内容, F_Status 工单状态,  (case when MYD =0 then '满意' when  MYD =1 then '基本满意' when  MYD =2 then '不满意' else '' end ) MYD, F_CreateTime 创建时间 from T_Wo_CommonBase "
152 152
 
153 153
                        + "   WITH(NOLOCK)  where 1=1 " + sql + "ORDER BY F_CreateTime desc").Tables[0];
154 154
                     var msg = new NPOIHelper().ExportToExcel("工单列表", dtdc);

+ 1 - 0
RMYY_CallCenter_Api/RMYY_CallCenter_Api.csproj

@@ -171,6 +171,7 @@
171 171
     <Compile Include="Controllers\Quality\QCResultController.cs" />
172 172
     <Compile Include="Controllers\Quality\SwitchedlossCallController.cs" />
173 173
     <Compile Include="Controllers\Quality\TalkTimeController.cs" />
174
+    <Compile Include="Controllers\ReportController.cs" />
174 175
     <Compile Include="Controllers\report\HourCallTotalController.cs" />
175 176
     <Compile Include="Controllers\report\TotalCallController.cs" />
176 177
     <Compile Include="Controllers\report\YearContrastController.cs" />