Dun.Jason 1 жил өмнө
parent
commit
b5db7d66cf

+ 1 - 1
src/CallCenter.Api/Controllers/HomeController.cs

@@ -63,7 +63,7 @@ public class HomeController : BaseController
     {
         var db = _uow.Db;
         db.DbMaintenance.CreateDatabase();
-        db.CodeFirst.InitTables<CallRecordFail>();
+        db.CodeFirst.InitTables<DaySetting>();
         return Task.CompletedTask;
     }
 }

+ 12 - 232
src/CallCenter.Api/appsettings.Development.json

@@ -50,7 +50,7 @@
   "Cache": {
     "Host": "110.188.24.182",
     "Port": 50179,
-    "Password": "fengwo22@@",
+    //"Password": "fengwo22@@",
     "Database": 2
   },
   "Swagger": true,
@@ -76,7 +76,8 @@
         "WorkToGroup": "1",
         "RestToGroup": "1",
         "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
-        "BusyGroup": ""
+        "BusyGroup": "",
+        "UseWorkDay": true
       },
       {
         //"NumNo": "12345",
@@ -86,12 +87,13 @@
         "AfterBegin": "12:00",
         "AfterEnd": "23:59",
         "WorkDay": [ 1, 2, 3, 4, 5, 6, 0 ],
-        "WorkCategory": "",//"08db2b5d-50b8-4830-83c5-ebe2c3b4364e",
+        "WorkCategory": "", //"08db2b5d-50b8-4830-83c5-ebe2c3b4364e",
         "RestCategory": "",
         "WorkToGroup": "1",
-        "RestToGroup": "1",
+        "RestToGroup": "2",
         "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
-        "BusyGroup": "2"
+        "BusyGroup": "2",
+        "UseWorkDay": true
       },
       {
         "NumNo": "3490",
@@ -102,237 +104,14 @@
         "WorkDay": [ 1, 2, 3, 4, 5, 6, 0 ],
         "WorkCategory": "",
         "RestCategory": "",
-        "WorkToGroup": "2",
-        "RestToGroup": "1",
-        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
-        "BusyGroup": ""
-      },
-      {
-        "NumNo": "12319",
-        "MorningBegin": "00:00",
-        "MorningEnd": "12:00",
-        "AfterBegin": "12:00",
-        "AfterEnd": "23:59",
-        "WorkDay": [ 1, 2, 3, 4, 5, 6, 0 ],
-        "WorkCategory": "",
-        "RestCategory": "",
-        "WorkToGroup": "1",
-        "RestToGroup": "1",
-        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
-        "BusyGroup": ""
-      },
-      {
-        "NumNo": "3497",
-        "MorningBegin": "00:00",
-        "MorningEnd": "12:00",
-        "AfterBegin": "12:00",
-        "AfterEnd": "23:59",
-        "WorkDay": [ 1, 2, 3, 4, 5, 6, 0 ],
-        "WorkCategory": "",
-        "RestCategory": "",
-        "WorkToGroup": "1",
-        "RestToGroup": "1",
-        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
-        "BusyGroup": ""
-      },
-      {
-        "NumNo": "12310",
-        "MorningBegin": "00:00",
-        "MorningEnd": "12:00",
-        "AfterBegin": "12:00",
-        "AfterEnd": "23:59",
-        "WorkDay": [ 1, 2, 3, 4, 5, 6, 0 ],
-        "WorkCategory": "",
-        "RestCategory": "",
-        "WorkToGroup": "1",
-        "RestToGroup": "1",
-        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
-        "BusyGroup": ""
-      },
-      {
-        "NumNo": "12312",
-        "MorningBegin": "00:00",
-        "MorningEnd": "12:00",
-        "AfterBegin": "12:00",
-        "AfterEnd": "23:59",
-        "WorkDay": [ 1, 2, 3, 4, 5, 6, 0 ],
-        "WorkCategory": "",
-        "RestCategory": "",
-        "WorkToGroup": "1",
-        "RestToGroup": "1",
-        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
-        "BusyGroup": ""
-      },
-      {
-        "NumNo": "12313",
-        "MorningBegin": "00:00",
-        "MorningEnd": "12:00",
-        "AfterBegin": "12:00",
-        "AfterEnd": "23:59",
-        "WorkDay": [ 1, 2, 3, 4, 5, 6, 0 ],
-        "WorkCategory": "",
-        "RestCategory": "",
-        "WorkToGroup": "1",
-        "RestToGroup": "1",
-        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
-        "BusyGroup": ""
-      },
-      {
-        "NumNo": "12318",
-        "MorningBegin": "00:00",
-        "MorningEnd": "12:00",
-        "AfterBegin": "12:00",
-        "AfterEnd": "23:59",
-        "WorkDay": [ 1, 2, 3, 4, 5, 6, 0 ],
-        "WorkCategory": "",
-        "RestCategory": "",
-        "WorkToGroup": "1",
-        "RestToGroup": "1",
-        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
-        "BusyGroup": ""
-      },
-      {
-        "NumNo": "12336",
-        "MorningBegin": "00:00",
-        "MorningEnd": "12:00",
-        "AfterBegin": "12:00",
-        "AfterEnd": "23:59",
-        "WorkDay": [ 1, 2, 3, 4, 5, 6, 0 ],
-        "WorkCategory": "",
-        "RestCategory": "",
-        "WorkToGroup": "1",
-        "RestToGroup": "1",
-        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
-        "BusyGroup": ""
-      },
-      {
-        "NumNo": "12338",
-        "MorningBegin": "00:00",
-        "MorningEnd": "12:00",
-        "AfterBegin": "12:00",
-        "AfterEnd": "23:59",
-        "WorkDay": [ 1, 2, 3, 4, 5, 6, 0 ],
-        "WorkCategory": "",
-        "RestCategory": "",
-        "WorkToGroup": "1",
-        "RestToGroup": "1",
-        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
-        "BusyGroup": ""
-      },
-      {
-        "NumNo": "12349",
-        "MorningBegin": "00:00",
-        "MorningEnd": "12:00",
-        "AfterBegin": "12:00",
-        "AfterEnd": "23:59",
-        "WorkDay": [ 1, 2, 3, 4, 5, 6, 0 ],
-        "WorkCategory": "",
-        "RestCategory": "",
-        "WorkToGroup": "1",
-        "RestToGroup": "1",
-        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
-        "BusyGroup": ""
-      },
-      {
-        "NumNo": "12350",
-        "MorningBegin": "00:00",
-        "MorningEnd": "12:00",
-        "AfterBegin": "12:00",
-        "AfterEnd": "23:59",
-        "WorkDay": [ 1, 2, 3, 4, 5, 6, 0 ],
-        "WorkCategory": "",
-        "RestCategory": "",
-        "WorkToGroup": "1",
-        "RestToGroup": "1",
-        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
-        "BusyGroup": ""
-      },
-      {
-        "NumNo": "12351",
-        "MorningBegin": "00:00",
-        "MorningEnd": "12:00",
-        "AfterBegin": "12:00",
-        "AfterEnd": "23:59",
-        "WorkDay": [ 1, 2, 3, 4, 5, 6, 0 ],
-        "WorkCategory": "",
-        "RestCategory": "",
-        "WorkToGroup": "1",
-        "RestToGroup": "1",
-        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
-        "BusyGroup": ""
-      },
-      {
-        "NumNo": "12355",
-        "MorningBegin": "00:00",
-        "MorningEnd": "12:00",
-        "AfterBegin": "12:00",
-        "AfterEnd": "23:59",
-        "WorkDay": [ 1, 2, 3, 4, 5, 6, 0 ],
-        "WorkCategory": "",
-        "RestCategory": "",
-        "WorkToGroup": "1",
-        "RestToGroup": "1",
-        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
-        "BusyGroup": ""
-      },
-      {
-        "NumNo": "12356",
-        "MorningBegin": "00:00",
-        "MorningEnd": "12:00",
-        "AfterBegin": "12:00",
-        "AfterEnd": "23:59",
-        "WorkDay": [ 1, 2, 3, 4, 5, 6, 0 ],
-        "WorkCategory": "",
-        "RestCategory": "",
-        "WorkToGroup": "1",
-        "RestToGroup": "1",
-        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
-        "BusyGroup": ""
-      },
-      {
-        "NumNo": "12363",
-        "MorningBegin": "00:00",
-        "MorningEnd": "12:00",
-        "AfterBegin": "12:00",
-        "AfterEnd": "23:59",
-        "WorkDay": [ 1, 2, 3, 4, 5, 6, 0 ],
-        "WorkCategory": "",
-        "RestCategory": "",
-        "WorkToGroup": "1",
-        "RestToGroup": "1",
-        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
-        "BusyGroup": ""
-      },
-      {
-        "NumNo": "12385",
-        "MorningBegin": "00:00",
-        "MorningEnd": "12:00",
-        "AfterBegin": "12:00",
-        "AfterEnd": "23:59",
-        "WorkDay": [ 1, 2, 3, 4, 5, 6, 0 ],
-        "WorkCategory": "",
-        "RestCategory": "",
-        "WorkToGroup": "1",
-        "RestToGroup": "1",
-        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
-        "BusyGroup": ""
-      },
-      {
-        "NumNo": "96198",
-        "MorningBegin": "00:00",
-        "MorningEnd": "12:00",
-        "AfterBegin": "12:00",
-        "AfterEnd": "23:59",
-        "WorkDay": [ 1, 2, 3, 4, 5, 6, 0 ],
-        "WorkCategory": "",
-        "RestCategory": "",
         "WorkToGroup": "1",
         "RestToGroup": "1",
         "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
-        "BusyGroup": ""
+        "BusyGroup": "",
+        "UseWorkDay": false
       },
       {
-        "NumNo": "96960",
+        "NumNo": "default",
         "MorningBegin": "00:00",
         "MorningEnd": "12:00",
         "AfterBegin": "12:00",
@@ -343,7 +122,8 @@
         "WorkToGroup": "1",
         "RestToGroup": "1",
         "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
-        "BusyGroup": ""
+        "BusyGroup": "",
+        "UseWorkDay": false
       }
     ]
   },

