Ver Código Fonte

自定义客户字段
坐席工作报表自定义导出

yuqian 8 anos atrás
pai
commit
0bc49719f2

+ 25 - 10
CallCenterApi/CallCenterApi.DAL/T_Sys_UserAccount.cs

165
             strSql.Append("F_DeptCode=@F_DeptCode,");
165
             strSql.Append("F_DeptCode=@F_DeptCode,");
166
             strSql.Append("F_WXNo=@F_WXNo,");
166
             strSql.Append("F_WXNo=@F_WXNo,");
167
             strSql.Append("F_SeartGroupID=@F_SeartGroupID,");
167
             strSql.Append("F_SeartGroupID=@F_SeartGroupID,");
168
-            strSql.Append("F_SeartGroup=@F_SeartGroup");
168
+            strSql.Append("F_StartTime1=@F_StartTime1,");
169
+            strSql.Append("F_StartTime2=@F_StartTime2, ");
170
+            strSql.Append("F_EndTime1=@F_EndTime1, ");
171
+            strSql.Append("F_EndTime2=@F_EndTime2 ");
169
             strSql.Append(" where F_UserId=@F_UserId");
172
             strSql.Append(" where F_UserId=@F_UserId");
170
             SqlParameter[] parameters = {
173
             SqlParameter[] parameters = {
171
                     new SqlParameter("@F_UserCode", SqlDbType.VarChar,50),
174
                     new SqlParameter("@F_UserCode", SqlDbType.VarChar,50),
199
                     new SqlParameter("@F_WXNo", SqlDbType.NVarChar,50),
202
                     new SqlParameter("@F_WXNo", SqlDbType.NVarChar,50),
200
                     new SqlParameter("@F_SeartGroupID", SqlDbType.Int,4),
203
                     new SqlParameter("@F_SeartGroupID", SqlDbType.Int,4),
201
                     new SqlParameter("@F_SeartGroup", SqlDbType.NVarChar,50),
204
                     new SqlParameter("@F_SeartGroup", SqlDbType.NVarChar,50),
205
+                    new SqlParameter("@F_StartTime1",  SqlDbType.DateTime),
206
+                    new SqlParameter("@F_StartTime2",  SqlDbType.DateTime),
207
+                    new SqlParameter("@F_EndTime1",  SqlDbType.DateTime),
208
+                    new SqlParameter("@F_EndTime2", SqlDbType.DateTime),
202
                     new SqlParameter("@F_UserId", SqlDbType.Int,4)};
209
                     new SqlParameter("@F_UserId", SqlDbType.Int,4)};
203
             parameters[0].Value = model.F_UserCode;
210
             parameters[0].Value = model.F_UserCode;
204
             parameters[1].Value = model.F_Password;
211
             parameters[1].Value = model.F_Password;
231
             parameters[28].Value = model.F_WXNo;
238
             parameters[28].Value = model.F_WXNo;
232
             parameters[29].Value = model.F_SeartGroupID;
239
             parameters[29].Value = model.F_SeartGroupID;
233
             parameters[30].Value = model.F_SeartGroup;
240
             parameters[30].Value = model.F_SeartGroup;
234
-            parameters[31].Value = model.F_UserId;
241
+            parameters[31].Value = model.StartTime1;
242
+            parameters[32].Value = model.StartTime2;
243
+            parameters[33].Value = model.EndTime1;
244
+            parameters[34].Value = model.EndTime2;
245
+            parameters[35].Value = model.F_UserId;
235
 
246
 
236
             int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);
247
             int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);
237
             if (rows > 0)
248
             if (rows > 0)
308
         /// <summary>
319
         /// <summary>
309
         /// 登录得到一个对象实体
320
         /// 登录得到一个对象实体
310
         /// </summary>
321
         /// </summary>
