|
|
@@ -29,7 +29,7 @@ namespace CallCenterApi.Interface.Controllers.callout
|
|
29
|
29
|
private BLL.T_CTI_TaskPhonePart taskPhonePartBLL = new BLL.T_CTI_TaskPhonePart();
|
|
30
|
30
|
private BLL.T_Sys_SeatGroup seatGroupBLL = new BLL.T_Sys_SeatGroup();
|
|
31
|
31
|
private BLL.T_Sys_SystemConfig systemConfigBLL = new BLL.T_Sys_SystemConfig();
|
|
32
|
|
-
|
|
|
32
|
+ private BLL.T_Call_PageField pageFieldBLL = new BLL.T_Call_PageField();
|
|
33
|
33
|
#region 外呼任务
|
|
34
|
34
|
/// <summary>
|
|
35
|
35
|
/// 获取列表
|
|
|
@@ -251,9 +251,12 @@ namespace CallCenterApi.Interface.Controllers.callout
|
|
251
|
251
|
var taskId = taskBLL.Add(model);
|
|
252
|
252
|
if (taskId > 0)
|
|
253
|
253
|
{
|
|
254
|
|
- // return Success("添加成功", i);
|
|
255
|
254
|
try
|
|
256
|
255
|
{
|
|
|
256
|
+ pageFieldBLL.UpdateByTaskId(taskId);
|
|
|
257
|
+
|
|
|
258
|
+
|
|
|
259
|
+
|
|
257
|
260
|
model.TaskID = taskId;
|
|
258
|
261
|
DataTable dt = taskTellNumBLL.GetTableDesign();
|
|
259
|
262
|
switch (input.ImportType)
|
|
|
@@ -300,8 +303,24 @@ namespace CallCenterApi.Interface.Controllers.callout
|
|
300
|
303
|
}
|
|
301
|
304
|
break;
|
|
302
|
305
|
case 4: //从Excel中导入
|
|
|
306
|
+ string[] strArr = input.SelectIds.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
|
|
|
307
|
+ var idArr = strArr.Select(x => Convert.ToInt32(x)).ToArray();
|
|
|
308
|
+ var fieldList = pageFieldBLL.DataTableToList(pageFieldBLL.GetList($"F_ID in ({string.Join(",", idArr)})").Tables[0]);
|
|
303
|
309
|
NPOIHelper npoi = new NPOIHelper();
|
|
304
|
|
- var dtExcel = npoi.ExcelToTable(input.PhoneStr, 1);
|
|
|
310
|
+ var dtExcel = npoi.ExcelToTable(input.FilePath, 0);
|
|
|
311
|
+ for (int i = 0; i < dtExcel.Rows.Count; i++)
|
|
|
312
|
+ {
|
|
|
313
|
+ var row = dt.NewRow();
|
|
|
314
|
+ for (int j = 0; j < dtExcel.Columns.Count; j++)
|
|
|
315
|
+ {
|
|
|
316
|
+ if (fieldList.Count < (j + 1))
|
|
|
317
|
+ break;
|
|
|
318
|
+ row["F_TaskId"] = model.TaskID;
|
|
|
319
|
+ var field = fieldList.SingleOrDefault(x => x.F_Id == idArr[j]);
|
|
|
320
|
+ row[field.F_DBFieldlName] = dtExcel.Rows[i][j];
|
|
|
321
|
+ }
|
|
|
322
|
+ dt.Rows.Add(row);
|
|
|
323
|
+ }
|
|
305
|
324
|
break;
|
|
306
|
325
|
}
|
|
307
|
326
|
if (input.CheckFilter1)
|
|
|
@@ -531,7 +550,7 @@ namespace CallCenterApi.Interface.Controllers.callout
|
|
531
|
550
|
sql += $" and F_YJState={filter.YJState} ";
|
|
532
|
551
|
}
|
|
533
|
552
|
|
|
534
|
|
- var field = "t.TaskName,F_Phone,F_FPState,F_HCState,F_YJState,F_Username,tn.F_CreateTime";
|
|
|
553
|
+ var field = "F_Id,t.TaskName,F_Phone,F_FPState,F_HCState,F_YJState,F_Username,tn.F_CreateTime";
|
|
535
|
554
|
if (filter.TaskType == 2)
|
|
536
|
555
|
{
|
|
537
|
556
|
field += " F_Phone,F_HCState,F_YJState";
|
|
|
@@ -572,12 +591,18 @@ namespace CallCenterApi.Interface.Controllers.callout
|
|
572
|
591
|
/// <returns></returns>
|
|
573
|
592
|
public ActionResult GetMyPhoneList(FilterCallPhone filter)
|
|
574
|
593
|
{
|
|
575
|
|
- //if (!Request.IsAuthenticated)
|
|
576
|
|
- // return NoToken("未知错误,请重新登录");
|
|
577
|
|
- var model = taskBLL.GetModel(filter.Id);
|
|
578
|
|
- if (model == null)
|
|
579
|
|
- return Error("外呼任务不存在");
|
|
|
594
|
+ if (!Request.IsAuthenticated)
|
|
|
595
|
+ return NoToken("未知错误,请重新登录");
|
|
|
596
|
+
|
|
580
|
597
|
var sql = "";
|
|
|
598
|
+ if (filter.Id > 0)
|
|
|
599
|
+ {
|
|
|
600
|
+ var model = taskBLL.GetModel(filter.Id);
|
|
|
601
|
+ sql += " and F_TaskId=" + filter.Id;
|
|
|
602
|
+ if (model == null)
|
|
|
603
|
+ return Error("外呼任务不存在");
|
|
|
604
|
+ }
|
|
|
605
|
+
|
|
581
|
606
|
|
|
582
|
607
|
sql += $" and F_UserId={CurrentUser.UserData.F_UserId} ";
|
|
583
|
608
|
if (!string.IsNullOrWhiteSpace(filter.Phone))
|
|
|
@@ -597,7 +622,7 @@ namespace CallCenterApi.Interface.Controllers.callout
|
|
597
|
622
|
sql += $" and F_YJState={filter.YJState} ";
|
|
598
|
623
|
}
|
|
599
|
624
|
|
|
600
|
|
- var field = "t.TaskName,F_Phone,F_FPState,F_HCState,F_YJState,F_Username,tn.F_CreateTime";
|
|
|
625
|
+ var field = "F_Id,t.TaskName,F_Phone,F_FPState,F_HCState,F_YJState,F_Username,tn.F_CreateTime";
|
|
601
|
626
|
if (filter.TaskType == 2)
|
|
602
|
627
|
{
|
|
603
|
628
|
field += " F_Phone,F_HCState,F_YJState";
|
|
|
@@ -608,7 +633,7 @@ namespace CallCenterApi.Interface.Controllers.callout
|
|
608
|
633
|
" T_Call_TaskTelNum tn left join T_CTI_Task t on t.TaskID=tn.F_TaskId ",
|
|
609
|
634
|
" F_Id ",
|
|
610
|
635
|
field,
|
|
611
|
|
- " and F_TaskId=" + filter.Id + sql,
|
|
|
636
|
+ sql,
|
|
612
|
637
|
"ORDER BY F_Id desc",
|
|
613
|
638
|
filter.PageSize,
|
|
614
|
639
|
filter.PageIndex,
|
|
|
@@ -619,6 +644,7 @@ namespace CallCenterApi.Interface.Controllers.callout
|
|
619
|
644
|
{
|
|
620
|
645
|
rows = modelList.Select(x => new
|
|
621
|
646
|
{
|
|
|
647
|
+ id = x.F_Id,
|
|
622
|
648
|
taskname = x.TaskName,
|
|
623
|
649
|
phone = x.F_Phone,
|
|
624
|
650
|
agent = string.IsNullOrWhiteSpace(x.F_UserName) ? "" : x.F_UserName,
|
|
|
@@ -643,6 +669,8 @@ namespace CallCenterApi.Interface.Controllers.callout
|
|
643
|
669
|
// return NoToken("未知错误,请重新登录");
|
|
644
|
670
|
if (count <= 0)
|
|
645
|
671
|
return Error("参数错误");
|
|
|
672
|
+ if (id <= 0)
|
|
|
673
|
+ return Error("请选择外呼任务");
|
|
646
|
674
|
var model = taskBLL.GetModel(id);
|
|
647
|
675
|
if (model == null)
|
|
648
|
676
|
return Error("外呼任务不存在");
|
|
|
@@ -650,11 +678,53 @@ namespace CallCenterApi.Interface.Controllers.callout
|
|
650
|
678
|
var sum = obj == null ? 0 : Convert.ToInt32(obj);
|
|
651
|
679
|
if (sum >= 50)
|
|
652
|
680
|
return Error("请先完成已分配任务");
|
|
653
|
|
- if (DbHelperSQL.ExecuteSql($"UPDATE T_Call_TaskTelNum SET F_FPState=1,F_UserId={CurrentUser.UserData.F_UserId} WHERE F_Id in(SELECT TOP({count}) F_Id FROM T_Call_TaskTelNum WHERE F_TaskId={id} and F_FPState=0)") > 0)
|
|
654
|
|
- return Success("分配成功");
|
|
655
|
|
- return Error("分配失败");
|
|
|
681
|
+ var res = DbHelperSQL.ExecuteSql($"UPDATE T_Call_TaskTelNum SET F_FPState=1,F_UserId={CurrentUser.UserData.F_UserId},F_Username='{CurrentUser.UserData.F_UserName}' WHERE F_Id in(SELECT TOP({count}) F_Id FROM T_Call_TaskTelNum WHERE F_TaskId={id} and F_FPState=0)");
|
|
|
682
|
+ if (res > 0)
|
|
|
683
|
+ return Success($"获取到{res}条可用号码");
|
|
|
684
|
+ return Error("未获取到可用号码");
|
|
|
685
|
+ }
|
|
|
686
|
+ public ActionResult GetMyCallPlan()
|
|
|
687
|
+ {
|
|
|
688
|
+ var taskList = taskBLL.DataTableToList(taskBLL.GetList("state=1").Tables[0]);
|
|
|
689
|
+ return Success("获取成功", taskList.Select(x => new
|
|
|
690
|
+ {
|
|
|
691
|
+ id = x.TaskID,
|
|
|
692
|
+ name = x.TaskName
|
|
|
693
|
+ }));
|
|
656
|
694
|
}
|
|
|
695
|
+ public ActionResult GetCallNumDetail(int id)
|
|
|
696
|
+ {
|
|
|
697
|
+ var taskId = DbHelperSQL.GetSingle($"SELECT F_TaskId FROM T_Call_TaskTelNum WHERE F_ID={id}");
|
|
|
698
|
+ if (taskId == null || Convert.ToInt32(taskId) <= 0)
|
|
|
699
|
+ return Error("参数错误");
|
|
|
700
|
+ var fieldList = pageFieldBLL.DataTableToList(pageFieldBLL.GetList($"F_TaskId={taskId}").Tables[0]);
|
|
|
701
|
+ StringBuilder sb = new StringBuilder();
|
|
|
702
|
+ Dictionary<string, string> dicTitle = new Dictionary<string, string>();
|
|
|
703
|
+ foreach (var item in fieldList)
|
|
|
704
|
+ {
|
|
|
705
|
+ sb.Append(item.F_DBFieldlName + ",");
|
|
|
706
|
+ dicTitle.Add(item.F_DBFieldlName, item.F_Name);
|
|
|
707
|
+ }
|
|
|
708
|
+ if (!string.IsNullOrWhiteSpace(sb.ToString()))
|
|
|
709
|
+ {
|
|
|
710
|
+ var callNum = DbHelperSQL.Query($"SELECT {sb.ToString().Trim(',')} FROM T_Call_TaskTelNum WHERE F_ID={id}").Tables[0];
|
|
|
711
|
+ Dictionary<string, string> dic = new Dictionary<string, string>();
|
|
|
712
|
+ for (int j = 0; j < callNum.Columns.Count; j++)
|
|
|
713
|
+ {
|
|
|
714
|
+ dic.Add(callNum.Columns[j].ColumnName, callNum.Rows[0][j].ToString());
|
|
|
715
|
+ }
|
|
|
716
|
+
|
|
657
|
717
|
|
|
|
718
|
+
|
|
|
719
|
+ return Success("获取成功", dic.Select(x => new
|
|
|
720
|
+ {
|
|
|
721
|
+ field = x.Key,
|
|
|
722
|
+ text = dicTitle[x.Key],
|
|
|
723
|
+ value = x.Value
|
|
|
724
|
+ }));
|
|
|
725
|
+ }
|
|
|
726
|
+ return Success("");
|
|
|
727
|
+ }
|
|
658
|
728
|
#endregion
|
|
659
|
729
|
|
|
660
|
730
|
#region 导入导出号码
|