+ 61 - 21
src/CallCenter.Api/appsettings.json

@@ -69,7 +69,9 @@
         "RestCategory": "",
         "WorkToGroup": "1",
         "RestToGroup": "1",
-        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2"
+        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
+        "BusyGroup": "",
+        "UseWorkDay": true
       },
       {
         //"NumNo": "12345",
@@ -79,11 +81,13 @@
         "AfterBegin": "12:00",
         "AfterEnd": "23:59",
         "WorkDay": [ 1, 2, 3, 4, 5, 6, 0 ],
-        "WorkCategory": "08dae7d5-4332-40e8-85dd-ad210e40270b",
+        "WorkCategory": "", //"08db2b5d-50b8-4830-83c5-ebe2c3b4364e",
         "RestCategory": "",
         "WorkToGroup": "1",
         "RestToGroup": "1",
-        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2"
+        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
+        "BusyGroup": "2",
+        "UseWorkDay": false
       },
       {
         "NumNo": "3490",
@@ -96,7 +100,9 @@
         "RestCategory": "",
         "WorkToGroup": "2",
         "RestToGroup": "1",
-        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2"
+        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
+        "BusyGroup": "",
+        "UseWorkDay": false
       },
       {
         "NumNo": "12319",
@@ -109,7 +115,9 @@
         "RestCategory": "",
         "WorkToGroup": "1",
         "RestToGroup": "1",
-        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2"
+        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
+        "BusyGroup": "",
+        "UseWorkDay": false
       },
       {
         "NumNo": "3497",
@@ -122,7 +130,9 @@
         "RestCategory": "",
         "WorkToGroup": "1",
         "RestToGroup": "1",
-        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2"
+        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
+        "BusyGroup": "",
+        "UseWorkDay": false
       },
       {
         "NumNo": "12310",
@@ -135,7 +145,9 @@
         "RestCategory": "",
         "WorkToGroup": "1",
         "RestToGroup": "1",
-        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2"
+        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
+        "BusyGroup": "",
+        "UseWorkDay": false
       },
       {
         "NumNo": "12312",
@@ -148,7 +160,9 @@
         "RestCategory": "",
         "WorkToGroup": "1",
         "RestToGroup": "1",
-        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2"
+        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
+        "BusyGroup": "",
+        "UseWorkDay": false
       },
       {
         "NumNo": "12313",
@@ -161,7 +175,9 @@
         "RestCategory": "",
         "WorkToGroup": "1",
         "RestToGroup": "1",
-        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2"
+        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
+        "BusyGroup": "",
+        "UseWorkDay": false
       },
       {
         "NumNo": "12318",
@@ -174,7 +190,9 @@
         "RestCategory": "",
         "WorkToGroup": "1",
         "RestToGroup": "1",
-        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2"
+        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
+        "BusyGroup": "",
+        "UseWorkDay": false
       },
       {
         "NumNo": "12336",
@@ -187,7 +205,9 @@
         "RestCategory": "",
         "WorkToGroup": "1",
         "RestToGroup": "1",
-        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2"
+        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
+        "BusyGroup": "",
+        "UseWorkDay": false
       },
       {
         "NumNo": "12338",
@@ -200,7 +220,9 @@
         "RestCategory": "",
         "WorkToGroup": "1",
         "RestToGroup": "1",
-        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2"
+        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
+        "BusyGroup": "",
+        "UseWorkDay": false
       },
       {
         "NumNo": "12349",
@@ -213,7 +235,9 @@
         "RestCategory": "",
         "WorkToGroup": "1",
         "RestToGroup": "1",
-        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2"
+        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
+        "BusyGroup": "",
+        "UseWorkDay": false
       },
       {
         "NumNo": "12350",
@@ -226,7 +250,9 @@
         "RestCategory": "",
         "WorkToGroup": "1",
         "RestToGroup": "1",
-        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2"
+        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
+        "BusyGroup": "",
+        "UseWorkDay": false
       },
       {
         "NumNo": "12351",
@@ -239,7 +265,9 @@
         "RestCategory": "",
         "WorkToGroup": "1",
         "RestToGroup": "1",
-        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2"
+        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
+        "BusyGroup": "",
+        "UseWorkDay": false
       },
       {
         "NumNo": "12355",
@@ -252,7 +280,9 @@
         "RestCategory": "",
         "WorkToGroup": "1",
         "RestToGroup": "1",
-        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2"
+        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
+        "BusyGroup": "",
+        "UseWorkDay": false
       },
       {
         "NumNo": "12356",
@@ -265,7 +295,9 @@
         "RestCategory": "",
         "WorkToGroup": "1",
         "RestToGroup": "1",
-        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2"
+        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
+        "BusyGroup": "",
+        "UseWorkDay": false
       },
       {
         "NumNo": "12363",
@@ -278,7 +310,9 @@
         "RestCategory": "",
         "WorkToGroup": "1",
         "RestToGroup": "1",
-        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2"
+        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
+        "BusyGroup": "",
+        "UseWorkDay": false
       },
       {
         "NumNo": "12385",
@@ -291,7 +325,9 @@
         "RestCategory": "",
         "WorkToGroup": "1",
         "RestToGroup": "1",
-        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2"
+        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
+        "BusyGroup": "",
+        "UseWorkDay": false
       },
       {
         "NumNo": "96198",
@@ -304,7 +340,9 @@
         "RestCategory": "",
         "WorkToGroup": "1",
         "RestToGroup": "1",
-        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2"
+        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
+        "BusyGroup": "",
+        "UseWorkDay": false
       },
       {
         "NumNo": "96960",
@@ -317,7 +355,9 @@
         "RestCategory": "",
         "WorkToGroup": "1",
         "RestToGroup": "1",
-        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2"
+        "EvaluateCategory": "08db1e04-70c8-4419-8d4a-9b7172678ab2",
+        "BusyGroup": "",
+        "UseWorkDay": false
       }
     ]
   },