311
-        public Model.T_Sys_UserAccount LoginGetModel(string F_UserCode,string F_Password)
322
+        public Model.T_Sys_UserAccount LoginGetModel(string F_UserCode, string F_Password)
312
         {
323
         {
313
 
324
 
314
             StringBuilder strSql = new StringBuilder();
325
             StringBuilder strSql = new StringBuilder();
315
-            strSql.Append("select  top 1 F_UserId,F_UserCode,F_Password,F_ExtensionNumber,F_UserName,F_DeptId,F_RoleId,F_GroupId,F_SeatFlag,F_SeatRight,F_SeatLevel,F_SexFlag,F_RemindFlag,F_Remark,F_Telephone,F_Mobile,F_HomePhone,F_Birthday,F_CreateOn,F_CancelOn,F_DeleteFlag,F_APPOnFlag,F_LastActiveTime,F_See,F_HJType,F_PId,F_TmId,F_WorkNumber,F_DeptCode,F_WXNo,F_SeartGroupID,F_SeartGroup from T_Sys_UserAccount ");
326
+            strSql.Append("select  top 1 F_UserId,F_UserCode,F_Password,F_ExtensionNumber,F_UserName,F_DeptId,F_RoleId,F_GroupId,F_SeatFlag,F_SeatRight,F_SeatLevel,F_SexFlag,F_RemindFlag,F_Remark,F_Telephone,F_Mobile,F_HomePhone,F_Birthday,F_CreateOn,F_CancelOn,F_DeleteFlag,F_APPOnFlag,F_LastActiveTime,F_See,F_HJType,F_PId,F_TmId,F_WorkNumber,F_DeptCode,F_WXNo,F_SeartGroupID,F_SeartGroup,F_StartTime1,F_StartTime2,F_EndTime1,F_EndTime2  from T_Sys_UserAccount ");
316
             strSql.Append(" where F_UserCode=@F_UserCode and F_Password=@F_Password and  F_DeleteFlag=0");
327
             strSql.Append(" where F_UserCode=@F_UserCode and F_Password=@F_Password and  F_DeleteFlag=0");
317
             SqlParameter[] parameters = {
328
             SqlParameter[] parameters = {
318
                     new SqlParameter("@F_UserCode", SqlDbType.VarChar,50),
329
                     new SqlParameter("@F_UserCode", SqlDbType.VarChar,50),
340
         {
351
         {
341
 
352
 
342
             StringBuilder strSql = new StringBuilder();
353
             StringBuilder strSql = new StringBuilder();
343
-            strSql.Append("select  top 1 F_UserId,F_UserCode,F_ExtensionNumber,F_UserName,F_Password,F_DeptId,F_RoleId,F_GroupId,F_SeatFlag,F_SeatRight,F_SeatLevel,F_SexFlag,F_RemindFlag,F_Remark,F_Telephone,F_Mobile,F_HomePhone,F_Birthday,F_CreateOn,F_CancelOn,F_DeleteFlag,F_APPOnFlag,F_LastActiveTime,F_See,F_HJType,F_PId,F_TmId,F_WorkNumber,F_DeptCode,F_WXNo,F_SeartGroupID,F_SeartGroup from T_Sys_UserAccount ");
354
+            strSql.Append("select  top 1 F_UserId,F_UserCode,F_ExtensionNumber,F_UserName,F_Password,F_DeptId,F_RoleId,F_GroupId,F_SeatFlag,F_SeatRight,F_SeatLevel,F_SexFlag,F_RemindFlag,F_Remark,F_Telephone,F_Mobile,F_HomePhone,F_Birthday,F_CreateOn,F_CancelOn,F_DeleteFlag,F_APPOnFlag,F_LastActiveTime,F_See,F_HJType,F_PId,F_TmId,F_WorkNumber,F_DeptCode,F_WXNo,F_SeartGroupID,F_SeartGroup,F_StartTime1,F_StartTime2,F_EndTime1,F_EndTime2  from T_Sys_UserAccount ");
344
             strSql.Append(" where F_UserCode=@F_UserCode");
355
             strSql.Append(" where F_UserCode=@F_UserCode");
345
             SqlParameter[] parameters = {
356
             SqlParameter[] parameters = {
346
                     new SqlParameter("@F_UserCode", SqlDbType.VarChar,50)
357
                     new SqlParameter("@F_UserCode", SqlDbType.VarChar,50)
366
         {
377
         {
367
 
378
 
368
             StringBuilder strSql = new StringBuilder();
379
             StringBuilder strSql = new StringBuilder();
369
-            strSql.Append("select  top 1 F_UserId,F_UserCode,F_Password,F_ExtensionNumber,F_UserName,F_DeptId,F_RoleId,F_GroupId,F_SeatFlag,F_SeatRight,F_SeatLevel,F_SexFlag,F_RemindFlag,F_Remark,F_Telephone,F_Mobile,F_HomePhone,F_Birthday,F_CreateOn,F_CancelOn,F_DeleteFlag,F_APPOnFlag,F_LastActiveTime,F_See,F_HJType,F_PId,F_TmId,F_WorkNumber,F_DeptCode,F_WXNo,F_SeartGroupID,F_SeartGroup from T_Sys_UserAccount ");
380
+            strSql.Append("select  top 1 F_UserId,F_UserCode,F_Password,F_ExtensionNumber,F_UserName,F_DeptId,F_RoleId,F_GroupId,F_SeatFlag,F_SeatRight,F_SeatLevel,F_SexFlag,F_RemindFlag,F_Remark,F_Telephone,F_Mobile,F_HomePhone,F_Birthday,F_CreateOn,F_CancelOn,F_DeleteFlag,F_APPOnFlag,F_LastActiveTime,F_See,F_HJType,F_PId,F_TmId,F_WorkNumber,F_DeptCode,F_WXNo,F_SeartGroupID,F_SeartGroup,F_StartTime1,F_StartTime2,F_EndTime1,F_EndTime2 from T_Sys_UserAccount ");
370
             strSql.Append(" where F_UserId=@F_UserId");
381
             strSql.Append(" where F_UserId=@F_UserId");
371
             SqlParameter[] parameters = {
382
             SqlParameter[] parameters = {
372
                     new SqlParameter("@F_UserId", SqlDbType.Int,4)
383
                     new SqlParameter("@F_UserId", SqlDbType.Int,4)
385
             }
396
             }
386
         }
397
         }
387
 
398
 
388
-       
389
-      
399
+
400
+
390
 
401
 
391
         /// <summary>
402
         /// <summary>
392
         /// 得到一个对象实体
403
         /// 得到一个对象实体
408
                 {
419
                 {
409
                     model.F_Password = row["F_Password"].ToString();
420
                     model.F_Password = row["F_Password"].ToString();
410
                 }
421
                 }
411
-                
422
+
412
                 if (row["F_ExtensionNumber"] != null)
423
                 if (row["F_ExtensionNumber"] != null)
413
                 {
424
                 {
414
                     model.F_ExtensionNumber = row["F_ExtensionNumber"].ToString();
425
                     model.F_ExtensionNumber = row["F_ExtensionNumber"].ToString();
546
                 {
557
                 {
547
                     model.F_SeartGroup = row["F_SeartGroup"].ToString();
558
                     model.F_SeartGroup = row["F_SeartGroup"].ToString();
548
                 }
559
                 }
560
+                model.StartTime1 = row["F_StartTime1"] == DBNull.Value ? null : (DateTime?)DateTime.Parse(row["F_StartTime1"].ToString());
561
+                model.StartTime2 = row["F_StartTime2"] == DBNull.Value ? null : (DateTime?)DateTime.Parse(row["F_StartTime2"].ToString());
562
+                model.EndTime1 = row["F_EndTime1"] == DBNull.Value ? null : (DateTime?)DateTime.Parse(row["F_EndTime1"].ToString());
563
+                model.EndTime2 = row["F_EndTime2"] == DBNull.Value ? null : (DateTime?)DateTime.Parse(row["F_EndTime2"].ToString());
549
             }
564
             }
550
             return model;
565
             return model;
551
         }
566
         }
582
         public DataSet GetList(string strWhere)
597
         public DataSet GetList(string strWhere)
583
         {
598
         {
584
             StringBuilder strSql = new StringBuilder();
599
             StringBuilder strSql = new StringBuilder();
585
-            strSql.Append("select F_UserId,F_UserCode,F_Password,F_ExtensionNumber,F_UserName,F_DeptId,F_RoleId,F_GroupId,F_SeatFlag,F_SeatRight,F_SeatLevel,F_SexFlag,F_RemindFlag,F_Remark,F_Telephone,F_Mobile,F_HomePhone,F_Birthday,F_CreateOn,F_CancelOn,F_DeleteFlag,F_APPOnFlag,F_LastActiveTime,F_See,F_HJType,F_PId,F_TmId,F_WorkNumber,F_DeptCode,F_WXNo,F_SeartGroupID,F_SeartGroup ");
600
+            strSql.Append("select F_UserId,F_UserCode,F_Password,F_ExtensionNumber,F_UserName,F_DeptId,F_RoleId,F_GroupId,F_SeatFlag,F_SeatRight,F_SeatLevel,F_SexFlag,F_RemindFlag,F_Remark,F_Telephone,F_Mobile,F_HomePhone,F_Birthday,F_CreateOn,F_CancelOn,F_DeleteFlag,F_APPOnFlag,F_LastActiveTime,F_See,F_HJType,F_PId,F_TmId,F_WorkNumber,F_DeptCode,F_WXNo,F_SeartGroupID,F_SeartGroup,F_StartTime1,F_StartTime2,F_EndTime1,F_EndTime2  ");
586
             strSql.Append(" FROM T_Sys_UserAccount ");
601
             strSql.Append(" FROM T_Sys_UserAccount ");
587
             if (strWhere.Trim() != "")
602
             if (strWhere.Trim() != "")
588
             {
603
             {

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

312
     <Compile Include="Models\Filter\FilterUserAccount.cs" />
312
     <Compile Include="Models\Filter\FilterUserAccount.cs" />
313
     <Compile Include="Models\Filter\FilterProduct.cs" />
313
     <Compile Include="Models\Filter\FilterProduct.cs" />
314
     <Compile Include="Models\Input\BanCallOutInput.cs" />
314
     <Compile Include="Models\Input\BanCallOutInput.cs" />
315
+    <Compile Include="Models\Input\CallInTimeInput.cs" />
315
     <Compile Include="Models\Input\CallNumberInput.cs" />
316
     <Compile Include="Models\Input\CallNumberInput.cs" />
316
     <Compile Include="Models\Input\CallPlanInput.cs" />
317
     <Compile Include="Models\Input\CallPlanInput.cs" />
317
     <Compile Include="Models\Input\CategoryInput.cs" />
318
     <Compile Include="Models\Input\CategoryInput.cs" />

+ 30 - 0
CallCenterApi/CallCenterApi.Interface/CallCenterApi.Interface/Controllers/UserAccountController.cs

556
             return res;
556
             return res;
557
         }
557
         }
558
 
558
 
559
+
560
+        public ActionResult UpdateCallInTime(CallInTimeInput input)
561
+        {
562
+            var model = sysUserAccountBll.GetModel(CurrentUser.UserData.F_UserId);
563
+            if (model == null)
564
+                return Error("当前用户不存在");
565
+            model.StartTime1 = input.StartTime1;
566
+            model.EndTime1 = input.EndTime1;
567
+            model.StartTime2 = input.StartTime2;
568
+            model.EndTime1 = input.EndTime1;
569
+            if (sysUserAccountBll.Update(model))
570
+                return Success("修改成功");
571
+            return Error("修改失败");
572
+        }
573
+
574
+        public ActionResult GetCallInTime(CallInTimeInput input)
575
+        {
576
+            var model = sysUserAccountBll.GetModel(CurrentUser.UserData.F_UserId);
577
+            if (model == null)
578
+                return Error("当前用户不存在");
579
+
580
+            return Success("获取成功", new
581
+            {
582
+                starttime1 = model.StartTime1,
583
+                starttime2 = model.StartTime2,
584
+                endtime1 = model.EndTime1,
585
+                endtime2 = model.EndTime2
586
+            });
587
+        }
588
+
559
     }
589
     }
560
 }
590
 }

+ 1 - 1
CallCenterApi/CallCenterApi.Interface/CallCenterApi.Interface/Controllers/callout/CallPlanController.cs

906
                 {
906
                 {
907
                     if (deptCode.Replace("|0|1|", "").Length > 0)
907
                     if (deptCode.Replace("|0|1|", "").Length > 0)
908
                     {
908
                     {
909
-                        sql += " and DeptId in (select F_DeptId from T_Sys_Department where F_DeptCode like '" + deptCode + "%') ";
909
+                        sql += $" and DeptId in (select F_ParentId from T_Sys_Department where F_DeptId={deptid}) ";
910
                     }
910
                     }
911
                 }
911
                 }
912
             }
912
             }

+ 98 - 6
CallCenterApi/CallCenterApi.Interface/CallCenterApi.Interface/Controllers/customer/CustomerController.cs

186
         public ActionResult AddCustomer(CustomerInput input)
186
         public ActionResult AddCustomer(CustomerInput input)
187
         {
187
         {
188
             Model.T_Cus_CustomerBase model = new Model.T_Cus_CustomerBase();
188
             Model.T_Cus_CustomerBase model = new Model.T_Cus_CustomerBase();
189
+            Model.T_Cus_CustomerExpand expand = new Model.T_Cus_CustomerExpand();
189
             BLL.T_Cus_CustomerBase bll = new BLL.T_Cus_CustomerBase();
190
             BLL.T_Cus_CustomerBase bll = new BLL.T_Cus_CustomerBase();
190
             if (!string.IsNullOrWhiteSpace(input.Id))
191
             if (!string.IsNullOrWhiteSpace(input.Id))
191
             {
192
             {
199
                 model.F_PhoneNum2 = input.PhoneNum2;
200
                 model.F_PhoneNum2 = input.PhoneNum2;
200
                 model.F_AddAgentId = CurrentUser.UserData.F_UserId;
201
                 model.F_AddAgentId = CurrentUser.UserData.F_UserId;
201
                 model.F_DeptId = CurrentUser.UserData.F_DeptId;
202
                 model.F_DeptId = CurrentUser.UserData.F_DeptId;
202
-
203
-
204
-
205
                 if (bll.Add(model) > 0)
203
                 if (bll.Add(model) > 0)
206
-                    return Success("新增成功!");
204
+                {
205
+                    #region 自定义字段
206
+                    expand.F_StrExpand1 = input.F_StrExpand1;
207
+                    expand.F_StrExpand2 = input.F_StrExpand2;
208
+                    expand.F_StrExpand3 = input.F_StrExpand3;
209
+                    expand.F_StrExpand4 = input.F_StrExpand4;
210
+                    expand.F_StrExpand5 = input.F_StrExpand5;
211
+                    expand.F_StrExpand6 = input.F_StrExpand6;
212
+                    expand.F_StrExpand7 = input.F_StrExpand7;
213
+                    expand.F_StrExpand8 = input.F_StrExpand8;
214
+                    expand.F_StrExpand9 = input.F_StrExpand9;
215
+                    expand.F_StrExpand1 = input.F_StrExpand1;
216
+                    expand.F_StrExpand11 = input.F_StrExpand11;
217
+                    expand.F_StrExpand12 = input.F_StrExpand12;
218
+                    expand.F_StrExpand13 = input.F_StrExpand13;
219
+                    expand.F_StrExpand14 = input.F_StrExpand14;
220
+                    expand.F_StrExpand15 = input.F_StrExpand15;
221
+                    expand.F_StrExpand16 = input.F_StrExpand16;
222
+                    expand.F_StrExpand17 = input.F_StrExpand17;
223
+                    expand.F_StrExpand18 = input.F_StrExpand18;
224
+                    expand.F_StrExpand19 = input.F_StrExpand19;
225
+                    expand.F_StrExpand20 = input.F_StrExpand20;
226
+                    expand.F_StrExpand21 = input.F_StrExpand21;
227
+                    expand.F_StrExpand22 = input.F_StrExpand22;
228
+                    expand.F_StrExpand23 = input.F_StrExpand23;
229
+                    expand.F_StrExpand24 = input.F_StrExpand24;
230
+                    expand.F_StrExpand25 = input.F_StrExpand25;
231
+                    expand.F_StrExpand26 = input.F_StrExpand26;
232
+                    expand.F_StrExpand27 = input.F_StrExpand27;
233
+                    expand.F_StrExpand28 = input.F_StrExpand28;
234
+                    expand.F_StrExpand29 = input.F_StrExpand29;
235
+                    expand.F_StrExpand30 = input.F_StrExpand30;
236
+                    expand.F_StrExpand31 = input.F_StrExpand31;
237
+                    expand.F_StrExpand32 = input.F_StrExpand32;
238
+                    expand.F_StrExpand33 = input.F_StrExpand33;
239
+                    expand.F_StrExpand34 = input.F_StrExpand34;
240
+                    expand.F_StrExpand35 = input.F_StrExpand35;
241
+                    expand.F_StrExpand36 = input.F_StrExpand36;
242
+                    expand.F_StrExpand37 = input.F_StrExpand37;
243
+                    expand.F_StrExpand38 = input.F_StrExpand38;
244
+                    expand.F_StrExpand39 = input.F_StrExpand39;
245
+                    expand.F_StrExpand40 = input.F_StrExpand40;
246
+                    #endregion
247
+                    if (customerExpandBLL.Add(expand))
248
+                        return Success("新增成功!");
249
+                    return Error("自定义字段添加失败!");
250
+                }
251
+
207
                 return Error("新增失败!");
252
                 return Error("新增失败!");
208
 
253
 
209
             }
254
             }
220
             model.F_PhoneNum1 = input.PhoneNum1;
265
             model.F_PhoneNum1 = input.PhoneNum1;
221
             model.F_PhoneNum2 = input.PhoneNum2;
266
             model.F_PhoneNum2 = input.PhoneNum2;
222
             if (bll.Update(model))
267
             if (bll.Update(model))
223
-                return Success("修改成功!");
268
+            {
269
+                #region 自定义字段
270
+                expand.F_StrExpand1 = string.IsNullOrWhiteSpace(input.F_StrExpand1) ? expand.F_StrExpand1 : input.F_StrExpand1;
271
+                expand.F_StrExpand2 = string.IsNullOrWhiteSpace(input.F_StrExpand2) ? expand.F_StrExpand2 : input.F_StrExpand2;
272
+                expand.F_StrExpand3 = string.IsNullOrWhiteSpace(input.F_StrExpand3) ? expand.F_StrExpand3 : input.F_StrExpand3;
273
+                expand.F_StrExpand4 = string.IsNullOrWhiteSpace(input.F_StrExpand4) ? expand.F_StrExpand4 : input.F_StrExpand4;
274
+                expand.F_StrExpand5 = string.IsNullOrWhiteSpace(input.F_StrExpand5) ? expand.F_StrExpand5 : input.F_StrExpand5;
275
+                expand.F_StrExpand6 = string.IsNullOrWhiteSpace(input.F_StrExpand6) ? expand.F_StrExpand6 : input.F_StrExpand6;
276
+                expand.F_StrExpand7 = string.IsNullOrWhiteSpace(input.F_StrExpand7) ? expand.F_StrExpand7 : input.F_StrExpand7;
277
+                expand.F_StrExpand8 = string.IsNullOrWhiteSpace(input.F_StrExpand8) ? expand.F_StrExpand8 : input.F_StrExpand8;
278
+                expand.F_StrExpand9 = string.IsNullOrWhiteSpace(input.F_StrExpand9) ? expand.F_StrExpand9 : input.F_StrExpand9;
279
+                expand.F_StrExpand1 = string.IsNullOrWhiteSpace(input.F_StrExpand1) ? expand.F_StrExpand1 : input.F_StrExpand1;
280
+                expand.F_StrExpand11 = string.IsNullOrWhiteSpace(input.F_StrExpand11) ? expand.F_StrExpand11 : input.F_StrExpand11;
281
+                expand.F_StrExpand12 = string.IsNullOrWhiteSpace(input.F_StrExpand12) ? expand.F_StrExpand12 : input.F_StrExpand12;
282
+                expand.F_StrExpand13 = string.IsNullOrWhiteSpace(input.F_StrExpand13) ? expand.F_StrExpand13 : input.F_StrExpand13;
283
+                expand.F_StrExpand14 = string.IsNullOrWhiteSpace(input.F_StrExpand14) ? expand.F_StrExpand14 : input.F_StrExpand14;
284
+                expand.F_StrExpand15 = string.IsNullOrWhiteSpace(input.F_StrExpand15) ? expand.F_StrExpand15 : input.F_StrExpand15;
285
+                expand.F_StrExpand16 = string.IsNullOrWhiteSpace(input.F_StrExpand16) ? expand.F_StrExpand16 : input.F_StrExpand16;
286
+                expand.F_StrExpand17 = string.IsNullOrWhiteSpace(input.F_StrExpand17) ? expand.F_StrExpand17 : input.F_StrExpand17;
287
+                expand.F_StrExpand18 = string.IsNullOrWhiteSpace(input.F_StrExpand18) ? expand.F_StrExpand18 : input.F_StrExpand18;
288
+                expand.F_StrExpand19 = string.IsNullOrWhiteSpace(input.F_StrExpand19) ? expand.F_StrExpand19 : input.F_StrExpand19;
289
+                expand.F_StrExpand20 = string.IsNullOrWhiteSpace(input.F_StrExpand20) ? expand.F_StrExpand20 : input.F_StrExpand20;
290
+                expand.F_StrExpand21 = string.IsNullOrWhiteSpace(input.F_StrExpand21) ? expand.F_StrExpand21 : input.F_StrExpand21;
291
+                expand.F_StrExpand22 = string.IsNullOrWhiteSpace(input.F_StrExpand22) ? expand.F_StrExpand22 : input.F_StrExpand22;
292
+                expand.F_StrExpand23 = string.IsNullOrWhiteSpace(input.F_StrExpand23) ? expand.F_StrExpand23 : input.F_StrExpand23;
293
+                expand.F_StrExpand24 = string.IsNullOrWhiteSpace(input.F_StrExpand24) ? expand.F_StrExpand24 : input.F_StrExpand24;
294
+                expand.F_StrExpand25 = string.IsNullOrWhiteSpace(input.F_StrExpand25) ? expand.F_StrExpand25 : input.F_StrExpand25;
295
+                expand.F_StrExpand26 = string.IsNullOrWhiteSpace(input.F_StrExpand26) ? expand.F_StrExpand26 : input.F_StrExpand26;
296
+                expand.F_StrExpand27 = string.IsNullOrWhiteSpace(input.F_StrExpand27) ? expand.F_StrExpand27 : input.F_StrExpand27;
297
+                expand.F_StrExpand28 = string.IsNullOrWhiteSpace(input.F_StrExpand28) ? expand.F_StrExpand28 : input.F_StrExpand28;
298
+                expand.F_StrExpand29 = string.IsNullOrWhiteSpace(input.F_StrExpand29) ? expand.F_StrExpand29 : input.F_StrExpand29;
299
+                expand.F_StrExpand30 = string.IsNullOrWhiteSpace(input.F_StrExpand30) ? expand.F_StrExpand30 : input.F_StrExpand30;
300
+                expand.F_StrExpand31 = string.IsNullOrWhiteSpace(input.F_StrExpand31) ? expand.F_StrExpand31 : input.F_StrExpand31;
301
+                expand.F_StrExpand32 = string.IsNullOrWhiteSpace(input.F_StrExpand32) ? expand.F_StrExpand32 : input.F_StrExpand32;
302
+                expand.F_StrExpand33 = string.IsNullOrWhiteSpace(input.F_StrExpand33) ? expand.F_StrExpand33 : input.F_StrExpand33;
303
+                expand.F_StrExpand34 = string.IsNullOrWhiteSpace(input.F_StrExpand34) ? expand.F_StrExpand34 : input.F_StrExpand34;
304
+                expand.F_StrExpand35 = string.IsNullOrWhiteSpace(input.F_StrExpand35) ? expand.F_StrExpand35 : input.F_StrExpand35;
305
+                expand.F_StrExpand36 = string.IsNullOrWhiteSpace(input.F_StrExpand36) ? expand.F_StrExpand36 : input.F_StrExpand36;
306
+                expand.F_StrExpand37 = string.IsNullOrWhiteSpace(input.F_StrExpand37) ? expand.F_StrExpand37 : input.F_StrExpand37;
307
+                expand.F_StrExpand38 = string.IsNullOrWhiteSpace(input.F_StrExpand38) ? expand.F_StrExpand38 : input.F_StrExpand38;
308
+                expand.F_StrExpand39 = string.IsNullOrWhiteSpace(input.F_StrExpand39) ? expand.F_StrExpand39 : input.F_StrExpand39;
309
+                expand.F_StrExpand40 = string.IsNullOrWhiteSpace(input.F_StrExpand40) ? expand.F_StrExpand40 : input.F_StrExpand40;
310
+                #endregion
311
+                if (customerExpandBLL.Update(expand))
312
+                    return Success("修改成功!");
313
+                return Error("自定义字段修改失败!");
314
+            }
315
+
224
             return Error("修改失败!");
316
             return Error("修改失败!");
225
         }
317
         }
226
 
318
 
228
         /// 删除客户
320
         /// 删除客户
229
         /// </summary>
321
         /// </summary>
230
         /// <param name="ids"></param>
322
         /// <param name="ids"></param>
231
-        /// <returns></returns>
323
+        /// <returns></returns> 
232
         public ActionResult DelCustomer(string[] ids)
324
         public ActionResult DelCustomer(string[] ids)
233
         {
325
         {
234
             if (ids != null && ids.Length > 0)
326
             if (ids != null && ids.Length > 0)

+ 17 - 2
CallCenterApi/CallCenterApi.Interface/CallCenterApi.Interface/Controllers/customer/CustomerFieldController.cs

17
 
17
 
18
 
18
 
19
         /// <summary>
19
         /// <summary>
20
-        /// 系统字段+自定义字段列表
20
+        /// 右侧系统字段+已选择的自定义字段列表
21
         /// </summary>
21
         /// </summary>
22
         /// <param name="filter"></param>
22
         /// <param name="filter"></param>
23
         /// <returns></returns>
23
         /// <returns></returns>
55
         //    return Success("", model);
55
         //    return Success("", model);
56
         //}
56
         //}
57
 
57
 
58
+        /// <summary>
59
+        /// 添加选中的自定义字段 / 修改已选中的自定义字段
60
+        /// </summary>
61
+        /// <param name="input"></param>
62
+        /// <returns></returns>
58
         public ActionResult CreateOrUpdate(CustomerFieldInput input)
63
         public ActionResult CreateOrUpdate(CustomerFieldInput input)
59
         {
64
         {
60
             Model.T_Cus_CustomerField model = new Model.T_Cus_CustomerField();
65
             Model.T_Cus_CustomerField model = new Model.T_Cus_CustomerField();
94
             return Error("参数错误");
99
             return Error("参数错误");
95
         }
100
         }
96
 
101
 
102
+        /// <summary>
103
+        /// 删除已选中的自定义字段
104
+        /// </summary>
105
+        /// <param name="id"></param>
106
+        /// <returns></returns>
97
         public ActionResult Delete(int id)
107
         public ActionResult Delete(int id)
98
         {
108
         {
99
             if (customerFieldBLL.Delete(id))
109
             if (customerFieldBLL.Delete(id))
101
             return Error("删除成功");
111
             return Error("删除成功");
102
         }
112
         }
103
 
113
 
114
+        /// <summary>
115
+        /// 左侧所有自定义字段
116
+        /// </summary>
117
+        /// <param name="filter"></param>
118
+        /// <returns></returns>
104
         public ActionResult GetEntity(FilterExcelTmp filter)
119
         public ActionResult GetEntity(FilterExcelTmp filter)
105
         {
120
         {
106
-            var sql = "  and F_DBTableName='T_Cus_CustomerExpand' ";
121
+            var sql = "  and F_DBTableName='T_Cus_CustomerExpand' and F_AttributeId not in (select F_FieldId from T_Cus_CustomerField where F_FieldType=1) ";
107
 
122
 
108
             if (filter.Type > 0)
123
             if (filter.Type > 0)
109
             {
124
             {

+ 77 - 553
CallCenterApi/CallCenterApi.Interface/CallCenterApi.Interface/Controllers/report/ZuoXiWorkTotalController.cs

12
 {
12
 {
13
     public class ZuoXiWorkTotalController : BaseController
13
     public class ZuoXiWorkTotalController : BaseController
14
     {
14
     {
15
+        private readonly BLL.T_Sys_UserAccount userAccountBLL = new BLL.T_Sys_UserAccount();
16
+        private List<string> str = new List<string>() { "公司","部门", "坐席工号", "坐席姓名", "角色", "固话号码",
17
+                             "呼入电话数", "接通量", "接通率", "呼入通话分钟数",
18
+                             "呼出电话数", "呼通量", "呼通率", "呼出通话分钟数",
19
+                             "坐席登录次数", "登录时长分钟数", "工作时长分钟数", "平均每天工作小时数", "休息时长分钟数", "质检平均成绩"
20
+            };
21
+
15
         //坐席工作统计
22
         //坐席工作统计
16
         //获取表头
23
         //获取表头
17
         public ActionResult GetColumnList()
24
         public ActionResult GetColumnList()
18
         {
25
         {
19
             ActionResult res = NoToken("未知错误,请重新登录");
26
             ActionResult res = NoToken("未知错误,请重新登录");
20
 
27
 
21
-            //String[] str = { "部门", "坐席", "坐席工号","角色" ,"呼入电话数", "坐席接通量", "呼损量"
22
-            //            ,"接通率","呼损率","平均排队时间","接听通话次数","通话分钟数","通话秒数"
23
-            //            ,"平均接听通话秒数","平均振铃秒数","呼入占有率","用户评价","坐席登录次数"
24
-            //            ,"登录时长分钟数","工作时长分钟数","平均每天工作时长(小时)","平均操作分钟数"
25
-            //            ,"置忙次数","休息时长分钟数","平均每天休息时长(小时)"
26
-            //            ,"置忙平均休息分钟数","质检平均成绩"
27
-            //    };
28
 
28
 
29
-            string[] str = { "公司","部门", "坐席工号", "坐席姓名", "角色", "固话号码",
30
-                             "呼入电话数", "接通量", "接通率", "呼入通话分钟数",
31
-                             "呼出电话数", "呼通量", "呼通率", "呼出通话分钟数",
32
-                             "坐席登录次数", "登录时长分钟数", "工作时长分钟数", "平均每天工作时长(小时)", "休息时长分钟数", "质检平均成绩"
33
-            };
34
             res = Success("获取坐席工作统计表头成功", str);
29
             res = Success("获取坐席工作统计表头成功", str);
35
 
30
 
36
             return res;
31
             return res;
43
 
38
 
44
             DataTable dtNew = new DataTable();
39
             DataTable dtNew = new DataTable();
45
             dtNew = getData(stime, endtime, dpt, dayss, usercode, extensionnumber);
40
             dtNew = getData(stime, endtime, dpt, dayss, usercode, extensionnumber);
46
-            #region
47
-            //#region
48
-            //DataColumn dc1 = new DataColumn("部门");
49
-            //DataColumn dc2 = new DataColumn("坐席");
50
-            //DataColumn dc3 = new DataColumn("坐席工号");
51
-            //DataColumn dc4 = new DataColumn("呼入电话数");
52
-            //DataColumn dc5 = new DataColumn("坐席接通量");
53
-            //DataColumn dc6 = new DataColumn("呼损量");
54
-            //DataColumn dc7 = new DataColumn("接通率");
55
-            //DataColumn dc8 = new DataColumn("呼损率");
56
-            //DataColumn dc9 = new DataColumn("平均排队时间");
57
-            //DataColumn dc10 = new DataColumn("接听通话次数");
58
-            //DataColumn dc11 = new DataColumn("通话分钟数");
59
-            //DataColumn dc12 = new DataColumn("通话秒数");
60
-            //DataColumn dc13 = new DataColumn("平均接听通话秒数");
61
-            //DataColumn dc14 = new DataColumn("平均振铃秒数");
62
-            //DataColumn dc15 = new DataColumn("呼入占有率");
63
-            //DataColumn dc16 = new DataColumn("用户评价");
64
-            //DataColumn dc17 = new DataColumn("坐席登录次数");
65
-            //DataColumn dc18 = new DataColumn("登录时长分钟数");
66
-            //DataColumn dc19 = new DataColumn("工作时长分钟数");
67
-            //DataColumn dc20 = new DataColumn("平均每天工作时长");
68
-            //DataColumn dc21 = new DataColumn("平均操作分钟数");
69
-            //DataColumn dc22 = new DataColumn("置忙次数");
70
-            //DataColumn dc23 = new DataColumn("休息时长分钟数");
71
-            //DataColumn dc24 = new DataColumn("平均每天休息时长");
72
-            //DataColumn dc25 = new DataColumn("置忙平均休息分钟数");
73
-            //DataColumn dc26 = new DataColumn("质检平均成绩");
74
-
75
-            //dtNew.Columns.Add(dc1);
76
-            //dtNew.Columns.Add(dc2);
77
-            //dtNew.Columns.Add(dc3);
78
-            //dtNew.Columns.Add(dc4);
79
-            //dtNew.Columns.Add(dc5);
80
-            //dtNew.Columns.Add(dc6);
81
-            //dtNew.Columns.Add(dc7);
82
-            //dtNew.Columns.Add(dc8);
83
-            //dtNew.Columns.Add(dc9);
84
-            //dtNew.Columns.Add(dc10);
85
-            //dtNew.Columns.Add(dc11);
86
-            //dtNew.Columns.Add(dc12);
87
-            //dtNew.Columns.Add(dc13);
88
-            //dtNew.Columns.Add(dc14);
89
-            //dtNew.Columns.Add(dc15);
90
-            //dtNew.Columns.Add(dc16);
91
-            //dtNew.Columns.Add(dc17);
92
-            //dtNew.Columns.Add(dc18);
93
-            //dtNew.Columns.Add(dc19);
94
-            //dtNew.Columns.Add(dc20);
95
-            //dtNew.Columns.Add(dc21);
96
-            //dtNew.Columns.Add(dc22);
97
-            //dtNew.Columns.Add(dc23);
98
-            //dtNew.Columns.Add(dc24);
99
-            //dtNew.Columns.Add(dc25);
100
-            //dtNew.Columns.Add(dc26);
101
-            //#endregion
102
-            //int days = 30;
103
-            //string sqltimeCallRecords = "";
104
-            //string strsqlcall = "";
105
-            //if (stime != null && stime.Trim() != "")
106
-            //{
107
-            //    sqltimeCallRecords += " and CONVERT(varchar , TimeAlerting, 120)>=CONVERT(varchar , '" + stime.Trim() + " 00:00:01', 120) ";
108
-            //    strsqlcall += " and CONVERT(varchar , BeginTime, 120)>=CONVERT(varchar , '" + stime.Trim() + " 00:00:01', 120) ";
109
-            //}
110
-            //if (endtime != null && endtime.Trim() != "")
111
-            //{
112
-            //    sqltimeCallRecords += " and CONVERT(varchar , TimeAlerting, 120)<=CONVERT(varchar , '" + endtime.Trim() + " 23:59:59', 120) ";
113
-            //    strsqlcall += " and CONVERT(varchar , BeginTime, 120)<=CONVERT(varchar , '" + endtime.Trim() + " 23:59:59', 120) ";
114
-            //}
115
-            //if (dayss != null && dayss.Trim() != "")
116
-            //{
117
-            //    days = int.Parse(dayss.Trim());
118
-            //}
119
-            //#region
120
-            //int ijtcs = 0;//接听通话次数 
121
-            //int ithms = 0;//通话秒数
122
-            //int izlms = 0;//振铃秒数
123
-            //int ipjjtms = 0;//平均接听秒数
124
-            //int ipjzlms = 0;//平均振铃秒数
125
-            //double ihrzyl = 0.00;//呼入占有率
126
-            //int izxdlcs = 0;//坐席登录次数
127
-            //int idlsc = 0;//登录时长
128
-            //int iWorktime = 0;//工作时长
129
-            //int izmcs = 0;//置忙次数
130
-            //int ixxsc = 0;//休息时长
131
-            //int ipjczsc = 0;//平均操作时长
132
-            //int ipjzmxxsc = 0;//平均置忙休息时长
133
-
134
-
135
-            //int itrunkct = 0;//总数
136
-            //int itrunkjj = 0;//总接听
137
-            //int itrunkhs = 0;//呼损量
138
-            //int itrunkpjsc = 0;//平均排队时间
139
-            //double itrunkjtl = 0.00;//接通率
140
-            //double itrunkhsl = 0.00;//互损率
141
-            //double itrunkpjpd = 0.00;//平均排队
142
-            //#endregion
143
-            //DataTable dtdpt = null;
144
-            //if (dpt != null && dpt.Trim() != "")
145
-            //{
146
-            //    dtdpt = DbHelperSQL.Query("select F_DeptId,F_DeptName,F_Remark from  T_Sys_Department where F_ParentId!=0 and F_DeptId=" + dpt).Tables[0];
147
-            //}
148
-            //else
149
-            //{
150
-            //    dtdpt = DbHelperSQL.Query("select F_DeptId,F_DeptName,F_Remark from  T_Sys_Department where F_ParentId!=0").Tables[0];
151
-            //}
152
-            //if (dtdpt != null && dtdpt.Rows.Count > 0)
153
-            //{
154
-            //    foreach (DataRow dr in dtdpt.Rows)
155
-            //    {   
156
-            //        DataTable dt = new DataTable();
157
-            //        string sql = "SELECT F_UserCode,F_UserName,F_WorkNumber,F_UserId FROM T_Sys_UserAccount where f_seatFlag=1 and F_DeptId=" + dr["F_DeptId"] + " and F_WorkNumber!='' order by  F_WorkNumber asc";
158
-            //        dt = DbHelperSQL.Query(sql).Tables[0];
159
-            //        for (int i = 0; i < dt.Rows.Count; i++)
160
-            //        {
161
-            //            if (!string.IsNullOrEmpty(dt.Rows[i]["F_WorkNumber"].ToString()))
162
-            //            {
163
-            //                DataRow drNew = dtNew.NewRow();
164
-            //                drNew["部门"] = dr["F_DeptName"].ToString();
165
-            //                drNew["坐席"] = dt.Rows[i]["F_UserName"].ToString();
166
-            //                drNew["坐席工号"] = dt.Rows[i]["F_WorkNumber"].ToString();
167
-            //                if (i == 0)
168
-            //                {//呼入电话
169
-
170
-            //                    string strsql = "";
171
-            //                    if (stime != null && stime.Trim() != "")
172
-            //                    {
173
-            //                        strsql += " and CONVERT(varchar , TimeCallIn, 120)>=CONVERT(varchar , '" + stime.Trim() + " 00:00:01', 120) ";
174
-            //                    }
175
-            //                    if (endtime != null && endtime.Trim() != "")
176
-            //                    {
177
-            //                        strsql += " and CONVERT(varchar , TimeCallIn, 120)<=CONVERT(varchar , '" + endtime.Trim() + " 23:59:59', 120) ";
178
-            //                    }
179
-
180
-            //                    DataTable dtTrunk = DbHelperSQL.Query("select COUNT(*) as ct,SUM(DATEDIFF(Second,timewantagent,timeconnected)) as dd from rep_trunk_call_in where AgentID='" + dt.Rows[i]["F_UserCode"].ToString() + "' " + strsql).Tables[0];
181
-            //                    DataTable dtcall = DbHelperSQL.Query("select COUNT(*) as ct,(select COUNT(*) from T_Call_CallRecords where CallState=1 and CallType=0 and  UserCode='" + dt.Rows[i]["F_UserCode"].ToString() + "' " + strsqlcall + ") as jt from T_Call_CallRecords where CallType=0 and UserCode='" + dt.Rows[i]["F_UserCode"].ToString() + "' " + strsqlcall).Tables[0];
182
-
183
-            //                    if (dtcall != null && dtcall.Rows.Count > 0)
184
-            //                    {
185
-            //                        if (dtcall.Rows[0]["ct"].ToString() != "")
186
-            //                        {
187
-            //                            itrunkct = int.Parse(dtcall.Rows[0]["ct"].ToString());
188
-            //                        }
189
-            //                        else
190
-            //                        {
191
-            //                            itrunkct = 0;
192
-            //                        }
193
-            //                        if (dtcall.Rows[0]["jt"].ToString() != "")
194
-            //                        {
195
-            //                            itrunkjj = int.Parse(dtcall.Rows[0]["jt"].ToString());
196
-            //                        }
197
-            //                        else
198
-            //                        {
199
-            //                            itrunkjj = 0;
200
-            //                        }
201
-            //                        if (dtTrunk.Rows.Count > 0 && dtTrunk.Rows[0]["dd"].ToString() != "")
202
-            //                        {
203
-            //                            itrunkpjsc = int.Parse(dtTrunk.Rows[0]["dd"].ToString());
204
-            //                        }
205
-            //                        else
206
-            //                        {
207
-            //                            itrunkpjsc = 0;
208
-            //                        }
209
-            //                    }
210
-            //                    itrunkhs = itrunkct - itrunkjj;
211
-            //                    if (itrunkct != 0)
212
-            //                    {
213
-            //                        itrunkjtl = itrunkjj / double.Parse(itrunkct.ToString());
214
-            //                        itrunkhsl = itrunkhs / double.Parse(itrunkct.ToString());
215
-            //                        itrunkpjpd = itrunkpjsc / double.Parse(itrunkct.ToString());
216
-            //                    }
217
-            //                    else
218
-            //                    {
219
-            //                        itrunkjtl = 0.00;
220
-            //                        itrunkhsl = 0.00;
221
-            //                        itrunkpjpd = 0.00;
222
-            //                    }
223
-            //                    drNew["呼入电话数"] = itrunkct;
224
-            //                    drNew["坐席接通量"] = itrunkjj;
225
-            //                    drNew["呼损量"] = itrunkhs;
226
-            //                    drNew["接通率"] = (itrunkjtl * 100).ToString("0.00") + "%";
227
-            //                    drNew["呼损率"] = (itrunkhsl * 100).ToString("0.00") + "%";
228
-            //                    drNew["平均排队时间"] = itrunkpjpd.ToString("0.00");
229
-
230
-            //                }
231
-            //                else
232
-            //                {
233
-            //                    drNew["呼入电话数"] = "0";
234
-            //                    drNew["坐席接通量"] = "0";
235
-            //                    drNew["呼损量"] = "0";
236
-            //                    drNew["接通率"] = "0.00" + "%";
237
-            //                    drNew["呼损率"] = "0.00" + "%";
238
-            //                    drNew["平均排队时间"] = "0.00";
239
-            //                }
240
-
241
-
242
-            //                DataTable dtext = DbHelperSQL.Query("select COUNT(*) as ct,SUM(PeriodTalking) as sc,SUM(PeriodAlerting) as pa from rep_ext_call_in where CalleeAgentID=" + dt.Rows[i]["F_WorkNumber"] + " " + sqltimeCallRecords).Tables[0];
243
-            //                DataTable dtCallEvey = DbHelperSQL.Query("select COUNT(*) as ct,SUM(TalkLongTime) as sc from T_Call_CallRecords where CallState=1 and  userid=" + dt.Rows[i]["F_UserId"] + " " + strsqlcall).Tables[0];
244
-            //                if (dtCallEvey != null && dtCallEvey.Rows.Count > 0)
245
-            //                {
246
-            //                    if (dtCallEvey.Rows[0]["ct"].ToString() != "")
247
-            //                    {
248
-            //                        ijtcs = int.Parse(dtCallEvey.Rows[0]["ct"].ToString());//接听次数
249
-            //                    }
250
-            //                    else
251
-            //                    {
252
-            //                        ijtcs = 0;
253
-            //                    }
254
-            //                    if (dtCallEvey.Rows[0]["sc"].ToString() != "")
255
-            //                    {
256
-            //                        ithms = int.Parse(dtCallEvey.Rows[0]["sc"].ToString());//通话秒数
257
-            //                    }
258
-            //                    else
259
-            //                    {
260
-            //                        ithms = 0;
261
-            //                    }
262
-            //                    if (dtext.Rows[0]["pa"].ToString() != "")
263
-            //                    {
264
-            //                        izlms = int.Parse(dtext.Rows[0]["pa"].ToString());//振铃秒数
265
-            //                    }
266
-            //                    else
267
-            //                    {
268
-            //                        izlms = 0;
269
-            //                    }
270
-            //                }
271
-            //                drNew["接听通话次数"] = ijtcs.ToString();
272
-            //                drNew["通话分钟数"] = (ithms / 60).ToString();
273
-            //                drNew["通话秒数"] = ithms.ToString();
274
-
275
-            //                if (ijtcs != 0)
276
-            //                {
277
-            //                    ipjjtms = ithms / ijtcs;//平均接通秒数
278
-            //                    ipjzlms = izlms / ijtcs;//平均振铃秒数
279
-            //                }
280
-            //                else
281
-            //                {
282
-            //                    ipjjtms = 0;//平均接通秒数
283
-            //                    ipjzlms = 0;//平均振铃秒数
284
-            //                }
285
-            //                drNew["平均接听通话秒数"] = ipjjtms.ToString();
286
-            //                drNew["平均振铃秒数"] = ipjzlms.ToString();
287
-
288
-            //                //坐席登录次数
289
-            //                DataTable dtAgent = DbHelperSQL.Query("select COUNT(*) as dl,SUM(LoginTimes) as dlsc,SUM(reposenum) as zm,SUM(ReposeTimes) as xx from rep_agent_detail where AgentId=" + dt.Rows[i]["F_WorkNumber"] + " " + sqltimeCallRecords.Replace("TimeAlerting", "TimeLogin")).Tables[0];
290
-            //                if (dtAgent != null && dtAgent.Rows.Count > 0)
291
-            //                {
292
-            //                    if (dtAgent.Rows[0]["dl"] != null && dtAgent.Rows[0]["dl"].ToString() != "")
293
-            //                    {
294
-            //                        izxdlcs = int.Parse(dtAgent.Rows[0]["dl"].ToString());//登录次数
295
-            //                    }
296
-            //                    else
297
-            //                    {
298
-            //                        izxdlcs = 0;
299
-            //                    }
300
-            //                    if (dtAgent.Rows[0]["dlsc"] != null && dtAgent.Rows[0]["dlsc"].ToString() != "")
301
-            //                    {
302
-            //                        idlsc = int.Parse(dtAgent.Rows[0]["dlsc"].ToString());//登录时长
303
-            //                    }
304
-            //                    else
305
-            //                    {
306
-            //                        idlsc = 0;
307
-            //                    }
308
-            //                    if (dtAgent.Rows[0]["zm"] != null && dtAgent.Rows[0]["zm"].ToString() != "")
309
-            //                    {
310
-            //                        izmcs = int.Parse(dtAgent.Rows[0]["zm"].ToString());//置忙次数
311
-            //                    }
312
-            //                    else
313
-            //                    {
314
-            //                        izmcs = 0;
315
-            //                    }
316
-            //                    if (dtAgent.Rows[0]["xx"] != null && dtAgent.Rows[0]["xx"].ToString() != "")
317
-            //                    {
318
-            //                        ixxsc = int.Parse(dtAgent.Rows[0]["xx"].ToString());//休息时长
319
-            //                    }
320
-            //                    else
321
-            //                    {
322
-            //                        ixxsc = 0;
323
-            //                    }
324
-
325
-            //                }
326
-            //                iWorktime = idlsc - ixxsc;//工作时长
327
-            //                if (izxdlcs != 0)
328
-            //                {
329
-            //                    ipjczsc = iWorktime / izxdlcs;//平均操作秒数
330
-            //                }
331
-            //                else
332
-            //                {
333
-            //                    ipjczsc = 0;
334
-            //                }
335
-            //                if (izmcs != 0)
336
-            //                {
337
-            //                    ipjzmxxsc = ixxsc / izmcs;//置忙平均操作时长
338
-            //                }
339
-            //                else
340
-            //                {
341
-            //                    ipjzmxxsc = 0;
342
-            //                }
343
-
344
-            //                //呼入占有率
345
-            //                if (iWorktime != 0)
346
-            //                {
347
-            //                    ihrzyl = ithms / Convert.ToDouble(iWorktime);
348
-            //                }
349
-            //                else
350
-            //                {
351
-            //                    ihrzyl = 0.00;
352
-            //                }
353
-            //                drNew["呼入占有率"] = (ihrzyl * 100).ToString("0.00") + "%";
354
-            //                //用户评价
355
-
356
-            //                object obj = DbHelperSQL.GetSingle("select count(*) from T_Call_CallRecords where MYD is not null and CallState=1 and userid=" + dt.Rows[i]["F_UserId"] + strsqlcall);
357
-            //                string myd = "";
358
-            //                if (obj != null)
359
-            //                {
360
-            //                    myd = obj.ToString();
361
-            //                }
362
-            //                drNew["用户评价"] = myd;
363
-            //                drNew["坐席登录次数"] = izxdlcs.ToString();
364
-            //                drNew["登录时长分钟数"] = (idlsc / 60).ToString();
365
-            //                drNew["工作时长分钟数"] = (iWorktime / 60).ToString();
366
-            //                drNew["平均每天工作时长"] = Math.Round((double.Parse(iWorktime.ToString()) / 60 / 60 / days), 2).ToString();
367
-            //                drNew["平均操作分钟数"] = (ipjczsc / 60).ToString();
368
-            //                drNew["置忙次数"] = izmcs.ToString();
369
-            //                drNew["休息时长分钟数"] = (ixxsc / 60).ToString();
370
-            //                drNew["平均每天休息时长"] = Math.Round((double.Parse(ixxsc.ToString()) / 60 / 60 / days), 2).ToString();
371
-            //                drNew["置忙平均休息分钟数"] = (ipjzmxxsc / 60).ToString();
372
-
373
-            //                DataSet dszj = DbHelperSQL.Query("select convert(int,SUM(f_qcscore)) as fs,COUNT(*) as fsct from T_Call_CallRecords where F_QCState=1 and UserId=" + dt.Rows[i]["F_UserId"] + strsqlcall);
374
-            //                int zfs = 0;
375
-            //                if (dszj != null && dszj.Tables.Count > 0)
376
-            //                {
377
-            //                    DataTable dtzj = dszj.Tables[0];
378
-            //                    if (dtzj.Rows.Count > 0 && dtzj.Rows[0]["fs"].ToString() != "" && dtzj.Rows[0]["fsct"].ToString() != "")
379
-            //                    {
380
-            //                        zfs = Convert.ToInt32(dtzj.Rows[0]["fs"].ToString()) / int.Parse(dtzj.Rows[0]["fsct"].ToString());
381
-            //                    }
382
-            //                }
383
-            //                drNew["质检平均成绩"] = zfs.ToString();
384
-
385
-            //                dtNew.Rows.Add(drNew);
386
-            //            }
387
-            //        }
388
-            //    }
389
-            //}
390
-            #endregion
391
             res = Success("获取坐席工作统计数据成功", dtNew);
41
             res = Success("获取坐席工作统计数据成功", dtNew);
392
 
42
 
393
             return res;
43
             return res;
394
         }
44
         }
395
 
45
 
396
-        //导出数据
397
-        public ActionResult ExptList(string stime, string endtime, string dpt, string dayss)
46
+        /// <summary>
47
+        /// 导出数据
48
+        /// </summary>
49
+        /// <param name="stime">开始时间</param>
50
+        /// <param name="endtime">结束时间</param>
51
+        /// <param name="dpt">部门</param>
52
+        /// <param name="dayss">天数</param>
53
+        /// <param name="indexs">未选中导出的字段索引数组</param>
54
+        /// <returns></returns>
55
+        public ActionResult ExptList(string stime, string endtime, string dpt, string dayss, string indexstr = "")
398
         {
56
         {
399
             ActionResult res = NoToken("未知错误,请重新登录");
57
             ActionResult res = NoToken("未知错误,请重新登录");
400
             if (Request.IsAuthenticated)
58
             if (Request.IsAuthenticated)
401
             {
59
             {
402
                 NPOIHelper npoi = new NPOIHelper();
60
                 NPOIHelper npoi = new NPOIHelper();
403
-                DataTable dt = getData(stime, endtime, dpt, dayss);
61
+                List<int> indexs = new List<int>();
62
+                if (!string.IsNullOrWhiteSpace(indexstr))
63
+                    indexs.AddRange(indexstr.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList().Select(x => Convert.ToInt32(x)));
64
+                DataTable dt = getData(stime, endtime, dpt, dayss, "", "", indexs);
404
                 if (npoi.ExportToExcel("坐席工作数据", dt) == "")
65
                 if (npoi.ExportToExcel("坐席工作数据", dt) == "")
405
                 {
66
                 {
406
                     return Success("导出成功");
67
                     return Success("导出成功");
413
             return res;
74
             return res;
414
         }
75
         }
415
 
76
 
416
-        private DataTable getData(string stime, string endtime, string dpt, string dayss, string _usercode = "", string extensionnumber = "")
77
+        private DataTable getData(string stime, string endtime, string dpt, string dayss, string _usercode = "", string extensionnumber = "", List<int> indexs = null)
417
         {
78
         {
418
             DataTable dtNew = new DataTable();
79
             DataTable dtNew = new DataTable();
80
+            var columns = dtNew.Columns;
419
             #region
81
             #region
420
-            dtNew.Columns.AddRange(new DataColumn[] {
421
-                 new DataColumn("公司"),
422
-                 new DataColumn("部门"),
423
-                 new DataColumn("坐席工号"),
424
-                 new DataColumn("坐席姓名"),
425
-                 new DataColumn("角色"),
426
-                 new DataColumn("固话号码"),
427
-                 new DataColumn("呼入电话数"),
428
-                 new DataColumn("接通量"),
429
-                 new DataColumn("接通率"),
430
-                 new DataColumn("呼入通话分钟数"),
431
-                 new DataColumn("呼出电话数"),
432
-                 new DataColumn("呼通量"),
433
-                 new DataColumn("呼通率"),
434
-                 new DataColumn("呼出通话分钟数"),
435
-                 new DataColumn("坐席登录次数"),
436
-                 new DataColumn("登录时长分钟数"),
437
-                 new DataColumn("工作时长分钟数"),
438
-                 new DataColumn("平均每天工作时长"),
439
-                 new DataColumn("休息时长分钟数"),
440
-                 new DataColumn("质检平均成绩")
441
-            });
442
-
443
-            //DataColumn dc1 = new DataColumn("部门");
444
-            //DataColumn dc2 = new DataColumn("坐席");
445
-            //DataColumn dc3 = new DataColumn("坐席工号");
446
-            //DataColumn dc3_ = new DataColumn("角色");
447
-            //DataColumn dc4 = new DataColumn("呼入电话数");
448
-            //DataColumn dc5 = new DataColumn("坐席接通量");
449
-            //DataColumn dc6 = new DataColumn("呼损量");
450
-            //DataColumn dc7 = new DataColumn("接通率");
451
-            //DataColumn dc8 = new DataColumn("呼损率");
452
-            //DataColumn dc9 = new DataColumn("平均排队时间");
453
-            //DataColumn dc10 = new DataColumn("接听通话次数");
454
-            //DataColumn dc11 = new DataColumn("通话分钟数");
455
-            //DataColumn dc12 = new DataColumn("通话秒数");
456
-            //DataColumn dc13 = new DataColumn("平均接听通话秒数");
457
-            //DataColumn dc14 = new DataColumn("平均振铃秒数");
458
-            //DataColumn dc15 = new DataColumn("呼入占有率");
459
-            //DataColumn dc16 = new DataColumn("用户评价");
460
-            //DataColumn dc17 = new DataColumn("坐席登录次数");
461
-            //DataColumn dc18 = new DataColumn("登录时长分钟数");
462
-            //DataColumn dc19 = new DataColumn("工作时长分钟数");
463
-            //DataColumn dc20 = new DataColumn("平均每天工作时长");
464
-            //DataColumn dc21 = new DataColumn("平均操作分钟数");
465
-            //DataColumn dc22 = new DataColumn("置忙次数");
466
-            //DataColumn dc23 = new DataColumn("休息时长分钟数");
467
-            //DataColumn dc24 = new DataColumn("平均每天休息时长");
468
-            //DataColumn dc25 = new DataColumn("置忙平均休息分钟数");
469
-            //DataColumn dc26 = new DataColumn("质检平均成绩");
470
-
471
-            //dtNew.Columns.Add(dc1);
472
-            //dtNew.Columns.Add(dc2);
473
-            //dtNew.Columns.Add(dc3);
474
-            //dtNew.Columns.Add(dc3_);
475
-            //dtNew.Columns.Add(dc4);
476
-            //dtNew.Columns.Add(dc5);
477
-            //dtNew.Columns.Add(dc6);
478
-            //dtNew.Columns.Add(dc7);
479
-            //dtNew.Columns.Add(dc8);
480
-            //dtNew.Columns.Add(dc9);
481
-            //dtNew.Columns.Add(dc10);
482
-            //dtNew.Columns.Add(dc11);
483
-            //dtNew.Columns.Add(dc12);
484
-            //dtNew.Columns.Add(dc13);
485
-            //dtNew.Columns.Add(dc14);
486
-            //dtNew.Columns.Add(dc15);
487
-            //dtNew.Columns.Add(dc16);
488
-            //dtNew.Columns.Add(dc17);
489
-            //dtNew.Columns.Add(dc18);
490
-            //dtNew.Columns.Add(dc19);
491
-            //dtNew.Columns.Add(dc20);
492
-            //dtNew.Columns.Add(dc21);
493
-            //dtNew.Columns.Add(dc22);
494
-            //dtNew.Columns.Add(dc23);
495
-            //dtNew.Columns.Add(dc24);
496
-            //dtNew.Columns.Add(dc25);
497
-            //dtNew.Columns.Add(dc26);
82
+
83
+
84
+            for (int i = 0; i < str.Count(); i++)
85
+            {
86
+                if (!indexs.Contains(i))
87
+                    dtNew.Columns.Add(new DataColumn(str[i]));
88
+            }
89
+
498
             #endregion
90
             #endregion
499
             int days = 30;
91
             int days = 30;
500
             string sqltimeCallRecords = "";
92
             string sqltimeCallRecords = "";
603
             {
195
             {
604
                 dtdpt = DbHelperSQL.Query("select t1.F_DeptId,t1.F_DeptName,t1.F_Remark,t2.F_DeptName as ParentName from  T_Sys_Department t1 left join T_Sys_Department t2 ON t1.F_ParentId=t2.F_DeptId where t1.F_ParentId!=0" + deptSQL).Tables[0];
196
                 dtdpt = DbHelperSQL.Query("select t1.F_DeptId,t1.F_DeptName,t1.F_Remark,t2.F_DeptName as ParentName from  T_Sys_Department t1 left join T_Sys_Department t2 ON t1.F_ParentId=t2.F_DeptId where t1.F_ParentId!=0" + deptSQL).Tables[0];
605
             }
197
             }
606
-            //if (dtdpt != null && dtdpt.Rows.Count > 0)
607
-            //{
198
+
199
+            string sql = $"SELECT F_UserCode,F_UserName,F_WorkNumber,F_ExtensionNumber,F_UserId,F_DeptId,T_Sys_RoleInfo.F_RoleName FROM T_Sys_UserAccount left join T_Sys_RoleInfo on T_Sys_RoleInfo.F_RoleId=T_Sys_UserAccount.F_RoleId where f_seatFlag=1 and  F_WorkNumber!='' {usercodeSQL} order by  F_WorkNumber asc";
200
+            var userAccountList = DbHelperSQL.Query(sql).Tables[0];
201
+
608
             foreach (DataRow dr in dtdpt.Rows)
202
             foreach (DataRow dr in dtdpt.Rows)
609
             {
203
             {
610
-                DataTable dt = new DataTable();
611
-                string sql = $"SELECT F_UserCode,F_UserName,F_WorkNumber,F_ExtensionNumber,F_UserId,T_Sys_RoleInfo.F_RoleName FROM T_Sys_UserAccount left join T_Sys_RoleInfo on T_Sys_RoleInfo.F_RoleId=T_Sys_UserAccount.F_RoleId where f_seatFlag=1 and F_DeptId={dr["F_DeptId"]} and F_WorkNumber!='' {usercodeSQL} order by  F_WorkNumber asc";
612
-                dt = DbHelperSQL.Query(sql).Tables[0];
613
-                for (int i = 0; i < dt.Rows.Count; i++)
204
+                //string sql = $"SELECT F_UserCode,F_UserName,F_WorkNumber,F_ExtensionNumber,F_UserId,T_Sys_RoleInfo.F_RoleName FROM T_Sys_UserAccount left join T_Sys_RoleInfo on T_Sys_RoleInfo.F_RoleId=T_Sys_UserAccount.F_RoleId where f_seatFlag=1 and F_DeptId={dr["F_DeptId"]} and F_WorkNumber!='' {usercodeSQL} order by  F_WorkNumber asc";
205
+                //dt = DbHelperSQL.Query(sql).Tables[0];
206
+                var arr = userAccountList.Select($"F_DeptId={dr["F_DeptId"]}");
207
+                for (int i = 0; i < arr.Length; i++)
614
                 {
208
                 {
615
-                    if (!string.IsNullOrEmpty(dt.Rows[i]["F_WorkNumber"].ToString()))
209
+                    if (!string.IsNullOrEmpty(arr[i]["F_WorkNumber"].ToString()))
616
                     {
210
                     {
617
                         DataRow drNew = dtNew.NewRow();
211
                         DataRow drNew = dtNew.NewRow();
618
-                        //drNew["部门"] = dr["F_DeptName"].ToString();
619
-                        //drNew["坐席"] = dt.Rows[i]["F_UserName"].ToString();
620
-                        //drNew["坐席工号"] = dt.Rows[i]["F_WorkNumber"].ToString();
621
-                        //drNew["角色"] = dt.Rows[i]["F_RoleName"].ToString();
622
-                        drNew["公司"] = dr["ParentName"].ToString();
623
-                        drNew["部门"] = dr["F_DeptName"].ToString();
624
-                        drNew["坐席工号"] = $"{dt.Rows[i]["F_WorkNumber"].ToString()}";
625
-                        drNew["坐席姓名"] = $"{dt.Rows[i]["F_UserName"].ToString()}";
626
-                        drNew["角色"] = dt.Rows[i]["F_RoleName"].ToString();
627
-                        drNew["固话号码"] = dt.Rows[i]["F_ExtensionNumber"].ToString();
628
-
629
-                        //if (i == 0)
630
-                        //{//呼入电话
631
-
632
-
633
-
212
+                        if (columns.Contains("公司")) { drNew["公司"] = dr["ParentName"].ToString(); }
213
+                        if (columns.Contains("部门")) { drNew["部门"] = dr["F_DeptName"].ToString(); }
214
+                        if (columns.Contains("坐席工号")) { drNew["坐席工号"] = $"{arr[i]["F_WorkNumber"].ToString()}"; }
215
+                        if (columns.Contains("坐席姓名")) { drNew["坐席姓名"] = $"{arr[i]["F_UserName"].ToString()}"; }
216
+                        if (columns.Contains("角色")) { drNew["角色"] = arr[i]["F_RoleName"].ToString(); }
217
+                        if (columns.Contains("固话号码")) { drNew["固话号码"] = arr[i]["F_ExtensionNumber"].ToString(); }
634
 
218
 
635
                         #region 呼入
219
                         #region 呼入
636
 
220
 
645
                         }
229
                         }
646
 
230
 
647
                         //ct=总呼入/呼出次数?   dd=总等待时长
231
                         //ct=总呼入/呼出次数?   dd=总等待时长
648
-                        DataTable dtTrunk = DbHelperSQL.Query("select COUNT(*) as ct,SUM(DATEDIFF(Second,timewantagent,timeconnected)) as dd from rep_trunk_call_in where AgentID='" + dt.Rows[i]["F_UserCode"].ToString() + "' " + strsql).Tables[0];
232
+                        DataTable dtTrunk = DbHelperSQL.Query("select COUNT(*) as ct,SUM(DATEDIFF(Second,timewantagent,timeconnected)) as dd from rep_trunk_call_in where AgentID='" + arr[i]["F_UserCode"].ToString() + "' " + strsql).Tables[0];
649
                         //ct=总呼入次数?   jt=总呼入接通数
233
                         //ct=总呼入次数?   jt=总呼入接通数
650
-                        DataTable dtcall = DbHelperSQL.Query("select COUNT(*) as ct,(select COUNT(*) from T_Call_CallRecords where CallState=1 and CallType=0 and  UserCode='" + dt.Rows[i]["F_UserCode"].ToString() + "' " + strsqlcall + ") as jt from T_Call_CallRecords where CallType=0 and UserCode='" + dt.Rows[i]["F_UserCode"].ToString() + "' " + strsqlcall).Tables[0];
234
+                        DataTable dtcall = DbHelperSQL.Query("select COUNT(*) as ct,(select COUNT(*) from T_Call_CallRecords where CallState=1 and CallType=0 and  UserCode='" + arr[i]["F_UserCode"].ToString() + "' " + strsqlcall + ") as jt from T_Call_CallRecords where CallType=0 and UserCode='" + arr[i]["F_UserCode"].ToString() + "' " + strsqlcall).Tables[0];
651
 
235
 
652
                         if (dtcall != null && dtcall.Rows.Count > 0)
236
                         if (dtcall != null && dtcall.Rows.Count > 0)
653
                         {
237
                         {
699
                             itrunkhsl = 0.00;
283
                             itrunkhsl = 0.00;
700
                             itrunkpjpd = 0.00;
284
                             itrunkpjpd = 0.00;
701
                         }
285
                         }
702
-                        //drNew["呼入电话数"] = itrunkct;
703
-                        //drNew["坐席接通量"] = itrunkjj;
704
-                        //drNew["呼损量"] = itrunkhs;
705
-                        //drNew["接通率"] = (itrunkjtl * 100).ToString("0.00") + "%";
706
-                        //drNew["呼损率"] = (itrunkhsl * 100).ToString("0.00") + "%";
707
-                        //drNew["平均排队时间"] = itrunkpjpd.ToString("0.00");
708
-
709
-
710
-                        drNew["呼入电话数"] = itrunkct;
711
-                        drNew["接通量"] = itrunkjj;
712
-                        drNew["接通率"] = (itrunkjtl * 100).ToString("0.00") + "%";
713
-
714
-                        //}
715
-                        //else
716
-                        //{
717
-                        //    drNew["呼入电话数"] = "0";
718
-                        //    drNew["坐席接通量"] = "0";
719
-                        //    drNew["呼损量"] = "0";
720
-                        //    drNew["接通率"] = "0.00" + "%";
721
-                        //    drNew["呼损率"] = "0.00" + "%";
722
-                        //    drNew["平均排队时间"] = "0.00";
723
-                        //}
286
+                        if (columns.Contains("呼入电话数")) { drNew["呼入电话数"] = itrunkct; }
287
+                        if (columns.Contains("接通量")) { drNew["接通量"] = itrunkjj; }
288
+                        if (columns.Contains("接通率")) { drNew["接通率"] = (itrunkjtl * 100).ToString("0.00") + "%"; }
289
+
724
 
290
 
725
                         //-- ct=总呼入次数?  sc=总通话时长   pa=总xxx
291
                         //-- ct=总呼入次数?  sc=总通话时长   pa=总xxx
726
-                        DataTable dtext = DbHelperSQL.Query("select COUNT(*) as ct,SUM(PeriodTalking) as sc,SUM(PeriodAlerting) as pa from rep_ext_call_in where CalleeAgentID=" + dt.Rows[i]["F_WorkNumber"] + " " + sqltimeCallRecords).Tables[0];
292
+                        DataTable dtext = DbHelperSQL.Query("select COUNT(*) as ct,SUM(PeriodTalking) as sc,SUM(PeriodAlerting) as pa from rep_ext_call_in where CalleeAgentID=" + arr[i]["F_WorkNumber"] + " " + sqltimeCallRecords).Tables[0];
727
                         //-- ct=总呼入接通次数?  sc=总通话时长
293
                         //-- ct=总呼入接通次数?  sc=总通话时长
728
-                        DataTable dtCallEvey = DbHelperSQL.Query("select COUNT(*) as ct,SUM(TalkLongTime) as sc from T_Call_CallRecords where CallState=1 and  userid=" + dt.Rows[i]["F_UserId"] + " " + strsqlcall).Tables[0];
294
+                        DataTable dtCallEvey = DbHelperSQL.Query("select COUNT(*) as ct,SUM(TalkLongTime) as sc from T_Call_CallRecords where CallState=1 and  userid=" + arr[i]["F_UserId"] + " " + strsqlcall).Tables[0];
729
                         if (dtCallEvey != null && dtCallEvey.Rows.Count > 0)
295
                         if (dtCallEvey != null && dtCallEvey.Rows.Count > 0)
730
                         {
296
                         {
731
                             if (dtCallEvey.Rows[0]["ct"].ToString() != "")
297
                             if (dtCallEvey.Rows[0]["ct"].ToString() != "")
759
                                 izlms = 0;
325
                                 izlms = 0;
760
                             }
326
                             }
761
                         }
327
                         }
762
-                        //drNew["接听通话次数"] = ijtcs.ToString();
763
-                        drNew["呼入通话分钟数"] = (ithms / 60).ToString();
764
-                        //drNew["通话秒数"] = ithms.ToString();
765
-
766
-                        //if (ijtcs != 0)
767
-                        //{
768
-                        //    ipjjtms = ithms / ijtcs;//平均接通秒数
769
-                        //    ipjzlms = izlms / ijtcs;//平均振铃秒数
770
-                        //}
771
-                        //else
772
-                        //{
773
-                        //    ipjjtms = 0;//平均接通秒数
774
-                        //    ipjzlms = 0;//平均振铃秒数
775
-                        //}
776
-                        //drNew["平均接听通话秒数"] = ipjjtms.ToString();
777
-                        //drNew["平均振铃秒数"] = ipjzlms.ToString();
328
+                        if (columns.Contains("呼入通话分钟数")) { drNew["呼入通话分钟数"] = (ithms / 60).ToString(); }
778
 
329
 
779
                         #endregion
330
                         #endregion
780
 
331
 
781
                         #region 呼出
332
                         #region 呼出
782
 
333
 
783
                         //--ct=呼出总次数   st=呼出总通话时长
334
                         //--ct=呼出总次数   st=呼出总通话时长
784
-                        DataTable dtCallOut = DbHelperSQL.Query($"select count(CallID) as ct,SUM(PeriodTalking) as st from rep_ext_call_out where IsCallOutSucceed = 1 and CallerAgentID ={dt.Rows[i]["F_WorkNumber"].ToString()} {strCallOutSql}").Tables[0];
335
+                        DataTable dtCallOut = DbHelperSQL.Query($"select count(CallID) as ct,SUM(PeriodTalking) as st from rep_ext_call_out where IsCallOutSucceed = 1 and CallerAgentID ={arr[i]["F_WorkNumber"].ToString()} {strCallOutSql}").Tables[0];
785
                         //-- ct=呼出接通次数
336
                         //-- ct=呼出接通次数
786
-                        DataTable dtCallOut2 = DbHelperSQL.Query($"select count(CallID) as ct from rep_ext_call_out where IsCallOutSucceed=1 and CallerAgentID={dt.Rows[i]["F_WorkNumber"].ToString()} {strCallOutSql}  and IsCallOutSucceed=1 ").Tables[0];
337
+                        DataTable dtCallOut2 = DbHelperSQL.Query($"select count(CallID) as ct from rep_ext_call_out where IsCallOutSucceed=1 and CallerAgentID={arr[i]["F_WorkNumber"].ToString()} {strCallOutSql}  and IsCallOutSucceed=1 ").Tables[0];
787
 
338
 
788
                         if (dtCallOut.Rows.Count > 0)
339
                         if (dtCallOut.Rows.Count > 0)
789
                         {
340
                         {
797
 
348
 
798
                         if (callOutCount != 0)
349
                         if (callOutCount != 0)
799
                         {
350
                         {
800
-                            drNew["呼出电话数"] = callOutCount;
801
-                            drNew["呼通量"] = callOutJTCount;
802
-                            drNew["呼通率"] = (callOutJTCount / callOutCount * 100).ToString("0.00") + "%";
803
-                            drNew["呼出通话分钟数"] = (callOutJTSeconds / 60).ToString();
351
+                            if (columns.Contains("呼出电话数")) { drNew["呼出电话数"] = callOutCount; }
352
+                            if (columns.Contains("呼通量")) { drNew["呼通量"] = callOutJTCount; }
353
+                            if (columns.Contains("呼通率")) { drNew["呼通率"] = (callOutJTCount / callOutCount * 100).ToString("0.00") + "%"; }
354
+                            if (columns.Contains("呼出通话分钟数")) { drNew["呼出通话分钟数"] = (callOutJTSeconds / 60).ToString(); }
804
                         }
355
                         }
805
                         else
356
                         else
806
                         {
357
                         {
807
-                            drNew["呼出电话数"] = 0;
808
-                            drNew["呼通量"] = 0;
809
-                            drNew["呼通率"] = "0%";
810
-                            drNew["呼出通话分钟数"] = 0;
358
+                            if (columns.Contains("呼出电话数")) { drNew["呼出电话数"] = 0; }
359
+                            if (columns.Contains("呼通量")) { drNew["呼通量"] = 0; }
360
+                            if (columns.Contains("呼通率")) { drNew["呼通率"] = "0%"; }
361
+                            if (columns.Contains("呼出通话分钟数")) { drNew["呼出通话分钟数"] = 0; }
811
                         }
362
                         }
812
 
363
 
813
                         #endregion
364
                         #endregion
815
                         #region 登录
366
                         #region 登录
816
 
367
 
817
                         #endregion
368
                         #endregion
818
-
819
-                        //                 "呼入电话数", "坐席接通量", "接通率", "通话分钟数",
820
-                        //                 "呼出电话数", "坐席呼通量", "接通率", "呼出分钟数",
821
-
822
-
823
-
824
-
825
-
826
-
827
-
828
-
829
-
830
-
831
-
832
-
833
-
834
-
835
-
836
-
837
-
838
-
839
-
840
-
841
                         //坐席登录次数
369
                         //坐席登录次数
842
-                        DataTable dtAgent = DbHelperSQL.Query("select COUNT(*) as dl,SUM(LoginTimes) as dlsc,SUM(reposenum) as zm,SUM(ReposeTimes) as xx from rep_agent_detail where AgentId=" + dt.Rows[i]["F_WorkNumber"] + " " + sqltimeCallRecords.Replace("TimeAlerting", "TimeLogin")).Tables[0];
370
+                        DataTable dtAgent = DbHelperSQL.Query("select COUNT(*) as dl,SUM(LoginTimes) as dlsc,SUM(reposenum) as zm,SUM(ReposeTimes) as xx from rep_agent_detail where AgentId=" + arr[i]["F_WorkNumber"] + " " + sqltimeCallRecords.Replace("TimeAlerting", "TimeLogin")).Tables[0];
843
                         if (dtAgent != null && dtAgent.Rows.Count > 0)
371
                         if (dtAgent != null && dtAgent.Rows.Count > 0)
844
                         {
372
                         {
845
                             if (dtAgent.Rows[0]["dl"] != null && dtAgent.Rows[0]["dl"].ToString() != "")
373
                             if (dtAgent.Rows[0]["dl"] != null && dtAgent.Rows[0]["dl"].ToString() != "")
906
                         //drNew["呼入占有率"] = (ihrzyl * 100).ToString("0.00") + "%";
434
                         //drNew["呼入占有率"] = (ihrzyl * 100).ToString("0.00") + "%";
907
                         //用户评价
435
                         //用户评价
908
 
436
 
909
-                        object obj = DbHelperSQL.GetSingle("select count(*) from T_Call_CallRecords where MYD is not null and CallState=1 and userid=" + dt.Rows[i]["F_UserId"] + strsqlcall);
437
+                        object obj = DbHelperSQL.GetSingle("select count(*) from T_Call_CallRecords where MYD is not null and CallState=1 and userid=" + arr[i]["F_UserId"] + strsqlcall);
910
                         string myd = "";
438
                         string myd = "";
911
                         if (obj != null)
439
                         if (obj != null)
912
                         {
440
                         {
913
                             myd = obj.ToString();
441
                             myd = obj.ToString();
914
                         }
442
                         }
915
-                        //drNew["用户评价"] = myd;
916
-                        drNew["坐席登录次数"] = izxdlcs.ToString();
917
-                        drNew["登录时长分钟数"] = (idlsc / 60).ToString();
918
-                        drNew["工作时长分钟数"] = (iWorktime / 60).ToString();
919
-                        drNew["平均每天工作时长"] = Math.Round((double.Parse(iWorktime.ToString()) / 60 / 60 / days), 2).ToString();
920
-                        //drNew["平均操作分钟数"] = (ipjczsc / 60).ToString();
921
-                        //drNew["置忙次数"] = izmcs.ToString();
922
-                        drNew["休息时长分钟数"] = (ixxsc / 60).ToString();
923
-                        //drNew["平均每天休息时长"] = Math.Round((double.Parse(ixxsc.ToString()) / 60 / 60 / days), 2).ToString();
924
-                        //drNew["置忙平均休息分钟数"] = (ipjzmxxsc / 60).ToString();
925
-
926
-                        DataSet dszj = DbHelperSQL.Query("select convert(int,SUM(f_qcscore)) as fs,COUNT(*) as fsct from T_Call_CallRecords where F_QCState=1 and UserId=" + dt.Rows[i]["F_UserId"] + strsqlcall);
443
+                        if (columns.Contains("坐席登录次数")) { drNew["坐席登录次数"] = izxdlcs.ToString(); }
444
+                        if (columns.Contains("登录时长分钟数")) { drNew["登录时长分钟数"] = (idlsc / 60).ToString(); }
445
+                        if (columns.Contains("工作时长分钟数")) { drNew["工作时长分钟数"] = (iWorktime / 60).ToString(); }
446
+                        if (columns.Contains("平均每天工作小时数")) { drNew["平均每天工作小时数"] = Math.Round((double.Parse(iWorktime.ToString()) / 60 / 60 / days), 2).ToString(); }
447
+                        if (columns.Contains("休息时长分钟数")) { drNew["休息时长分钟数"] = (ixxsc / 60).ToString(); }
448
+                        DataSet dszj = DbHelperSQL.Query("select convert(int,SUM(f_qcscore)) as fs,COUNT(*) as fsct from T_Call_CallRecords where F_QCState=1 and UserId=" + arr[i]["F_UserId"] + strsqlcall);
927
                         int zfs = 0;
449
                         int zfs = 0;
928
                         if (dszj != null && dszj.Tables.Count > 0)
450
                         if (dszj != null && dszj.Tables.Count > 0)
929
                         {
451
                         {
933
                                 zfs = Convert.ToInt32(dtzj.Rows[0]["fs"].ToString()) / int.Parse(dtzj.Rows[0]["fsct"].ToString());
455
                                 zfs = Convert.ToInt32(dtzj.Rows[0]["fs"].ToString()) / int.Parse(dtzj.Rows[0]["fsct"].ToString());
934
                             }
456
                             }
935
                         }
457
                         }
936
-                        drNew["质检平均成绩"] = zfs.ToString();
937
-
458
+                        if (columns.Contains("质检平均成绩"))
459
+                        {
460
+                            drNew["质检平均成绩"] = zfs.ToString();
461
+                        }
938
                         dtNew.Rows.Add(drNew);
462
                         dtNew.Rows.Add(drNew);
939
                     }
463
                     }
940
                 }
464
                 }

+ 12 - 2
CallCenterApi/CallCenterApi.Interface/CallCenterApi.Interface/Controllers/tel/CallrecordsController.cs

15
 {
15
 {
16
     public class CallrecordsController : BaseController
16
     public class CallrecordsController : BaseController
17
     {
17
     {
18
+        private readonly BLL.T_Sys_Department deptBLL = new BLL.T_Sys_Department();
18
         //获取通话记录列表
19
         //获取通话记录列表
19
         public ActionResult GetList(string phone, string usercode)
20
         public ActionResult GetList(string phone, string usercode)
20
         {
21
         {
70
                 {
71
                 {
71
                     sql += " and UserCode='" + usercode + "'";
72
                     sql += " and UserCode='" + usercode + "'";
72
                 }
73
                 }
73
-                if (!string.IsNullOrWhiteSpace(dept) && Convert.ToInt32(dept) >= 0)
74
+                //if (!string.IsNullOrWhiteSpace(dept) && Convert.ToInt32(dept) >= 0)
75
+                //{
76
+                //    sql += " and UserCode in (select F_UserCode from T_Sys_UserAccount where F_DeptId=" + dept.Trim() + ")";
77
+                //}
78
+
79
+                if (!string.IsNullOrWhiteSpace(dept))
74
                 {
80
                 {
75
-                    sql += " and UserCode in (select F_UserCode from T_Sys_UserAccount where F_DeptId=" + dept.Trim() + ")";
81
+                    var deptModel = deptBLL.GetModel(!string.IsNullOrWhiteSpace(dept) ? Convert.ToInt32(dept) : 0);
82
+                    if (deptModel != null)
83
+                    {
84
+                        sql += $" and UserCode in (select F_UserCode from T_Sys_UserAccount where F_DeptId in(select F_DeptId from T_Sys_Department where F_DeptCode like '{deptModel.F_DeptCode}%'))";
85
+                    }
76
                 }
86
                 }
77
                 if (phone != null && phone.Trim() != "")
87
                 if (phone != null && phone.Trim() != "")
78
                 {
88
                 {

+ 15 - 0
CallCenterApi/CallCenterApi.Interface/CallCenterApi.Interface/Models/Input/CallInTimeInput.cs

1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Web;
5
+
6
+namespace CallCenterApi.Interface.Models.Input
7
+{
8
+    public class CallInTimeInput
9
+    {
10
+        public DateTime? StartTime1 { get; set; }
11
+        public DateTime? EndTime1 { get; set; }
12
+        public DateTime? StartTime2 { get; set; }
13
+        public DateTime? EndTime2 { get; set; }
14
+    }
15
+}

+ 4 - 1
CallCenterApi/CallCenterApi.Model/T_Sys_UserAccount.cs

304
             set { _f_seartgroup = value; }
304
             set { _f_seartgroup = value; }
305
             get { return _f_seartgroup; }
305
             get { return _f_seartgroup; }
306
         }
306
         }
307
+        public DateTime? StartTime1 { get; set; }
308
+        public DateTime? EndTime1 { get; set; }
309
+        public DateTime? StartTime2 { get; set; }
310
+        public DateTime? EndTime2 { get; set; }
307
         #endregion Model
311
         #endregion Model
308
 
312
 
309
 
313
 
310
         #region 接口添加字段
314
         #region 接口添加字段
311
         public string depname { get; set; }
315
         public string depname { get; set; }
312
         public string zxzname { get; set; }
316
         public string zxzname { get; set; }
313
-
314
         #endregion
317
         #endregion
315
     }
318
     }
316
 }
319
 }