+ 4 - 3
src/CallCenter.Application/CacheManager/CallRecordFailManager.cs

@@ -41,6 +41,7 @@ namespace CallCenter.Application.CacheManager
                         {
                             using var client = _httpClientFactory.CreateClient();
                             client.DefaultRequestHeaders.ConnectionClose = true;
+                            _logger.LogInformation("二次推送内容:" + item.FailString);
                             var content = new StringContent(item.FailString, Encoding.UTF8, "application/json");
                             HttpResponseMessage responseMessage;
                             switch (item.FailType)
@@ -61,10 +62,10 @@ namespace CallCenter.Application.CacheManager
                             switch (item.FailType)
                             {
                                 case Share.Enums.EFailType.CallRecord:
-                                    _logger.LogInformation("推送通话报告结果:" + respContentString);
+                                    _logger.LogInformation("二次推送通话报告结果:" + respContentString);
                                     break;
                                 case Share.Enums.EFailType.NotReceived:
-                                    _logger.LogInformation("推送未接听报告结果:" + respContentString);
+                                    _logger.LogInformation("二次推送未接听报告结果:" + respContentString);
                                     break;
                                 default:
                                     break;
@@ -74,7 +75,7 @@ namespace CallCenter.Application.CacheManager
                         }
                         catch (Exception ex)
                         {
-                            _logger.LogInformation("推送通话报告失败:" + ex.Message + " 错误ID:" + item.Id);
+                            _logger.LogInformation("二次推送通话报告失败:" + ex.Message + " 错误ID:" + item.Id);
                         }
                     }
                 }

+ 7 - 7
src/CallCenter.Application/Handlers/FlowControl/CdrNotificationHandler.cs

@@ -165,17 +165,17 @@ namespace CallCenter.Application.Handlers
                             var list = new List<OutCallDto>();
                             list.Add(callDto);
 
-                            string respContentString = "";
+                            string requestContent = "";
                             try
                             {
                                 using var client = _httpClientFactory.CreateClient();
                                 client.DefaultRequestHeaders.ConnectionClose = true;
-                                var requestContent = JsonSerializer.Serialize(list);
+                                requestContent = JsonSerializer.Serialize(list);
                                 _logger.LogInformation(requestContent);
                                 var content = new StringContent(requestContent, Encoding.UTF8, "application/json");
                                 var responseMessage = await client.PostAsync(_sendCallRecordOptions.Value.FwUrl, content, cancellationToken);
                                 var respContent = responseMessage.Content;
-                                respContentString = await respContent.ReadAsStringAsync(cancellationToken);
+                                var respContentString = await respContent.ReadAsStringAsync(cancellationToken);
                                 var result = JsonSerializer.Deserialize<FwResult>(respContentString);
                                 _logger.LogInformation("推送通话报告结果:" + respContentString);
                             }
@@ -184,7 +184,7 @@ namespace CallCenter.Application.Handlers
                                 //新增未推送成功记录
                                 var callRecordFail = new CallRecordFail();
                                 callRecordFail.FailType = EFailType.CallRecord;
-                                callRecordFail.FailString = respContentString;
+                                callRecordFail.FailString = requestContent;
                                 callRecordFail.FailReason = ex.Message;
                                 await _callRecordFailRepository.AddAsync(callRecordFail, cancellationToken);
                                
@@ -236,12 +236,12 @@ namespace CallCenter.Application.Handlers
                                     {
                                         using var client = _httpClientFactory.CreateClient();
                                         client.DefaultRequestHeaders.ConnectionClose = true;
-                                        var requestContent = JsonSerializer.Serialize(NotReceivedList);
+                                        requestContent = JsonSerializer.Serialize(NotReceivedList);
                                         _logger.LogInformation(requestContent);
                                         var content = new StringContent(requestContent, Encoding.UTF8, "application/json");
                                         var responseMessage = await client.PostAsync(_sendCallRecordOptions.Value.NotReceivedUrl, content, cancellationToken);
                                         var respContent = responseMessage.Content;
-                                        respContentString = await respContent.ReadAsStringAsync(cancellationToken);
+                                        var respContentString = await respContent.ReadAsStringAsync(cancellationToken);
                                         var result = JsonSerializer.Deserialize<FwResult>(respContentString);
                                         _logger.LogInformation("推送未接听报告结果:" + respContentString);
                                     }
@@ -250,7 +250,7 @@ namespace CallCenter.Application.Handlers
                                         //新增未推送成功记录
                                         var callRecordFail = new CallRecordFail();
                                         callRecordFail.FailType = EFailType.NotReceived;
-                                        callRecordFail.FailString = respContentString;
+                                        callRecordFail.FailString = requestContent;
                                         callRecordFail.FailReason = ex.Message;
                                         await _callRecordFailRepository.AddAsync(callRecordFail, cancellationToken);
                                         _logger.LogInformation("推送未接听报告失败:" + ex.Message);

+ 8 - 0
src/CallCenter.Application/Handlers/FlowControl/IncomingNotificationHandler.cs

@@ -138,6 +138,14 @@ namespace CallCenter.Application.Handlers
                             }
                         }
 
+                            #region 工作日逻辑
+                            
+
+
+
+
+                            #endregion
+
                             _logger.LogInformation("transfer to group.no:{groupNo}", correct.ReturnValue);
 
                             await _newRockClient.VisitorToGroupQueue(new VisitorToGroupQueueRequest()

+ 29 - 0
src/CallCenter.Repository.SqlSugar/DaySettingRepository.cs

@@ -0,0 +1,29 @@
+using CallCenter.Settings;
+using CallCenter.Tools;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using XF.Domain.Dependency;
+
+namespace CallCenter.Repository.SqlSugar
+{
+    public class DaySettingRepository : BaseRepository<DaySetting>, IDaySettingRepository, IScopeDependency
+    {
+        public DaySettingRepository(ISugarUnitOfWork<CallCenterDbContext> uow) : base(uow)
+        {
+        }
+
+        public bool IsWorkDay(IReadOnlyList<DaySetting> list, DateTime date)
+        {
+            var model = list.FirstOrDefault(x => x.Day.Date == date.Date);
+            if (model!=null)
+            {
+                return model.IsWorkDay;
+            }
+            return WeekTool.IsWorkDay(date);
+        }
+    }
+}

+ 2 - 0
src/CallCenter/Calls/CallRecordFail.cs

@@ -1,4 +1,5 @@
 using CallCenter.Share.Enums;
+using SqlSugar;
 using System.ComponentModel;
 using XF.Domain;
 
@@ -7,6 +8,7 @@ namespace CallCenter.Calls
     [Description("通话记录失败记录")]
     public class CallRecordFail: CreationEntity
     {
+        [SugarColumn(ColumnDataType = "varchar(6000)", IsNullable = true)]
         public string FailString { get; set; }
 
         public string FailReason { get; set; }

+ 70 - 13
src/CallCenter/Ivrs/IvrDomainService.cs

@@ -25,6 +25,8 @@ public class IvrDomainService : IIvrDomainService, IScopeDependency
     private readonly ILogger<IvrDomainService> _logger;
     private readonly IOptionsSnapshot<WorkTimeSettings> _worktimeOptions;
     private readonly ITypedCache<WorkTimeSettings> _worktimeCache;
+    private readonly ITypedCache<IReadOnlyList<DaySetting>> _daySettingCache;
+    private readonly IDaySettingRepository _daySettingRepository;
 
     public IvrDomainService(
         IDeviceManager deviceManager,
@@ -36,7 +38,9 @@ public class IvrDomainService : IIvrDomainService, IScopeDependency
         IMapper mapper,
         ILogger<IvrDomainService> logger,
         IOptionsSnapshot<WorkTimeSettings> worktimeOptions,
-        ITypedCache<WorkTimeSettings> worktimeCache)
+        ITypedCache<WorkTimeSettings> worktimeCache,
+        ITypedCache<IReadOnlyList<DaySetting>> daySettingCache,
+        IDaySettingRepository daySettingRepository)
     {
         _deviceManager = deviceManager;
         _ivrRepository = ivrRepository;
@@ -48,6 +52,9 @@ public class IvrDomainService : IIvrDomainService, IScopeDependency
         _logger = logger;
         _worktimeOptions = worktimeOptions;
         _worktimeCache = worktimeCache;
+        _daySettingCache = daySettingCache;
+        _daySettingRepository = daySettingRepository;
+
     }
 
     /// <summary>
@@ -305,7 +312,12 @@ public class IvrDomainService : IIvrDomainService, IScopeDependency
     public CorrectIvr GetCorrectIvr(string to, bool isEvaluate = false)
     {
         var worktimeSettings = _worktimeCache.GetOrSet("worktimesettings", d => _worktimeOptions.Value, TimeSpan.FromDays(1));
-        var correct = GetCorrectCategory(worktimeSettings.LineSetting.First(x => x.NumNo == to), isEvaluate);
+        var setting = worktimeSettings.LineSetting.FirstOrDefault(x => x.NumNo == to);
+        if (setting == null)
+        {
+            setting = worktimeSettings.LineSetting.First(x => x.NumNo == "default");
+        }
+        var correct = GetCorrectCategory(setting, isEvaluate);
         return correct;
     }
 
@@ -317,31 +329,76 @@ public class IvrDomainService : IIvrDomainService, IScopeDependency
         {
             return new CorrectIvr() { eCorrectIvr = ECorrectIvr.Ivr, ReturnValue = settings.EvaluateCategory,BusyGroup = settings.BusyGroup };
         }
-
-        if (!settings.WorkDay.Contains((int)DateTime.Now.DayOfWeek))
-            return new CorrectIvr() { eCorrectIvr = ECorrectIvr.Group, ReturnValue = settings.RestToGroup, BusyGroup = settings.BusyGroup };
         var time = TimeOnly.FromDateTime(DateTime.Now);
-        if ((time >= TimeOnly.Parse(settings.MorningBegin) && time <= TimeOnly.Parse(settings.MorningEnd))
-            || (time >= TimeOnly.Parse(settings.AfterBegin) && time <= TimeOnly.Parse(settings.AfterEnd)))
+        //是否使用工作日逻辑
+        if (settings.UseWorkDay)
         {
-            if (!string.IsNullOrEmpty(settings.WorkCategory))
+            var daySetting = _daySettingCache.GetOrSet(DaySetting.Key, _daySettingRepository.QueryAsync().GetAwaiter().GetResult());
+            bool isWorkDay = _daySettingRepository.IsWorkDay(daySetting, DateTime.Now);
+            if (isWorkDay)
             {
-                return new CorrectIvr() { eCorrectIvr = ECorrectIvr.Ivr, ReturnValue = settings.WorkCategory, BusyGroup = settings.BusyGroup };
+                if ((time >= TimeOnly.Parse(settings.MorningBegin) && time <= TimeOnly.Parse(settings.MorningEnd))
+                || (time >= TimeOnly.Parse(settings.AfterBegin) && time <= TimeOnly.Parse(settings.AfterEnd)))
+                {
+                    if (!string.IsNullOrEmpty(settings.WorkCategory))
+                    {
+                        return new CorrectIvr() { eCorrectIvr = ECorrectIvr.Ivr, ReturnValue = settings.WorkCategory, BusyGroup = settings.BusyGroup };
+                    }
+                    else
+                    {
+                        return new CorrectIvr() { eCorrectIvr = ECorrectIvr.Group, ReturnValue = settings.WorkToGroup, BusyGroup = settings.BusyGroup };
+                    }
+                }
+                else
+                {
+                    if (!string.IsNullOrEmpty(settings.RestCategory))
+                    {
+                        return new CorrectIvr() { eCorrectIvr = ECorrectIvr.Ivr, ReturnValue = settings.RestCategory, BusyGroup = settings.BusyGroup };
+                    }
+                    else
+                    {
+                        return new CorrectIvr() { eCorrectIvr = ECorrectIvr.Group, ReturnValue = settings.RestToGroup, BusyGroup = settings.BusyGroup };
+                    }
+                }
             }
             else
             {
-                return new CorrectIvr() { eCorrectIvr = ECorrectIvr.Group, ReturnValue = settings.WorkToGroup, BusyGroup = settings.BusyGroup };
+                if (!string.IsNullOrEmpty(settings.RestCategory))
+                {
+                    return new CorrectIvr() { eCorrectIvr = ECorrectIvr.Ivr, ReturnValue = settings.RestCategory, BusyGroup = settings.BusyGroup };
+                }
+                else
+                {
+                    return new CorrectIvr() { eCorrectIvr = ECorrectIvr.Group, ReturnValue = settings.RestToGroup, BusyGroup = settings.BusyGroup };
+                }
             }
         }
         else
         {
-            if (!string.IsNullOrEmpty(settings.RestCategory))
+            if (!settings.WorkDay.Contains((int)DateTime.Now.DayOfWeek))
+                return new CorrectIvr() { eCorrectIvr = ECorrectIvr.Group, ReturnValue = settings.RestToGroup, BusyGroup = settings.BusyGroup };
+            if ((time >= TimeOnly.Parse(settings.MorningBegin) && time <= TimeOnly.Parse(settings.MorningEnd))
+                || (time >= TimeOnly.Parse(settings.AfterBegin) && time <= TimeOnly.Parse(settings.AfterEnd)))
             {
-                return new CorrectIvr() { eCorrectIvr = ECorrectIvr.Ivr, ReturnValue = settings.RestCategory, BusyGroup = settings.BusyGroup };
+                if (!string.IsNullOrEmpty(settings.WorkCategory))
+                {
+                    return new CorrectIvr() { eCorrectIvr = ECorrectIvr.Ivr, ReturnValue = settings.WorkCategory, BusyGroup = settings.BusyGroup };
+                }
+                else
+                {
+                    return new CorrectIvr() { eCorrectIvr = ECorrectIvr.Group, ReturnValue = settings.WorkToGroup, BusyGroup = settings.BusyGroup };
+                }
             }
             else
             {
-                return new CorrectIvr() { eCorrectIvr = ECorrectIvr.Group, ReturnValue = settings.RestToGroup, BusyGroup = settings.BusyGroup };
+                if (!string.IsNullOrEmpty(settings.RestCategory))
+                {
+                    return new CorrectIvr() { eCorrectIvr = ECorrectIvr.Ivr, ReturnValue = settings.RestCategory, BusyGroup = settings.BusyGroup };
+                }
+                else
+                {
+                    return new CorrectIvr() { eCorrectIvr = ECorrectIvr.Group, ReturnValue = settings.RestToGroup, BusyGroup = settings.BusyGroup };
+                }
             }
         }
     }

+ 15 - 0
src/CallCenter/Settings/DaySetting.cs

@@ -0,0 +1,15 @@
+using SqlSugar;
+using XF.Domain;
+
+namespace CallCenter.Settings
+{
+    public class DaySetting:CreationEntity
+    {
+        public DateTime Day { get; set; }
+
+        public bool IsWorkDay { get; set; }
+
+        [SugarColumn(IsIgnore = true)]
+        public static string Key => $"DaySetting";
+    }
+}

+ 9 - 0
src/CallCenter/Settings/IDaySettingRepository.cs

@@ -0,0 +1,9 @@
+using XF.Domain.Repository;
+
+namespace CallCenter.Settings
+{
+    public interface IDaySettingRepository: IRepository<DaySetting>
+    {
+        bool IsWorkDay(IReadOnlyList<DaySetting> list, DateTime date);
+    }
+}

+ 5 - 0
src/CallCenter/Settings/WorkTimeSettings.cs

@@ -61,5 +61,10 @@ namespace CallCenter.Settings
         public string EvaluateCategory { get; set; }
 
         public string BusyGroup { get; set; }
+
+        /// <summary>
+        /// 是否应用工作日机制
+        /// </summary>
+        public bool UseWorkDay { get; set; }
     }
 }

+ 17 - 0
src/CallCenter/Tools/WeekTool.cs

@@ -55,5 +55,22 @@ namespace CallCenter.Tools
                     return -1;
             }
         }
+
+        /// <summary>
+        /// 是否工作日
+        /// </summary>
+        /// <param name="date"></param>
+        /// <returns></returns>
+        public static bool IsWorkDay(DateTime date)
+        {
+            var DayOfWeek = date.DayOfWeek;
+
+            if((int)DayOfWeek == 0 || (int)DayOfWeek == 6)
+            {
+                return false;
+            }
+            return true;
+        }
+
     }
 }